@utogether/udp-core 1.0.0 → 1.0.1-beta.10

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 (201) hide show
  1. package/build/plugins.ts +39 -26
  2. package/dist/{403-B1R-4vXw.js → 403-Ctxjn4q8.js} +9 -8
  3. package/dist/{404-fXPl8csw.js → 404-W5yzyiZ9.js} +15 -14
  4. package/dist/{500-eI5842YB.js → 500-DXuGEOm4.js} +11 -10
  5. package/dist/{AuthorityInfo-CfVH6PaB.js → AuthorityInfo-C2tflCt8.js} +1 -1
  6. package/dist/AuthorityInfo.vue_vue_type_style_index_0_lang-SVgy3HX7.js +100 -0
  7. package/dist/{AuthorityPanel-BaLMwMgW.js → AuthorityPanel-BeBNiwqc.js} +1 -1
  8. package/dist/{AuthorityPanel.vue_vue_type_style_index_0_lang-C_bkqLD9.js → AuthorityPanel.vue_vue_type_style_index_0_lang-CIYmnP9-.js} +6 -6
  9. package/dist/{Company-CYC9Avfz.js → Company-PLez5GoH.js} +3 -3
  10. package/dist/{CompanyPanel-B4MzoqN_.js → CompanyPanel-CIGaQooL.js} +20 -20
  11. package/dist/{Department-B4BNSiYx.js → Department-B9wLsXFm.js} +3 -3
  12. package/dist/{DepartmentPanel-zJO89L2O.js → DepartmentPanel-DSM4lTaz.js} +23 -23
  13. package/dist/{DesignPanel-S8P0J97f.js → DesignPanel-B6a9wW_A.js} +1 -1
  14. package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-DW-_Vqrr.js → DesignPanel.vue_vue_type_style_index_0_lang-DtHfoDQk.js} +28 -30
  15. package/dist/DictView-DhFbQxdJ.js +110 -0
  16. package/dist/{InvOrganization-MuM2jtsG.js → InvOrganization-D90AbR3b.js} +2 -2
  17. package/dist/Org-DxBkYabD.js +39 -0
  18. package/dist/{Preview-CRyiwUIR.js → Preview-BFtRpBxw.js} +1 -1
  19. package/dist/{ReportDefine-WZYIx8Sm.js → ReportDefine-BIa2QryC.js} +1 -1
  20. package/dist/{ReportDesign-D-7GKgpb.js → ReportDesign-CnyjI-WD.js} +44 -44
  21. package/dist/{ReportQuery-BIIJny6w.js → ReportQuery-BiK7yEhV.js} +5 -5
  22. package/dist/{ReportQueryFrom-OoUl7N2O.js → ReportQueryFrom-C2rqdFTm.js} +1 -1
  23. package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-B878fgj8.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-Ba9HLnXQ.js} +6 -5
  24. package/dist/{ReportTemplate-Cfeq9US-.js → ReportTemplate-DdkLscP3.js} +30 -30
  25. package/dist/{Role-BwTV2QMH.js → Role-BrsxgK8D.js} +6 -6
  26. package/dist/{RoleAssign-De1JjOun.js → RoleAssign-DiqwJqDa.js} +8 -8
  27. package/dist/{RolePanel-pUBXsqCM.js → RolePanel-BDusGyo7.js} +1 -1
  28. package/dist/{RolePanel-E3RcdByM.js → RolePanel-Dqx5dI3f.js} +1 -1
  29. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-2Z1q_5uW.js +132 -0
  30. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-B2pQwHb0.js → RolePanel.vue_vue_type_script_setup_true_lang-B5lUnaMI.js} +40 -34
  31. package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-vMR1fBi0.js → ScrollPanel.vue_vue_type_style_index_0_lang-vSP23fEq.js} +23 -23
  32. package/dist/{Staff-Czm7A8vI.js → Staff-Cwi9LQiZ.js} +3 -3
  33. package/dist/StaffInfo-XjVtyaMv.js +4 -0
  34. package/dist/{StaffInfo.vue_vue_type_style_index_0_lang-DMTL7KCh.js → StaffInfo.vue_vue_type_script_setup_true_lang-wSrAuyet.js} +16 -16
  35. package/dist/{StaffPanel-CHk60LEz.js → StaffPanel-C-wYcFdv.js} +1 -1
  36. package/dist/{StaffPanel.vue_vue_type_script_setup_true_lang-iPKLb5wG.js → StaffPanel.vue_vue_type_script_setup_true_lang-DZNArmnC.js} +46 -49
  37. package/dist/{SysUser-BGwbttRn.js → SysUser-O4tvr-Ur.js} +2 -2
  38. package/dist/{SysUserPanel-BCbKoLKt.js → SysUserPanel-B853docZ.js} +1 -1
  39. package/dist/SysUserPanel.vue_vue_type_script_setup_true_lang-DhiYYC97.js +294 -0
  40. package/dist/{SystemMenu-BkqZSDKl.js → SystemMenu-CXR6mrXr.js} +52 -50
  41. package/dist/{UserInfo-BsyAcT2d.js → UserInfo-BkP8pE2a.js} +1 -1
  42. package/dist/{UserInfo.vue_vue_type_style_index_0_lang-D0-KDxAh.js → UserInfo.vue_vue_type_style_index_0_lang-D4r_umjV.js} +38 -36
  43. package/dist/{childView-CyuLTUqC.js → childView-D0HwbgDT.js} +1 -1
  44. package/dist/{childView-CF83nhxb.js → childView-TRqUkSDC.js} +1 -1
  45. package/dist/{childView.vue_vue_type_style_index_0_lang-CNSgGda3.js → childView.vue_vue_type_style_index_0_lang-BzISq0Jf.js} +43 -43
  46. package/dist/{childView.vue_vue_type_style_index_0_lang-Cch4lE-i.js → childView.vue_vue_type_style_index_0_lang-DQRgNsJY.js} +1 -1
  47. package/dist/{code-rule-Bz-gnktN.js → code-rule-BV7PQWhK.js} +13 -14
  48. package/dist/core.es.js +13 -10
  49. package/dist/{cron-task-CIifSUdW.js → cron-task-9ZS9bi7K.js} +11 -11
  50. package/dist/{frameView-_d2mqjjQ.js → frameView-DE83AN50.js} +15 -14
  51. package/dist/img/l_img.svg +1 -1
  52. package/dist/img/minicolors.png +0 -0
  53. package/dist/img/v_img.svg +1 -1
  54. package/dist/index-DVARtten.js +2623 -0
  55. package/dist/{layoutView-DLKVepB8.js → layoutView-D1U-c4By.js} +730 -724
  56. package/dist/{login-log-CvVnyGi3.js → login-log-kqKzKTto.js} +1 -1
  57. package/dist/{login-LREiDfFU.js → login-sPCEiTGT.js} +107 -113
  58. package/dist/{lov-view-DDrIVILB.js → lov-view-76NcYTYl.js} +5 -5
  59. package/dist/{menuInfo-B1FUV-Sk.js → menuInfo-CxjfjFpm.js} +1 -1
  60. package/dist/{menuInfo.vue_vue_type_style_index_0_lang-Cnk3vdtD.js → menuInfo.vue_vue_type_style_index_0_lang-C2qahH3r.js} +98 -95
  61. package/dist/pda-app-BUH16bLj.js +710 -0
  62. package/dist/redirect-BqegffKC.js +15 -0
  63. package/dist/{resource-BCwx9fEv.js → resource-CCuHzoA6.js} +18 -18
  64. package/dist/{su-welcome-189A7N4r.js → su-welcome-mRArONsd.js} +133 -133
  65. package/dist/{sys-config-BZ3sejow.js → sys-config-Cvt05yF6.js} +21 -21
  66. package/dist/udp-core.css +2 -2
  67. package/dist/{utogether-r08LNiIZ.js → utogether-Dm_VBQHR.js} +6 -6
  68. package/index.ts +40 -36
  69. package/package.json +4 -2
  70. package/src/App.vue +65 -70
  71. package/src/api/index.ts +1 -1
  72. package/src/components/SuCharts/src/UserInfo.vue +78 -78
  73. package/src/components/SuScrollTree/ScrollPanel.vue +3 -3
  74. package/src/components/udp/count-down.vue +536 -0
  75. package/src/components/udp/flip-down/FlipCard/flip-card.vue +251 -0
  76. package/src/components/udp/flip-down/FlipCard/interfaces.ts +4 -0
  77. package/src/components/udp/flip-down/FlipClock/flip-clock.vue +113 -0
  78. package/src/components/udp/form-upload.vue +482 -0
  79. package/src/components/udp/form.vue +112 -0
  80. package/src/components/udp/grid.vue +495 -0
  81. package/src/components/udp/index.ts +10 -0
  82. package/src/components/udp/lov.vue +388 -0
  83. package/src/components/udp/modal-form.vue +189 -0
  84. package/src/components/udp/modal-grid.vue +288 -0
  85. package/src/components/udp/upload.vue +423 -0
  86. package/src/components/udp/utils.ts +447 -0
  87. package/src/directives/permission/index.ts +1 -1
  88. package/src/layout/components/lay-navbar/index.vue +1 -1
  89. package/src/layout/components/lay-panel/index.vue +150 -150
  90. package/src/layout/components/lay-search/index.vue +25 -25
  91. package/src/layout/components/lay-sidebar/breadCrumb.vue +1 -1
  92. package/src/layout/components/lay-tag/index.vue +625 -625
  93. package/src/layout/layoutView.vue +215 -215
  94. package/src/main.ts +25 -14
  95. package/src/plugins/i18n/en.ts +302 -289
  96. package/src/plugins/i18n/zh.ts +348 -337
  97. package/src/plugins/vxe-table/index.ts +53 -46
  98. package/src/plugins/vxe-table/render.tsx +956 -397
  99. package/src/router/index.ts +187 -183
  100. package/src/router/modules/remaining.ts +58 -83
  101. package/src/style/button.scss +85 -78
  102. package/src/style/tailwind.css +1 -68
  103. package/src/style/vxetable.scss +44 -11
  104. package/src/utils/authority/index.ts +1 -1
  105. package/src/utils/{http → udp/http}/index.ts +8 -24
  106. package/src/utils/{http → udp/http}/types.d.ts +8 -5
  107. package/src/utils/udp/useRender.ts +431 -0
  108. package/src/views/login/login-view.vue +2 -2
  109. package/src/views/organization/company/CompanyPanel.vue +259 -259
  110. package/src/views/organization/inv-org/InvOrganization.vue +1 -1
  111. package/src/views/organization/org/Org.vue +9 -5
  112. package/src/views/organization/staff/StaffInfo.vue +0 -30
  113. package/src/views/organization/staff/StaffPanel.vue +4 -3
  114. package/src/views/system/menu/AuthorityPanel.vue +2 -2
  115. package/src/views/system/menu/SystemMenu.vue +183 -191
  116. package/src/views/system/menu/menuInfo.vue +363 -368
  117. package/src/views/system/role/AuthorityInfo.vue +19 -33
  118. package/src/views/system/role/Role.vue +1 -5
  119. package/src/views/system/role/RolePanel.vue +11 -2
  120. package/src/views/system/role/UserInfo.vue +195 -193
  121. package/src/views/system/role-assign/RoleAssign.vue +57 -57
  122. package/src/views/system/role-assign/RolePanel.vue +139 -136
  123. package/src/views/system/sys/sys-config.vue +1 -1
  124. package/src/views/system/sysUser/SysUserPanel.vue +278 -278
  125. package/src/views/uapp/pda/pda-app.vue +208 -176
  126. package/src/views/udev/dict/DictView.vue +118 -106
  127. package/src/views/udev/dict/childView.vue +7 -7
  128. package/src/views/udev/lov/lov-view.vue +91 -91
  129. package/src/views/ufile/aggregation/File.vue +5 -5
  130. package/src/views/ufile/file/water-mark.vue +14 -14
  131. package/src/views/uhome/components/menu-favorite.vue +1 -1
  132. package/src/views/uhome/su-welcome.vue +4 -4
  133. package/src/views/ulogin/login.vue +15 -10
  134. package/src/views/upms/user/login-log.vue +1 -1
  135. package/src/views/urpt/design/DesignPanel.vue +507 -526
  136. package/src/views/urpt/design/ReportDesign.vue +15 -19
  137. package/src/views/urpt/static-resource/resource.vue +3 -3
  138. package/src/views/urpt/template/ReportTemplate.vue +7 -7
  139. package/types/global.d.ts +2 -2
  140. package/vite.config.ts +13 -2
  141. package/dist/AuthorityInfo.vue_vue_type_style_index_0_lang-DbK-f8jH.js +0 -102
  142. package/dist/DictView-bIS5-rK-.js +0 -95
  143. package/dist/Org-kXHSjsgJ.js +0 -35
  144. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-CTIad9_Q.js +0 -126
  145. package/dist/StaffInfo-DJzvBuxy.js +0 -4
  146. package/dist/SysUserPanel.vue_vue_type_script_setup_true_lang-0QUjnhjF.js +0 -289
  147. package/dist/core.umd.js +0 -173
  148. package/dist/index-BKIw8tSn.js +0 -9195
  149. package/dist/pda-app-CRhVGijN.js +0 -2209
  150. package/dist/redirect-DiaNDu8F.js +0 -15
  151. package/src/assets/images/empty.png +0 -0
  152. package/src/assets/images/logo.png +0 -0
  153. package/src/components/ReCountTo/README.md +0 -2
  154. package/src/components/ReCountTo/index.ts +0 -18
  155. package/src/components/ReCountTo/src/normal/index.tsx +0 -165
  156. package/src/components/ReCountTo/src/normal/props.ts +0 -37
  157. package/src/components/ReCountTo/src/rebound/index.tsx +0 -67
  158. package/src/components/ReCountTo/src/rebound/props.ts +0 -14
  159. package/src/components/ReCountTo/src/rebound/rebound.css +0 -77
  160. package/src/components/ReCropper/index.ts +0 -14
  161. package/src/components/ReCropper/src/index.tsx +0 -141
  162. package/src/components/ReFlicker/index.css +0 -39
  163. package/src/components/ReFlicker/index.ts +0 -50
  164. package/src/components/ReFlop/index.ts +0 -14
  165. package/src/components/ReFlop/src/Filpper.tsx +0 -99
  166. package/src/components/ReFlop/src/filpper.css +0 -184
  167. package/src/components/ReFlop/src/index.vue +0 -126
  168. package/src/components/ReFlowChart/index.ts +0 -24
  169. package/src/components/ReFlowChart/src/Control.vue +0 -139
  170. package/src/components/ReFlowChart/src/DataDialog.vue +0 -12
  171. package/src/components/ReFlowChart/src/NodePanel.vue +0 -151
  172. package/src/components/ReFlowChart/src/adpterForTurbo.ts +0 -160
  173. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.css +0 -49
  174. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.eot +0 -0
  175. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.js +0 -61
  176. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.json +0 -58
  177. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.svg +0 -47
  178. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.ttf +0 -0
  179. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.woff +0 -0
  180. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.woff2 +0 -0
  181. package/src/components/ReFlowChart/src/config.ts +0 -62
  182. package/src/components/ReSplitPane/index.css +0 -49
  183. package/src/components/ReSplitPane/index.tsx +0 -119
  184. package/src/components/ReSplitPane/resizer.css +0 -45
  185. package/src/components/ReSplitPane/resizer.tsx +0 -30
  186. package/src/components/SuCommon/card/components/Card.vue +0 -148
  187. package/src/components/SuCommon/card/components/DialogForm.vue +0 -127
  188. package/src/components/SuCommon/card/index.vue +0 -142
  189. package/src/components/SuCommon/icon-select/index.vue +0 -241
  190. package/src/components/SuCommon/table/index.vue +0 -208
  191. package/src/components/SuCommon/utils/index.ts +0 -103
  192. package/src/components/SuCommon/utils/slot.tsx +0 -50
  193. package/src/views/components/contextmenu/basic.vue +0 -74
  194. package/src/views/components/contextmenu/context-menu.vue +0 -40
  195. package/src/views/components/contextmenu/menuDynamic.vue +0 -99
  196. package/src/views/components/contextmenu/menuGroup.vue +0 -71
  197. package/src/views/components/count-to/index.vue +0 -43
  198. package/src/views/components/cropping/index.vue +0 -59
  199. package/src/views/components/cropping/picture.jpeg +0 -0
  200. package/src/views/components/split-pane/index.vue +0 -82
  201. package/src/views/components/video/index.vue +0 -57
