@utogether/udp-core 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/build/plugins.ts +13 -2
  2. package/dist/{403-JWjatlxJ.js → 403-B1rIjAAu.js} +7 -6
  3. package/dist/{404-BcdMJfPb.js → 404-mBqc2y4t.js} +14 -13
  4. package/dist/{500-bsa3F_cc.js → 500-BoI45Zdh.js} +10 -9
  5. package/dist/{AuthorityInfo-CqItgNs5.js → AuthorityInfo-B08NBIIn.js} +1 -1
  6. package/dist/AuthorityInfo.vue_vue_type_style_index_0_lang-BLP1SaiH.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-DVff9IA7.js → Company-JGGyWEWH.js} +3 -3
  10. package/dist/{CompanyPanel-CNrdq4XE.js → CompanyPanel-BQ_cCmDx.js} +16 -16
  11. package/dist/{Department-CqcpfL4i.js → Department-z2iO6hwM.js} +10 -10
  12. package/dist/{DepartmentPanel-Bvti4LGu.js → DepartmentPanel-BtQe7zwU.js} +108 -78
  13. package/dist/{DesignPanel-CjykspE1.js → DesignPanel-7mhtVWas.js} +1 -1
  14. package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-BK9EERdd.js → DesignPanel.vue_vue_type_style_index_0_lang-4EsHemj_.js} +24 -26
  15. package/dist/DictView-CjchV2Yk.js +109 -0
  16. package/dist/InvOrganization-Pn1O_XP0.js +74 -0
  17. package/dist/Org-BqytV_vi.js +39 -0
  18. package/dist/{Preview-Cm_7RhYU.js → Preview-CLpUUMay.js} +2 -2
  19. package/dist/{ReportDefine-CJVlQ--7.js → ReportDefine-Cz1KtEUF.js} +1 -1
  20. package/dist/{ReportDesign-B0unlrkt.js → ReportDesign-BaORYud4.js} +46 -46
  21. package/dist/{ReportQuery-BKuMCEvF.js → ReportQuery-CPCPXiXz.js} +5 -5
  22. package/dist/{ReportQueryFrom-DAngMJLU.js → ReportQueryFrom-C_AcrfkJ.js} +1 -1
  23. package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-CPpwmztJ.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-Bm67ejay.js} +6 -5
  24. package/dist/{ReportTemplate-8YH3L8Pv.js → ReportTemplate-CFiNMz79.js} +26 -26
  25. package/dist/{Role-MxI30-0W.js → Role-B-XDoJd5.js} +6 -6
  26. package/dist/{RoleAssign-BzUY_y_y.js → RoleAssign-BolW8YVs.js} +9 -9
  27. package/dist/{RolePanel-DS_TErTn.js → RolePanel-2kfs5tw9.js} +1 -1
  28. package/dist/{RolePanel-CXdcvsR5.js → RolePanel-HilSuYns.js} +1 -1
  29. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-CE4gApUY.js +132 -0
  30. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-Ddl-A7Zh.js → RolePanel.vue_vue_type_script_setup_true_lang-DPzgfAyV.js} +42 -36
  31. package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-DnchUgIF.js → ScrollPanel.vue_vue_type_style_index_0_lang-CCTH4RkH.js} +20 -20
  32. package/dist/{Staff-D7tXo_Gn.js → Staff-BTk3whFC.js} +3 -3
  33. package/dist/{StaffInfo-Bk8BY8PO.js → StaffInfo-d3AuSzlA.js} +1 -1
  34. package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-DqKwZi5f.js → StaffInfo.vue_vue_type_script_setup_true_lang-eOL4VlfE.js} +13 -13
  35. package/dist/{StaffPanel-VtpGCTIq.js → StaffPanel-DV-D4jjz.js} +1 -1
  36. package/dist/StaffPanel.vue_vue_type_script_setup_true_lang-4sFq3CEo.js +135 -0
  37. package/dist/{SysUser-D0Q6OvD7.js → SysUser-BnjYytws.js} +2 -2
  38. package/dist/{SysUserPanel-1_vrsANQ.js → SysUserPanel-CBoyD-Qi.js} +1 -1
  39. package/dist/SysUserPanel.vue_vue_type_script_setup_true_lang-PrTlTZR-.js +341 -0
  40. package/dist/{SystemMenu-9PG3vESE.js → SystemMenu-kYB_ZaUt.js} +49 -47
  41. package/dist/{UserInfo-qgXUEGwi.js → UserInfo-4dx97VBL.js} +1 -1
  42. package/dist/{UserInfo.vue_vue_type_style_index_0_lang-CN0C5rVk.js → UserInfo.vue_vue_type_style_index_0_lang-BpbC_ZDm.js} +35 -33
  43. package/dist/{childView-C7ZSA5fR.js → childView-CHPNfTEb.js} +1 -1
  44. package/dist/{childView-yV2QLwfA.js → childView-CKA_JgVZ.js} +1 -1
  45. package/dist/{childView.vue_vue_type_style_index_0_lang-DdKxPGdh.js → childView.vue_vue_type_style_index_0_lang-Bym2fQRd.js} +7 -7
  46. package/dist/childView.vue_vue_type_style_index_0_lang-W7bCtXeu.js +177 -0
  47. package/dist/{code-rule-95K1jr-u.js → code-rule-CbxuZg0-.js} +42 -41
  48. package/dist/core.es.js +19 -10
  49. package/dist/{cron-task-DGrQwOHs.js → cron-task-nTOpqQYf.js} +5 -5
  50. package/dist/flow-task-B07st2aD.js +10 -0
  51. package/dist/{frameView-7SmME93D.js → frameView-Z1tPUyCh.js} +15 -14
  52. package/dist/img/l_img.svg +1 -1
  53. package/dist/img/minicolors.png +0 -0
  54. package/dist/img/v_img.svg +1 -1
  55. package/dist/index-C3q8HoJM.js +4650 -0
  56. package/dist/{layoutView-C6WIVWGZ.js → layoutView--MGA9zUB.js} +1776 -1764
  57. package/dist/{log-in-e7D5Ss1P.js → log-in-CSYJDA6m.js} +36 -29
  58. package/dist/log-out-DiwGCg7p.js +130 -0
  59. package/dist/login-C6Y0ajDp.js +251 -0
  60. package/dist/{login-log-CvVnyGi3.js → login-log-C0V-_l3F.js} +6 -4
  61. package/dist/{lov-view-DoF5LqFQ.js → lov-view-Cmv7wZZ9.js} +9 -9
  62. package/dist/{menuInfo-CNzGQwOD.js → menuInfo-UeutJpOa.js} +1 -1
  63. package/dist/{menuInfo.vue_vue_type_style_index_0_lang-51SYxVc_.js → menuInfo.vue_vue_type_style_index_0_lang-CWX4Mu67.js} +144 -121
  64. package/dist/pda-app-B6w99SJo.js +710 -0
  65. package/dist/redirect-BqegffKC.js +15 -0
  66. package/dist/{resource-gVFFMO9l.js → resource-BybJvUv0.js} +17 -17
  67. package/dist/{su-welcome-BN_s_RX_.js → su-welcome-C1bmxHoY.js} +124 -126
  68. package/dist/sys-config-BnmIDnCj.js +370 -0
  69. package/dist/udp-core.css +1 -9
  70. package/dist/utogether-MlnyYtNS.js +4 -0
  71. package/index.ts +19 -6
  72. package/package.json +18 -17
  73. package/src/App.vue +2 -7
  74. package/src/api/http.ts +1 -4
  75. package/src/api/index.ts +5 -3
  76. package/src/api/user.ts +2 -2
  77. package/src/components/SuCharts/src/UserInfo.vue +3 -3
  78. package/src/components/SuScrollTree/ScrollPanel.vue +4 -9
  79. package/src/components/udp/content/index.vue +88 -0
  80. package/src/components/udp/form/form.vue +109 -0
  81. package/src/components/udp/grid/index.vue +524 -0
  82. package/src/components/udp/index.ts +5 -4
  83. package/src/components/udp/ut-stamp-badge/index.vue +271 -0
  84. package/src/components/udp/utils.ts +408 -40
  85. package/src/directives/permission/index.ts +1 -1
  86. package/src/layout/components/lay-navbar/index.vue +9 -7
  87. package/src/layout/components/lay-panel/index.vue +3 -3
  88. package/src/layout/components/lay-search/index.vue +1 -1
  89. package/src/layout/components/lay-select-org/index.vue +4 -9
  90. package/src/layout/components/lay-setting/index.vue +503 -510
  91. package/src/layout/components/lay-sidebar/breadCrumb.vue +1 -1
  92. package/src/layout/components/lay-sidebar/horizontal.vue +8 -6
  93. package/src/layout/components/lay-sidebar/mixNav.vue +260 -258
  94. package/src/layout/components/lay-sidebar/sidebar-logo.vue +101 -98
  95. package/src/layout/components/lay-tag/index.vue +598 -625
  96. package/src/layout/hooks/useDataThemeChange.ts +1 -1
  97. package/src/layout/hooks/useNav.ts +176 -173
  98. package/src/layout/hooks/useTag.ts +227 -233
  99. package/src/layout/layoutView.vue +215 -215
  100. package/src/layout/types.ts +93 -92
  101. package/src/main.ts +115 -109
  102. package/src/plugins/i18n/en.ts +26 -13
  103. package/src/plugins/i18n/module/u-workflow.ts +1 -1
  104. package/src/plugins/i18n/zh.ts +363 -337
  105. package/src/plugins/vxe-table/index.ts +74 -4
  106. package/src/plugins/vxe-table/render.tsx +186 -58
  107. package/src/router/index.ts +187 -183
  108. package/src/router/modules/flow.ts +35 -0
  109. package/src/router/modules/home.ts +32 -32
  110. package/src/router/modules/remaining.ts +1 -26
  111. package/src/router/utils.ts +420 -377
  112. package/src/store/modules/app.ts +2 -4
  113. package/src/store/modules/epTheme.ts +48 -49
  114. package/src/store/modules/multiTags.ts +15 -14
  115. package/src/store/modules/permission.ts +25 -15
  116. package/src/store/modules/system.ts +1 -3
  117. package/src/style/button.scss +11 -4
  118. package/src/style/login.css +1 -1
  119. package/src/style/tailwind.css +1 -68
  120. package/src/style/vxetable.scss +103 -11
  121. package/src/utils/authority/index.ts +1 -1
  122. package/src/utils/dataFormat/index.ts +223 -223
  123. package/src/utils/index.ts +3 -1
  124. package/src/utils/lifecycle.ts +39 -20
  125. package/src/utils/propTypes.ts +1 -6
  126. package/src/utils/storage/index.ts +2 -2
  127. package/src/utils/{http → udp/http}/index.ts +27 -30
  128. package/src/utils/{http → udp/http}/types.d.ts +2 -6
  129. package/src/views/login/login-view.vue +6 -20
  130. package/src/views/organization/company/CompanyPanel.vue +2 -2
  131. package/src/views/organization/department/Department.vue +58 -58
  132. package/src/views/organization/department/DepartmentPanel.vue +303 -283
  133. package/src/views/organization/inv-org/InvOrganization.vue +23 -9
  134. package/src/views/organization/org/Org.vue +9 -5
  135. package/src/views/organization/staff/StaffInfo.vue +127 -133
  136. package/src/views/organization/staff/StaffPanel.vue +162 -145
  137. package/src/views/system/cron/cron-task.vue +2 -12
  138. package/src/views/system/menu/AuthorityPanel.vue +2 -2
  139. package/src/views/system/menu/SystemMenu.vue +14 -20
  140. package/src/views/system/menu/menuInfo.vue +39 -23
  141. package/src/views/system/role/AuthorityInfo.vue +19 -15
  142. package/src/views/system/role/Role.vue +1 -5
  143. package/src/views/system/role/RolePanel.vue +11 -2
  144. package/src/views/system/role/UserInfo.vue +11 -9
  145. package/src/views/system/role-assign/RoleAssign.vue +2 -2
  146. package/src/views/system/role-assign/RolePanel.vue +12 -9
  147. package/src/views/system/sys/sys-config.vue +70 -21
  148. package/src/views/system/sysUser/SysUserPanel.vue +347 -278
  149. package/src/views/uapp/pda/pda-app.vue +48 -16
  150. package/src/views/udev/coderule/code-rule.vue +132 -121
  151. package/src/views/udev/dict/DictView.vue +118 -106
  152. package/src/views/udev/dict/childView.vue +183 -222
  153. package/src/views/udev/lov/childView.vue +1 -7
  154. package/src/views/ufile/aggregation/File.vue +5 -5
  155. package/src/views/ufile/file/water-mark.vue +14 -14
  156. package/src/views/uhome/components/menu-favorite.vue +314 -331
  157. package/src/views/uhome/su-welcome.vue +319 -339
  158. package/src/views/ulogin/login.vue +325 -316
  159. package/src/views/upms/interface/log-in.vue +100 -106
  160. package/src/views/upms/interface/log-out.vue +104 -107
  161. package/src/views/upms/user/login-log.vue +54 -60
  162. package/src/views/urpt/design/DesignPanel.vue +16 -35
  163. package/src/views/urpt/design/Preview.vue +1 -0
  164. package/src/views/urpt/design/ReportDesign.vue +17 -23
  165. package/src/views/urpt/static-resource/resource.vue +3 -3
  166. package/src/views/urpt/template/ReportTemplate.vue +7 -7
  167. package/src/views/utask/flow-task.vue +18 -0
  168. package/types/global.d.ts +231 -236
  169. package/vite.config.ts +13 -2
  170. package/dist/AuthorityInfo.vue_vue_type_style_index_0_lang-32L40GY2.js +0 -102
  171. package/dist/DictView-q7kR9K--.js +0 -95
  172. package/dist/InvOrganization-DI45LqZV.js +0 -260
  173. package/dist/Org-CZju_ZiR.js +0 -35
  174. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-DJKu6PXz.js +0 -126
  175. package/dist/StaffPanel.vue_vue_type_script_setup_true_lang-C3Ixs12y.js +0 -111
  176. package/dist/SysUserPanel.vue_vue_type_script_setup_true_lang-C5XEmxsV.js +0 -288
  177. package/dist/childView.vue_vue_type_style_index_0_lang-bkmucBUL.js +0 -187
  178. package/dist/core.umd.js +0 -173
  179. package/dist/index-OswH7SsT.js +0 -9937
  180. package/dist/log-out--RRncZhN.js +0 -120
  181. package/dist/login-BhCMeCLS.js +0 -251
  182. package/dist/pda-app-nn3llDUx.js +0 -2209
  183. package/dist/redirect-CmMplDV4.js +0 -15
  184. package/dist/sys-config-DGutV-VX.js +0 -277
  185. package/dist/utogether-wFDCI28t.js +0 -182
  186. package/src/assets/images/empty.png +0 -0
  187. package/src/assets/images/logo.png +0 -0
  188. package/src/components/ReCountTo/README.md +0 -2
  189. package/src/components/ReCountTo/index.ts +0 -18
  190. package/src/components/ReCountTo/src/normal/index.tsx +0 -165
  191. package/src/components/ReCountTo/src/normal/props.ts +0 -37
  192. package/src/components/ReCountTo/src/rebound/index.tsx +0 -67
  193. package/src/components/ReCountTo/src/rebound/props.ts +0 -14
  194. package/src/components/ReCountTo/src/rebound/rebound.css +0 -77
  195. package/src/components/ReCropper/index.ts +0 -14
  196. package/src/components/ReCropper/src/index.tsx +0 -141
  197. package/src/components/ReFlicker/index.css +0 -39
  198. package/src/components/ReFlicker/index.ts +0 -50
  199. package/src/components/ReFlop/index.ts +0 -14
  200. package/src/components/ReFlop/src/Filpper.tsx +0 -99
  201. package/src/components/ReFlop/src/filpper.css +0 -184
  202. package/src/components/ReFlop/src/index.vue +0 -126
  203. package/src/components/ReFlowChart/index.ts +0 -24
  204. package/src/components/ReFlowChart/src/Control.vue +0 -139
  205. package/src/components/ReFlowChart/src/DataDialog.vue +0 -12
  206. package/src/components/ReFlowChart/src/NodePanel.vue +0 -151
  207. package/src/components/ReFlowChart/src/adpterForTurbo.ts +0 -160
  208. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.css +0 -49
  209. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.eot +0 -0
  210. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.js +0 -61
  211. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.json +0 -58
  212. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.svg +0 -47
  213. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.ttf +0 -0
  214. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.woff +0 -0
  215. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.woff2 +0 -0
  216. package/src/components/ReFlowChart/src/config.ts +0 -62
  217. package/src/components/ReSplitPane/index.css +0 -49
  218. package/src/components/ReSplitPane/index.tsx +0 -119
  219. package/src/components/ReSplitPane/resizer.css +0 -45
  220. package/src/components/ReSplitPane/resizer.tsx +0 -30
  221. package/src/components/SuCommon/card/components/Card.vue +0 -148
  222. package/src/components/SuCommon/card/components/DialogForm.vue +0 -127
  223. package/src/components/SuCommon/card/index.vue +0 -142
  224. package/src/components/SuCommon/icon-select/index.vue +0 -241
  225. package/src/components/SuCommon/table/index.vue +0 -208
  226. package/src/components/SuCommon/utils/index.ts +0 -103
  227. package/src/components/SuCommon/utils/slot.tsx +0 -50
  228. package/src/components/udp/form-upload.vue +0 -132
  229. package/src/components/udp/modal-form.vue +0 -180
  230. package/src/utils/udp/useRender.ts +0 -420
  231. package/src/views/components/contextmenu/basic.vue +0 -74
  232. package/src/views/components/contextmenu/context-menu.vue +0 -40
  233. package/src/views/components/contextmenu/menuDynamic.vue +0 -99
  234. package/src/views/components/contextmenu/menuGroup.vue +0 -71
  235. package/src/views/components/count-to/index.vue +0 -43
  236. package/src/views/components/cropping/index.vue +0 -59
  237. package/src/views/components/cropping/picture.jpeg +0 -0
  238. package/src/views/components/split-pane/index.vue +0 -82
  239. package/src/views/components/video/index.vue +0 -57
