easybill-ui 1.4.1 → 1.4.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 (281) hide show
  1. package/dist/_virtual/_plugin-vue_export-helper.js +9 -0
  2. package/dist/assets/easybill-ui.css +1 -0
  3. package/dist/components/ConstantStatus/index.d.ts +24 -0
  4. package/dist/components/ConstantStatus/index.js +7 -0
  5. package/dist/components/ConstantStatus/src/ConstantStatus.vue.d.ts +25 -0
  6. package/dist/components/ConstantStatus/src/ConstantStatus.vue.js +76 -0
  7. package/dist/components/ConstantStatus/src/ConstantStatus.vue2.js +4 -0
  8. package/dist/components/ConstantStatus/src/index.d.ts +3 -0
  9. package/dist/components/ConstantStatus/src/index.js +5 -0
  10. package/dist/components/ConstantStatus/src/types.d.ts +18 -0
  11. package/dist/components/CurdForm/index.d.ts +9 -0
  12. package/dist/components/CurdForm/index.js +9 -0
  13. package/dist/components/CurdForm/src/CurdForm.vue.js +7 -0
  14. package/dist/components/CurdForm/src/CurdForm.vue2.js +326 -0
  15. package/dist/components/CurdForm/src/CurdFormItem.vue.d.ts +37 -0
  16. package/dist/components/CurdForm/src/CurdFormItem.vue.js +55 -0
  17. package/dist/components/CurdForm/src/CurdFormItem.vue2.js +4 -0
  18. package/dist/components/CurdForm/src/FormItem.vue.d.ts +44 -0
  19. package/dist/components/CurdForm/src/FormItem.vue.js +128 -0
  20. package/dist/components/CurdForm/src/FormItem.vue2.js +4 -0
  21. package/dist/components/CurdForm/src/FormTooltip.vue.d.ts +33 -0
  22. package/dist/components/CurdForm/src/FormTooltip.vue.js +63 -0
  23. package/dist/components/CurdForm/src/FormTooltip.vue2.js +4 -0
  24. package/dist/components/CurdForm/src/components/index.d.ts +10 -0
  25. package/dist/components/CurdForm/src/components/index.js +38 -0
  26. package/dist/components/CurdForm/src/components/schema-form-autocomplete.vue.d.ts +56 -0
  27. package/dist/components/CurdForm/src/components/schema-form-autocomplete.vue.js +39 -0
  28. package/dist/components/CurdForm/src/components/schema-form-autocomplete.vue2.js +4 -0
  29. package/dist/components/CurdForm/src/components/schema-form-cascader.vue.d.ts +56 -0
  30. package/dist/components/CurdForm/src/components/schema-form-cascader.vue.js +32 -0
  31. package/dist/components/CurdForm/src/components/schema-form-cascader.vue2.js +4 -0
  32. package/dist/components/CurdForm/src/components/schema-form-checkbox.vue.d.ts +59 -0
  33. package/dist/components/CurdForm/src/components/schema-form-checkbox.vue.js +86 -0
  34. package/dist/components/CurdForm/src/components/schema-form-checkbox.vue2.js +33 -0
  35. package/dist/components/CurdForm/src/components/schema-form-choose.vue.js +217 -0
  36. package/dist/components/CurdForm/src/components/schema-form-choose.vue2.js +4 -0
  37. package/dist/components/CurdForm/src/components/schema-form-color-picker.vue.d.ts +54 -0
  38. package/dist/components/CurdForm/src/components/schema-form-color-picker.vue.js +15 -0
  39. package/dist/components/CurdForm/src/components/schema-form-color-picker.vue2.js +19 -0
  40. package/dist/components/CurdForm/src/components/schema-form-date-picker.vue.d.ts +56 -0
  41. package/dist/components/CurdForm/src/components/schema-form-date-picker.vue.js +32 -0
  42. package/dist/components/CurdForm/src/components/schema-form-date-picker.vue2.js +27 -0
  43. package/dist/components/CurdForm/src/components/schema-form-input-number.vue.d.ts +54 -0
  44. package/dist/components/CurdForm/src/components/schema-form-input-number.vue.js +39 -0
  45. package/dist/components/CurdForm/src/components/schema-form-input-number.vue2.js +4 -0
  46. package/dist/components/CurdForm/src/components/schema-form-input.vue.d.ts +54 -0
  47. package/dist/components/CurdForm/src/components/schema-form-input.vue.js +44 -0
  48. package/dist/components/CurdForm/src/components/schema-form-input.vue2.js +4 -0
  49. package/dist/components/CurdForm/src/components/schema-form-radio.vue.d.ts +54 -0
  50. package/dist/components/CurdForm/src/components/schema-form-radio.vue.js +114 -0
  51. package/dist/components/CurdForm/src/components/schema-form-radio.vue2.js +4 -0
  52. package/dist/components/CurdForm/src/components/schema-form-select-v2.vue.d.ts +54 -0
  53. package/dist/components/CurdForm/src/components/schema-form-select-v2.vue.js +69 -0
  54. package/dist/components/CurdForm/src/components/schema-form-select-v2.vue2.js +4 -0
  55. package/dist/components/CurdForm/src/components/schema-form-select.vue.js +65 -0
  56. package/dist/components/CurdForm/src/components/schema-form-select.vue2.js +66 -0
  57. package/dist/components/CurdForm/src/components/schema-form-switch.vue.d.ts +54 -0
  58. package/dist/components/CurdForm/src/components/schema-form-switch.vue.js +14 -0
  59. package/dist/components/CurdForm/src/components/schema-form-switch.vue2.js +25 -0
  60. package/dist/components/CurdForm/src/components/schema-form-time-picker.vue.d.ts +57 -0
  61. package/dist/components/CurdForm/src/components/schema-form-time-picker.vue.js +29 -0
  62. package/dist/components/CurdForm/src/components/schema-form-time-picker.vue2.js +30 -0
  63. package/dist/components/CurdForm/src/components/schema-form-tree-select.vue.d.ts +58 -0
  64. package/dist/components/CurdForm/src/components/schema-form-tree-select.vue.js +55 -0
  65. package/dist/components/CurdForm/src/components/schema-form-tree-select.vue2.js +31 -0
  66. package/dist/components/CurdForm/src/components/schema-form-value.vue.d.ts +54 -0
  67. package/dist/components/CurdForm/src/components/schema-form-value.vue.js +11 -0
  68. package/dist/components/CurdForm/src/components/schema-form-value.vue2.js +21 -0
  69. package/dist/components/CurdForm/src/directive/index.d.ts +12 -0
  70. package/dist/components/CurdForm/src/directive/index.js +32 -0
  71. package/dist/components/CurdForm/src/hooks/index.d.ts +4 -0
  72. package/dist/components/CurdForm/src/hooks/index.js +7 -0
  73. package/dist/components/CurdForm/src/types.d.ts +136 -0
  74. package/dist/components/CurdForm/src/types.js +27 -0
  75. package/dist/components/CurdForm/src/utils/ajax.d.ts +25 -0
  76. package/dist/components/CurdForm/src/utils/common.d.ts +1 -0
  77. package/dist/components/CurdForm/src/utils/common.js +13 -0
  78. package/dist/components/CurdGroupForm/index.d.ts +2 -0
  79. package/dist/components/CurdGroupForm/src/CurdGroupForm.vue.d.ts +36 -0
  80. package/dist/components/CurdGroupForm/src/CurdGroupForm.vue.js +113 -0
  81. package/dist/components/CurdGroupForm/src/CurdGroupForm.vue2.js +4 -0
  82. package/dist/components/CurdGroupForm/src/components/CurdFormGroup.vue.d.ts +52 -0
  83. package/dist/components/CurdGroupForm/src/components/CurdFormGroup.vue.js +64 -0
  84. package/dist/components/CurdGroupForm/src/components/CurdFormGroup.vue2.js +4 -0
  85. package/dist/components/CurdGroupForm/src/hooks/useFormHook.d.ts +12 -0
  86. package/dist/components/CurdGroupForm/src/hooks/useFormHook.js +32 -0
  87. package/dist/components/CurdGroupForm/types.d.ts +33 -0
  88. package/dist/components/CurdTable/index.d.ts +13 -0
  89. package/dist/components/CurdTable/index.js +7 -0
  90. package/dist/components/CurdTable/src/CurdTable.vue.js +562 -0
  91. package/dist/components/CurdTable/src/CurdTable.vue2.js +4 -0
  92. package/dist/components/CurdTable/src/STableColumnControl.vue.d.ts +21 -0
  93. package/dist/components/CurdTable/src/STableColumnControl.vue.js +132 -0
  94. package/dist/components/CurdTable/src/STableColumnControl.vue2.js +4 -0
  95. package/dist/components/CurdTable/src/STableDetail.vue.d.ts +9 -0
  96. package/dist/components/CurdTable/src/STableDetail.vue.js +53 -0
  97. package/dist/components/CurdTable/src/STableDetail.vue2.js +4 -0
  98. package/dist/components/CurdTable/src/STableFilter.vue.d.ts +28 -0
  99. package/dist/components/CurdTable/src/STableFilter.vue.js +40 -0
  100. package/dist/components/CurdTable/src/STableFilter.vue2.js +4 -0
  101. package/dist/components/CurdTable/src/STableItem.vue.d.ts +127 -0
  102. package/dist/components/CurdTable/src/STableItem.vue.js +147 -0
  103. package/dist/components/CurdTable/src/STableItem.vue2.js +4 -0
  104. package/dist/components/CurdTable/src/STableItemFilter.vue.d.ts +34 -0
  105. package/dist/components/CurdTable/src/STableItemFilter.vue.js +71 -0
  106. package/dist/components/CurdTable/src/STableItemFilter.vue2.js +4 -0
  107. package/dist/components/CurdTable/src/STableItemFormatter.vue.d.ts +38 -0
  108. package/dist/components/CurdTable/src/STableItemFormatter.vue.js +34 -0
  109. package/dist/components/CurdTable/src/STableItemFormatter.vue2.js +4 -0
  110. package/dist/components/CurdTable/src/STableItemHeader.vue.d.ts +16 -0
  111. package/dist/components/CurdTable/src/STableItemHeader.vue.js +24 -0
  112. package/dist/components/CurdTable/src/STableItemHeader.vue2.js +4 -0
  113. package/dist/components/CurdTable/src/STableItemHeaderTooltip.vue.d.ts +14 -0
  114. package/dist/components/CurdTable/src/STableItemHeaderTooltip.vue.js +48 -0
  115. package/dist/components/CurdTable/src/STableItemHeaderTooltip.vue2.js +4 -0
  116. package/dist/components/CurdTable/src/STableMenu.vue.d.ts +20 -0
  117. package/dist/components/CurdTable/src/STableMenu.vue.js +120 -0
  118. package/dist/components/CurdTable/src/STableMenu.vue2.js +4 -0
  119. package/dist/components/CurdTable/src/hooks/useColumnHook.d.ts +9 -0
  120. package/dist/components/CurdTable/src/hooks/useColumnHook.js +45 -0
  121. package/dist/components/CurdTable/src/types.d.ts +178 -0
  122. package/dist/components/CurdTable/utils/common.d.ts +5 -0
  123. package/dist/components/CurdTable/utils/common.js +18 -0
  124. package/dist/components/CurdTable/utils/tabelToExcel.d.ts +4 -0
  125. package/dist/components/CurdTable/utils/tabelToExcel.js +23 -0
  126. package/dist/components/DetailInfo/index.d.ts +147 -0
  127. package/dist/components/DetailInfo/index.js +7 -0
  128. package/dist/components/DetailInfo/src/DetailInfo.vue.d.ts +77 -0
  129. package/dist/components/DetailInfo/src/DetailInfo.vue.js +144 -0
  130. package/dist/components/DetailInfo/src/DetailInfo.vue2.js +4 -0
  131. package/dist/components/DetailInfo/src/DetailInfoContent.vue.d.ts +16 -0
  132. package/dist/components/DetailInfo/src/DetailInfoContent.vue.js +43 -0
  133. package/dist/components/DetailInfo/src/DetailInfoContent.vue2.js +4 -0
  134. package/dist/components/DetailInfo/src/DetailInfoTooltip.vue.d.ts +15 -0
  135. package/dist/components/DetailInfo/src/DetailInfoTooltip.vue.js +48 -0
  136. package/dist/components/DetailInfo/src/DetailInfoTooltip.vue2.js +4 -0
  137. package/dist/components/DetailInfo/src/types.d.ts +22 -0
  138. package/dist/components/FormDialog/index.d.ts +7 -0
  139. package/dist/components/FormDialog/index.js +6 -0
  140. package/dist/components/FormDialog/src/FormDialog.vue.d.ts +247 -0
  141. package/dist/components/FormDialog/src/FormDialog.vue.js +117 -0
  142. package/dist/components/FormDialog/src/FormDialog.vue2.js +191 -0
  143. package/dist/components/FormDialog/src/hooks/index.d.ts +2 -0
  144. package/dist/components/FormDialog/src/hooks/useStepList.d.ts +14 -0
  145. package/dist/components/FormDialog/src/hooks/useStepList.js +27 -0
  146. package/dist/components/FormDialog/src/hooks/useStepNavigation.d.ts +75 -0
  147. package/dist/components/FormDialog/src/hooks/useStepNavigation.js +34 -0
  148. package/dist/components/FormDialog/src/index.d.ts +13 -0
  149. package/dist/components/FormDialog/src/index.js +23 -0
  150. package/dist/components/FormDialog/src/types.d.ts +63 -0
  151. package/dist/components/TableFilter/index.d.ts +6 -0
  152. package/dist/components/TableFilter/index.js +7 -0
  153. package/dist/components/TableFilter/src/FilterExternal/FilterExternal.vue.js +91 -0
  154. package/dist/components/TableFilter/src/FilterExternal/FilterExternal.vue2.js +4 -0
  155. package/dist/components/TableFilter/src/FilterSearchBox.vue.d.ts +33 -0
  156. package/dist/components/TableFilter/src/FilterSearchBox.vue.js +71 -0
  157. package/dist/components/TableFilter/src/FilterSearchBox.vue2.js +4 -0
  158. package/dist/components/TableFilter/src/TableFilter.vue.js +180 -0
  159. package/dist/components/TableFilter/src/TableFilter.vue2.js +4 -0
  160. package/dist/components/TableFilter/src/components/FilterItem.vue.d.ts +37 -0
  161. package/dist/components/TableFilter/src/components/FilterItem.vue.js +63 -0
  162. package/dist/components/TableFilter/src/components/FilterItem.vue2.js +4 -0
  163. package/dist/components/TableFilter/src/components/FilterTags.vue.d.ts +114 -0
  164. package/dist/components/TableFilter/src/components/FilterTags.vue.js +142 -0
  165. package/dist/components/TableFilter/src/components/FilterTags.vue2.js +4 -0
  166. package/dist/components/TableFilter/src/components/FilterToggle.vue.d.ts +29 -0
  167. package/dist/components/TableFilter/src/components/FilterToggle.vue.js +70 -0
  168. package/dist/components/TableFilter/src/components/FilterToggle.vue2.js +4 -0
  169. package/dist/components/TableFilter/src/components/FilterType.vue.d.ts +30 -0
  170. package/dist/components/TableFilter/src/components/FilterType.vue.js +62 -0
  171. package/dist/components/TableFilter/src/components/FilterType.vue2.js +4 -0
  172. package/dist/components/TableFilter/src/components/containers/TagsSelect.vue.d.ts +42 -0
  173. package/dist/components/TableFilter/src/components/containers/TagsSelect.vue.js +99 -0
  174. package/dist/components/TableFilter/src/components/containers/TagsSelect.vue2.js +4 -0
  175. package/dist/components/TableFilter/types.d.ts +34 -0
  176. package/dist/index.d.ts +22 -0
  177. package/dist/index.js +35 -0
  178. package/dist/locale/index.d.ts +9 -0
  179. package/dist/locale/index.js +6 -0
  180. package/dist/locale/lang/en.d.ts +49 -0
  181. package/{locale/lang/en.ts → dist/locale/lang/en.js} +10 -7
  182. package/dist/locale/lang/zh-cn.d.ts +49 -0
  183. package/{locale/lang/zh-cn.ts → dist/locale/lang/zh-cn.js} +10 -7
  184. package/dist/utils/common/index.d.ts +8 -0
  185. package/dist/utils/common/index.js +13 -0
  186. package/dist/utils/hooks/useGlobalConfig.d.ts +13 -0
  187. package/dist/utils/hooks/useGlobalConfig.js +22 -0
  188. package/dist/utils/hooks/useLocal.d.ts +15 -0
  189. package/dist/utils/hooks/useLocal.js +33 -0
  190. package/dist/utils/index.d.ts +2 -0
  191. package/dist/utils/index.js +6 -0
  192. package/dist/utils/vue/index.d.ts +2 -0
  193. package/dist/utils/vue/index.js +4 -0
  194. package/dist/utils/vue/install.d.ts +2 -0
  195. package/dist/utils/vue/install.js +14 -0
  196. package/dist/utils/vue/make-installer.d.ts +5 -0
  197. package/dist/utils/vue/make-installer.js +9 -0
  198. package/dist/utils/vue/typescript.d.ts +5 -0
  199. package/package.json +55 -46
  200. package/components/ConstantStatus/index.ts +0 -5
  201. package/components/ConstantStatus/src/ConstantStatus.vue +0 -69
  202. package/components/ConstantStatus/src/index.ts +0 -3
  203. package/components/ConstantStatus/src/types.ts +0 -18
  204. package/components/CurdForm/index.ts +0 -9
  205. package/components/CurdForm/src/CurdForm.vue +0 -500
  206. package/components/CurdForm/src/CurdFormItem.vue +0 -70
  207. package/components/CurdForm/src/FormItem.vue +0 -105
  208. package/components/CurdForm/src/FormTooltip.vue +0 -54
  209. package/components/CurdForm/src/components/index.ts +0 -52
  210. package/components/CurdForm/src/components/schema-form-autocomplete.vue +0 -25
  211. package/components/CurdForm/src/components/schema-form-cascader.vue +0 -24
  212. package/components/CurdForm/src/components/schema-form-checkbox.vue +0 -53
  213. package/components/CurdForm/src/components/schema-form-choose.vue +0 -225
  214. package/components/CurdForm/src/components/schema-form-color-picker.vue +0 -23
  215. package/components/CurdForm/src/components/schema-form-date-picker.vue +0 -34
  216. package/components/CurdForm/src/components/schema-form-input-number.vue +0 -12
  217. package/components/CurdForm/src/components/schema-form-input.vue +0 -21
  218. package/components/CurdForm/src/components/schema-form-radio.vue +0 -59
  219. package/components/CurdForm/src/components/schema-form-select-v2.vue +0 -60
  220. package/components/CurdForm/src/components/schema-form-select.vue +0 -93
  221. package/components/CurdForm/src/components/schema-form-switch.vue +0 -29
  222. package/components/CurdForm/src/components/schema-form-time-picker.vue +0 -37
  223. package/components/CurdForm/src/components/schema-form-tree-select.vue +0 -45
  224. package/components/CurdForm/src/components/schema-form-value.vue +0 -25
  225. package/components/CurdForm/src/directive/index.ts +0 -60
  226. package/components/CurdForm/src/hooks/index.ts +0 -6
  227. package/components/CurdForm/src/types.ts +0 -146
  228. package/components/CurdForm/src/utils/ajax.ts +0 -125
  229. package/components/CurdForm/src/utils/common.ts +0 -17
  230. package/components/CurdGroupForm/index.ts +0 -2
  231. package/components/CurdGroupForm/src/CurdGroupForm.vue +0 -93
  232. package/components/CurdGroupForm/src/components/CurdFormGroup.vue +0 -39
  233. package/components/CurdGroupForm/src/hooks/useFormHook.ts +0 -55
  234. package/components/CurdGroupForm/types.ts +0 -22
  235. package/components/CurdTable/index.ts +0 -5
  236. package/components/CurdTable/src/CurdTable.vue +0 -470
  237. package/components/CurdTable/src/STableColumnControl.vue +0 -88
  238. package/components/CurdTable/src/STableDetail.vue +0 -52
  239. package/components/CurdTable/src/STableFilter.vue +0 -50
  240. package/components/CurdTable/src/STableItem.vue +0 -119
  241. package/components/CurdTable/src/STableItemFilter.vue +0 -53
  242. package/components/CurdTable/src/STableItemFormatter.vue +0 -35
  243. package/components/CurdTable/src/STableItemHeader.vue +0 -33
  244. package/components/CurdTable/src/STableItemHeaderTooltip.vue +0 -32
  245. package/components/CurdTable/src/STableMenu.vue +0 -77
  246. package/components/CurdTable/src/hooks/useColumnHook.ts +0 -77
  247. package/components/CurdTable/src/types.ts +0 -163
  248. package/components/CurdTable/utils/common.ts +0 -33
  249. package/components/CurdTable/utils/tabelToExcel.ts +0 -68
  250. package/components/DetailInfo/index.ts +0 -5
  251. package/components/DetailInfo/src/DetailInfo.vue +0 -108
  252. package/components/DetailInfo/src/DetailInfoContent.vue +0 -27
  253. package/components/DetailInfo/src/DetailInfoTooltip.vue +0 -33
  254. package/components/DetailInfo/src/types.ts +0 -23
  255. package/components/FormDialog/index.ts +0 -3
  256. package/components/FormDialog/src/FormDialog.vue +0 -276
  257. package/components/FormDialog/src/hooks/index.ts +0 -2
  258. package/components/FormDialog/src/hooks/useStepList.ts +0 -49
  259. package/components/FormDialog/src/hooks/useStepNavigation.ts +0 -74
  260. package/components/FormDialog/src/index.ts +0 -39
  261. package/components/FormDialog/src/types.ts +0 -51
  262. package/components/TableFilter/index.ts +0 -6
  263. package/components/TableFilter/src/FilterExternal/FilterExternal.vue +0 -121
  264. package/components/TableFilter/src/FilterSearchBox.vue +0 -65
  265. package/components/TableFilter/src/TableFilter.vue +0 -236
  266. package/components/TableFilter/src/components/FilterItem.vue +0 -76
  267. package/components/TableFilter/src/components/FilterTags.vue +0 -132
  268. package/components/TableFilter/src/components/FilterToggle.vue +0 -40
  269. package/components/TableFilter/src/components/FilterType.vue +0 -78
  270. package/components/TableFilter/src/components/containers/TagsSelect.vue +0 -89
  271. package/components/TableFilter/types.ts +0 -36
  272. package/index.ts +0 -25
  273. package/locale/index.ts +0 -11
  274. package/utils/common/index.ts +0 -24
  275. package/utils/hooks/useGlobalConfig.ts +0 -39
  276. package/utils/hooks/useLocal.ts +0 -61
  277. package/utils/index.ts +0 -2
  278. package/utils/vue/index.ts +0 -3
  279. package/utils/vue/install.ts +0 -18
  280. package/utils/vue/make-installer.ts +0 -16
  281. package/utils/vue/typescript.ts +0 -7
