jobsys-explore 4.6.21 → 4.7.0

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 (180) hide show
  1. package/.eslintignore +3 -3
  2. package/CHANGELOG.md +542 -542
  3. package/README.md +41 -41
  4. package/TODOs.md +8 -8
  5. package/business-components/survey/ExSurvey.jsx +193 -193
  6. package/business-components/survey/index.js +5 -5
  7. package/business-components/survey/index.less +36 -36
  8. package/components/button/ExButton.jsx +120 -120
  9. package/components/button/index.js +4 -4
  10. package/components/button/index.less +7 -7
  11. package/components/decorator/ExDecorator.jsx +31 -31
  12. package/components/decorator/index.js +5 -5
  13. package/components/decorator/index.less +76 -76
  14. package/components/form/ExAddress.jsx +195 -195
  15. package/components/form/ExCascader.jsx +171 -171
  16. package/components/form/ExCheckbox.jsx +59 -59
  17. package/components/form/ExDate.jsx +143 -143
  18. package/components/form/ExDatetime.jsx +166 -166
  19. package/components/form/ExField.jsx +138 -138
  20. package/components/form/ExFieldUploader.jsx +50 -50
  21. package/components/form/ExForm.jsx +544 -544
  22. package/components/form/ExMatrixCheckbox.jsx +99 -99
  23. package/components/form/ExMatrixRadio.jsx +86 -86
  24. package/components/form/ExMatrixScale.jsx +97 -97
  25. package/components/form/ExNumber.jsx +51 -51
  26. package/components/form/ExRadio.jsx +58 -58
  27. package/components/form/ExRate.jsx +51 -51
  28. package/components/form/ExSelect.jsx +251 -251
  29. package/components/form/ExSlider.jsx +55 -55
  30. package/components/form/ExSwitch.jsx +51 -51
  31. package/components/form/ExTime.jsx +99 -99
  32. package/components/form/FormItem.jsx +307 -307
  33. package/components/form/PickerWrapper.jsx +120 -120
  34. package/components/form/index.js +46 -46
  35. package/components/form/index.less +178 -178
  36. package/components/form/utils.js +62 -62
  37. package/components/grid/ExGrid.jsx +53 -53
  38. package/components/grid/index.js +4 -4
  39. package/components/grid/index.less +2 -2
  40. package/components/index.js +12 -12
  41. package/components/pagination/ExPagination.jsx +457 -440
  42. package/components/pagination/index.js +5 -5
  43. package/components/pagination/index.less +3 -3
  44. package/components/provider/ExProvider.jsx +173 -173
  45. package/components/qrcode/ExQrcode.jsx +86 -86
  46. package/components/qrcode/index.js +5 -5
  47. package/components/qrcode/index.less +8 -8
  48. package/components/result/ExResult.jsx +122 -122
  49. package/components/result/index.js +5 -5
  50. package/components/result/index.less +59 -59
  51. package/components/search/ExSearch.jsx +370 -326
  52. package/components/search/components/Expand.jsx +77 -77
  53. package/components/search/components/Field.jsx +27 -27
  54. package/components/search/components/Quick.jsx +57 -57
  55. package/components/search/components/index.js +5 -5
  56. package/components/search/index.js +5 -5
  57. package/components/search/index.less +118 -118
  58. package/components/search/utils.js +30 -30
  59. package/components/sector/ExSector.jsx +52 -52
  60. package/components/sector/README.md +26 -26
  61. package/components/sector/index.js +5 -5
  62. package/components/sector/index.less +122 -122
  63. package/components/theme/ExTheme.jsx +10 -10
  64. package/components/theme/index.js +4 -4
  65. package/components/theme/index.less +98 -98
  66. package/components/uploader/ExUploader.jsx +293 -293
  67. package/components/uploader/index.js +5 -5
  68. package/components/utils.js +187 -187
  69. package/directives/auth.js +113 -113
  70. package/directives/index.js +4 -4
  71. package/dist/cipher-98df1050.cjs.map +1 -1
  72. package/dist/cipher-f2ed5ee6.js.map +1 -1
  73. package/dist/directives.cjs.map +1 -1
  74. package/dist/directives.js.map +1 -1
  75. package/dist/hooks.cjs.map +1 -1
  76. package/dist/hooks.js.map +1 -1
  77. package/dist/jobsys-explore.cjs +6 -6
  78. package/dist/jobsys-explore.cjs.map +1 -1
  79. package/dist/jobsys-explore.js +464 -407
  80. package/dist/jobsys-explore.js.map +1 -1
  81. package/docgen.config.js +15 -15
  82. package/docs/.vuepress/.cache/deps/_metadata.json +52 -52
  83. package/docs/.vuepress/.cache/deps/lodash-es.js +8442 -8442
  84. package/docs/.vuepress/.cache/deps/lodash-es.js.map +7 -7
  85. package/docs/.vuepress/.temp/internal/clientConfigs.js +17 -17
  86. package/docs/.vuepress/.temp/internal/pagesComponents.js +24 -24
  87. package/docs/.vuepress/.temp/internal/pagesData.js +22 -22
  88. package/docs/.vuepress/.temp/internal/pagesRoutes.js +12 -12
  89. package/docs/.vuepress/.temp/internal/themeData.js +1 -1
  90. package/docs/.vuepress/.temp/pages/components/decorator/ExDecorator.html.js +1 -1
  91. package/docs/.vuepress/.temp/pages/components/decorator/ExDecorator.html.vue +37 -37
  92. package/docs/.vuepress/.temp/pages/components/sector/ExSector.html.js +1 -1
  93. package/docs/.vuepress/.temp/pages/components/sector/ExSector.html.vue +71 -71
  94. package/docs/.vuepress/.temp/styles/index.scss +1 -1
  95. package/docs/.vuepress/config.js +61 -61
  96. package/docs/.vuepress/dist/404.html +33 -33
  97. package/docs/.vuepress/dist/assets/404.html-a0ce2184.js +1 -1
  98. package/docs/.vuepress/dist/assets/ExButton.html-ad283101.js +1 -1
  99. package/docs/.vuepress/dist/assets/ExDecorator.html-42d09114.js +1 -1
  100. package/docs/.vuepress/dist/assets/ExDecorator.html-c82c5fe8.js +1 -1
  101. package/docs/.vuepress/dist/assets/ExForm.html-9e3f8000.js +1 -1
  102. package/docs/.vuepress/dist/assets/ExProvider.html-78fdc6cd.js +1 -1
  103. package/docs/.vuepress/dist/assets/ExSearch.html-103f6f34.js +1 -1
  104. package/docs/.vuepress/dist/assets/ExSector.html-a1e24c3a.js +7 -7
  105. package/docs/.vuepress/dist/assets/ExSector.html-cff3fefd.js +1 -1
  106. package/docs/.vuepress/dist/assets/ExUploader.html-8310e424.js +1 -1
  107. package/docs/.vuepress/dist/assets/app-29fe8d1e.js +10 -10
  108. package/docs/.vuepress/dist/assets/hooks.html-90ccbc1a.js +1 -1
  109. package/docs/.vuepress/dist/assets/index.html-85b79c97.js +43 -43
  110. package/docs/.vuepress/dist/assets/style-46d7e227.css +1 -1
  111. package/docs/.vuepress/dist/components/button/ExButton.html +33 -33
  112. package/docs/.vuepress/dist/components/decorator/ExDecorator.html +33 -33
  113. package/docs/.vuepress/dist/components/form/ExForm.html +33 -33
  114. package/docs/.vuepress/dist/components/provider/ExProvider.html +33 -33
  115. package/docs/.vuepress/dist/components/search/ExSearch.html +33 -33
  116. package/docs/.vuepress/dist/components/sector/ExSector.html +39 -39
  117. package/docs/.vuepress/dist/components/uploader/ExUploader.html +33 -33
  118. package/docs/.vuepress/dist/hooks.html +33 -33
  119. package/docs/.vuepress/dist/index.html +75 -75
  120. package/docs/.vuepress/styles/index.scss +7 -7
  121. package/docs/components/decorator/ExDecorator.md +14 -14
  122. package/docs/components/sector/ExSector.md +43 -43
  123. package/docs/index.md +82 -82
  124. package/hooks/cipher.js +44 -44
  125. package/hooks/datetime.js +69 -69
  126. package/hooks/form.js +188 -188
  127. package/hooks/utils.js +282 -282
  128. package/index.html +17 -17
  129. package/package.json +1 -1
  130. package/playground/App.vue +191 -191
  131. package/playground/TestButton.vue +61 -61
  132. package/playground/TestCascader.vue +2442 -2442
  133. package/playground/TestDecorator.vue +14 -14
  134. package/playground/TestForm.vue +429 -429
  135. package/playground/TestFormItem.vue +110 -110
  136. package/playground/TestGrid.vue +22 -22
  137. package/playground/TestPagination.vue +1250 -1248
  138. package/playground/TestQrcode.vue +7 -7
  139. package/playground/TestResult.vue +12 -12
  140. package/playground/TestSearch.vue +115 -115
  141. package/playground/TestSector.vue +15 -15
  142. package/playground/TestSurvey.vue +27 -27
  143. package/playground/TestUploader.vue +14 -14
  144. package/playground/main.js +22 -22
  145. package/utils/style.js +13 -13
  146. package/vite.config.js +54 -54
  147. package/.changeset/blue-spiders-roll.md +0 -5
  148. package/.changeset/cyan-monkeys-draw.md +0 -5
  149. package/.changeset/dry-feet-float.md +0 -5
  150. package/.changeset/empty-mice-share.md +0 -5
  151. package/.changeset/famous-yaks-doubt.md +0 -5
  152. package/.changeset/five-fans-type.md +0 -5
  153. package/.changeset/funny-hats-drop.md +0 -5
  154. package/.changeset/khaki-cobras-bathe.md +0 -5
  155. package/.changeset/khaki-forks-shave.md +0 -5
  156. package/.changeset/lazy-yaks-crash.md +0 -5
  157. package/.changeset/light-cycles-flow.md +0 -5
  158. package/.changeset/loud-mirrors-explain.md +0 -5
  159. package/.changeset/lovely-balloons-protect.md +0 -5
  160. package/.changeset/mean-pens-travel.md +0 -5
  161. package/.changeset/moody-doors-grow.md +0 -5
  162. package/.changeset/moody-laws-change.md +0 -5
  163. package/.changeset/nasty-goats-joke.md +0 -5
  164. package/.changeset/odd-forks-drop.md +0 -5
  165. package/.changeset/olive-windows-suffer.md +0 -5
  166. package/.changeset/popular-carpets-jog.md +0 -5
  167. package/.changeset/popular-planets-play.md +0 -5
  168. package/.changeset/rare-gorillas-boil.md +0 -5
  169. package/.changeset/rare-moose-teach.md +0 -5
  170. package/.changeset/sharp-tools-hope.md +0 -5
  171. package/.changeset/slimy-sloths-refuse.md +0 -5
  172. package/.changeset/slow-boats-search.md +0 -5
  173. package/.changeset/small-experts-bake.md +0 -5
  174. package/.changeset/smooth-horses-tie.md +0 -5
  175. package/.changeset/tame-feet-reply.md +0 -5
  176. package/.changeset/tidy-items-reflect.md +0 -5
  177. package/.changeset/weak-chicken-admire.md +0 -5
  178. package/.changeset/weak-rockets-compare.md +0 -5
  179. package/.changeset/wild-glasses-bathe.md +0 -5
  180. package/.changeset/wise-ears-turn.md +0 -5
