@utogether/udp-core 1.0.1-beta.6 → 1.0.1-beta.7

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 (81) hide show
  1. package/dist/{403-Co4hnzlW.js → 403-BQZ5OAKL.js} +1 -1
  2. package/dist/{404-BsseeBQQ.js → 404-H55ex36i.js} +1 -1
  3. package/dist/{500-DtKz7MA4.js → 500-bbrspTnK.js} +1 -1
  4. package/dist/{AuthorityInfo-iWYEWOmC.js → AuthorityInfo-BWni4UPQ.js} +1 -1
  5. package/dist/AuthorityInfo.vue_vue_type_style_index_0_lang-7WtOL6Hs.js +100 -0
  6. package/dist/{Company-CK8Zkcv3.js → Company-CuebFrQ0.js} +3 -3
  7. package/dist/{CompanyPanel-DL4UrYYG.js → CompanyPanel-DxPdJs6x.js} +1 -1
  8. package/dist/{Department-BPHn8to4.js → Department-D2a6Juur.js} +3 -3
  9. package/dist/{DepartmentPanel-Bqraa_NB.js → DepartmentPanel-C_s2R9yl.js} +1 -1
  10. package/dist/{DesignPanel-CFOIOZme.js → DesignPanel-CexZj3HF.js} +1 -1
  11. package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-H0FNG35Z.js → DesignPanel.vue_vue_type_style_index_0_lang-DfmysqwB.js} +19 -19
  12. package/dist/{DictView-CaD1yHQS.js → DictView-C0GS72rG.js} +19 -18
  13. package/dist/{InvOrganization-CoO0_wsY.js → InvOrganization-a1tQ2CEH.js} +1 -1
  14. package/dist/{Org-BU3oaFx3.js → Org-DifvzLLy.js} +1 -1
  15. package/dist/{Preview-B-K_bxDG.js → Preview-BOv5j9i6.js} +1 -1
  16. package/dist/{ReportDefine-DElbukSL.js → ReportDefine-Dli1Q0TB.js} +1 -1
  17. package/dist/{ReportDesign-DvUHOKDK.js → ReportDesign-zSWkcL_O.js} +26 -26
  18. package/dist/{ReportQuery-BcSYRNT3.js → ReportQuery-D5r3bvFc.js} +1 -1
  19. package/dist/{ReportQueryFrom-BGEA4Pqk.js → ReportQueryFrom-DiostHrX.js} +1 -1
  20. package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-B-KEPnfY.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-Cr2eKMmr.js} +1 -1
  21. package/dist/{ReportTemplate-DnPtEoxn.js → ReportTemplate-CYy4cZHQ.js} +1 -1
  22. package/dist/{Role-CMKkWZil.js → Role-BFQFxfQS.js} +6 -6
  23. package/dist/{RoleAssign-BToNzG9a.js → RoleAssign-BIdWSLTR.js} +3 -3
  24. package/dist/{RolePanel-BikZ-D2u.js → RolePanel-C7ybSknr.js} +1 -1
  25. package/dist/{RolePanel-BNqd7-M6.js → RolePanel-KC-UgmtF.js} +1 -1
  26. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-C91CJO4e.js +132 -0
  27. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-Nngq860f.js → RolePanel.vue_vue_type_script_setup_true_lang-C_ZsMf1f.js} +44 -38
  28. package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-BDRDD2FX.js → ScrollPanel.vue_vue_type_style_index_0_lang-botBBgto.js} +1 -1
  29. package/dist/{Staff-DBFATgM_.js → Staff-CY0DLsTN.js} +3 -3
  30. package/dist/{StaffInfo-CrfwZcEL.js → StaffInfo-DA7p265h.js} +1 -1
  31. package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-CE3_NJF_.js → StaffInfo.vue_vue_type_script_setup_true_lang-f29A44gS.js} +1 -1
  32. package/dist/{StaffPanel-D54Rl_Bg.js → StaffPanel-DYP-mMp9.js} +1 -1
  33. package/dist/{StaffPanel.vue_vue_type_script_setup_true_lang-B8wtuSZD.js → StaffPanel.vue_vue_type_script_setup_true_lang-C0YAG2xV.js} +2 -2
  34. package/dist/{SysUser-CsuovBei.js → SysUser-FqS3Ctne.js} +2 -2
  35. package/dist/{SysUserPanel-DNUwWEVp.js → SysUserPanel-C_t6F99T.js} +1 -1
  36. package/dist/{SysUserPanel.vue_vue_type_script_setup_true_lang-CY6mhBV0.js → SysUserPanel.vue_vue_type_script_setup_true_lang-CKZjy0OF.js} +96 -92
  37. package/dist/{SystemMenu-oLmwvaqT.js → SystemMenu-ChFrMzRg.js} +2 -2
  38. package/dist/{UserInfo-LyrDwBG1.js → UserInfo-I36LAXVj.js} +1 -1
  39. package/dist/{UserInfo.vue_vue_type_style_index_0_lang-vinrRyOG.js → UserInfo.vue_vue_type_style_index_0_lang-BGY-LYeL.js} +30 -28
  40. package/dist/{childView-DGKp87fT.js → childView-CYpuOzRx.js} +1 -1
  41. package/dist/{childView-SmYl4G6c.js → childView-Csnlaqfs.js} +1 -1
  42. package/dist/{childView.vue_vue_type_style_index_0_lang-DU-Uun5d.js → childView.vue_vue_type_style_index_0_lang-B8EnA03l.js} +1 -1
  43. package/dist/{childView.vue_vue_type_style_index_0_lang-wVoPvyRY.js → childView.vue_vue_type_style_index_0_lang-DNVlDM_a.js} +1 -1
  44. package/dist/{code-rule-CfbGjmOs.js → code-rule-DHBSC5Qp.js} +1 -1
  45. package/dist/core.es.js +1 -1
  46. package/dist/{cron-task-DMfwGfms.js → cron-task-CiI1MFla.js} +1 -1
  47. package/dist/{frameView-D-hu_pqQ.js → frameView-ZWKlbz9p.js} +1 -1
  48. package/dist/index-COBMRlmJ.js +5379 -0
  49. package/dist/{layoutView-D3SikBPr.js → layoutView-5OsbpP0u.js} +2 -2
  50. package/dist/{login-CQ1yBBdY.js → login-C55sa9gN.js} +2 -2
  51. package/dist/{lov-view-CSobDBH7.js → lov-view-DFfaUQ5m.js} +2 -2
  52. package/dist/{menuInfo-mFuM30f1.js → menuInfo-CZdLtLjN.js} +1 -1
  53. package/dist/{menuInfo.vue_vue_type_style_index_0_lang-BsIPzYg0.js → menuInfo.vue_vue_type_style_index_0_lang-DgG0aHRy.js} +1 -1
  54. package/dist/{pda-app-CIGFsvrX.js → pda-app-fLe8mrx-.js} +201 -189
  55. package/dist/{resource-mbd4LPi-.js → resource-ohWKO6Fh.js} +1 -1
  56. package/dist/{su-welcome-DruLsVvu.js → su-welcome-_UZTfrXX.js} +1 -1
  57. package/dist/{sys-config-TXb5cJM4.js → sys-config-DVuBsK7p.js} +1 -1
  58. package/dist/udp-core.css +1 -1
  59. package/dist/{utogether-Cv0UXnEX.js → utogether-CxobZqGL.js} +1 -1
  60. package/package.json +1 -1
  61. package/src/components/udp/index.ts +2 -2
  62. package/src/components/udp/modal-grid.vue +288 -297
  63. package/src/components/udp/utils.ts +4 -11
  64. package/src/main.ts +10 -2
  65. package/src/plugins/i18n/zh.ts +7 -1
  66. package/src/plugins/vxe-table/index.ts +2 -2
  67. package/src/plugins/vxe-table/render.tsx +90 -15
  68. package/src/views/system/role/AuthorityInfo.vue +19 -15
  69. package/src/views/system/role/Role.vue +1 -5
  70. package/src/views/system/role/RolePanel.vue +11 -2
  71. package/src/views/system/role/UserInfo.vue +5 -3
  72. package/src/views/system/role-assign/RolePanel.vue +139 -136
  73. package/src/views/system/sysUser/SysUserPanel.vue +28 -32
  74. package/src/views/uapp/pda/pda-app.vue +36 -11
  75. package/src/views/udev/dict/DictView.vue +6 -1
  76. package/src/views/udev/dict/childView.vue +1 -6
  77. package/src/views/urpt/design/DesignPanel.vue +10 -33
  78. package/src/views/urpt/design/ReportDesign.vue +7 -11
  79. package/dist/AuthorityInfo.vue_vue_type_style_index_0_lang-BWp7PKyH.js +0 -102
  80. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-DYP3u1Nv.js +0 -126
  81. package/dist/index-ADANSV-q.js +0 -4278
