@utogether/udp-core 2.0.0-beta.5 → 2.0.0-beta.6

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 (71) hide show
  1. package/dist/{403-y4Id7pky.js → 403-FwkedC35.js} +1 -1
  2. package/dist/{404-DdxstlUr.js → 404-fBOEoTA_.js} +1 -1
  3. package/dist/{500-BpsDn21g.js → 500-iyNwORJV.js} +1 -1
  4. package/dist/{AuthorityInfo-0CnlrZVd.js → AuthorityInfo-BTGUSDZ4.js} +1 -1
  5. package/dist/{AuthorityInfo.vue_vue_type_style_index_0_lang-D5cXM84w.js → AuthorityInfo.vue_vue_type_style_index_0_lang-DSxmqRu8.js} +1 -1
  6. package/dist/{Company-BPAqJfZm.js → Company-ueSjOTse.js} +3 -3
  7. package/dist/{CompanyPanel-CCeM96w4.js → CompanyPanel-CAhzxgMa.js} +1 -1
  8. package/dist/{Department-BsLrIIrS.js → Department-fGiF2ia2.js} +3 -3
  9. package/dist/{DepartmentPanel-B2YqwLmq.js → DepartmentPanel-DW7RJCcR.js} +1 -1
  10. package/dist/{DesignPanel-CVSOCMvU.js → DesignPanel-CAQBm4D4.js} +1 -1
  11. package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-Dte8DQnU.js → DesignPanel.vue_vue_type_style_index_0_lang-5LGPeXPl.js} +2 -2
  12. package/dist/{DictView-CKVpPtFg.js → DictView-CvJgPLm3.js} +10 -10
  13. package/dist/{InvOrganization-BBODO8aK.js → InvOrganization-qlTFGd3Z.js} +1 -1
  14. package/dist/{Org-BYRi0OAt.js → Org-XLreDKod.js} +1 -1
  15. package/dist/{Preview-COI8NwWh.js → Preview-CPbzW7CO.js} +1 -1
  16. package/dist/{ReportDefine-Dbh_8ykf.js → ReportDefine-Cb8Kr-eh.js} +1 -1
  17. package/dist/{ReportDesign-DOeKYL9V.js → ReportDesign-C7NEHxsF.js} +2 -2
  18. package/dist/{ReportQuery-Bb4r9lNR.js → ReportQuery-DRHAlGXP.js} +1 -1
  19. package/dist/{ReportQueryFrom-CavcWtL3.js → ReportQueryFrom-BVzD7HiO.js} +1 -1
  20. package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-tuLRWEK9.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-B_lbUpW7.js} +1 -1
  21. package/dist/{ReportTemplate-C9NzPxM4.js → ReportTemplate-jvKZTiwg.js} +1 -1
  22. package/dist/{Role-Bqt4d9Lz.js → Role-BHHb-iLB.js} +3 -3
  23. package/dist/{RoleAssign-CWcytVz3.js → RoleAssign-BTBTh4BY.js} +3 -3
  24. package/dist/{RolePanel-DlU0aCnL.js → RolePanel-BCi1rex2.js} +1 -1
  25. package/dist/{RolePanel-Di5nsMqt.js → RolePanel-aV6bg80k.js} +1 -1
  26. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-BOq0iJsT.js → RolePanel.vue_vue_type_script_setup_true_lang-BhFR-z17.js} +3 -3
  27. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-hzbUepuW.js → RolePanel.vue_vue_type_script_setup_true_lang-C2b-FgFi.js} +1 -1
  28. package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-Bg3rg4P4.js → ScrollPanel.vue_vue_type_style_index_0_lang-BvNAonbh.js} +1 -1
  29. package/dist/{Staff-DXr2Ka1N.js → Staff-CQqKHfmG.js} +3 -3
  30. package/dist/{StaffInfo-C6lDK0S_.js → StaffInfo-DBgWZZxQ.js} +1 -1
  31. package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-YRJm87-b.js → StaffInfo.vue_vue_type_script_setup_true_lang-DZSUQTor.js} +1 -1
  32. package/dist/{StaffPanel-WNpg0HWl.js → StaffPanel-qhtv83q9.js} +1 -1
  33. package/dist/{StaffPanel.vue_vue_type_script_setup_true_lang-azLpvFRo.js → StaffPanel.vue_vue_type_script_setup_true_lang-B3j8x4MN.js} +2 -2
  34. package/dist/{SysUser-Dph6Qi_a.js → SysUser-D-7c33EB.js} +2 -2
  35. package/dist/{SysUserPanel-Iz024NS_.js → SysUserPanel-t1ZR91oy.js} +1 -1
  36. package/dist/{SysUserPanel.vue_vue_type_script_setup_true_lang-D8GUQHic.js → SysUserPanel.vue_vue_type_script_setup_true_lang-Bz2s1QPZ.js} +1 -1
  37. package/dist/{SystemMenu-6mTYGwbK.js → SystemMenu-DNffJRQo.js} +2 -2
  38. package/dist/{UserInfo-RQ7VgSbk.js → UserInfo-niYGSHmG.js} +1 -1
  39. package/dist/{UserInfo.vue_vue_type_style_index_0_lang-BYp2-i9R.js → UserInfo.vue_vue_type_style_index_0_lang-B8CRjdQG.js} +1 -1
  40. package/dist/{childView-B8L4By2o.js → childView-Dn28g10M.js} +1 -1
  41. package/dist/{childView-nCa8t4tr.js → childView-E2EnbUz2.js} +1 -1
  42. package/dist/{childView.vue_vue_type_style_index_0_lang-Bl1MzDS9.js → childView.vue_vue_type_style_index_0_lang-DFs-YATK.js} +26 -23
  43. package/dist/{childView.vue_vue_type_style_index_0_lang-DDx9z61J.js → childView.vue_vue_type_style_index_0_lang-UzBSJ6wt.js} +1 -1
  44. package/dist/{code-rule-8dQLPHni.js → code-rule-D-RJozWD.js} +1 -1
  45. package/dist/core.es.js +1 -1
  46. package/dist/{cron-task-aDBWT_Uh.js → cron-task-CPuU0Rc2.js} +1 -1
  47. package/dist/{frameView-DM3flfo5.js → frameView-c4xFtvR6.js} +1 -1
  48. package/dist/{index-ClHeZ3q4.js → index-CPKIQXdI.js} +1210 -1201
  49. package/dist/{layout-home-DNPOu6R4.js → layout-home-DrimiAWf.js} +1 -1
  50. package/dist/{layoutView-Ymyja_uK.js → layoutView-DPaKZNx5.js} +1 -1
  51. package/dist/{log-in-DtHf5ZcG.js → log-in-BQiOfnXg.js} +1 -1
  52. package/dist/{log-out-DZ8OkPM6.js → log-out-BvlexfR3.js} +1 -1
  53. package/dist/{login-CoX7TNHE.js → login-0R1puBOn.js} +1 -1
  54. package/dist/{login-log-DJBGJVV0.js → login-log-BEHYT0v0.js} +5 -5
  55. package/dist/{lov-view-BWtIPBNm.js → lov-view-DieM-cvR.js} +2 -2
  56. package/dist/{menuInfo-wG5Zt00s.js → menuInfo-Db7s_jX8.js} +1 -1
  57. package/dist/{menuInfo.vue_vue_type_style_index_0_lang-DiPeALce.js → menuInfo.vue_vue_type_style_index_0_lang-QbKkjhUR.js} +1 -1
  58. package/dist/{pda-app-9b3JC2he.js → pda-app-CCtwSfLe.js} +1 -1
  59. package/dist/{resource-DiHXYgfm.js → resource-rliX23RM.js} +1 -1
  60. package/dist/{su-welcome-COvSPTOW.js → su-welcome-MLhkyOoQ.js} +350 -342
  61. package/dist/{sys-config-Mm50Y0LQ.js → sys-config-Ci6UV7lE.js} +1 -1
  62. package/package.json +1 -1
  63. package/src/components/udp/form-upload/form-upload.vue +496 -492
  64. package/src/components/udp/utils.ts +414 -408
  65. package/src/plugins/i18n/zh.ts +1 -0
  66. package/src/plugins/vxe-table/render.tsx +995 -968
  67. package/src/views/udev/dict/DictView.vue +118 -118
  68. package/src/views/udev/dict/childView.vue +185 -184
  69. package/src/views/uhome/components/home-todo.vue +10 -5
  70. package/src/views/upms/user/login-log.vue +2 -2
  71. package/vite.config.ts +83 -83
