@utogether/udp-core 1.0.1 → 1.0.3

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-D6H3sArg.js} +7 -6
  3. package/dist/{404-BcdMJfPb.js → 404-DTyfysQ2.js} +14 -13
  4. package/dist/{500-bsa3F_cc.js → 500-DKaVDaBm.js} +10 -9
  5. package/dist/{AuthorityInfo-CqItgNs5.js → AuthorityInfo-DQULR69Y.js} +1 -1
  6. package/dist/AuthorityInfo.vue_vue_type_style_index_0_lang-CzAnoTnO.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-BWFrR-Cq.js} +3 -3
  10. package/dist/{CompanyPanel-CNrdq4XE.js → CompanyPanel-Dh814lsw.js} +16 -16
  11. package/dist/{Department-CqcpfL4i.js → Department-DagPxerl.js} +10 -10
  12. package/dist/{DepartmentPanel-Bvti4LGu.js → DepartmentPanel-BVy2YGED.js} +108 -78
  13. package/dist/{DesignPanel-CjykspE1.js → DesignPanel-DKfjfj2S.js} +1 -1
  14. package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-BK9EERdd.js → DesignPanel.vue_vue_type_style_index_0_lang-D-a8W08Y.js} +24 -26
  15. package/dist/DictView-CE5nEiKu.js +110 -0
  16. package/dist/InvOrganization-CZk_EbFZ.js +74 -0
  17. package/dist/Org-BO8jfnqN.js +39 -0
  18. package/dist/{Preview-Cm_7RhYU.js → Preview-DYJaP96f.js} +2 -2
  19. package/dist/{ReportDefine-CJVlQ--7.js → ReportDefine-DZXbs7iX.js} +1 -1
  20. package/dist/{ReportDesign-B0unlrkt.js → ReportDesign-CSdqOQ1D.js} +46 -46
  21. package/dist/{ReportQuery-BKuMCEvF.js → ReportQuery-_Vdt3CnA.js} +5 -5
  22. package/dist/{ReportQueryFrom-DAngMJLU.js → ReportQueryFrom-BWKddh9p.js} +1 -1
  23. package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-CPpwmztJ.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-DbdGwioi.js} +6 -5
  24. package/dist/{ReportTemplate-8YH3L8Pv.js → ReportTemplate-DS-DGao8.js} +26 -26
  25. package/dist/{Role-MxI30-0W.js → Role-BM0kEu7y.js} +6 -6
  26. package/dist/{RoleAssign-BzUY_y_y.js → RoleAssign-Cp05HUWn.js} +9 -9
  27. package/dist/{RolePanel-DS_TErTn.js → RolePanel-DeuHpCdK.js} +1 -1
  28. package/dist/{RolePanel-CXdcvsR5.js → RolePanel-hXeshcCZ.js} +1 -1
  29. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-Ddl-A7Zh.js → RolePanel.vue_vue_type_script_setup_true_lang-Bf0pSCTN.js} +42 -36
  30. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-CNyWCIJm.js +132 -0
  31. package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-DnchUgIF.js → ScrollPanel.vue_vue_type_style_index_0_lang-BiKe39xG.js} +20 -20
  32. package/dist/{Staff-D7tXo_Gn.js → Staff-DLltLFMl.js} +3 -3
  33. package/dist/{StaffInfo-Bk8BY8PO.js → StaffInfo-pfELaI_i.js} +1 -1
  34. package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-DqKwZi5f.js → StaffInfo.vue_vue_type_script_setup_true_lang-BKKdNggm.js} +13 -13
  35. package/dist/{StaffPanel-VtpGCTIq.js → StaffPanel-D3Pk28JN.js} +1 -1
  36. package/dist/StaffPanel.vue_vue_type_script_setup_true_lang-D9HLeyKe.js +143 -0
  37. package/dist/{SysUser-D0Q6OvD7.js → SysUser-BOh7ejz3.js} +2 -2
  38. package/dist/{SysUserPanel-1_vrsANQ.js → SysUserPanel-RElVo0BV.js} +1 -1
  39. package/dist/SysUserPanel.vue_vue_type_script_setup_true_lang-DoW0v5y9.js +341 -0
  40. package/dist/{SystemMenu-9PG3vESE.js → SystemMenu-DZneBqKO.js} +53 -51
  41. package/dist/{UserInfo-qgXUEGwi.js → UserInfo-D9qo_f_9.js} +1 -1
  42. package/dist/{UserInfo.vue_vue_type_style_index_0_lang-CN0C5rVk.js → UserInfo.vue_vue_type_style_index_0_lang-CY4dtMnZ.js} +35 -33
  43. package/dist/{childView-C7ZSA5fR.js → childView-CmlGxD9G.js} +1 -1
  44. package/dist/{childView-yV2QLwfA.js → childView-DStrPumM.js} +1 -1
  45. package/dist/{childView.vue_vue_type_style_index_0_lang-DdKxPGdh.js → childView.vue_vue_type_style_index_0_lang-B9k694be.js} +23 -24
  46. package/dist/childView.vue_vue_type_style_index_0_lang-Dtv1rrdP.js +177 -0
  47. package/dist/{code-rule-95K1jr-u.js → code-rule-CxzgQDH_.js} +42 -41
  48. package/dist/core.es.js +19 -10
  49. package/dist/{cron-task-DGrQwOHs.js → cron-task-kbyRTz97.js} +5 -5
  50. package/dist/flow-task-B07st2aD.js +10 -0
  51. package/dist/{frameView-7SmME93D.js → frameView-BawZlIge.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-nkstuOxE.js +5533 -0
  56. package/dist/{layoutView-C6WIVWGZ.js → layoutView-DVGqPJmA.js} +1776 -1764
  57. package/dist/{log-in-e7D5Ss1P.js → log-in-j2PZGLQH.js} +36 -29
  58. package/dist/log-out-DIJU-Vpf.js +130 -0
  59. package/dist/login-DvmHMcgD.js +251 -0
  60. package/dist/{login-log-CvVnyGi3.js → login-log-DJBGJVV0.js} +10 -8
  61. package/dist/{lov-view-DoF5LqFQ.js → lov-view-C-dIDLh8.js} +9 -9
  62. package/dist/{menuInfo-CNzGQwOD.js → menuInfo-D0mcKmrT.js} +1 -1
  63. package/dist/{menuInfo.vue_vue_type_style_index_0_lang-51SYxVc_.js → menuInfo.vue_vue_type_style_index_0_lang-CbwS7aGl.js} +144 -121
  64. package/dist/pda-app-BjvyTDkw.js +710 -0
  65. package/dist/redirect-BqegffKC.js +15 -0
  66. package/dist/{resource-gVFFMO9l.js → resource-BknIxaTQ.js} +17 -17
  67. package/dist/{su-welcome-BN_s_RX_.js → su-welcome-CwtvamZC.js} +137 -139
  68. package/dist/sys-config-CCKhGcCL.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 +116 -46
  106. package/src/plugins/vxe-table/render.tsx +950 -817
  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 +222 -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 +171 -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 +185 -191
  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 +174 -180
  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 +315 -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
@@ -1,208 +0,0 @@
1
- <!--
2
- * @Author: levi7754 levi7754@163.com
3
- * @Date: 2023-08-31 17:54:43
4
- * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2024-06-22 10:14:16
6
- * @FilePath: /u-dp-lowcode/src/views/design/packages/contain-widgets/table/table-primary.vue
7
- * @Description: 默认表格
8
- -->
9
- <template>
10
- <vxe-grid ref="xgrid" class="w-full p-1 bg-white" v-bind="gridOptions" v-on="onEvent" />
11
- </template>
12
- <script setup lang="tsx">
13
- import { ref, toRaw, onBeforeMount, onMounted, getCurrentInstance, inject } from 'vue';
14
- import { formatGridItems, formatRules, successMessage, useRender, errorMessage } from '@utogether/utils';
15
- import { useI18n } from 'vue-i18n';
16
- import { clone } from 'xe-utils';
17
- import { getServiceApi } from '../../../api';
18
- import { columnButtons } from '../utils/slot';
19
- import { footerSumMethod, query } from '../utils';
20
-
21
- defineOptions({ name: 'WidgetTable', inheritAttrs: false });
22
-
23
- interface IProps {
24
- widget: IRecord;
25
- designMode: boolean;
26
- }
27
-
28
- const props = withDefaults(defineProps<IProps>(), {
29
- widget: (): IRecord => {
30
- return {};
31
- },
32
- designMode: true
33
- });
34
-
35
- const designer = inject<IRecord>('kdesigner');
36
-
37
- const instance = getCurrentInstance();
38
-
39
- const renderHook = useRender();
40
- const { t } = useI18n();
41
-
42
- const xgrid = ref(null);
43
-
44
- const gridOptions = ref({
45
- ...props.widget.props,
46
- // height: 560,
47
- proxyConfig: {
48
- form: true, // 启用表单代理
49
- autoLoad: props.widget.props.autoLoad,
50
- ajax: {
51
- query: ({ page, form }) => query(props.widget, form, page, getServiceApi())
52
- }
53
- }
54
- });
55
-
56
- const formaterItemRender = items => {
57
- if (!items.length) return [];
58
- items.forEach(item => {
59
- if (item.renderType === 'number') {
60
- item.itemRender = renderHook.renderNumber();
61
- } else if (['date'].includes(item.renderType)) {
62
- item.itemRender = renderHook.renderDate();
63
- } else if (item.renderType === 'switch') {
64
- item.itemRender = renderHook.renderSwitch();
65
- }
66
- });
67
-
68
- return items;
69
- };
70
-
71
- const initFormItem = () => {
72
- let formItems = clone(gridOptions.value.formConfig.items, true);
73
- const items = props.widget.props.columns.filter(
74
- f => f.searchable && (!formItems.length || !formItems.some(s => f.field === s.field))
75
- );
76
- const idx = formItems.findIndex(f => f.itemRender?.name === '$buttons');
77
- idx !== -1 && formItems.splice(idx, 1);
78
- items.length && formItems.push(...items);
79
- formItems = formaterItemRender(formItems);
80
- gridOptions.value.formConfig.items = formItems.length ? formatGridItems(formItems, null) : [];
81
- console.log(formItems);
82
- };
83
-
84
- const initColums = () => {
85
- gridOptions.value.columns.forEach(col => {
86
- if (col.field !== 'operate') {
87
- const events = col.editRender?.events ? Object.keys(col.editRender?.events) : [];
88
- events.forEach(event => {
89
- const actEvent = event.substring(2).toLowerCase();
90
- const body = col.editRender?.events[event];
91
- col.editRender.events[actEvent] = e => {
92
- new Function('event', 'columns', body)(e, gridOptions.value.columns);
93
- };
94
- });
95
- } else {
96
- col = columnButtons(gridOptions.value.operates, col, onRowBtnClick);
97
- }
98
- });
99
- console.log(gridOptions.value.columns);
100
- };
101
-
102
- /** 初始化必填验证 */
103
- const initEditRule = () => {
104
- gridOptions.value.editRules = formatRules(gridOptions.value.columns, t);
105
- console.log(gridOptions.value);
106
- };
107
- /** 表格合计 */
108
- const initFooterMethod = () => {
109
- if (!gridOptions.value.showFooter) return;
110
- const sumFields = gridOptions.value.columns.filter(f => f.sumcolumn).map(m => m.field);
111
- gridOptions.value.footerMethod = grid => footerSumMethod(grid, sumFields, gridOptions.value.decimal);
112
- };
113
-
114
- const initBasicProps = () => {
115
- gridOptions.value.height = window.innerHeight - 90;
116
- };
117
-
118
- const onRowBtnClick = (btn, row) => {
119
- console.log(btn, row);
120
- const { service } = btn;
121
- if (service.url) {
122
- const { beforeSend, method, url, respondSuccess } = service;
123
- let body = clone(row, true);
124
- if (beforeSend) {
125
- const fn = new Function('body', 'app', beforeSend);
126
- body = fn(row, designer.value, instance);
127
- }
128
- gridOptions.value.loading = true;
129
- getServiceApi()
130
- [method](url, body)
131
- .then(res => {
132
- if (respondSuccess) {
133
- const fn = new Function('respond', 'app', 'self', respondSuccess);
134
- fn(res, designer.value, instance);
135
- } else {
136
- successMessage();
137
- }
138
- xgrid.value.commitProxy('query');
139
- })
140
- .catch(() => {
141
- errorMessage();
142
- })
143
- .finally(() => {
144
- gridOptions.value.loading = false;
145
- });
146
- } else {
147
- // designer.value.onEvent(btn.onClick, { code: btn.code, row });
148
- // const app = designer.value.vinstance || instance;
149
- // console.log(app);
150
- new Function('code', 'row', 'app', btn.onClick)(btn.code, row, designer.value);
151
- }
152
- };
153
-
154
- const onEvent = {
155
- editActived: ({ row }) => {
156
- console.log(row);
157
- }
158
- };
159
-
160
- const initGridProps = () => {
161
- initBasicProps();
162
- initColums();
163
- initFooterMethod();
164
- initFormItem();
165
- initEditRule();
166
- };
167
-
168
- onBeforeMount(() => {
169
- initGridProps();
170
- console.log('onBeforeMount ==== ', props.widget.props);
171
- // console.log('onBeforeMount ==== ', gridOptions.value);
172
- // Object.assign(gridOptions.value, props.widget.props);
173
- });
174
-
175
- const refresh = () => {
176
- xgrid.value.commitProxy('query');
177
- };
178
-
179
- const getSelected = () => {
180
- const firstColumn = gridOptions.value.columns[0];
181
- if (firstColumn.type === 'checkbox') {
182
- return xgrid.value.getCheckboxRecords();
183
- } else if (firstColumn.type === 'radio') {
184
- return xgrid.value.getRadioRecord();
185
- }
186
- };
187
-
188
- const getTableData = () => {
189
- return xgrid.value.getTableData();
190
- };
191
-
192
- const getInstance = () => {
193
- return toRaw(xgrid.value);
194
- };
195
-
196
- defineExpose({
197
- refresh,
198
- getSelected,
199
- getTableData,
200
- getInstance
201
- });
202
-
203
- onMounted(() => {
204
- if (!props.designMode) {
205
- designer.value.eventHandle(null, 'onMounted', props.widget, instance);
206
- }
207
- });
208
- </script>
@@ -1,103 +0,0 @@
1
- /*
2
- * @Author: levi7754 levi7754@163.com
3
- * @Date: 2023-07-24 17:49:20
4
- * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2023-10-13 17:06:38
6
- * @FilePath: /u-dp-lowcode/src/views/design/utils/index.ts
7
- * @Description: 获取样式
8
- */
9
-
10
- import { clone, isString, toDateString, isEmpty } from 'xe-utils';
11
- import { cookies } from '@utogether/utils';
12
-
13
- const CKEY = 'kCookies_param';
14
-
15
- export const getStyle = el => {
16
- if (!el.type || el.type !== 'block') {
17
- return {
18
- width: (25 / 6) * el.props.width + '%'
19
- };
20
- } else {
21
- const style = { width: 0, height: 0 };
22
- const arr = el.props.style;
23
- if (el.props.divWidth) {
24
- style.width = el.props.divWidth;
25
- }
26
- if (el.props.divHeight) {
27
- style.height = el.props.divHeight;
28
- }
29
- if (arr && arr.length > 0) {
30
- arr.forEach(el => {
31
- style[el.label] = el.value;
32
- });
33
- }
34
- return style;
35
- }
36
- };
37
-
38
- /**
39
- * @param grid 表格数据
40
- * @param fields 合并字段列表
41
- * @param decimal 精度
42
- * @returns 合并数据
43
- */
44
- export const footerSumMethod = (grid, fields, decimal) => {
45
- return [
46
- grid.columns.map((column, columnIndex) => {
47
- if (columnIndex === 0) {
48
- return '合计';
49
- }
50
- if (fields.includes(column.property)) {
51
- const total = grid.data.reduce((prev, cur) => {
52
- return prev + Number(cur[column.property] || 0);
53
- }, 0);
54
- const ss = total ? Number(total.toFixed(decimal || 2)) : total;
55
- return ss;
56
- }
57
- return '';
58
- })
59
- ];
60
- };
61
-
62
- /** 查询服务 */
63
- export const query = (widget, form, page, http, fetchParam?) => {
64
- for (const i in form) {
65
- if (form[i] && isString(form[i])) {
66
- form[i] = form[i].trim();
67
- }
68
- }
69
- const params = {
70
- pageNum: page.currentPage,
71
- pageSize: page.pageSize
72
- };
73
- const commonParam = cookies.get(CKEY) ? JSON.parse(cookies.get(CKEY)) : {};
74
- Object.assign(params, commonParam, form, fetchParam || {});
75
- const query = formatDateRange(params, widget.props.formConfig.items);
76
- return http.get(widget.props.url, query);
77
- };
78
-
79
- const startFormatter = 'yyyy-MM-dd 00:00:00';
80
- const endFormatter = 'yyyy-MM-dd 23:59:59';
81
- const formatDateRange = (listQuery: any, formItems) => {
82
- const dateRanges = formItems.filter(
83
- f => f.itemRender?.name === '#SuDateRange' || f.itemRender?.props?.multiple || f.multiple
84
- );
85
- if (isEmpty(dateRanges)) return listQuery;
86
- const query = clone(listQuery, true);
87
- dateRanges.forEach((element: any) => {
88
- if (element.multiple || element.itemRender?.props?.multiple) {
89
- query[element.field] = query[element.field]?.join(',');
90
- } else {
91
- const val = query[element.field];
92
- if (val && element.toField) {
93
- query[element.fromField] = toDateString(val[0], startFormatter);
94
- query[element.toField] = toDateString(val[1], endFormatter);
95
- } else if (val) {
96
- query[`${element.field}From`] = toDateString(val[0], startFormatter);
97
- query[`${element.field}To`] = toDateString(val[1], endFormatter);
98
- }
99
- delete query[element.field];
100
- }
101
- });
102
- return query;
103
- };
@@ -1,50 +0,0 @@
1
- /*
2
- * @Author: levi7754 levi7754@163.com
3
- * @Date: 2023-09-21 16:26:11
4
- * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2023-09-23 10:59:43
6
- * @FilePath: /u-dp-lowcode/src/views/design/utils/slot.tsx
7
- * @Description: slot 工具函数
8
- */
9
- const systemStatus = ['primary', 'success', 'warning', 'danger'];
10
-
11
- export const columnButtons = (buttons, col, cb?) => {
12
- const count = buttons.length;
13
- if (count > 3) {
14
- const front2Buttons = buttons.filter((f, idx) => idx < 2);
15
- const dropdownButtons = buttons.filter((f, idx) => idx > 1);
16
- col.slots = {
17
- default: ({ row }) => {
18
- const btns = front2Buttons.map((btn, idx) => colButton(btn, row, idx, cb));
19
- const drop = (
20
- <vxe-button status="primary" transfer>
21
- {{
22
- default: () => '更多',
23
- dropdowns: () => dropdownButtons.map((btn, idx) => colButton(btn, row, idx, cb))
24
- }}
25
- </vxe-button>
26
- );
27
- btns.push(drop);
28
- return btns;
29
- }
30
- };
31
- } else {
32
- col.slots = {
33
- default: ({ row }) => buttons.map((btn, idx) => colButton(btn, row, idx, cb))
34
- };
35
- }
36
- return col;
37
- };
38
-
39
- const colButton = (btn, row, idx, cb) => {
40
- const statusIdx = idx % systemStatus.length;
41
- return (
42
- <vxe-button
43
- content={btn.name}
44
- auth={btn.code}
45
- icon={btn.icon}
46
- status={btn.status || systemStatus[statusIdx]}
47
- onClick={() => cb && cb(btn, row)}
48
- />
49
- );
50
- };
@@ -1,132 +0,0 @@
1
- <!--
2
- * @Author: wei.li
3
- * @Date: 2022-11-04 14:53:36
4
- * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2025-07-14 18:32:47
6
- * @Description: form upload
7
- -->
8
- <template>
9
- <div v-spinning="loading" class="ut-upload-wrapper">
10
- <el-upload
11
- v-model:file-list="fileList"
12
- :action="baseUrl + '/ufil/file/uploadMultipart'"
13
- list-type="picture-card"
14
- :headers="headers"
15
- :before-upload="beforeUpload"
16
- :on-success="onSuccess"
17
- :on-preview="onPreview"
18
- :on-remove="handleRemove"
19
- >
20
- <template #default>
21
- <i class="ri-add-line" />
22
- </template>
23
- </el-upload>
24
- </div>
25
- </template>
26
-
27
- <script lang="ts">
28
- export default { name: 'FormUpload' };
29
- </script>
30
-
31
- <script setup lang="ts">
32
- import { ref, computed, getCurrentInstance } from 'vue';
33
- import { cookies } from '@utogether/utils';
34
- // import type { UploadProps } from "element-plus";
35
- // import { loadEnv } from "@build/index";
36
-
37
- // const { VITE_BASE_URL } = loadEnv();
38
-
39
- export interface IProps {
40
- record: object;
41
- field: string;
42
- limit?: number;
43
- beforeUpload?: Function;
44
- onSuccess?: Function;
45
- onRemove?: Function;
46
- }
47
- const props = withDefaults(defineProps<IProps>(), {
48
- record: () => {
49
- return {};
50
- },
51
- field: '',
52
- limit: 1
53
- });
54
-
55
- const instance = getCurrentInstance()!;
56
- const baseUrl = instance.appContext.config.globalProperties.$url;
57
-
58
- const headers = computed(() => {
59
- const kTOKENKEY = 'authorized-token';
60
- const token = cookies.get(kTOKENKEY)!;
61
- const data = JSON.parse(token);
62
- const headers = {
63
- Authorization: 'Bearer ' + data.accessToken
64
- };
65
- return headers;
66
- });
67
-
68
- const fileList = ref([]);
69
- const loading = ref(false);
70
- const display = ref('flex');
71
-
72
- const beforeUpload = file => {
73
- if (props.beforeUpload) {
74
- return props.beforeUpload(file);
75
- }
76
- console.log(file);
77
- loading.value = true;
78
- return true;
79
- };
80
-
81
- const onSuccess = response => {
82
- loading.value = false;
83
- if (props.onSuccess) {
84
- return props.onSuccess(response);
85
- } else {
86
- const field = props.field;
87
- Object.assign(props.record, { [field]: response.data });
88
- display.value = props.limit > fileList.value.length ? 'flex' : 'none';
89
- }
90
- };
91
-
92
- const handleRemove = (uploadFile, uploadFiles) => {
93
- if (props.onRemove) {
94
- return props.onRemove(uploadFile, fileList);
95
- }
96
- loading.value = false;
97
- console.log(uploadFile, uploadFiles);
98
- display.value = 'flex';
99
- emit('remove', uploadFile, fileList);
100
- };
101
-
102
- const onPreview = () => {
103
- console.log('....');
104
- };
105
- const emit = defineEmits<{
106
- (e: 'remove', file: File, fileList: any): void;
107
- }>();
108
- </script>
109
-
110
- <style lang="scss">
111
- .ut-upload-wrapper {
112
- .el-upload--picture-card {
113
- display: v-bind(display);
114
- width: 60px !important;
115
- height: 60px !important;
116
- }
117
-
118
- .el-upload-list--picture-card .el-upload-list__item {
119
- width: 60px !important;
120
- height: 60px !important;
121
- }
122
-
123
- .el-upload-list--picture-card .el-progress {
124
- width: 50px !important;
125
-
126
- .el-progress-circle {
127
- width: 50px !important;
128
- height: 50px !important;
129
- }
130
- }
131
- }
132
- </style>
@@ -1,180 +0,0 @@
1
- <!--
2
- * @Author: wei.li
3
- * @Date: 2021-11-29 21:02:43
4
- * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2025-07-14 17:38:19
6
- * @Description: file content
7
- -->
8
-
9
- <template>
10
- <div>
11
- <vxe-modal
12
- v-model="showModal"
13
- :title="title"
14
- :width="width"
15
- :height="height"
16
- :loading="loading"
17
- :show-footer="dataStatus !== 'detail'"
18
- v-bind="modalAttrs"
19
- min-width="240"
20
- min-height="300"
21
- destroy-on-close
22
- resize
23
- @close="onClose"
24
- >
25
- <template #default>
26
- <vxe-form
27
- ref="xForm"
28
- :data="record"
29
- :items="formItems"
30
- :rules="rules"
31
- title-align="right"
32
- :title-width="formAttrs.titleWidth || 90"
33
- v-bind="formAttrs"
34
- />
35
- </template>
36
- <template #footer>
37
- <ut-button status="warning" content="cancel" icon="ri-close-line" @tap="onClose" />
38
- <ut-button status="u-cyan" content="confirm" icon="ri-save-3-line" @tap="onConfirm" />
39
- </template>
40
- </vxe-modal>
41
- </div>
42
- </template>
43
-
44
- <script lang="ts">
45
- export default {
46
- name: 'UtModalForm'
47
- };
48
- </script>
49
- <script lang="ts" setup>
50
- import { onBeforeMount, ref, computed, getCurrentInstance, useAttrs } from 'vue';
51
- import { useI18n } from 'vue-i18n';
52
- import { getAttrs, formatItems } from './utils';
53
- import to from 'await-to-js';
54
- import { formatRules, successMessage } from '@utogether/utils';
55
-
56
- // import type { IRecord, IFormItemProps } from '../../types';
57
-
58
- export interface IProps {
59
- record: IRecord; // 数据对象
60
- formAttrs?: IRecord;
61
- modalAttrs?: IRecord;
62
- items: Array<IFormItemProps>; // form item
63
- url?: string; // 服务路径
64
- method?: string; // 请求方式
65
- title?: string; // 标题
66
- dataStatus?: string; // 状态
67
- width?: number;
68
- height?: number;
69
- }
70
-
71
- const props = withDefaults(defineProps<IProps>(), {
72
- record: (): IRecord => {
73
- return {};
74
- },
75
- formAttrs: (): IRecord => {
76
- return {};
77
- },
78
- items: () => [],
79
- title: '数据记录',
80
- width: 420,
81
- height: 360,
82
- dataStatus: 'detail',
83
- url: '',
84
- method: 'post'
85
- });
86
-
87
- const attrs: IRecord = getAttrs(useAttrs());
88
-
89
- const loading = ref(false);
90
- const instance = getCurrentInstance()!;
91
-
92
- const serviceApi = instance.appContext.config.globalProperties.$serviceApi;
93
-
94
- /**
95
- * @description: 根据items 获取必填选
96
- */
97
- const rules = computed(() => {
98
- if (!props.items.length) return {};
99
- return formatRules(props.items, t);
100
- });
101
-
102
- const formItems = computed(() => {
103
- if (!props.items.length) return props.items;
104
- return formatItems(props.items, props.dataStatus);
105
- });
106
-
107
- const { t } = useI18n();
108
- const showModal = ref(false);
109
-
110
- const xForm = ref(null);
111
- /**
112
- * @description: 弹框确认
113
- */
114
- const onConfirm = () => {
115
- // @ts-ignore
116
- xForm.value.validate(async (valid: boolean) => {
117
- if (!valid) {
118
- const { record, url, method } = props;
119
- if (url) {
120
- showLoading();
121
- const body = attrs?.dataProcessMethod ? attrs?.dataProcessMethod(record) : record;
122
- if (url) {
123
- const [err, data] = await to(serviceApi[method](url, body));
124
- if (!err) {
125
- successMessage();
126
- emit('confirm', data);
127
- }
128
- }
129
- hiddenLoading();
130
- onClose();
131
- } else {
132
- emit('confirm');
133
- }
134
- }
135
- });
136
- };
137
-
138
- /**
139
- * @description: 显示加载框
140
- */
141
- const showLoading = () => {
142
- loading.value = true;
143
- };
144
-
145
- /**
146
- * @description: 关闭加载框
147
- */
148
- const hiddenLoading = () => {
149
- loading.value = false;
150
- };
151
- const validateForm = (cb: Function) => {
152
- // @ts-ignore
153
- xForm.value.validate(cb);
154
- };
155
-
156
- /**
157
- * @description: 关闭弹框
158
- */
159
- const onClose = () => {
160
- showModal.value = false;
161
- emit('close');
162
- };
163
- /**
164
- * @description: 打开弹框
165
- */
166
- const openModal = () => {
167
- showModal.value = true;
168
- };
169
-
170
- const emit = defineEmits<{
171
- (e: 'close'): void;
172
- (e: 'confirm', record?: any): void;
173
- }>();
174
-
175
- defineExpose({ showLoading, hiddenLoading, openModal, validateForm });
176
-
177
- onBeforeMount(() => {
178
- openModal();
179
- });
180
- </script>