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,195 +1,195 @@
1
- import { computed, defineComponent, inject, ref, watch } from "vue"
2
- import { Cascader } from "vant"
3
- import localData from "./addressData.json"
4
- import PickerWrapper, { pickerProps, pickerSlots } from "./PickerWrapper.jsx"
5
- import { defaultFieldProps, defaultOptionsProps, useOptionTrait } from "../utils"
6
- import { cloneDeep, isArray, last } from "lodash-es"
7
- import { useFindTextsFromPath } from "../../hooks"
8
- import { EX_ADDRESS } from "../provider/ExProvider.jsx"
9
-
10
- /**
11
- * 地址组件
12
- *
13
- * 数据优先级:`dataSource` > `url` > `本地数据`
14
- *
15
- * @version 1.0.0
16
- */
17
- export default defineComponent({
18
- name: "ExAddress",
19
- props: {
20
- ...defaultOptionsProps,
21
- ...defaultFieldProps,
22
-
23
- modelValue: { type: [String, Number, Array], default: () => [] },
24
-
25
- /**
26
- * 标题
27
- */
28
- title: { type: String, default: "" },
29
-
30
- /**
31
- * 生成哪个级别的数据
32
- * 1: 省, 2: 省市, 3: 省市区
33
- */
34
- level: { type: Number, default: 3 },
35
-
36
- /**
37
- * 显示值的类型
38
- * 空值或all: 所有, last:最后
39
- */
40
- displayTextType: { type: String, default: "" },
41
-
42
- /**
43
- * 是否把选项的值返回到modelValue
44
- */
45
- textInValue: { type: Boolean, default: false },
46
- },
47
- emits: ["update:modelValue"],
48
- setup(props, { emit, slots, expose }) {
49
- const addressProvider = inject(EX_ADDRESS, () => ({}))
50
- const defaultAddressUrl = addressProvider.addressUrl || ""
51
- const defaultDisplayTextType = addressProvider.displayTextType || ""
52
- const defaultAfterFetched = addressProvider.afterFetched || ""
53
- const optionKeys = addressProvider.optionKeys || {}
54
-
55
- const { text: textKey, value: valueKey, children: childrenKey } = optionKeys
56
-
57
- const componentValue = ref("")
58
-
59
- const setModelValue = () => {
60
- let value = isArray(props.modelValue) ? last(props.modelValue) : props.modelValue
61
- if (props.textInValue && value) {
62
- value = value[valueKey]
63
- }
64
- componentValue.value = value
65
- }
66
- setModelValue()
67
-
68
- watch(
69
- () => props.modelValue,
70
- () => setModelValue(),
71
- )
72
-
73
- const pickerRef = ref(null)
74
- const options = ref([])
75
-
76
- const displayText = computed(() => {
77
- if (props.modelValue.length === 0) {
78
- return ""
79
- }
80
- const displayTextType = props.displayTextType || defaultDisplayTextType
81
-
82
- //textInValue状态下的初始值
83
- if (props.textInValue && props.modelValue && props.modelValue.length === 1) {
84
- return last(props.modelValue)[textKey]
85
- }
86
-
87
- //反向赋值
88
- const mValue = props.textInValue ? props.modelValue.map((item) => item[valueKey]) : props.modelValue
89
- const optionsTexts = useFindTextsFromPath(options.value, mValue, {
90
- value: valueKey,
91
- children: childrenKey,
92
- label: textKey,
93
- })
94
-
95
- return displayTextType === "last" ? last(optionsTexts) : optionsTexts.join("/")
96
- })
97
-
98
- //把默认值赋值给props
99
- const cloneProps = cloneDeep(props)
100
- if (!cloneProps.url && defaultAddressUrl) {
101
- cloneProps.url = defaultAddressUrl
102
- }
103
- if (!cloneProps.afterFetched && defaultAfterFetched) {
104
- cloneProps.afterFetched = defaultAfterFetched
105
- }
106
- //先处理好 options
107
- const dealOptions = () => {
108
- useOptionTrait(options, cloneProps, localData)
109
- }
110
- dealOptions()
111
-
112
- watch(
113
- () => props.options,
114
- () => {
115
- dealOptions()
116
- },
117
- )
118
-
119
- const onFinish = ({ selectedOptions }) => {
120
- pickerRef.value.close()
121
- emit("update:modelValue", props.textInValue ? selectedOptions : selectedOptions.map((item) => item[valueKey]))
122
- }
123
-
124
- expose({ displayText })
125
-
126
- /********** render **********/
127
-
128
- return () => (
129
- <PickerWrapper ref={pickerRef} {...pickerProps(props)}>
130
- {{
131
- ...pickerSlots(slots, props),
132
- default: () => (
133
- <Cascader
134
- v-model={componentValue.value}
135
- fieldNames={{ text: textKey, value: valueKey, children: childrenKey }}
136
- closeable={false}
137
- showHeader={false}
138
- options={options.value}
139
- onFinish={onFinish}
140
- {...props.defaultProps}
141
- />
142
- ),
143
- }}
144
- </PickerWrapper>
145
- )
146
- },
147
- })
148
-
149
- /**
150
- *
151
- * 根据地址编码获取完整的地址编码
152
- *
153
- * @param code
154
- * @param {number} [level] 地址级别: 1: 省, 2: 省市, 3: 省市区
155
- * @return {string[]|(string|*)[]|*[]}
156
- */
157
- export function useAddressFullCode(code, level) {
158
- code += ""
159
- if (code && code.length === 6) {
160
- if (!level) {
161
- if (/0000$/.test(code)) {
162
- level = 1
163
- } else if (/00$/.test(code)) {
164
- level = 2
165
- } else {
166
- level = 3
167
- }
168
- }
169
- if (level === 1) {
170
- return [`${code.substr(0, 2)}0000`]
171
- }
172
- if (level === 2) {
173
- return [`${code.substr(0, 2)}0000`, `${code.substr(0, 4)}00`]
174
- }
175
- if (level === 3) {
176
- return [`${code.substr(0, 2)}0000`, `${code.substr(0, 4)}00`, code]
177
- }
178
- }
179
- return []
180
- }
181
-
182
- /**
183
- * 根据地址编码获取完整的地址名称
184
- * @param code
185
- * @param {number} [level] 地址级别: 1: 省, 2: 省市, 3: 省市区
186
- * @return {*[]}
187
- */
188
- export function useAddressNameFormCode(code, level) {
189
- if (!isArray(code)) {
190
- code = useAddressFullCode(code, level)
191
- }
192
- return useFindTextsFromPath(localData, code, { value: "code", label: "name", children: "children" })
193
- }
194
-
195
- export const addressData = localData
1
+ import { computed, defineComponent, inject, ref, watch } from "vue"
2
+ import { Cascader } from "vant"
3
+ import localData from "./addressData.json"
4
+ import PickerWrapper, { pickerProps, pickerSlots } from "./PickerWrapper.jsx"
5
+ import { defaultFieldProps, defaultOptionsProps, useOptionTrait } from "../utils"
6
+ import { cloneDeep, isArray, last } from "lodash-es"
7
+ import { useFindTextsFromPath } from "../../hooks"
8
+ import { EX_ADDRESS } from "../provider/ExProvider.jsx"
9
+
10
+ /**
11
+ * 地址组件
12
+ *
13
+ * 数据优先级:`dataSource` > `url` > `本地数据`
14
+ *
15
+ * @version 1.0.0
16
+ */
17
+ export default defineComponent({
18
+ name: "ExAddress",
19
+ props: {
20
+ ...defaultOptionsProps,
21
+ ...defaultFieldProps,
22
+
23
+ modelValue: { type: [String, Number, Array], default: () => [] },
24
+
25
+ /**
26
+ * 标题
27
+ */
28
+ title: { type: String, default: "" },
29
+
30
+ /**
31
+ * 生成哪个级别的数据
32
+ * 1: 省, 2: 省市, 3: 省市区
33
+ */
34
+ level: { type: Number, default: 3 },
35
+
36
+ /**
37
+ * 显示值的类型
38
+ * 空值或all: 所有, last:最后
39
+ */
40
+ displayTextType: { type: String, default: "" },
41
+
42
+ /**
43
+ * 是否把选项的值返回到modelValue
44
+ */
45
+ textInValue: { type: Boolean, default: false },
46
+ },
47
+ emits: ["update:modelValue"],
48
+ setup(props, { emit, slots, expose }) {
49
+ const addressProvider = inject(EX_ADDRESS, () => ({}))
50
+ const defaultAddressUrl = addressProvider.addressUrl || ""
51
+ const defaultDisplayTextType = addressProvider.displayTextType || ""
52
+ const defaultAfterFetched = addressProvider.afterFetched || ""
53
+ const optionKeys = addressProvider.optionKeys || {}
54
+
55
+ const { text: textKey, value: valueKey, children: childrenKey } = optionKeys
56
+
57
+ const componentValue = ref("")
58
+
59
+ const setModelValue = () => {
60
+ let value = isArray(props.modelValue) ? last(props.modelValue) : props.modelValue
61
+ if (props.textInValue && value) {
62
+ value = value[valueKey]
63
+ }
64
+ componentValue.value = value
65
+ }
66
+ setModelValue()
67
+
68
+ watch(
69
+ () => props.modelValue,
70
+ () => setModelValue(),
71
+ )
72
+
73
+ const pickerRef = ref(null)
74
+ const options = ref([])
75
+
76
+ const displayText = computed(() => {
77
+ if (props.modelValue.length === 0) {
78
+ return ""
79
+ }
80
+ const displayTextType = props.displayTextType || defaultDisplayTextType
81
+
82
+ //textInValue状态下的初始值
83
+ if (props.textInValue && props.modelValue && props.modelValue.length === 1) {
84
+ return last(props.modelValue)[textKey]
85
+ }
86
+
87
+ //反向赋值
88
+ const mValue = props.textInValue ? props.modelValue.map((item) => item[valueKey]) : props.modelValue
89
+ const optionsTexts = useFindTextsFromPath(options.value, mValue, {
90
+ value: valueKey,
91
+ children: childrenKey,
92
+ label: textKey,
93
+ })
94
+
95
+ return displayTextType === "last" ? last(optionsTexts) : optionsTexts.join("/")
96
+ })
97
+
98
+ //把默认值赋值给props
99
+ const cloneProps = cloneDeep(props)
100
+ if (!cloneProps.url && defaultAddressUrl) {
101
+ cloneProps.url = defaultAddressUrl
102
+ }
103
+ if (!cloneProps.afterFetched && defaultAfterFetched) {
104
+ cloneProps.afterFetched = defaultAfterFetched
105
+ }
106
+ //先处理好 options
107
+ const dealOptions = () => {
108
+ useOptionTrait(options, cloneProps, localData)
109
+ }
110
+ dealOptions()
111
+
112
+ watch(
113
+ () => props.options,
114
+ () => {
115
+ dealOptions()
116
+ },
117
+ )
118
+
119
+ const onFinish = ({ selectedOptions }) => {
120
+ pickerRef.value.close()
121
+ emit("update:modelValue", props.textInValue ? selectedOptions : selectedOptions.map((item) => item[valueKey]))
122
+ }
123
+
124
+ expose({ displayText })
125
+
126
+ /********** render **********/
127
+
128
+ return () => (
129
+ <PickerWrapper ref={pickerRef} {...pickerProps(props)}>
130
+ {{
131
+ ...pickerSlots(slots, props),
132
+ default: () => (
133
+ <Cascader
134
+ v-model={componentValue.value}
135
+ fieldNames={{ text: textKey, value: valueKey, children: childrenKey }}
136
+ closeable={false}
137
+ showHeader={false}
138
+ options={options.value}
139
+ onFinish={onFinish}
140
+ {...props.defaultProps}
141
+ />
142
+ ),
143
+ }}
144
+ </PickerWrapper>
145
+ )
146
+ },
147
+ })
148
+
149
+ /**
150
+ *
151
+ * 根据地址编码获取完整的地址编码
152
+ *
153
+ * @param code
154
+ * @param {number} [level] 地址级别: 1: 省, 2: 省市, 3: 省市区
155
+ * @return {string[]|(string|*)[]|*[]}
156
+ */
157
+ export function useAddressFullCode(code, level) {
158
+ code += ""
159
+ if (code && code.length === 6) {
160
+ if (!level) {
161
+ if (/0000$/.test(code)) {
162
+ level = 1
163
+ } else if (/00$/.test(code)) {
164
+ level = 2
165
+ } else {
166
+ level = 3
167
+ }
168
+ }
169
+ if (level === 1) {
170
+ return [`${code.substr(0, 2)}0000`]
171
+ }
172
+ if (level === 2) {
173
+ return [`${code.substr(0, 2)}0000`, `${code.substr(0, 4)}00`]
174
+ }
175
+ if (level === 3) {
176
+ return [`${code.substr(0, 2)}0000`, `${code.substr(0, 4)}00`, code]
177
+ }
178
+ }
179
+ return []
180
+ }
181
+
182
+ /**
183
+ * 根据地址编码获取完整的地址名称
184
+ * @param code
185
+ * @param {number} [level] 地址级别: 1: 省, 2: 省市, 3: 省市区
186
+ * @return {*[]}
187
+ */
188
+ export function useAddressNameFormCode(code, level) {
189
+ if (!isArray(code)) {
190
+ code = useAddressFullCode(code, level)
191
+ }
192
+ return useFindTextsFromPath(localData, code, { value: "code", label: "name", children: "children" })
193
+ }
194
+
195
+ export const addressData = localData