sohelp-eleplus 1.1.1-8.beta.1

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 (298) hide show
  1. package/README.md +35 -0
  2. package/cache/DictCache.js +58 -0
  3. package/cache/ModuleCache.js +322 -0
  4. package/components.js +46 -0
  5. package/core-export.js +4 -0
  6. package/http/CrudHttp.js +115 -0
  7. package/http/DictHttp.js +12 -0
  8. package/http/ModuleHttp.js +68 -0
  9. package/http/SohelpHttp.js +125 -0
  10. package/index.js +6 -0
  11. package/installer.js +8 -0
  12. package/lang/en_US.js +4 -0
  13. package/lang/zh_CN.js +4 -0
  14. package/lang/zh_TW.js +4 -0
  15. package/package.json +9 -0
  16. package/sohelp-ace-editor/index.vue +198 -0
  17. package/sohelp-application-select/index.vue +15 -0
  18. package/sohelp-autocode/index.vue +53 -0
  19. package/sohelp-calendar-view/index.vue +11 -0
  20. package/sohelp-card-view/index.vue +11 -0
  21. package/sohelp-condition/index.vue +210 -0
  22. package/sohelp-cry-input/index.vue +64 -0
  23. package/sohelp-date/index.vue +27 -0
  24. package/sohelp-datetime/index.vue +44 -0
  25. package/sohelp-datetime-picker/index.vue +86 -0
  26. package/sohelp-datetime-range/index.vue +59 -0
  27. package/sohelp-dict/index.vue +206 -0
  28. package/sohelp-dict/props.js +68 -0
  29. package/sohelp-drawer/index.vue +50 -0
  30. package/sohelp-drop-card/index.vue +94 -0
  31. package/sohelp-drop-card/props.js +68 -0
  32. package/sohelp-dyn-select/index.vue +99 -0
  33. package/sohelp-dyn-select/props.js +67 -0
  34. package/sohelp-dyn-tree/index.vue +82 -0
  35. package/sohelp-dyn-tree-select/index.vue +114 -0
  36. package/sohelp-entity-form/index.vue +524 -0
  37. package/sohelp-entity-grid/index.vue +30 -0
  38. package/sohelp-file-upload/index.vue +218 -0
  39. package/sohelp-filter-scheme/components/condition.vue +102 -0
  40. package/sohelp-filter-scheme/components/filter.vue +45 -0
  41. package/sohelp-filter-scheme/components/keywords.vue +15 -0
  42. package/sohelp-filter-scheme/components/scheme.vue +49 -0
  43. package/sohelp-filter-scheme/index.vue +113 -0
  44. package/sohelp-grid/SohelpGridConfig.js~ +408 -0
  45. package/sohelp-grid/components/filter-condition-item.vue +298 -0
  46. package/sohelp-grid/index.vue +1965 -0
  47. package/sohelp-grid/js/ConditionType.js +101 -0
  48. package/sohelp-grid/js/DefaultGridOptions.js +145 -0
  49. package/sohelp-grid/js/DefaultProps.js +27 -0
  50. package/sohelp-grid/js/SohelpConfigFunction.js +0 -0
  51. package/sohelp-grid/js/SohelpGridConfig.js +101 -0
  52. package/sohelp-grid/js/useSohelpGridConfig.js +525 -0
  53. package/sohelp-grid-select/index.vue +245 -0
  54. package/sohelp-grid-view/filter/config/grid-filter-condition.vue +221 -0
  55. package/sohelp-grid-view/filter/config/grid-filter-config.vue +27 -0
  56. package/sohelp-grid-view/filter/config/grid-filter-field.vue +378 -0
  57. package/sohelp-grid-view/filter/config/grid-filter-keywords.vue +310 -0
  58. package/sohelp-grid-view/filter/config/grid-filter-list.vue +313 -0
  59. package/sohelp-grid-view/filter/config/grid-filter-scheme.vue +264 -0
  60. package/sohelp-grid-view/filter/config/grid-filter-sort.vue +310 -0
  61. package/sohelp-grid-view/filter/config/index.vue +206 -0
  62. package/sohelp-grid-view/filter/filter-form.vue +446 -0
  63. package/sohelp-grid-view/filter/filter-toolbar.vue +110 -0
  64. package/sohelp-grid-view/filter/index.vue +160 -0
  65. package/sohelp-grid-view/index.vue +379 -0
  66. package/sohelp-grid-view-select/index.vue +141 -0
  67. package/sohelp-group-view/index.vue +11 -0
  68. package/sohelp-icon-select/icons/AnalysisOutlined.vue +22 -0
  69. package/sohelp-icon-select/icons/ApplicationOutlined.vue +21 -0
  70. package/sohelp-icon-select/icons/AppstoreAddOutlined.vue +28 -0
  71. package/sohelp-icon-select/icons/AppstoreOutlined.vue +30 -0
  72. package/sohelp-icon-select/icons/ArrowDown.vue +21 -0
  73. package/sohelp-icon-select/icons/ArrowDownOutlined.vue +20 -0
  74. package/sohelp-icon-select/icons/ArrowLeft.vue +21 -0
  75. package/sohelp-icon-select/icons/ArrowLeftOutlined.vue +20 -0
  76. package/sohelp-icon-select/icons/ArrowRight.vue +21 -0
  77. package/sohelp-icon-select/icons/ArrowRightOutlined.vue +20 -0
  78. package/sohelp-icon-select/icons/ArrowUp.vue +21 -0
  79. package/sohelp-icon-select/icons/ArrowUpOutlined.vue +20 -0
  80. package/sohelp-icon-select/icons/BellOutlined.vue +21 -0
  81. package/sohelp-icon-select/icons/BookOutlined.vue +21 -0
  82. package/sohelp-icon-select/icons/CalendarOutlined.vue +19 -0
  83. package/sohelp-icon-select/icons/CaretDownFilled.vue +13 -0
  84. package/sohelp-icon-select/icons/CaretUpFilled.vue +13 -0
  85. package/sohelp-icon-select/icons/CheckCircleFilled.vue +15 -0
  86. package/sohelp-icon-select/icons/CheckCircleOutlined.vue +23 -0
  87. package/sohelp-icon-select/icons/CheckOutlined.vue +20 -0
  88. package/sohelp-icon-select/icons/CityOutlined.vue +22 -0
  89. package/sohelp-icon-select/icons/ClockCircleOutlined.vue +23 -0
  90. package/sohelp-icon-select/icons/CloseCircleFilled.vue +15 -0
  91. package/sohelp-icon-select/icons/CloseCircleOutlined.vue +22 -0
  92. package/sohelp-icon-select/icons/CloseOutlined.vue +20 -0
  93. package/sohelp-icon-select/icons/CloudUploadOutlined.vue +23 -0
  94. package/sohelp-icon-select/icons/ClusterOutlined.vue +21 -0
  95. package/sohelp-icon-select/icons/CodeOutlined.vue +22 -0
  96. package/sohelp-icon-select/icons/ColumnHeightOutlined.vue +18 -0
  97. package/sohelp-icon-select/icons/CompassOutlined.vue +22 -0
  98. package/sohelp-icon-select/icons/CompressOutlined.vue +23 -0
  99. package/sohelp-icon-select/icons/ConnectionOutlined.vue +24 -0
  100. package/sohelp-icon-select/icons/ControlOutlined.vue +27 -0
  101. package/sohelp-icon-select/icons/CopyOutlined.vue +22 -0
  102. package/sohelp-icon-select/icons/CpuOutlined.vue +22 -0
  103. package/sohelp-icon-select/icons/DashboardOutlined.vue +26 -0
  104. package/sohelp-icon-select/icons/DatabaseOutlined.vue +22 -0
  105. package/sohelp-icon-select/icons/DeleteOutlined.vue +22 -0
  106. package/sohelp-icon-select/icons/DesktopOutlined.vue +19 -0
  107. package/sohelp-icon-select/icons/DownloadOutlined.vue +21 -0
  108. package/sohelp-icon-select/icons/DragOutlined.vue +22 -0
  109. package/sohelp-icon-select/icons/EditOutlined.vue +21 -0
  110. package/sohelp-icon-select/icons/EllipsisOutlined.vue +15 -0
  111. package/sohelp-icon-select/icons/EnvironmentOutlined.vue +22 -0
  112. package/sohelp-icon-select/icons/ExclamationCircleFilled.vue +15 -0
  113. package/sohelp-icon-select/icons/ExpandOutlined.vue +23 -0
  114. package/sohelp-icon-select/icons/FileOutlined.vue +22 -0
  115. package/sohelp-icon-select/icons/FilterFilled.vue +15 -0
  116. package/sohelp-icon-select/icons/FolderAddOutlined.vue +20 -0
  117. package/sohelp-icon-select/icons/FolderOutlined.vue +19 -0
  118. package/sohelp-icon-select/icons/FormOutlined.vue +20 -0
  119. package/sohelp-icon-select/icons/FullscreenExitOutlined.vue +16 -0
  120. package/sohelp-icon-select/icons/FullscreenOutlined.vue +16 -0
  121. package/sohelp-icon-select/icons/FundOutlined.vue +20 -0
  122. package/sohelp-icon-select/icons/GlobalOutlined.vue +15 -0
  123. package/sohelp-icon-select/icons/HolderOutlined.vue +18 -0
  124. package/sohelp-icon-select/icons/HomeOutlined.vue +19 -0
  125. package/sohelp-icon-select/icons/IdcardOutlined.vue +25 -0
  126. package/sohelp-icon-select/icons/InfoCircleFilled.vue +15 -0
  127. package/sohelp-icon-select/icons/LinkOutlined.vue +15 -0
  128. package/sohelp-icon-select/icons/LoadingDotOutlined.vue +21 -0
  129. package/sohelp-icon-select/icons/LoadingOutlined.vue +19 -0
  130. package/sohelp-icon-select/icons/LockOutlined.vue +21 -0
  131. package/sohelp-icon-select/icons/LogOutlined.vue +22 -0
  132. package/sohelp-icon-select/icons/LogoutOutlined.vue +22 -0
  133. package/sohelp-icon-select/icons/MailOutlined.vue +19 -0
  134. package/sohelp-icon-select/icons/MenuFoldOutlined.vue +17 -0
  135. package/sohelp-icon-select/icons/MenuUnfoldOutlined.vue +17 -0
  136. package/sohelp-icon-select/icons/MessageOutlined.vue +22 -0
  137. package/sohelp-icon-select/icons/MinusCircleOutlined.vue +22 -0
  138. package/sohelp-icon-select/icons/MobileOutlined.vue +20 -0
  139. package/sohelp-icon-select/icons/MoonOutlined.vue +21 -0
  140. package/sohelp-icon-select/icons/MoreOutlined.vue +15 -0
  141. package/sohelp-icon-select/icons/PauseFilled.vue +14 -0
  142. package/sohelp-icon-select/icons/PieChartOutlined.vue +20 -0
  143. package/sohelp-icon-select/icons/PlayFilled.vue +13 -0
  144. package/sohelp-icon-select/icons/PlusCircleOutlined.vue +22 -0
  145. package/sohelp-icon-select/icons/PlusOutlined.vue +19 -0
  146. package/sohelp-icon-select/icons/ProtectOutlined.vue +21 -0
  147. package/sohelp-icon-select/icons/QuestionCircleFilled.vue +15 -0
  148. package/sohelp-icon-select/icons/QuestionCircleOutlined.vue +25 -0
  149. package/sohelp-icon-select/icons/ReloadOutlined.vue +22 -0
  150. package/sohelp-icon-select/icons/SearchOutlined.vue +21 -0
  151. package/sohelp-icon-select/icons/SettingOutlined.vue +24 -0
  152. package/sohelp-icon-select/icons/ShoppingOutlined.vue +19 -0
  153. package/sohelp-icon-select/icons/SortOutlined.vue +21 -0
  154. package/sohelp-icon-select/icons/StarFilled.vue +15 -0
  155. package/sohelp-icon-select/icons/StepBackwardFilled.vue +17 -0
  156. package/sohelp-icon-select/icons/StepForwardFilled.vue +17 -0
  157. package/sohelp-icon-select/icons/SuitcaseOutlined.vue +19 -0
  158. package/sohelp-icon-select/icons/SunOutlined.vue +29 -0
  159. package/sohelp-icon-select/icons/SwapOutlined.vue +21 -0
  160. package/sohelp-icon-select/icons/SyncOutlined.vue +21 -0
  161. package/sohelp-icon-select/icons/TableOutlined.vue +19 -0
  162. package/sohelp-icon-select/icons/TagOutlined.vue +20 -0
  163. package/sohelp-icon-select/icons/TimerOutlined.vue +22 -0
  164. package/sohelp-icon-select/icons/UndoOutlined.vue +22 -0
  165. package/sohelp-icon-select/icons/UnlockOutlined.vue +21 -0
  166. package/sohelp-icon-select/icons/UploadOutlined.vue +21 -0
  167. package/sohelp-icon-select/icons/UserOutlined.vue +21 -0
  168. package/sohelp-icon-select/icons/VerticalAlignMiddleOutlined.vue +15 -0
  169. package/sohelp-icon-select/icons/VerticalLeftOutlined.vue +13 -0
  170. package/sohelp-icon-select/icons/VerticalRightOutlined.vue +13 -0
  171. package/sohelp-icon-select/icons/WarningOutlined.vue +21 -0
  172. package/sohelp-icon-select/icons/ZoomInOutlined.vue +22 -0
  173. package/sohelp-icon-select/icons/ZoomOutOutlined.vue +22 -0
  174. package/sohelp-icon-select/icons/index.js +106 -0
  175. package/sohelp-icon-select/icons/index.ts +106 -0
  176. package/sohelp-icon-select/index.vue +95 -0
  177. package/sohelp-icon-select/vxeui-icon.js +90 -0
  178. package/sohelp-image-upload/index.vue +286 -0
  179. package/sohelp-input/index.vue +39 -0
  180. package/sohelp-modal/index.vue +72 -0
  181. package/sohelp-module/index.vue +54 -0
  182. package/sohelp-module/useModalManager.js +89 -0
  183. package/sohelp-module/useSohelpModule.js +64 -0
  184. package/sohelp-number-input/index.vue +32 -0
  185. package/sohelp-number-range/index.vue +135 -0
  186. package/sohelp-org-select/index.vue +30 -0
  187. package/sohelp-org-tree/index.vue +18 -0
  188. package/sohelp-org-tree-select/index.vue +93 -0
  189. package/sohelp-org-user-tree/index.vue +26 -0
  190. package/sohelp-org-user-tree-select/index.vue +11 -0
  191. package/sohelp-pagination/index.vue +11 -0
  192. package/sohelp-power/index.vue +105 -0
  193. package/sohelp-pro-form/components/pro-form-footer.vue +44 -0
  194. package/sohelp-pro-form/components/pro-form-item.vue +1133 -0
  195. package/sohelp-pro-form/index.vue +257 -0
  196. package/sohelp-pro-form/util.js +140 -0
  197. package/sohelp-pro-layout/index.vue +11 -0
  198. package/sohelp-pro-table/index.vue +14 -0
  199. package/sohelp-process/index.vue +216 -0
  200. package/sohelp-rate/index.vue +56 -0
  201. package/sohelp-rate/props.js +71 -0
  202. package/sohelp-relation/index.vue +11 -0
  203. package/sohelp-rich-text/index.vue +242 -0
  204. package/sohelp-rich-text/util.js +231 -0
  205. package/sohelp-richtext/index.vue +10 -0
  206. package/sohelp-role-select/index.vue +33 -0
  207. package/sohelp-search/components/search-config.vue +0 -0
  208. package/sohelp-search/index.vue +49 -0
  209. package/sohelp-search-pro-form/index.vue +11 -0
  210. package/sohelp-select/index.vue +120 -0
  211. package/sohelp-split-panel/index.vue +15 -0
  212. package/sohelp-switch/index.vue +56 -0
  213. package/sohelp-table/index.vue +151 -0
  214. package/sohelp-tenant-select/index.vue +128 -0
  215. package/sohelp-text/index.vue +14 -0
  216. package/sohelp-textarea-input/index.vue +36 -0
  217. package/sohelp-time/index.vue +10 -0
  218. package/sohelp-tree/index.vue +37 -0
  219. package/sohelp-tree-select/index.vue +18 -0
  220. package/sohelp-user-select/index.vue +44 -0
  221. package/sohelp-user-select/index.vue~ +53 -0
  222. package/sohelp-user-select/props.js +71 -0
  223. package/sohelp-user-tag/index.vue +12 -0
  224. package/sohelp-user-tree/index.vue +11 -0
  225. package/sohelp-vform-drawer/index.vue +40 -0
  226. package/sohelp-vform-eleplus/favicon.ico +0 -0
  227. package/sohelp-vform-eleplus/index.vue +297 -0
  228. package/sohelp-vform-eleplus/preview.html +91 -0
  229. package/sohelp-vform-eleplus/render.es.js +72433 -0
  230. package/sohelp-vform-eleplus/render.style.css +16 -0
  231. package/sohelp-vform-eleplus/render.umd.js +57 -0
  232. package/sohelp-vform-eleplus/tinymce/langs/zh_CN.js +462 -0
  233. package/sohelp-vform-eleplus/tinymce/langs/zh_TW.js +419 -0
  234. package/sohelp-vform-eleplus/tinymce/skins/content/dark/content.css +72 -0
  235. package/sohelp-vform-eleplus/tinymce/skins/content/dark/content.min.css +7 -0
  236. package/sohelp-vform-eleplus/tinymce/skins/content/default/content.css +67 -0
  237. package/sohelp-vform-eleplus/tinymce/skins/content/default/content.min.css +7 -0
  238. package/sohelp-vform-eleplus/tinymce/skins/content/document/content.css +72 -0
  239. package/sohelp-vform-eleplus/tinymce/skins/content/document/content.min.css +7 -0
  240. package/sohelp-vform-eleplus/tinymce/skins/content/writer/content.css +68 -0
  241. package/sohelp-vform-eleplus/tinymce/skins/content/writer/content.min.css +7 -0
  242. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide/content.css +732 -0
  243. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide/content.inline.css +726 -0
  244. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide/content.inline.min.css +7 -0
  245. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide/content.min.css +7 -0
  246. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide/content.mobile.css +29 -0
  247. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide/content.mobile.min.css +7 -0
  248. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff +0 -0
  249. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide/skin.css +3047 -0
  250. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide/skin.min.css +7 -0
  251. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide/skin.mobile.css +673 -0
  252. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide/skin.mobile.min.css +7 -0
  253. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide/skin.shadowdom.css +37 -0
  254. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide/skin.shadowdom.min.css +7 -0
  255. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide-dark/content.css +714 -0
  256. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide-dark/content.inline.css +726 -0
  257. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide-dark/content.inline.min.css +7 -0
  258. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide-dark/content.min.css +7 -0
  259. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide-dark/content.mobile.css +29 -0
  260. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide-dark/content.mobile.min.css +7 -0
  261. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff +0 -0
  262. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide-dark/skin.css +3047 -0
  263. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide-dark/skin.min.css +7 -0
  264. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide-dark/skin.mobile.css +673 -0
  265. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide-dark/skin.mobile.min.css +7 -0
  266. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide-dark/skin.shadowdom.css +37 -0
  267. package/sohelp-vform-eleplus/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css +7 -0
  268. package/sohelp-vform-modal/index.vue +41 -0
  269. package/sohelp-vform-select/index.vue +11 -0
  270. package/sohelp-vform-vant/favicon.ico +0 -0
  271. package/sohelp-vform-vant/render.es.js +14608 -0
  272. package/sohelp-vform-vant/render.style.css +1 -0
  273. package/sohelp-vform-vant/render.umd.js +22 -0
  274. package/sohelp-vxe-grid/DefaultGridOptions.js +90 -0
  275. package/sohelp-vxe-grid/DefaultProps.js +27 -0
  276. package/sohelp-vxe-grid/SohelpGridConfig.js +143 -0
  277. package/sohelp-vxe-grid/index.vue +475 -0
  278. package/sohelp-vxe-grid-select/index.vue +148 -0
  279. package/sohelp-vxe-table/index.vue +184 -0
  280. package/sohelp-workflow/index.vue +495 -0
  281. package/sohelp-workflow/nodeWrap.vue +53 -0
  282. package/sohelp-workflow/nodes/addNode.vue +27 -0
  283. package/sohelp-workflow/nodes/approver.vue +125 -0
  284. package/sohelp-workflow/nodes/branch.vue +434 -0
  285. package/sohelp-workflow/nodes/promoter.vue +80 -0
  286. package/sohelp-workflow/nodes/send.vue +95 -0
  287. package/sohelp-workflow-drawer/components/approval-modal.vue +182 -0
  288. package/sohelp-workflow-drawer/components/draw-box.vue +141 -0
  289. package/sohelp-workflow-drawer/components/form.vue +78 -0
  290. package/sohelp-workflow-drawer/components/table.vue +153 -0
  291. package/sohelp-workflow-drawer/components/timeline.vue +189 -0
  292. package/sohelp-workflow-drawer/components/workflow.vue +68 -0
  293. package/sohelp-workflow-drawer/index.vue +311 -0
  294. package/sohelp-workflow-drawer/js/index.js +119 -0
  295. package/utils/ProFormConvertUtil.js +76 -0
  296. package/utils/core.js +310 -0
  297. package/utils/use-form-data.js +48 -0
  298. package/utils/use-mobile.js +43 -0
