😎增加账号、菜单、机构、职位、字典值复制功能

This commit is contained in:
zuohuaijun 2024-08-19 23:21:33 +08:00
parent 7525ea2fa0
commit 85d02a8997
7 changed files with 76 additions and 35 deletions

View File

@ -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" />
@ -36,10 +36,10 @@
<PackageReference Include="SkiaSharp.NativeAssets.Linux.NoDependencies" Version="2.88.8" />
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="3.5.0" />
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.TenpayV3" Version="3.7.0" />
<PackageReference Include="SqlSugarCore" Version="5.1.4.166" />
<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.1070" />
<PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1071" />
<PackageReference Include="UAParser" Version="3.1.47" />
<PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
</ItemGroup>

View File

@ -2,7 +2,7 @@
"name": "admin.net.pro",
"type": "module",
"version": "2.4.33",
"lastBuildTime": "2024.08.16",
"lastBuildTime": "2024.08.19",
"description": "Admin.NET 站在巨人肩膀上的 .NET 通用权限开发框架",
"author": "zuohuaijun",
"license": "MIT",
@ -41,7 +41,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",
@ -64,7 +64,7 @@
"vue-demi": "0.14.6",
"vue-draggable-plus": "^0.5.3",
"vue-grid-layout": "3.0.0-beta1",
"vue-i18n": "^9.13.1",
"vue-i18n": "^9.14.0",
"vue-json-pretty": "^2.4.0",
"vue-plugin-hiprint": "0.0.57-beta28",
"vue-router": "^4.4.3",

View File

