ff-ui-plus 2.0.7

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 (319) hide show
  1. package/.nvmrc +1 -0
  2. package/.prettierrc.cjs +41 -0
  3. package/.stylelintignore +5 -0
  4. package/LICENSE +21 -0
  5. package/README.md +265 -0
  6. package/commitlint.config.cjs +162 -0
  7. package/global.d.ts +27 -0
  8. package/index.html +16 -0
  9. package/lib.sh +9 -0
  10. package/lint-staged.config.cjs +8 -0
  11. package/package.json +149 -0
  12. package/packages/components/adaptive-page/index.ts +5 -0
  13. package/packages/components/adaptive-page/src/index.vue +85 -0
  14. package/packages/components/adaptive-page/src/type.ts +9 -0
  15. package/packages/components/adaptive-page/style/css.ts +1 -0
  16. package/packages/components/adaptive-page/style/index.ts +1 -0
  17. package/packages/components/button/index.ts +5 -0
  18. package/packages/components/button/src/index.vue +41 -0
  19. package/packages/components/button/src/type.ts +11 -0
  20. package/packages/components/button/style/css.ts +1 -0
  21. package/packages/components/button/style/index.ts +1 -0
  22. package/packages/components/chart/index.ts +5 -0
  23. package/packages/components/chart/src/index.vue +121 -0
  24. package/packages/components/chart/src/type.ts +7 -0
  25. package/packages/components/chart/style/css.ts +1 -0
  26. package/packages/components/chart/style/index.ts +1 -0
  27. package/packages/components/checkbox/index.ts +3 -0
  28. package/packages/components/checkbox/src/checkbox.d.ts +5 -0
  29. package/packages/components/checkbox/src/index.vue +67 -0
  30. package/packages/components/checkbox/style/css.ts +1 -0
  31. package/packages/components/checkbox/style/index.ts +1 -0
  32. package/packages/components/date-picker/index.ts +5 -0
  33. package/packages/components/date-picker/src/index.vue +228 -0
  34. package/packages/components/date-picker/src/type.ts +22 -0
  35. package/packages/components/date-picker/style/css.ts +1 -0
  36. package/packages/components/date-picker/style/index.ts +1 -0
  37. package/packages/components/detail/index.ts +5 -0
  38. package/packages/components/detail/src/index.vue +102 -0
  39. package/packages/components/detail/src/renderLabel.vue +15 -0
  40. package/packages/components/detail/src/renderTooltip.vue +15 -0
  41. package/packages/components/detail/src/type.ts +28 -0
  42. package/packages/components/detail/style/css.ts +1 -0
  43. package/packages/components/detail/style/index.ts +1 -0
  44. package/packages/components/form/index.ts +5 -0
  45. package/packages/components/form/src/index.vue +407 -0
  46. package/packages/components/form/src/renderBtn.vue +15 -0
  47. package/packages/components/form/src/renderComp.vue +15 -0
  48. package/packages/components/form/src/type.ts +26 -0
  49. package/packages/components/form/style/css.ts +1 -0
  50. package/packages/components/form/style/index.ts +1 -0
  51. package/packages/components/index.ts +20 -0
  52. package/packages/components/input/index.ts +5 -0
  53. package/packages/components/input/src/index.vue +225 -0
  54. package/packages/components/input/src/type.ts +14 -0
  55. package/packages/components/input/style/css.ts +1 -0
  56. package/packages/components/input/style/index.ts +1 -0
  57. package/packages/components/layout-page/index.ts +4 -0
  58. package/packages/components/layout-page/src/index.vue +74 -0
  59. package/packages/components/layout-page/style/css.ts +1 -0
  60. package/packages/components/layout-page/style/index.ts +1 -0
  61. package/packages/components/layout-page-item/index.ts +3 -0
  62. package/packages/components/layout-page-item/src/index.vue +16 -0
  63. package/packages/components/layout-page-item/style/css.ts +1 -0
  64. package/packages/components/layout-page-item/style/index.ts +1 -0
  65. package/packages/components/module-form/index.ts +4 -0
  66. package/packages/components/module-form/src/index.vue +243 -0
  67. package/packages/components/module-form/src/moduleDetail.vue +61 -0
  68. package/packages/components/module-form/src/moduleForm.vue +88 -0
  69. package/packages/components/module-form/src/type.ts +16 -0
  70. package/packages/components/module-form/style/css.ts +1 -0
  71. package/packages/components/module-form/style/index.ts +1 -0
  72. package/packages/components/package.json +9 -0
  73. package/packages/components/query-condition/index.ts +4 -0
  74. package/packages/components/query-condition/src/index.vue +478 -0
  75. package/packages/components/query-condition/src/moreChoose.vue +159 -0
  76. package/packages/components/query-condition/src/renderComp.vue +15 -0
  77. package/packages/components/query-condition/src/type.ts +22 -0
  78. package/packages/components/query-condition/src/useComputed.ts +94 -0
  79. package/packages/components/query-condition/style/css.ts +1 -0
  80. package/packages/components/query-condition/style/index.ts +1 -0
  81. package/packages/components/radio/index.ts +3 -0
  82. package/packages/components/radio/src/index.vue +73 -0
  83. package/packages/components/radio/src/radio.d.ts +12 -0
  84. package/packages/components/radio/style/css.ts +1 -0
  85. package/packages/components/radio/style/index.ts +1 -0
  86. package/packages/components/select/index.ts +4 -0
  87. package/packages/components/select/src/index.vue +240 -0
  88. package/packages/components/select/src/type.ts +43 -0
  89. package/packages/components/select/style/css.ts +1 -0
  90. package/packages/components/select/style/index.ts +1 -0
  91. package/packages/components/select-icon/index.ts +4 -0
  92. package/packages/components/select-icon/src/index.vue +128 -0
  93. package/packages/components/select-icon/style/css.ts +1 -0
  94. package/packages/components/select-icon/style/index.ts +1 -0
  95. package/packages/components/select-table/index.ts +4 -0
  96. package/packages/components/select-table/src/ClickOutside.ts +106 -0
  97. package/packages/components/select-table/src/index.vue +851 -0
  98. package/packages/components/select-table/src/renderCol.vue +20 -0
  99. package/packages/components/select-table/src/type.ts +56 -0
  100. package/packages/components/select-table/src/useVirtualized.ts +86 -0
  101. package/packages/components/select-table/style/css.ts +1 -0
  102. package/packages/components/select-table/style/index.ts +1 -0
  103. package/packages/components/step-wizard/index.ts +4 -0
  104. package/packages/components/step-wizard/src/index.vue +99 -0
  105. package/packages/components/step-wizard/src/type.ts +17 -0
  106. package/packages/components/step-wizard/style/css.ts +1 -0
  107. package/packages/components/step-wizard/style/index.ts +1 -0
  108. package/packages/components/table/index.ts +5 -0
  109. package/packages/components/table/src/ColumnSet.vue +176 -0
  110. package/packages/components/table/src/TTableColumn.vue +100 -0
  111. package/packages/components/table/src/densitySet.vue +91 -0
  112. package/packages/components/table/src/firstColumn.vue +132 -0
  113. package/packages/components/table/src/index.vue +926 -0
  114. package/packages/components/table/src/operator.vue +246 -0
  115. package/packages/components/table/src/renderCol.vue +20 -0
  116. package/packages/components/table/src/renderHeader.vue +18 -0
  117. package/packages/components/table/src/singleEdit.vue +354 -0
  118. package/packages/components/table/src/singleEditCell.vue +303 -0
  119. package/packages/components/table/src/tableProps.ts +162 -0
  120. package/packages/components/table/src/useExpose.ts +74 -0
  121. package/packages/components/table/src/useVirtualized.ts +70 -0
  122. package/packages/components/table/style/css.ts +1 -0
  123. package/packages/components/table/style/index.ts +1 -0
  124. package/packages/components/tabs/index.ts +4 -0
  125. package/packages/components/tabs/src/index.vue +50 -0
  126. package/packages/components/tabs/style/css.ts +1 -0
  127. package/packages/components/tabs/style/index.ts +1 -0
  128. package/packages/components/timer-btn/index.ts +4 -0
  129. package/packages/components/timer-btn/src/index.vue +57 -0
  130. package/packages/components/timer-btn/style/css.ts +1 -0
  131. package/packages/components/timer-btn/style/index.ts +1 -0
  132. package/packages/components/utils/index.ts +142 -0
  133. package/packages/components/utils/install.ts +16 -0
  134. package/packages/eslint-config/build.config.ts +16 -0
  135. package/packages/eslint-config/dist/index.cjs +122 -0
  136. package/packages/eslint-config/dist/index.d.cts +92 -0
  137. package/packages/eslint-config/dist/index.d.mts +92 -0
  138. package/packages/eslint-config/dist/index.d.ts +92 -0
  139. package/packages/eslint-config/dist/index.mjs +120 -0
  140. package/packages/eslint-config/package.json +34 -0
  141. package/packages/eslint-config/src/index.ts +121 -0
  142. package/packages/ff-ui-plus/component.ts +55 -0
  143. package/packages/ff-ui-plus/defaults.ts +4 -0
  144. package/packages/ff-ui-plus/index.ts +9 -0
  145. package/packages/ff-ui-plus/make-installer.ts +10 -0
  146. package/packages/ff-ui-plus/package.json +117 -0
  147. package/packages/ff-ui-plus/version.ts +1 -0
  148. package/packages/hooks/index.ts +1 -0
  149. package/packages/hooks/package.json +9 -0
  150. package/packages/hooks/useLocale.ts +53 -0
  151. package/packages/locale/index.ts +11 -0
  152. package/packages/locale/lang/en.ts +157 -0
  153. package/packages/locale/lang/zh-cn.ts +155 -0
  154. package/packages/locale/package.json +12 -0
  155. package/packages/resolver/package.json +23 -0
  156. package/packages/resolver/src/index.ts +99 -0
  157. package/packages/theme-chalk/build.ts +76 -0
  158. package/packages/theme-chalk/dist/index.css +1 -0
  159. package/packages/theme-chalk/dist/src/adaptive-page.scss +48 -0
  160. package/packages/theme-chalk/dist/src/button.scss +23 -0
  161. package/packages/theme-chalk/dist/src/chart.scss +10 -0
  162. package/packages/theme-chalk/dist/src/checkbox.scss +0 -0
  163. package/packages/theme-chalk/dist/src/date-picker.scss +3 -0
  164. package/packages/theme-chalk/dist/src/detail.scss +7 -0
  165. package/packages/theme-chalk/dist/src/form.scss +104 -0
  166. package/packages/theme-chalk/dist/src/index.scss +19 -0
  167. package/packages/theme-chalk/dist/src/input.scss +0 -0
  168. package/packages/theme-chalk/dist/src/layout-page-item.scss +10 -0
  169. package/packages/theme-chalk/dist/src/layout-page.scss +37 -0
  170. package/packages/theme-chalk/dist/src/module-form.scss +335 -0
  171. package/packages/theme-chalk/dist/src/query-condition.scss +132 -0
  172. package/packages/theme-chalk/dist/src/radio.scss +0 -0
  173. package/packages/theme-chalk/dist/src/select-icon.scss +61 -0
  174. package/packages/theme-chalk/dist/src/select-table.scss +71 -0
  175. package/packages/theme-chalk/dist/src/select.scss +7 -0
  176. package/packages/theme-chalk/dist/src/step-wizard.scss +51 -0
  177. package/packages/theme-chalk/dist/src/table.scss +381 -0
  178. package/packages/theme-chalk/dist/src/tabs.scss +20 -0
  179. package/packages/theme-chalk/dist/src/timer-btn.scss +21 -0
  180. package/packages/theme-chalk/dist/t-adaptive-page.css +1 -0
  181. package/packages/theme-chalk/dist/t-button.css +1 -0
  182. package/packages/theme-chalk/dist/t-chart.css +1 -0
  183. package/packages/theme-chalk/dist/t-checkbox.css +0 -0
  184. package/packages/theme-chalk/dist/t-date-picker.css +1 -0
  185. package/packages/theme-chalk/dist/t-detail.css +1 -0
  186. package/packages/theme-chalk/dist/t-form.css +1 -0
  187. package/packages/theme-chalk/dist/t-input.css +0 -0
  188. package/packages/theme-chalk/dist/t-layout-page-item.css +1 -0
  189. package/packages/theme-chalk/dist/t-layout-page.css +1 -0
  190. package/packages/theme-chalk/dist/t-module-form.css +1 -0
  191. package/packages/theme-chalk/dist/t-query-condition.css +1 -0
  192. package/packages/theme-chalk/dist/t-radio.css +0 -0
  193. package/packages/theme-chalk/dist/t-select-icon.css +1 -0
  194. package/packages/theme-chalk/dist/t-select-table.css +1 -0
  195. package/packages/theme-chalk/dist/t-select.css +1 -0
  196. package/packages/theme-chalk/dist/t-step-wizard.css +1 -0
  197. package/packages/theme-chalk/dist/t-table.css +1 -0
  198. package/packages/theme-chalk/dist/t-tabs.css +1 -0
  199. package/packages/theme-chalk/dist/t-timer-btn.css +1 -0
  200. package/packages/theme-chalk/mixins/config.scss +8 -0
  201. package/packages/theme-chalk/mixins/function.scss +71 -0
  202. package/packages/theme-chalk/mixins/mixins.scss +79 -0
  203. package/packages/theme-chalk/package.json +21 -0
  204. package/packages/theme-chalk/src/adaptive-page.scss +48 -0
  205. package/packages/theme-chalk/src/button.scss +23 -0
  206. package/packages/theme-chalk/src/chart.scss +10 -0
  207. package/packages/theme-chalk/src/checkbox.scss +0 -0
  208. package/packages/theme-chalk/src/date-picker.scss +3 -0
  209. package/packages/theme-chalk/src/detail.scss +7 -0
  210. package/packages/theme-chalk/src/form.scss +104 -0
  211. package/packages/theme-chalk/src/index.scss +19 -0
  212. package/packages/theme-chalk/src/input.scss +0 -0
  213. package/packages/theme-chalk/src/layout-page-item.scss +10 -0
  214. package/packages/theme-chalk/src/layout-page.scss +37 -0
  215. package/packages/theme-chalk/src/module-form.scss +335 -0
  216. package/packages/theme-chalk/src/query-condition.scss +132 -0
  217. package/packages/theme-chalk/src/radio.scss +0 -0
  218. package/packages/theme-chalk/src/select-icon.scss +61 -0
  219. package/packages/theme-chalk/src/select-table.scss +71 -0
  220. package/packages/theme-chalk/src/select.scss +7 -0
  221. package/packages/theme-chalk/src/step-wizard.scss +51 -0
  222. package/packages/theme-chalk/src/table.scss +381 -0
  223. package/packages/theme-chalk/src/tabs.scss +20 -0
  224. package/packages/theme-chalk/src/timer-btn.scss +21 -0
  225. package/packages/types/global.ts +34 -0
  226. package/packages/types/index.ts +1 -0
  227. package/packages/types/package.json +10 -0
  228. package/packages/utils/build.config.ts +23 -0
  229. package/packages/utils/dist/cookie.cjs +1 -0
  230. package/packages/utils/dist/cookie.d.cts +16 -0
  231. package/packages/utils/dist/cookie.d.mts +16 -0
  232. package/packages/utils/dist/cookie.d.ts +16 -0
  233. package/packages/utils/dist/cookie.mjs +1 -0
  234. package/packages/utils/dist/day.cjs +1 -0
  235. package/packages/utils/dist/day.d.cts +37 -0
  236. package/packages/utils/dist/day.d.mts +37 -0
  237. package/packages/utils/dist/day.d.ts +37 -0
  238. package/packages/utils/dist/day.mjs +1 -0
  239. package/packages/utils/dist/file.cjs +1 -0
  240. package/packages/utils/dist/file.d.cts +61 -0
  241. package/packages/utils/dist/file.d.mts +61 -0
  242. package/packages/utils/dist/file.d.ts +61 -0
  243. package/packages/utils/dist/file.mjs +1 -0
  244. package/packages/utils/dist/index.cjs +1 -0
  245. package/packages/utils/dist/index.d.cts +13 -0
  246. package/packages/utils/dist/index.d.mts +13 -0
  247. package/packages/utils/dist/index.d.ts +13 -0
  248. package/packages/utils/dist/index.mjs +1 -0
  249. package/packages/utils/dist/is.cjs +1 -0
  250. package/packages/utils/dist/is.d.cts +117 -0
  251. package/packages/utils/dist/is.d.mts +117 -0
  252. package/packages/utils/dist/is.d.ts +117 -0
  253. package/packages/utils/dist/is.mjs +1 -0
  254. package/packages/utils/dist/letter.cjs +1 -0
  255. package/packages/utils/dist/letter.d.cts +12 -0
  256. package/packages/utils/dist/letter.d.mts +12 -0
  257. package/packages/utils/dist/letter.d.ts +12 -0
  258. package/packages/utils/dist/letter.mjs +1 -0
  259. package/packages/utils/dist/number.cjs +1 -0
  260. package/packages/utils/dist/number.d.cts +23 -0
  261. package/packages/utils/dist/number.d.mts +23 -0
  262. package/packages/utils/dist/number.d.ts +23 -0
  263. package/packages/utils/dist/number.mjs +1 -0
  264. package/packages/utils/dist/openExe.cjs +1 -0
  265. package/packages/utils/dist/openExe.d.cts +9 -0
  266. package/packages/utils/dist/openExe.d.mts +9 -0
  267. package/packages/utils/dist/openExe.d.ts +9 -0
  268. package/packages/utils/dist/openExe.mjs +1 -0
  269. package/packages/utils/dist/storage.cjs +1 -0
  270. package/packages/utils/dist/storage.d.cts +46 -0
  271. package/packages/utils/dist/storage.d.mts +46 -0
  272. package/packages/utils/dist/storage.d.ts +46 -0
  273. package/packages/utils/dist/storage.mjs +1 -0
  274. package/packages/utils/dist/validate.cjs +1 -0
  275. package/packages/utils/dist/validate.d.cts +32 -0
  276. package/packages/utils/dist/validate.d.mts +32 -0
  277. package/packages/utils/dist/validate.d.ts +32 -0
  278. package/packages/utils/dist/validate.mjs +1 -0
  279. package/packages/utils/dist/ws.cjs +1 -0
  280. package/packages/utils/dist/ws.d.cts +86 -0
  281. package/packages/utils/dist/ws.d.mts +86 -0
  282. package/packages/utils/dist/ws.d.ts +86 -0
  283. package/packages/utils/dist/ws.mjs +1 -0
  284. package/packages/utils/package.json +42 -0
  285. package/packages/utils/src/cookie.ts +24 -0
  286. package/packages/utils/src/day.ts +66 -0
  287. package/packages/utils/src/file.ts +173 -0
  288. package/packages/utils/src/index.ts +10 -0
  289. package/packages/utils/src/is.ts +159 -0
  290. package/packages/utils/src/letter.ts +15 -0
  291. package/packages/utils/src/number.ts +37 -0
  292. package/packages/utils/src/openExe.ts +45 -0
  293. package/packages/utils/src/storage.ts +77 -0
  294. package/packages/utils/src/validate.ts +55 -0
  295. package/packages/utils/src/ws.ts +191 -0
  296. package/pnpm-workspace.yaml +3 -0
  297. package/publish.sh +37 -0
  298. package/resolver.sh +9 -0
  299. package/scripts/build/all.ts +152 -0
  300. package/scripts/build/build.config.ts +10 -0
  301. package/scripts/build/dist/index.cjs +7 -0
  302. package/scripts/build/dist/index.d.ts +2 -0
  303. package/scripts/build/dist/index.mjs +12 -0
  304. package/scripts/build/index.ts +63 -0
  305. package/scripts/build/modules.ts +141 -0
  306. package/scripts/build/package.json +14 -0
  307. package/scripts/release/gen-version.ts +12 -0
  308. package/scripts/release/index.ts +209 -0
  309. package/scripts/utils/excludeFiles.ts +14 -0
  310. package/scripts/utils/index.ts +88 -0
  311. package/scripts/utils/main.ts +14 -0
  312. package/scripts/utils/paths.ts +40 -0
  313. package/scripts/utils/plugin.ts +61 -0
  314. package/tsconfig.base.json +23 -0
  315. package/tsconfig.vitest.json +11 -0
  316. package/tsconfig.web.json +18 -0
  317. package/typings/env.d.ts +22 -0
  318. package/typings/index.d.ts +161 -0
  319. package/vitest.config.ts +22 -0