@@ -2,7 +2,7 @@
2
2
  * @Author: wei.li
3
3
  * @Date: 2021-11-22 19:50:48
4
4
  * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2025-04-08 15:44:48
5
+ * @LastEditTime: 2025-08-12 09:02:46
6
6
  * @Description: file content
7
7
  -->
8
8
 
@@ -14,32 +14,29 @@
14
14
  :before-close="handleClose"
15
15
  direction="rtl"
16
16
  destroy-on-close
17
+ body-class="ut-draw-body"
17
18
  size="40%"
18
19
  >
19
- <div
20
- v-spinning="loading"
21
- element-loading-text="Loading..."
22
- style="position: relative; height: 80vh"
23
- >
24
- <div style="height: 85%; overflow: auto">
20
+ <div v-spinning="loading" style="position: relative; height: 100%">
21
+ <div>
25
22
  <el-tree-v2
26
23
  ref="xTree"
27
24
  :data="data.dataList"
28
25
  :props="{ children: 'children', label: 'menuName' }"
29
26
  :default-checked-keys="data.defaultCheckedKeys"
30
- :height="420"
27
+ :height="height"
31
28
  show-checkbox
32
29
  node-key="id"
33
30
  />
34
31
  </div>
35
- <div style="position: absolute; width: 100%; height: 15%">
36
- <el-divider style="margin: 16px 0" />
37
- <el-row type="flex" justify="end" style="padding-right: 20px">
38
- <ut-button content="cancel" icon="ri-close-fill" status="warning" @tap="handleClose" />
39
- <ut-button content="confirm" icon="ri-save-3-fill" status="u-cyan" @tap="onSubmit" />
40
- </el-row>
41
- </div>
42
32
  </div>
