+
登 录
登 录 中...
-
@@ -54,42 +61,38 @@ export default {
password: '',
rememberMe: false,
code: '',
- uuid: ''
+ uuid: '',
},
title: defaultSettings.title,
loginRules: {
- username: [
- { required: true, trigger: 'blur', message: '用户名不能为空' }
- ],
- password: [
- { required: true, trigger: 'blur', message: '密码不能为空' }
- ],
- code: [{ required: true, trigger: 'change', message: '验证码不能为空' }]
+ username: [{ required: true, trigger: 'blur', message: '用户名不能为空' }],
+ password: [{ required: true, trigger: 'blur', message: '密码不能为空' }],
+ code: [{ required: true, trigger: 'change', message: '验证码不能为空' }],
},
showCaptcha: '',
loading: false,
- redirect: undefined
+ redirect: undefined,
}
},
computed: {
- copyRight: function() {
+ copyRight: function () {
return defaultSettings.copyRight
- }
+ },
},
watch: {
$route: {
- handler: function(route) {
+ handler: function (route) {
this.redirect = route.query && route.query.redirect
},
- immediate: true
- }
+ immediate: true,
+ },
},
created() {
this.getCode()
this.getCookie()
- this.getConfigKey('sys.account.captchaOnOff').then((response) => {
- this.showCaptcha = response.data
- })
+ // this.getConfigKey('sys.account.captchaOnOff').then((response) => {
+ // this.showCaptcha = response.data
+ // })
},
methods: {
getCode() {
@@ -97,6 +100,7 @@ export default {
getCodeImg().then((res) => {
this.codeUrl = 'data:image/gif;base64,' + res.data.img
this.loginForm.uuid = res.data.uuid
+ this.showCaptcha = res.data.captchaOff
this.$forceUpdate()
})
},
@@ -108,7 +112,7 @@ export default {
this.loginForm = {
username: username === undefined ? this.loginForm.username : username,
password: password === undefined ? this.loginForm.password : password,
- rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
+ rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
}
},
handleLogin() {
@@ -118,10 +122,10 @@ export default {
if (this.loginForm.rememberMe) {
Cookies.set('username', this.loginForm.username, { expires: 30 })
Cookies.set('password', this.loginForm.password, {
- expires: 30
+ expires: 30,
})
Cookies.set('rememberMe', this.loginForm.rememberMe, {
- expires: 30
+ expires: 30,
})
} else {
Cookies.remove('username')
@@ -135,7 +139,7 @@ export default {
this.$router.push({ path: this.redirect || '/' })
})
.catch((error) => {
- this.msgError(error.msg);
+ this.msgError(error.msg)
this.loading = false
this.getCode()
this.$refs.codeTxt.focus()
@@ -144,8 +148,8 @@ export default {
console.log('未完成')
}
})
- }
- }
+ },
+ },
}
@@ -155,7 +159,7 @@ export default {
justify-content: center;
align-items: center;
height: 100%;
- background-image: url("../assets/image/login-background.jpg");
+ background-image: url('../assets/image/login-background.jpg');
background-size: cover;
// background-color: rgba(56, 157, 170, 0.82);
}
--
Gitee
From 99cb54c4d31f1d5b0faf950f3a6d3bfc7429c3a1 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, 18 Nov 2022 13:40:38 +0800
Subject: [PATCH 052/122] add article/articleCategory.vue
---
ZR.Vue/src/views/system/article/articleCategory.vue | 9 +++++++++
1 file changed, 9 insertions(+)
create mode 100644 ZR.Vue/src/views/system/article/articleCategory.vue
diff --git a/ZR.Vue/src/views/system/article/articleCategory.vue b/ZR.Vue/src/views/system/article/articleCategory.vue
new file mode 100644
index 00000000..7ec72d46
--- /dev/null
+++ b/ZR.Vue/src/views/system/article/articleCategory.vue
@@ -0,0 +1,9 @@
+
+
+
+ 请移步至 Vue3
+
+ https://gitee.com/izory/ZRAdmin-vue
+
+
+
--
Gitee
From 84601ad2a87dca89e84d7b885bd734c1f0dee4be 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, 18 Nov 2022 14:02:48 +0800
Subject: [PATCH 053/122] =?UTF-8?q?=E7=A7=BB=E9=99=A4system=E6=96=87?=
=?UTF-8?q?=E4=BB=B6=E5=A4=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ZR.Repository/ZR.Repository.csproj | 1 -
1 file changed, 1 deletion(-)
diff --git a/ZR.Repository/ZR.Repository.csproj b/ZR.Repository/ZR.Repository.csproj
index 5141f8bb..97fe39e5 100644
--- a/ZR.Repository/ZR.Repository.csproj
+++ b/ZR.Repository/ZR.Repository.csproj
@@ -19,6 +19,5 @@
-
--
Gitee
From 5c9e8ef451819865178cf9455cadb3dd7c627920 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: Tue, 22 Nov 2022 11:56:00 +0800
Subject: [PATCH 054/122] update README.md
---
README.md | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 51714287..b20a457b 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
- ZRAdmin.NET后台管理系统
-基于.NET5/.NET6 + vue2.x/vue3.x前后端分离的.net快速开发框架
+ ZR.Admin.NET后台管理系统
+基于.NET5/.NET6/.Net7 + vue2.x/vue3.x前后端分离的.net快速开发框架
@@ -35,13 +35,14 @@
| ----------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- |
| Vue2 + Net5 | | [克隆/下载](https://gitee.com/izory/ZrAdminNetCore/) |
| Vue2 + Net6 | [克隆/下载](https://github.com/izhaorui/ZrAdmin.NET/tree/net6.0) | [克隆/下载](https://gitee.com/izory/ZrAdminNetCore/tree/net6.0/) |
-| Vue3 | | [克隆/下载](https://gitee.com/izory/ZRAdmin-vue)
+| Vue3 | | [克隆/下载](https://gitee.com/izory/ZRAdmin-vue) |
+| Net7 | | [克隆/下载](https://gitee.com/izory/ZrAdminNetCore/tree/net7.0/) |
## 🍁前端技术
Vue版前端技术栈 :基于vue2.x/vue3.x、vuex、vue-router 、vue-cli 、axios、 element-ui、echats、i18n国际化等,前端采用vscode工具开发
## 🍀后端技术
-- 核心框架:.Net5.0/.Net6.0 + Web API + sqlsugar + swagger + signalR + IpRateLimit + Quartz.net + Redis
+- 核心框架:.Net5.0/.Net6.0/.Net7.0 + Web API + sqlsugar + swagger + signalR + IpRateLimit + Quartz.net + Redis
- 定时计划任务:Quartz.Net组件,支持执行程序集或者http网络请求
- 安全支持:过滤器(数据权限过滤)、Sql注入、请求伪造
- 日志管理:NLog、登录日志、操作日志、定时任务日志
--
Gitee
From 0fe102b146e37b962676d21fea651fbcbc9fccfa 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: Tue, 22 Nov 2022 18:27:51 +0800
Subject: [PATCH 055/122] =?UTF-8?q?add=E6=8F=90=E9=97=AE=E6=A8=A1=E6=9D=BF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitee/ISSUE_TEMPLATE.zh-CN.md | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
create mode 100644 .gitee/ISSUE_TEMPLATE.zh-CN.md
diff --git a/.gitee/ISSUE_TEMPLATE.zh-CN.md b/.gitee/ISSUE_TEMPLATE.zh-CN.md
new file mode 100644
index 00000000..2c87cb9e
--- /dev/null
+++ b/.gitee/ISSUE_TEMPLATE.zh-CN.md
@@ -0,0 +1,22 @@
+### ôģ
+
+
+
+###
+
+
+
+### Vue汾
+
+
+
+### .NetCore汾
+
+
+
+### Ϣ
+
+
+
+
+### ȡʱ
--
Gitee
From 219d0eadca871bf18e83e223d6428081c3400338 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: Tue, 29 Nov 2022 11:05:22 +0800
Subject: [PATCH 056/122] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E5=8C=85?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ZR.CodeGenerator/ZR.CodeGenerator.csproj | 2 +-
ZR.Model/ZR.Model.csproj | 2 +-
ZR.Repository/ZR.Repository.csproj | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/ZR.CodeGenerator/ZR.CodeGenerator.csproj b/ZR.CodeGenerator/ZR.CodeGenerator.csproj
index 9d7d005e..e4d57c90 100644
--- a/ZR.CodeGenerator/ZR.CodeGenerator.csproj
+++ b/ZR.CodeGenerator/ZR.CodeGenerator.csproj
@@ -12,6 +12,6 @@
-
+
diff --git a/ZR.Model/ZR.Model.csproj b/ZR.Model/ZR.Model.csproj
index 29d1a05a..5489226c 100644
--- a/ZR.Model/ZR.Model.csproj
+++ b/ZR.Model/ZR.Model.csproj
@@ -7,7 +7,7 @@
-
+
diff --git a/ZR.Repository/ZR.Repository.csproj b/ZR.Repository/ZR.Repository.csproj
index 97fe39e5..86afcf23 100644
--- a/ZR.Repository/ZR.Repository.csproj
+++ b/ZR.Repository/ZR.Repository.csproj
@@ -14,7 +14,7 @@
-
+
--
Gitee
From 77c798c21b71518ce72ab940938036d3beafe8eb 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: Tue, 29 Nov 2022 11:43:39 +0800
Subject: [PATCH 057/122] =?UTF-8?q?=E4=BC=98=E5=8C=96Vue3&=E6=9C=8D?=
=?UTF-8?q?=E5=8A=A1=E5=B1=82=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90=E6=A8=A1?=
=?UTF-8?q?=E6=9D=BF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../CodeGenTemplate/TplControllers.txt | 7 +-
.../wwwroot/CodeGenTemplate/TplDto.txt | 2 -
.../wwwroot/CodeGenTemplate/TplIService.txt | 2 +-
.../wwwroot/CodeGenTemplate/TplService.txt | 3 +-
.../wwwroot/CodeGenTemplate/v3/Vue.txt | 164 +++++++++---------
ZR.CodeGenerator/CodeGeneratorTool.cs | 6 +-
6 files changed, 97 insertions(+), 87 deletions(-)
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt
index 1dc2dfe3..f6a67384 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt
@@ -149,9 +149,12 @@ $if(replaceDto.ShowBtnExport)
[ActionPermissionFilter(Permission = "${replaceDto.PermissionPrefix}:export")]
public IActionResult Export([FromQuery] ${replaceDto.ModelTypeName}QueryDto parm)
{
- parm.PageSize = 10000;
+ parm.PageSize = 100000;
var list = _${replaceDto.ModelTypeName}Service.GetList(parm).Result;
-
+ if (list == null || list.Count <= 0)
+ {
+ return ToResponse(ResultCode.FAIL, "没有要导出的数据");
+ }
string sFileName = ExportExcel(list, "${replaceDto.ModelTypeName}", "${genTable.FunctionName}");
return SUCCESS(new { path = "/export/" + sFileName, fileName = sFileName });
}
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt
index e7067710..5acedd92 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt
@@ -31,12 +31,10 @@ $end
public class ${replaceDto.ModelTypeName}Dto
{
$foreach(item in genTable.Columns)
-$if((item.IsInsert || item.IsEdit || item.IsPk || item.IsIncrement))
$if(item.IsRequired)
[Required(ErrorMessage = "${item.ColumnComment}不能为空")]
$end
public $item.CsharpType$item.RequiredStr $item.CsharpField { get; set; }
-$end
$end
}
}
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplIService.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplIService.txt
index aebe0330..bc227965 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplIService.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplIService.txt
@@ -14,7 +14,7 @@ namespace ${options.IServicsNamespace}.${options.SubNamespace}.I${options.SubNam
///
public interface I${replaceDto.ModelTypeName}Service : IBaseService<${replaceDto.ModelTypeName}>
{
- PagedInfo<${replaceDto.ModelTypeName}> GetList(${replaceDto.ModelTypeName}QueryDto parm);
+ PagedInfo<${replaceDto.ModelTypeName}Dto> GetList(${replaceDto.ModelTypeName}QueryDto parm);
$if(genTable.TplCategory == "tree")
List<${replaceDto.ModelTypeName}> GetTreeList(${replaceDto.ModelTypeName}QueryDto parm);
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt
index 6568c467..8a090acd 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt
@@ -26,7 +26,7 @@ namespace ${options.ServicesNamespace}.${options.SubNamespace}
///
///
///
- public PagedInfo<${replaceDto.ModelTypeName}> GetList(${replaceDto.ModelTypeName}QueryDto parm)
+ public PagedInfo<${replaceDto.ModelTypeName}Dto> GetList(${replaceDto.ModelTypeName}QueryDto parm)
{
//开始拼装查询条件
var predicate = Expressionable.Create<${replaceDto.ModelTypeName}>();
@@ -54,6 +54,7 @@ $if(genTable.Options.SortField != "" && genTable.Options.SortField != null)
.OrderBy("${genTable.Options.SortField} ${genTable.Options.SortType}")
$end
.Where(predicate.ToExpression())
+ .Select<${replaceDto.ModelTypeName}Dto>()
.ToPage(parm);
return response;
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/Vue.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/Vue.txt
index c7d9fc2e..ff3b2c7c 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/Vue.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/Vue.txt
@@ -27,13 +27,13 @@ $if(column.HtmlType == "datetime")
@@ -289,9 +289,7 @@ from '@/api/${tool.FirstLowerCase(genTable.ModuleName)}/${genTable.BusinessName.
const { proxy } = getCurrentInstance()
// 选中${replaceDto.FistLowerPk}数组数组
const ids = ref([])
-// 非单选禁用
const single = ref(true)
-// 非多个禁用
const multiple = ref(true)
const loading = ref(false)
const showSearch = ref(true)
@@ -315,35 +313,11 @@ $if(column.IsList)
$end
$end
])
-const title = ref("")
-// 操作类型 1、add 2、edit 3、view
-const opertype = ref(0)
-const open = ref(false)
-const state = reactive({
- form: {},
- rules: {
-$foreach(column in genTable.Columns)
-$if(column.IsRequired && column.IsIncrement == false)
- ${column.CsharpFieldFl}: [{ required: true, message: "${column.ColumnComment}不能为空", trigger: $if(column.htmlType == "select")"change"$else"blur"$end
-$if(column.CsharpType == "int" || column.CsharpType == "long"), type: "number"$end }],
-$end
-$end
- },
- options: {
-$foreach(column in genTable.Columns)
-$if(column.HtmlType == "radio" || column.HtmlType == "select" || column.HtmlType == "checkbox" || column.HtmlType == "selectMulti")
- //$if(column.ColumnComment != "") ${column.ColumnComment} $else ${column.CsharpFieldFl}$end选项列表 格式 eg:{ dictLabel: '标签', dictValue: '0'}
- $if(column.DictType != "")${column.DictType}$else${column.CsharpFieldFl}Options$end: [],
-$end
-$end
- }
-})
-
-const { form, rules, options } = toRefs(state)
const total = ref(0)
const dataList = ref([])
const queryRef = ref()
-const formRef = ref()
+const defaultTime = ref([new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)])
+
$foreach(item in genTable.Columns)
$if(item.HtmlType == "datetime" && item.IsQuery == true)
// ${item.ColumnComment}时间范围
@@ -410,14 +384,82 @@ $end
$end
loading.value = true
list${genTable.BusinessName}(queryParams).then(res => {
- if (res.code == 200) {
- dataList.value = res.data.result
- total.value = res.data.totalNum
+ const { code, data } = res
+ if (code == 200) {
+ dataList.value = data.result
+ total.value = data.totalNum
loading.value = false
}
})
}
+// 查询
+function handleQuery() {
+ queryParams.pageNum = 1
+ getList()
+}
+
+// 重置查询操作
+function resetQuery(){
+$foreach(item in genTable.Columns)
+$if(item.HtmlType == "datetime" && item.IsQuery == true)
+ // ${item.ColumnComment}时间范围
+ dateRange${item.CsharpField}.value = []
+$end
+$end
+ proxy.resetForm("queryRef")
+ handleQuery()
+}
+
+// 多选框选中数据
+function handleSelectionChange(selection) {
+ ids.value = selection.map((item) => item.${replaceDto.FistLowerPk});
+ single.value = selection.length != 1
+ multiple.value = !selection.length;
+}
+
+// 自定义排序
+function sortChange(column) {
+ if (column.prop == null || column.order == null) {
+ queryParams.sort = undefined
+ queryParams.sortType = undefined
+ } else {
+ queryParams.sort = column.prop
+ queryParams.sortType = column.order
+ }
+
+ handleQuery()
+}
+
+
+/*************** form操作 ***************/
+const formRef = ref()
+const title = ref("")
+// 操作类型 1、add 2、edit 3、view
+const opertype = ref(0)
+const open = ref(false)
+const state = reactive({
+ form: {},
+ rules: {
+$foreach(column in genTable.Columns)
+$if(column.IsRequired && column.IsIncrement == false)
+ ${column.CsharpFieldFl}: [{ required: true, message: "${column.ColumnComment}不能为空", trigger: $if(column.htmlType == "select")"change"$else"blur"$end
+$if(column.CsharpType == "int" || column.CsharpType == "long"), type: "number"$end }],
+$end
+$end
+ },
+ options: {
+$foreach(column in genTable.Columns)
+$if(column.HtmlType == "radio" || column.HtmlType == "select" || column.HtmlType == "checkbox" || column.HtmlType == "selectMulti")
+ //$if(column.ColumnComment != "") ${column.ColumnComment} $else ${column.CsharpFieldFl}$end选项列表 格式 eg:{ dictLabel: '标签', dictValue: '0'}
+ $if(column.DictType != "")${column.DictType}$else${column.CsharpFieldFl}Options$end: [],
+$end
+$end
+ }
+})
+
+const { form, rules, options } = toRefs(state)
+
// 关闭dialog
function cancel(){
open.value = false
@@ -439,20 +481,6 @@ $end
proxy.resetForm("formRef")
}
-// 查询
-function handleQuery() {
- queryParams.pageNum = 1
- getList()
-}
-
-// 添加
-function handleAdd() {
- reset();
- open.value = true
- title.value = '添加'
- opertype.value = 1
-}
-
// 删除按钮操作
function handleDelete(row) {
const Ids = row.${replaceDto.FistLowerPk} || ids.value
@@ -468,6 +496,14 @@ function handleDelete(row) {
.catch(() => {})
}
+// 添加按钮操作
+function handleAdd() {
+ reset();
+ open.value = true
+ title.value = '添加'
+ opertype.value = 1
+}
+
// 修改按钮操作
function handleUpdate(row) {
reset()
@@ -491,7 +527,7 @@ $end
})
}
-// 表单提交
+// 添加&修改 表单提交
function submitForm() {
proxy.${refs}refs["formRef"].validate((valid) => {
if (valid) {
@@ -521,17 +557,6 @@ $end
})
}
-// 重置查询操作
-function resetQuery(){
-$foreach(item in genTable.Columns)
-$if(item.HtmlType == "datetime" && item.IsQuery == true)
- // ${item.ColumnComment}时间范围
- dateRange${item.CsharpField}.value = []
-$end
-$end
- proxy.resetForm("queryRef")
- handleQuery()
-}
$if(replaceDto.ShowBtnExport)
// 导出按钮操作
function handleExport() {
@@ -549,6 +574,7 @@ function handleExport() {
})
}
$end
+
$if(replaceDto.ShowBtnView)
/**
* 预览
@@ -561,6 +587,7 @@ function handlePreview(row) {
form.value = row
}
$end
+
$if(replaceDto.ShowBtnTruncate)
/**
* 清空
@@ -581,25 +608,6 @@ function handleClear() {
})
}
$end
-// 多选框选中数据
-function handleSelectionChange(selection) {
- ids.value = selection.map((item) => item.${replaceDto.FistLowerPk});
- single.value = selection.length != 1
- multiple.value = !selection.length;
-}
-
-// 自定义排序
-function sortChange(column) {
- if (column.prop == null || column.order == null) {
- queryParams.sort = undefined
- queryParams.sortType = undefined
- } else {
- queryParams.sort = column.prop
- queryParams.sortType = column.order
- }
-
- handleQuery()
-}
handleQuery()
\ No newline at end of file
diff --git a/ZR.CodeGenerator/CodeGeneratorTool.cs b/ZR.CodeGenerator/CodeGeneratorTool.cs
index 9f54bf2d..e35e003e 100644
--- a/ZR.CodeGenerator/CodeGeneratorTool.cs
+++ b/ZR.CodeGenerator/CodeGeneratorTool.cs
@@ -257,7 +257,7 @@ namespace ZR.CodeGenerator
string fileName;
if (generateDto.VueVersion == 3)
{
- fileName = generateDto.GenTable.BusinessName.ToLower() + ".js";
+ fileName = generateDto.GenTable.BusinessName.ToLower() + ".js";//vue3 api引用目前只能小写
}
else
{
@@ -310,7 +310,7 @@ namespace ZR.CodeGenerator
///
public static string GenerateVueTableList()
{
- return JnHelper.ReadTemplate(CodeTemplateDir, "TableList.txt").Render();
+ return JnHelper.ReadTemplate(CodeTemplateDir, "TableList.txt").Render();
}
///
@@ -370,7 +370,7 @@ namespace ZR.CodeGenerator
{
try
{
- return string.IsNullOrEmpty(str) ? str : str.Substring(0, 1).ToLower() + str[1..];
+ return string.IsNullOrEmpty(str) ? str : str[..1].ToLower() + str[1..];
}
catch (Exception ex)
{
--
Gitee
From 34cb8c6c987700fdb32037489b9ada6e60104fc8 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: Tue, 29 Nov 2022 17:30:04 +0800
Subject: [PATCH 058/122] =?UTF-8?q?=E4=BC=98=E5=8C=96Vue3=E4=BB=A3?=
=?UTF-8?q?=E7=A0=81=E7=94=9F=E6=88=90=E6=A8=A1=E6=9D=BF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../wwwroot/CodeGenTemplate/TplDto.txt | 21 ++++++++++++-
.../wwwroot/CodeGenTemplate/TplModel.txt | 13 ++------
.../wwwroot/CodeGenTemplate/TplService.txt | 12 +++++---
.../wwwroot/CodeGenTemplate/v3/TreeVue.txt | 4 +--
.../wwwroot/CodeGenTemplate/v3/Vue.txt | 4 +--
ZR.Repository/BaseRepository.cs | 30 +++++++++++++++++--
ZR.Repository/ZR.Repository.csproj | 1 +
7 files changed, 63 insertions(+), 22 deletions(-)
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt
index 5acedd92..51677917 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt
@@ -3,6 +3,9 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using ${options.ModelsNamespace}.Dto;
using ${options.ModelsNamespace}.Models;
+$if(replaceDto.ShowBtnExport)
+using OfficeOpenXml.Attributes;
+$end
namespace ${options.DtosNamespace}.Dto
{
@@ -26,15 +29,31 @@ $end
}
///
- /// ${genTable.FunctionName}输入对象
+ /// ${genTable.FunctionName}输入输出对象
///
public class ${replaceDto.ModelTypeName}Dto
{
$foreach(item in genTable.Columns)
$if(item.IsRequired)
[Required(ErrorMessage = "${item.ColumnComment}不能为空")]
+$end
+$if(replaceDto.ShowBtnExport)
+$if(item.IsExport)
+ [EpplusTableColumn(Header = "$if(item.ColumnComment == "")${item.CsharpField}${else}${item.ColumnComment}${end}"$if(item.CsharpType == "DateTime"), NumberFormat = "yyyy-MM-dd HH:mm:ss"$end)]
+$else
+ [EpplusIgnore]
+$end
$end
public $item.CsharpType$item.RequiredStr $item.CsharpField { get; set; }
+
+$end
+
+$if(genTable.TplCategory == "subNav" && genTable.SubTable != null)
+ public ${genTable.SubTable.ClassName} ${genTable.SubTable.ClassName} { get; set; }
+$end
+
+$if(genTable.TplCategory == "subNavMore" && genTable.SubTable != null)
+ public List<${genTable.SubTable.ClassName}> ${genTable.SubTable.ClassName} { get; set; }
$end
}
}
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplModel.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplModel.txt
index 82e6efbb..bd81ff1e 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplModel.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplModel.txt
@@ -1,8 +1,6 @@
using System;
using SqlSugar;
-$if(replaceDto.ShowBtnExport)
-using OfficeOpenXml.Attributes;
-$end
+using System.Collections.Generic;
namespace ${options.ModelsNamespace}.Models
{
@@ -20,13 +18,6 @@ $foreach(item in genTable.Columns)
/// 描述 :${item.ColumnComment} ${item.Remark}
/// 空值 :$if(item.IsRequired == "True")false${else}true${end}
///
-$if(replaceDto.ShowBtnExport)
-$if(item.IsExport)
- [EpplusTableColumn(Header = "$if(item.ColumnComment == "")${item.CsharpField}${else}${item.ColumnComment}${end}"$if(item.CsharpType == "DateTime"), NumberFormat = "yyyy-MM-dd HH:mm:ss"$end)]
-$else
- [EpplusIgnore]
-$end
-$end
$if(item.IsPk || item.IsIncrement)
[SugarColumn(IsPrimaryKey = ${item.IsPk.ToString().ToLower()}, IsIdentity = ${item.IsIncrement.ToString().ToLower()}$if(item.CsharpField.ToLower() != item.ColumnName.ToLower()), ColumnName = "$item.ColumnName"$end)]
$elseif(item.CsharpField.ToLower() != item.ColumnName.ToLower())
@@ -35,8 +26,8 @@ $end
public $item.CsharpType$item.RequiredStr $item.CsharpField { get; set; }
${end}
-$if(genTable.TplCategory == "tree")
+$if(genTable.TplCategory == "tree")
[SugarColumn(IsIgnore = true)]
public List<${replaceDto.ModelTypeName}> Children { get; set; }
$end
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt
index 8a090acd..c744b4b7 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt
@@ -7,6 +7,9 @@ using ${options.ModelsNamespace}.Models;
using ${options.IRepositoriesNamespace};
using ${options.IServicsNamespace}.${options.SubNamespace}.I${options.SubNamespace}Service;
using System.Linq;
+$if(genTable.TplCategory == "tree")
+using System.Collections.Generic;
+$end
namespace ${options.ServicesNamespace}.${options.SubNamespace}
{
@@ -51,11 +54,10 @@ $if(null != genTable.SubTableName && "" != genTable.SubTableName)
.Includes(it => it.${genTable.SubTable.ClassName}.MappingField(z => z.${genTable.SubTableFkName}, () => it.${replaceDto.PKName}))
$end
$if(genTable.Options.SortField != "" && genTable.Options.SortField != null)
- .OrderBy("${genTable.Options.SortField} ${genTable.Options.SortType}")
+ //.OrderBy("${genTable.Options.SortField} ${genTable.Options.SortType}")
$end
.Where(predicate.ToExpression())
- .Select<${replaceDto.ModelTypeName}Dto>()
- .ToPage(parm);
+ .ToPage<${replaceDto.ModelTypeName}, ${replaceDto.ModelTypeName}Dto>(parm);
return response;
}
@@ -82,12 +84,14 @@ $end
$end
$end
- var response = Queryable().Where(predicate.ToExpression())
+ var response = Queryable()
+ .Where(predicate.ToExpression())
.ToTree(it => it.Children, it => it.${genTable.Options.TreeParentCode}, 0);
return response;
}
$end
+
///
/// 添加${genTable.FunctionName}
///
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/TreeVue.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/TreeVue.txt
index 6e91504f..d63099d2 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/TreeVue.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/TreeVue.txt
@@ -317,8 +317,8 @@ const showSearch = ref(true)
const queryParams = reactive({
pageNum: 1,
pageSize: 10,
- sort: undefined,
- sortType: undefined,
+ sort: '${genTable.Options.SortField}',
+ sortType: '${genTable.Options.SortType}',
$foreach(item in genTable.Columns)
$if(item.IsQuery == true)
${item.CsharpFieldFl}: undefined,
diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/Vue.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/Vue.txt
index ff3b2c7c..d5ce0759 100644
--- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/Vue.txt
+++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/Vue.txt
@@ -296,8 +296,8 @@ const showSearch = ref(true)
const queryParams = reactive({
pageNum: 1,
pageSize: 10,
- sort: undefined,
- sortType: undefined,
+ sort: '${genTable.Options.SortField}',
+ sortType: '${genTable.Options.SortType}',
$foreach(item in genTable.Columns)
$if(item.IsQuery == true)
${item.CsharpFieldFl}: undefined,
diff --git a/ZR.Repository/BaseRepository.cs b/ZR.Repository/BaseRepository.cs
index 13decfa2..a2489dd8 100644
--- a/ZR.Repository/BaseRepository.cs
+++ b/ZR.Repository/BaseRepository.cs
@@ -1,11 +1,15 @@
-using SqlSugar;
+using Infrastructure.Extensions;
+using Mapster;
+using SqlSugar;
using SqlSugar.IOC;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq.Expressions;
using System.Reflection;
+using Ubiety.Dns.Core;
using ZR.Model;
+using ZR.Model.Dto;
namespace ZR.Repository
{
@@ -365,11 +369,33 @@ namespace ZR.Repository
page.PageSize = parm.PageSize;
page.PageIndex = parm.PageNum;
- page.Result = source.OrderByIF(!string.IsNullOrEmpty(parm.Sort), $"{parm.Sort} {(parm.SortType.Contains("desc") ? "desc" : "asc")}")
+ page.Result = source.OrderByIF(parm.Sort.IsNotEmpty(), $"{parm.Sort} {(parm.SortType.Contains("desc") ? "desc" : "asc")}")
.ToPageList(parm.PageNum, parm.PageSize, ref total);
page.TotalNum = total;
return page;
}
+ ///
+ /// 转指定实体类Dto
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static PagedInfo ToPage(this ISugarQueryable source, PagerInfo parm)
+ {
+ var page = new PagedInfo();
+ var total = 0;
+ page.PageSize = parm.PageSize;
+ page.PageIndex = parm.PageNum;
+
+ var result = source.OrderByIF(parm.Sort.IsNotEmpty(), $"{parm.Sort} {(parm.SortType.Contains("desc") ? "desc" : "asc")}")
+ .ToPageList(parm.PageNum, parm.PageSize, ref total);
+ page.TotalNum = total;
+
+ page.Result = result.Adapt