@@ -1,136 +1,139 @@
1
- <template>
2
- <div v-spinning="data.loading" class="page-content">
3
- <ut-grid
4
- ref="xgrid"
5
- :items="formItems"
6
- :columns="gridCol"
7
- :default-params="data.fetchExtParam"
8
- :buttons="buttons"
9
- :auto-load="false"
10
- :url="url"
11
- mode="form"
12
- @buttonClick="onButtonClick"
13
- />
14
- <ut-modal-grid
15
- v-if="data.showModalView"
16
- ref="xmodal"
17
- :items="formItems"
18
- :columns="columns"
19
- :show-footer="true"
20
- :editable="false"
21
- url="/uums/role"
22
- width="60%"
23
- @close="data.showModalView = false"
24
- @confirm="onConfirm"
25
- />
26
- </div>
27
- </template>
28
-
29
- <script setup lang="tsx">
30
- import { useI18n } from 'vue-i18n';
31
- import { ref, reactive, watch, inject, nextTick } from 'vue';
32
- import { clone } from 'xe-utils';
33
- import { VxeUI } from 'vxe-pc-ui';
34
- import to from 'await-to-js';
35
- import { successMessage } from '@utogether/utils';
36
- import { getServiceApi } from '../../../api';
37
-
38
- const data = reactive<IRecord>({
39
- record: {},
40
- loading: false,
41
- showModalView: false
42
- });
43
- const { t } = useI18n();
44
-
45
- const xgrid = ref(null);
46
- const xmodal = ref(null);
47
- const active: IRecord = inject('active');
48
-
49
- const url = '/uums/orgRole';
50
- watch(
51
- () => active.value,
52
- () => {
53
- if (!active?.value.id) return;
54
- data.fetchExtParam = { orgId: active?.value.id };
55
- nextTick(() => {
56
- xgrid.value.refreshData();
57
- });
58
- }
59
- );
60
-
61
- const buttons = [{ code: 'del', auth: '/' }];
62
-
63
- const formItems = [
64
- { field: 'roleName', title: 'message.udp.roleName' },
65
- { field: 'roleCode', title: 'message.udp.roleCode' }
66
- ];
67
-
68
- const columns = [
69
- { type: 'checkbox', width: 40 },
70
- { field: 'roleCode', title: 'message.udp.roleCode' },
71
- { field: 'roleName', title: 'message.udp.roleName' },
72
- { field: 'roleDesc', title: 'message.udp.roleDesc' },
73
- { field: 'enabled', width: 100, formatter: ['formatDict', 'SU.ENABLE'] }
74
- ];
75
-
76
- const gridCol: any[] = clone(columns, true);
77
- gridCol.push({
78
- field: 'operate',
79
- width: 80,
80
- fixed: 'right',
81
- slots: {
82
- default: ({ row }) => {
83
- return [
84
- <ut-button
85
- icon="ri-delete-bin-5-fill"
86
- content="del"
87
- status="danger"
88
- auth="del"
89
- onTap={() => handleDel(row)}
90
- />
91
- ];
92
- }
93
- }
94
- });
95
-
96
- // 新增
97
- const handleAdd = () => {
98
- data.record = {};
99
- data.record.orgId = active.value.id;
100
- data.showModalView = true;
101
- };
102
- // 删除
103
- const handleDel = async row => {
104
- const type = await VxeUI.modal.confirm(t('message.tip.del'));
105
- if (type === 'confirm') {
106
- const param = { orgId: active.value.id, roleId: row.id };
107
- data.loading = true;
108
- const [err] = await to(getServiceApi().delete(url, param));
109
- if (!err) {
110
- successMessage(t('message.operateSuccess'));
111
- }
112
- xgrid.value.refreshData();
113
- data.loading = false;
114
- }
115
- };
116
- const onConfirm = async records => {
117
- const orgRoleList = [];
118
- records.forEach(m => {
119
- m.orgId = active.value.id;
120
- m.roleId = m.id;
121
- orgRoleList.push(m);
122
- });
123
- const param = { orgRoleList };
124
- xmodal.value.showLoading();
125
- const [err] = await to(getServiceApi().post(url, param));
126
- if (!err) {
127
- successMessage();
128
- xgrid.value.refreshData();
129
- data.showModalView = false;
130
- }
131
- };
132
-
133
- const onButtonClick = code => {
134
- code === 'add' && handleAdd();
135
- };
136
- </script>
1
+ <template>
2
+ <div v-spinning="data.loading" class="page-content">
3
+ <ut-grid
4
+ ref="xgrid"
5
+ :items="formItems"
6
+ :columns="gridCol"
7
+ :default-params="data.fetchExtParam"
8
+ :default-value="data.fetchExtParam"
9
+ :buttons="buttons"
10
+ :auto-load="false"
11
+ :url="url"
12
+ :check-method="checkMethod"
13
+ mode="form"
14
+ @buttonClick="onButtonClick"
15
+ />
16
+ <ut-modal-grid
17
+ v-if="data.showModalView"
18
+ ref="xmodal"
19
+ :items="formItems"
20
+ :columns="columns"
21
+ :show-footer="true"
22
+ :editable="false"
23
+ :title="$t('message.udp.roleList')"
24
+ url="/uums/role"
25
+ width="60%"
26
+ height="75%"
27
+ @close="data.showModalView = false"
28
+ @confirm="onConfirm"
29
+ />
30
+ </div>
31
+ </template>
32
+
33
+ <script setup lang="tsx">
34
+ import { useI18n } from 'vue-i18n';
35
+ import { ref, reactive, watch, inject, nextTick } from 'vue';
36
+ import { clone } from 'xe-utils';
37
+ import { VxeUI } from 'vxe-pc-ui';
38
+ import to from 'await-to-js';
39
+ import { successMessage } from '@utogether/utils';
40
+ import { getServiceApi } from '../../../api';
41
+
42
+ const data = reactive<IRecord>({
43
+ record: {},
44
+ loading: false,
45
+ showModalView: false
46
+ });
47
+ const { t } = useI18n();
48
+
49
+ const xgrid = ref(null);
50
+ const xmodal = ref(null);
51
+ const active: IRecord = inject('active');
52
+
53
+ const url = '/uums/orgRole';
54
+ watch(
55
+ () => active.value,
56
+ () => {
57
+ if (!active?.value.id) return;
58
+ data.fetchExtParam = { orgId: active?.value.id };
59
+ nextTick(() => {
60
+ xgrid.value.refreshData();
61
+ });
62
+ }
63
+ );
64
+
65
+ const buttons = [{ code: 'del', auth: '/' }];
66
+
67
+ const formItems = [
68
+ { field: 'roleName', title: 'message.udp.roleName', span: 9 },
69
+ { field: 'roleCode', title: 'message.udp.roleCode', span: 9 }
70
+ ];
71
+
72
+ const columns = [
73
+ { type: 'checkbox', width: 40 },
74
+ { field: 'roleCode', title: 'message.udp.roleCode' },
75
+ { field: 'roleName', title: 'message.udp.roleName' },
76
+ { field: 'roleDesc', title: 'message.udp.roleDesc' },
77
+ { field: 'enabled', width: 100, formatter: ['formatDict', 'SU.ENABLE'] }
78
+ ];
79
+
80
+ const gridCol: any[] = clone(columns, true);
81
+ gridCol.push({
82
+ field: 'operate',
83
+ width: 80,
84
+ fixed: 'right',
85
+ slots: {
86
+ default: ({ row }) => {
87
+ if (row.roleCode === 'admin') return null;
88
+ return [
89
+ <ut-button icon="ri-delete-bin-5-fill" content="del" status="danger" auth="del" onTap={() => handleDel(row)} />
90
+ ];
91
+ }
92
+ }
93
+ });
94
+
95
+ // 新增
96
+ const handleAdd = () => {
97
+ data.record = {};
98
+ data.record.orgId = active.value.id;
99
+ data.showModalView = true;
100
+ };
101
+ // 删除
102
+ const handleDel = async row => {
103
+ const type = await VxeUI.modal.confirm(t('message.tip.del'));
104
+ if (type === 'confirm') {
105
+ const param = { orgId: active.value.id, roleId: row.id };
106
+ data.loading = true;
107
+ const [err] = await to(getServiceApi().delete(url, param));
108
+ if (!err) {
109
+ successMessage(t('message.operateSuccess'));
110
+ }
111
+ xgrid.value.refreshData();
112
+ data.loading = false;
113
+ }
114
+ };
115
+ const onConfirm = async records => {
116
+ const orgRoleList = [];
117
+ records.forEach(m => {
118
+ m.orgId = active.value.id;
119
+ m.roleId = m.id;
120
+ orgRoleList.push(m);
121
+ });
122
+ const param = { orgRoleList };
123
+ xmodal.value.showLoading();
124
+ const [err] = await to(getServiceApi().post(url, param));
125
+ if (!err) {
126
+ successMessage();
127
+ xgrid.value.refreshData();
128
+ data.showModalView = false;
129
+ }
130
+ };
131
+
132
+ const checkMethod = row => {
133
+ return row.roleCode !== 'admin';
134
+ };
135
+
136
+ const onButtonClick = code => {
137
+ code === 'add' && handleAdd();
138
+ };
139
+ </script>
@@ -17,12 +17,7 @@
17
17
  <vxe-form-item :title="$t('message.unitName')" field="unitId" span="24">