@@ -2,16 +2,16 @@
2
2
  * @Author: levi7754 levi7754@163.com
3
3
  * @Date: 2024-06-05 14:32:03
4
4
  * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2025-07-16 15:36:56
5
+ * @LastEditTime: 2025-11-04 13:58:45
6
6
  * @FilePath: /udp-front/packages/udp-core/src/plugins/vxe-table/index.ts
7
7
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
8
8
  */
9
9
  import 'xe-utils';
10
- import { merge } from 'xe-utils';
10
+ import { merge, toDateString, getWhatDay } from 'xe-utils';
11
11
  import { geti18n, transformI18n } from '../i18n/index';
12
12
  // import { storageLocal } from '@utogether/utils';
13
- // import { VxetableRender } from '@utogether/utils';
14
- import { VxetableRender } from './render';
13
+ import { VxetableRender } from '@utogether/utils';
14
+ // import { VxetableRender } from './render';
15
15
  import { getServiceApi } from '../../api';
16
16
 
17
17
  import VXETable, { VxeUI } from 'vxe-table';
@@ -19,6 +19,7 @@ import VXETable, { VxeUI } from 'vxe-table';
19
19
 
20
20
  // const dict = storageLocal.getItem('kLov');
21
21
  VxetableRender(VXETable, { serviceApi: getServiceApi(), i18n: transformI18n });