@@ -1,99 +1,99 @@
1
- import { defineComponent, ref, watch } from "vue"
2
- import { defaultFieldProps, defaultOptionsProps, useOptionTrait } from "../utils"
3
- import { Checkbox } from "vant"
4
- import ExField from "./ExField.jsx"
5
- import { isFunction, pick, remove } from "lodash-es"
6
-
7
- /**
8
- * ExMatrixRadio 矩阵单选
9
- * @version 1.0.0
10
- */
11
- export default defineComponent({
12
- name: "ExMatrixRadio",
13
- props: {
14
- ...defaultFieldProps,
15
- ...defaultOptionsProps,
16
-
17
- /**
18
- * 行标题
19
- */
20
- rows: { type: [Array, Function], default: () => [] },
21
- modelValue: { type: Object, default: () => ({}) },
22
- },
23
- emits: ["update:modelValue"],
24
- setup(props, { emit, slots }) {
25
- const componentValue = ref(props.modelValue)
26
-
27
- watch(
28
- () => props.modelValue,
29
- () => (componentValue.value = props.modelValue),
30
- )
31
-
32
- const options = ref([])
33
-
34
- useOptionTrait(options, props)
35
-
36
- const rows = isFunction(props.rows) ? props.rows() : props.rows
37
-
38
- const onChange = (row, value) => {
39
- if (!componentValue.value[row]) {
40
- componentValue.value[row] = []
41
- }
42
- if (componentValue.value[row].includes(value)) {
43
- remove(componentValue.value[row], (item) => item === value)
44
- } else {
45
- componentValue.value[row].push(value)
46
- }
47
- emit("update:modelValue", componentValue.value)
48
- }
49
-
50
- const fieldProps = pick(props, Object.keys(defaultFieldProps))
51
-
52
- return () => (
53
- <ExField class={"ex-matrix"} {...fieldProps}>
54
- {{
55
- ...slots,
56
- input: () => (
57
- <div class={"ex-matrix-container"}>
58
- <table>
59
- <thead>
60
- <tr>
61
- <th></th>
62
- {options.value.map((item) => (
63
- <th>
64
- <div class={"ex-matrix-option"}>{item.text}</div>
65
- </th>
66
- ))}
67
- </tr>
68
- </thead>
69
- <tbody>
70
- {rows.map((row) => (
71
- <tr>
72
- <td>
73
- <div class={"ex-matrix-row"}>{row}</div>
74
- </td>
75
- {options.value.map((option) => {
76
- const checked = ref(componentValue.value[row]?.includes(option.value))
77
- return (
78
- <td>
79
- <div class={"ex-matrix-option"}>
80
- <Checkbox
81
- v-model={checked.value}
82
- shape={"square"}
83
- onClick={() => onChange(row, option.value)}
84
- ></Checkbox>
85
- </div>
86
- </td>
87
- )
88
- })}
89
- </tr>
90
- ))}
91
- </tbody>
92
- </table>
93
- </div>
94
- ),
95
- }}
96
- </ExField>
97
- )
98
- },
99
- })
1
+ import { defineComponent, ref, watch } from "vue"
2
+ import { defaultFieldProps, defaultOptionsProps, useOptionTrait } from "../utils"
3
+ import { Checkbox } from "vant"
4
+ import ExField from "./ExField.jsx"
5
+ import { isFunction, pick, remove } from "lodash-es"
6
+
7
+ /**
8
+ * ExMatrixRadio 矩阵单选
9
+ * @version 1.0.0
10
+ */
11
+ export default defineComponent({
12
+ name: "ExMatrixRadio",
13
+ props: {
14
+ ...defaultFieldProps,
15
+ ...defaultOptionsProps,
16
+
17
+ /**
18
+ * 行标题
19
+ */
20
+ rows: { type: [Array, Function], default: () => [] },
21
+ modelValue: { type: Object, default: () => ({}) },
22
+ },
23
+ emits: ["update:modelValue"],
24
+ setup(props, { emit, slots }) {
25
+ const componentValue = ref(props.modelValue)
26
+
27
+ watch(
28
+ () => props.modelValue,
29
+ () => (componentValue.value = props.modelValue),
30
+ )
31
+
32
+ const options = ref([])
33
+
34
+ useOptionTrait(options, props)
35
+
36
+ const rows = isFunction(props.rows) ? props.rows() : props.rows
37
+
38
+ const onChange = (row, value) => {
39
+ if (!componentValue.value[row]) {
40
+ componentValue.value[row] = []
41
+ }
42
+ if (componentValue.value[row].includes(value)) {
43
+ remove(componentValue.value[row], (item) => item === value)
44
+ } else {
45
+ componentValue.value[row].push(value)
46
+ }
47
+ emit("update:modelValue", componentValue.value)
48
+ }
49
+
50
+ const fieldProps = pick(props, Object.keys(defaultFieldProps))
51
+
52
+ return () => (
53
+ <ExField class={"ex-matrix"} {...fieldProps}>
54
+ {{
55
+ ...slots,
56
+ input: () => (
57
+ <div class={"ex-matrix-container"}>
58
+ <table>
59
+ <thead>
60
+ <tr>
61
+ <th></th>
62
+ {options.value.map((item) => (
63
+ <th>
64
+ <div class={"ex-matrix-option"}>{item.text}</div>
65
+ </th>
66
+ ))}
67
+ </tr>
68
+ </thead>
69
+ <tbody>
70
+ {rows.map((row) => (
71
+ <tr>
72
+ <td>
73
+ <div class={"ex-matrix-row"}>{row}</div>
74
+ </td>
75
+ {options.value.map((option) => {
76
+ const checked = ref(componentValue.value[row]?.includes(option.value))
77
+ return (
78
+ <td>
79
+ <div class={"ex-matrix-option"}>
80
+ <Checkbox
81
+ v-model={checked.value}
82
+ shape={"square"}
83
+ onClick={() => onChange(row, option.value)}
84
+ ></Checkbox>
85
+ </div>
86
+ </td>
87
+ )
88
+ })}
89
+ </tr>
90
+ ))}
91
+ </tbody>
92
+ </table>
93
+ </div>
94
+ ),
95
+ }}
96
+ </ExField>
97
+ )
98
+ },
99
+ })
@@ -1,86 +1,86 @@
1
- import { defineComponent, ref, watch } from "vue"
2
- import { defaultFieldProps, defaultOptionsProps, useOptionTrait } from "../utils"
3
- import { Radio, RadioGroup } from "vant"
4
- import ExField from "./ExField.jsx"
5
- import { isFunction, pick } from "lodash-es"
6
-
7
- /**
8
- * ExMatrixRadio 矩阵单选
9
- * @version 1.0.0
10
- */
11
- export default defineComponent({
12
- name: "ExMatrixRadio",
13
- props: {
14
- ...defaultFieldProps,
15
- ...defaultOptionsProps,
16
-
17
- /**
18
- * 行标题
19
- */
20
- rows: { type: [Array, Function], default: () => [] },
21
- modelValue: { type: Object, default: () => ({}) },
22
- },
23
- emits: ["update:modelValue"],
24
- setup(props, { emit, slots }) {
25
- const componentValue = ref(props.modelValue)
26
-
27
- watch(
28
- () => props.modelValue,
29
- () => (componentValue.value = props.modelValue),
30
- )
31
-
32
- const options = ref([])
33
-
34
- useOptionTrait(options, props)
35
-
36
- const rows = isFunction(props.rows) ? props.rows() : props.rows
37
-
38
- const onChange = () => {
39
- emit("update:modelValue", componentValue.value)
40
- }
41
-
42
- const fieldProps = pick(props, Object.keys(defaultFieldProps))
43
-
44
- return () => (
45
- <ExField class={"ex-matrix"} {...fieldProps}>
46
- {{
47
- ...slots,
48
- input: () => (
49
- <div class={"ex-matrix-container"}>
50
- <table>
51
- <thead>
52
- <tr>
53
- <th></th>
54
- {options.value.map((item) => (
55
- <th>
56
- <div class={"ex-matrix-option"}>{item.text}</div>
57
- </th>
58
- ))}
59
- </tr>
60
- </thead>
61
- <tbody>
62
- {rows.map((row) => (
63
- <tr>
64
- <td>
65
- <div class={"ex-matrix-row"}>{row}</div>
66
- </td>
67
- {options.value.map((option) => (
68
- <td>
69
- <div class={"ex-matrix-option"}>
70
- <RadioGroup onChange={onChange} v-model={componentValue.value[row]}>
71
- {() => <Radio name={option.value}></Radio>}
72
- </RadioGroup>
73
- </div>
74
- </td>
75
- ))}
76
- </tr>
77
- ))}
78
- </tbody>
79
- </table>
80
- </div>
81
- ),
82
- }}
83
- </ExField>
84
- )
85
- },
86
- })
1
+ import { defineComponent, ref, watch } from "vue"
2
+ import { defaultFieldProps, defaultOptionsProps, useOptionTrait } from "../utils"
3
+ import { Radio, RadioGroup } from "vant"
4
+ import ExField from "./ExField.jsx"
5
+ import { isFunction, pick } from "lodash-es"
6
+
7
+ /**
8
+ * ExMatrixRadio 矩阵单选
9
+ * @version 1.0.0
10
+ */
11
+ export default defineComponent({
12
+ name: "ExMatrixRadio",
13
+ props: {
14
+ ...defaultFieldProps,
15
+ ...defaultOptionsProps,
16
+
17
+ /**
18
+ * 行标题
19
+ */
20
+ rows: { type: [Array, Function], default: () => [] },
21
+ modelValue: { type: Object, default: () => ({}) },
22
+ },
23
+ emits: ["update:modelValue"],
24
+ setup(props, { emit, slots }) {
25
+ const componentValue = ref(props.modelValue)
26
+
27
+ watch(
28
+ () => props.modelValue,
29
+ () => (componentValue.value = props.modelValue),
30
+ )
31
+
32
+ const options = ref([])
33
+
34
+ useOptionTrait(options, props)
35
+
36
+ const rows = isFunction(props.rows) ? props.rows() : props.rows
37
+
38
+ const onChange = () => {
39
+ emit("update:modelValue", componentValue.value)
40
+ }
41
+
42
+ const fieldProps = pick(props, Object.keys(defaultFieldProps))
43
+
44
+ return () => (
45
+ <ExField class={"ex-matrix"} {...fieldProps}>
46
+ {{
47
+ ...slots,
48
+ input: () => (
49
+ <div class={"ex-matrix-container"}>
50
+ <table>
51
+ <thead>
52
+ <tr>
53
+ <th></th>
54
+ {options.value.map((item) => (
55
+ <th>
56
+ <div class={"ex-matrix-option"}>{item.text}</div>
57
+ </th>
58
+ ))}
59
+ </tr>
60
+ </thead>
61
+ <tbody>
62
+ {rows.map((row) => (
63
+ <tr>
64
+ <td>
65
+ <div class={"ex-matrix-row"}>{row}</div>
66
+ </td>
67
+ {options.value.map((option) => (
68
+ <td>
69
+ <div class={"ex-matrix-option"}>
70
+ <RadioGroup onChange={onChange} v-model={componentValue.value[row]}>
71
+ {() => <Radio name={option.value}></Radio>}
72
+ </RadioGroup>
73
+ </div>
74
+ </td>
75
+ ))}
76
+ </tr>
77
+ ))}
78
+ </tbody>
79
+ </table>
80
+ </div>
81
+ ),
82
+ }}
83
+ </ExField>
84
+ )
85
+ },
86
+ })
@@ -1,97 +1,97 @@
1
- import { defineComponent, ref, watch } from "vue"
2
- import { defaultFieldProps, defaultOptionsProps, useOptionTrait } from "../utils"
3
- import { Radio, RadioGroup } from "vant"
4
- import ExField from "./ExField.jsx"
5
- import { isFunction, pick } from "lodash-es"
6
-
7
- /**
8
- * ExMatrixScale 矩阵量表
9
- * @version 1.0.0
10
- */
11
- export default defineComponent({
12
- name: "ExMatrixScale",
13
- props: {
14
- ...defaultFieldProps,
15
- ...defaultOptionsProps,
16
-
17
- /**
18
- * 行标题
19
- */
20
- rows: { type: [Array, Function], default: () => [] },
21
- modelValue: { type: Object, default: () => ({}) },
22
- },
23
- emits: ["update:modelValue"],
24
- setup(props, { emit, slots }) {
25
- const componentValue = ref(props.modelValue)
26
-
27
- watch(
28
- () => props.modelValue,
29
- () => (componentValue.value = props.modelValue),
30
- )
31
-
32
- let options = ref([])
33
-
34
- useOptionTrait(options, props)
35
-
36
- const level = props.defaultProps?.level || 5
37
-
38
- if (options.value.length > level) {
39
- options.value = options.value.slice(0, level)
40
- } else if (options.value.length < level) {
41
- //如果选项不及量表等级则补全
42
- for (let i = options.value.length; i < level; i += 1) {
43
- options.value.push({ text: i + 1, value: i + 1 })
44
- }
45
- }
46
-
47
- const rows = isFunction(props.rows) ? props.rows() : props.rows
48
-
49
- const onChange = () => {
50
- emit("update:modelValue", componentValue.value)
51
- }
52
-
53
- const fieldProps = pick(props, Object.keys(defaultFieldProps))
54
-
55
- return () => (
56
- <ExField class={"ex-matrix"} {...fieldProps}>
57
- {{
58
- ...slots,
59
- input: () => (
60
- <div class={"ex-matrix-container"}>
61
- <table>
62
- <thead>
63
- <tr>
64
- <th></th>
65
- {options.value.map((item) => (
66
- <th>
67
- <div class={"ex-matrix-option"}>{item.text}</div>
68
- </th>
69
- ))}
70
- </tr>
71
- </thead>
72
- <tbody>
73
- {rows.map((row) => (
74
- <tr>
75
- <td>
76
- <div class={"ex-matrix-row"}>{row}</div>
77
- </td>
78
- {options.value.map((option, index) => (
79
- <td>
80
- <div class={"ex-matrix-option"}>
81
- <RadioGroup onChange={onChange} v-model={componentValue.value[row]}>
82
- {() => <Radio name={index + 1}></Radio>}
83
- </RadioGroup>
84
- </div>
85
- </td>
86
- ))}
87
- </tr>
88
- ))}
89
- </tbody>
90
- </table>
91
- </div>
92
- ),
93
- }}
94
- </ExField>
95
- )
96
- },
97
- })
1
+ import { defineComponent, ref, watch } from "vue"
2
+ import { defaultFieldProps, defaultOptionsProps, useOptionTrait } from "../utils"
3
+ import { Radio, RadioGroup } from "vant"
4
+ import ExField from "./ExField.jsx"
5
+ import { isFunction, pick } from "lodash-es"
6
+
7
+ /**
8
+ * ExMatrixScale 矩阵量表
9
+ * @version 1.0.0
10
+ */
11
+ export default defineComponent({
12
+ name: "ExMatrixScale",
13
+ props: {
14
+ ...defaultFieldProps,
15
+ ...defaultOptionsProps,
16
+
17
+ /**
18
+ * 行标题
19
+ */
20
+ rows: { type: [Array, Function], default: () => [] },
21
+ modelValue: { type: Object, default: () => ({}) },
22
+ },
23
+ emits: ["update:modelValue"],
24
+ setup(props, { emit, slots }) {
25
+ const componentValue = ref(props.modelValue)
26
+
27
+ watch(
28
+ () => props.modelValue,
29
+ () => (componentValue.value = props.modelValue),
30
+ )
31
+
32
+ let options = ref([])
33
+
34
+ useOptionTrait(options, props)
35
+
36
+ const level = props.defaultProps?.level || 5
37
+
38
+ if (options.value.length > level) {
39
+ options.value = options.value.slice(0, level)
40
+ } else if (options.value.length < level) {
41
+ //如果选项不及量表等级则补全
42
+ for (let i = options.value.length; i < level; i += 1) {
43
+ options.value.push({ text: i + 1, value: i + 1 })
44
+ }
45
+ }
46
+
47
+ const rows = isFunction(props.rows) ? props.rows() : props.rows
48
+
49
+ const onChange = () => {
50
+ emit("update:modelValue", componentValue.value)
51
+ }
52
+
53
+ const fieldProps = pick(props, Object.keys(defaultFieldProps))
54
+
55
+ return () => (
56
+ <ExField class={"ex-matrix"} {...fieldProps}>
57
+ {{
58
+ ...slots,
59
+ input: () => (
60
+ <div class={"ex-matrix-container"}>
61
+ <table>
62
+ <thead>
63
+ <tr>
64
+ <th></th>
65
+ {options.value.map((item) => (
66
+ <th>
67
+ <div class={"ex-matrix-option"}>{item.text}</div>
68
+ </th>
69
+ ))}
70
+ </tr>
71
+ </thead>
72
+ <tbody>
73
+ {rows.map((row) => (
74
+ <tr>
75
+ <td>
76
+ <div class={"ex-matrix-row"}>{row}</div>
77
+ </td>
78
+ {options.value.map((option, index) => (
79
+ <td>
80
+ <div class={"ex-matrix-option"}>
81
+ <RadioGroup onChange={onChange} v-model={componentValue.value[row]}>
82
+ {() => <Radio name={index + 1}></Radio>}
83
+ </RadioGroup>
84
+ </div>
85
+ </td>
86
+ ))}
87
+ </tr>
88
+ ))}
89
+ </tbody>
90
+ </table>
91
+ </div>
92
+ ),
93
+ }}
94
+ </ExField>
95
+ )
96
+ },
97
+ })
@@ -1,51 +1,51 @@
1
- import { defineComponent, ref, watch } from "vue"
2
- import { defaultFieldProps } from "../utils"
3
- import { Stepper } from "vant"
4
- import ExField from "./ExField.jsx"
5
- import { pick } from "lodash-es"
6
-
7
- /**
8
- * ExNumber 数字
9
- * @version 1.0.0
10
- */
11
- export default defineComponent({
12
- name: "ExNumber",
13
- props: {
14
- ...defaultFieldProps,
15
-
16
- modelValue: { type: [Number, String], default: null },
17
- },
18
- emits: ["update:modelValue"],
19
- setup(props, { emit, slots }) {
20
- const componentValue = ref(props.modelValue)
21
-
22
- watch(
23
- () => props.modelValue,
24
- () => (componentValue.value = props.modelValue),
25
- )
26
-
27
- const onChange = (value) => {
28
- emit("update:modelValue", Number(value))
29
- }
30
-
31
- const fieldProps = pick(props, Object.keys(defaultFieldProps))
32
-
33
- return () => (
34
- <ExField {...fieldProps}>
35
- {{
36
- ...slots,
37
- input: () => (
38
- <Stepper
39
- v-model={componentValue.value}
40
- disabled={props.disabled || props.readonly}
41
- theme={"round"}
42
- buttonSize={22}
43
- onChange={onChange}
44
- {...props.defaultProps}
45
- ></Stepper>
46
- ),
47
- }}
48
- </ExField>
49
- )
50
- },
51
- })
1
+ import { defineComponent, ref, watch } from "vue"
2
+ import { defaultFieldProps } from "../utils"
3
+ import { Stepper } from "vant"
4
+ import ExField from "./ExField.jsx"
5
+ import { pick } from "lodash-es"
6
+
7
+ /**
8
+ * ExNumber 数字
9
+ * @version 1.0.0
10
+ */
11
+ export default defineComponent({
12
+ name: "ExNumber",
13
+ props: {
14
+ ...defaultFieldProps,
15
+
16
+ modelValue: { type: [Number, String], default: null },
17
+ },
18
+ emits: ["update:modelValue"],
19
+ setup(props, { emit, slots }) {
20
+ const componentValue = ref(props.modelValue)
21
+
22
+ watch(
23
+ () => props.modelValue,
24
+ () => (componentValue.value = props.modelValue),
25
+ )
26
+
27
+ const onChange = (value) => {
28
+ emit("update:modelValue", Number(value))
29
+ }
30
+
31
+ const fieldProps = pick(props, Object.keys(defaultFieldProps))
32
+
33
+ return () => (
34
+ <ExField {...fieldProps}>
35
+ {{
36
+ ...slots,
37
+ input: () => (
38
+ <Stepper
39
+ v-model={componentValue.value}
40
+ disabled={props.disabled || props.readonly}
41
+ theme={"round"}
42
+ buttonSize={22}
43
+ onChange={onChange}
44
+ {...props.defaultProps}
45
+ ></Stepper>
46
+ ),
47
+ }}
48
+ </ExField>
49
+ )
50
+ },
51
+ })