18
18
  <template #default="{ data }">
19
19
  <vxe-select v-model="data.unitId">
20
- <vxe-option
21
- v-for="unit in treeList"
22
- :key="unit.id"
23
- :value="unit.id"
24
- :label="unit.unitName"
25
- />
20
+ <vxe-option v-for="unit in treeList" :key="unit.id" :value="unit.id" :label="unit.unitName" />
26
21
  </vxe-select>
27
22
  </template>
28
23
  </vxe-form-item>
@@ -32,12 +27,7 @@
32
27
  field="userName"
33
28
  span="24"
34
29
  />
35
- <vxe-form-item
36
- :title="$t('message.userName')"
37
- field="name"
38
- span="24"
39
- :item-render="{ name: 'input' }"
40
- />
30
+ <vxe-form-item :title="$t('message.userName')" field="name" span="24" :item-render="{ name: 'input' }" />
41
31
  <vxe-form-item
42
32
  v-if="data.dataStatus === 'add'"
43
33
  :title="$t('message.userPwd')"
@@ -55,7 +45,7 @@
55
45
  </template>
56
46
  </vxe-modal>
57
47
  <!-- 用户角色 -->
58
- <vxe-modal v-model="data.showUserRole" :title="$t('message.title.roleInfo')" width="600">
48
+ <vxe-modal v-model="data.showUserRole" :loading="loading" :title="$t('message.title.roleInfo')" width="600">
59
49
  <template #default>
