@utogether/udp-core 1.0.1-beta.2 → 1.0.1-beta.21

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 (159) hide show
  1. package/build/plugins.ts +8 -1
  2. package/dist/{403-BBQoJwTM.js → 403-B_l9Q9w_.js} +1 -1
  3. package/dist/{404-BbJPSIWM.js → 404-33KZO3Vz.js} +1 -1
  4. package/dist/{500-BtFL9R4M.js → 500-oI74ZkQH.js} +1 -1
  5. package/dist/{AuthorityInfo-DhiwCeLN.js → AuthorityInfo-CNoxrmPS.js} +1 -1
  6. package/dist/AuthorityInfo.vue_vue_type_style_index_0_lang-CO01EWKQ.js +100 -0
  7. package/dist/{Company-CGqmslx-.js → Company-DOCRUvUs.js} +3 -3
  8. package/dist/{CompanyPanel-hlDsxD-6.js → CompanyPanel-Do2JlJ3U.js} +26 -26
  9. package/dist/{Department-BZyJtacc.js → Department-BAlx8Am2.js} +3 -3
  10. package/dist/{DepartmentPanel-D-a_EBFt.js → DepartmentPanel-BvQUkRaM.js} +25 -25
  11. package/dist/{DesignPanel-Bl4luWDV.js → DesignPanel-BMr-c76z.js} +1 -1
  12. package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-I8C3iGvz.js → DesignPanel.vue_vue_type_style_index_0_lang-COERxrYp.js} +28 -30
  13. package/dist/DictView-DkG5lo6m.js +109 -0
  14. package/dist/InvOrganization-D_PuTpPt.js +74 -0
  15. package/dist/Org-CtVfZAjI.js +39 -0
  16. package/dist/{Preview-pHD84xqI.js → Preview-Cuj_akRk.js} +2 -2
  17. package/dist/{ReportDefine-DnnCNQWS.js → ReportDefine-CM2aNEVp.js} +1 -1
  18. package/dist/{ReportDesign-BnI_Q4pg.js → ReportDesign-B1y79NKM.js} +43 -43
  19. package/dist/{ReportQuery-Dby2MmtM.js → ReportQuery-CZEfKCWP.js} +1 -1
  20. package/dist/{ReportQueryFrom-Blm1N8P1.js → ReportQueryFrom-C_cUB8bs.js} +1 -1
  21. package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-CnG_Ybnt.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-DBqJnvTQ.js} +1 -1
  22. package/dist/{ReportTemplate-D65RXRY_.js → ReportTemplate-BprAuCb1.js} +28 -28
  23. package/dist/{Role-eFZoTpXc.js → Role-CAaLVGNy.js} +6 -6
  24. package/dist/{RoleAssign-D9-Y3UNz.js → RoleAssign-DuFp2Ty7.js} +9 -9
  25. package/dist/{RolePanel-DlFw6HSf.js → RolePanel-BRStoO0e.js} +1 -1
  26. package/dist/{RolePanel-CoUOc3sX.js → RolePanel-FnyN7LiS.js} +1 -1
  27. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-CNIA7zdk.js +132 -0
  28. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-Clwk-MHw.js → RolePanel.vue_vue_type_script_setup_true_lang-CS7drFhn.js} +44 -38
  29. package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-M2FQJwPU.js → ScrollPanel.vue_vue_type_style_index_0_lang-CEnqhlSE.js} +23 -23
  30. package/dist/{Staff-DFBLCsAd.js → Staff-D493jHwR.js} +3 -3
  31. package/dist/{StaffInfo-d2CK0oBA.js → StaffInfo-suU_pcyD.js} +1 -1
  32. package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-4m8wK9tq.js → StaffInfo.vue_vue_type_script_setup_true_lang-DV16a2Nz.js} +16 -16
  33. package/dist/{StaffPanel-D6aWLKN3.js → StaffPanel-BbYWu-xZ.js} +1 -1
  34. package/dist/{StaffPanel.vue_vue_type_script_setup_true_lang-C7YT2CVb.js → StaffPanel.vue_vue_type_script_setup_true_lang-CfRIanr5.js} +2 -2
  35. package/dist/{SysUser-BdZvYxQH.js → SysUser-YXOsIVpJ.js} +2 -2
  36. package/dist/{SysUserPanel-BIVa6LLr.js → SysUserPanel-C1tQzih_.js} +1 -1
  37. package/dist/SysUserPanel.vue_vue_type_script_setup_true_lang-BfT40pDr.js +298 -0
  38. package/dist/{SystemMenu-C-5VKlHK.js → SystemMenu-DzKl8RAz.js} +33 -33
  39. package/dist/{UserInfo-DqXCRZts.js → UserInfo-CYeYQNq8.js} +1 -1
  40. package/dist/{UserInfo.vue_vue_type_style_index_0_lang-N3TwfpPx.js → UserInfo.vue_vue_type_style_index_0_lang-DYVdi2Ck.js} +41 -39
  41. package/dist/{childView-B2lSsqS3.js → childView-BNYdfnMx.js} +1 -1
  42. package/dist/{childView-DRUNqgjI.js → childView-C6rHVrT6.js} +1 -1
  43. package/dist/{childView.vue_vue_type_style_index_0_lang-B9XBDDU_.js → childView.vue_vue_type_style_index_0_lang-6o00J0a7.js} +1 -1
  44. package/dist/{childView.vue_vue_type_style_index_0_lang-oGriyFTv.js → childView.vue_vue_type_style_index_0_lang-O_zWFjYY.js} +43 -43
  45. package/dist/{code-rule-DZC9T6cl.js → code-rule-MxcRbYZR.js} +13 -15
  46. package/dist/core.es.js +18 -10
  47. package/dist/{cron-task-BJwPeA5F.js → cron-task-B0yfTtm6.js} +11 -11
  48. package/dist/{frameView-C6wkvok-.js → frameView-DtHY5dLd.js} +1 -1
  49. package/dist/img/l_img.svg +1 -1
  50. package/dist/img/minicolors.png +0 -0
  51. package/dist/img/v_img.svg +1 -1
  52. package/dist/index-BWtOrjW2.js +4603 -0
  53. package/dist/{layoutView-CeJBpZb_.js → layoutView-D0Q7EG0u.js} +1564 -1559
  54. package/dist/{log-in-e7D5Ss1P.js → log-in-CpGqc33f.js} +5 -4
  55. package/dist/{log-out--RRncZhN.js → log-out-D1b4VRMZ.js} +30 -24
  56. package/dist/login-CuO8YgN1.js +249 -0
  57. package/dist/{login-log-CvVnyGi3.js → login-log-BNRXLeMi.js} +4 -3
  58. package/dist/{lov-view-DRF-99U4.js → lov-view-DcRVGqsD.js} +5 -5
  59. package/dist/{menuInfo-3Sjvs9nM.js → menuInfo-ccOqhCC8.js} +1 -1
  60. package/dist/{menuInfo.vue_vue_type_style_index_0_lang-DrQ560nm.js → menuInfo.vue_vue_type_style_index_0_lang-DTBPgTe_.js} +34 -32
  61. package/dist/{pda-app-B9tn7jdv.js → pda-app-D7n4oxyn.js} +202 -188
  62. package/dist/{resource-BqnxbQNe.js → resource-_h2OtsKS.js} +18 -18
  63. package/dist/{su-welcome-VwifUK_O.js → su-welcome-Co6e4akE.js} +118 -120
  64. package/dist/sys-config-C6Es9vZl.js +355 -0
  65. package/dist/udp-core.css +1 -9
  66. package/dist/utogether-MlnyYtNS.js +4 -0
  67. package/index.ts +17 -5
  68. package/package.json +1 -1
  69. package/src/App.vue +2 -7
  70. package/src/api/http.ts +1 -4
  71. package/src/api/index.ts +5 -3
  72. package/src/api/user.ts +2 -2
  73. package/src/components/SuCharts/src/UserInfo.vue +3 -3
  74. package/src/components/SuScrollTree/ScrollPanel.vue +170 -175
  75. package/src/components/udp/form/form.vue +109 -0
  76. package/src/components/udp/grid/index.vue +509 -0
  77. package/src/components/udp/index.ts +4 -4
  78. package/src/components/udp/utils.ts +405 -40
  79. package/src/directives/permission/index.ts +1 -1
  80. package/src/layout/components/lay-navbar/index.vue +9 -7
  81. package/src/layout/components/lay-panel/index.vue +3 -3
  82. package/src/layout/components/lay-search/index.vue +1 -1
  83. package/src/layout/components/lay-select-org/index.vue +4 -9
  84. package/src/layout/components/lay-sidebar/breadCrumb.vue +1 -1
  85. package/src/layout/components/lay-sidebar/horizontal.vue +4 -5
  86. package/src/layout/components/lay-sidebar/mixNav.vue +6 -4
  87. package/src/layout/components/lay-sidebar/sidebar-logo.vue +94 -98
  88. package/src/layout/components/lay-tag/index.vue +596 -625
  89. package/src/layout/hooks/useTag.ts +223 -233
  90. package/src/layout/layoutView.vue +215 -215
  91. package/src/layout/types.ts +3 -2
  92. package/src/main.ts +39 -31
  93. package/src/plugins/i18n/en.ts +26 -13
  94. package/src/plugins/i18n/zh.ts +35 -16
  95. package/src/plugins/vxe-table/index.ts +65 -2
  96. package/src/plugins/vxe-table/render.tsx +945 -817
  97. package/src/router/index.ts +186 -183
  98. package/src/router/modules/remaining.ts +1 -26
  99. package/src/router/utils.ts +393 -377
  100. package/src/store/modules/app.ts +1 -3
  101. package/src/store/modules/multiTags.ts +110 -109
  102. package/src/store/modules/permission.ts +113 -103
  103. package/src/store/modules/system.ts +1 -3
  104. package/src/style/button.scss +10 -3
  105. package/src/style/login.css +1 -1
  106. package/src/style/tailwind.css +1 -68
  107. package/src/style/vxetable.scss +348 -256
  108. package/src/utils/authority/index.ts +1 -1
  109. package/src/utils/index.ts +3 -1
  110. package/src/utils/propTypes.ts +1 -6
  111. package/src/views/login/login-view.vue +6 -20
  112. package/src/views/organization/company/CompanyPanel.vue +2 -2
  113. package/src/views/organization/department/DepartmentPanel.vue +269 -283
  114. package/src/views/organization/inv-org/InvOrganization.vue +23 -9
  115. package/src/views/organization/org/Org.vue +9 -5
  116. package/src/views/system/menu/SystemMenu.vue +183 -197
  117. package/src/views/system/menu/menuInfo.vue +8 -18
  118. package/src/views/system/role/AuthorityInfo.vue +19 -15
  119. package/src/views/system/role/Role.vue +1 -5
  120. package/src/views/system/role/RolePanel.vue +11 -2
  121. package/src/views/system/role/UserInfo.vue +11 -9
  122. package/src/views/system/role-assign/RoleAssign.vue +2 -2
  123. package/src/views/system/role-assign/RolePanel.vue +12 -9
  124. package/src/views/system/sys/sys-config.vue +66 -21
  125. package/src/views/system/sysUser/SysUserPanel.vue +44 -43
  126. package/src/views/uapp/pda/pda-app.vue +48 -16
  127. package/src/views/udev/coderule/code-rule.vue +120 -121
  128. package/src/views/udev/dict/DictView.vue +16 -4
  129. package/src/views/udev/dict/childView.vue +8 -8
  130. package/src/views/ufile/aggregation/File.vue +5 -5
  131. package/src/views/ufile/file/water-mark.vue +14 -14
  132. package/src/views/uhome/components/menu-favorite.vue +314 -331
  133. package/src/views/uhome/su-welcome.vue +3 -3
  134. package/src/views/ulogin/login.vue +19 -12
  135. package/src/views/upms/interface/log-in.vue +100 -106
  136. package/src/views/upms/interface/log-out.vue +2 -8
  137. package/src/views/upms/user/login-log.vue +54 -60
  138. package/src/views/urpt/design/DesignPanel.vue +16 -35
  139. package/src/views/urpt/design/Preview.vue +1 -0
  140. package/src/views/urpt/design/ReportDesign.vue +17 -23
  141. package/src/views/urpt/static-resource/resource.vue +3 -3
  142. package/src/views/urpt/template/ReportTemplate.vue +7 -7
  143. package/types/global.d.ts +4 -9
  144. package/vite.config.ts +6 -2
  145. package/dist/AuthorityInfo.vue_vue_type_style_index_0_lang-Duyweh89.js +0 -102
  146. package/dist/DictView-B4a7Hs1X.js +0 -95
  147. package/dist/InvOrganization-q4T3y8dQ.js +0 -260
  148. package/dist/Org-BTGTrAVz.js +0 -35
  149. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-DKHgNWQP.js +0 -126
  150. package/dist/SysUserPanel.vue_vue_type_script_setup_true_lang-BsBKpYR7.js +0 -288
  151. package/dist/index-DZc3qRTx.js +0 -2650
  152. package/dist/login-BOxwzwdB.js +0 -252
  153. package/dist/sys-config-C0-gSBFO.js +0 -277
  154. package/dist/utogether-Di1byIum.js +0 -182
  155. package/src/components/udp/form-upload.vue +0 -183
  156. package/src/components/udp/modal-form.vue +0 -180
  157. package/src/utils/http/index.ts +0 -297
  158. package/src/utils/http/types.d.ts +0 -46
  159. package/src/utils/udp/useRender.ts +0 -420
