easybill-ui 1.4.0 → 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 +61 -32
  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,93 +0,0 @@
1
- <template>
2
- <el-select v-model="model" style="width: 100%" :loading="formItem.loading || loading" :filterable="true" v-bind="selectProps" v-on="eventObject">
3
- <el-option v-if="props.all && !props.multiple" value="" :label="t('el.form.all')"></el-option>
4
- <el-checkbox v-if="props.all && props.multiple" v-model="checked" :label="t('el.form.allSelect')" class="schema-form-select-check" />
5
- <template v-for="option in list" :key="option.value">
6
- <el-option :value="option.value" :label="option.label" :disabled="option.disabled">
7
- <div v-if="option.html" v-html="option.html"></div>
8
- <template v-else>{{ option.label }}</template>
9
- </el-option>
10
- </template>
11
- <template v-for="(item, key) in props?.slots" :key="key" #[key]>
12
- <component :is="item" v-model="model" :formItem="formItem" :formModel="formModel" :props="props" :event-object="eventObject" />
13
- </template>
14
- </el-select>
15
- </template>
16
- <script lang="ts">
17
- import { useLocale } from "easybill-ui"
18
- import { computed, defineComponent, onMounted, ref, watch } from "vue"
19
- import type { CurdFormOptionItem } from "../types"
20
- import { FormItemProps } from "../types"
21
- export default defineComponent({
22
- name: "SchemaFormSelect",
23
- components: {},
24
- props: {
25
- ...FormItemProps,
26
- modelValue: {
27
- type: [String, Number, Boolean, Array],
28
- default: null,
29
- },
30
- },
31
- emits: ["update:modelValue"],
32
- setup(props, { emit }) {
33
- const model = computed({
34
- get: () => props.modelValue,
35
- set: (val) => emit("update:modelValue", val),
36
- })
37
- const { t } = useLocale()
38
- const checked = computed({
39
- get() {
40
- return Array.isArray(model.value) && model.value.length && props.formItem?.options?.every((item) => Array.isArray(model.value) && model.value?.includes(item.value))
41
- },
42
- set(val) {
43
- const options = props.formItem.options || []
44
- model.value = val ? options.map((a) => a.value) : []
45
- if (props?.eventObject?.change) props.eventObject.change(props.formModel, props.formItem)
46
- },
47
- })
48
- const loading = ref(false)
49
- // 有的options是从接口里拿的,掉接口需要时间,初始全选的时候全选的按钮没有勾选上,所以监听options
50
- const list = ref(props.formItem.options)
51
- watch(
52
- () => props.formItem.options,
53
- (val) => {
54
- list.value = val
55
- },
56
- {
57
- deep: true,
58
- },
59
- )
60
- onMounted(() => {})
61
- const { filterMethod, remoteMethod, ...selectProps } = props.props
62
- // 前端筛选
63
- if (filterMethod) {
64
- selectProps.filterMethod = function (val: string) {
65
- const remoteMehotd1 = filterMethod as (val: string, optionItem?: CurdFormOptionItem) => Promise<CurdFormOptionItem[]>
66
- list.value = props.formItem?.options?.filter((a) => remoteMehotd1(val, a))
67
- }
68
- }
69
- // 远程筛选
70
- if (selectProps.remote && remoteMethod) {
71
- selectProps.remoteMethod = function (val: string) {
72
- loading.value = true
73
- const remoteMehotd1 = remoteMethod as (val: string, optionItem?: CurdFormOptionItem) => Promise<CurdFormOptionItem[]>
74
- remoteMehotd1(val)
75
- .then((res) => {
76
- list.value = res
77
- })
78
- .finally(() => {
79
- loading.value = false
80
- })
81
- }
82
- }
83
- return {
84
- model,
85
- checked,
86
- selectProps,
87
- list,
88
- loading,
89
- t,
90
- }
91
- },
92
- })
93
- </script>
@@ -1,29 +0,0 @@
1
- <template>
2
- <el-switch v-model="model" v-bind="props" v-on="eventObject" />
3
- </template>
4
- <script lang="ts">
5
- import { computed, defineComponent } from "vue"
6
- import { FormItemProps } from "../types"
7
- export default defineComponent({
8
- name: "SchemaFormSwitch",
9
- components: {},
10
- props: {
11
- ...FormItemProps,
12
- modelValue: {
13
- type: [String, Number, Boolean],
14
- default: null,
15
- },
16
- },
17
- emits: ["update:modelValue"],
18
- setup(props, { emit }) {
19
- const model = computed({
20
- get: () => props.modelValue,
21
- set: (val) => emit("update:modelValue", val),
22
- })
23
-
24
- return {
25
- model,
26
- }
27
- },
28
- })
29
- </script>
@@ -1,37 +0,0 @@
1
- <template>
2
- <el-time-picker v-model="model" v-bind="props" v-on="eventObject">
3
- <template v-for="(item, key) in props.slots" :key="key" #[key]="slotScope">
4
- <component :is="item" v-model="model" v-bind="slotScope" :form-item="formItem" :form-model="formModel" :props="props" :event-object="eventObject" />
5
- </template>
6
- </el-time-picker>
7
- </template>
8
- <script lang="ts">
9
- import { useLocale } from "easybill-ui"
10
- import { type ModelValueType } from "element-plus"
11
- import { computed, defineComponent, type PropType } from "vue"
12
- import { FormItemProps } from "../types"
13
- export default defineComponent({
14
- name: "SchemaFormTimePicker",
15
- components: {},
16
- props: {
17
- ...FormItemProps,
18
- modelValue: {
19
- type: [Array, String] as PropType<ModelValueType>,
20
- default: "",
21
- }, // 表单项值
22
- },
23
- emits: ["update:modelValue"],
24
- setup(props, { emit }) {
25
- const model = computed({
26
- get: () => props.modelValue,
27
- set: (val) => emit("update:modelValue", val),
28
- })
29
- const { t } = useLocale()
30
-
31
- return {
32
- model,
33
- t,
34
- }
35
- },
36
- })
37
- </script>
@@ -1,45 +0,0 @@
1
- <template>
2
- <div class="schema-tree-select">
3
- <div v-if="formItem.loading" class="loading" style="color: #999; font-size: 12px">
4
- <el-icon class="is-loading"><Loading /></el-icon> {{ t("el.form.loading") }}
5
- </div>
6
- <el-tree-select v-if="!formItem.loading && formItem.options && formItem.options.length" v-model="model" :class="[props?.showType]" style="width: 100%" :data="formItem.options" v-bind="props" v-on="eventObject"> </el-tree-select>
7
- <div v-if="!formItem.loading && !formItem.options?.length" class="empty">
8
- <component :is="empty" v-if="empty" :form-model="formModel" :form-item="formItem" :props="props" />
9
- <template v-else>
10
- <el-icon><Warning /></el-icon> <span>{{ props.noDataText || t("el.form.nodata") }}</span>
11
- </template>
12
- </div>
13
- </div>
14
- </template>
15
- <script lang="ts">
16
- import { Loading, Warning } from "@element-plus/icons-vue"
17
- import { useLocale } from "easybill-ui"
18
- import { computed, defineComponent, toRaw } from "vue"
19
- import { FormItemProps } from "../types"
20
- export default defineComponent({
21
- name: "SchemaFormTreeSelect",
22
- components: { Loading, Warning },
23
- props: {
24
- ...FormItemProps,
25
- modelValue: {
26
- type: [String, Number, Boolean],
27
- default: "",
28
- }, // 表单项值
29
- },
30
- emits: ["update:modelValue"],
31
- setup(props, { emit }) {
32
- const model = computed({
33
- get: () => props.modelValue,
34
- set: (val) => emit("update:modelValue", val),
35
- })
36
- const { t } = useLocale()
37
-
38
- return {
39
- model,
40
- empty: toRaw(props.props.empty) || "",
41
- t,
42
- }
43
- },
44
- })
45
- </script>
@@ -1,25 +0,0 @@
1
- <template>
2
- <div v-bind="props" v-html="model"></div>
3
- </template>
4
- <script lang="ts">
5
- import { computed, defineComponent } from "vue"
6
- import { FormItemProps } from "../types"
7
- export default defineComponent({
8
- name: "SchemaFormValue",
9
- components: {},
10
- props: {
11
- ...FormItemProps,
12
- },
13
- emits: ["update:modelValue"],
14
- setup(props, { emit }) {
15
- const model = computed({
16
- get: () => props.modelValue,
17
- set: (val) => emit("update:modelValue", val),
18
- })
19
-
20
- return {
21
- model,
22
- }
23
- },
24
- })
25
- </script>
@@ -1,60 +0,0 @@
1
- function getInput(el: HTMLElement): HTMLInputElement {
2
- let inputEle: HTMLInputElement
3
- if (el.tagName !== "INPUT") {
4
- inputEle = el.querySelector("input") as HTMLInputElement
5
- } else {
6
- inputEle = el as HTMLInputElement
7
- }
8
- return inputEle
9
- }
10
- function dispatchEvent(el: HTMLElement, type: string) {
11
- const evt = document.createEvent("HTMLEvents")
12
- evt.initEvent(type, true, true)
13
- el.dispatchEvent(evt)
14
- }
15
-
16
- // 过滤前后空格的指令 v-trim
17
- const directives = {
18
- trim: {
19
- mounted(el: El) {
20
- const inputEle = getInput(el)
21
- // console.log(inputEle, "trimInputEle")
22
- const handler = function (event: FocusEvent) {
23
- if (!event.target) return
24
- const target = event.target as HTMLInputElement
25
- const newVal = target.value.trim()
26
- if (target.value !== newVal) {
27
- target.value = newVal
28
- dispatchEvent(inputEle, "input")
29
- }
30
- }
31
- // 回车后过滤空格
32
- const keydown = function (event: KeyboardEvent) {
33
- if (event.key === "Enter") {
34
- const target = event.target as HTMLInputElement
35
- const newVal = target.value.trim()
36
- if (target.value !== newVal) {
37
- target.value = newVal
38
- dispatchEvent(inputEle, "input")
39
- }
40
- }
41
- }
42
- el.inputEle = inputEle
43
- el._blurHandler = handler
44
- el._keyHandler = keydown
45
- if (inputEle) inputEle.addEventListener("blur", handler)
46
- if (inputEle) inputEle.addEventListener("keydown", keydown)
47
- },
48
- unmounted(el: El) {
49
- const { inputEle } = el
50
- if (inputEle) inputEle.removeEventListener("blur", el._blurHandler)
51
- if (inputEle) inputEle.removeEventListener("keydown", el._keyHandler)
52
- },
53
- },
54
- }
55
- interface El extends HTMLElement {
56
- inputEle: HTMLElement
57
- _blurHandler: (event: FocusEvent) => void
58
- _keyHandler: (event: KeyboardEvent) => void
59
- }
60
- export { directives }
@@ -1,6 +0,0 @@
1
- import { inject } from "vue"
2
- import type { FormContext } from "../types"
3
- export function useForm() {
4
- const formContext = inject<FormContext>("curdFormContext", {} as FormContext)
5
- return { formContext }
6
- }
@@ -1,146 +0,0 @@
1
- import { ElForm, type FormItemRule, type FormRules } from "element-plus"
2
- import type { Arrayable } from "element-plus/es/utils"
3
- import { defineComponent, type PropType, type VNode } from "vue"
4
- import type { OptionItem } from "../../ConstantStatus"
5
- export interface FormSchema {
6
- formItem: FormItem[]
7
- rules?: FormRules | ((formModel: Fields, context: FormContext) => FormRules)
8
- getRules?: (formModel: Fields, context: FormContext) => FormRules
9
- labelPosition?: "left" | "right" | "top" | string
10
- gutter?: number
11
- labelWidth?: number | string
12
- inline?: boolean
13
- inlineMessage?: boolean
14
- statusIcon?: boolean
15
- showMessage?: boolean
16
- size?: "default" | "small" | "large" | string
17
- disabled?: boolean
18
- validateOnRuleChange?: boolean
19
- hideRequiredAsterisk?: boolean
20
- scrollToError?: boolean
21
- }
22
- export interface FormItem {
23
- prop: string
24
- label?: string
25
- type?: FormItemTypeEmun | ReturnType<typeof defineComponent>
26
- value?: unknown
27
- eventObject?: EventObject
28
- slots?: Record<string, () => VNode[] | string | null>
29
- options?: Array<CurdFormOptionItem>
30
- asyncOptions?: (modelRef: Fields, formItem: FormItem, context: FormContext, config?: unknown) => Promise<Array<CurdFormOptionItem>>
31
- loading?: boolean
32
- hidden?: boolean | ((model: Fields) => boolean)
33
- rules?: Arrayable<FormItemRule>
34
- props?: FormItemPropObject | ((formModel: Fields, formItem: FormItem) => FormItemPropObject)
35
- formItemProps?: FormItemPropObject | ((formModel: Fields, formItem: FormItem) => FormItemPropObject)
36
- labelWidth?: string | number
37
- labelPosition?: "left" | "right" | "top" | string
38
- span?: number
39
- disabled?: boolean
40
- tooltip?: string | ((formModel: Fields, formItem: FormItem) => Partial<TooltipProps> | string) | Partial<TooltipProps>
41
- autoload?: boolean
42
- prefix?: string | unknown
43
- suffix?: string | unknown
44
- empty?: string | unknown
45
- sortIndex?: number
46
- }
47
- export type FormItemTypeEmun = "input" | "select" | "radio" | "checkbox" | "input-number" | "switch" | "file" | "date-picker" | "time-picker" | "color-picker" | "value" | "tree-select" | "autocomplete" | "choose"
48
- export interface FormItemPropObject extends Fields {
49
- slots?: Record<string, (props?: FormItemPropObject) => VNode | VNode[] | string | null>
50
- all?: boolean | OptionItem
51
- empty?: string | VNode
52
- noDataText?: string
53
- style?: Record<string, string> | string
54
- }
55
- export interface TooltipProps extends Record<string, unknown> {
56
- effect?: "dark" | "light" | string
57
- content?: string
58
- rawContent?: boolean
59
- placement?: string
60
- disabled?: boolean
61
- offset?: number
62
- transition?: string
63
- popperOptions?: unknown
64
- showAfter?: number
65
- showArrow?: boolean
66
- hideAfter?: number
67
- autoClose?: number
68
- popperClass?: string
69
- enterable?: boolean
70
- teleported?: boolean
71
- trigger?: string | string[]
72
- }
73
- export interface FormContext {
74
- loadOptions: (prop: string, config?: unknown) => void | Promise<CurdFormOptionItem[]> | CurdFormOptionItem[]
75
- setOptions: (prop: string, options: CurdFormOptionItem[], config?: unknown) => void | Promise<void>
76
- change: (formModel: Fields, formItem: FormItem) => void
77
- formModel: Fields
78
- formSchema: FormSchema
79
- formRef: InstanceType<typeof ElForm> | undefined
80
- components: Record<string, unknown>
81
- findFormItem?: (prop: string) => FormItemSearchResult | undefined
82
- hasFormItem?: (prop: string) => boolean
83
- registerFormItems?: (provider: FormItemProvider) => () => void
84
- refreshFormItems?: (providerId?: string | symbol) => void
85
- }
86
- export interface Fields {
87
- [key: string]: unknown
88
- }
89
- export interface CurdFormOptionItem extends OptionItem {
90
- component?: string | ReturnType<typeof defineComponent>
91
- disabled?: boolean
92
- type?: string | "radio" | "button"
93
- rawContent?: boolean
94
- /** 引用的表单项 prop 数组,用于 choose 类型 */
95
- props?: string[]
96
- /** 内联表单项定义,用于 choose 类型 */
97
- items?: FormItem[]
98
- }
99
- export interface FormItemProvider {
100
- id: string | symbol
101
- getItems: () => FormItem[] | undefined | null
102
- }
103
- export interface FormItemSearchResult {
104
- item: FormItem
105
- parent?: FormItem
106
- path: string
107
- providerId?: string | symbol
108
- }
109
- // interface EventObjectDefault {
110
- // change?: (formModel: Fields, formItem: FormItem, proxy: any) => void
111
- // }
112
- export type EventObjectHandler = (formModel: Fields, formItem: FormItem, context?: FormContext, ...args: unknown[]) => void | boolean
113
- export interface EventObject {
114
- change?: EventObjectHandler
115
- optionLoaded?: EventObjectHandler
116
- [key: string]: EventObjectHandler | undefined
117
- }
118
- // export interface OptionItem {
119
- // label: string
120
- // value: string | number | boolean
121
- // disabled?: boolean
122
- // tooltip?: string | ((formModel: Fields, formItem: FormItem) => string)
123
- // [key: string]: any
124
- // }
125
- export const FormItemProps = {
126
- formItem: {
127
- type: Object as PropType<FormItem>,
128
- default: () => ({}),
129
- },
130
- formModel: {
131
- type: Object as PropType<Fields>,
132
- default: () => ({}),
133
- },
134
- props: {
135
- type: Object as PropType<FormItemPropObject>,
136
- default: () => ({}),
137
- },
138
- eventObject: {
139
- type: Object as PropType<EventObject>,
140
- default: () => ({}),
141
- },
142
- modelValue: {
143
- type: String,
144
- default: "",
145
- },
146
- }
@@ -1,125 +0,0 @@
1
- const SCOPE = "ElUpload"
2
-
3
- export class UploadAjaxError extends Error {
4
- name = "UploadAjaxError"
5
- status: number
6
- method: string
7
- url: string
8
-
9
- constructor(message: string, status: number, method: string, url: string) {
10
- super(message)
11
- this.status = status
12
- this.method = method
13
- this.url = url
14
- }
15
- }
16
-
17
- function getError(action: string, option: UploadRequestOptions, xhr: XMLHttpRequest) {
18
- let msg: string
19
- if (xhr.response) {
20
- msg = `${xhr.response.error || xhr.response}`
21
- } else if (xhr.responseText) {
22
- msg = `${xhr.responseText}`
23
- } else {
24
- msg = `fail to ${option.method} ${action} ${xhr.status}`
25
- }
26
-
27
- return new UploadAjaxError(msg, xhr.status, option.method, action)
28
- }
29
-
30
- function getBody(xhr: XMLHttpRequest): XMLHttpRequestResponseType {
31
- const text = xhr.responseText || xhr.response
32
- if (!text) {
33
- return text
34
- }
35
-
36
- try {
37
- return JSON.parse(text)
38
- } catch {
39
- return text
40
- }
41
- }
42
-
43
- export const ajaxUpload: UploadRequestHandler = (option) => {
44
- if (typeof XMLHttpRequest === "undefined") throwError(SCOPE, "XMLHttpRequest is undefined")
45
-
46
- const xhr = new XMLHttpRequest()
47
- const action = option.action
48
-
49
- if (xhr.upload) {
50
- xhr.upload.addEventListener("progress", (evt) => {
51
- const progressEvt = evt as UploadProgressEvent
52
- progressEvt.percent = evt.total > 0 ? (evt.loaded / evt.total) * 100 : 0
53
- option.onProgress(progressEvt)
54
- })
55
- }
56
-
57
- const formData = new FormData()
58
- if (option.data) {
59
- for (const [key, value] of Object.entries(option.data)) {
60
- if (Array.isArray(value)) {
61
- formData.append(key, value[0])
62
- } else formData.append(key, value)
63
- }
64
- }
65
- formData.append(option.filename, option.file, option.file.name)
66
-
67
- xhr.addEventListener("error", () => {
68
- option.onError(getError(action, option, xhr))
69
- })
70
-
71
- xhr.addEventListener("load", () => {
72
- if (xhr.status < 200 || xhr.status >= 300) {
73
- return option.onError(getError(action, option, xhr))
74
- }
75
- option.onSuccess(getBody(xhr))
76
- })
77
-
78
- xhr.open(option.method, action, true)
79
-
80
- if (option.withCredentials && "withCredentials" in xhr) {
81
- xhr.withCredentials = true
82
- }
83
-
84
- const headers = option.headers || {}
85
- if (headers instanceof Headers) {
86
- headers.forEach((value, key) => xhr.setRequestHeader(key, value))
87
- } else {
88
- for (const [key, value] of Object.entries(headers)) {
89
- if (isNil(value)) continue
90
- xhr.setRequestHeader(key, String(value))
91
- }
92
- }
93
-
94
- xhr.send(formData)
95
- return xhr
96
- }
97
- class ElementPlusError extends Error {
98
- constructor(m: string) {
99
- super(m)
100
- this.name = "CurdFormError"
101
- }
102
- }
103
- export function throwError(scope: string, m: string): never {
104
- throw new ElementPlusError(`[${scope}] ${m}`)
105
- }
106
- function isNil(value: unknown) {
107
- return value == null
108
- }
109
-
110
- export interface UploadProgressEvent extends ProgressEvent {
111
- percent: number
112
- }
113
- export type UploadRequestHandler = (options: UploadRequestOptions) => XMLHttpRequest | Promise<unknown>
114
- export interface UploadRequestOptions {
115
- action: string
116
- method: string
117
- data: Record<string, string | Blob | [string | Blob, string]>
118
- filename: string
119
- file: File
120
- headers: Headers | Record<string, string | number | null | undefined>
121
- onError: (evt: UploadAjaxError) => void
122
- onProgress: (evt: UploadProgressEvent) => void
123
- onSuccess: (response: XMLHttpRequestResponseType) => void
124
- withCredentials: boolean
125
- }
@@ -1,17 +0,0 @@
1
- export function deepClone<T extends Array<T> | unknown>(sourceData: T): T {
2
- if (Array.isArray(sourceData)) {
3
- return sourceData.map((item) => deepClone(item)) as T
4
- }
5
- if (typeof sourceData !== "object" || sourceData === null) {
6
- return sourceData
7
- }
8
- const obj: T = {} as T
9
- for (const key in sourceData) {
10
- if (typeof sourceData[key] === "object" && sourceData[key] !== null) {
11
- obj[key] = deepClone(sourceData[key])
12
- } else {
13
- obj[key] = sourceData[key]
14
- }
15
- }
16
- return obj
17
- }
@@ -1,2 +0,0 @@
1
- export { default as CurdGroupForm } from "./src/CurdGroupForm.vue"
2
- export * from "./types"
@@ -1,93 +0,0 @@
1
- <template>
2
- <CurdFormGroup v-for="(item, index) in props.schema.items" v-show="!schemaItemHidden(item)" :key="index" :item="item" :title="item.groupName" :icon="item.icon" :label-position="item.labelPosition">
3
- <template v-if="item.headerRight" #headerRight>
4
- <component :is="item.headerRight" :schema="props.schema" :schemaItem="item" :form-model="form" />
5
- </template>
6
- <template v-if="item.headerTitle" #title>
7
- <component :is="item.headerTitle" :schema="props.schema" :schemaItem="item" :form-model="form" />
8
- </template>
9
- <template v-if="item.headerBottom" #headerBottom>
10
- <component :is="item.headerBottom" :schema="props.schema" :schemaItem="item" :form-model="form" />
11
- </template>
12
- <div class="curdform-group-content" data-instance-form-wrap>
13
- <CurdForm
14
- :ref="(el: Element | ComponentPublicInstance | null) => (formRef[(item.step || '') + item.groupName + index] = el as InstanceType<typeof CurdForm>)"
15
- v-model="form"
16
- :form-schema="item.schema"
17
- :extend-context="extendContext"
18
- :validateOnRuleChange="false"
19
- :scroll-to-error="true"
20
- @change="onChange"
21
- />
22
- </div>
23
- </CurdFormGroup>
24
- </template>
25
-
26
- <script lang="ts" setup>
27
- import { CurdForm } from "easybill-ui"
28
- import type { ComponentPublicInstance, PropType } from "vue"
29
- import { watch } from "vue"
30
- import type { CurdGroupFormSchema } from "../types"
31
- import CurdFormGroup from "./components/CurdFormGroup.vue"
32
- import { useFormHook } from "./hooks/useFormHook"
33
- const props = defineProps({
34
- modelValue: {
35
- type: Object as PropType<Record<string, unknown>>,
36
- default: () => ({}),
37
- },
38
- schema: {
39
- type: Object as PropType<CurdGroupFormSchema>,
40
- default: () => ({}),
41
- },
42
- })
43
-
44
- const emits = defineEmits(["update:modelValue", "change", "loadOptions"])
45
- const { form, formRef, schema: formSchema, validate, schemaItemHidden } = useFormHook()
46
- const init = () => {
47
- form.value = props.modelValue || {}
48
- formSchema.value = props.schema
49
- }
50
- init()
51
- watch(
52
- () => props.schema,
53
- () => {
54
- formSchema.value = props.schema
55
- },
56
- )
57
-
58
- watch(
59
- () => props.modelValue,
60
- () => {
61
- if (form.value != props.modelValue) {
62
- form.value = props.modelValue
63
- // emits("update:modelValue", form.value)
64
- }
65
- },
66
- )
67
-
68
- const loadOptions = (prop: string, config?: unknown) => {
69
- if (!props.schema) return
70
- let has = false
71
- for (const index in props.schema.items) {
72
- const group = props.schema.items[index]
73
- const form = formRef.value[(group.step || "") + group.groupName + index]
74
- const hasFormItem = form?.hasFormItem ? form.hasFormItem(prop) : group.schema.formItem.some((item) => item.prop == prop)
75
- if (hasFormItem) {
76
- has = true
77
- form?.loadOptions(prop, config)
78
- }
79
- }
80
- if (!has) {
81
- emits("loadOptions", prop)
82
- }
83
- }
84
- const extendContext = {
85
- loadOptions,
86
- }
87
-
88
- const onChange = (v: unknown, l: unknown) => {
89
- emits("change", v, l)
90
- }
91
-
92
- defineExpose({ loadOptions, validate })
93
- </script>