@@ -1,118 +1,118 @@
1
- <!--
2
- * @Author: wei.li
3
- * @Date: 2021-12-23 17:33:21
4
- * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2025-12-29 14:23:32
6
- * @Description: 数据字典
7
- -->
8
- <template>
9
- <div>
10
- <ut-grid
11
- ref="xgrid"
12
- :items="formItems"
13
- :columns="columns"
14
- :check-method="checkMethod"
15
- :events="onGridEvents"
16
- url="/upfm/v1/lov"
17
- />
18
- <child-view v-if="shouDrawer" :show="shouDrawer" :record="record" @onClose="handleClose" />
19
- </div>
20
- </template>
21
-
22
- <script lang="tsx">
23
- export default { name: 'DictView' };
24
- </script>
25
- <script setup lang="tsx">
26
- import { ref, nextTick } from 'vue';
27
- import childView from './childView.vue';
28
- import { useRender } from '@utogether/utils';
29
- // import { useRender } from '../../../utils/udp/useRender';
30
-
31
- const xgrid = ref(null);
32
- // const renderOption = useRenderOption();
33
-
34
- const formItems = [
35
- { field: 'dictCode', title: 'message.udp.dictCode' },
36
- { field: 'dictName', title: 'message.udp.dictName' },
37
- { field: 'dictType', title: 'message.udp.dictType', code: 'SU.DICT.TYPE' }
38
- ];
39
-
40
- const renderHook = useRender();
41
- // 列字段
42
- const columns = [
43
- { type: 'checkbox', width: 40, align: 'center' },
44
-
45
- {
46
- field: 'dictCode',
47
- title: 'message.udp.dictCode',
48
- required: true,
49
- editRender: renderHook.renderInput()
50
- },
51
- {
52
- field: 'dictName',
53
- title: 'message.udp.dictName',
54
- required: true,
55
- editRender: renderHook.renderInput()
56
- },
57
- // {
58
- // field: 'userName',
59
- // width: 300,
60
- // editRender: renderHook.renderUpload()
61
- // },
62
- {
63
- field: 'dictType',
64
- title: 'message.udp.dictType',
65
- required: true,
66
- editRender: renderHook.renderDict('SU.DICT.TYPE'),
67
- formatter: ['formatDict', 'SU.DICT.TYPE']
68
- },
69
- { field: 'dictDesc', title: 'message.remark', editRender: renderHook.renderInput() },
70
- {
71
- field: 'enabled',
72
- width: 90,
73
- editRender: renderHook.renderDict({ code: 'SU.ENABLE', defaultValue: '1' }),
74
- formatter: ['formatDict', 'SU.ENABLE']
75
- },
76
- {
77
- field: 'operate',
78
- width: 80,
79
- slots: {
80
- default: ({ row }) => {
81
- if (!row.id) return null;
82
- return [<ut-button content="lov" icon="ri-dice-6-line" onClick={() => hanldeDipose(row)} />];
83
- }
84
- }
85
- }
86
- ];
87
-
88
- const shouDrawer = ref(false);
89
- const record = ref(null);
90
- const hanldeDipose = row => {
91
- nextTick(() => {
92
- shouDrawer.value = true;
93
- record.value = row;
94
- record.value.total = row.children?.length;
95
- });
96
- };
97
- const handleClose = () => {
98
- xgrid.value.refreshData();
99
- shouDrawer.value = false;
100
- };
101
-
102
- const onGridEvents = {
103
- editActived({ row }) {
104
- columns[1].editRender.props.disabled = !!row.id;
105
- }
106
- };
107
-
108
- // function onChange(e) {
109
- // console.log('onChange', e);
110
- // }
111
- // function onFocus(e) {
112
- // console.log('onFocus', e);
113
- // }
114
-
115
- const checkMethod = row => {
116
- return row.dictType !== '0';
117
- };
118
- </script>
1
+ <!--
2
+ * @Author: wei.li
3
+ * @Date: 2021-12-23 17:33:21
4
+ * @LastEditors: levi7754 levi7754@163.com
5
+ * @LastEditTime: 2025-12-29 14:23:32
6
+ * @Description: 数据字典
7
+ -->
8
+ <template>
9
+ <div>
10
+ <ut-grid
11
+ ref="xgrid"
12
+ :items="formItems"
13
+ :columns="columns"
14
+ :check-method="checkMethod"
15
+ :events="onGridEvents"
16
+ url="/upfm/v1/lov"
17
+ />
18
+ <child-view v-if="shouDrawer" :show="shouDrawer" :record="record" @onClose="handleClose" />
19
+ </div>
20
+ </template>
21
+
22
+ <script lang="tsx">
23
+ export default { name: 'DictView' };
24
+ </script>
25
+ <script setup lang="tsx">
26
+ import { ref, nextTick } from 'vue';
27
+ import childView from './childView.vue';
28
+ import { useRender } from '@utogether/utils';
29
+ // import { useRender } from '../../../utils/udp/useRender';
30
+
31
+ const xgrid = ref(null);
32
+ // const renderOption = useRenderOption();
33
+
34
+ const formItems = [
35
+ { field: 'dictCode', title: 'message.udp.dictCode' },
36
+ { field: 'dictName', title: 'message.udp.dictName' },
37
+ { field: 'dictType', title: 'message.udp.dictType', code: 'SU.DICT.TYPE' }
38
+ ];
39
+
40
+ const renderHook = useRender();
41
+ // 列字段
42
+ const columns = [
43
+ { type: 'checkbox', width: 40, align: 'center' },
44
+
45
+ {
46
+ field: 'dictCode',
47
+ title: 'message.udp.dictCode',
48
+ required: true,
49
+ editRender: renderHook.renderInput()
50
+ },
51
+ {
52
+ field: 'dictName',
53
+ title: 'message.udp.dictName',
54
+ required: true,
55
+ editRender: renderHook.renderInput()
56
+ },
57
+ // {
58
+ // field: 'userName',
59
+ // width: 300,
60
+ // editRender: renderHook.renderUpload()
61
+ // },
62
+ {
63
+ field: 'dictType',
64
+ title: 'message.udp.dictType',
65
+ required: true,
66
+ editRender: renderHook.renderDict('SU.DICT.TYPE'),
67
+ formatter: ['formatDict', 'SU.DICT.TYPE']
68
+ },
69
+ { field: 'dictDesc', title: 'message.udp.dictDesc', editRender: renderHook.renderInput() },
70
+ {
71
+ field: 'enabled',
72
+ width: 90,
73
+ editRender: renderHook.renderDict({ code: 'SU.ENABLE', defaultValue: '1' }),
74
+ formatter: ['formatDict', 'SU.ENABLE']
75
+ },
76
+ {
77
+ field: 'operate',
78
+ width: 80,
79
+ slots: {
80
+ default: ({ row }) => {
81
+ if (!row.id) return null;
82
+ return [<ut-button content="lov" icon="ri-dice-6-line" onClick={() => hanldeDipose(row)} />];
83
+ }
84
+ }
85
+ }
86
+ ];
87
+
88
+ const shouDrawer = ref(false);
89
+ const record = ref(null);
90
+ const hanldeDipose = row => {
91
+ nextTick(() => {
92
+ shouDrawer.value = true;
93
+ record.value = row;
94
+ record.value.total = row.children?.length;
95
+ });
96
+ };
97
+ const handleClose = () => {
98
+ xgrid.value.refreshData();
99
+ shouDrawer.value = false;
100
+ };
101
+
102
+ const onGridEvents = {
103
+ editActived({ row }) {
104
+ columns[1].editRender.props.disabled = !!row.id;
105
+ }
106
+ };
107
+
108
+ // function onChange(e) {
109
+ // console.log('onChange', e);
110
+ // }
111
+ // function onFocus(e) {
112
+ // console.log('onFocus', e);
113
+ // }
114
+
115
+ const checkMethod = row => {
116
+ return row.dictType !== '0';
117
+ };
118
+ </script>
@@ -1,184 +1,185 @@
1
- <!--
2
- * @Author: wei.li
3
- * @Date: 2022-07-15 17:02:56
4
- * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2025-12-05 16:49:52
6
- * @Description: file contentu
7
- -->
8
- <template>
9
- <div class="u-dict-config_wrapper">
10
- <vxe-drawer
11
- :model-value="show"
12
- :title="$t('message.title.dictList', { name: record.dictName })"
13
- position="right"
14
- destroy-on-close
15
- width="67%"
16
- @close="handleClose"
17
- >
18
- <ut-grid
19
- ref="xgrid"
20
- :columns="columns"
21
- :height="height"
22
- :default-params="{ parentId: record.id }"
23
- :buttons="[{ code: 'del', auth: '/' }]"
24
- :tree-config="{ childrenField: 'children', expandAll: true }"
25
- url="/upfm/v1/lov/children"
26
- mode="form"
27
- @buttonClick="onButtonClick"
28
- />
29
- <ut-modal-form
30
- v-if="showModal"
31
- ref="xmodal"
32
- :record="subRecord"
33
- :items="subItems"
34
- width="400"
35
- height="280"
36
- :data-status="modalType"
37
- :title="$t('message.title.dictInfo', { name: record.dictName })"
38
- @close="showModal = false"
39
- @confirm="onConfirm"
40
- />
41
- </vxe-drawer>
42
- </div>
43
- </template>
44
-
45
- <script setup lang="tsx">
46
- import { ref } from 'vue';
47
- import { useI18n } from 'vue-i18n';
48
- import to from 'await-to-js';
49
- import { VxeUI } from 'vxe-pc-ui';
50
- import { successMessage, useRender } from '@utogether/utils';
51
- import { getServiceApi } from '../../../api';
52
- import { useSystemStoreHook } from '../../../store/modules/system';
53
- import { clone } from 'xe-utils';
54
-
55
- interface IProps {
56
- record: IRecord;
57
- show: boolean;
58
- }
59
-
60
- const props = withDefaults(defineProps<IProps>(), {
61
- record: (): IRecord => {
62
- return {};
63
- },
64
- show: false
65
- });
66
- const renderHook = useRender();
67
- const { t } = useI18n();
68
-
69
- const URL = '/upfm/v1/lov';
70
- const showModal = ref(false);
71
- const xgrid = ref(null);
72
- const xmodal = ref(null);
73
- const subRecord = ref<IRecord>({});
74
- const modalType = ref('add');
75
-
76
- const height = window.innerHeight - 70;
77
-
78
- const columns = [
79
- { field: 'dictCode', title: 'message.udp.dictCode', required: true, treeNode: true },
80
- { field: 'dictName', title: 'message.udp.dictName', required: true },
81
- { field: 'dictDesc', title: 'message.remark' },
82
- { field: 'remarks', title: 'message.remark' },
83
- { field: 'enabled', formatter: ['formatDict', 'SU.ENABLE'] },
84
- {
85
- field: 'operate',
86
- title: 'message.operate',
87
- width: 200,
88
- fixed: 'right',
89
- slots: {
90
- default: ({ row }) => {
91
- return [
92
- <>
93
- <ut-button
94
- content="add"
95
- status="warning"
96
- auth="edit"
97
- icon="ri-add-line"
98
- onTap={() => handleAddChild(row)}
99
- />
100
- <ut-button content="edit" status="primary" auth="edit" onTap={() => handleEdit(row)} />
101
- <ut-button content="del" status="danger" auth="del" onTap={() => handleDel(row)} />
102
- </>
103
- ];
104
- }
105
- }
106
- }
107
- ];
108
-
109
- const subItems = [
110
- { field: 'dictCode', title: 'message.udp.dictCode', required: true },
111
- { field: 'dictName', title: 'message.udp.dictName', required: true },
112
- { field: 'dictDesc', title: 'message.remark' },
113
- {
114
- field: 'enabled',
115
- itemRender: renderHook.renderSwitch({ openValue: '1', closeValue: '0', defaultValue: '1' })
116
- }
117
- ];
118
-
119
- const handleAdd = () => {
120
- showModal.value = true;
121
- modalType.value = 'add';
122
- subRecord.value = { enabled: '1', parentId: props.record.id };
123
- };
124
- const handleAddChild = row => {
125
- showModal.value = true;
126
- modalType.value = 'add';
127
- subRecord.value = { enabled: '1', parentId: row.id };
128
- };
129
- const handleDel = async row => {
130
- const type = await VxeUI.modal.confirm(t('message.delRecord'));
131
- if (type === 'confirm') {
132
- await getServiceApi().delete(URL, [row]);
133
- successMessage();
134
- xgrid.value.refreshData();
135
- }
136
- };
137
- const handleEdit = async row => {
138
- showModal.value = true;
139
- modalType.value = 'edit';
140
- subRecord.value = clone(row, true);
141
- console.log({ subRecord });
142
- };
143
-
144
- const onConfirm = async () => {
145
- const query = {
146
- ...subRecord.value,
147
- orgId: useSystemStoreHook().getOrgId,
148
- organizationId: useSystemStoreHook().getOrganizationId
149
- };
150
- xmodal.value.showLoading();
151
- const method = modalType.value === 'add' ? 'post' : 'put';
152
- const [err]: [Error, any] = await to(getServiceApi()[method](URL, [query]));
153
- xmodal.value.hiddenLoading();
154
- if (err) return;
155
- showModal.value = modalType.value !== 'edit';
156
- if (modalType.value === 'add') {
157
- const parentId = subRecord.value.parentId;
158
- subRecord.value = { enabled: '1', parentId };
159
- }
160
- successMessage();
161
- xgrid.value.refreshData();
162
- };
163
-
164
- const onButtonClick = code => {
165
- code === 'add' && handleAdd();
166
- };
167
-
168
- const emit = defineEmits<{
169
- (e: 'onClose'): void;
170
- }>();
171
-
172
- // 抽屉关闭
173
- function handleClose() {
174
- emit('onClose');
175
- }
176
- </script>
177
-
178
- <style lang="scss">
179
- .u-dict-config_wrapper {
180
- .el-drawer__header {
181
- margin-bottom: 0;
182
- }
183
- }
184
- </style>
1
+ <!--
2
+ * @Author: wei.li
3
+ * @Date: 2022-07-15 17:02:56
4
+ * @LastEditors: levi7754 levi7754@163.com
5
+ * @LastEditTime: 2026-01-14 10:21:33
6
+ * @Description: file contentu
7
+ -->
8
+ <template>
9
+ <div class="u-dict-config_wrapper">
10
+ <vxe-drawer
11
+ :model-value="show"
12
+ :title="$t('message.title.dictList', { name: record.dictName })"
13
+ position="right"
14
+ destroy-on-close
15
+ width="67%"
16
+ @close="handleClose"
17
+ >
18
+ <ut-grid
19
+ ref="xgrid"
20
+ :columns="columns"
21
+ :height="height"
22
+ :default-params="{ parentId: record.id }"
23
+ :buttons="[{ code: 'del', auth: '/' }]"
24
+ :tree-config="{ childrenField: 'children', expandAll: true }"
25
+ url="/upfm/v1/lov/children"
26
+ mode="form"
27
+ @buttonClick="onButtonClick"
28
+ />
29
+ <ut-modal-form
30
+ v-if="showModal"
31
+ ref="xmodal"
32
+ :record="subRecord"
33
+ :items="subItems"
34
+ width="400"
35
+ height="320"
36
+ :data-status="modalType"
37
+ :title="$t('message.title.dictInfo', { name: record.dictName })"
38
+ @close="showModal = false"
39
+ @confirm="onConfirm"
40
+ />
41
+ </vxe-drawer>
42
+ </div>
43
+ </template>
44
+
45
+ <script setup lang="tsx">
46
+ import { ref } from 'vue';
47
+ import { useI18n } from 'vue-i18n';
48
+ import to from 'await-to-js';
49
+ import { VxeUI } from 'vxe-pc-ui';
50
+ import { successMessage, useRender } from '@utogether/utils';
51
+ import { getServiceApi } from '../../../api';
52
+ import { useSystemStoreHook } from '../../../store/modules/system';
53
+ import { clone } from 'xe-utils';
54
+
55
+ interface IProps {
56
+ record: IRecord;
57
+ show: boolean;
58
+ }
59
+
60
+ const props = withDefaults(defineProps<IProps>(), {
61
+ record: (): IRecord => {
62
+ return {};
63
+ },
64
+ show: false
65
+ });
66
+ const renderHook = useRender();
67
+ const { t } = useI18n();
68
+
69
+ const URL = '/upfm/v1/lov';
70
+ const showModal = ref(false);
71
+ const xgrid = ref(null);
72
+ const xmodal = ref(null);
73
+ const subRecord = ref<IRecord>({});
74
+ const modalType = ref('add');
75
+
76
+ const height = window.innerHeight - 70;
77
+
78
+ const columns = [
79
+ { field: 'dictCode', title: 'message.udp.dictCode', required: true, treeNode: true },
80
+ { field: 'dictName', title: 'message.udp.dictName', required: true },
81
+ { field: 'dictDesc', title: 'message.udp.dictDesc' },
82
+ { field: 'remarks', title: 'message.remark' },
83
+ { field: 'enabled', formatter: ['formatDict', 'SU.ENABLE'] },
84
+ {
85
+ field: 'operate',
86
+ title: 'message.operate',
87
+ width: 200,
88
+ fixed: 'right',
89
+ slots: {
90
+ default: ({ row }) => {
91
+ return [
92
+ <>
93
+ <ut-button
94
+ content="add"
95
+ status="warning"
96
+ auth="edit"
97
+ icon="ri-add-line"
98
+ onTap={() => handleAddChild(row)}
99
+ />
100
+ <ut-button content="edit" status="primary" auth="edit" onTap={() => handleEdit(row)} />
101
+ <ut-button content="del" status="danger" auth="del" onTap={() => handleDel(row)} />
102
+ </>
103
+ ];
104
+ }
105
+ }
106
+ }
107
+ ];
108
+
109
+ const subItems = [
110
+ { field: 'dictCode', title: 'message.udp.dictCode', required: true },
111
+ { field: 'dictName', title: 'message.udp.dictName', required: true },
112
+ { field: 'dictDesc', title: 'message.udp.dictDesc' },
113
+ { field: 'remarks', title: 'message.remark' },
114
+ {
115
+ field: 'enabled',
116
+ itemRender: renderHook.renderSwitch({ openValue: '1', closeValue: '0', defaultValue: '1' })
117
+ }
118
+ ];
119
+
120
+ const handleAdd = () => {
121
+ showModal.value = true;
122
+ modalType.value = 'add';
123
+ subRecord.value = { enabled: '1', parentId: props.record.id };
124
+ };
125
+ const handleAddChild = row => {
126
+ showModal.value = true;
127
+ modalType.value = 'add';
128
+ subRecord.value = { enabled: '1', parentId: row.id };
129
+ };
130
+ const handleDel = async row => {
131
+ const type = await VxeUI.modal.confirm(t('message.delRecord'));
132
+ if (type === 'confirm') {
133
+ await getServiceApi().delete(URL, [row]);
134
+ successMessage();
135
+ xgrid.value.refreshData();
136
+ }
137
+ };
138
+ const handleEdit = async row => {
139
+ showModal.value = true;
140
+ modalType.value = 'edit';
141
+ subRecord.value = clone(row, true);
142
+ console.log({ subRecord });
143
+ };
144
+
145
+ const onConfirm = async () => {
146
+ const query = {
147
+ ...subRecord.value,
148
+ orgId: useSystemStoreHook().getOrgId,
149
+ organizationId: useSystemStoreHook().getOrganizationId
150
+ };
151
+ xmodal.value.showLoading();
152
+ const method = modalType.value === 'add' ? 'post' : 'put';
153
+ const [err]: [Error, any] = await to(getServiceApi()[method](URL, [query]));
154
+ xmodal.value.hiddenLoading();
155
+ if (err) return;
156
+ showModal.value = modalType.value !== 'edit';
157
+ if (modalType.value === 'add') {
158
+ const parentId = subRecord.value.parentId;
159
+ subRecord.value = { enabled: '1', parentId };
160
+ }
161
+ successMessage();
162
+ xgrid.value.refreshData();
163
+ };
164
+
165
+ const onButtonClick = code => {
166
+ code === 'add' && handleAdd();
167
+ };
168
+
169
+ const emit = defineEmits<{
170
+ (e: 'onClose'): void;
171
+ }>();
172
+
173
+ // 抽屉关闭
174
+ function handleClose() {
175
+ emit('onClose');
176
+ }
177
+ </script>
178
+
179
+ <style lang="scss">
180
+ .u-dict-config_wrapper {
181
+ .el-drawer__header {
182
+ margin-bottom: 0;
183
+ }
184
+ }
185
+ </style>
@@ -2,7 +2,7 @@
2
2
  * @Author: levi7754 levi7754@163.com