@@ -11,6 +11,7 @@
11
11
  ref="xgrid"
12
12
  :items="formItems"
13
13
  :columns="columns"
14
+ :check-method="checkMethod"
14
15
  url="/uums/role"
15
16
  mode="form"
16
17
  @buttonClick="onButtonClick"
@@ -39,7 +40,7 @@
39
40
  :url="url"
40
41
  :method="method"
41
42
  width="400"
42
- height="220"
43
+ height="240"
43
44
  data-status="update"
44
45
  :title="$t('message.title.authEdit')"
45
46
  @close="data.showModalView = false"
@@ -105,7 +106,7 @@ const columns = [
105
106
  // <ut-button content="edit" onTap={() => handleShowChild(row, 'update')} />
106
107
  return [
107
108
  <>
108
- <ut-button content="edit" auth="edit" onTap={() => handleEdit(row)} />
109
+ <ut-button content="edit" auth="edit" disabled={row.roleCode === 'admin'} onTap={() => handleEdit(row)} />
109
110
  <ut-button
110
111
  content="dispatchUser"
111
112
  status="warning"
@@ -174,6 +175,10 @@ const handleDispathUser = record => {
174
175
  };
175
176
  // 启用/禁用
176
177
  async function handleClick({ row }) {
178
+ if (row.roleCode === 'admin') {
179
+ row.enabled = '1';
180
+ return;
181
+ }
177
182
  await getServiceApi().put('/uums/role/singleUpdate', row);
178
183
  xgrid.value.refreshData();
179
184
  }
@@ -183,6 +188,10 @@ const onClose = () => {
183
188
  data.showAuthView = false;
184
189
  data.showUserView = false;
185
190
  };
191
+
192
+ const checkMethod = row => {
193
+ return row.roleCode !== 'admin';
194
+ };
186
195
  // 拷贝当前列表项的数据(字典类型)
187
196
  // const { clipboardRef } = useCopyToClipboard();
188
197
  // const cellDBLClickEvent: VxeTableEvents.CellDblclick = ({ row }) => {
@@ -17,7 +17,9 @@
17
17
  :columns="modalColum"
18
18
  :show-footer="true"
19
19
  :editable="false"
20
+ :title="$t('message.udp.userList')"
20
21
  width="60%"
22
+ height="75%"
21
23
  @close="showModalView = false"
22
24
  @confirm="onConfirm"
23
25
  />
@@ -54,13 +56,13 @@ const emit = defineEmits<{
54
56
  const formItems: IFormItemProps[] = [
55
57
  {
56
58
  field: 'userName',
57
- title: 'message.userCode',
59
+ title: 'message.udp.userCode',
58
60
  span: 8,
59
61
  itemRender: { name: '$input' }
60
62
  },
61
63
  {
62
64
  field: 'name',
63
- title: 'message.userName',
65
+ title: 'message.udp.userName',
64
66
  span: 8,
65
67
  itemRender: { name: '$input' }
66
68
  },
@@ -88,11 +90,11 @@ const columns: ITableColProps[] = [
88
90
  { type: 'checkbox', width: 50, align: 'center' },
89
91
  {
90
92
  field: 'userName',
91
- title: 'message.userCode'
93
+ title: 'message.udp.userCode'
92
94
  },
93
95
  {
94
96
  field: 'name',
95
- title: 'message.userName'
97
+ title: 'message.udp.userName'
96
98
  },
97
99
  {
98
100
  field: 'enabled',
@@ -114,18 +116,18 @@ const buttons = [
114
116
  { code: 'delete', name: 'message.btn.del', status: 'danger', icon: 'ri-delete-bin-5-fill' }
115
117
  ];
116
118
  const modalFormItems = [
117
- { field: 'userName', title: 'message.userCode' },
118
- { field: 'name', title: 'message.userName' }
119
+ { field: 'userName', title: 'message.udp.userCode', span: 9 },
120
+ { field: 'name', title: 'message.udp.userName', span: 9 }
119
121
  ];
120
122
  const modalColum = [
121
123
  { type: 'checkbox', width: 40 },
122
- { field: 'userName', title: 'message.userCode' },
123
- { field: 'name', title: 'message.userName' },
124
+ { field: 'userName', title: 'message.udp.userCode' },
125
+ { field: 'name', title: 'message.udp.userName' },
124
126
  { field: 'enabled', width: 70, formatter: ['formatDict', 'SU.ENABLE'] }
125
127
  ];
126
128
  const xgrid = ref({} as VxeGridInstance);
127
129
  const gridOptions = reactive<VxeGridProps>({
128
- height: 560,
130
+ height: 'auto',
129
131
  border: true,
130
132
  pagerConfig: {},
131
133
  toolbarConfig: { buttons, perfect: true },
@@ -2,7 +2,7 @@
2
2
  * @Author: wei.li
3
3
  * @Date: 2021-11-26 14:37:07
4
4
  * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2024-06-24 20:20:57
5
+ * @LastEditTime: 2025-08-06 17:55:03
6
6
  * @Description: 角色分配业务单元
7
7
  -->
8
8
  <template>
@@ -11,7 +11,7 @@
11
11
  <ScrollPane
12
12
  :title="$t('SuOrg')"
13
13
  :tree-otions="{ children: 'children', label: 'orgName' }"
14
- extParam="{ pageSize: 500 }"
14
+ :default-params="{ pageSize: 500 }"
15
15
  url="/uums/org"
16
16
  />
17
17
  </div>
@@ -5,9 +5,11 @@
5
5
  :items="formItems"
6
6
  :columns="gridCol"
7
7
  :default-params="data.fetchExtParam"
8
+ :default-value="data.fetchExtParam"
8
9
  :buttons="buttons"
9
10
  :auto-load="false"
10
11
  :url="url"
12
+ :check-method="checkMethod"
11
13
  mode="form"
12
14
  @buttonClick="onButtonClick"
13
15
  />
@@ -18,8 +20,10 @@
18
20
  :columns="columns"
19
21
  :show-footer="true"
20
22
  :editable="false"
23
+ :title="$t('message.udp.roleList')"
21
24
  url="/uums/role"
22
25
  width="60%"
26
+ height="75%"
23
27
  @close="data.showModalView = false"
24
28
  @confirm="onConfirm"
25
29
  />
@@ -61,8 +65,8 @@ watch(
61
65
  const buttons = [{ code: 'del', auth: '/' }];
62
66
 
63
67
  const formItems = [
64
- { field: 'roleName', title: 'message.udp.roleName' },
65
- { field: 'roleCode', title: 'message.udp.roleCode' }
68
+ { field: 'roleName', title: 'message.udp.roleName', span: 9 },
69
+ { field: 'roleCode', title: 'message.udp.roleCode', span: 9 }
66
70
  ];
67
71
 
68
72
  const columns = [
@@ -80,14 +84,9 @@ gridCol.push({
80
84
  fixed: 'right',
81
85
  slots: {
82
86
  default: ({ row }) => {
87
+ if (row.roleCode === 'admin') return null;
83
88
  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
- />
89
+ <ut-button icon="ri-delete-bin-5-fill" content="del" status="danger" auth="del" onTap={() => handleDel(row)} />
91
90
  ];
92
91
  }
93
92
  }
@@ -130,6 +129,10 @@ const onConfirm = async records => {
130
129
  }
131
130
  };
132
131
 
132
+ const checkMethod = row => {
133
+ return row.roleCode !== 'admin';
134
+ };
135
+
133
136
  const onButtonClick = code => {
134
137
  code === 'add' && handleAdd();
135
138
  };
@@ -1,20 +1,7 @@
1
1
  <template>
2
- <div v-spinning="loading" class="flex flex-col items-center bg-white u-system-config">
3
- <div class="flex justify-end w-1/2 p-2">
4
- <el-button type="primary" @click="submitForm(xfrom)">
5
- {{ $t('message.btn.confirm') }}
6
- </el-button>
7
- </div>
8
- <div class="flex w-1/2 p-2 overflow-y-auto border border-gray-300 rounded-md">
9
- <el-form
10
- ref="xfrom"
11
- :model="record"
12
- :rules="rules"
13
- label-width="90"
14
- size="small"
15
- status-icon
16
- class="w-full"
17
- >
2
+ <div v-spinning="loading" class="flex flex-col items-center pt-20 bg-white u-system-config">
3
+ <div class="flex w-1/2 p-3 overflow-y-auto border border-gray-300 rounded-md">
4
+ <el-form ref="xfrom" :model="record" :rules="rules" label-width="90" size="small" status-icon class="w-full">
18
5
  <el-form-item :label="$t('message.udp.systemTitle')" prop="title">
19
6
  <el-input v-model="record.title" />
20
7
  </el-form-item>
@@ -33,6 +20,23 @@
33
20
  <el-form-item :label="$t('message.udp.i18nEnabled')" prop="i18nEnabled">
34
21
  <el-switch v-model="record.i18nEnabled" active-value="Y" inactive-value="N" />
35
22
  </el-form-item>
23
+ <el-form-item :label="$t('message.udp.orgTaggle')" prop="orgTaggle">
24
+ <el-switch v-model="record.orgTaggle" active-value="Y" inactive-value="N" />
25
+ </el-form-item>
26
+ <el-form-item
27
+ v-if="['liwei', 'yanhuaijun', 'phr', 'zhonglijun', 'ccl'].includes(cookies.get(kLOGINER))"
28
+ :label="$t('message.udp.techSupport')"
29
+ prop="techSupport"
30
+ >
31
+ <el-switch v-model="record.techSupport" active-value="Y" inactive-value="N" />
32
+ </el-form-item>
33
+ <el-form-item
34
+ v-if="['liwei', 'yanhuaijun', 'phr', 'zhonglijun', 'ccl'].includes(cookies.get(kLOGINER))"
35
+ :label="$t('message.udp.baseColor')"
36
+ prop="baseColor"
37
+ >
38
+ <vxe-color-picker v-model="record.baseColor" :colors="colorList" type="hex" clearable transfer />
39
+ </el-form-item>
36
40
  <el-form-item :label="$t('message.udp.systemLogo')">
37
41
  <el-upload
38
42
  v-model:file-list="record.logo"
@@ -100,6 +104,11 @@
100
104
  </el-form-item>
101
105
  </el-form>
102
106
  </div>
107
+ <div class="flex justify-end w-1/2 p-2">
108
+ <el-button type="primary" @click="submitForm(xfrom)">
109
+ {{ $t('message.btn.confirm') }}
110
+ </el-button>
111
+ </div>
103
112
  </div>
104
113
  </template>
105
114
 
@@ -110,7 +119,7 @@ import { useI18n } from 'vue-i18n';
110
119
  import to from 'await-to-js';
111
120
  import { successMessage, cookies, warnMessage } from '@utogether/utils';
112
121
  import { isArray } from 'xe-utils';
113
- import { kTOKEN } from '../../../contant';
122
+ import { kTOKEN, kLOGINER } from '../../../contant';
114
123
  import { getServiceApi, getBaseURL } from '../../../api';
115
124
 
116
125
  const xfrom = ref<FormInstance>();
@@ -119,7 +128,10 @@ const record = reactive({
119
128
  defaultLanguage: 'zh',
120
129
  title: 'U-DP',
121
130
  ispTitle: 'U-DP',
122
- i18nEnabled: 'Y',
131
+ baseColor: '#FFF',
132
+ i18nEnabled: 'N',
133
+ orgTaggle: 'Y',
134
+ techSupport: 'Y',
123
135
  copyright: '深圳友聚信息技术有限公司',
124
136
  logo: [],
125
137
  backgroundImg: [],
@@ -134,6 +146,39 @@ const baseUrl = ref(getBaseURL());
134
146
  const url = '/upfm/v1/sysConfig';
135
147
  let dataList = [];
136
148
 
149
+ const colorList = [
150
+ '#DC143C',
151
+ '#FF1493',
152
+ '#FF00FF',
153
+ '#9932CC',
154
+ '#6A5ACD',
155
+ '#0000FF',
156
+ '#00008B',
157
+ '#778899',
158
+ '#1E90FF',
159
+ '#00BFFF',
160
+ '#5F9EA0',
161
+ '#00FFFF',
162
+ '#008080',
163
+ '#7FFFAA',
164
+ '#3CB371',
165
+ '#8FBC8F',
166
+ '#008000',
167
+ '#7CFC00',
168
+ '#556B2F',
169
+ '#FFFFE0',
170
+ '#FFFF00',
171
+ '#808000',
172
+ '#EEE8AA',
173
+ '#FFD700',
174
+ '#FFA500',
175
+ '#FF4500',
176
+ '#FA8072',
177
+ '#FF0000',
178
+ '#800000',
179
+ '#C0C0C0'
180
+ ];
181
+
137
182
  const rules = reactive<FormRules>({
138
183
  defaultLanguage: [
139
184
  {
@@ -142,9 +187,7 @@ const rules = reactive<FormRules>({
142
187
  trigger: 'blur'
143
188
  }
144
189
  ],
145
- title: [
146
- { required: true, message: t('message.required') + t('message.udp.systemTitle'), trigger: 'blur' }
147
- ]
190
+ title: [{ required: true, message: t('message.required') + t('message.udp.systemTitle'), trigger: 'blur' }]
148
191
  });
149
192
 
150
193
  const headers = computed(() => {
@@ -266,6 +309,8 @@ onMounted(() => {
266
309
  </script>
267
310
  <style lang="scss">
268
311
  .u-system-config {
312
+ padding-top: 48px;
313
+
269
314
  .el-select,
270
315
  .el-select--small {
271
316
  width: 100%;
@@ -5,7 +5,9 @@
5
5
  :columns="columns"
6
6
  :items="formItems"
7
7
  :url="url"
8
- :default-params="paramExt"
8
+ :auto-load="false"
9
+ :default-params="defaultParams"
10
+ :default-value="defaultParams"
9
11
  :events="onGridEvents"
10
12
  />
11
13
  <!-- 编辑用户信息 -->
@@ -15,12 +17,7 @@
15
17
  <vxe-form-item :title="$t('message.unitName')" field="unitId" span="24">
16
18
  <template #default="{ data }">
17
19
  <vxe-select v-model="data.unitId">
18
- <vxe-option
19
- v-for="unit in treeList"
20
- :key="unit.id"
21
- :value="unit.id"
22
- :label="unit.unitName"
23
- />
20
+ <vxe-option v-for="unit in treeList" :key="unit.id" :value="unit.id" :label="unit.unitName" />
24
21
  </vxe-select>
25
22
  </template>
26
23
  </vxe-form-item>
@@ -30,12 +27,7 @@
30
27
  field="userName"
31
28
  span="24"
32
29
  />
33
- <vxe-form-item
34
- :title="$t('message.userName')"
35
- field="name"
36
- span="24"
37
- :item-render="{ name: 'input' }"
38
- />
30
+ <vxe-form-item :title="$t('message.userName')" field="name" span="24" :item-render="{ name: 'input' }" />
39
31
  <vxe-form-item
40
32
  v-if="data.dataStatus === 'add'"
41
33
  :title="$t('message.userPwd')"
@@ -53,7 +45,7 @@
53
45
  </template>
54
46
  </vxe-modal>
55
47
  <!-- 用户角色 -->
56
- <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">
57
49
  <template #default>
58
50
  <vxe-table height="300" :data="data.roleList" border>
59
51
  <vxe-column type="seq" width="60" />
@@ -62,13 +54,20 @@
62
54
  </vxe-table>
63
55
  </template>
64
56
  </vxe-modal>
65
- <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
+ >
66
65
  <template #default>
67
66
  <el-tree-v2
68
67
  ref="xTree"
69
68
  :data="data.roleList"
70
69
  :props="{ children: 'children', label: 'menuName' }"
71
- :height="420"
70
+ :height="560"
72
71
  node-key="id"
73
72
  />
74
73
  </template>
@@ -78,9 +77,9 @@
78
77
 
79
78
  <script setup lang="tsx">
80
79
  import { useI18n } from 'vue-i18n';
81
- import { ref, reactive, inject, nextTick, onMounted } from 'vue';
80
+ import { ref, reactive, inject, onMounted } from 'vue';
82
81
  import to from 'await-to-js';
83
- import { useRender, errorMessage, warnMessage } from '@utogether/utils';
82
+ import { useRender, errorMessage, warnMessage, delay } from '@utogether/utils';
84
83
  import { VxeUI, VxeFormPropTypes } from 'vxe-pc-ui';
85
84
  import { isEmpty } from 'xe-utils';
86
85
  import { getServiceApi } from '../../../api';
@@ -127,26 +126,28 @@ const rules: VxeFormPropTypes.Rules = {
127
126
  ]
128
127
  };
129
128
  const renderHook = useRender();
130
- const paramExt = ref({});
129
+ const defaultParams = ref({});
131
130
  const treeList: IRecord[] = inject('treeList');
131
+ const loading = ref(false);
132
132
 
133
133
  const url = '/uums/user';
134
134
 
135
135
  const xgrid = ref(null);
136
136
 
137
137
  const formItems = [
138
- { field: 'name', title: 'message.userName' },
139
- { field: 'userName', title: 'message.userCode' }
138
+ { field: 'name', title: 'message.udp.userName' },
139
+ { field: 'userName', title: 'message.udp.userCode' },
140
+ { field: 'type', title: 'message.udp.userType', code: 'SU.USER.TYPE' }
140
141
  ];
141
142
 
142
143
  const columns = [
143
144
  { type: 'checkbox', width: 40, align: 'center' },
144
- { field: 'userName', title: 'message.userCode', required: true, editRender: renderHook.renderInput() },
145
- { field: 'name', title: 'message.userName', required: true, editRender: renderHook.renderInput() },
145
+ { field: 'userName', title: 'message.udp.userCode', required: true, editRender: renderHook.renderInput() },
146
+ { field: 'name', title: 'message.udp.userName', required: true, editRender: renderHook.renderInput() },
146
147
  {
147
148
  field: 'type',
148
- title: 'message.sysType',
149
- formatter: ['formatDict', 'SU.ENABLE'],
149
+ title: 'message.udp.userType',
150
+ formatter: ['formatDict', 'SU.USER.TYPE'],
150
151
  editRender: renderHook.renderDict('SU.USER.TYPE')
151
152
  },
152
153
  {
@@ -163,21 +164,12 @@ const columns = [
163
164
  fixed: 'right',
164
165
  slots: {
165
166
  default: ({ row }) => {
167
+ if (!row.id) return null;
166
168
  return [
167
169
  <>
168
170
  <ut-button icon="ri-user-fill" content="role" onTap={() => handleRole(row)} />
169
- <ut-button
170
- icon="ri-lock-fill"
171
- content="auth"
172
- status="success"
173
- onTap={() => handleAuth(row)}
174
- />
175
- <ut-button
176
- icon="ri-lock-fill"
177
- content="passwordReset"
178
- status="warning"
179
- onTap={() => handleResetPwd(row)}
180
- />
171
+ <ut-button icon="ri-lock-fill" content="auth" status="success" onTap={() => handleAuth(row)} />
172
+ <ut-button icon="ri-lock-fill" content="passwordReset" status="warning" onTap={() => handleResetPwd(row)} />
181
173
  </>
182
174
  ];
183
175
  }
@@ -197,11 +189,14 @@ async function handleClick({ row }) {
197
189
  * @return {*}
198
190
  */
199
191
  const handleRole = async (row: any) => {
192
+ data.roleList = [];
193
+ data.showUserRole = true;
194
+ loading.value = true;
200
195
  const serverData = await serviceApi.get(url + '/getUserRole', { userName: row.userName });
196
+ loading.value = false;
201
197
  data.roleList = serverData[0]?.sysRoles;
202
- nextTick(() => {
203
- data.showUserRole = true;
204
- });
198
+ // nextTick(() => {
199
+ // });
205
200
  };
206
201
  /**
207
202
  * @description: 密码重置
@@ -224,11 +219,15 @@ const handleResetPwd = async (row: Object) => {
224
219
  * @return {*}
225
220
  */
226
221
  const handleAuth = async row => {
222
+ data.roleList = [];
223
+ data.showAuth = true;
224
+ loading.value = true;
225
+ data.record = row;
227
226
  const [err, res] = await to(serviceApi.get(url + '/getUserRole', { userName: row.userName }));
227
+ loading.value = false;
228
228
  if (!err) {
229
229
  if (!isEmpty(res)) {
230
230
  data.roleList = res[0]?.sysMenuExts;
231
- data.showAuth = true;
232
231
  } else {
233
232
  warnMessage(t('message.tip.emptyAuth'));
234
233
  }
@@ -264,8 +263,10 @@ const handleClose = () => {
264
263
  const getUnitList = () => {
265
264
  serviceApi
266
265
  .get('/uums/unit', { pageSize: 10 })
267
- .then(res => {
268
- paramExt.value = { unitId: res[0].id, enabled: '1' };
266
+ .then(async res => {
267
+ defaultParams.value = { unitId: res[0].id, enabled: '1' };
268
+ await delay(100);
269
+ xgrid.value.refreshData();
269
270
  })
270
271
  .catch(() => {
271
272
  errorMessage('获取租户失败,刷新后重试');
@@ -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-16 18:01: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="450"
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"
@@ -31,6 +32,7 @@ import { ref } from 'vue';
31
32
  import { useI18n } from 'vue-i18n';
32
33
  import to from 'await-to-js';
33
34
  import { getBaseURL, getServiceApi } from '../../../api';
35
+ // import { useRender } from '../../../utils/udp/useRender';
34
36
  import { useRender } from '@utogether/utils';
35
37
  import { clone } from 'xe-utils';
36
38
  import SuQrcode from '../../../components/SuQrcode';
@@ -56,15 +58,20 @@ const record = ref({});
56
58
  // 列字段
57
59
  const columns = [
58
60
  { 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 },
61
+ { field: 'appVersion', title: 'message.udp.appVersion', width: 110 },
62
+ { field: 'buildNo', title: 'message.udp.buildNo', width: 130 },
63
+ {
64
+ field: 'isForceUpdate',
65
+ title: 'message.udp.isForceUpdate',
66
+ width: 130,
67
+ formatter: ({ row }) => (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',
66
73
  width: 90,
67
- formatter: ({ row }) => (row.enabled === '1' ? t('message.appupper') : t('message.applower'))
74
+ formatter: ({ row }) => (row.enabled === '1' ? t('message.udp.appupper') : t('message.udp.applower'))
68
75
  },
69
76
  { field: 'creationDate', width: 140 },
70
77
  {
@@ -77,9 +84,7 @@ const columns = [
77
84
  const status = row.enabled === '1' ? 'warning' : 'primary';
78
85
  const icon = row.enabled === '1' ? 'ri-inbox-archive-line' : 'ri-inbox-unarchive-line';
79
86
  if (row.enabled !== '1') {
80
- return [
81
- <ut-button content={content} icon={icon} status={status} onTap={() => handleChild(row)} />
82
- ];
87
+ return [<ut-button content={content} icon={icon} status={status} onTap={() => handleChild(row)} />];
83
88
  }
84
89
  return [
85
90
  <>
@@ -139,13 +144,30 @@ const onButtonClick = code => {
139
144
  };
140
145
 
141
146
  const items = [
142
- { field: 'appVersion', required: true },
143
- { field: 'buildNo', required: true },
144
- { field: 'versionInfo', required: true, itemRender: renderHook.renderTextarea() },
147
+ { field: 'appVersion', title: 'message.udp.appVersion', required: true },
148
+ { field: 'buildNo', title: 'message.udp.buildNo', required: true },
149
+ {
150
+ field: 'isForceUpdate',
151
+ title: 'message.udp.isForceUpdate',
152
+ required: true,
153
+ itemRender: renderHook.renderSwitch({
154
+ openLabel: t('message.udp.forceUpdate'),
155
+ closeLabel: t('message.udp.freeUpdate'),
156
+ openValue: 'Y',
157
+ closeValue: 'N'
158
+ })
159
+ },
160
+ {
161
+ field: 'versionInfo',
162
+ title: 'message.udp.versionInfo',
163
+ required: true,
164
+ itemRender: renderHook.renderTextarea()
165
+ },
145
166
  {
146
167
  field: 'downloadUrl',
147
168
  required: false,
148
- itemRender: { name: '#upload', props: { baseUrl: baseURL } }
169
+ title: 'message.udp.downloadUrl',
170
+ itemRender: renderHook.renderUpload()
149
171
  }
150
172
  ];
151
173
 
@@ -155,7 +177,10 @@ const showModalForm = ref(false);
155
177
  * @description: 添加
156
178
  */
157
179
  const handleAdd = () => {
158
- record.value = {};
180
+ record.value = {
181
+ // downloadUrl: 'https://vxeui.com/resource/img/fj577.jpg'
182
+ // downloadUrl: '/resource/image/20250817/15806d21e3f445dcae0e2e0825c76a79.jpg'
183
+ };
159
184
  showModalForm.value = true;
160
185
  };
161
186
 
@@ -174,3 +199,10 @@ const onConfirm = () => {
174
199
  xgrid.value.refreshData();
175
200
  };
176
201
  </script>
202
+ <style lang="scss" scoped>
203
+ .ut-app-form {
204
+ ::v-deep(.vxe-switch--label) {
205
+ width: 100%;
206
+ }
207
+ }
208
+ </style>