@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.
Files changed (65) hide show
  1. package/dist/{403-Dp617CWX.js → 403-BBQoJwTM.js} +1 -1
  2. package/dist/{404-Cz_Axb6Y.js → 404-BbJPSIWM.js} +1 -1
  3. package/dist/{500-BGCtRNse.js → 500-BtFL9R4M.js} +1 -1
  4. package/dist/{AuthorityInfo-DGGfm7IS.js → AuthorityInfo-DhiwCeLN.js} +1 -1
  5. package/dist/{AuthorityInfo.vue_vue_type_style_index_0_lang-BqccGW7v.js → AuthorityInfo.vue_vue_type_style_index_0_lang-Duyweh89.js} +1 -1
  6. package/dist/{Company-IV3GTnzY.js → Company-CGqmslx-.js} +3 -3
  7. package/dist/{CompanyPanel-qV-_VtoL.js → CompanyPanel-hlDsxD-6.js} +1 -1
  8. package/dist/{Department-B3W-OxW8.js → Department-BZyJtacc.js} +3 -3
  9. package/dist/{DepartmentPanel-Cw3OWxE7.js → DepartmentPanel-D-a_EBFt.js} +1 -1
  10. package/dist/{DesignPanel-BFxR2fHJ.js → DesignPanel-Bl4luWDV.js} +1 -1
  11. package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-DljbeFba.js → DesignPanel.vue_vue_type_style_index_0_lang-I8C3iGvz.js} +2 -2
  12. package/dist/{DictView-C-i7e4hZ.js → DictView-B4a7Hs1X.js} +1 -1
  13. package/dist/{InvOrganization-cfT6riGU.js → InvOrganization-q4T3y8dQ.js} +1 -1
  14. package/dist/{Org-CA7vTDIF.js → Org-BTGTrAVz.js} +1 -1
  15. package/dist/{Preview-BlDMmpdR.js → Preview-pHD84xqI.js} +1 -1
  16. package/dist/{ReportDefine-Cub_85LA.js → ReportDefine-DnnCNQWS.js} +1 -1
  17. package/dist/{ReportDesign-hFhq5UVE.js → ReportDesign-BnI_Q4pg.js} +2 -2
  18. package/dist/{ReportQuery-ChkWEyxT.js → ReportQuery-Dby2MmtM.js} +1 -1
  19. package/dist/{ReportQueryFrom-KVyD_8Dj.js → ReportQueryFrom-Blm1N8P1.js} +1 -1
  20. 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
  21. package/dist/{ReportTemplate-ag9NDvh2.js → ReportTemplate-D65RXRY_.js} +1 -1
  22. package/dist/{Role-_q3lQ8CZ.js → Role-eFZoTpXc.js} +3 -3
  23. package/dist/{RoleAssign-DZb9IRsm.js → RoleAssign-D9-Y3UNz.js} +3 -3
  24. package/dist/{RolePanel-CsLsz-Ds.js → RolePanel-CoUOc3sX.js} +1 -1
  25. package/dist/{RolePanel-BQb1LlhD.js → RolePanel-DlFw6HSf.js} +1 -1
  26. 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
  27. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-cmW7zBLu.js → RolePanel.vue_vue_type_script_setup_true_lang-DKHgNWQP.js} +1 -1
  28. package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-CaFKRwXu.js → ScrollPanel.vue_vue_type_style_index_0_lang-M2FQJwPU.js} +1 -1
  29. package/dist/{Staff-BSf9Ypbk.js → Staff-DFBLCsAd.js} +3 -3
  30. package/dist/{StaffInfo-BNKasyMF.js → StaffInfo-d2CK0oBA.js} +1 -1
  31. package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-DDZ7ukd0.js → StaffInfo.vue_vue_type_script_setup_true_lang-4m8wK9tq.js} +1 -1
  32. package/dist/{StaffPanel-Bpq0WVlH.js → StaffPanel-D6aWLKN3.js} +1 -1
  33. 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
  34. package/dist/{SysUser-FAABuNti.js → SysUser-BdZvYxQH.js} +2 -2
  35. package/dist/{SysUserPanel-PxJeOgHm.js → SysUserPanel-BIVa6LLr.js} +1 -1
  36. package/dist/{SysUserPanel.vue_vue_type_script_setup_true_lang-njefUln5.js → SysUserPanel.vue_vue_type_script_setup_true_lang-BsBKpYR7.js} +1 -1
  37. package/dist/{SystemMenu-C-7NAGon.js → SystemMenu-C-5VKlHK.js} +16 -16
  38. package/dist/{UserInfo-ClXKtyGo.js → UserInfo-DqXCRZts.js} +1 -1
  39. package/dist/{UserInfo.vue_vue_type_style_index_0_lang-8N7P4Hl7.js → UserInfo.vue_vue_type_style_index_0_lang-N3TwfpPx.js} +1 -1
  40. package/dist/{childView-C_HmDQNd.js → childView-B2lSsqS3.js} +1 -1
  41. package/dist/{childView-uUlBcTza.js → childView-DRUNqgjI.js} +1 -1
  42. package/dist/{childView.vue_vue_type_style_index_0_lang-y0sDvYx5.js → childView.vue_vue_type_style_index_0_lang-B9XBDDU_.js} +1 -1
  43. package/dist/{childView.vue_vue_type_style_index_0_lang-Ckjmw6wJ.js → childView.vue_vue_type_style_index_0_lang-oGriyFTv.js} +1 -1
  44. package/dist/{code-rule-AgCVDKFy.js → code-rule-DZC9T6cl.js} +1 -1
  45. package/dist/core.es.js +1 -1
  46. package/dist/{cron-task-C6FgQxTi.js → cron-task-BJwPeA5F.js} +1 -1
  47. package/dist/{frameView-BDgISK7N.js → frameView-C6wkvok-.js} +1 -1
  48. package/dist/index-DZc3qRTx.js +2650 -0
  49. package/dist/{layoutView-yb3DV2DQ.js → layoutView-CeJBpZb_.js} +2 -2
  50. package/dist/{login-RRpljbkm.js → login-BOxwzwdB.js} +2 -2
  51. package/dist/{lov-view-C9-rjzZR.js → lov-view-DRF-99U4.js} +2 -2
  52. package/dist/{menuInfo-CzPQyFhp.js → menuInfo-3Sjvs9nM.js} +1 -1
  53. package/dist/{menuInfo.vue_vue_type_style_index_0_lang-BumXunCg.js → menuInfo.vue_vue_type_style_index_0_lang-DrQ560nm.js} +91 -90
  54. package/dist/{pda-app-Dvy3U-b6.js → pda-app-B9tn7jdv.js} +1 -1
  55. package/dist/{resource-Fy0lFkSV.js → resource-BqnxbQNe.js} +1 -1
  56. package/dist/{su-welcome-DYvSCUST.js → su-welcome-VwifUK_O.js} +1 -1
  57. package/dist/{sys-config-DJ1vNQTy.js → sys-config-C0-gSBFO.js} +1 -1
  58. package/dist/{utogether-CjmJiHoE.js → utogether-Di1byIum.js} +1 -1
  59. package/package.json +18 -18
  60. package/src/components/udp/form-upload.vue +71 -20
  61. package/src/main.ts +109 -109
  62. package/src/plugins/vxe-table/index.ts +53 -46
  63. package/src/views/system/menu/SystemMenu.vue +197 -197
  64. package/src/views/system/menu/menuInfo.vue +11 -9
  65. 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-16 16:45:56
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
- // if (!err && record.children?.length) {
281
- // // props.record.children.push(...res);
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