3
3
  * @Date: 2025-11-05 18:11:29
4
4
  * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2026-01-06 18:17:25
5
+ * @LastEditTime: 2026-01-08 14:30:52
6
6
  * @FilePath: \udp-crm\packages\udp-crm\src\views\uflow\todo\flow-todo.vue
7
7
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
8
8
  -->
@@ -20,10 +20,12 @@
20
20
  <ut-grid
21
21
  ref="xgrid"
22
22
  :columns="columns"
23
- :editable="false"
24
23
  :data="data.todo"
25
24
  :events="events"
25
+ :editable="false"
26
+ :need-export="false"
26
27
  :proxy-config="{ enabled: false }"
28
+ :toolbar-config="{ enabled: false }"
27
29
  height="360"
28
30
  />
29
31
  </vxe-tab-pane>
@@ -38,10 +40,12 @@
38
40
  <ut-grid
39
41
  ref="ygrid"
40
42
  :columns="columns"
41
- :editable="false"
42
43
  :data="data.finish"
43
44
  :events="events"
45
+ :editable="false"
46
+ :need-export="false"
44
47
  :proxy-config="{ enabled: false }"
48
+ :toolbar-config="{ enabled: false }"
45
49
  height="360"
46
50
  />
47
51
  />
@@ -57,10 +61,11 @@
57
61
  import { useRouter } from 'vue-router';
58
62
  import { ref, onMounted, nextTick } from 'vue';
59
63
 
60
- import { useSystemStoreHook } from '../../../store/modules/system';
64
+ import { cookies } from '@utogether/utils';
61
65
  import { isEmpty } from 'xe-utils';
62
66
  import to from 'await-to-js';
63
67
  import { getServiceApi } from '../../../api';
68
+ import { kLOGINER } from '../../../contant';
64
69
  const router = useRouter();
65
70
 
66
71
  const xgrid = ref(null);
@@ -132,7 +137,7 @@ const getDataList = async (type, searchField) => {
132
137
  const params = {
133
138
  ...data.value[`${activeName.value}Page`],
134
139
  searchField,
135
- userName: useSystemStoreHook().getUserInfo.userName
140
+ userName: cookies.get(kLOGINER)
136
141
  };
137
142
  const [err, res]: any = await to(getServiceApi().post(url + uri, params));
138
143
  if (err) return;