From 87579e03dd88f93968eb872c913a611be155b01f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com>
Date: Fri, 14 Jan 2022 11:21:09 +0800
Subject: [PATCH 01/10] =?UTF-8?q?fix=20=E4=BB=A3=E7=A0=81=E7=94=9F?=
=?UTF-8?q?=E6=88=90=E9=A1=B5=E9=9D=A2=E7=BC=93=E5=AD=98=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ZR.Vue/src/views/tool/gen/index.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ZR.Vue/src/views/tool/gen/index.vue b/ZR.Vue/src/views/tool/gen/index.vue
index 3fa444e..d6466f4 100644
--- a/ZR.Vue/src/views/tool/gen/index.vue
+++ b/ZR.Vue/src/views/tool/gen/index.vue
@@ -76,7 +76,7 @@ import hljs from "highlight.js";
import "highlight.js/styles/idea.css"; //这里有多个样式,自己可以根据需要切换
export default {
- name: "code_generator",
+ name: "gen",
components: { importTable, hljs },
data() {
return {
From 6b7e210008322775ca7fedaca06f3e0be617b155 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com>
Date: Fri, 14 Jan 2022 16:29:17 +0800
Subject: [PATCH 02/10] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?=
=?UTF-8?q?=E7=94=9F=E6=88=90Service?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt
index 38b8efa..205fb50 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt
@@ -45,8 +45,7 @@ $if(column.CsharpType == "string")
predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.${column.CsharpField}), ${codeTool.QueryExp(column.CsharpField, column.QueryType)};
$elseif(column.CsharpType == "DateTime")
predicate = predicate.AndIF(parm.Begin${column.CsharpField} == null, it => it.${column.CsharpField} >= DateTime.Now.AddDays(-1));
- predicate = predicate.AndIF(parm.Begin${column.CsharpField} != null, it => it.${column.CsharpField} >= parm.Begin${column.CsharpField});
- predicate = predicate.AndIF(parm.End${column.CsharpField} != null, it => it.${column.CsharpField} <= parm.End${column.CsharpField});
+ predicate = predicate.AndIF(parm.Begin${column.CsharpField} != null, it => it.${column.CsharpField} >= parm.Begin${column.CsharpField} && it.${column.CsharpField} <= parm.End${column.CsharpField});
$elseif(column.CsharpType == "int" || column.CsharpType == "long")
predicate = predicate.AndIF(parm.${column.CsharpField} != null, ${codeTool.QueryExp(column.CsharpField, column.QueryType)};
$end
@@ -54,7 +53,7 @@ $end
$end
$if(genTable.SortField != "" && genTable.SortField != null)
var response = _${replaceDto.ModelTypeName}repository
- .GetPages(predicate.ToExpression(), parm, x => x.${genTable.SortField}, "${genTable.SortType}");
+ .GetPages(predicate.ToExpression(), parm, it => it.${genTable.SortField}, "${genTable.SortType}");
$else
var response = _${replaceDto.ModelTypeName}repository
.Queryable()
From b959445ac6bc182d0b5c5ddadb0254e0ba6fe2e0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com>
Date: Fri, 14 Jan 2022 16:29:44 +0800
Subject: [PATCH 03/10] =?UTF-8?q?fix=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0?=
=?UTF-8?q?=E9=80=89=E6=8B=A9=E5=A7=8B=E7=BB=88=E4=B8=8A=E4=BC=A0=E5=88=B0?=
=?UTF-8?q?=E6=9C=AC=E5=9C=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ZR.Admin.WebApi/Controllers/CommonController.cs | 7 ++++---
ZR.Vue/src/components/FileUpload/index.vue | 8 +++++++-
2 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/ZR.Admin.WebApi/Controllers/CommonController.cs b/ZR.Admin.WebApi/Controllers/CommonController.cs
index 1acd8d2..379f7ff 100644
--- a/ZR.Admin.WebApi/Controllers/CommonController.cs
+++ b/ZR.Admin.WebApi/Controllers/CommonController.cs
@@ -97,7 +97,7 @@ namespace ZR.Admin.WebApi.Controllers
///
///
/// 存储目录
- /// 文件名
+ /// 自定义文件名
/// 上传类型 1、发送邮件
///
[HttpPost()]
@@ -152,16 +152,17 @@ namespace ZR.Admin.WebApi.Controllers
/// 存储文件到阿里云
///
///
+ /// 自定义文件名
/// 上传文件夹路径
///
[HttpPost]
[Verify]
[ActionPermissionFilter(Permission = "common")]
- public IActionResult UploadFileAliyun([FromForm(Name = "file")] IFormFile formFile, string fileDir = "")
+ public IActionResult UploadFileAliyun([FromForm(Name = "file")] IFormFile formFile, string fileName = "", string fileDir = "")
{
if (formFile == null) throw new CustomException(ResultCode.PARAM_ERROR, "上传文件不能为空");
string fileExt = Path.GetExtension(formFile.FileName);
- string[] AllowedFileExtensions = new string[] { ".jpg", ".gif", ".png", ".jpeg", ".webp", ".svga", ".xls", ".doc", ".zip", ".json", ".txt" };
+ string[] AllowedFileExtensions = new string[] { ".jpg", ".gif", ".png", ".jpeg", ".webp", ".svga", ".xls", ".doc", ".zip", ".json", ".txt", ".bundle" };
int MaxContentLength = 1024 * 1024 * 15;
double fileSize = formFile.Length / 1024;
if (!AllowedFileExtensions.Contains(fileExt))
diff --git a/ZR.Vue/src/components/FileUpload/index.vue b/ZR.Vue/src/components/FileUpload/index.vue
index 0bba384..d22cea3 100644
--- a/ZR.Vue/src/components/FileUpload/index.vue
+++ b/ZR.Vue/src/components/FileUpload/index.vue
@@ -58,7 +58,7 @@ export default {
// 上传地址
uploadUrl: {
type: String,
- default: process.env.VUE_APP_UPLOAD_URL ?? "/Common/UploadFile",
+ default: process.env.VUE_APP_UPLOAD_URL,
},
// form 列名
column: [String],
@@ -100,6 +100,12 @@ export default {
deep: true,
immediate: true,
},
+ uploadUrl: {
+ handler(val){
+ this.uploadFileUrl = process.env.VUE_APP_BASE_API + val;
+ },
+ immediate: true
+ }
},
computed: {
// 是否显示提示
From cae734762439e5c3571780da1aac1bbdc3082da9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com>
Date: Fri, 14 Jan 2022 16:31:09 +0800
Subject: [PATCH 04/10] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=96=87=E4=BB=B6?=
=?UTF-8?q?=E4=B8=8A=E4=BC=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ZR.Vue/src/views/tool/file/index.vue | 1 +
1 file changed, 1 insertion(+)
diff --git a/ZR.Vue/src/views/tool/file/index.vue b/ZR.Vue/src/views/tool/file/index.vue
index 8e98752..cd46934 100644
--- a/ZR.Vue/src/views/tool/file/index.vue
+++ b/ZR.Vue/src/views/tool/file/index.vue
@@ -328,6 +328,7 @@ export default {
return this.selectDictLabel(this.storeTypeOptions, row.storeType);
},
handleSelectStore(val) {
+ this.queryParams.storeType = val;
if (val == 1) {
this.uploadUrl = "/common/uploadFile";
} else if (val == 2) {
From b8e4cd2421f5843bb83d7cb947beb5b1018ce970 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com>
Date: Fri, 14 Jan 2022 18:31:21 +0800
Subject: [PATCH 05/10] =?UTF-8?q?fix=20=E6=96=87=E4=BB=B6=E4=B8=8A?=
=?UTF-8?q?=E4=BC=A0bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ZR.Vue/src/views/tool/file/index.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ZR.Vue/src/views/tool/file/index.vue b/ZR.Vue/src/views/tool/file/index.vue
index cd46934..f10fba7 100644
--- a/ZR.Vue/src/views/tool/file/index.vue
+++ b/ZR.Vue/src/views/tool/file/index.vue
@@ -256,7 +256,7 @@ export default {
// 重置数据表单
reset() {
this.form = {
- fileName: undefined,
+ fileName: "",
fileUrl: undefined,
storePath: "uploads",
fileSize: undefined,
From 4fefb4282d26aeea04ab738085e44b1dbd865690 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com>
Date: Fri, 14 Jan 2022 20:27:23 +0800
Subject: [PATCH 06/10] =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0?=
=?UTF-8?q?=E5=AD=98=E5=82=A8=E5=88=B0=E9=98=BF=E9=87=8C=E4=BA=91=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E8=87=AA=E5=AE=9A=E4=B9=89=E6=96=87=E4=BB=B6=E5=90=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Controllers/CommonController.cs | 2 +-
.../Controllers/System/SysFileController.cs | 3 ++-
ZR.Model/System/Dto/SysFileQueryDto.cs | 1 +
ZR.Service/System/IService/ISysFileService.cs | 2 +-
ZR.Service/System/SysFileService.cs | 10 +++++---
ZR.Vue/src/components/FileUpload/index.vue | 2 +-
ZR.Vue/src/views/tool/file/index.vue | 23 +++++++++++--------
7 files changed, 26 insertions(+), 17 deletions(-)
diff --git a/ZR.Admin.WebApi/Controllers/CommonController.cs b/ZR.Admin.WebApi/Controllers/CommonController.cs
index 379f7ff..678b629 100644
--- a/ZR.Admin.WebApi/Controllers/CommonController.cs
+++ b/ZR.Admin.WebApi/Controllers/CommonController.cs
@@ -175,7 +175,7 @@ namespace ZR.Admin.WebApi.Controllers
return ToResponse(ResultCode.CUSTOM_ERROR, "上传文件过大,不能超过 " + (MaxContentLength / 1024).ToString() + " MB");
}
- (bool, string, string) result = SysFileService.SaveFile(fileDir, formFile);
+ (bool, string, string) result = SysFileService.SaveFile(fileDir, formFile, fileName);
long fileId = SysFileService.InsertFile(new SysFile()
{
AccessUrl = result.Item2,
diff --git a/ZR.Admin.WebApi/Controllers/System/SysFileController.cs b/ZR.Admin.WebApi/Controllers/System/SysFileController.cs
index 18597c6..2044973 100644
--- a/ZR.Admin.WebApi/Controllers/System/SysFileController.cs
+++ b/ZR.Admin.WebApi/Controllers/System/SysFileController.cs
@@ -43,6 +43,7 @@ namespace ZR.Admin.WebApi.Controllers
predicate = predicate.AndIF(parm.BeginCreate_time != null, it => it.Create_time >= parm.BeginCreate_time);
predicate = predicate.AndIF(parm.EndCreate_time != null, it => it.Create_time <= parm.EndCreate_time);
predicate = predicate.AndIF(parm.StoreType != null, m => m.StoreType == parm.StoreType);
+ predicate = predicate.AndIF(parm.FileId != null, m => m.Id == parm.FileId);
//搜索条件查询语法参考Sqlsugar
var response = _SysFileService.GetPages(predicate.ToExpression(), parm);
@@ -59,7 +60,7 @@ namespace ZR.Admin.WebApi.Controllers
public IActionResult GetSysFile(int Id)
{
var response = _SysFileService.GetFirst(x => x.Id == Id);
-
+
return SUCCESS(response);
}
diff --git a/ZR.Model/System/Dto/SysFileQueryDto.cs b/ZR.Model/System/Dto/SysFileQueryDto.cs
index 4cfa45d..c86b135 100644
--- a/ZR.Model/System/Dto/SysFileQueryDto.cs
+++ b/ZR.Model/System/Dto/SysFileQueryDto.cs
@@ -25,5 +25,6 @@ namespace ZR.Model.System.Dto
public DateTime? BeginCreate_time { get; set; }
public DateTime? EndCreate_time { get; set; }
public int? StoreType { get; set; }
+ public int? FileId { get; set; }
}
}
diff --git a/ZR.Service/System/IService/ISysFileService.cs b/ZR.Service/System/IService/ISysFileService.cs
index e3971a3..6b8c319 100644
--- a/ZR.Service/System/IService/ISysFileService.cs
+++ b/ZR.Service/System/IService/ISysFileService.cs
@@ -16,7 +16,7 @@ namespace ZR.Service.System.IService
///
/// 结果、地址、文件名
(bool, string, string) SaveFile(string picdir, IFormFile formFile);
-
+ (bool, string, string) SaveFile(string picdir, IFormFile formFile, string customFileName);
///
/// 按时间来创建文件夹
///
diff --git a/ZR.Service/System/SysFileService.cs b/ZR.Service/System/SysFileService.cs
index e189b0f..dce4638 100644
--- a/ZR.Service/System/SysFileService.cs
+++ b/ZR.Service/System/SysFileService.cs
@@ -10,6 +10,7 @@ using System.Security.Cryptography;
using System.Net;
using ZR.Model.System;
using ZR.Repository.System;
+using Infrastructure.Extensions;
namespace ZR.Service.System
{
@@ -35,9 +36,13 @@ namespace ZR.Service.System
///
public (bool, string, string) SaveFile(string picdir, IFormFile formFile)
{
- // eg: idcard/2020/08/18
+ return SaveFile(picdir, formFile, "");
+ }
+ public (bool, string, string) SaveFile(string picdir, IFormFile formFile, string customFileName)
+ {
+ // eg: uploads/2020/08/18
string dir = GetdirPath(picdir.ToString());
- string tempName = HashFileName();
+ string tempName = customFileName.IsEmpty() ? HashFileName() : customFileName;
string fileExt = Path.GetExtension(formFile.FileName);
string fileName = $"{tempName}{fileExt}";
string webUrl = $"{domainUrl}/{dir}/{fileName}";
@@ -46,7 +51,6 @@ namespace ZR.Service.System
return (statusCode == HttpStatusCode.OK, webUrl, fileName);
}
-
public string GetdirPath(string path = "")
{
DateTime date = DateTime.Now;
diff --git a/ZR.Vue/src/components/FileUpload/index.vue b/ZR.Vue/src/components/FileUpload/index.vue
index d22cea3..80129f2 100644
--- a/ZR.Vue/src/components/FileUpload/index.vue
+++ b/ZR.Vue/src/components/FileUpload/index.vue
@@ -162,7 +162,7 @@ export default {
}
this.msgSuccess("上传成功");
this.fileList.push({ name: res.data.fileName, url: res.data.url, path: res.data.path });
- this.$emit("input", this.column, this.listToString(this.fileList));
+ this.$emit("input", this.column, this.listToString(this.fileList), res.data);
},
// 上传进度
uploadProcess(event, file, fileList) {
diff --git a/ZR.Vue/src/views/tool/file/index.vue b/ZR.Vue/src/views/tool/file/index.vue
index f10fba7..463b26c 100644
--- a/ZR.Vue/src/views/tool/file/index.vue
+++ b/ZR.Vue/src/views/tool/file/index.vue
@@ -2,6 +2,9 @@
+
+
+
@@ -11,11 +14,10 @@
-
-
+
搜索
重置
-
+
@@ -168,6 +170,7 @@ export default {
pageNum: 1,
pageSize: 20,
storeType: 1,
+ fileId: undefined,
},
// 弹出层标题
title: "",
@@ -257,12 +260,12 @@ export default {
reset() {
this.form = {
fileName: "",
- fileUrl: undefined,
+ fileUrl: "",
storePath: "uploads",
- fileSize: undefined,
- fileExt: undefined,
+ fileSize: 0,
+ fileExt: "",
storeType: 1,
- accessUrl: undefined,
+ accessUrl: "",
};
this.resetForm("form");
},
@@ -317,9 +320,9 @@ export default {
});
},
//上传成功方法
- handleUploadSuccess(columnName, filelist) {
+ handleUploadSuccess(columnName, filelist, data) {
this.form[columnName] = filelist;
-
+ this.queryParams.fileId = data.fileId;
this.open = false;
this.getList();
},
@@ -328,7 +331,7 @@ export default {
return this.selectDictLabel(this.storeTypeOptions, row.storeType);
},
handleSelectStore(val) {
- this.queryParams.storeType = val;
+ this.queryParams.storeType = val;
if (val == 1) {
this.uploadUrl = "/common/uploadFile";
} else if (val == 2) {
From a855a0db6b54db25bf788b6cfcd27b8dba1a2164 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com>
Date: Fri, 14 Jan 2022 20:31:24 +0800
Subject: [PATCH 07/10] =?UTF-8?q?fix=20=E6=96=87=E7=AB=A0=E5=8F=91?=
=?UTF-8?q?=E5=B8=83=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E5=9C=B0=E5=9D=80?=
=?UTF-8?q?=E9=94=99=E8=AF=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ZR.Vue/src/api/common.js | 2 +-
ZR.Vue/src/views/system/article/publish.vue | 3 +--
2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/ZR.Vue/src/api/common.js b/ZR.Vue/src/api/common.js
index a13d608..c57228f 100644
--- a/ZR.Vue/src/api/common.js
+++ b/ZR.Vue/src/api/common.js
@@ -2,7 +2,7 @@ import request from '@/utils/request'
export function upload(data) {
return request({
- url: '/upload/saveFile',
+ url: '/common/UploadFile',
method: 'POST',
data: data,
headers: { "Content-Type": "multipart/form-data" },
diff --git a/ZR.Vue/src/views/system/article/publish.vue b/ZR.Vue/src/views/system/article/publish.vue
index ee0f860..ac9a245 100644
--- a/ZR.Vue/src/views/system/article/publish.vue
+++ b/ZR.Vue/src/views/system/article/publish.vue
@@ -128,10 +128,9 @@ export default {
$imgAdd(pos, $file) {
var formdata = new FormData();
formdata.append("file", $file);
- // 这里没有服务器供大家尝试,可将下面上传接口替换为你自己的服务器接口
upload(formdata).then((res) => {
console.log(JSON.stringify(res));
- this.$refs.md.$img2Url(pos, res.data);
+ this.$refs.md.$img2Url(pos, res.data.url);
});
},
change(value, render) {
From 26bd31cbcf40d5390c0dd1db1301242f4cfbb679 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com>
Date: Fri, 14 Jan 2022 21:11:26 +0800
Subject: [PATCH 08/10] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?=
=?UTF-8?q?=E7=94=9F=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ZR.Vue/src/views/tool/gen/index.vue | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/ZR.Vue/src/views/tool/gen/index.vue b/ZR.Vue/src/views/tool/gen/index.vue
index d6466f4..f88d6d2 100644
--- a/ZR.Vue/src/views/tool/gen/index.vue
+++ b/ZR.Vue/src/views/tool/gen/index.vue
@@ -2,11 +2,12 @@
-
+
查询
+ 重置
@@ -133,6 +134,9 @@ export default {
* 编辑表格
*/
handleEditTable(row) {
+ this.queryParams.tableName = row.tableName;
+ this.handleSearch();
+
this.$router.push({
path: "/gen/editTable",
query: { tableId: row.tableId },
@@ -158,7 +162,6 @@ export default {
* 点击生成服务端代码
*/
handleGenTable(row) {
- console.log(JSON.stringify(this.currentSelected));
this.currentSelected = row;
if (!this.currentSelected) {
this.msgError("请先选择要生成代码的数据表");
@@ -179,7 +182,6 @@ export default {
tableName: this.currentSelected.name,
// queryColumn: this.checkedQueryColumn,
};
- console.log(JSON.stringify(seachdata));
codeGenerator(seachdata)
.then((res) => {
@@ -205,6 +207,11 @@ export default {
this.showGenerate = false;
this.currentSelected = {};
},
+ /** 重置按钮操作 */
+ resetQuery() {
+ this.resetForm("queryParams");
+ this.handleSearch();
+ },
/** 打开导入表弹窗 */
openImportTable() {
this.$refs.import.show();
From 68686f60fc2c0ff17e1734a85e0e6de7a08406e0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com>
Date: Sat, 15 Jan 2022 10:42:53 +0800
Subject: [PATCH 09/10] =?UTF-8?q?=E5=9B=BE=E6=A0=87=E9=80=89=E6=8B=A9?=
=?UTF-8?q?=E7=BB=84=E4=BB=B6=E6=96=B0=E5=A2=9E=E6=B8=85=E7=A9=BA=E5=9B=BE?=
=?UTF-8?q?=E6=A0=87?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ZR.Vue/src/components/IconSelect/index.vue | 1 +
1 file changed, 1 insertion(+)
diff --git a/ZR.Vue/src/components/IconSelect/index.vue b/ZR.Vue/src/components/IconSelect/index.vue
index b0ec9fa..af98224 100644
--- a/ZR.Vue/src/components/IconSelect/index.vue
+++ b/ZR.Vue/src/components/IconSelect/index.vue
@@ -4,6 +4,7 @@
+
清空
From 512c5bc176271478f86ba3173008c0ae3d2f6158 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com>
Date: Sat, 15 Jan 2022 21:31:40 +0800
Subject: [PATCH 10/10] =?UTF-8?q?=E8=8F=9C=E5=8D=95=E7=AE=A1=E7=90=86?=
=?UTF-8?q?=E6=A0=91=E6=9E=84=E5=BB=BA=E6=94=B9=E7=94=A8=E5=90=8E=E7=AB=AF?=
=?UTF-8?q?=E6=9E=84=E5=BB=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Controllers/System/SysMenuController.cs | 7 +-
ZR.Model/System/SysMenu.cs | 5 +-
ZR.Repository/System/SysMenuRepository.cs | 66 ++++++++++++++-----
ZR.Repository/System/SysRoleRepository.cs | 11 ++++
ZR.Service/System/IService/ISysMenuService.cs | 32 ++++-----
ZR.Service/System/IService/ISysRoleService.cs | 2 +-
ZR.Service/System/SysMenuService.cs | 25 ++++---
ZR.Service/System/SysRoleService.cs | 23 ++++++-
ZR.Vue/src/views/system/menu/index.vue | 18 +++--
9 files changed, 132 insertions(+), 57 deletions(-)
diff --git a/ZR.Admin.WebApi/Controllers/System/SysMenuController.cs b/ZR.Admin.WebApi/Controllers/System/SysMenuController.cs
index 60666c6..10e2f16 100644
--- a/ZR.Admin.WebApi/Controllers/System/SysMenuController.cs
+++ b/ZR.Admin.WebApi/Controllers/System/SysMenuController.cs
@@ -8,6 +8,7 @@ using ZR.Admin.WebApi.Filters;
using ZR.Model.System.Dto;
using ZR.Model.System;
using ZR.Service.System.IService;
+using ZR.Model;
namespace ZR.Admin.WebApi.Controllers.System
{
@@ -32,10 +33,10 @@ namespace ZR.Admin.WebApi.Controllers.System
///
[ActionPermissionFilter(Permission = "system:menu:list")]
[HttpGet("list")]
- public IActionResult MenuList([FromQuery] SysMenu menu)
+ public IActionResult TreeMenuList([FromQuery] SysMenu menu)
{
long userId = HttpContext.GetUId();
- return SUCCESS(sysMenuService.SelectMenuList(menu, userId), "yyyy-MM-dd HH:mm:ss");
+ return SUCCESS(sysMenuService.SelectTreeMenuList(menu, userId), "yyyy-MM-dd HH:mm:ss");
}
///
@@ -74,7 +75,7 @@ namespace ZR.Admin.WebApi.Controllers.System
public IActionResult RoleMenuTreeselect(int roleId)
{
long userId = HttpContext.GetUId();
- var menus = sysMenuService.SelectMenuList(userId);
+ var menus = sysMenuService.SelectMenuList(new SysMenu(), userId);
var checkedKeys = sysRoleService.SelectUserRoleMenus(roleId);
return SUCCESS(new
{
diff --git a/ZR.Model/System/SysMenu.cs b/ZR.Model/System/SysMenu.cs
index ca0c3f9..d82e380 100644
--- a/ZR.Model/System/SysMenu.cs
+++ b/ZR.Model/System/SysMenu.cs
@@ -8,7 +8,7 @@ namespace ZR.Model.System
///
[SugarTable("sys_menu")]
[Tenant("0")]
- public class SysMenu: SysBase
+ public class SysMenu : SysBase
{
///
/// 菜单ID
@@ -84,6 +84,7 @@ namespace ZR.Model.System
///
/// 子菜单
///
- public List children = new List();
+ [SugarColumn(IsIgnore = true)]
+ public List children { get; set; } = new List();
}
}
diff --git a/ZR.Repository/System/SysMenuRepository.cs b/ZR.Repository/System/SysMenuRepository.cs
index 8086698..cb03a0f 100644
--- a/ZR.Repository/System/SysMenuRepository.cs
+++ b/ZR.Repository/System/SysMenuRepository.cs
@@ -18,6 +18,41 @@ namespace ZR.Repository.System
/// 获取所有菜单(菜单管理)
///
///
+ public List
SelectTreeMenuList(SysMenu menu)
+ {
+ return Context.Queryable()
+ .WhereIF(!string.IsNullOrEmpty(menu.menuName), it => it.menuName.Contains(menu.menuName))
+ .WhereIF(!string.IsNullOrEmpty(menu.visible), it => it.visible == menu.visible)
+ .WhereIF(!string.IsNullOrEmpty(menu.status), it => it.status == menu.status)
+ .OrderBy(it => new { it.parentId, it.orderNum })
+ .ToTree(it => it.children, it => it.parentId, 0);
+ }
+
+ ///
+ /// 根据用户查询系统菜单列表(菜单管理)
+ ///
+ ///
+ /// 用户角色集合
+ ///
+ public List SelectTreeMenuListByUserId(SysMenu sysMenu, List roles)
+ {
+ var roleMenus = Context.Queryable()
+ .Where(r => roles.Contains(r.Role_id));
+
+ return Context.Queryable()
+ .InnerJoin(roleMenus, (c, j) => c.menuId == j.Menu_id)
+ .WhereIF(!string.IsNullOrEmpty(sysMenu.menuName), (c, j) => c.menuName.Contains(sysMenu.menuName))
+ .WhereIF(!string.IsNullOrEmpty(sysMenu.visible), (c, j) => c.visible == sysMenu.visible)
+ .WhereIF(!string.IsNullOrEmpty(sysMenu.status), (c, j) => c.status == sysMenu.status)
+ .OrderBy((c, j) => new { c.parentId, c.orderNum })
+ .Select(c => c)
+ .ToTree(it => it.children, it => it.parentId, 0);
+ }
+
+ ///
+ /// 获取所有菜单
+ ///
+ ///
public List SelectMenuList(SysMenu menu)
{
return Context.Queryable()
@@ -32,22 +67,21 @@ namespace ZR.Repository.System
/// 根据用户查询系统菜单列表
///
///
- /// 用户id
+ /// 用户角色集合
///
- public List SelectMenuListByUserId(SysMenu sysMenu, long userId)
+ public List SelectMenuListByRoles(SysMenu sysMenu, List roles)
{
- return Context.Queryable((menu, roleMenu, userRole, role) => new JoinQueryInfos(
- JoinType.Left, menu.menuId == roleMenu.Menu_id,
- JoinType.Left, roleMenu.Role_id == userRole.RoleId,
- JoinType.Left, userRole.RoleId == role.RoleId
- ))
- .Where((menu, roleMenu, userRole, role) => userRole.UserId == userId)
- .WhereIF(!string.IsNullOrEmpty(sysMenu.menuName), (menu, roleMenu, userRole, role) => menu.menuName.Contains(sysMenu.menuName))
- .WhereIF(!string.IsNullOrEmpty(sysMenu.visible), (menu, roleMenu, userRole, role) => menu.visible == sysMenu.visible)
- .WhereIF(!string.IsNullOrEmpty(sysMenu.status), (menu, roleMenu, userRole, role) => menu.status == sysMenu.status)
- .OrderBy((menu, roleMenu, userRole, role) => new { menu.parentId, menu.orderNum })
- //.Distinct()
- .Select((menu, roleMenu, userRole, role) => menu).ToList();
+ var roleMenus = Context.Queryable()
+ .Where(r => roles.Contains(r.Role_id));
+
+ return Context.Queryable()
+ .InnerJoin(roleMenus, (c, j) => c.menuId == j.Menu_id)
+ .Where((c, j) => c.status == "0")
+ .WhereIF(!string.IsNullOrEmpty(sysMenu.menuName), (c, j) => c.menuName.Contains(sysMenu.menuName))
+ .WhereIF(!string.IsNullOrEmpty(sysMenu.visible), (c, j) => c.visible == sysMenu.visible)
+ .OrderBy((c, j) => new { c.parentId, c.orderNum })
+ .Select(c => c)
+ .ToList();
}
#region 左侧菜单树
@@ -68,11 +102,11 @@ namespace ZR.Repository.System
///
/// 根据用户角色获取左侧菜单树
///
- ///
+ ///
///
public List SelectMenuTreeByRoleIds(List roleIds)
{
- var menuTypes = new string[] { "M", "C"};
+ var menuTypes = new string[] { "M", "C" };
return Context.Queryable((menu, roleMenu) => new JoinQueryInfos(
JoinType.Left, menu.menuId == roleMenu.Menu_id
))
diff --git a/ZR.Repository/System/SysRoleRepository.cs b/ZR.Repository/System/SysRoleRepository.cs
index 7afb00c..861d340 100644
--- a/ZR.Repository/System/SysRoleRepository.cs
+++ b/ZR.Repository/System/SysRoleRepository.cs
@@ -2,6 +2,7 @@
using Infrastructure.Model;
using SqlSugar;
using System.Collections.Generic;
+using System.Linq;
using ZR.Model;
using ZR.Model.System;
@@ -110,6 +111,16 @@ namespace ZR.Repository.System
return Context.Queryable().Where(it => it.Role_id == roleId).ToList();
}
+ ///
+ /// 根据用户所有角色获取菜单
+ ///
+ ///
+ ///
+ public List SelectRoleMenuByRoleIds(long[] roleIds)
+ {
+ return Context.Queryable().Where(it => roleIds.Contains(it.Role_id)).ToList();
+ }
+
///
/// 批量插入用户菜单
///
diff --git a/ZR.Service/System/IService/ISysMenuService.cs b/ZR.Service/System/IService/ISysMenuService.cs
index 90aea34..a8bd620 100644
--- a/ZR.Service/System/IService/ISysMenuService.cs
+++ b/ZR.Service/System/IService/ISysMenuService.cs
@@ -8,34 +8,34 @@ namespace ZR.Service.System.IService
{
public interface ISysMenuService
{
- public List SelectMenuList(long userId);
+ //List SelectMenuList(long userId);
- public List SelectMenuList(SysMenu menu, long userId);
+ List SelectMenuList(SysMenu menu, long userId);
+ List SelectTreeMenuList(SysMenu menu, long userId);
- public SysMenu GetMenuByMenuId(int menuId);
+ SysMenu GetMenuByMenuId(int menuId);
+ int AddMenu(SysMenu menu);
- public int AddMenu(SysMenu menu);
+ int EditMenu(SysMenu menu);
- public int EditMenu(SysMenu menu);
+ int DeleteMenuById(int menuId);
- public int DeleteMenuById(int menuId);
+ string CheckMenuNameUnique(SysMenu menu);
- public string CheckMenuNameUnique(SysMenu menu);
+ int ChangeSortMenu(MenuDto menuDto);
- public int ChangeSortMenu(MenuDto menuDto);
+ bool HasChildByMenuId(long menuId);
- public bool HasChildByMenuId(long menuId);
+ List SelectMenuTreeByUserId(long userId);
- public List SelectMenuTreeByUserId(long userId);
+ List SelectMenuPermsListByUserId(long userId);
- public List SelectMenuPermsListByUserId(long userId);
+ List SelectMenuPermsByUserId(long userId);
- public List SelectMenuPermsByUserId(long userId);
+ bool CheckMenuExistRole(long menuId);
- public bool CheckMenuExistRole(long menuId);
+ List BuildMenus(List menus);
- public List BuildMenus(List menus);
-
- public List BuildMenuTreeSelect(List menus);
+ List BuildMenuTreeSelect(List menus);
}
}
diff --git a/ZR.Service/System/IService/ISysRoleService.cs b/ZR.Service/System/IService/ISysRoleService.cs
index e2517b8..a0dd959 100644
--- a/ZR.Service/System/IService/ISysRoleService.cs
+++ b/ZR.Service/System/IService/ISysRoleService.cs
@@ -105,7 +105,7 @@ namespace ZR.Service.System.IService
///
///
public List SelectUserRoleMenus(long roleId);
-
+ List SelectRoleMenuByRoleIds(long[] roleIds);
///
/// 获取用户角色列表
///
diff --git a/ZR.Service/System/SysMenuService.cs b/ZR.Service/System/SysMenuService.cs
index e2ec077..5225e66 100644
--- a/ZR.Service/System/SysMenuService.cs
+++ b/ZR.Service/System/SysMenuService.cs
@@ -4,7 +4,6 @@ using System.Linq;
using ZR.Model.System.Dto;
using ZR.Model.System;
using ZR.Model.System.Vo;
-using ZR.Model.Vo;
using ZR.Model.Vo.System;
using ZR.Repository.System;
using ZR.Service.System.IService;
@@ -30,31 +29,39 @@ namespace ZR.Service
}
///
- /// 根据用户查询系统菜单列表
+ /// 获取所有菜单数(菜单管理)
///
- ///
- ///
///
- public List SelectMenuList(long userId)
+ public List SelectTreeMenuList(SysMenu menu, long userId)
{
- return SelectMenuList(new SysMenu(), userId);
+ List menuList;
+ if (SysRoleService.IsAdmin(userId))
+ {
+ menuList = MenuRepository.SelectTreeMenuList(menu);
+ }
+ else
+ {
+ var userRoles = SysRoleService.SelectUserRoles(userId);
+ menuList = MenuRepository.SelectTreeMenuListByUserId(menu, userRoles);
+ }
+ return menuList;
}
///
- /// 获取所有菜单(菜单管理)
+ /// 获取所有菜单列表
///
///
public List SelectMenuList(SysMenu menu, long userId)
{
List menuList;
- //if (SysUser.IsAdmin(userId))
if (SysRoleService.IsAdmin(userId))
{
menuList = MenuRepository.SelectMenuList(menu);
}
else
{
- menuList = MenuRepository.SelectMenuListByUserId(menu, userId);
+ var userRoles = SysRoleService.SelectUserRoles(userId);
+ menuList = MenuRepository.SelectMenuListByRoles(menu, userRoles);
}
return menuList;
}
diff --git a/ZR.Service/System/SysRoleService.cs b/ZR.Service/System/SysRoleService.cs
index 02ce07c..cabc102 100644
--- a/ZR.Service/System/SysRoleService.cs
+++ b/ZR.Service/System/SysRoleService.cs
@@ -216,7 +216,7 @@ namespace ZR.Service
///
/// 判断是否是管理员
///
- ///
+ ///
///
public bool IsRoleAdmin(long roleid)
{
@@ -228,13 +228,25 @@ namespace ZR.Service
///
/// 获取角色菜单id集合
///
- ///
+ ///
///
public List SelectUserRoleMenus(long roleId)
{
var list = SysRoleRepository.SelectRoleMenuByRoleId(roleId);
- return list.Select(x => x.Menu_id).ToList();
+ return list.Select(x => x.Menu_id).Distinct().ToList();
+ }
+
+ ///
+ /// 根据用户所有角色获取菜单
+ ///
+ ///
+ ///
+ public List SelectRoleMenuByRoleIds(long[] roleIds)
+ {
+ return SysRoleRepository.SelectRoleMenuByRoleIds(roleIds)
+ .Select(x => x.Menu_id)
+ .Distinct().ToList();
}
///
@@ -270,6 +282,11 @@ namespace ZR.Service
return list.Select(x => x.RoleKey).ToList();
}
+ ///
+ /// 获取用户所有角色名
+ ///
+ ///
+ ///
public List SelectUserRoleNames(long userId)
{
var list = SelectUserRoleListByUserId(userId);
diff --git a/ZR.Vue/src/views/system/menu/index.vue b/ZR.Vue/src/views/system/menu/index.vue
index a097dce..45fd1b2 100644
--- a/ZR.Vue/src/views/system/menu/index.vue
+++ b/ZR.Vue/src/views/system/menu/index.vue
@@ -52,10 +52,10 @@
-
+
-
+
@@ -103,11 +103,13 @@
-
+
-
+
+
+
@@ -221,7 +223,7 @@ import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import IconSelect from "@/components/IconSelect";
export default {
- name: "menu",
+ name: "menu1",
components: { Treeselect, IconSelect },
data() {
return {
@@ -289,7 +291,8 @@ export default {
getList() {
this.loading = true;
listMenu(this.queryParams).then((response) => {
- this.menuList = this.handleTree(response.data, "menuId");
+ this.menuList = response.data;
+ // this.menuList = this.handleTree(response.data, "menuId");
this.loading = false;
});
},
@@ -309,7 +312,8 @@ export default {
listMenu().then((response) => {
this.menuOptions = [];
const menu = { menuId: 0, menuName: "根菜单", children: [] };
- menu.children = this.handleTree(response.data, "menuId");
+ menu.children = response.data;
+ //menu.children = this.handleTree(response.data, "menuId");
this.menuOptions.push(menu);
});
},