@@ -0,0 +1,378 @@
1
+ <template>
2
+ <div class="list-box">
3
+ <div class="list-item">
4
+ <ele-card
5
+ bordered
6
+ header="未分配"
7
+ :body-style="{
8
+ padding: '0',
9
+ overflowY: 'auto',
10
+ height: 'calc(100% - 50px)'
11
+ }"
12
+ :header-style="{
13
+ background: '#f7f7f7',
14
+ border: '1px solid #e8e8e8'
15
+ }"
16
+ class="list-card"
17
+ >
18
+ <ele-table ref="unAllocatedRef" class="demo-table">
19
+ <thead style="position: sticky; top: 0; z-index: 9">
20
+ <tr>
21
+ <th style="width: 40px"
22
+ ><el-checkbox v-model="unAllocatedChecked" @change="unAllocatedChange"></el-checkbox
23
+ ></th>
24
+ <th style="width: 40px"></th>
25
+ <th>属性</th>
26
+ <th>属性描述</th>
27
+ </tr>
28
+ </thead>
29
+ <vue-draggable
30
+ tag="tbody"
31
+ item-key="id"
32
+ :animation="300"
33
+ :modelValue="unAllocatedDatasource"
34
+ :force-fallback="true"
35
+ group="demoDragTable"
36
+ handle=".drag-handle"
37
+ :set-data="() => void 0"
38
+ >
39
+ <template #item="{ element }">
40
+ <tr>
41
+ <td
42
+ ><el-checkbox v-model="unAllocatedSelection" :label="element">
43
+ <template #default></template> </el-checkbox
44
+ ></td>
45
+ <td>
46
+ <ele-text :icon="DragOutlined" type="placeholder" class="drag-handle" style="cursor: move" />
47
+ </td>
48
+ <td>{{ element.name }}</td>
49
+ <td>{{ propertiesOriginData[element.name] }}</td>
50
+ </tr>
51
+ </template>
52
+ <template #footer v-if="!unAllocatedDatasource.length">
53
+ <tr>
54
+ <td colspan="4" style="text-align: center; background: none">
55
+ <ele-text type="placeholder">暂无数据</ele-text>
56
+ </td>
57
+ </tr>
58
+ </template>
59
+ </vue-draggable>
60
+ </ele-table>
61
+ </ele-card>
62
+ </div>
63
+
64
+ <div class="list-item">
65
+ <el-button
66
+ :icon="ArrowLeft"
67
+ type="primary"
68
+ @click="unAllocatedHandle"
69
+ :disabled="!allocatedSelection.length"
70
+ ></el-button>
71
+ <el-button
72
+ :icon="ArrowRight"
73
+ type="primary"
74
+ @click="allocatedHandle"
75
+ :disabled="!unAllocatedSelection.length"
76
+ ></el-button>
77
+ </div>
78
+ <div class="list-item"
79
+ ><ele-card
80
+ header="已分配"
81
+ bordered
82
+ :body-style="{
83
+ padding: '0',
84
+ overflowY: 'auto',
85
+ height: 'calc(100% - 50px)'
86
+ }"
87
+ :header-style="{
88
+ background: '#f7f7f7',
89
+ border: '1px solid #e8e8e8'
90
+ }"
91
+ class="list-card"
92
+ >
93
+ <ele-table class="demo-table" ref="allocatedRef">
94
+ <thead style="position: sticky; top: 0; z-index: 9">
95
+ <tr>
96
+ <th style="width: 40px">
97
+ <el-checkbox v-model="allocatedChecked" @change="allocatedChange"></el-checkbox>
98
+ </th>
99
+ <th style="width: 40px"></th>
100
+ <th>属性</th>
101
+ <th>配置</th>
102
+ <th style="width: 110px">属性描述</th>
103
+ </tr>
104
+ </thead>
105
+ <vue-draggable
106
+ tag="tbody"
107
+ item-key="id"
108
+ :animation="300"
109
+ :modelValue="modelValue"
110
+ :force-fallback="true"
111
+ group="demoDragTable"
112
+ handle=".drag-handle"
113
+ :set-data="() => void 0"
114
+ @update:modelValue="(value) => updateAllocated(value)"
115
+ >
116
+ <template #item="{ element }">
117
+ <tr>
118
+ <td
119
+ ><el-checkbox v-model="allocatedSelection" :label="element">
120
+ <template #default></template> </el-checkbox
121
+ ></td>
122
+ <td>
123
+ <ele-text :icon="DragOutlined" type="placeholder" class="drag-handle" style="cursor: move" />
124
+ </td>
125
+ <td>{{ element.name }}</td>
126
+ <td>
127
+ <el-input
128
+ v-model="element.value"
129
+ style="max-width: 300px"
130
+ placeholder="请输入条件值"
131
+ class="input-with-select"
132
+ >
133
+ <template #prepend>
134
+ <el-select v-model="element.comparison" placeholder="请选择条件" style="width: 96px">
135
+ <el-option
136
+ v-for="item in CondictionOptions"
137
+ :key="item.value"
138
+ :label="item.label"
139
+ :value="item.value"
140
+ />
141
+ </el-select>
142
+ </template>
143
+ </el-input>
144
+ </td>
145
+ <td>{{ propertiesOriginData[element.name] }}</td>
146
+ </tr>
147
+ </template>
148
+ <template #footer v-if="!modelValue.length">
149
+ <tr>
150
+ <td colspan="4" style="text-align: center; background: none">
151
+ <ele-text type="placeholder">暂无数据</ele-text>
152
+ </td>
153
+ </tr>
154
+ </template>
155
+ </vue-draggable>
156
+ </ele-table>
157
+ </ele-card>
158
+ </div>
159
+ </div>
160
+ </template>
161
+
162
+ <script setup>
163
+ import { ref, watch, computed, toRaw } from 'vue';
164
+ import VueDraggable from 'vuedraggable';
165
+ import { ArrowLeft, ArrowRight } from '@element-plus/icons-vue';
166
+ import { DragOutlined } from '../../../sohelp-icon-select/icons';
167
+
168
+ const CondictionOptions = [
169
+ {
170
+ label: '包含',
171
+ value: 'LIKE'
172
+ },
173
+ {
174
+ label: '不包含',
175
+ value: 'NOT_LIKE'
176
+ },
177
+
178
+ {
179
+ label: '等于',
180
+ value: 'EQ'
181
+ },
182
+ {
183
+ label: '不等于',
184
+ value: 'NE'
185
+ },
186
+ {
187
+ label: '大于',
188
+ value: 'GT'
189
+ },
190
+ {
191
+ label: '小于',
192
+ value: 'LT'
193
+ },
194
+ {
195
+ label: '大于等于',
196
+ value: 'GTE'
197
+ },
198
+ {
199
+ label: '小于等于',
200
+ value: 'LTE'
201
+ },
202
+ {
203
+ label: '左包含',
204
+ value: 'LEFT_LIKE'
205
+ },
206
+ {
207
+ label: '右包含',
208
+ value: 'RIGHT_LIKE'
209
+ },
210
+ {
211
+ label: '为空',
212
+ value: 'EMPTY'
213
+ },
214
+ {
215
+ label: '不为空',
216
+ value: 'NOT_EMPTY'
217
+ }
218
+ ];
219
+
220
+ const props = defineProps({
221
+ modelValue: {
222
+ type: Array,
223
+ default: () => []
224
+ },
225
+ properties: {
226
+ type: Array,
227
+ default: () => []
228
+ }
229
+ });
230
+
231
+ const emit = defineEmits(['update:modelValue']);
232
+
233
+ // 未分配
234
+ const unAllocatedChecked = ref(false);
235
+ const unAllocatedRef = ref(null);
236
+ const unAllocatedSelection = ref([]);
237
+
238
+ const propertiesData = ref([]);
239
+ const propertiesOriginData = ref({});
240
+
241
+ const unAllocatedDatasource = computed(() => {
242
+ return propertiesData.value.filter((item) => !props.modelValue.includes(item));
243
+ });
244
+
245
+ // 已分配
246
+ const allocatedChecked = ref(false);
247
+ const allocatedRef = ref(null);
248
+ const allocatedSelection = ref([]);
249
+
250
+ // 未分配全选
251
+ const unAllocatedChange = (val) => {
252
+ unAllocatedSelection.value = val ? unAllocatedDatasource.value : [];
253
+ };
254
+ // 已分配全选
255
+ const allocatedChange = (val) => {
256
+ allocatedSelection.value = val ? props.modelValue : [];
257
+ };
258
+
259
+ const updateAllocated = (value) => {
260
+ emit('update:modelValue', value);
261
+ };
262
+
263
+ const allocatedHandle = () => {
264
+ if (unAllocatedSelection.value.length > 0) {
265
+ emit('update:modelValue', [...props.modelValue, ...unAllocatedSelection.value]);
266
+ unAllocatedSelection.value = [];
267
+ }
268
+ unAllocatedChecked.value = false;
269
+ };
270
+
271
+ const unAllocatedHandle = () => {
272
+ if (allocatedSelection.value.length > 0) {
273
+ emit(
274
+ 'update:modelValue',
275
+ props.modelValue.filter((item) => !allocatedSelection.value.includes(item))
276
+ );
277
+ allocatedSelection.value = [];
278
+ }
279
+ allocatedChecked.value = false;
280
+ };
281
+
282
+ watch(
283
+ () => props.properties,
284
+ (val) => {
285
+ if (val?.length > 0) {
286
+ let p = val.map((item) => {
287
+ return {
288
+ name: item.name,
289
+ comparison: CondictionOptions[0].value,
290
+ value: ''
291
+ };
292
+ });
293
+
294
+ propertiesData.value = Object.values(
295
+ [...p, ...toRaw(props.modelValue)].reduce((acc, item) => {
296
+ acc[item.name] = item;
297
+ return acc;
298
+ }, {})
299
+ );
300
+
301
+ propertiesOriginData.value = val.reduce((acc, item) => {
302
+ acc[item.name] = item.label;
303
+ return acc;
304
+ }, {});
305
+ }
306
+ },
307
+ {
308
+ immediate: true
309
+ }
310
+ );
311
+ </script>
312
+
313
+ <style lang="scss" scoped>
314
+ .list-box {
315
+ width: 1000px;
316
+ height: calc(100% - 2px);
317
+ overflow: hidden;
318
+
319
+ display: flex;
320
+ gap: 10px;
321
+
322
+ .list-item {
323
+ height: 100%;
324
+ // width: 47%;
325
+ overflow: hidden;
326
+ max-width: 400px;
327
+ .list-card {
328
+ height: 100%;
329
+ overflow: hidden;
330
+ }
331
+ }
332
+
333
+ .list-item:nth-child(1) {
334
+ width: 35%;
335
+ }
336
+
337
+ .list-item:nth-child(2) {
338
+ width: 6%;
339
+ min-width: 60px;
340
+ display: flex;
341
+ flex-direction: column;
342
+ align-items: center;
343
+ justify-content: center;
344
+ }
345
+
346
+ .list-item:nth-child(3) {
347
+ max-width: 700px;
348
+ flex: 1;
349
+ }
350
+ }
351
+
352
+ .el-button {
353
+ margin: 10px 0 !important;
354
+ }
355
+ .demo-table {
356
+ .drag-handle {
357
+ color: #333;
358
+ }
359
+
360
+ tr.sortable-chosen {
361
+ user-select: none;
362
+ }
363
+
364
+ tr.sortable-ghost {
365
+ opacity: 0;
366
+ }
367
+
368
+ tr.sortable-fallback {
369
+ opacity: 1 !important;
370
+ display: table !important;
371
+
372
+ td {
373
+ background: var(--el-color-primary-light-8);
374
+ border-radius: 0 !important;
375
+ }
376
+ }
377
+ }
378
+ </style>
@@ -0,0 +1,310 @@
1
+ <template>
2
+ <div class="list-box">
3
+ <div class="list-item">
4
+ <ele-card
5
+ bordered
6
+ header="未分配"
7
+ :body-style="{
8
+ padding: '0',
9
+ overflowY: 'auto',
10
+ height: 'calc(100% - 50px)'
11
+ }"
12
+ :header-style="{
13
+ background: '#f7f7f7',
14
+ border: '1px solid #e8e8e8'
15
+ }"
16
+ class="list-card"
17
+ >
18
+ <ele-table class="demo-table" ref="unAllocatedRef">
19
+ <thead style="position: sticky; top: 0; z-index: 9">
20
+ <tr>
21
+ <th style="width: 40px"
22
+ ><el-checkbox
23
+ v-model="unAllocatedChecked"
24
+ @change="unAllocatedChange"
25
+ ></el-checkbox
26
+ ></th>
27
+ <th style="width: 40px"></th>
28
+ <th>属性</th>
29
+ <th>属性描述</th>
30
+ </tr>
31
+ </thead>
32
+ <vue-draggable
33
+ tag="tbody"
34
+ item-key="id"
35
+ :animation="300"
36
+ :modelValue="unAllocatedDatasource"
37
+ :force-fallback="true"
38
+ group="demoDragTable"
39
+ handle=".drag-handle"
40
+ :set-data="() => void 0"
41
+ >
42
+ <template #item="{ element }">
43
+ <tr>
44
+ <td
45
+ ><el-checkbox
46
+ v-model="unAllocatedSelection"
47
+ :label="element"
48
+ ></el-checkbox
49
+ ></td>
50
+ <td>
51
+ <ele-text
52
+ :icon="DragOutlined"
53
+ type="placeholder"
54
+ class="drag-handle"
55
+ style="cursor: move"
56
+ />
57
+ </td>
58
+ <td>{{ element }}</td>
59
+ <td>{{ propertiesOriginData[element] }}</td>
60
+ </tr>
61
+ </template>
62
+ <template #footer v-if="!unAllocatedDatasource.length">
63
+ <tr>
64
+ <td colspan="4" style="text-align: center; background: none">
65
+ <ele-text type="placeholder">暂无数据</ele-text>
66
+ </td>
67
+ </tr>
68
+ </template>
69
+ </vue-draggable>
70
+ </ele-table>
71
+ </ele-card>
72
+ </div>
73
+
74
+ <div class="list-item">
75
+ <el-button
76
+ :icon="ArrowLeft"
77
+ type="primary"
78
+ @click="unAllocatedHandle"
79
+ :disabled="!allocatedSelection.length"
80
+ ></el-button>
81
+ <el-button
82
+ :icon="ArrowRight"
83
+ type="primary"
84
+ @click="allocatedHandle"
85
+ :disabled="!unAllocatedSelection.length"
86
+ ></el-button>
87
+ </div>
88
+ <div class="list-item"
89
+ ><ele-card
90
+ header="已分配"
91
+ bordered
92
+ :body-style="{
93
+ padding: '0',
94
+ overflowY: 'auto',
95
+ height: 'calc(100% - 50px)'
96
+ }"
97
+ :header-style="{
98
+ background: '#f7f7f7',
99
+ border: '1px solid #e8e8e8'
100
+ }"
101
+ class="list-card"
102
+ >
103
+ <ele-table class="demo-table" ref="allocatedRef">
104
+ <thead style="position: sticky; top: 0; z-index: 9">
105
+ <tr>
106
+ <th style="width: 40px">
107
+ <el-checkbox
108
+ v-model="allocatedChecked"
109
+ @change="allocatedChange"
110
+ ></el-checkbox>
111
+ </th>
112
+ <th style="width: 40px"></th>
113
+ <th>属性</th>
114
+ <th>属性描述</th>
115
+ </tr>
116
+ </thead>
117
+ <vue-draggable
118
+ tag="tbody"
119
+ item-key="id"
120
+ :animation="300"
121
+ :modelValue="modelValue"
122
+ :force-fallback="true"
123
+ group="demoDragTable"
124
+ handle=".drag-handle"
125
+ :set-data="() => void 0"
126
+ @update:modelValue="(value) => updateAllocated(value)"
127
+ >
128
+ <template #item="{ element }">
129
+ <tr>
130
+ <td
131
+ ><el-checkbox
132
+ v-model="allocatedSelection"
133
+ :label="element"
134
+ ></el-checkbox
135
+ ></td>
136
+ <td>
137
+ <ele-text
138
+ :icon="DragOutlined"
139
+ type="placeholder"
140
+ class="drag-handle"
141
+ style="cursor: move"
142
+ />
143
+ </td>
144
+ <td>{{ element }}</td>
145
+ <td>{{ propertiesOriginData[element] }}</td>
146
+ </tr>
147
+ </template>
148
+ <template #footer v-if="!modelValue?.length">
149
+ <tr>
150
+ <td colspan="4" style="text-align: center; background: none">
151
+ <ele-text type="placeholder">暂无数据</ele-text>
152
+ </td>
153
+ </tr>
154
+ </template>
155
+ </vue-draggable>
156
+ </ele-table>
157
+ </ele-card>
158
+ </div>
159
+ </div>
160
+ </template>
161
+
162
+ <script setup>
163
+ import { ref, watch, computed } from 'vue';
164
+ import VueDraggable from 'vuedraggable';
165
+ import { ArrowLeft, ArrowRight } from '@element-plus/icons-vue';
166
+ import { DragOutlined } from '../../../sohelp-icon-select/icons';
167
+
168
+ const props = defineProps({
169
+ modelValue: {
170
+ type: Array,
171
+ default: () => []
172
+ },
173
+ properties: {
174
+ type: Array,
175
+ default: () => []
176
+ }
177
+ });
178
+
179
+ const emit = defineEmits(['update:modelValue']);
180
+
181
+ // 未分配
182
+ const unAllocatedChecked = ref(false);
183
+ const unAllocatedRef = ref(null);
184
+ const unAllocatedSelection = ref([]);
185
+
186
+ const propertiesData = ref([]);
187
+ const propertiesOriginData = ref({});
188
+
189
+ const unAllocatedDatasource = computed(() => {
190
+ return propertiesData.value.filter(
191
+ (item) => !props.modelValue?.includes(item)
192
+ );
193
+ });
194
+
195
+ // 已分配
196
+ const allocatedChecked = ref(false);
197
+ const allocatedRef = ref(null);
198
+ const allocatedSelection = ref([]);
199
+
200
+ // 未分配全选
201
+ const unAllocatedChange = (val) => {
202
+ unAllocatedSelection.value = val ? unAllocatedDatasource.value : [];
203
+ };
204
+ // 已分配全选
205
+ const allocatedChange = (val) => {
206
+ allocatedSelection.value = val ? props.modelValue : [];
207
+ };
208
+
209
+ const updateAllocated = (value) => {
210
+ emit('update:modelValue', value);
211
+ };
212
+
213
+ const allocatedHandle = () => {
214
+ if (unAllocatedSelection.value.length > 0) {
215
+ emit('update:modelValue', [
216
+ ...props.modelValue,
217
+ ...unAllocatedSelection.value
218
+ ]);
219
+ unAllocatedSelection.value = [];
220
+ }
221
+ unAllocatedChecked.value = false;
222
+ };
223
+
224
+ const unAllocatedHandle = () => {
225
+ if (allocatedSelection.value.length > 0) {
226
+ emit(
227
+ 'update:modelValue',
228
+ props.modelValue.filter(
229
+ (item) => !allocatedSelection.value?.includes(item)
230
+ )
231
+ );
232
+ allocatedSelection.value = [];
233
+ }
234
+ allocatedChecked.value = false;
235
+ };
236
+
237
+ watch(
238
+ () => props.properties,
239
+ (val) => {
240
+ if (val?.length > 0) {
241
+ propertiesData.value = val.map((item) => item.name);
242
+ propertiesOriginData.value = val.reduce((acc, item) => {
243
+ acc[item.name] = item.label;
244
+ return acc;
245
+ }, {});
246
+ }
247
+ },
248
+ {
249
+ immediate: true
250
+ }
251
+ );
252
+ </script>
253
+
254
+ <style lang="scss" scoped>
255
+ .list-box {
256
+ width: 1000px;
257
+ height: calc(100% - 2px);
258
+ overflow-x: auto;
259
+ overflow-y: hidden;
260
+ display: flex;
261
+ gap: 10px;
262
+
263
+ .list-item {
264
+ height: 100%;
265
+ width: 47%;
266
+ overflow: hidden;
267
+ max-width: 500px;
268
+ .list-card {
269
+ height: 100%;
270
+ overflow: hidden;
271
+ }
272
+ }
273
+
274
+ .list-item:nth-child(2) {
275
+ width: 6%;
276
+ min-width: 60px;
277
+ display: flex;
278
+ flex-direction: column;
279
+ align-items: center;
280
+ justify-content: center;
281
+ }
282
+ }
283
+
284
+ .el-button {
285
+ margin: 10px 0!important;
286
+ }
287
+ .demo-table {
288
+ .drag-handle {
289
+ color: #333;
290
+ }
291
+
292
+ tr.sortable-chosen {
293
+ user-select: none;
294
+ }
295
+
296
+ tr.sortable-ghost {
297
+ opacity: 0;
298
+ }
299
+
300
+ tr.sortable-fallback {
301
+ opacity: 1 !important;
302
+ display: table !important;
303
+
304
+ td {
305
+ background: var(--el-color-primary-light-8);
306
+ border-radius: 0 !important;
307
+ }
308
+ }
309
+ }
310
+ </style>