@utogether/udp-core 1.0.1-beta.1 → 1.0.1-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{403-Dp617CWX.js → 403-BBQoJwTM.js} +1 -1
- package/dist/{404-Cz_Axb6Y.js → 404-BbJPSIWM.js} +1 -1
- package/dist/{500-BGCtRNse.js → 500-BtFL9R4M.js} +1 -1
- package/dist/{AuthorityInfo-DGGfm7IS.js → AuthorityInfo-DhiwCeLN.js} +1 -1
- package/dist/{AuthorityInfo.vue_vue_type_style_index_0_lang-BqccGW7v.js → AuthorityInfo.vue_vue_type_style_index_0_lang-Duyweh89.js} +1 -1
- package/dist/{Company-IV3GTnzY.js → Company-CGqmslx-.js} +3 -3
- package/dist/{CompanyPanel-qV-_VtoL.js → CompanyPanel-hlDsxD-6.js} +1 -1
- package/dist/{Department-B3W-OxW8.js → Department-BZyJtacc.js} +3 -3
- package/dist/{DepartmentPanel-Cw3OWxE7.js → DepartmentPanel-D-a_EBFt.js} +1 -1
- package/dist/{DesignPanel-BFxR2fHJ.js → DesignPanel-Bl4luWDV.js} +1 -1
- package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-DljbeFba.js → DesignPanel.vue_vue_type_style_index_0_lang-I8C3iGvz.js} +2 -2
- package/dist/{DictView-C-i7e4hZ.js → DictView-B4a7Hs1X.js} +1 -1
- package/dist/{InvOrganization-cfT6riGU.js → InvOrganization-q4T3y8dQ.js} +1 -1
- package/dist/{Org-CA7vTDIF.js → Org-BTGTrAVz.js} +1 -1
- package/dist/{Preview-BlDMmpdR.js → Preview-pHD84xqI.js} +1 -1
- package/dist/{ReportDefine-Cub_85LA.js → ReportDefine-DnnCNQWS.js} +1 -1
- package/dist/{ReportDesign-hFhq5UVE.js → ReportDesign-BnI_Q4pg.js} +2 -2
- package/dist/{ReportQuery-ChkWEyxT.js → ReportQuery-Dby2MmtM.js} +1 -1
- package/dist/{ReportQueryFrom-KVyD_8Dj.js → ReportQueryFrom-Blm1N8P1.js} +1 -1
- package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-CLNODquq.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-CnG_Ybnt.js} +1 -1
- package/dist/{ReportTemplate-ag9NDvh2.js → ReportTemplate-D65RXRY_.js} +1 -1
- package/dist/{Role-_q3lQ8CZ.js → Role-eFZoTpXc.js} +3 -3
- package/dist/{RoleAssign-DZb9IRsm.js → RoleAssign-D9-Y3UNz.js} +3 -3
- package/dist/{RolePanel-CsLsz-Ds.js → RolePanel-CoUOc3sX.js} +1 -1
- package/dist/{RolePanel-BQb1LlhD.js → RolePanel-DlFw6HSf.js} +1 -1
- package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-BrnRgHEk.js → RolePanel.vue_vue_type_script_setup_true_lang-Clwk-MHw.js} +3 -3
- package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-cmW7zBLu.js → RolePanel.vue_vue_type_script_setup_true_lang-DKHgNWQP.js} +1 -1
- package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-CaFKRwXu.js → ScrollPanel.vue_vue_type_style_index_0_lang-M2FQJwPU.js} +1 -1
- package/dist/{Staff-BSf9Ypbk.js → Staff-DFBLCsAd.js} +3 -3
- package/dist/{StaffInfo-BNKasyMF.js → StaffInfo-d2CK0oBA.js} +1 -1
- package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-DDZ7ukd0.js → StaffInfo.vue_vue_type_script_setup_true_lang-4m8wK9tq.js} +1 -1
- package/dist/{StaffPanel-Bpq0WVlH.js → StaffPanel-D6aWLKN3.js} +1 -1
- package/dist/{StaffPanel.vue_vue_type_script_setup_true_lang-BhiJ0Q-Q.js → StaffPanel.vue_vue_type_script_setup_true_lang-C7YT2CVb.js} +2 -2
- package/dist/{SysUser-FAABuNti.js → SysUser-BdZvYxQH.js} +2 -2
- package/dist/{SysUserPanel-PxJeOgHm.js → SysUserPanel-BIVa6LLr.js} +1 -1
- package/dist/{SysUserPanel.vue_vue_type_script_setup_true_lang-njefUln5.js → SysUserPanel.vue_vue_type_script_setup_true_lang-BsBKpYR7.js} +1 -1
- package/dist/{SystemMenu-C-7NAGon.js → SystemMenu-C-5VKlHK.js} +16 -16
- package/dist/{UserInfo-ClXKtyGo.js → UserInfo-DqXCRZts.js} +1 -1
- package/dist/{UserInfo.vue_vue_type_style_index_0_lang-8N7P4Hl7.js → UserInfo.vue_vue_type_style_index_0_lang-N3TwfpPx.js} +1 -1
- package/dist/{childView-C_HmDQNd.js → childView-B2lSsqS3.js} +1 -1
- package/dist/{childView-uUlBcTza.js → childView-DRUNqgjI.js} +1 -1
- package/dist/{childView.vue_vue_type_style_index_0_lang-y0sDvYx5.js → childView.vue_vue_type_style_index_0_lang-B9XBDDU_.js} +1 -1
- package/dist/{childView.vue_vue_type_style_index_0_lang-Ckjmw6wJ.js → childView.vue_vue_type_style_index_0_lang-oGriyFTv.js} +1 -1
- package/dist/{code-rule-AgCVDKFy.js → code-rule-DZC9T6cl.js} +1 -1
- package/dist/core.es.js +1 -1
- package/dist/{cron-task-C6FgQxTi.js → cron-task-BJwPeA5F.js} +1 -1
- package/dist/{frameView-BDgISK7N.js → frameView-C6wkvok-.js} +1 -1
- package/dist/index-DZc3qRTx.js +2650 -0
- package/dist/{layoutView-yb3DV2DQ.js → layoutView-CeJBpZb_.js} +2 -2
- package/dist/{login-RRpljbkm.js → login-BOxwzwdB.js} +2 -2
- package/dist/{lov-view-C9-rjzZR.js → lov-view-DRF-99U4.js} +2 -2
- package/dist/{menuInfo-CzPQyFhp.js → menuInfo-3Sjvs9nM.js} +1 -1
- package/dist/{menuInfo.vue_vue_type_style_index_0_lang-BumXunCg.js → menuInfo.vue_vue_type_style_index_0_lang-DrQ560nm.js} +91 -90
- package/dist/{pda-app-Dvy3U-b6.js → pda-app-B9tn7jdv.js} +1 -1
- package/dist/{resource-Fy0lFkSV.js → resource-BqnxbQNe.js} +1 -1
- package/dist/{su-welcome-DYvSCUST.js → su-welcome-VwifUK_O.js} +1 -1
- package/dist/{sys-config-DJ1vNQTy.js → sys-config-C0-gSBFO.js} +1 -1
- package/dist/{utogether-CjmJiHoE.js → utogether-Di1byIum.js} +1 -1
- package/package.json +18 -18
- package/src/components/udp/form-upload.vue +71 -20
- package/src/main.ts +109 -109
- package/src/plugins/vxe-table/index.ts +53 -46
- package/src/views/system/menu/SystemMenu.vue +197 -197
- package/src/views/system/menu/menuInfo.vue +11 -9
- package/dist/index-DzOzUkf6.js +0 -3388
|
@@ -1,197 +1,197 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="page-content">
|
|
3
|
-
<ut-grid
|
|
4
|
-
ref="xgrid"
|
|
5
|
-
:tree-config="{
|
|
6
|
-
childrenField: 'children',
|
|
7
|
-
lazy: true,
|
|
8
|
-
hasChild: 'hasChildren',
|
|
9
|
-
loadMethod: loadChildrenMethod,
|
|
10
|
-
iconOpen: 'ri-checkbox-indeterminate-line ri-lg',
|
|
11
|
-
iconClose: 'ri-add-box-line ri-lg'
|
|
12
|
-
}"
|
|
13
|
-
:columns="columns"
|
|
14
|
-
:url="url"
|
|
15
|
-
:stripe="false"
|
|
16
|
-
mode="form"
|
|
17
|
-
@toolbarButtonClick="handleToolClick"
|
|
18
|
-
/>
|
|
19
|
-
<MenuInfo
|
|
20
|
-
:show="data.showDrawer"
|
|
21
|
-
:record="data.record"
|
|
22
|
-
:data-status="data.dataStatus"
|
|
23
|
-
@close="onClose"
|
|
24
|
-
/>
|
|
25
|
-
<AuthorityPanel :show="data.showAuthority" :record="data.record" @close="onClose" />
|
|
26
|
-
</div>
|
|
27
|
-
</template>
|
|
28
|
-
|
|
29
|
-
<script lang="tsx">
|
|
30
|
-
export default { name: 'SystemMenu' };
|
|
31
|
-
</script>
|
|
32
|
-
<script setup lang="tsx">
|
|
33
|
-
import { useI18n } from 'vue-i18n';
|
|
34
|
-
import { ref, reactive } from 'vue';
|
|
35
|
-
import MenuInfo from './menuInfo.vue';
|
|
36
|
-
import AuthorityPanel from './AuthorityPanel.vue';
|
|
37
|
-
import { clone } from 'xe-utils';
|
|
38
|
-
import to from 'await-to-js';
|
|
39
|
-
import { VxeUI } from 'vxe-pc-ui';
|
|
40
|
-
import { useRender } from '@utogether/utils';
|
|
41
|
-
import { getServiceApi } from '../../../api';
|
|
42
|
-
|
|
43
|
-
const data = reactive<IRecord>({
|
|
44
|
-
record: {},
|
|
45
|
-
dataList: [],
|
|
46
|
-
submitLoading: false,
|
|
47
|
-
showDrawer: false,
|
|
48
|
-
dataStatus: '',
|
|
49
|
-
total: 0,
|
|
50
|
-
listQuery: {
|
|
51
|
-
pageSize: 10,
|
|
52
|
-
pageNum: 1
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
const { t } = useI18n();
|
|
57
|
-
|
|
58
|
-
const renderHook = useRender();
|
|
59
|
-
|
|
60
|
-
const serviceApi = getServiceApi();
|
|
61
|
-
|
|
62
|
-
const xgrid = ref(null);
|
|
63
|
-
|
|
64
|
-
const url = '/uums/menu';
|
|
65
|
-
|
|
66
|
-
let row;
|
|
67
|
-
|
|
68
|
-
// const buttons = [{ code: 'add', status: 'u-cyan', icon: 'plus', auth: 'add' }];
|
|
69
|
-
|
|
70
|
-
const columns = [
|
|
71
|
-
{ type: 'checkbox', width: 50, align: 'center' },
|
|
72
|
-
{ field: 'menuName', width: 180, treeNode: true },
|
|
73
|
-
{ field: 'menuNameEn', width: 140 },
|
|
74
|
-
{ field: 'sort', width: 70 },
|
|
75
|
-
{ field: 'menuCode', width: 140 },
|
|
76
|
-
{ field: 'permissionCode', minWidth: 180 },
|
|
77
|
-
{
|
|
78
|
-
field: 'menuCategory',
|
|
79
|
-
title: 'message.menuType',
|
|
80
|
-
formatter: ['formatDict', 'SU.MENU.TYPE'],
|
|
81
|
-
width: 100
|
|
82
|
-
},
|
|
83
|
-
{ field: 'enabled', width: 80, cellRender: renderHook.renderEnabled(handleUpdate) },
|
|
84
|
-
{
|
|
85
|
-
field: 'operate',
|
|
86
|
-
width: 140,
|
|
87
|
-
fixed: 'right',
|
|
88
|
-
slots: {
|
|
89
|
-
default: ({ row }) => {
|
|
90
|
-
const type = row.menuType;
|
|
91
|
-
const addCmp = (
|
|
92
|
-
<ut-button status="u-cyan" icon="ri-add-fill" content="add" onTap={() => handleAdd(row)} />
|
|
93
|
-
);
|
|
94
|
-
const authCmp = (
|
|
95
|
-
<ut-button icon="ri-lock-fill" content="auth" onTap={() => handleAuthorityPanel(row)} />
|
|
96
|
-
);
|
|
97
|
-
return [
|
|
98
|
-
<>
|
|
99
|
-
{!type ? (
|
|
100
|
-
<>
|
|
101
|
-
<ut-button
|
|
102
|
-
status="success"
|
|
103
|
-
icon="ri-edit-box-line"
|
|
104
|
-
content="edit"
|
|
105
|
-
onTap={() => handleEdit(row)}
|
|
106
|
-
/>
|
|
107
|
-
{['0', '5'].includes(row.menuCategory) ? addCmp : authCmp}
|
|
108
|
-
</>
|
|
109
|
-
) : null}
|
|
110
|
-
</>
|
|
111
|
-
];
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
];
|
|
116
|
-
|
|
117
|
-
// const resetListQuery = () => {
|
|
118
|
-
// data.listQuery.pageSize = 99;
|
|
119
|
-
// data.listQuery.pageNum = 1;
|
|
120
|
-
// getDataList();
|
|
121
|
-
// };
|
|
122
|
-
|
|
123
|
-
// const getDataList = async () => {
|
|
124
|
-
// const res = (await serviceApi('sys/listMenus', data.listQuery)) as IResponseData;
|
|
125
|
-
// data.dataList = res.list;
|
|
126
|
-
// data.total = res.total;
|
|
127
|
-
// };
|
|
128
|
-
|
|
129
|
-
const handleToolClick = ({ code }) => {
|
|
130
|
-
code === 'add' && handleAdd();
|
|
131
|
-
code === 'del' && handleDel();
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
// 异步加载子节点
|
|
135
|
-
const loadChildrenMethod = async ({ row }: any) => {
|
|
136
|
-
const data = (await serviceApi.get(url, { parentId: row.id })) as IResponseData;
|
|
137
|
-
return new Promise(resolve => {
|
|
138
|
-
resolve(data.list);
|
|
139
|
-
});
|
|
140
|
-
};
|
|
141
|
-
|
|
142
|
-
// 新增子类型
|
|
143
|
-
// menuType:保持原有不懂, 0:菜单 1,数据权限
|
|
144
|
-
// 新增menuCategory: 0、根目录 1、菜单 2、内部链接3、外部链接
|
|
145
|
-
const handleAdd = (record?: IRecord) => {
|
|
146
|
-
data.showDrawer = true;
|
|
147
|
-
data.dataStatus = 'add';
|
|
148
|
-
data.record.dispalyCode = record?.permissionCode; // 前缀
|
|
149
|
-
data.record.permissionCode = record?.permissionCode;
|
|
150
|
-
// data.record.menuType = !record || !record.parentId ? '0' : '1';
|
|
151
|
-
data.record.menuType = '0';
|
|
152
|
-
data.record.menuCategory = !record ? '0' : '';
|
|
153
|
-
data.record.parentId = record?.id;
|
|
154
|
-
data.record.hasChildren = record?.hasChildren;
|
|
155
|
-
data.record.children = data.record.children || [];
|
|
156
|
-
console.log(data.record);
|
|
157
|
-
row = record;
|
|
158
|
-
};
|
|
159
|
-
|
|
160
|
-
// 编辑
|
|
161
|
-
const handleEdit = (record: IRecord) => {
|
|
162
|
-
data.showDrawer = true;
|
|
163
|
-
data.dataStatus = 'update';
|
|
164
|
-
data.record = clone(record, true);
|
|
165
|
-
data.record.menuType = data.record.menuType.toString();
|
|
166
|
-
data.record.dispalyCode = record.permissionCode;
|
|
167
|
-
};
|
|
168
|
-
|
|
169
|
-
// 启用/禁用
|
|
170
|
-
async function handleUpdate({ row }) {
|
|
171
|
-
await serviceApi.put(url, [row]);
|
|
172
|
-
xgrid.value.refreshData();
|
|
173
|
-
}
|
|
174
|
-
// 删除
|
|
175
|
-
const handleDel = async () => {
|
|
176
|
-
const type = await VxeUI.modal.confirm(t('message.delRecord'));
|
|
177
|
-
const records = xgrid.value.getInstance().getCheckboxRecords();
|
|
178
|
-
if (type === 'confirm') {
|
|
179
|
-
const [err] = await to(serviceApi.delete(url, records));
|
|
180
|
-
}
|
|
181
|
-
};
|
|
182
|
-
|
|
183
|
-
const handleAuthorityPanel = record => {
|
|
184
|
-
data.showAuthority = true;
|
|
185
|
-
data.dataStatus = 'update';
|
|
186
|
-
data.record = clone(record, true);
|
|
187
|
-
data.record.menuType = data.record.menuType.toString();
|
|
188
|
-
data.record.dispalyCode = record.permissionCode;
|
|
189
|
-
};
|
|
190
|
-
|
|
191
|
-
const onClose = (type?) => {
|
|
192
|
-
type === 'submit' && xgrid.value.getInstance().reloadTreeExpand(row);
|
|
193
|
-
data.record = {};
|
|
194
|
-
data.showDrawer = false;
|
|
195
|
-
data.showAuthority = false;
|
|
196
|
-
};
|
|
197
|
-
</script>
|
|
1
|
+
<template>
|
|
2
|
+
<div class="page-content">
|
|
3
|
+
<ut-grid
|
|
4
|
+
ref="xgrid"
|
|
5
|
+
:tree-config="{
|
|
6
|
+
childrenField: 'children',
|
|
7
|
+
lazy: true,
|
|
8
|
+
hasChild: 'hasChildren',
|
|
9
|
+
loadMethod: loadChildrenMethod,
|
|
10
|
+
iconOpen: 'ri-checkbox-indeterminate-line ri-lg',
|
|
11
|
+
iconClose: 'ri-add-box-line ri-lg'
|
|
12
|
+
}"
|
|
13
|
+
:columns="columns"
|
|
14
|
+
:url="url"
|
|
15
|
+
:stripe="false"
|
|
16
|
+
mode="form"
|
|
17
|
+
@toolbarButtonClick="handleToolClick"
|
|
18
|
+
/>
|
|
19
|
+
<MenuInfo
|
|
20
|
+
:show="data.showDrawer"
|
|
21
|
+
:record="data.record"
|
|
22
|
+
:data-status="data.dataStatus"
|
|
23
|
+
@close="onClose"
|
|
24
|
+
/>
|
|
25
|
+
<AuthorityPanel :show="data.showAuthority" :record="data.record" @close="onClose" />
|
|
26
|
+
</div>
|
|
27
|
+
</template>
|
|
28
|
+
|
|
29
|
+
<script lang="tsx">
|
|
30
|
+
export default { name: 'SystemMenu' };
|
|
31
|
+
</script>
|
|
32
|
+
<script setup lang="tsx">
|
|
33
|
+
import { useI18n } from 'vue-i18n';
|
|
34
|
+
import { ref, reactive } from 'vue';
|
|
35
|
+
import MenuInfo from './menuInfo.vue';
|
|
36
|
+
import AuthorityPanel from './AuthorityPanel.vue';
|
|
37
|
+
import { clone } from 'xe-utils';
|
|
38
|
+
import to from 'await-to-js';
|
|
39
|
+
import { VxeUI } from 'vxe-pc-ui';
|
|
40
|
+
import { useRender } from '@utogether/utils';
|
|
41
|
+
import { getServiceApi } from '../../../api';
|
|
42
|
+
|
|
43
|
+
const data = reactive<IRecord>({
|
|
44
|
+
record: {},
|
|
45
|
+
dataList: [],
|
|
46
|
+
submitLoading: false,
|
|
47
|
+
showDrawer: false,
|
|
48
|
+
dataStatus: '',
|
|
49
|
+
total: 0,
|
|
50
|
+
listQuery: {
|
|
51
|
+
pageSize: 10,
|
|
52
|
+
pageNum: 1
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
const { t } = useI18n();
|
|
57
|
+
|
|
58
|
+
const renderHook = useRender();
|
|
59
|
+
|
|
60
|
+
const serviceApi = getServiceApi();
|
|
61
|
+
|
|
62
|
+
const xgrid = ref(null);
|
|
63
|
+
|
|
64
|
+
const url = '/uums/menu';
|
|
65
|
+
|
|
66
|
+
let row;
|
|
67
|
+
|
|
68
|
+
// const buttons = [{ code: 'add', status: 'u-cyan', icon: 'plus', auth: 'add' }];
|
|
69
|
+
|
|
70
|
+
const columns = [
|
|
71
|
+
{ type: 'checkbox', width: 50, align: 'center' },
|
|
72
|
+
{ field: 'menuName', width: 180, treeNode: true },
|
|
73
|
+
{ field: 'menuNameEn', width: 140 },
|
|
74
|
+
{ field: 'sort', width: 70 },
|
|
75
|
+
{ field: 'menuCode', width: 140 },
|
|
76
|
+
{ field: 'permissionCode', minWidth: 180 },
|
|
77
|
+
{
|
|
78
|
+
field: 'menuCategory',
|
|
79
|
+
title: 'message.menuType',
|
|
80
|
+
formatter: ['formatDict', 'SU.MENU.TYPE'],
|
|
81
|
+
width: 100
|
|
82
|
+
},
|
|
83
|
+
{ field: 'enabled', width: 80, cellRender: renderHook.renderEnabled(handleUpdate) },
|
|
84
|
+
{
|
|
85
|
+
field: 'operate',
|
|
86
|
+
width: 140,
|
|
87
|
+
fixed: 'right',
|
|
88
|
+
slots: {
|
|
89
|
+
default: ({ row }) => {
|
|
90
|
+
const type = row.menuType;
|
|
91
|
+
const addCmp = (
|
|
92
|
+
<ut-button status="u-cyan" icon="ri-add-fill" content="add" onTap={() => handleAdd(row)} />
|
|
93
|
+
);
|
|
94
|
+
const authCmp = (
|
|
95
|
+
<ut-button icon="ri-lock-fill" content="auth" onTap={() => handleAuthorityPanel(row)} />
|
|
96
|
+
);
|
|
97
|
+
return [
|
|
98
|
+
<>
|
|
99
|
+
{!type ? (
|
|
100
|
+
<>
|
|
101
|
+
<ut-button
|
|
102
|
+
status="success"
|
|
103
|
+
icon="ri-edit-box-line"
|
|
104
|
+
content="edit"
|
|
105
|
+
onTap={() => handleEdit(row)}
|
|
106
|
+
/>
|
|
107
|
+
{['0', '5'].includes(row.menuCategory) ? addCmp : authCmp}
|
|
108
|
+
</>
|
|
109
|
+
) : null}
|
|
110
|
+
</>
|
|
111
|
+
];
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
];
|
|
116
|
+
|
|
117
|
+
// const resetListQuery = () => {
|
|
118
|
+
// data.listQuery.pageSize = 99;
|
|
119
|
+
// data.listQuery.pageNum = 1;
|
|
120
|
+
// getDataList();
|
|
121
|
+
// };
|
|
122
|
+
|
|
123
|
+
// const getDataList = async () => {
|
|
124
|
+
// const res = (await serviceApi('sys/listMenus', data.listQuery)) as IResponseData;
|
|
125
|
+
// data.dataList = res.list;
|
|
126
|
+
// data.total = res.total;
|
|
127
|
+
// };
|
|
128
|
+
|
|
129
|
+
const handleToolClick = ({ code }) => {
|
|
130
|
+
code === 'add' && handleAdd();
|
|
131
|
+
code === 'del' && handleDel();
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
// 异步加载子节点
|
|
135
|
+
const loadChildrenMethod = async ({ row }: any) => {
|
|
136
|
+
const data = (await serviceApi.get(url, { parentId: row.id })) as IResponseData;
|
|
137
|
+
return new Promise(resolve => {
|
|
138
|
+
resolve(data.list);
|
|
139
|
+
});
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
// 新增子类型
|
|
143
|
+
// menuType:保持原有不懂, 0:菜单 1,数据权限
|
|
144
|
+
// 新增menuCategory: 0、根目录 1、菜单 2、内部链接3、外部链接
|
|
145
|
+
const handleAdd = (record?: IRecord) => {
|
|
146
|
+
data.showDrawer = true;
|
|
147
|
+
data.dataStatus = 'add';
|
|
148
|
+
data.record.dispalyCode = record?.permissionCode; // 前缀
|
|
149
|
+
data.record.permissionCode = record?.permissionCode;
|
|
150
|
+
// data.record.menuType = !record || !record.parentId ? '0' : '1';
|
|
151
|
+
data.record.menuType = '0';
|
|
152
|
+
data.record.menuCategory = !record ? '0' : '';
|
|
153
|
+
data.record.parentId = record?.id;
|
|
154
|
+
data.record.hasChildren = record?.hasChildren;
|
|
155
|
+
data.record.children = data.record.children || [];
|
|
156
|
+
console.log(data.record);
|
|
157
|
+
row = record;
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
// 编辑
|
|
161
|
+
const handleEdit = (record: IRecord) => {
|
|
162
|
+
data.showDrawer = true;
|
|
163
|
+
data.dataStatus = 'update';
|
|
164
|
+
data.record = clone(record, true);
|
|
165
|
+
data.record.menuType = data.record.menuType.toString();
|
|
166
|
+
data.record.dispalyCode = record.permissionCode;
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
// 启用/禁用
|
|
170
|
+
async function handleUpdate({ row }) {
|
|
171
|
+
await serviceApi.put(url, [row]);
|
|
172
|
+
xgrid.value.refreshData();
|
|
173
|
+
}
|
|
174
|
+
// 删除
|
|
175
|
+
const handleDel = async () => {
|
|
176
|
+
const type = await VxeUI.modal.confirm(t('message.delRecord'));
|
|
177
|
+
const records = xgrid.value.getInstance().getCheckboxRecords();
|
|
178
|
+
if (type === 'confirm') {
|
|
179
|
+
const [err] = await to(serviceApi.delete(url, records));
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
const handleAuthorityPanel = record => {
|
|
184
|
+
data.showAuthority = true;
|
|
185
|
+
data.dataStatus = 'update';
|
|
186
|
+
data.record = clone(record, true);
|
|
187
|
+
data.record.menuType = data.record.menuType.toString();
|
|
188
|
+
data.record.dispalyCode = record.permissionCode;
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
const onClose = (type?, record?) => {
|
|
192
|
+
type === 'submit' && row && xgrid.value.getInstance().reloadTreeExpand(row || record);
|
|
193
|
+
data.record = {};
|
|
194
|
+
data.showDrawer = false;
|
|
195
|
+
data.showAuthority = false;
|
|
196
|
+
};
|
|
197
|
+
</script>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @Author: wei.li
|
|
3
3
|
* @Date: 2021-11-17 16:44:08
|
|
4
4
|
* @LastEditors: levi7754 levi7754@163.com
|
|
5
|
-
* @LastEditTime: 2025-07-
|
|
5
|
+
* @LastEditTime: 2025-07-17 18:47:22
|
|
6
6
|
* @Description: file content
|
|
7
7
|
-->
|
|
8
8
|
|
|
@@ -242,7 +242,7 @@ const authority = ref(['fetch']);
|
|
|
242
242
|
const url = '/uums/menu';
|
|
243
243
|
|
|
244
244
|
const emit = defineEmits<{
|
|
245
|
-
(e: 'close', type): void;
|
|
245
|
+
(e: 'close', type, data?): void;
|
|
246
246
|
}>();
|
|
247
247
|
|
|
248
248
|
const getPrefixCode = () => {
|
|
@@ -261,6 +261,7 @@ const onSubmit = () => {
|
|
|
261
261
|
xForm.value.validate(async valid => {
|
|
262
262
|
if (!valid) {
|
|
263
263
|
loading.value = true;
|
|
264
|
+
let resData;
|
|
264
265
|
const { record, dataStatus } = props;
|
|
265
266
|
if (dataStatus === 'add') {
|
|
266
267
|
record.permissionCode = `${prefixCode.value}.${record.dispalyCode}`;
|
|
@@ -276,17 +277,18 @@ const onSubmit = () => {
|
|
|
276
277
|
sort: (idx + 1) * 10
|
|
277
278
|
};
|
|
278
279
|
});
|
|
279
|
-
await to(serviceApi.post(url, dataList));
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
280
|
+
const [err, res] = await to(serviceApi.post(url, dataList));
|
|
281
|
+
if (!err) {
|
|
282
|
+
// props.record.children.push(...res);
|
|
283
|
+
resData = res[0];
|
|
284
|
+
}
|
|
283
285
|
}
|
|
284
286
|
loading.value = false;
|
|
285
287
|
} else {
|
|
286
288
|
await to(serviceApi.put(url, [record]));
|
|
287
289
|
loading.value = false;
|
|
288
290
|
}
|
|
289
|
-
handleClose('submit');
|
|
291
|
+
handleClose('submit', resData);
|
|
290
292
|
}
|
|
291
293
|
});
|
|
292
294
|
};
|
|
@@ -307,8 +309,8 @@ const getLovList = code => {
|
|
|
307
309
|
});
|
|
308
310
|
};
|
|
309
311
|
// 抽屉关闭
|
|
310
|
-
function handleClose(type) {
|
|
311
|
-
emit('close', type);
|
|
312
|
+
function handleClose(type, data) {
|
|
313
|
+
emit('close', type, data);
|
|
312
314
|
}
|
|
313
315
|
</script>
|
|
314
316
|
|