@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
@@ -1,127 +0,0 @@
1
- <script setup lang="ts">
2
- import { ref, watch } from 'vue';
3
- import { message } from '@/utils/message';
4
- import { FormInstance } from 'element-plus';
5
-
6
- const SELECT_OPTIONS = [
7
- { label: '网关', value: 1 },
8
- { label: '人工智能', value: 2 },
9
- { label: 'CVM', value: 3 },
10
- { label: '防火墙', value: 4 },
11
- { label: '未知', value: 5 }
12
- ];
13
-
14
- const props = defineProps({
15
- visible: {
16
- type: Boolean,
17
- default: false
18
- },
19
- data: {
20
- type: Object,
21
- default: () => {
22
- return {};
23
- }
24
- }
25
- });
26
-
27
- const ruleFormRef = ref<FormInstance>();
28
-
29
- const formVisible = ref(false);
30
- const formData = ref(props.data);
31
- const textareaValue = ref('');
32
-
33
- const submitForm = async (formEl: FormInstance | undefined) => {
34
- if (!formEl) return;
35
- await formEl.validate(valid => {
36
- if (valid) {
37
- message('提交成功', { type: 'success' });
38
- formVisible.value = false;
39
- resetForm(formEl);
40
- }
41
- });
42
- };
43
-
44
- const resetForm = (formEl: FormInstance | undefined) => {
45
- if (!formEl) return;
46
- formEl.resetFields();
47
- };
48
-
49
- const closeDialog = () => {
50
- formVisible.value = false;
51
- resetForm(ruleFormRef.value);
52
- };
53
-
54
- const emit = defineEmits(['update:visible']);
55
- watch(
56
- () => formVisible.value,
57
- val => {
58
- emit('update:visible', val);
59
- }
60
- );
61
-
62
- watch(
63
- () => props.visible,
64
- val => {
65
- formVisible.value = val;
66
- }
67
- );
68
-
69
- watch(
70
- () => props.data,
71
- val => {
72
- formData.value = val;
73
- }
74
- );
75
-
76
- const rules = {
77
- name: [{ required: true, message: '请输入产品名称', trigger: 'blur' }]
78
- };
79
- </script>
80
-
81
- <template>
82
- <el-dialog v-model="formVisible" title="新建产品" :width="680" draggable :before-close="closeDialog">
83
- <!-- 表单内容 -->
84
- <el-form ref="ruleFormRef" :model="formData" :rules="rules" label-width="100px">
85
- <el-form-item label="产品名称" prop="name">
86
- <el-input v-model="formData.name" :style="{ width: '480px' }" placeholder="请输入产品名称" />
87
- </el-form-item>
88
- <el-form-item label="产品状态" prop="status">
89
- <el-radio-group v-model="formData.status">
90
- <el-radio label="0">已停用</el-radio>
91
- <el-radio label="1">已启用</el-radio>
92
- </el-radio-group>
93
- </el-form-item>
94
- <el-form-item label="产品描述" prop="description">
95
- <el-input
96
- v-model="formData.description"
97
- :style="{ width: '480px' }"
98
- placeholder="请输入产品描述"
99
- />
100
- </el-form-item>
101
- <el-form-item label="产品类型" prop="type">
102
- <el-select v-model="formData.type" clearable :style="{ width: '480px' }">
103
- <el-option
104
- v-for="(item, index) in SELECT_OPTIONS"
105
- :key="index"
106
- :value="item.value"
107
- :label="item.label"
108
- >
109
- {{ item.label }}
110
- </el-option>
111
- </el-select>
112
- </el-form-item>
113
- <el-form-item label="备注" prop="mark">
114
- <el-input
115
- v-model="textareaValue"
116
- type="textarea"
117
- :style="{ width: '480px' }"
118
- placeholder="请输入内容"
119
- />
120
- </el-form-item>
121
- </el-form>
122
- <template #footer>
123
- <el-button @click="closeDialog">取消</el-button>
124
- <el-button type="primary" @click="submitForm(ruleFormRef)"> 确定 </el-button>
125
- </template>
126
- </el-dialog>
127
- </template>
@@ -1,142 +0,0 @@
1
- <template>
2
- <div class="main">
3
- <div class="w-full flex justify-between mb-4">
4
- <vxe-button icon="" @click="formDialogVisible = true"> 新建产品 </vxe-button>
5
- <!-- <el-button :icon="useRenderIcon(AddFill)" @click="formDialogVisible = true"> 新建产品 </el-button> -->
6
- <vxe-input
7
- v-model="searchValue"
8
- style="width: 300px"
9
- placeholder="请输入关键字查询"
10
- clearable
11
- type="search"
12
- />
13
- </div>
14
- <div v-loading="dataLoading">
15
- <el-empty
16
- v-show="
17
- productList
18
- .slice(
19
- pagination.pageSize * (pagination.current - 1),
20
- pagination.pageSize * pagination.current
21
- )
22
- .filter(v => v.name.toLowerCase().includes(searchValue.toLowerCase())).length === 0
23
- "
24
- description="暂无数据"
25
- />
26
- <template v-if="pagination.total > 0">
27
- <el-row :gutter="16">
28
- <el-col
29
- v-for="(product, index) in productList
30
- .slice(
31
- pagination.pageSize * (pagination.current - 1),
32
- pagination.pageSize * pagination.current
33
- )
34
- .filter(v => v.name.toLowerCase().includes(searchValue.toLowerCase()))"
35
- :key="index"
36
- :xs="24"
37
- :sm="12"
38
- :md="8"
39
- :lg="6"
40
- :xl="4"
41
- >
42
- <Card
43
- :product="product"
44
- @delete-item="handleDeleteItem"
45
- @manage-product="handleManageProduct"
46
- />
47
- </el-col>
48
- </el-row>
49
- <el-pagination
50
- v-model:currentPage="pagination.current"
51
- class="float-right"
52
- :page-size="pagination.pageSize"
53
- :total="pagination.total"
54
- :page-sizes="[12, 24, 36]"
55
- :background="true"
56
- layout="total, sizes, prev, pager, next, jumper"
57
- @size-change="onPageSizeChange"
58
- @current-change="onCurrentChange"
59
- />
60
- </template>
61
- </div>
62
- <dialogForm v-model:visible="formDialogVisible" :data="formData" />
63
- </div>
64
- </template>
65
-
66
- <script setup lang="ts">
67
- import Card from './components/Card.vue';
68
- import { successMessage } from '@utogether/utils';
69
- import { ElMessageBox } from 'element-plus';
70
- import { ref, onMounted, nextTick } from 'vue';
71
- import dialogForm from './components/DialogForm.vue';
72
- // import { useRenderIcon } from '@/components/ReIcon/src/hooks';
73
- // import AddFill from '@iconify-icons/ri/add-circle-line';
74
-
75
- defineOptions({
76
- name: 'ListCard'
77
- });
78
-
79
- const INITIAL_DATA = {
80
- name: '',
81
- status: '',
82
- description: '',
83
- type: '',
84
- mark: ''
85
- };
86
-
87
- const pagination = ref({ current: 1, pageSize: 12, total: 0 });
88
-
89
- const productList = ref([{ name: '1' }]);
90
- const dataLoading = ref(true);
91
-
92
- const getCardListData = async () => {
93
- try {
94
- productList.value = [];
95
- pagination.value = {
96
- ...pagination.value,
97
- total: 0
98
- };
99
- } catch (e) {
100
- console.log(e);
101
- } finally {
102
- setTimeout(() => {
103
- dataLoading.value = false;
104
- }, 500);
105
- }
106
- };
107
-
108
- onMounted(() => {
109
- getCardListData();
110
- });
111
-
112
- const formDialogVisible = ref(false);
113
- const formData = ref({ ...INITIAL_DATA });
114
- const searchValue = ref('');
115
-
116
- const onPageSizeChange = (size: number) => {
117
- pagination.value.pageSize = size;
118
- pagination.value.current = 1;
119
- };
120
- const onCurrentChange = (current: number) => {
121
- pagination.value.current = current;
122
- };
123
- const handleDeleteItem = product => {
124
- ElMessageBox.confirm(
125
- product ? `确认删除后${product.name}的所有产品信息将被清空, 且无法恢复` : '',
126
- '提示',
127
- {
128
- type: 'warning'
129
- }
130
- )
131
- .then(() => {
132
- successMessage('删除成功');
133
- })
134
- .catch(() => {});
135
- };
136
- const handleManageProduct = product => {
137
- formDialogVisible.value = true;
138
- nextTick(() => {
139
- formData.value = { ...product, status: product?.isSetup ? '1' : '0' };
140
- });
141
- };
142
- </script>
@@ -1,241 +0,0 @@
1
- <template>
2
- <div class="selector w-full">
3
- <el-input v-model="inputValue" readonly size="small" class="u-icon-input relative">
4
- <template #append>
5
- <span
6
- v-if="inputValue"
7
- class="u-icon-close item-center justify-center text-sm hidden absolute"
8
- @click="onDel"
9
- >
10
- <IconifyIconOffline icon="ri:close-circle-line" />
11
- </span>
12
- <el-popover
13
- :visible="visible"
14
- :width="350"
15
- :popper-options="{ placement: 'auto' }"
16
- :teleported="props.teleported"
17
- trigger="click"
18
- popper-class="udp-popper"
19
- @hide="onHiden"
20
- >
21
- <template #reference>
22
- <div
23
- class="w-7 h-full cursor-pointer flex justify-center items-center"
24
- @click="visible = !visible"
25
- >
26
- <i :class="currentActiveType + icon" style="font-size: 16px" />
27
- </div>
28
- </template>
29
-
30
- <div class="flex items-center pr-2">
31
- <el-input v-model="filterValue" class="p-2" placeholder="搜索图标" clearable />
32
- </div>
33
- <el-divider border-style="dashed" />
34
- <el-scrollbar height="220px">
35
- <template #default>
36
- <ul class="flex flex-wrap px-2 ml-2">
37
- <li
38
- v-for="(item, key) in pageList"
39
- :key="key"
40
- :title="item"
41
- class="icon-item p-2 cursor-pointer mr-2 mt-1 flex justify-center items-center border border-[#e5e7eb]"
42
- :style="iconItemStyle(item)"
43
- @click="onChangeIcon(item)"
44
- >
45
- <i :class="currentActiveType + item" class="w-5 h-5 text-xl" />
46
- </li>
47
- </ul>
48
- </template>
49
- </el-scrollbar>
50
- <el-divider border-style="dashed" />
51
-
52
- <div class="w-full h-9 flex items-center overflow-auto border-t border-[#e5e7eb]">
53
- <el-pagination
54
- class="flex-auto ml-2"
55
- :total="total"
56
- :current-page="currentPage"
57
- :page-size="pageSize"
58
- :pager-count="5"
59
- layout="pager"
60
- background
61
- small
62
- @current-change="onCurrentChange"
63
- />
64
- <vxe-button
65
- class="justify-end mr-2 ml-2"
66
- status="danger"
67
- size="small"
68
- type="text"
69
- content="取消"
70
- @click="onHiden"
71
- />
72
- </div>
73
- </el-popover>
74
- </template>
75
- </el-input>
76
- </div>
77
- </template>
78
-
79
- <script lang="ts">
80
- export default {
81
- name: 'SuIconSelect'
82
- };
83
- </script>
84
-
85
- <script setup lang="ts">
86
- import { ref, computed, CSSProperties, toRef, watch, onMounted } from 'vue';
87
- import { clone } from 'xe-utils';
88
- import { iconSet } from '@utogether/utils';
89
-
90
- type ParameterCSSProperties = (item?: string) => CSSProperties | undefined;
91
-
92
- const props = defineProps({
93
- modelValue: {
94
- require: false,
95
- type: String
96
- },
97
- teleported: {
98
- require: false,
99
- type: Boolean
100
- }
101
- });
102
- const emit = defineEmits<{ (e: 'update:modelValue', v: string) }>();
103
-
104
- const visible = ref(false);
105
- const inputValue = toRef(props, 'modelValue');
106
-
107
- const iconList = ref(Object.keys(iconSet.icons));
108
- const currentActiveType = ref('ri-');
109
- const icon = ref();
110
-
111
- // 深拷贝图标数据,前端做搜索
112
- const copyIconList = clone(iconList.value, true);
113
-
114
- const pageSize = ref(35);
115
- const currentPage = ref(1);
116
-
117
- const total = ref(0);
118
-
119
- // 搜索条件
120
- const filterValue = ref('');
121
-
122
- const setInitIcon = () => {
123
- icon.value = 'corner-down-right-fill';
124
- if (inputValue.value) {
125
- icon.value = inputValue.value.split(':')[1];
126
- }
127
- };
128
-
129
- const pageList = computed(() => {
130
- if (currentPage.value === 1) {
131
- return copyIconList
132
- .filter(v => v.includes(filterValue.value))
133
- .slice(currentPage.value - 1, pageSize.value);
134
- } else {
135
- return copyIconList
136
- .filter(v => v.includes(filterValue.value))
137
- .slice(
138
- pageSize.value * (currentPage.value - 1),
139
- pageSize.value * (currentPage.value - 1) + pageSize.value
140
- );
141
- }
142
- });
143
-
144
- const iconItemStyle = computed((): ParameterCSSProperties => {
145
- return item => {
146
- if (inputValue.value === currentActiveType.value + item) {
147
- return {
148
- borderColor: 'var(--el-color-primary)',
149
- color: 'var(--el-color-primary)'
150
- };
151
- }
152
- };
153
- });
154
-
155
- function onChangeIcon(item) {
156
- icon.value = item;
157
- emit('update:modelValue', transformIcon());
158
- onHiden();
159
- }
160
-
161
- function onCurrentChange(page) {
162
- currentPage.value = page;
163
- }
164
-
165
- const transformIcon = () => {
166
- if (currentActiveType.value === 'ri-') {
167
- return 'ri:' + icon.value;
168
- }
169
- return currentActiveType.value + icon.value;
170
- };
171
-
172
- const onDel = () => {
173
- icon.value = 'corner-down-right-fill';
174
- emit('update:modelValue', '');
175
- };
176
-
177
- const setTotal = () => {
178
- if (currentPage.value === 1) {
179
- total.value = copyIconList.filter(v => v.includes(filterValue.value)).length;
180
- } else {
181
- total.value = copyIconList.length;
182
- }
183
- };
184
-
185
- const onHiden = () => {
186
- visible.value = false;
187
- filterValue.value = '';
188
- };
189
-
190
- watch(
191
- () => {
192
- return props.modelValue;
193
- },
194
- () => {
195
- if (props.modelValue) {
196
- icon.value = props.modelValue.substring(props.modelValue.indexOf(':') + 1);
197
- }
198
- }
199
- );
200
- watch(
201
- () => {
202
- return filterValue.value;
203
- },
204
- () => {
205
- currentPage.value = 1;
206
- setTotal();
207
- }
208
- );
209
-
210
- onMounted(() => {
211
- setTotal();
212
- setInitIcon();
213
- });
214
- </script>
215
-
216
- <style lang="scss" scoped>
217
- .el-divider--horizontal {
218
- margin: 1px auto !important;
219
- }
220
-
221
- .icon-item {
222
- &:hover {
223
- color: var(--el-color-primary);
224
- border-color: var(--el-color-primary);
225
- transform: scaleX(1.05);
226
- transition: all 0.4s;
227
- }
228
- }
229
-
230
- :deep(.el-input-group__append) {
231
- padding: 0;
232
- }
233
-
234
- .u-icon-input:hover {
235
- .u-icon-close {
236
- left: -22px;
237
- display: flex;
238
- background-color: #fff;
239
- }
240
- }
241
- </style>