22
+ setCommands();
22
23
 
23
24
  // 全局默认参数
24
25
  const defaultConfig = {
@@ -38,9 +39,78 @@ const defaultConfig = {
38
39
 
39
40
  export function setTableConfig(config = {}) {
40
41
  VXETable.setConfig(merge(defaultConfig, config));
42
+
43
+ VxeUI.interceptor.add('event.clearEdit', {
44
+ tableInterceptorMethod(params) {
45
+ const { $event } = params;
46
+ if ($event.target.className.indexOf('vxe-table--ignore-clear') > -1) return false;
47
+ }
48
+ });
41
49
  }
42
50
 
43
51
  export function setTheme(theme) {
44
52
  // 切换为暗黑主题
45
53
  VxeUI.setTheme(theme);
46
54
  }
55
+
56
+ function setCommands() {
57
+ // 定义选中日期今天指令
58
+ VxeUI.commands.add('utTodyay', {
59
+ dateRangePickerCommandMethod({ $dateRangePicker }) {
60
+ const startDate = toDateString(new Date(), 'yyyy-MM-dd 00:00:00');
61
+ const endDate = toDateString(new Date(), 'yyyy-MM-dd 23:59:59');
62
+ $dateRangePicker.setModelValue(startDate, endDate);
63
+ }
64
+ });
65
+ // 定义选中日期昨天指令
66
+ VxeUI.commands.add('utYesterDay', {
67
+ dateRangePickerCommandMethod({ $dateRangePicker }) {
68
+ const startDate = toDateString(getWhatDay(new Date(), -1), 'yyyy-MM-dd 00:00:00');
69
+ const endDate = toDateString(getWhatDay(new Date(), -1), 'yyyy-MM-dd 23:59:59');
70
+ $dateRangePicker.setModelValue(startDate, endDate);
71
+ }
72
+ });
73
+ // 定义选中日期最近一周指令
74
+ VxeUI.commands.add('utRecentWeek', {
75
+ dateRangePickerCommandMethod({ $dateRangePicker }) {
76
+ const startDate = toDateString(getWhatDay(new Date(), -7), 'yyyy-MM-dd 00:00:00');
77
+ const endDate = toDateString(new Date(), 'yyyy-MM-dd 23:59:59');
78
+ $dateRangePicker.setModelValue(startDate, endDate);
79
+ }
80
+ });
81
+
82
+ // 定义选中日期最近一个月指令
83
+ VxeUI.commands.add('utRecentMonth', {
84
+ dateRangePickerCommandMethod({ $dateRangePicker }) {
85
+ const startDate = toDateString(getWhatDay(new Date(), -30), 'yyyy-MM-dd 00:00:00');
86
+ const endDate = toDateString(new Date(), 'yyyy-MM-dd 23:59:59');
87
+ $dateRangePicker.setModelValue(startDate, endDate);
88
+ }
89
+ });
90
+
91
+ // 定义选中日期最近三个月指令
92
+ VxeUI.commands.add('utRecentThreeMonth', {
93
+ dateRangePickerCommandMethod({ $dateRangePicker }) {
94
+ const startDate = toDateString(getWhatDay(new Date(), -90), 'yyyy-MM-dd 00:00:00');
95
+ const endDate = toDateString(new Date(), 'yyyy-MM-dd 23:59:59');
96
+ $dateRangePicker.setModelValue(startDate, endDate);
97
+ }
98
+ });
99
+
100
+ // 定义选中日期最近半年指令
101
+ VxeUI.commands.add('utRecentHalfYear', {
102
+ dateRangePickerCommandMethod({ $dateRangePicker }) {
103
+ const startDate = toDateString(getWhatDay(new Date(), -180), 'yyyy-MM-dd 00:00:00');
104
+ const endDate = toDateString(new Date(), 'yyyy-MM-dd 23:59:59');
105
+ $dateRangePicker.setModelValue(startDate, endDate);
106
+ }
107
+ });
108
+ // 定义选中日期最近半年指令
109
+ VxeUI.commands.add('utRecentYear', {
110
+ dateRangePickerCommandMethod({ $dateRangePicker }) {
111
+ const startDate = toDateString(getWhatDay(new Date(), -365), 'yyyy-MM-dd 00:00:00');
112
+ const endDate = toDateString(new Date(), 'yyyy-MM-dd 23:59:59');
113
+ $dateRangePicker.setModelValue(startDate, endDate);
114
+ }
115
+ });
116
+ }
@@ -2,7 +2,7 @@
2
2
  * @Author: wei.li
3
3
  * @Date: 2021-12-01 09:18:50
4
4
  * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2025-07-14 18:17:16
5
+ * @LastEditTime: 2025-10-29 16:48:47
6
6
  * @Description: file content
7
7
  */
8
8
 
@@ -59,7 +59,7 @@ export const VxetableRender = (VXETable, { serviceApi, i18n }) => {
59
59
  * @param {*} val 目前的选中值
60
60
  */
61
61
  function onChange(val) {
62
- componentHook.selectChange(val, data, column.field, renderOpts, {
62
+ componentHook.selectChange(val, row, column.field, renderOpts, {
63
63
  column,
64
64
  datasource: 'row'
65
65
  });
@@ -251,17 +251,15 @@ export const VxetableRender = (VXETable, { serviceApi, i18n }) => {
251
251
  renderTableEdit(renderOpts: VxeColumnPropTypes.EditRender, params) {
252
252
  const { row, column } = params;
253
253
  const { options, props, optionProps = {}, events } = renderOpts;
254
- const { label = 'label', value = 'value', extLabel } = optionProps;
255
- const { mapField } = props;
256
-
254
+ const { label = 'label', value = 'value' } = optionProps;
255
+ const { mapField, multiple } = props;
256
+ console.log('ssssss');
257
257
  const componentHook = useComponent();
258
258
 
259
- if (props.multiple && row[column.field] && !isArray(row[column.field])) {
260
- row[column.field].split(',').forEach(dv => {
261
- const isExit = options.some(option => option[label] === dv);
262
- !isExit && options.push({ [value]: dv, [label]: dv });
263
- });
264
- }
259
+ // 多选时
260
+ const modelField = multiple ? `_${column.field}` : column.field;
261
+ // 默认值
262
+ componentHook.setDefaultValue(props, row, column.field);
265
263
 
266
264
  function onChange(val) {
267
265
  componentHook.selectChange(val, row, column.field, renderOpts, {
@@ -276,22 +274,17 @@ export const VxetableRender = (VXETable, { serviceApi, i18n }) => {
276
274
 
277
275
  return [
278
276
  <el-select
279
- v-model={row[column.field]}
277
+ v-model={row[modelField]}
280
278
  filterable
281
279
  clearable
282
280
  {...props}
283
281
  style="width: 100%"
282
+ class="udp-select-wrapper"
284
283
  onChange={v => onChange(v)}
285
284
  onClear={() => onClear()}
286
285
  >
287
286
  {options.map(item => {
288
- return (
289
- <el-option
290
- key={item[value]}
291
- label={extLabel && item[extLabel] ? item[value] : item[label]}
292
- value={item[value]}
293
- ></el-option>
294
- );
287
+ return <el-option key={item[value]} label={item[label]} value={item[value]}></el-option>;
295
288
  })}
296
289
  </el-select>
297
290
  ];
@@ -300,17 +293,12 @@ export const VxetableRender = (VXETable, { serviceApi, i18n }) => {
300
293
  const { row, column } = params;
301
294
  const { options, props, optionProps = {}, events } = renderOpts;
302
295
  const { label = 'label', value = 'value', extLabel } = optionProps;
303
- const { mapField } = props;
304
-
305
- const componentHook = useComponent();
306
-
307
- if (props.multiple && row[column.field] && !isArray(row[column.field])) {
308
- row[column.field].split(',').forEach(dv => {
309
- const isExit = options.some(option => option[label] === dv);
310
- !isExit && options.push({ [value]: dv, [label]: dv });
311
- });
312
- }
313
-
296
+ const { mapField, multiple } = props;
297
+ console.log('defaultParams');
298
+ // 多选时
299
+ const modelField = multiple ? `_${column.field}` : column.field;
300
+ // 默认值
301
+ componentHook.setDefaultValue(props, row, column.field);
314
302
  function onChange(val) {
315
303
  componentHook.selectChange(val, row, column.field, renderOpts, {
316
304
  column,
@@ -324,7 +312,7 @@ export const VxetableRender = (VXETable, { serviceApi, i18n }) => {
324
312
 
325
313
  return [
326
314
  <el-select
327
- v-model={row[column.field]}
315
+ v-model={row[modelField]}
328
316
  filterable
329
317
  clearable
330
318
  {...props}
@@ -350,6 +338,7 @@ export const VxetableRender = (VXETable, { serviceApi, i18n }) => {
350
338
  const { props, options, optionProps } = renderOpts;
351
339
  // @ts-ignore
352
340
  const { label = 'label', value = 'value', extLabel } = optionProps;
341
+ console.log('defaultParams');
353
342
  const { textValue } = props;
354
343
  let val = row[column.field];
355
344
  const item = options.find(opt => opt[value] === val);
@@ -368,13 +357,15 @@ export const VxetableRender = (VXETable, { serviceApi, i18n }) => {
368
357
  const { data, field } = params;
369
358
  const { options, props, optionProps = {}, events } = renderOpts;
370
359
  const { label = 'label', value = 'value' } = optionProps;
360
+
361
+ const { mapField, multiple } = props;
362
+
371
363
  const componentHook = useComponent();
372
364
 
365
+ // 多选时, model挂载到临时字段上
366
+ const modelField = multiple ? `_${field}` : field;
373
367
  // 默认值
374
- const { defaultValues, mapField } = props;
375
- if (defaultValues) {
376
- data[field] = defaultValues;
377
- }
368
+ componentHook.setDefaultValue(props, data, field);
378
369
  /**
379
370
  * @description: 选中值发生变化时触发
380
371
  * @param {*} val 目前的选中值
@@ -394,7 +385,7 @@ export const VxetableRender = (VXETable, { serviceApi, i18n }) => {
394
385
 
395
386
  return [
396
387
  <el-select
397
- v-model={data[field]}
388
+ v-model={data[modelField]}
398
389
  filterable
399
390
  clearable
400
391
  style="width: 100%"
@@ -409,6 +400,84 @@ export const VxetableRender = (VXETable, { serviceApi, i18n }) => {
409
400
  ];
410
401
  }
411
402
  });
403
+ // 下拉选择
404
+ VXETable.renderer.add('#textarea', {
405
+ renderTableEdit(renderOpts: VxeColumnPropTypes.EditRender, params) {
406
+ const { row, column } = params;
407
+ const { props, events } = renderOpts;
408
+ const { mapField } = props;
409
+
410
+ const componentHook = useComponent();
411
+ function onChange(val) {
412
+ componentHook.change(val, row, column.field, renderOpts, { column, datasource: 'row' });
413
+ }
414
+
415
+ function onClear() {
416
+ componentHook.clear(row, column.field, mapField, events, 'row');
417
+ }
418
+
419
+ return [
420
+ <vxe-textarea
421
+ v-model={row[column.field]}
422
+ {...props}
423
+ style="width: 100%"
424
+ onChange={v => onChange(v)}
425
+ onClear={() => onClear()}
426
+ />
427
+ ];
428
+ },
429
+ renderTableDefault(renderOpts: VxeColumnPropTypes.EditRender, params) {
430
+ const { row, column } = params;
431
+ const { props, events } = renderOpts;
432
+ const { mapField } = props;
433
+
434
+ const componentHook = useComponent();
435
+
436
+ function onChange(val) {
437
+ componentHook.change(val, row, column.field, renderOpts, { column, datasource: 'row' });
438
+ }
439
+
440
+ function onClear() {
441
+ componentHook.clear(row, column.field, mapField, events, 'row');
442
+ }
443
+
444
+ return [
445
+ <vxe-textarea v-model={row[column.field]} {...props} onChange={v => onChange(v)} onClear={() => onClear()} />
446
+ ];
447
+ },
448
+ // 可编辑显示模板
449
+ renderTableCell(renderOpts, params) {
450
+ const { row, column } = params;
451
+ return row[column.field];
452
+ },
453
+ renderItemContent(renderOpts: FormItemRenderOptions, params: FormItemContentRenderParams) {
454
+ const { data, field } = params;
455
+ const { props, events } = renderOpts;
456
+ const componentHook = useComponent();
457
+
458
+ // 默认值
459
+ const { defaultValue, mapField } = props;
460
+ if (defaultValue) {
461
+ data[field] = defaultValue;
462
+ }
463
+ /**
464
+ * @description: 选中值发生变化时触发
465
+ * @param {*} val 目前的选中值
466
+ */
467
+ function onChange(val) {
468
+ componentHook.change(val, data, field, renderOpts, { datasource: 'data' });
469
+ }
470
+
471
+ /**
472
+ * @description: 可清空的单选模式下用户点击清空按钮时触发
473
+ */
474
+ function onClear() {
475
+ componentHook.clear(data, field, mapField, events, 'data');
476
+ }
477
+
478
+ return [<vxe-textarea v-model={data[field]} {...props} onChange={v => onChange(v)} onClear={() => onClear()} />];
479
+ }
480
+ });
412
481
  // Lov
413
482
  VXETable.renderer.add('#lov', {
414
483
  renderItemContent(renderOpts: FormItemRenderOptions, params: FormItemContentRenderParams) {
@@ -445,7 +514,7 @@ export const VxetableRender = (VXETable, { serviceApi, i18n }) => {
445
514
  }, '');
446
515
  Object.assign(data, obj);
447
516
  }
448
- const parm = { row: data, property: field, item: record, field };
517
+ const parm = { data, options: record, field };
449
518
  events?.change && events.change(parm);
450
519
  }
451
520
 
@@ -457,13 +526,7 @@ export const VxetableRender = (VXETable, { serviceApi, i18n }) => {
457
526
  }
458
527
 
459
528
  return [
460
- <ut-lov
461
- record={data}
462
- {...props}
463
- mode="vxe"
464
- onChange={(v, f) => onChange(v, f)}
465
- onClear={() => onClear()}
466
- />
529
+ <ut-lov record={data} {...props} mode="vxe" onChange={(v, f) => onChange(v, f)} onClear={() => onClear()} />
467
530
  ];
468
531
  },
469
532
  // 单元格编辑
@@ -471,6 +534,7 @@ export const VxetableRender = (VXETable, { serviceApi, i18n }) => {
471
534
  const { row, column } = params;
472
535
  const { props, events } = renderOpts;
473
536
  const componentHook = useComponent();
537
+ console.log('lov====');
474
538
  function onChange(record, displayField) {
475
539
  const { mapField, field, displayName, multiple } = props;
476
540
  if (!multiple) {
@@ -482,7 +546,8 @@ export const VxetableRender = (VXETable, { serviceApi, i18n }) => {
482
546
  }
483
547
  Object.assign(row, obj);
484
548
  }
485
- events?.change && events.change(params, record, row[column.field]);
549
+ const params = { row, options: record, field: column.field, column };
550
+ events?.change && events.change(params);
486
551
  }
487
552
 
488
553
  function onClear() {
@@ -493,6 +558,7 @@ export const VxetableRender = (VXETable, { serviceApi, i18n }) => {
493
558
  <ut-lov
494
559
  record={row}
495
560
  mode="vxe"
561
+ transfer
496
562
  {...props}
497
563
  onChange={(v, f) => onChange(v, f)}
498
564
  onClear={() => onClear()}
@@ -515,7 +581,8 @@ export const VxetableRender = (VXETable, { serviceApi, i18n }) => {
515
581
  }
516
582
  Object.assign(row, obj);
517
583
  }
518
- events?.change && events.change(params, record, row[column.field]);
584
+ const params = { row, options: record, field: column.field, column };
585
+ events?.change && events.change(params);
519
586
  }
520
587
  /**
521
588
  * @description 清空数据
@@ -525,13 +592,7 @@ export const VxetableRender = (VXETable, { serviceApi, i18n }) => {
525
592
  }
526
593
 
527
594
  return [
528
- <ut-lov
529
- record={row}
530
- mode="ele"
531
- {...props}
532
- onChange={(v, f) => onChange(v, f)}
533
- onClear={() => onClear()}
534
- />
595
+ <ut-lov record={row} mode="ele" {...props} onChange={(v, f) => onChange(v, f)} onClear={() => onClear()} />
535
596
  ];
536
597
  },
537
598
  // 可编辑显示模板
@@ -542,19 +603,77 @@ export const VxetableRender = (VXETable, { serviceApi, i18n }) => {
542
603
  });
543
604
  // form upload
544
605
  VXETable.renderer.add('#upload', {
606
+ renderTableEdit(renderOpts: VxeColumnPropTypes.EditRender, params) {
607
+ const { row, column } = params;
608
+ const { props, events } = renderOpts;
609
+
610
+ /**
611
+ * @description: 点击清空按钮时触发
612
+ */
613
+ function onClear(file, fielist) {
614
+ row[column.field] = '';
615
+ events?.remove && events?.remove(file, fielist);
616
+ }
617
+
618
+ return [
619
+ <form-upload2
620
+ record={row}
621
+ field={column.field}
622
+ size="mini"
623
+ {...props}
624
+ render-mode="column"
625
+ data-status="edit"
626
+ onRemove={(file, fielist) => onClear(file, fielist)}
627
+ />
628
+ ];
629
+ },
630
+
631
+ // 可编辑显示模板
632
+ renderTableCell(renderOpts, params) {
633
+ const { row, column } = params;
634
+ const { props } = renderOpts;
635
+ return [
636
+ <form-upload2
637
+ record={row}
638
+ field={column.field}
639
+ size="mini"
640
+ {...props}
641
+ mode="image"
642
+ render-mode="column"
643
+ data-status="detail"
644
+ />
645
+ ];
646
+ },
545
647
  renderItemContent(renderOpts: FormItemRenderOptions, params: FormItemContentRenderParams) {
546
648
  const { data, field } = params;
547
649
  const { props, events } = renderOpts;
548
-
549
650
  /**
550
651
  * @description: 点击清空按钮时触发
551
652
  */
552
- function onClear() {
653
+ function onClear(file, fielist) {
553
654
  data[field] = '';
554
- componentHook.clear(data, field, props.mapField, events, 'data');
655
+ events?.remove && events?.remove(file, fielist);
555
656
  }
556
657
 
557
- return [<form-upload2 record={data} field={field} {...props} onClear={() => onClear()} />];
658
+ if (props.singleMode) {
659
+ // 单个模式下,限制只能单个上传
660
+ Object.assign(props, { multiple: false, limitCount: 1, autoHiddenButton: true });
661
+ }
662
+ if (!props.mode || props.mode === 'image') {
663
+ props.imageTypes = ['jpg', 'jpeg', 'png', 'gif', 'apk'];
664
+ }
665
+
666
+ console.log({ props });
667
+
668
+ return [
669
+ <form-upload2
670
+ record={data}
671
+ field={field}
672
+ mode="image"
673
+ {...props}
674
+ onRemove={(file, fielist) => onClear(file, fielist)}
675
+ />
676
+ ];
558
677
  }
559
678
  });
560
679
 
@@ -772,7 +891,16 @@ export const VxetableRender = (VXETable, { serviceApi, i18n }) => {
772
891
  }
773
892
  events?.clear && events.clear({ [datasource]: data, field });
774
893
  };
775
- return { clear, remote, selectChange, setDefaultValue };
894
+ const change = (data, field, mapField, events, datasource) => {
895
+ data[field] = null;
896
+ if (!isEmpty(mapField)) {
897
+ for (const key in mapField) {
898
+ data[key] = null;
899
+ }
900
+ }
901
+ events?.change && events.change({ [datasource]: data, field });
902
+ };
903
+ return { clear, change, remote, selectChange, setDefaultValue };
776
904
  };
777
905
 
778
906
  /**