60
50
  <vxe-table height="300" :data="data.roleList" border>
61
51
  <vxe-column type="seq" width="60" />
@@ -64,13 +54,20 @@
64
54
  </vxe-table>
65
55
  </template>
66
56
  </vxe-modal>
67
- <vxe-modal v-model="data.showAuth" :title="$t('message.title.authority')" height="300" width="360">
57
+
58
+ <vxe-modal
59
+ v-model="data.showAuth"
60
+ :loading="loading"
61
+ :title="$t('message.title.authority', { role: data.record.name || '88888' })"
62
+ height="620"
63
+ width="560"
64
+ >
68
65
  <template #default>
69
66
  <el-tree-v2
70
67
  ref="xTree"
71
68
  :data="data.roleList"
72
69
  :props="{ children: 'children', label: 'menuName' }"
73
- :height="420"
70
+ :height="560"
74
71
  node-key="id"
75
72
  />
76
73
  </template>
@@ -80,7 +77,7 @@
80
77
 
81
78
  <script setup lang="tsx">
82
79
  import { useI18n } from 'vue-i18n';
83
- import { ref, reactive, inject, nextTick, onMounted } from 'vue';
80
+ import { ref, reactive, inject, onMounted } from 'vue';
84
81
  import to from 'await-to-js';