33
+ <template #footer>
34
+ <el-divider style="margin: 16px 0" />
35
+ <el-row type="flex" justify="end" style="padding-right: 20px">
36
+ <ut-button content="cancel" icon="ri-close-fill" status="warning" @tap="handleClose" />
37
+ <ut-button content="confirm" icon="ri-save-3-fill" status="u-cyan" @tap="onSubmit" />
38
+ </el-row>
39
+ </template>
43
40
  </el-drawer>
44
41
  </div>
45
42
  </template>
@@ -72,9 +69,12 @@ const data = reactive({
72
69
  defaultCheckedKeys: [] // 默认权限
73
70
  });
74
71
 
72
+ const height = window.innerHeight - 180;
73
+
75
74
  const emit = defineEmits<{
76
75
  (e: 'onClose'): void;
77
76
  }>();
77
+
78
78
  // 菜单列表
79
79
  const getDataList = async () => {
80
80
  const res = (await getServiceApi().get('/uums/menu/listMenuTree', {})) as [IRecord];
@@ -113,24 +113,6 @@ onBeforeMount(() => {
113
113
  </script>
114
114
 
115
115
  <style lang="scss">
116
- .u-menu-prefix.vxe-input {
117
- height: 34px;
118
- }
119
-
120
- .u-menu-prefix.vxe-input .vxe-input--prefix {
121
- top: 1px;
122
- width: 150px;
123
- height: 32px;
124
- text-align: center;
125
- background-color: #f5f7fa;
126
- border-right: 1px solid #dcdfe6;
127
- }
128
-
129
- .u-menu-prefix.vxe-input .vxe-input--inner {
130
- padding-left: 160px;
131
- border: 1px solid #dcdfe6;
132
- }
133
-
134
116
  .my-dropdown2 {
135
117
  background-color: #fff;
136
118
  border: 1px solid #dcdfe6;
@@ -144,4 +126,8 @@ onBeforeMount(() => {
144
126
  .el-drawer__header {
145
127
  margin-bottom: 12px;
146
128
  }
129
+
130
+ .ut-draw-body {
131
+ padding: 0 12px;
132
+ }
147
133
  </style>
@@ -8,11 +8,7 @@
8
8
  <template>
9
9
  <div class="u-content-panel">
10
10
  <div class="u-left-panel">
11
- <ScrollPane
12
- :title="$t('company')"
13
- url="/uums/unit"
14
- :tree-otions="{ children: 'children', label: 'unitName' }"
15
- />
11
+ <ScrollPane :title="$t('company')" url="/uums/unit" :tree-otions="{ children: 'children', label: 'unitName' }" />
16
12
  </div>
17
13
  <div class="content">
18
14
  <role-panel />
@@ -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 }) => {
@@ -1,193 +1,195 @@
1
- <template>
2
- <div class="u-dict-config_wrapper">
3
- <el-drawer
4
- :model-value="show"
5
- :title="$t('message.title.authUser', { role: record.roleName })"
6
- :before-close="handleClose"
7
- direction="rtl"
8
- destroy-on-close
9
- size="80%"
10
- >
11
- <vxe-grid ref="xgrid" v-bind="gridOptions" v-on="gridEvents" />
12
- <ut-modal-grid
13
- v-if="showModalView"
14
- url="/uums/user/listUserToRole"
15
- :default-params="{ roleId: record.id }"
16
- :items="modalFormItems"
17
- :columns="modalColum"
18
- :show-footer="true"
19
- :editable="false"
20
- width="60%"
21
- @close="showModalView = false"
22
- @confirm="onConfirm"
23
- />
24
- </el-drawer>
25
- </div>
26
- </template>
27
- <script setup lang="ts">
28
- import { onBeforeMount, reactive, ref } from 'vue';
29
- import { VxeGridProps, VxeGridListeners, VxeGridInstance } from 'vxe-table';
30
- import to from 'await-to-js';
31
- import { getServiceApi } from '../../../api';
32
-
33
- interface IProps {
34
- record: IRecord;
35
- show: boolean;
36
- direction?: string;
37
- }
38
-
39
- const props = withDefaults(defineProps<IProps>(), {
40
- record: (): IRecord => {
41
- return {};
42
- },
43
- show: false,
44
- direction: 'rtl'
45
- });
46
- const loading = ref(false);
47
- const showModalView = ref(false);
48
-
49
- const serviceApi = getServiceApi();
50
-
51
- const emit = defineEmits<{
52
- (e: 'onClose'): void;
53
- }>();
54
- const formItems: IFormItemProps[] = [
55
- {
56
- field: 'userName',
57
- title: 'message.userCode',
58
- span: 8,
59
- itemRender: { name: '$input' }
60
- },
61
- {
62
- field: 'name',
63
- title: 'message.userName',
64
- span: 8,
65
- itemRender: { name: '$input' }
66
- },
67
- {
68
- span: 8,
69
- align: 'right',
70
- itemRender: {
71
- name: '$buttons',
72
- children: [
73
- {
74
- props: {
75
- type: 'submit',
76
- content: 'message.btn.search',
77
- icon: 'ri-search-line',
78
- status: 'primary'
79
- }
80
- },
81
- { props: { type: 'reset', icon: 'ri-refresh-line', content: 'message.btn.reset' } }
82
- ]
83
- }
84
- }
85
- ];
86
- // 列字段
87
- const columns: ITableColProps[] = [
88
- { type: 'checkbox', width: 50, align: 'center' },
89
- {
90
- field: 'userName',
91
- title: 'message.userCode'
92
- },
93
- {
94
- field: 'name',
95
- title: 'message.userName'
96
- },
97
- {
98
- field: 'enabled',
99
- title: 'message.enabled',
100
- width: 70,
101
- editRender: {
102
- name: '$select',
103
- options: [
104
- { label: '启用', value: '1' },
105
- { label: '禁用', value: '0' }
106
- ],
107
- defaultValue: '1'
108
- }
109
- }
110
- ];
111
- // 新增/删除/保存
112
- const buttons = [
113
- { code: 'add', name: 'message.btn.add', status: 'u-cyan', icon: 'ri-add-line' },
114
- { code: 'delete', name: 'message.btn.del', status: 'danger', icon: 'ri-delete-bin-5-fill' }
115
- ];
116
- const modalFormItems = [
117
- { field: 'userName', title: 'message.userCode' },
118
- { field: 'name', title: 'message.userName' }
119
- ];
120
- const modalColum = [
121
- { type: 'checkbox', width: 40 },
122
- { field: 'userName', title: 'message.userCode' },
123
- { field: 'name', title: 'message.userName' },
124
- { field: 'enabled', width: 70, formatter: ['formatDict', 'SU.ENABLE'] }
125
- ];
126
- const xgrid = ref({} as VxeGridInstance);
127
- const gridOptions = reactive<VxeGridProps>({
128
- height: 560,
129
- border: true,
130
- pagerConfig: {},
131
- toolbarConfig: { buttons, perfect: true },
132
- loading: false,
133
- formConfig: { titleWidth: 100, titleAlign: 'right', items: formItems },
134
- // data: props.record.children,
135
- proxyConfig: {
136
- form: true, // 查询是需要启用表单代理
137
- ajax: {
138
- // 接收 Promise
139
- query: ({ page, form }) => {
140
- const queryParams = Object.assign({}, form);
141
- queryParams.id = props.record.id;
142
- queryParams.pageNum = page.currentPage;
143
- queryParams.pageSize = page.pageSize;
144
- return serviceApi.get('/uums/user/listRoleUsers', queryParams);
145
- },
146
- // body 对象: { removeRecords }
147
- delete: ({ body: { removeRecords } }) => {
148
- const param = {
149
- roleId: props.record.id,
150
- userIds: removeRecords.map(v => v.id).join()
151
- };
152
- return serviceApi.delete('/uums/role/deleteRoleUsers', param);
153
- }
154
- }
155
- },
156
- columns
157
- });
158
- // grid点击事件监听
159
- const gridEvents: VxeGridListeners = {
160
- toolbarButtonClick({ code }) {
161
- if (code === 'add') {
162
- showModalView.value = true;
163
- }
164
- }
165
- };
166
- // 监听modal table确定
167
- const onConfirm = async records => {
168
- const param = { userIds: '', roleId: props.record.id };
169
- param.userIds = records.map(m => m.id).join(',');
170
- gridOptions.loading = true;
171
- const [err] = await to(serviceApi.post('/uums/role/addUserRole', param));
172
- gridOptions.loading = false;
173
- if (!err) {
174
- xgrid.value.commitProxy('query');
175
- showModalView.value = false;
176
- }
177
- };
178
- // 抽屉关闭
179
- function handleClose() {
180
- emit('onClose');
181
- }
182
- onBeforeMount(() => {
183
- loading.value = true;
184
- });
185
- </script>
186
-
187
- <style lang="scss">
188
- .u-dict-config_wrapper {
189
- .el-drawer__header {
190
- margin-bottom: 0;
191
- }
192
- }
193
- </style>
1
+ <template>
2
+ <div class="u-dict-config_wrapper">
3
+ <el-drawer
4
+ :model-value="show"
5
+ :title="$t('message.title.authUser', { role: record.roleName })"
6
+ :before-close="handleClose"
7
+ direction="rtl"
8
+ destroy-on-close
9
+ size="80%"
10
+ >
11
+ <vxe-grid ref="xgrid" v-bind="gridOptions" v-on="gridEvents" />
12
+ <ut-modal-grid
13
+ v-if="showModalView"
14
+ url="/uums/user/listUserToRole"
15
+ :default-params="{ roleId: record.id }"
16
+ :items="modalFormItems"
17
+ :columns="modalColum"
18
+ :show-footer="true"
19
+ :editable="false"
20
+ :title="$t('message.udp.userList')"
21
+ width="60%"
22
+ height="75%"
23
+ @close="showModalView = false"
24
+ @confirm="onConfirm"
25
+ />
26
+ </el-drawer>
27
+ </div>
28
+ </template>
29
+ <script setup lang="ts">
30
+ import { onBeforeMount, reactive, ref } from 'vue';
31
+ import { VxeGridProps, VxeGridListeners, VxeGridInstance } from 'vxe-table';
32
+ import to from 'await-to-js';
33
+ import { getServiceApi } from '../../../api';
34
+
35
+ interface IProps {
36
+ record: IRecord;
37
+ show: boolean;
38
+ direction?: string;
39
+ }
40
+
41
+ const props = withDefaults(defineProps<IProps>(), {
42
+ record: (): IRecord => {
43
+ return {};
44
+ },
45
+ show: false,
46
+ direction: 'rtl'
47
+ });
48
+ const loading = ref(false);
49
+ const showModalView = ref(false);
50
+
51
+ const serviceApi = getServiceApi();
52
+
53
+ const emit = defineEmits<{
54
+ (e: 'onClose'): void;
55
+ }>();
56
+ const formItems: IFormItemProps[] = [
57
+ {
58
+ field: 'userName',
59
+ title: 'message.udp.userCode',
60
+ span: 8,
61
+ itemRender: { name: '$input' }
62
+ },
63
+ {
64
+ field: 'name',
65
+ title: 'message.udp.userName',
66
+ span: 8,
67
+ itemRender: { name: '$input' }
68
+ },
69
+ {
70
+ span: 8,
71
+ align: 'right',
72
+ itemRender: {
73
+ name: '$buttons',
74
+ children: [
75
+ {
76
+ props: {
77
+ type: 'submit',
78
+ content: 'message.btn.search',
79
+ icon: 'ri-search-line',
80
+ status: 'primary'
81
+ }
82
+ },
83
+ { props: { type: 'reset', icon: 'ri-refresh-line', content: 'message.btn.reset' } }
84
+ ]
85
+ }
86
+ }
87
+ ];
88
+ // 列字段
89
+ const columns: ITableColProps[] = [
90
+ { type: 'checkbox', width: 50, align: 'center' },
91
+ {
92
+ field: 'userName',
93
+ title: 'message.udp.userCode'
94
+ },
95
+ {
96
+ field: 'name',
97
+ title: 'message.udp.userName'
98
+ },
99
+ {
100
+ field: 'enabled',
101
+ title: 'message.enabled',
102
+ width: 70,
103
+ editRender: {
104
+ name: '$select',
105
+ options: [
106
+ { label: '启用', value: '1' },
107
+ { label: '禁用', value: '0' }
108
+ ],
109
+ defaultValue: '1'
110
+ }
111
+ }
112
+ ];
113
+ // 新增/删除/保存
114
+ const buttons = [
115
+ { code: 'add', name: 'message.btn.add', status: 'u-cyan', icon: 'ri-add-line' },
116
+ { code: 'delete', name: 'message.btn.del', status: 'danger', icon: 'ri-delete-bin-5-fill' }
117
+ ];
118
+ const modalFormItems = [
119
+ { field: 'userName', title: 'message.udp.userCode', span: 9 },
120
+ { field: 'name', title: 'message.udp.userName', span: 9 }
121
+ ];
122
+ const modalColum = [
123
+ { type: 'checkbox', width: 40 },
124
+ { field: 'userName', title: 'message.udp.userCode' },
125
+ { field: 'name', title: 'message.udp.userName' },
126
+ { field: 'enabled', width: 70, formatter: ['formatDict', 'SU.ENABLE'] }
127
+ ];
128
+ const xgrid = ref({} as VxeGridInstance);
129
+ const gridOptions = reactive<VxeGridProps>({
130
+ height: 'auto',
131
+ border: true,
132
+ pagerConfig: {},
133
+ toolbarConfig: { buttons, perfect: true },
134
+ loading: false,
135
+ formConfig: { titleWidth: 100, titleAlign: 'right', items: formItems },
136
+ // data: props.record.children,
137
+ proxyConfig: {
138
+ form: true, // 查询是需要启用表单代理
139
+ ajax: {
140
+ // 接收 Promise
141
+ query: ({ page, form }) => {
142
+ const queryParams = Object.assign({}, form);
143
+ queryParams.id = props.record.id;
144
+ queryParams.pageNum = page.currentPage;
145
+ queryParams.pageSize = page.pageSize;
146
+ return serviceApi.get('/uums/user/listRoleUsers', queryParams);
147
+ },
148
+ // body 对象: { removeRecords }
149
+ delete: ({ body: { removeRecords } }) => {
150
+ const param = {
151
+ roleId: props.record.id,
152
+ userIds: removeRecords.map(v => v.id).join()
153
+ };
154
+ return serviceApi.delete('/uums/role/deleteRoleUsers', param);
155
+ }
156
+ }
157
+ },
158
+ columns
159
+ });
160
+ // grid点击事件监听
161
+ const gridEvents: VxeGridListeners = {
162
+ toolbarButtonClick({ code }) {
163
+ if (code === 'add') {
164
+ showModalView.value = true;
165
+ }
166
+ }
167
+ };
168
+ // 监听modal table确定
169
+ const onConfirm = async records => {
170
+ const param = { userIds: '', roleId: props.record.id };
171
+ param.userIds = records.map(m => m.id).join(',');
172
+ gridOptions.loading = true;
173
+ const [err] = await to(serviceApi.post('/uums/role/addUserRole', param));
174
+ gridOptions.loading = false;
175
+ if (!err) {
176
+ xgrid.value.commitProxy('query');
177
+ showModalView.value = false;
178
+ }
179
+ };
180
+ // 抽屉关闭
181
+ function handleClose() {
182
+ emit('onClose');
183
+ }
184
+ onBeforeMount(() => {
185
+ loading.value = true;
186
+ });
187
+ </script>
188
+
189
+ <style lang="scss">
190
+ .u-dict-config_wrapper {
191
+ .el-drawer__header {
192
+ margin-bottom: 0;
193
+ }
194
+ }
195
+ </style>
@@ -1,57 +1,57 @@
1
- <!--
2
- * @Author: wei.li
3
- * @Date: 2021-11-26 14:37:07
4
- * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2024-06-24 20:20:57
6
- * @Description: 角色分配业务单元
7
- -->
8
- <template>
9
- <div class="u-content-panel">
10
- <div class="u-left-panel">
11
- <ScrollPane
12
- :title="$t('SuOrg')"
13
- :tree-otions="{ children: 'children', label: 'orgName' }"
14
- extParam="{ pageSize: 500 }"
15
- url="/uums/org"
16
- />
17
- </div>
18
- <div class="content">
19
- <role-panel />
20
- </div>
21
- </div>
22
- </template>
23
-
24
- <script lang="ts" setup>
25
- import { ref, provide } from 'vue';
26
- import ScrollPane from '../../../components/SuScrollTree/ScrollPanel.vue';
27
- import RolePanel from './RolePanel.vue';
28
- const active: any = ref({});
29
- const scrollPanelChange: any = ref(false);
30
- const treeList: any = ref([]);
31
- provide('active', active);
32
-
33
- provide('scrollPanelChange', scrollPanelChange);
34
-
35
- provide('treeList', treeList);
36
- </script>
37
-
38
- <style lang="scss" scoped>
39
- .u-content-panel {
40
- box-sizing: border-box;
41
- display: flex;
42
- width: 100%;
43
- height: 84vh;
44
- padding: 5px;
45
-
46
- .u-left-panel {
47
- width: 250px;
48
- }
49
-
50
- .content {
51
- flex: 1;
52
- width: calc(100% - 250px);
53
- height: 82vh;
54
- margin: 0 10px;
55
- }
56
- }
57
- </style>
1
+ <!--
2
+ * @Author: wei.li
3
+ * @Date: 2021-11-26 14:37:07
4
+ * @LastEditors: levi7754 levi7754@163.com
5
+ * @LastEditTime: 2025-08-06 17:55:03
6
+ * @Description: 角色分配业务单元
7
+ -->
8
+ <template>
9
+ <div class="u-content-panel">
10
+ <div class="u-left-panel">
11
+ <ScrollPane
12
+ :title="$t('SuOrg')"
13
+ :tree-otions="{ children: 'children', label: 'orgName' }"
14
+ :default-params="{ pageSize: 500 }"
15
+ url="/uums/org"
16
+ />
17
+ </div>
18
+ <div class="content">
19
+ <role-panel />
20
+ </div>
21
+ </div>
22
+ </template>
23
+
24
+ <script lang="ts" setup>
25
+ import { ref, provide } from 'vue';
26
+ import ScrollPane from '../../../components/SuScrollTree/ScrollPanel.vue';
27
+ import RolePanel from './RolePanel.vue';
28
+ const active: any = ref({});
29
+ const scrollPanelChange: any = ref(false);
30
+ const treeList: any = ref([]);
31
+ provide('active', active);
32
+
33
+ provide('scrollPanelChange', scrollPanelChange);
34
+
35
+ provide('treeList', treeList);
36
+ </script>
37
+
38
+ <style lang="scss" scoped>
39
+ .u-content-panel {
40
+ box-sizing: border-box;
41
+ display: flex;
42
+ width: 100%;
43
+ height: 84vh;
44
+ padding: 5px;
45
+
46
+ .u-left-panel {
47
+ width: 250px;
48
+ }
49
+
50
+ .content {
51
+ flex: 1;
52
+ width: calc(100% - 250px);
53
+ height: 82vh;
54
+ margin: 0 10px;
55
+ }
56
+ }
57
+ </style>