@ -115,6 +115,9 @@
<el-tooltip content="删除" placement="top">
<el-button icon="ele-Delete" text type="danger" v-auth="'sysDictType/delete'" @click="handleDeleteDictData(row)"> </el-button>
</el-tooltip>
<el-tooltip content="复制">
<el-button icon="ele-CopyDocument" text type="primary" v-auth="'sysDictType/add'" @click="openCopyDictData(row)"> </el-button>
</el-tooltip>
</template>
</vxe-grid>
</el-card>
@ -140,7 +143,7 @@ import ModifyRecord from '/@/components/table/modifyRecord.vue';
import { getAPI } from '/@/utils/axios-utils';
import { SysDictTypeApi, SysDictDataApi } from '/@/api-services/api';
import { SysDictType, PageDictTypeInput, SysDictData, PageDictDataInput } from '/@/api-services/models';
import { SysDictType, PageDictTypeInput, SysDictData, PageDictDataInput, UpdateDictDataInput } from '/@/api-services/models';
const xGridDictType = ref<VxeGridInstance>();
const xGridDictData = ref<VxeGridInstance>();
@ -287,7 +290,7 @@ const optionsDictData = useVxeTable<SysDictData>(
{ field: 'orderNo', title: '排序', width: 80, showOverflow: 'tooltip' },
{ field: 'status', title: '状态', width: 80, showOverflow: 'tooltip', slots: { default: 'row_status' } },
{ field: '', title: '修改记录', width: 100, showOverflow: 'tooltip', slots: { default: 'row_record' } },
{ title: '操作', fixed: 'right', width: 100, showOverflow: true, slots: { default: 'row_buttons' } },
{ title: '操作', fixed: 'right', width: 120, showOverflow: true, slots: { default: 'row_buttons' } },
],
},
// vxeGrid()vxe-table
@ -344,6 +347,14 @@ const handleEditDictData = (row: any) => {
editRefDictData.value?.openDialog(row);
};
//
const openCopyDictData = (row: any) => {
state.title = '复制字典值';
var copyRow = JSON.parse(JSON.stringify(row)) as UpdateDictDataInput;
copyRow.id = 0;
editRefDictData.value?.openDialog(copyRow);
};
//
const handleDeleteDictData = (row: any) => {
ElMessageBox.confirm(`确定删除字典值:【${row.value}】?`, '提示', {

View File

@ -62,12 +62,9 @@
<ModifyRecord :data="row" />
</template>
<template #row_buttons="{ row }">
<el-tooltip content="编辑" placement="top">
<el-button icon="ele-Edit" text type="primary" v-auth="'sysMenu/update'" @click="handleEdit(row)"> </el-button>
</el-tooltip>
<el-tooltip content="删除" placement="top">
<el-button icon="ele-Delete" text type="danger" v-auth="'sysMenu/delete'" @click="handleDelete(row)"> </el-button>
</el-tooltip>
<el-button icon="ele-Edit" text type="primary" v-auth="'sysMenu/update'" @click="handleEdit(row)"> 编辑 </el-button>
<el-button icon="ele-Delete" text type="danger" v-auth="'sysMenu/delete'" @click="handleDelete(row)"> 删除 </el-button>
<el-button icon="ele-CopyDocument" text type="primary" v-auth="'sysMenu/add'" @click="openCopyMenu(row)"> 复制 </el-button>
</template>
</vxe-grid>
</el-card>
@ -88,7 +85,7 @@ import ModifyRecord from '/@/components/table/modifyRecord.vue';
import { getAPI } from '/@/utils/axios-utils';
import { SysMenuApi } from '/@/api-services/api';
import { SysMenu } from '/@/api-services/models';
import { SysMenu, UpdateMenuInput } from '/@/api-services/models';
const xGrid = ref<VxeGridInstance>();
const editMenuRef = ref<InstanceType<typeof EditMenu>>();
@ -117,7 +114,7 @@ const options = useVxeTable<SysMenu>(
{ field: 'orderNo', title: '排序', width: 80, showOverflow: 'tooltip' },
{ field: 'status', title: '状态', width: 100, showOverflow: 'tooltip', slots: { default: 'row_status' } },
{ field: '', title: '修改记录', width: 100, showOverflow: 'tooltip', slots: { default: 'row_record' } },
{ title: '操作', fixed: 'right', width: 100, showOverflow: true, slots: { default: 'row_buttons' } },
{ title: '操作', fixed: 'right', width: 210, showOverflow: true, slots: { default: 'row_buttons' } },
],
},
// vxeGrid()vxe-table
@ -170,6 +167,15 @@ const handleEdit = (row: any) => {
editMenuRef.value?.openDialog(row);
};
//
const openCopyMenu = (row: any) => {
state.title = '复制菜单';
var copyRow = JSON.parse(JSON.stringify(row)) as UpdateMenuInput;
copyRow.id = 0;
copyRow.title = '';
editMenuRef.value?.openDialog(copyRow);
};
//
const handleDelete = (row: any) => {
ElMessageBox.confirm(`确定删除菜单:【${row.title}】?`, '提示', {

View File

@ -61,12 +61,9 @@
<ModifyRecord :data="row" />
</template>
<template #row_buttons="{ row }">
<el-tooltip content="编辑" placement="top">
<el-button icon="ele-Edit" size="small" text type="primary" @click="handleEdit(row)" v-auth="'sysOrg/update'"></el-button>
</el-tooltip>
<el-tooltip content="删除" placement="top">
<el-button icon="ele-Delete" size="small" text type="danger" @click="handleDelete(row)" v-auth="'sysOrg/delete'"></el-button>
</el-tooltip>
<el-button icon="ele-Edit" text type="primary" @click="handleEdit(row)" v-auth="'sysOrg/update'"> 编辑 </el-button>
<el-button icon="ele-Delete" text type="danger" @click="handleDelete(row)" v-auth="'sysOrg/delete'"> 删除 </el-button>
<el-button icon="ele-CopyDocument" text type="primary" @click="openCopyOrg(row)" v-auth="'sysOrg/add'"> 复制 </el-button>
</template>
</vxe-grid>
</el-card>
@ -91,7 +88,7 @@ import ModifyRecord from '/@/components/table/modifyRecord.vue';
import { getAPI } from '/@/utils/axios-utils';
import { SysDictDataApi, SysOrgApi } from '/@/api-services';
import { SysOrg } from '/@/api-services/models';
import { SysOrg, UpdateOrgInput } from '/@/api-services/models';
const xGrid = ref<VxeGridInstance>();
const editOrgRef = ref<InstanceType<typeof EditOrg>>();
@ -123,7 +120,7 @@ const options = useVxeTable<SysOrg>(
{ field: 'orderNo', title: '排序', width: 80, showOverflow: 'tooltip' },
{ field: 'status', title: '状态', width: 80, showOverflow: 'tooltip', slots: { default: 'row_status' } },
{ field: '', title: '修改记录', width: 100, showOverflow: 'tooltip', slots: { default: 'row_record' } },
{ title: '操作', fixed: 'right', width: 100, showOverflow: true, slots: { default: 'row_buttons' } },
{ title: '操作', fixed: 'right', width: 210, showOverflow: true, slots: { default: 'row_buttons' } },
],
},
// vxeGrid()vxe-table
@ -195,6 +192,15 @@ const handleEdit = (row: any) => {
editOrgRef.value?.openDialog(row);
};
//
const openCopyOrg = (row: any) => {
state.title = '复制机构';
var copyRow = JSON.parse(JSON.stringify(row)) as UpdateOrgInput;
copyRow.id = 0;
copyRow.name = '';
editOrgRef.value?.openDialog(copyRow);
};
//
const handleDelete = (row: any) => {
ElMessageBox.confirm(`确定删除机构:【${row.name}】?`, '提示', {

View File

@ -45,12 +45,9 @@
<ModifyRecord :data="row" />
</template>
<template #row_buttons="{ row }">
<el-tooltip content="编辑" placement="top">
<el-button icon="ele-Edit" text type="primary" v-auth="'sysPos/update'" @click="handleEdit(row)"> </el-button>
</el-tooltip>
<el-tooltip content="删除" placement="top">
<el-button icon="ele-Delete" text type="danger" v-auth="'sysPos/delete'" @click="handleDelete(row)"> </el-button>
</el-tooltip>
<el-button icon="ele-Edit" text type="primary" v-auth="'sysPos/update'" @click="handleEdit(row)"> 编辑 </el-button>
<el-button icon="ele-Delete" text type="danger" v-auth="'sysPos/delete'" @click="handleDelete(row)"> 删除 </el-button>
<el-button icon="ele-CopyDocument" text type="primary" v-auth="'sysPos/add'" @click="openCopyMenu(row)"> 复制 </el-button>
</template>
</vxe-grid>
</el-card>
@ -71,7 +68,7 @@ import ModifyRecord from '/@/components/table/modifyRecord.vue';
import { getAPI } from '/@/utils/axios-utils';
import { SysPosApi } from '/@/api-services/api';
import { PagePosOutput, PagePosInput } from '/@/api-services/models';
import { PagePosOutput, PagePosInput, UpdatePosInput } from '/@/api-services/models';
const xGrid = ref<VxeGridInstance>();
const editPosRef = ref<InstanceType<typeof EditPos>>();
@ -103,7 +100,7 @@ const options = useVxeTable<PagePosOutput>(
{ field: 'orderNo', title: '排序', width: 80, showOverflow: 'tooltip' },
{ field: 'status', title: '状态', width: 80, showOverflow: 'tooltip', slots: { default: 'row_status' } },
{ field: '', title: '修改记录', width: 100, showOverflow: 'tooltip', slots: { default: 'row_record' } },
{ title: '操作', fixed: 'right', width: 100, showOverflow: true, slots: { default: 'row_buttons' } },
{ title: '操作', fixed: 'right', width: 210, showOverflow: true, slots: { default: 'row_buttons' } },
],
},
// vxeGrid()vxe-table
@ -157,6 +154,15 @@ const handleEdit = (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 handleDelete = (row: any) => {
ElMessageBox.confirm(`确定删除职位:【${row.name}】?`, '提示', {

View File

@ -80,6 +80,9 @@
<el-tooltip content="删除" placement="top">
<el-button icon="ele-Delete" text type="danger" v-auth="'sysUser/delete'" @click="handleDelete(row)"> </el-button>
</el-tooltip>
<el-tooltip content="复制" placement="top">
<el-button icon="ele-CopyDocument" text type="primary" v-auth="'sysUser/add'" @click="openCopyMenu(row)"> </el-button>
</el-tooltip>
<el-button icon="ele-RefreshLeft" text type="danger" v-auth="'sysUser/resetPwd'" @click="resetQueryPwd(row)">重置密码</el-button>
<el-button icon="ele-Unlock" text type="primary" v-auth="'sysUser/unlockLogin'" @click="handleUnlock(row)">解除锁定</el-button>
</template>
@ -108,10 +111,10 @@ import ModifyRecord from '/@/components/table/modifyRecord.vue';
import { getAPI } from '/@/utils/axios-utils';
import { SysUserApi, SysOrgApi } from '/@/api-services/api';
import { SysOrg, PageTenantInput, UserOutput } from '/@/api-services/models';
import { SysOrg, PageTenantInput, UserOutput, UpdateUserInput } from '/@/api-services/models';
const xGrid = ref<VxeGridInstance>();
const treeRef = ref<InstanceType<typeof OrgTree>>();
// const treeRef = ref<InstanceType<typeof OrgTree>>();
const editUserRef = ref<InstanceType<typeof EditUser>>();
const state = reactive({
treeData: [] as Array<SysOrg>,
@ -154,7 +157,7 @@ const options = useVxeTable<UserOutput>(
{ field: 'status', title: '状态', width: 80, showOverflow: 'tooltip', slots: { default: 'row_status' } },
{ field: 'orderNo', title: '排序', width: 80, showOverflow: 'tooltip' },
{ field: '', title: '修改记录', width: 100, showOverflow: 'tooltip', slots: { default: 'row_record' } },
{ title: '操作', fixed: 'right', width: 280, showOverflow: true, slots: { default: 'row_buttons' } },
{ title: '操作', fixed: 'right', width: 300, showOverflow: true, slots: { default: 'row_buttons' } },
],
},
// vxeGrid()vxe-table
@ -222,6 +225,15 @@ const handleEdit = (row: any) => {
editUserRef.value?.openDialog(row);
};
//
const openCopyMenu = (row: any) => {
state.title = '复制账号';
var copyRow = JSON.parse(JSON.stringify(row)) as UpdateUserInput;
copyRow.id = 0;
copyRow.account = '';
editUserRef.value?.openDialog(copyRow);
};
//
const handleDelete = (row: any) => {
ElMessageBox.confirm(`确定删除账号:【${row.account}】?`, '提示', {