@@ -0,0 +1,228 @@
1
+ <template>
2
+ <div class="t-date-picker" ref="DatePicker">
3
+ <el-date-picker
4
+ :type="type"
5
+ v-model="time"
6
+ :shortcuts="state.dateOptions"
7
+ @change="dateChange"
8
+ v-bind="attrsBind"
9
+ >
10
+ <template v-for="(_index, name) in slots" v-slot:[name]="data">
11
+ <slot :name="name" v-bind="data"></slot>
12
+ </template>
13
+ </el-date-picker>
14
+ </div>
15
+ </template>
16
+
17
+ <script setup lang="ts">
18
+ import { computed, useAttrs, useSlots, watch, reactive, ref } from "vue"
19
+ import type { TDatePickerSelfProps as TDatePickerProps } from "./type"
20
+ import { useLocale } from "@ff-ui-plus/hooks"
21
+ defineOptions({
22
+ name: "TDatePicker"
23
+ })
24
+
25
+ const props = withDefaults(defineProps<TDatePickerProps>(), {
26
+ plusTime: false,
27
+ type: "date",
28
+ isPickerOptions: false
29
+ })
30
+
31
+ const emits = defineEmits<{
32
+ (e: "update:modelValue", val: any): void
33
+ (e: "change", val: any): void
34
+ }>()
35
+ const { t } = useLocale()
36
+ const attrs = useAttrs() as Record<string, any>
37
+ const slots = useSlots()
38
+
39
+ // vue3 v-model简写
40
+ let time = computed({
41
+ get() {
42
+ return props.modelValue
43
+ },
44
+ set(val) {
45
+ emits("update:modelValue", val)
46
+ }
47
+ })
48
+
49
+ const DatePicker = ref()
50
+
51
+ const attrsBind = computed(() => {
52
+ const baseAttrs = {
53
+ date: { "value-format": "YYYY-MM-DD", placeholder: t("plus.datepicker.date") },
54
+ dates: { "value-format": "YYYY-MM-DD", placeholder: t("plus.datepicker.dates") },
55
+ week: { format: "YYYY 第 ww 周", placeholder: t("plus.datepicker.week") },
56
+ month: {
57
+ "value-format": "YYYY-MM",
58
+ format: "YYYY-MM",
59
+ placeholder: t("plus.datepicker.month")
60
+ },
61
+ months: {
62
+ "value-format": "YYYY-MM",
63
+ format: "YYYY-MM",
64
+ placeholder: t("plus.datepicker.months")
65
+ },
66
+ year: { "value-format": "YYYY", format: "YYYY", placeholder: t("plus.datepicker.year") },
67
+ years: { "value-format": "YYYY", format: "YYYY", placeholder: t("plus.datepicker.years") },
68
+ daterange: {
69
+ "value-format": "YYYY-MM-DD",
70
+ "range-separator": "~",
71
+ "start-placeholder": t("plus.datepicker.startDatePlaceholder"),
72
+ "end-placeholder": t("plus.datepicker.endDatePlaceholder")
73
+ },
74
+ monthrange: {
75
+ "value-format": "YYYY-MM",
76
+ "range-separator": "~",
77
+ "start-placeholder": t("plus.datepicker.startMonthPlaceholder"),
78
+ "end-placeholder": t("plus.datepicker.endMonthPlaceholder")
79
+ },
80
+ datetime: {
81
+ format: "YYYY-MM-DD HH:mm:ss",
82
+ "value-format": "YYYY-MM-DD HH:mm:ss",
83
+ placeholder: t("plus.datepicker.datetime")
84
+ },
85
+ datetimerange: {
86
+ format: "YYYY-MM-DD HH:mm:ss",
87
+ "value-format": "YYYY-MM-DD HH:mm:ss",
88
+ "range-separator": "~",
89
+ "start-placeholder": t("plus.datepicker.startTimePlaceholder"),
90
+ "end-placeholder": t("plus.datepicker.endTimePlaceholder")
91
+ }
92
+ }
93
+ const typeAttrs = baseAttrs[props.type] || {}
94
+ return {
95
+ ...typeAttrs,
96
+ ...attrs
97
+ }
98
+ })
99
+
100
+ const state = reactive({
101
+ dateOptions: props.shortcuts
102
+ })
103
+
104
+ // 获取快捷配置
105
+ const getShortcuts = (type: string) => {
106
+ const shortcuts = {
107
+ date: [
108
+ { text: t("plus.datepicker.shortcutsDate.today"), value: new Date() },
109
+ {
110
+ text: t("plus.datepicker.shortcutsDate.yesterday"),
111
+ value: () => subtractDays(new Date(), 1)
112
+ },
113
+ {
114
+ text: t("plus.datepicker.shortcutsDate.lastWeek"),
115
+ value: () => subtractDays(new Date(), 7)
116
+ }
117
+ ],
118
+ daterange: [
119
+ {
120
+ text: t("plus.datepicker.shortcutsDaterange.pastWeek"),
121
+ value: () => [subtractDays(new Date(), 7), new Date()]
122
+ },
123
+ {
124
+ text: t("plus.datepicker.shortcutsDaterange.pastMonth"),
125
+ value: () => [subtractDays(new Date(), 30), new Date()]
126
+ },
127
+ {
128
+ text: t("plus.datepicker.shortcutsDaterange.pastThreeMonths"),
129
+ value: () => [subtractDays(new Date(), 90), new Date()]
130
+ }
131
+ ],
132
+ monthrange: [
133
+ { text: t("plus.datepicker.shortcutsMonthrange.thisMonth"), value: [new Date(), new Date()] },
134
+ {
135
+ text: t("plus.datepicker.shortcutsMonthrange.thisYear"),
136
+ value: () => [new Date(new Date().getFullYear(), 0), new Date()]
137
+ },
138
+ {
139
+ text: t("plus.datepicker.shortcutsMonthrange.pastSixMonths"),
140
+ value: () => [subtractMonths(new Date(), 6), new Date()]
141
+ }
142
+ ],
143
+ datetime: [
144
+ { text: t("plus.datepicker.shortcutsDatetime.today"), value: new Date() },
145
+ {
146
+ text: t("plus.datepicker.shortcutsDatetime.yesterday"),
147
+ value: () => subtractDays(new Date(), 1)
148
+ },
149
+ {
150
+ text: t("plus.datepicker.shortcutsDatetime.lastWeek"),
151
+ value: () => subtractDays(new Date(), 7)
152
+ }
153
+ ],
154
+ datetimerange: [
155
+ {
156
+ text: t("plus.datepicker.shortcutsDatetimerange.pastWeek"),
157
+ value: () => [subtractDays(new Date(), 7), new Date()]
158
+ },
159
+ {
160
+ text: t("plus.datepicker.shortcutsDatetimerange.pastMonth"),
161
+ value: () => [subtractDays(new Date(), 30), new Date()]
162
+ },
163
+ {
164
+ text: t("plus.datepicker.shortcutsDatetimerange.pastThreeMonths"),
165
+ value: () => [subtractDays(new Date(), 90), new Date()]
166
+ }
167
+ ]
168
+ }
169
+
170
+ return shortcuts[type] || []
171
+ }
172
+
173
+ const subtractDays = (date: Date, days: number) => {
174
+ const newDate = new Date(date)
175
+ newDate.setDate(newDate.getDate() - days)
176
+ return newDate
177
+ }
178
+
179
+ const subtractMonths = (date: Date, months: number) => {
180
+ const newDate = new Date(date)
181
+ newDate.setMonth(newDate.getMonth() - months)
182
+ return newDate
183
+ }
184
+
185
+ const dateChange = (val: any[]) => {
186
+ if (props.type === "daterange" && val) {
187
+ let [startTime, endTime] = val
188
+ if (props.plusTime) {
189
+ startTime += " 00:00:00"
190
+ endTime += " 23:59:59"
191
+ }
192
+ time.value = [startTime, endTime]
193
+ emits("change", [startTime, endTime])
194
+ DatePicker.value.getElementsByClassName("el-range-input")[0]?.blur()
195
+ DatePicker.value.getElementsByClassName("el-range-input")[1]?.blur()
196
+ } else {
197
+ emits("change", val)
198
+ if (props.type.includes("range")) {
199
+ DatePicker.value.getElementsByClassName("el-range-input")[0]?.blur()
200
+ DatePicker.value.getElementsByClassName("el-range-input")[1]?.blur()
201
+ } else {
202
+ DatePicker.value.getElementsByClassName("el-input__inner")[0]?.blur()
203
+ }
204
+ }
205
+ }
206
+
207
+ if (props.isPickerOptions) {
208
+ state.dateOptions = getShortcuts(props.type)
209
+ }
210
+
211
+ watch(
212
+ () => props.shortcuts,
213
+ val => {
214
+ if (props.isPickerOptions) {
215
+ state.dateOptions = getShortcuts(props.type)
216
+ } else {
217
+ state.dateOptions = val
218
+ }
219
+ },
220
+ { deep: true }
221
+ )
222
+ // 监听时间变化
223
+ const clear = () => {
224
+ emits("update:modelValue", null)
225
+ }
226
+ // 暴露方法出去
227
+ defineExpose({ state, clear })
228
+ </script>
@@ -0,0 +1,22 @@
1
+ import type { DatePickerProps } from "element-plus"
2
+ import type { Mutable } from "element-plus/es/utils"
3
+ export interface TDatePickerSelfProps {
4
+ modelValue: string | Date | Array<string | Date> | undefined
5
+ plusTime?: boolean
6
+ type?:
7
+ | "date"
8
+ | "week"
9
+ | "month"
10
+ | "year"
11
+ | "dates"
12
+ | "months"
13
+ | "years"
14
+ | "daterange"
15
+ | "monthrange"
16
+ | "datetime"
17
+ | "datetimerange"
18
+ shortcuts?: any[]
19
+ isPickerOptions?: boolean
20
+ }
21
+
22
+ export type TDatePickerProps = TDatePickerSelfProps & Partial<Mutable<DatePickerProps>>
@@ -0,0 +1 @@
1
+ import "@ff-ui-plus/theme-chalk/t-date-picker.css"
@@ -0,0 +1 @@
1
+ import "@ff-ui-plus/theme-chalk/src/date-picker.scss"
@@ -0,0 +1,5 @@
1
+ import Detail from "./src/index.vue"
2
+
3
+ export * from "./src/type"
4
+
5
+ export const TDetail = Detail
@@ -0,0 +1,102 @@
1
+ <template>
2
+ <el-descriptions class="t_detail" v-bind="$attrs" :column="descColumn">
3
+ <el-descriptions-item
4
+ v-for="(item, key) in descData"
5
+ :key="key"
6
+ :span="item.span || 1"
7
+ v-bind="{ ...item.bind, ...$attrs }"
8
+ >
9
+ <template #label>
10
+ <render-label v-if="item.labelRender" :render="item.labelRender" :item="item" />
11
+ <span v-else :style="{ fontWeight: isLabelBold ? 'bold' : '' }"
12
+ >{{ item.label }}<span v-if="isColon">:</span></span
13
+ >
14
+ </template>
15
+ <template v-if="item.slotName">
16
+ <slot :name="item.slotName"></slot>
17
+ </template>
18
+ <span class="tip_class" v-else>
19
+ <el-tooltip v-bind="$attrs" v-if="item.tooltip" :placement="item.placement || 'bottom'">
20
+ <span>
21
+ <span v-if="item.filters && item.filters.list">
22
+ {{
23
+ constantEscape(
24
+ item.fieldName ? dataList[item.fieldName] : undefined,
25
+ listTypeInfo[item.filters.list],
26
+ item.filters.key || "value",
27
+ item.filters.label || "label"
28
+ )
29
+ }}
30
+ </span>
31
+ <span v-else
32
+ >{{ item.value }}<span v-if="item.unit && item.value">{{ item.unit }}</span></span
33
+ >
34
+ <el-icon
35
+ :size="item.iconSize"
36
+ :color="item.iconColor"
37
+ style="cursor: pointer; margin-left: 2px; top: 1px"
38
+ >
39
+ <Warning />
40
+ </el-icon>
41
+ </span>
42
+ <template #content v-if="item.tooltip">
43
+ <span v-if="typeof item.tooltip === 'string'">{{ item.tooltip }}</span>
44
+ <template v-else-if="typeof item.tooltip === 'function'">
45
+ <render-tooltip :render="item.tooltip" :item="item" />
46
+ </template>
47
+ </template>
48
+ </el-tooltip>
49
+ <span v-else>
50
+ <span v-if="item.filters && item.filters.list">
51
+ {{
52
+ constantEscape(
53
+ item.fieldName ? dataList[item.fieldName] : undefined,
54
+ listTypeInfo[item.filters.list],
55
+ item.filters.key || "value",
56
+ item.filters.label || "label"
57
+ )
58
+ }}
59
+ </span>
60
+ <span v-else
61
+ >{{ item.value }}<span v-if="item.unit && item.value">{{ item.unit }}</span></span
62
+ >
63
+ </span>
64
+ </span>
65
+ </el-descriptions-item>
66
+ </el-descriptions>
67
+ </template>
68
+
69
+ <script setup lang="ts">
70
+ import RenderTooltip from "./renderTooltip.vue"
71
+ import RenderLabel from "./renderLabel.vue"
72
+ import { Warning } from "@element-plus/icons-vue"
73
+ import type { TDetailProps } from "./type"
74
+ defineOptions({
75
+ name: "TDetail"
76
+ })
77
+
78
+ withDefaults(defineProps<TDetailProps>(), {
79
+ descColumn: 4,
80
+ dataList: () => ({}),
81
+ listTypeInfo: () => ({}),
82
+ descData: () => [],
83
+ isColon: true,
84
+ isLabelBold: true
85
+ })
86
+ /**
87
+ * 下拉数据回显中文过滤器
88
+ * @param [String,Number] value 需要转中文的key值
89
+ * @param {String} list 数据源
90
+ * @param [String,Number] key 数据源的key字段(默认:value)
91
+ * @param {String} label 数据源的label字段(默认:label)
92
+ */
93
+ const constantEscape = (
94
+ value: any,
95
+ list: any[],
96
+ key: string = "value",
97
+ label: string = "label"
98
+ ): string | undefined => {
99
+ const res = list.find(item => item[key] === value)
100
+ return res?.[label]
101
+ }
102
+ </script>
@@ -0,0 +1,15 @@
1
+ <template>
2
+ <component :is="renderComponent" />
3
+ </template>
4
+ <script lang="ts" setup>
5
+ defineOptions({
6
+ name: "RenderLabel"
7
+ })
8
+ const props: any = defineProps({
9
+ render: Function,
10
+ item: Object
11
+ })
12
+ const renderComponent = () => {
13
+ return props.render(props?.item)
14
+ }
15
+ </script>
@@ -0,0 +1,15 @@
1
+ <template>
2
+ <component :is="renderComponent" />
3
+ </template>
4
+ <script lang="ts" setup>
5
+ defineOptions({
6
+ name: "RenderTooltip"
7
+ })
8
+ const props: any = defineProps({
9
+ render: Function,
10
+ item: Object
11
+ })
12
+ const renderComponent = () => {
13
+ return props.render(props?.item)
14
+ }
15
+ </script>
@@ -0,0 +1,28 @@
1
+ export interface DescItem {
2
+ span?: number
3
+ bind?: Record<string, any>
4
+ label?: string
5
+ labelRender?: (item: any) => any
6
+ slotName?: string
7
+ tooltip?: string | ((item: any) => any)
8
+ placement?: string
9
+ filters?: {
10
+ list: string
11
+ key?: string
12
+ label?: string
13
+ }
14
+ value?: string | number
15
+ unit?: string
16
+ iconSize?: number
17
+ iconColor?: string
18
+ fieldName?: string
19
+ }
20
+
21
+ export interface TDetailProps {
22
+ descColumn?: number
23
+ dataList?: Record<string, any>
24
+ listTypeInfo?: Record<string, any>
25
+ descData: DescItem[]
26
+ isColon?: boolean
27
+ isLabelBold?: boolean
28
+ }
@@ -0,0 +1 @@
1
+ import "@ff-ui-plus/theme-chalk/t-detail.css"
@@ -0,0 +1 @@
1
+ import "@ff-ui-plus/theme-chalk/src/detail.scss"
@@ -0,0 +1,5 @@
1
+ import Form from "./src/index.vue"
2
+
3
+ export * from "./src/type"
4
+
5
+ export const TForm = Form