Преглед изворни кода

😎1、增加及优化用户、机构、职位、菜单、字典复制页面 2、升级依赖

zuohuaijun пре 1 година
родитељ
комит
ca1b1ef227

+ 2 - 2
Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj

@@ -17,7 +17,7 @@
     <PackageReference Include="AngleSharp" Version="1.1.2" />
     <PackageReference Include="AspectCore.Extensions.Reflection" Version="2.4.0" />
     <PackageReference Include="AspNetCoreRateLimit" Version="5.0.0" />
-    <PackageReference Include="Elastic.Clients.Elasticsearch" Version="8.15.1" />
+    <PackageReference Include="Elastic.Clients.Elasticsearch" Version="8.15.2" />
     <PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.9.5.4" />
     <PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.9.5.4" />
     <PackageReference Include="Furion.Pure" Version="4.9.5.4" />
@@ -38,7 +38,7 @@
     <PackageReference Include="SqlSugarCore" Version="5.1.4.167" />
     <PackageReference Include="SSH.NET" Version="2024.1.0" />
     <PackageReference Include="System.Linq.Dynamic.Core" Version="1.4.4" />
-    <PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1071" />
+    <PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1072" />
     <PackageReference Include="UAParser" Version="3.1.47" />
     <PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
   </ItemGroup>

+ 4 - 4
Web/package.json

@@ -2,7 +2,7 @@
 	"name": "admin.net",
 	"type": "module",
 	"version": "2.4.33",
-	"lastBuildTime": "2024.08.19",
+	"lastBuildTime": "2024.08.20",
 	"description": "Admin.NET 站在巨人肩膀上的 .NET 通用权限开发框架",
 	"author": "zuohuaijun",
 	"license": "MIT",
@@ -39,7 +39,7 @@
 		"js-table2excel": "^1.1.2",
 		"jsplumb": "^2.15.6",
 		"lodash-es": "^4.17.21",
-		"md-editor-v3": "^4.18.1",
+		"md-editor-v3": "^4.19.1",
 		"mitt": "^3.0.1",
 		"monaco-editor": "^0.50.0",
 		"mqtt": "^4.3.8",
@@ -75,8 +75,8 @@
 		"@types/node": "^20.14.15",
 		"@types/nprogress": "^0.2.3",
 		"@types/sortablejs": "^1.15.8",
-		"@typescript-eslint/eslint-plugin": "^8.1.0",
-		"@typescript-eslint/parser": "^8.1.0",
+		"@typescript-eslint/eslint-plugin": "^8.2.0",
+		"@typescript-eslint/parser": "^8.2.0",
 		"@vitejs/plugin-vue": "^5.1.2",
 		"@vitejs/plugin-vue-jsx": "^4.0.1",
 		"@vue/compiler-sfc": "^3.4.38",

+ 3 - 3
Web/src/views/system/dict/index.vue

@@ -120,15 +120,15 @@
 						</el-table-column>
 						<el-table-column label="操作" width="120" fixed="right" align="center" show-overflow-tooltip>
 							<template #default="scope">
-								<el-tooltip content="复制">
-									<el-button icon="ele-CopyDocument" size="small" text type="primary" @click="openCopyDictData(scope.row)"> </el-button>
-								</el-tooltip>
 								<el-tooltip content="编辑">
 									<el-button icon="ele-Edit" size="small" text type="primary" @click="openEditDictData(scope.row)"> </el-button>
 								</el-tooltip>
 								<el-tooltip content="删除">
 									<el-button icon="ele-Delete" size="small" text type="danger" @click="delDictData(scope.row)"> </el-button>
 								</el-tooltip>
+								<el-tooltip content="复制">
+									<el-button icon="ele-CopyDocument" size="small" text type="primary" @click="openCopyDictData(scope.row)"> </el-button>
+								</el-tooltip>
 							</template>
 						</el-table-column>
 					</el-table>

+ 9 - 9
Web/src/views/system/menu/index.vue

@@ -56,9 +56,9 @@
 				</el-table-column>
 				<el-table-column label="操作" width="210" fixed="right" align="center" show-overflow-tooltip>
 					<template #default="scope">
-						<el-button icon="ele-CopyDocument" size="small" text type="primary" @click="openCopyMenu(scope.row)" v-auth="'sysMenu:add'"> 复制 </el-button>
-						<el-button icon="ele-Edit" size="small" text type="primary" @click="openEditMenu(scope.row)" v-auth="'sysMenu:update'"> 编辑 </el-button>
-						<el-button icon="ele-Delete" size="small" text type="danger" @click="delMenu(scope.row)" v-auth="'sysMenu:delete'"> 删除 </el-button>
+						<el-button icon="ele-Edit" text type="primary" @click="openEditMenu(scope.row)" v-auth="'sysMenu:update'"> 编辑 </el-button>
+						<el-button icon="ele-Delete" text type="danger" @click="delMenu(scope.row)" v-auth="'sysMenu:delete'"> 删除 </el-button>
+						<el-button icon="ele-CopyDocument" text type="primary" @click="openCopyMenu(scope.row)" v-auth="'sysMenu:add'"> 复制 </el-button>
 					</template>
 				</el-table-column>
 			</el-table>