85
82
  import { useRender, errorMessage, warnMessage, delay } from '@utogether/utils';
86
83
  import { VxeUI, VxeFormPropTypes } from 'vxe-pc-ui';
@@ -131,6 +128,7 @@ const rules: VxeFormPropTypes.Rules = {
131
128
  const renderHook = useRender();
132
129
  const defaultParams = ref({});
133
130
  const treeList: IRecord[] = inject('treeList');
131
+ const loading = ref(false);
134
132
 
135
133
  const url = '/uums/user';
136
134
 
@@ -165,21 +163,12 @@ const columns = [
165
163
  fixed: 'right',
166
164
  slots: {
167
165
  default: ({ row }) => {
166
+ if (!row.id) return null;
168
167
  return [
169
168
  <>
170
169
  <ut-button icon="ri-user-fill" content="role" onTap={() => handleRole(row)} />
171
- <ut-button
172
- icon="ri-lock-fill"
173
- content="auth"
174
- status="success"
175
- onTap={() => handleAuth(row)}
176
- />
177
- <ut-button
178
- icon="ri-lock-fill"
179
- content="passwordReset"
180
- status="warning"
181
- onTap={() => handleResetPwd(row)}
182
- />
170
+ <ut-button icon="ri-lock-fill" content="auth" status="success" onTap={() => handleAuth(row)} />
171
+ <ut-button icon="ri-lock-fill" content="passwordReset" status="warning" onTap={() => handleResetPwd(row)} />
183
172
  </>
184
173
  ];
185
174
  }
@@ -199,11 +188,14 @@ async function handleClick({ row }) {
199
188
  * @return {*}
200
189
  */
201
190
  const handleRole = async (row: any) => {
191
+ data.roleList = [];
192
+ data.showUserRole = true;
193
+ loading.value = true;
202
194
  const serverData = await serviceApi.get(url + '/getUserRole', { userName: row.userName });
195
+ loading.value = false;
203
196
  data.roleList = serverData[0]?.sysRoles;
204
- nextTick(() => {
205
- data.showUserRole = true;
206
- });
197
+ // nextTick(() => {
198
+ // });
207
199
  };
208
200
  /**
209
201
  * @description: 密码重置
@@ -226,11 +218,15 @@ const handleResetPwd = async (row: Object) => {
226
218
  * @return {*}
227
219
  */
228
220
  const handleAuth = async row => {
221
+ data.roleList = [];
222
+ data.showAuth = true;
223
+ loading.value = true;
224
+ data.record = row;
229
225
  const [err, res] = await to(serviceApi.get(url + '/getUserRole', { userName: row.userName }));
226
+ loading.value = false;
230
227
  if (!err) {
231
228
  if (!isEmpty(res)) {
232
229
  data.roleList = res[0]?.sysMenuExts;
233
- data.showAuth = true;
234
230
  } else {
235
231
  warnMessage(t('message.tip.emptyAuth'));
236
232
  }
@@ -2,7 +2,7 @@
2
2
  * @Author: wei.li
3
3
  * @Date: 2021-12-23 11:22:51
4
4
  * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2025-04-29 17:11:13
5
+ * @LastEditTime: 2025-08-11 14:58:55
6
6
  * @Description: 托盘管理
7
7
  -->
8
8
 
@@ -13,10 +13,11 @@
13
13
  v-if="showModalForm"
14
14
  :record="record"
15
15
  :items="items"
16
- :width="360"
17
- :height="340"
16
+ :width="420"
17
+ :height="400"
18
18
  :title="$t('message.title.appAdd')"
19
19
  :url="url"
20
+ class="ut-app-form"
20
21
  data-status="add"
21
22
  @close="showModalForm = false"
22
23
  @confirm="onConfirm"
@@ -56,10 +57,16 @@ const record = ref({});
56
57
  // 列字段
57
58
  const columns = [
58
59
  { type: 'checkbox', width: 45, align: 'center' },
59
- // { field: 'trayTypeCode', width: 110, formatter: ['formatDict', 'SU.TRAY.TYPE'] },
60
- { field: 'appVersion', width: 110 },
61
- { field: 'buildNo', width: 130 },
62
- { field: 'versionInfo', miWidth: 200 },
60
+ { field: 'appVersion', title: 'message.udp.appVersion', width: 110 },
61
+ { field: 'buildNo', title: 'message.udp.buildNo', width: 130 },
62
+ {
63
+ field: 'isForceUpdate',
64
+ title: 'message.udp.isForceUpdate',
65
+ width: 130,
66
+ formatter: ({ row }) =>
67
+ row.isForceUpdate === 'Y' ? t('message.udp.forceUpdate') : t('message.udp.freeUpdate')
68
+ },
69
+ { field: 'versionInfo', title: 'message.udp.versionInfo', miWidth: 200 },
63
70
  {
64
71
  field: 'enabled',
65
72
  title: 'message.status',
@@ -139,18 +146,29 @@ const onButtonClick = code => {
139
146
  };
140
147
 
141
148
  const items = [
142
- { field: 'appVersion', title: 'mesage.udp.appVersion', required: true },
143
- { field: 'buildNo', title: 'mesage.udp.buildNo', required: true },
149
+ { field: 'appVersion', title: 'message.udp.appVersion', required: true },
150
+ { field: 'buildNo', title: 'message.udp.buildNo', required: true },
151
+ {
152
+ field: 'isForceUpdate',
153
+ title: 'message.udp.isForceUpdate',
154
+ required: true,
155
+ itemRender: renderHook.renderSwitch({
156
+ openLabel: t('message.udp.forceUpdate'),
157
+ closeLabel: t('message.udp.freeUpdate'),
158
+ openValue: 'Y',
159
+ closeValue: 'N'
160
+ })
161
+ },
144
162
  {
145
163
  field: 'versionInfo',
146
- title: 'mesage.udp.versionInfo',
164
+ title: 'message.udp.versionInfo',
147
165
  required: true,
148
166
  itemRender: renderHook.renderTextarea()
149
167
  },
150
168
  {
151
169
  field: 'downloadUrl',
152
170
  required: false,
153
- title: 'mesage.udp.downloadUrl',
171
+ title: 'message.udp.downloadUrl',
154
172
  itemRender: { name: '#upload', props: { baseUrl: baseURL } }
155
173
  }
156
174
  ];
@@ -180,3 +198,10 @@ const onConfirm = () => {
180
198
  xgrid.value.refreshData();
181
199
  };
182
200
  </script>
201
+ <style lang="scss" scoped>
202
+ .ut-app-form {
203
+ ::v-deep(.vxe-switch--label) {
204
+ width: 100%;
205
+ }
206
+ }
207
+ </style>
@@ -11,8 +11,9 @@
11
11
  ref="xgrid"
12
12
  :items="formItems"
13
13
  :columns="columns"
14
- url="/upfm/v1/lov"
14
+ :check-method="checkMethod"
15
15
  :events="onGridEvents"
16
+ url="/upfm/v1/lov"
16
17
  />
17
18
  <child-view v-if="shouDrawer" :show="shouDrawer" :record="record" @onClose="handleClose" />
18
19
  </div>
@@ -103,4 +104,8 @@ const onGridEvents = {
103
104
  // function onFocus(e) {
104
105
  // console.log('onFocus', e);
105
106
  // }
107
+
108
+ const checkMethod = row => {
109
+ return row.dictType !== '0';
110
+ };
106
111
  </script>
@@ -46,12 +46,7 @@
46
46
  <template #default="{ row }">
47
47
  <ut-button status="primary" content="edit" @tap="onEdit(row)" />
48
48
  <ut-button status="warning" content="delete" @tap="onDel(row)" />
49
- <ut-button
50
- status="success"
51
- content="add"
52
- :disabled="row.enabled !== '1'"
53
- @tap="onChildren(row)"
54
- />
49
+ <ut-button status="success" content="add" :disabled="row.enabled !== '1'" @tap="onChildren(row)" />
55
50
  </template>
56
51
  </vxe-table-column>
57
52
  </vxe-table>
@@ -2,7 +2,7 @@
2
2
  * @Author: wei.li
3
3
  * @Date: 2022-03-21 10:36:15
4
4
  * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2025-04-08 15:38:16
5
+ * @LastEditTime: 2025-08-12 09:57:22
6
6
  * @Description: 设计面板
7
7
  -->
8
8
  <template>
@@ -45,21 +45,12 @@
45
45
  <div class="flex justify-center mb-1" style="width: 100%">
46
46
  <vxe-input v-model="paperSize.width" type="number" class="w-40" placeholder="宽(mm)" />
47
47
  <div class="flex items-center justify-center w-8">~</div>
48
- <vxe-input
49
- v-model="paperSize.height"
50
- type="number"
51
- class="w-40"
52
- placeholder="高(mm)"
53
- />
48
+ <vxe-input v-model="paperSize.height" type="number" class="w-40" placeholder="高(mm)" />
54
49
  </div>
55
50
  <ut-button style="width: 100%" content="confirm" @tap="handleCustomSize" />
56
51
  </div>
57
52
  <template #reference>
58
- <ut-button
59
- icon="ri-font-size"
60
- content="customSize"
61
- @click.stop="paperPopVisible = true"
62
- />
53
+ <ut-button icon="ri-font-size" content="customSize" @tap.stop="paperPopVisible = true" />
63
54
  </template>
64
55
  </el-popover>
65
56
  <ut-button
@@ -69,22 +60,9 @@
69
60
  auth="import"
70
61
  @tap="handleShowImport()"
71
62
  />
72
- <vxe-button
73
- icon="ri-indeterminate-circle-line "
74
- class="design-custom-button"
75
- @click="handleScale('N')"
76
- />
77
- <vxe-input
78
- v-model="scale.ration"
79
- disabled
80
- align="center"
81
- style="width: 70px; margin-left: 10px"
82
- />
83
- <vxe-button
84
- icon="ri-add-circle-fill "
85
- class="design-custom-button"
86
- @click="handleScale('Y')"
87
- />
63
+ <vxe-button icon="ri-indeterminate-circle-line " class="design-custom-button" @click="handleScale('N')" />
64
+ <vxe-input v-model="scale.ration" disabled align="center" style="width: 70px; margin-left: 10px" />
65
+ <vxe-button icon="ri-add-circle-fill " class="design-custom-button" @click="handleScale('Y')" />
88
66
  <ut-button
89
67
  status="danger"
90
68
  icon="ri-delete-bin-5-fill"
@@ -99,8 +77,7 @@
99
77
  </div>
100
78
  </div>
101
79
  <div style="font-size: 12px; color: red; text-align: center">
102
- 温馨提示:
103
- 蓝色线(页眉)以下,每张纸打印都会重复打印到页面底部;红色线(页尾)以下,每张纸打印都会重复打印到页面底部
80
+ 温馨提示: 蓝色线(页眉)以下,每张纸打印都会重复打印到页面底部;红色线(页尾)以下,每张纸打印都会重复打印到页面底部
104
81
  </div>
105
82
  </el-space>
106
83
  <el-row>
@@ -216,7 +193,7 @@
216
193
 
217
194
  <script setup lang="ts">
218
195
  import { onMounted, reactive, ref, nextTick, onBeforeUnmount } from 'vue';
219
- import { VXETable } from 'vxe-table';
196
+ import { VxeUI } from 'vxe-pc-ui';
220
197
  import { useGlobal } from '@utogether/utils';
221
198
  import to from 'await-to-js';
222
199
  import { clone } from 'xe-utils';
@@ -320,7 +297,7 @@ const handleScale = max => {
320
297
  * @Desc: 参数设置drawer回调,将参数设置dom添加到弹出层中
321
298
  */
322
299
  const handleClearPaper = async () => {
323
- const type = await VXETable.modal.confirm('重绘操作不可逆,您确定继续吗?', '温馨提示');
300
+ const type = await VxeUI.modal.confirm('重绘操作不可逆,您确定继续吗?', '温馨提示');
324
301
  if (type === 'confirm') {
325
302
  hiprintTemplate.clear();
326
303
  }
@@ -329,7 +306,7 @@ const handleShowImport = async () => {
329
306
  showImportView.value = true;
330
307
  };
331
308
  const handleImportJson = async () => {
332
- const type = await VXETable.modal.confirm('导入后将覆盖原有的模板,您确定继续吗?', '温馨提示');
309
+ const type = await VxeUI.modal.confirm('导入后将覆盖原有的模板,您确定继续吗?', '温馨提示');
333
310
  if (type === 'confirm') {
334
311
  handleSave(handleClose);
335
312
  showImportView.value = false;