@@ -1,39 +0,0 @@
1
- <template>
2
- <div class="curdform-group" :style="props.item.style" :class="props.item.class">
3
- <div v-if="props.title || $slots.title" class="curdform-group-head">
4
- <div class="left">
5
- <span v-if="props.icon" class="icon"><i v-if="typeof props.icon == 'string'" :class="props.icon"></i><component v-else :is="props.icon"></component></span>
6
- <div v-if="!$slots.title" class="title">{{ props.title }}</div>
7
- <slot name="title"></slot>
8
- </div>
9
- <div class="right">
10
- <slot name="headerRight"></slot>
11
- </div>
12
- </div>
13
- <div v-if="props.item.desc" class="curdform-group-desc">{{ props.item.desc }}</div>
14
- <slot name="headerBottom"></slot>
15
- <div v-if="$slots.default" class="curdform-group-body">
16
- <slot></slot>
17
- </div>
18
- </div>
19
- </template>
20
-
21
- <script lang="ts" setup>
22
- import type { PropType } from "vue"
23
- import type { CurdGroupFormSchemaItem } from "../../types"
24
-
25
- const props = defineProps({
26
- title: {
27
- type: String,
28
- default: "",
29
- },
30
- icon: {
31
- type: String,
32
- default: "",
33
- },
34
- item: {
35
- type: Object as PropType<CurdGroupFormSchemaItem>,
36
- default: () => ({}),
37
- },
38
- })
39
- </script>
@@ -1,55 +0,0 @@
1
- import { CurdForm } from "easybill-ui"
2
- import { ref, type Ref } from "vue"
3
- import type { CurdGroupFormSchema, CurdGroupFormSchemaItem } from "../../types"
4
-
5
- export const useFormHook = (): {
6
- form: Ref<Record<string, unknown>>
7
- formRef: Ref<Record<string, InstanceType<typeof CurdForm>>>
8
- submit: () => void
9
- schema: Ref<CurdGroupFormSchema | undefined>
10
- validate: (callback: (valid: boolean) => void) => void
11
- loading: Ref<boolean>
12
- schemaItemHidden: (item: CurdGroupFormSchemaItem) => boolean
13
- } => {
14
- const formRef = ref<Record<string, InstanceType<typeof CurdForm>>>({})
15
- const form = ref<Record<string, unknown>>({})
16
- const schema = ref<CurdGroupFormSchema>()
17
- const loading = ref(false)
18
- const schemaItemHidden = (item: CurdGroupFormSchemaItem) => {
19
- if (item?.hidden && item?.hidden instanceof Function) {
20
- return item.hidden(form.value, item)
21
- }
22
- return !!item?.hidden
23
- }
24
- const validate = (callback: (valid: boolean) => void) => {
25
- const validMap: boolean[] = []
26
- for (const i in formRef.value) {
27
- const curSchema = schema.value?.items.find((a, index) => (a.step || "") + a.groupName + index == i)
28
- // 如果当前item隐藏了,则直接跳过校验
29
- if (curSchema && schemaItemHidden(curSchema)) {
30
- validMap.push(true)
31
- continue
32
- }
33
- const cur = formRef.value[i]
34
- cur.validate((valid: boolean) => {
35
- validMap.push(valid)
36
- if (validMap.length >= Object.keys(formRef.value).length && callback) callback(validMap.every((a) => a))
37
- })
38
- }
39
- }
40
- const submit = () => {
41
- validate((valid) => {
42
- if (!valid) return
43
- })
44
- }
45
-
46
- return {
47
- form,
48
- formRef,
49
- submit,
50
- schema,
51
- validate,
52
- loading,
53
- schemaItemHidden,
54
- }
55
- }
@@ -1,22 +0,0 @@
1
- import type { Fields, FormSchema } from "easybill-ui"
2
- import type { Component, VNode } from "vue"
3
- export interface CurdGroupFormSchema {
4
- items: CurdGroupFormSchemaItem[]
5
- }
6
-
7
- export interface CurdGroupFormSchemaItem {
8
- groupName: string
9
- schema: FormSchema
10
- icon?: string
11
- prop?: string // 唯一标识 不可修改
12
- desc?: string
13
- step?: string
14
- stepIndex?: number
15
- class?: string
16
- style?: string
17
- labelPosition?: string | "left" | "right" | "top"
18
- hidden?: boolean | ((form: Fields, schemaItem: CurdGroupFormSchemaItem) => boolean)
19
- headerRight?: Component | ((props: { schema: CurdGroupFormSchema; schemaItem: CurdGroupFormSchemaItem; formModel: Fields }) => VNode | VNode[])
20
- headerBottom?: Component | ((props: { schema: CurdGroupFormSchema; schemaItem: CurdGroupFormSchemaItem; formModel: Fields }) => VNode | VNode[])
21
- headerTitle?: Component | ((props: { schema: CurdGroupFormSchema; schemaItem: CurdGroupFormSchemaItem; formModel: Fields }) => VNode | VNode[])
22
- }
@@ -1,5 +0,0 @@
1
- import { withInstall, type SFCWithInstall } from "../../utils"
2
- import Instance from "./src/CurdTable.vue"
3
- export const CurdTable: SFCWithInstall<typeof Instance> = withInstall("CurdTable", Instance)
4
- export default CurdTable as SFCWithInstall<typeof Instance>
5
- export * from "./src/types"
@@ -1,470 +0,0 @@
1
- <template>
2
- <div class="table-container">
3
- <STableFilter v-if="selectParams.length && filterVisible" ref="sTableFilter" :list-query="search" @search="onSearch" />
4
- <div v-if="!option.hideMenu" class="table-control">
5
- <div class="btn-control">
6
- <el-button v-if="!option.hideMenuAdd && props.fetchCreate" type="primary" :icon="Plus" @click="create()">{{ t("el.table.create") }}</el-button>
7
- <slot name="menuLeft"></slot>
8
- </div>
9
- <div class="min-control">
10
- <slot name="menuRight"></slot>
11
- <STableMenu v-if="!option.hideMenuRight" ref="tableMenuRef" :filter-visible="filterVisible" @operation="onMenuOption" />
12
- </div>
13
- </div>
14
- <div class="table-wrapper">
15
- <el-table ref="tableRef" v-loading="loading" stripe :data="list" scrollbar-always-on v-bind="{ ...$attrs, ...tableAttrs }" @row-click="onRowClick" @selection-change="selectionChange">
16
- <slot name="default"></slot>
17
- <el-table-column v-if="$attrs.index !== undefined" type="index" />
18
- <el-table-column v-if="$attrs.selection !== undefined && $attrs.selection !== false" type="selection" v-bind="option.selectionProps" />
19
- <template v-for="item in tableColumns" :key="item.label">
20
- <el-table-column v-if="item.type == 'index'" type="index" v-bind="item" />
21
- <el-table-column v-else-if="item.type == 'selection'" type="selection" v-bind="item" />
22
- <STableItem v-else :ref="getTableItemRef(item.prop)" :schema="item" :is-slot="!!$slots[item.prop]" :is-slot-header="!!$slots[item.prop + 'Header']" :option="option" @search="onItemChange">
23
- <template v-for="(_slot, key) in $slots" :key="key" #[key]="scopeChild">
24
- <slot :name="key" v-bind="normalizeSlotScope(scopeChild)"></slot>
25
- </template>
26
- </STableItem>
27
- </template>
28
- <el-table-column v-if="!option.hideOperation" :label="t('el.table.operation')" fixed="right" :width="option.operationWidth || '200'" align="left">
29
- <template #default="scope">
30
- <slot name="operation" v-bind="scope"></slot>
31
- <template v-if="!$slots.operationBtn">
32
- <el-button v-if="!option.hideOperationEdit && props.fetchEdit" type="primary" link :icon="Edit" @click.stop="create(scope.row)">{{ t("el.table.edit") }}</el-button>
33
- <el-button v-if="!option.hideOperationDetail" type="primary" link :icon="Document" @click.stop="detail(scope.row)">{{ t("el.table.detail") }}</el-button>
34
- <el-button v-if="!option.hideOperationDelete && props.fetchRemove" type="danger" link :icon="Delete" @click.stop="startremove(scope)">{{ t("el.table.delete") }}</el-button>
35
- </template>
36
- <template v-else>
37
- <el-dropdown trigger="click" popper-class="curd-table-dropdown-menu">
38
- <el-button type="primary" link>
39
- {{ option.operationBtnTitle || "更多" }}
40
- <el-icon>
41
- <ArrowDown />
42
- </el-icon>
43
- </el-button>
44
- <template #dropdown>
45
- <el-dropdown-menu>
46
- <slot name="operationBtn" v-bind="scope"></slot>
47
- <el-dropdown-item v-if="!option.hideOperationEdit && props.fetchEdit">
48
- <el-button type="primary" link @click.stop="create(scope.row, scope.$index)">编辑</el-button>
49
- </el-dropdown-item>
50
- <el-dropdown-item v-if="!option.hideOperationDetail">
51
- <el-button type="primary" link @click.stop="detail(scope.row)">详情</el-button>
52
- </el-dropdown-item>
53
- <el-dropdown-item v-if="!option.hideOperationDelete && props.fetchRemove">
54
- <el-button type="danger" link @click.stop="startremove(scope)">删除 </el-button>
55
- </el-dropdown-item>
56
- </el-dropdown-menu>
57
- </template>
58
- </el-dropdown>
59
- </template>
60
- </template>
61
- </el-table-column>
62
- <template #empty>
63
- <slot name="empty"></slot>
64
- <el-empty v-if="!$slots.empty" :image-size="30" />
65
- </template>
66
- </el-table>
67
- </div>
68
- <div v-if="$slots.pageLeft || $slots.pageRight || !option.hidePage" class="table-pager">
69
- <div class="page-left"><slot name="pageLeft"></slot></div>
70
- <el-pagination
71
- v-if="!option.hidePage"
72
- v-model:current-page="listQuery.pageIndex"
73
- v-model:page-size="listQuery.pageSize"
74
- class="pagination"
75
- background
76
- layout="total, sizes, prev, pager, next, jumper"
77
- :total="total"
78
- v-bind="option.pageProps"
79
- @current-change="fetchData"
80
- @size-change="fetchData"
81
- ></el-pagination>
82
- <slot name="pageRight" :list-query="listQuery" :total="total"></slot>
83
- </div>
84
-
85
- <STableDetail ref="STableDetailRef" />
86
- </div>
87
- </template>
88
-
89
- <script lang="ts" setup>
90
- import { ArrowDown, Delete, Document, Edit, Plus } from "@element-plus/icons-vue"
91
- import { FormDialog, useGlobalConfig, useLocale } from "easybill-ui"
92
- import { ElLoading, ElMessage, ElMessageBox, ElTable } from "element-plus"
93
- import { computed, getCurrentInstance, onActivated, onMounted, type PropType, provide, reactive, ref, type Ref, watch } from "vue"
94
- import type { Fields, FormItem, FormSchema } from "../../CurdForm"
95
- import type { FilterItem, ListQuery } from "../../TableFilter"
96
- import { deepClone } from "../utils/common"
97
- import { exportExcel } from "../utils/tabelToExcel"
98
- import { useColumnHook } from "./hooks/useColumnHook"
99
- import STableDetail from "./STableDetail.vue"
100
- import STableFilter from "./STableFilter.vue"
101
- import STableItem from "./STableItem.vue"
102
- import STableMenu from "./STableMenu.vue"
103
- import type { ColumnItem, FeachDataParam, FetchDataOpt, FormAttrs, MenuEventKey, PropOption } from "./types"
104
-
105
- const props = defineProps({
106
- // 表格的数据
107
- data: {
108
- type: Array as PropType<Record<string, unknown>[]>,
109
- default() {
110
- return []
111
- },
112
- },
113
- // 表格列模型
114
- columns: {
115
- type: Array as PropType<Array<ColumnItem<Record<string, unknown>>>>,
116
- default() {
117
- return []
118
- },
119
- },
120
- pageOptions: {
121
- type: Object as PropType<{ pageIndex?: number; pageSize?: number; total?: number } & Fields>,
122
- default() {
123
- return {
124
- pageIndex: 1,
125
- pageSize: 10,
126
- }
127
- },
128
- },
129
- // 调用接口获取数据
130
- fetchData: {
131
- type: Function as PropType<(opt: FeachDataParam) => Promise<{ total?: number; list?: Record<string, unknown>[] } | void>>,
132
- default: null,
133
- },
134
- // 自定义创建函数
135
- fetchCreate: {
136
- type: Function as PropType<(formModel: Fields) => void | boolean | Promise<void | boolean>>,
137
- default: null,
138
- },
139
- // 自定义编辑函数
140
- fetchEdit: {
141
- type: Function as PropType<(formModel: Fields, row: Record<string, unknown>, index?: number) => void | boolean | Promise<void | boolean>>,
142
-
143
- default: null,
144
- },
145
- // 自定义删除函数
146
- fetchRemove: {
147
- type: Function as PropType<(row: unknown, index: number) => Promise<void>>,
148
- default: null,
149
- },
150
- // 专门配置一些公共的参数
151
- option: {
152
- type: Object as PropType<Partial<PropOption>>,
153
- default() {
154
- return {}
155
- },
156
- },
157
- })
158
- const { t } = useLocale()
159
- const defaultOption = {
160
- operationWidth: 200,
161
- operationBtnTitle: t("el.table.more"),
162
- hideMenu: false, // 是否隐藏右侧工具菜单
163
- hideMenuAdd: false, // 是否隐藏菜单中添加按钮
164
- hideMenuRight: false, // 是否隐藏菜单右侧
165
- hideOperation: false, // 是否隐藏操作列
166
- hideOperationEdit: false, // 是否隐藏操作列中的编辑按钮
167
- hideOperationDetail: false, // 是否隐藏操作列中的详情按钮
168
- hideOperationDelete: false, // 是否隐藏操作列中的删除按钮
169
- hidePage: false, // 是否隐藏分页器
170
- excelTitle: "", //导出表格的文件名
171
- selectionProps: null,
172
- downloadMod: false,
173
- pageProps: null,
174
- filterVisible: true,
175
- autoload: true,
176
- customActivatedFetch: false, // 自定义执行onActivated内部的fetch执行,完全交由父组件控制 false 是自动的,true 开发者自己控制
177
- }
178
- const emits = defineEmits(["selectionChange", "row-click"])
179
- const list = ref(props.data)
180
- watch(
181
- () => props.data,
182
- (val) => {
183
- list.value = val
184
- },
185
- { deep: true },
186
- )
187
- const globalConfig = useGlobalConfig()
188
- const tableAttrs = ref({ size: globalConfig.value.size || "default" })
189
- const listQuery = reactive({
190
- pageIndex: 1,
191
- pageSize: props.pageOptions?.pageSize || 10,
192
- })
193
-
194
- // 调用接口获取数据
195
- const setPageIndex = (pageIndex: number) => {
196
- listQuery.pageIndex = pageIndex
197
- }
198
- const search = reactive<ListQuery>(
199
- (() => {
200
- const { pageIndex, pageSize, total, ...args } = deepClone(props.pageOptions || {})
201
- return args
202
- })(),
203
- )
204
- const option: PropOption = reactive(Object.assign(defaultOption, props.option))
205
- provide("search", search)
206
- provide("option", option)
207
- watch(
208
- () => props.option,
209
- (val) => {
210
- Object.assign(option, val)
211
- },
212
- { deep: true },
213
- )
214
- const filterVisible = ref(typeof option?.filterVisible == "undefined" ? true : option?.filterVisible)
215
- const loading = ref(false)
216
- const listTotal = ref(0)
217
- const setTotal = (num: number) => {
218
- listTotal.value = num
219
- }
220
- // 总数量由外面决定
221
- const total = computed(() => listTotal.value || (typeof props.pageOptions.total == "undefined" ? props.data.length || 0 : props.pageOptions.total))
222
- const fetchData = async (opt?: FetchDataOpt) => {
223
- if (props.fetchData) {
224
- if (!(opt && opt.showLoading == false)) {
225
- loading.value = true
226
- }
227
- if (opt && opt.resetPageIndex) {
228
- listQuery.pageIndex = 1
229
- }
230
- const optQuery = (opt && opt.query) || {}
231
- // 外面指定了筛选条件
232
- for (let i in optQuery) {
233
- search[i] = optQuery[i]
234
- // 更新tableFilter组件
235
- sTableFilter.value?.setItem(i)
236
- if (tableItemRefs.value[i]) tableItemRefs.value[i].search({ listQuery: search })
237
- }
238
- const params: Fields & { pageIndex: number; pageSize: number } = { ...listQuery, ...search }
239
- const fetchDataRes = await props.fetchData({ listQuery: params }).finally(() => {
240
- loading.value = false
241
- })
242
- if (fetchDataRes && typeof fetchDataRes.total !== "undefined") {
243
- listTotal.value = fetchDataRes.total
244
- }
245
- if (fetchDataRes && typeof fetchDataRes.list !== "undefined") {
246
- list.value = fetchDataRes.list
247
- }
248
- }
249
- }
250
- const tableItemRefs: Ref<Record<string, InstanceType<typeof STableItem>>> = ref({})
251
- const normalizeSlotScope = (scope: unknown) => (scope && typeof scope === "object" ? scope : {})
252
- const getTableItemRef = (prop: string) => {
253
- return (el: unknown) => {
254
- if (el) {
255
- tableItemRefs.value[prop] = el as InstanceType<typeof STableItem>
256
- }
257
- }
258
- }
259
- // 搜索
260
- const onSearch = (params?: ListQuery) => {
261
- if (params) {
262
- for (let i in params) {
263
- search[i] = params[i]
264
- }
265
- }
266
- listQuery.pageIndex = 1
267
- fetchData()
268
- for (let i in tableItemRefs.value) {
269
- if (tableItemRefs.value[i]) tableItemRefs.value[i].search({ listQuery: params || {} })
270
- }
271
- }
272
- const sTableFilter: Ref<InstanceType<typeof STableFilter> | undefined> = ref()
273
- const onItemChange = (prop: string, value: string, filter: FilterItem) => {
274
- sTableFilter.value?.setItem(prop, filter)
275
- search[prop] = value
276
-
277
- listQuery.pageIndex = 1
278
- fetchData()
279
- }
280
- let hasInit = false
281
- onActivated(() => {
282
- // option?.customActivatedFetch为true时,参考/system/partner/account/vendor写法
283
- if (!option?.customActivatedFetch && hasInit) {
284
- fetchData()
285
- } else {
286
- hasInit = true
287
- }
288
- })
289
- // filter内部有一些初始化的操作,比如操作value初始值,需要等子组件初始化后再执行列表数据fetch操作
290
- onMounted(() => {
291
- if (option.autoload) fetchData()
292
- provide("tableFilter", sTableFilter.value)
293
- })
294
- // 组装columns
295
- const { tableColumns, selectParams, initColumn } = useColumnHook<Record<string, unknown>>()
296
- initColumn(props.columns)
297
- watch(
298
- () => props.columns,
299
- (val) => {
300
- initColumn(val)
301
- },
302
- )
303
- // 菜单点击事件
304
- const onMenuOption = (optionKey: MenuEventKey, val: string) => {
305
- const f = option.menuEvent && option.menuEvent[optionKey]
306
- if (f) {
307
- return f()
308
- }
309
- switch (optionKey) {
310
- case "refresh":
311
- fetchData()
312
- break
313
- case "searchToggle":
314
- filterVisible.value = !filterVisible.value
315
- break
316
- case "size": {
317
- if (val == "small" || val == "default" || val == "large") {
318
- tableAttrs.value.size = val
319
- }
320
- break
321
- }
322
- case "export": {
323
- const getTableValue = (val: unknown, schema: ColumnItem<Record<string, unknown>>, row: Record<string, unknown>, i: number): string | number => {
324
- if (schema.options) {
325
- const vals = String(val).split(",")
326
- const curs = vals.map((item) => {
327
- const cur = schema.options?.find((a) => a.value == item)
328
- return (cur && cur.label) || item
329
- })
330
- return curs.join(",")
331
- }
332
- if (schema.formatter) {
333
- let result = schema.formatter(row, schema, val, i) as string
334
- if (/^[0-9\.,+-]+\.[0-9]{2}$/.test(String(result)) && String(result).split(".").length < 3) {
335
- const resultNum = +parseFloat(String(result).replace(/,|$|¥/g, ""))
336
- return resultNum
337
- }
338
- return result === "--" ? "" : result
339
- }
340
- if (/^[0-9\.,+-]+\.[0-9]{2}$/.test(String(val)) && String(val).split(".").length < 3) {
341
- val = +parseFloat(String(val).replace(/,|$|¥/g, ""))
342
- }
343
- return val as string
344
- }
345
- const data = list.value.map((a) => tableColumns.value.filter((b) => !b.hidden && !b.neverShow).map((b, i) => getTableValue(a[b.prop], b, a, i)))
346
- const header = tableColumns.value.filter((b) => !b.hidden && !b.neverShow).map((a) => a.label)
347
- const tabledata = [header, ...data]
348
- const filename = "data"
349
- exportExcel(tabledata, "data", (option.excelTitle || filename) + ".xls")
350
- ElMessage.success(t("el.table.exportSuccess"))
351
- break
352
- }
353
- }
354
- }
355
-
356
- // 添加/编辑
357
- const create = (row?: Record<string, unknown>, index?: number) => {
358
- const formAttrs: FormAttrs | undefined = option.formAttrs
359
- const formSchema: FormSchema = {
360
- formItem: [],
361
- rules: {},
362
- labelWidth: "110px",
363
- ...formAttrs,
364
- }
365
- const setItem = (a: ColumnItem<Record<string, unknown>>) => {
366
- if (!a.form) return
367
- let formValue: Partial<FormItem>
368
- if (a.form instanceof Function) {
369
- const row1 = row || {}
370
- formValue = a.form(a, row1, search)
371
- } else {
372
- formValue = a.form
373
- }
374
- const { rules, prop, ...formProps } = formValue
375
- const item: FormItem = {
376
- span: 24,
377
- label: a.label,
378
- options: a.options,
379
- asyncOptions: a.asyncOptions,
380
- ...formProps,
381
- prop: prop || a.prop,
382
- }
383
- formSchema.formItem.push(item)
384
- if (rules) {
385
- if (!formSchema.rules) formSchema.rules = {}
386
- if (typeof formSchema.rules !== "function") {
387
- formSchema.rules[item.prop] = rules
388
- }
389
- }
390
- }
391
- tableColumns.value.map((a) => {
392
- if (a.children && a.children.length) {
393
- for (let i in a.children) {
394
- if (a.children[i].form) setItem(a.children[i])
395
- }
396
- } else if (a.form) {
397
- setItem(a)
398
- }
399
- })
400
- formSchema.formItem.sort((a, b) => (b.sortIndex || 0) - (a.sortIndex || 0))
401
- const eoptions = row ? option.editOptions : option.createOptions
402
- FormDialog.show({
403
- title: row ? t("el.table.edit") : t("el.table.create"),
404
- formSchema: formSchema,
405
- fields: row as Fields,
406
- width: formAttrs?.width || 600,
407
- handleOk: async (modelRef: Fields) => {
408
- if (row) {
409
- return await props.fetchEdit?.(modelRef, row, index)
410
- }
411
- return await props.fetchCreate?.(modelRef)
412
- },
413
- ...eoptions,
414
- })
415
- }
416
- const instance = getCurrentInstance()
417
- const startremove = (scope: { row: unknown; $index: number }) => {
418
- ElMessageBox.confirm(t("el.table.deleteConfirm"), t("el.table.tip"), {
419
- type: "warning",
420
- }).then(async () => {
421
- const loading = ElLoading.service({ fullscreen: true })
422
- await (props.fetchRemove && props.fetchRemove(scope.row, scope.$index)).finally(() => {
423
- loading.close()
424
- })
425
- ElMessage({ type: "success", message: t("el.table.deleteSuccess") })
426
- })
427
- }
428
-
429
- // 详情
430
- const STableDetailRef = ref()
431
- const detail = (row: unknown) => {
432
- STableDetailRef.value.open({ data: row, columns: tableColumns.value })
433
- }
434
- // 行点击事件
435
- const onRowClick = (row: unknown, column: ColumnItem, event: Event) => {
436
- if (instance && typeof instance.attrs["click-row-to-view"] !== "undefined") {
437
- detail(row)
438
- }
439
- emits("row-click", row, column, event)
440
- }
441
- // 多选事件
442
- const selectionChange = (rows: unknown[]) => {
443
- emits("selectionChange", rows)
444
- }
445
- const tableRef = ref<InstanceType<typeof ElTable>>() // 表格的实例
446
-
447
- const toggleRowSelection = (row: unknown, isChecked?: boolean) => {
448
- setTimeout(() => {
449
- tableRef.value?.toggleRowSelection(row, !!isChecked)
450
- })
451
- }
452
- const tableMenuRef = ref()
453
- defineExpose({
454
- fetchData,
455
- tableRef,
456
- tableFilterRef: sTableFilter,
457
- tableMenuRef,
458
- toggleRowSelection,
459
- setPageIndex,
460
- setTotal,
461
- search,
462
- listQuery,
463
- fetchCreate: create,
464
- fetchEdit: create,
465
- fetchRemove: startremove,
466
- getEl() {
467
- return instance?.proxy?.$el
468
- },
469
- })
470
- </script>
@@ -1,88 +0,0 @@
1
- <template>
2
- <el-drawer v-model="visible" :title="t('el.table.columnSet')" size="40%" append-to-body>
3
- <el-table :data="columnDatas">
4
- <el-table-column property="label" :label="t('el.table.columnName')"></el-table-column>
5
- <el-table-column property="hidden" :label="t('el.table.show')" width="60">
6
- <template #default="scope">
7
- <el-switch v-model="scope.row.hidden" :active-value="false" :inactive-value="true" size="small" @change="onChangeHidden()"></el-switch>
8
- </template>
9
- </el-table-column>
10
- <el-table-column property="fixed" :label="t('el.table.fixShow')" width="160" align="center">
11
- <template #default="scope">
12
- <el-button-group>
13
- <el-tooltip v-for="item in fixedMap" :key="item.value" :content="item.label">
14
- <el-button :type="(!scope.row.fixed && item.value == '') || scope.row.fixed == item.value ? 'primary' : ''" size="small" @click="selectFixed(scope.row, item.value)">
15
- <el-icon><component :is="item.icon" /></el-icon>
16
- </el-button>
17
- </el-tooltip>
18
- </el-button-group>
19
- </template>
20
- </el-table-column>
21
- </el-table>
22
- </el-drawer>
23
- </template>
24
- <script lang="ts" setup>
25
- import { CaretLeft, CaretRight, VideoPause } from "@element-plus/icons-vue"
26
- import { computed, inject, ref, shallowRef, triggerRef, watch, type PropType, type Ref } from "vue"
27
- import { useLocale } from "easybill-ui"
28
- import type { ColumnItem } from "./types"
29
- const props = defineProps({
30
- visible: {
31
- type: Boolean as PropType<boolean>,
32
- default: false,
33
- },
34
- })
35
- const emits = defineEmits(["update:visible", "change"])
36
- const { t } = useLocale()
37
- const columns = inject<Ref<Array<ColumnItem>>>("columns") || ref([])
38
- const visible = computed({
39
- get() {
40
- return props.visible
41
- },
42
- set(val) {
43
- emits("update:visible", val)
44
- },
45
- })
46
- watch(
47
- () => props.visible,
48
- (val) => {
49
- visible.value = val
50
- },
51
- )
52
- const columnDatas = computed(() => {
53
- const result = []
54
- for (const i in columns.value) {
55
- const column = columns.value[i]
56
- if (column.children) {
57
- for (const j in column.children) {
58
- const child = column.children[j]
59
- if (!child.neverShow) {
60
- result.push(child)
61
- }
62
- }
63
- continue
64
- } else if (!column.neverShow) {
65
- result.push(column)
66
- }
67
- }
68
- return result
69
- })
70
- const fixedMap = shallowRef([
71
- { value: "left", label: t("el.table.fixLeft"), icon: CaretLeft },
72
- { value: "", label: t("el.table.fixNone"), icon: VideoPause },
73
- { value: "right", label: t("el.table.fixRight"), icon: CaretRight },
74
- ])
75
- const selectFixed = (row: Record<string, unknown>, val: string) => {
76
- if (val) {
77
- row.fixed = val
78
- } else {
79
- delete row.fixed
80
- }
81
- triggerRef(columns)
82
- emits("change")
83
- }
84
- const onChangeHidden = () => {
85
- triggerRef(columns)
86
- emits("change")
87
- }
88
- </script>