@@ -114,6 +114,12 @@ const openAddMenu = () => {
 	editMenuRef.value?.openDialog({ type: 2, isHide: false, isKeepAlive: true, isAffix: false, isIframe: false, status: 1, orderNo: 100 });
 };
 
+// 打开编辑页面
+const openEditMenu = (row: any) => {
+	state.editMenuTitle = '编辑菜单';
+	editMenuRef.value?.openDialog(row);
+};
+
 // 打开复制页面
 const openCopyMenu = (row: any) => {
 	state.editMenuTitle = '复制菜单';
@@ -123,12 +129,6 @@ const openCopyMenu = (row: any) => {
 	editMenuRef.value?.openDialog(copyRow);
 };
 
-// 打开编辑页面
-const openEditMenu = (row: any) => {
-	state.editMenuTitle = '编辑菜单';
-	editMenuRef.value?.openDialog(row);
-};
-
 // 删除当前行
 const delMenu = (row: any) => {
 	ElMessageBox.confirm(`确定删除菜单:【${row.title}】?`, '提示', {

+ 10 - 10
Web/src/views/system/org/index.vue

@@ -50,9 +50,9 @@
 						</el-table-column>
 						<el-table-column label="操作" width="210" fixed="right" align="center" show-overflow-tooltip>
 							<template #default="scope">
-								<el-button icon="ele-CopyDocument" size="small" text type="primary" @click="openCopyOrg(scope.row)" v-auth="'sysOrg:add'"> 复制 </el-button>
-								<el-button icon="ele-Edit" size="small" text type="primary" @click="openEditOrg(scope.row)" v-auth="'sysOrg:update'"> 编辑 </el-button>
-								<el-button icon="ele-Delete" size="small" text type="danger" @click="delOrg(scope.row)" v-auth="'sysOrg:delete'"> 删除 </el-button>
+								<el-button icon="ele-Edit" text type="primary" @click="openEditOrg(scope.row)" v-auth="'sysOrg:update'"> 编辑 </el-button>
+								<el-button icon="ele-Delete" text type="danger" @click="delOrg(scope.row)" v-auth="'sysOrg:delete'"> 删除 </el-button>
+								<el-button icon="ele-CopyDocument" text type="primary" @click="openCopyOrg(scope.row)" v-auth="'sysOrg:add'"> 复制 </el-button>
 							</template>
 						</el-table-column>
 					</el-table>
@@ -135,21 +135,21 @@ const openAddOrg = () => {
 	editOrgRef.value?.openDialog({ status: 1, orderNo: 100 });
 };
 
+// 打开编辑页面
+const openEditOrg = (row: any) => {
+	state.editOrgTitle = '编辑机构';
+	editOrgRef.value?.openDialog(row);
+};
+
 // 打开复制页面
 const openCopyOrg = (row: any) => {
-	state.editOrgTitle = '复制菜单';
+	state.editOrgTitle = '复制机构';
 	var copyRow = JSON.parse(JSON.stringify(row)) as UpdateOrgInput;
 	copyRow.id = 0;
 	copyRow.name = '';
 	editOrgRef.value?.openDialog(copyRow);
 };
 
-// 打开编辑页面
-const openEditOrg = (row: any) => {
-	state.editOrgTitle = '编辑机构';
-	editOrgRef.value?.openDialog(row);
-};
-
 // 删除
 const delOrg = (row: any) => {
 	ElMessageBox.confirm(`确定删除机构:【${row.name}】?`, '提示', {

+ 14 - 4
Web/src/views/system/pos/index.vue

@@ -37,10 +37,11 @@
 						<ModifyRecord :data="scope.row" />
 					</template>
 				</el-table-column>
-				<el-table-column label="操作" width="140" fixed="right" align="center" show-overflow-tooltip>
+				<el-table-column label="操作" width="210" fixed="right" align="center" show-overflow-tooltip>
 					<template #default="scope">
-						<el-button icon="ele-Edit" size="small" text type="primary" @click="openEditPos(scope.row)" v-auth="'sysPos:update'"> 编辑 </el-button>
-						<el-button icon="ele-Delete" size="small" text type="danger" @click="delPos(scope.row)" v-auth="'sysPos:delete'"> 删除 </el-button>
+						<el-button icon="ele-Edit" text type="primary" @click="openEditPos(scope.row)" v-auth="'sysPos:update'"> 编辑 </el-button>
+						<el-button icon="ele-Delete" text type="danger" @click="delPos(scope.row)" v-auth="'sysPos:delete'"> 删除 </el-button>
+						<el-button icon="ele-CopyDocument" text type="primary" @click="openCopyMenu(scope.row)" v-auth="'sysPos:add'"> 复制 </el-button>
 					</template>
 				</el-table-column>
 			</el-table>
@@ -58,7 +59,7 @@ import ModifyRecord from '/@/components/table/modifyRecord.vue';
 
 import { getAPI } from '/@/utils/axios-utils';
 import { SysPosApi } from '/@/api-services/api';
-import { SysPos } from '/@/api-services/models';
+import { SysPos, UpdatePosInput } from '/@/api-services/models';
 
 const editPosRef = ref<InstanceType<typeof EditPos>>();
 const state = reactive({
@@ -102,6 +103,15 @@ const openEditPos = (row: any) => {
 	editPosRef.value?.openDialog(row);
 };
 
+// 打开复制页面
+const openCopyMenu = (row: any) => {
+	state.title = '复制职位';
+	var copyRow = JSON.parse(JSON.stringify(row)) as UpdatePosInput;
+	copyRow.id = 0;
+	copyRow.name = '';
+	editPosRef.value?.openDialog(copyRow);
+};
+
 // 删除
 const delPos = (row: any) => {
 	ElMessageBox.confirm(`确定删除职位:【${row.name}】?`, '提示', {

+ 22 - 13
Web/src/views/system/user/index.vue

@@ -77,19 +77,19 @@
 								<ModifyRecord :data="scope.row" />
 							</template>
 						</el-table-column>
-						<el-table-column label="操作" width="130" align="center" fixed="right" show-overflow-tooltip>
+						<el-table-column label="操作" width="300" align="center" fixed="right" show-overflow-tooltip>
 							<template #default="scope">
-								<el-button icon="ele-Edit" size="small" text type="primary" @click="openEditUser(scope.row)" v-auth="'sysUser:update'"> 编辑 </el-button>
-								<el-dropdown>
-									<el-button icon="ele-MoreFilled" size="small" text type="primary" style="padding-left: 12px" />
-									<template #dropdown>
-										<el-dropdown-menu>
-											<el-dropdown-item icon="ele-RefreshLeft" @click="resetUserPwd(scope.row)" :disabled="!auth('sysUser:resetPwd')"> 重置密码 </el-dropdown-item>
-											<el-dropdown-item icon="ele-Unlock" @click="unlockLogin(scope.row)" divided :disabled="!auth('sysUser:unlockLogin')"> 解除锁定 </el-dropdown-item>
-											<el-dropdown-item icon="ele-Delete" @click="delUser(scope.row)" divided :disabled="!auth('sysUser:delete')"> 删除账号 </el-dropdown-item>
-										</el-dropdown-menu>
-									</template>
-								</el-dropdown>
+								<el-tooltip content="编辑" placement="top">
+									<el-button icon="ele-Edit" text type="primary" v-auth="'sysUser:update'" @click="openEditUser(scope.row)"> </el-button>
+								</el-tooltip>
+								<el-tooltip content="删除" placement="top">
+									<el-button icon="ele-Delete" text type="danger" v-auth="'sysUser:delete'" @click="delUser(scope.row)"> </el-button>
+								</el-tooltip>
+								<el-tooltip content="复制" placement="top">
+									<el-button icon="ele-CopyDocument" text type="primary" v-auth="'sysUser:add'" @click="openCopyMenu(scope.row)"> </el-button>
+								</el-tooltip>
+								<el-button icon="ele-RefreshLeft" text type="danger" v-auth="'sysUser:resetPwd'" @click="resetUserPwd(scope.row)">重置密码</el-button>
+								<el-button icon="ele-Unlock" text type="primary" v-auth="'sysUser:unlockLogin'" @click="unlockLogin(scope.row)">解除锁定</el-button>
 							</template>
 						</el-table-column>
 					</el-table>
@@ -126,7 +126,7 @@ import 'splitpanes/dist/splitpanes.css';
 
 import { getAPI } from '/@/utils/axios-utils';
 import { SysUserApi, SysOrgApi } from '/@/api-services/api';
-import { SysUser, SysOrg } from '/@/api-services/models';
+import { SysUser, SysOrg, UpdateUserInput } from '/@/api-services/models';
 
 const orgTreeRef = ref<InstanceType<typeof OrgTree>>();
 const editUserRef = ref<InstanceType<typeof EditUser>>();
@@ -194,6 +194,15 @@ const openEditUser = (row: any) => {
 	editUserRef.value?.openDialog(row);
 };
 
+// 打开复制页面
+const openCopyMenu = (row: any) => {
+	state.editUserTitle = '复制账号';
+	var copyRow = JSON.parse(JSON.stringify(row)) as UpdateUserInput;
+	copyRow.id = 0;
+	copyRow.account = '';
+	editUserRef.value?.openDialog(copyRow);
+};
+
 // 删除
 const delUser = (row: any) => {
 	ElMessageBox.confirm(`确定删除账号:【${row.account}】?`, '提示', {