@netang/quasar 0.2.20 → 0.2.21

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 (284) hide show
  1. package/.editorconfig +12 -12
  2. package/_docs/docs/components/field-table.md +58 -58
  3. package/_docs/docs/components/field-tree.md +21 -21
  4. package/_docs/docs/components/table.md +24 -24
  5. package/_docs/docs/utils/table.md +196 -196
  6. package/components/column-title/index.vue +38 -38
  7. package/components/data/index.vue +20 -20
  8. package/components/dialog/img-viewer/index.vue +697 -697
  9. package/components/dragger/index.vue +203 -203
  10. package/components/drawer/index.vue +303 -303
  11. package/components/editor-code/index.vue +325 -325
  12. package/components/empty/index.vue +82 -82
  13. package/components/field-date/index.vue +850 -850
  14. package/components/field-date/methods.js +100 -100
  15. package/components/field-table/index.vue +1482 -1482
  16. package/components/field-text/index.vue +165 -165
  17. package/components/field-tree/index.vue +754 -754
  18. package/components/img/index.vue +279 -279
  19. package/components/list-menu/index.vue +149 -149
  20. package/components/list-menu-item/index.vue +79 -79
  21. package/components/mixed-table/index.vue +532 -532
  22. package/components/mixed-table-splitter/index.vue +377 -377
  23. package/components/power-page/index.vue +96 -96
  24. package/components/price/index.vue +188 -188
  25. package/components/private/components/index.js +11 -11
  26. package/components/private/components/move-to-tree/index.vue +154 -154
  27. package/components/private/edit-power-data/index.vue +846 -846
  28. package/components/private/table-visible-columns-button/index.vue +114 -114
  29. package/components/render/index.vue +123 -123
  30. package/components/search/index.vue +231 -231
  31. package/components/search-item/index.vue +210 -210
  32. package/components/select/index.vue +177 -177
  33. package/components/splitter/index.vue +422 -422
  34. package/components/table/index.vue +513 -513
  35. package/components/table-column-fixed/index.vue +110 -110
  36. package/components/table-pagination/index.vue +192 -192
  37. package/components/table-summary/index.vue +107 -107
  38. package/components/thumbnail/index.vue +72 -72
  39. package/components/toolbar/index.vue +146 -146
  40. package/components/tree/index.vue +1728 -1728
  41. package/components/uploader/index.vue +195 -195
  42. package/components/uploader-query/index.vue +945 -945
  43. package/components/value-format/index.vue +274 -274
  44. package/configs/area3.js +1 -1
  45. package/docs/404.html +33 -33
  46. package/docs/assets/404.html-60b35caa.js +1 -1
  47. package/docs/assets/404.html-d1e63d77.js +1 -1
  48. package/docs/assets/alert.html-b2a2a72f.js +5 -5
  49. package/docs/assets/alert.html-ba46d137.js +1 -1
  50. package/docs/assets/app-9f30aa4b.js +6 -6
  51. package/docs/assets/area.html-01b9b58d.js +42 -42
  52. package/docs/assets/area.html-9a4fce6a.js +1 -1
  53. package/docs/assets/arr.html-145d27e7.js +1 -1
  54. package/docs/assets/arr.html-674e65ab.js +11 -11
  55. package/docs/assets/auth.html-579fa830.js +1 -1
  56. package/docs/assets/auth.html-8544ed95.js +8 -8
  57. package/docs/assets/bus.html-c71254aa.js +1 -1
  58. package/docs/assets/bus.html-dc7d3d19.js +6 -6
  59. package/docs/assets/column-title.html-c735cb5a.js +3 -3
  60. package/docs/assets/column-title.html-e9316762.js +1 -1
  61. package/docs/assets/confirm.html-ddfdc27f.js +10 -10
  62. package/docs/assets/confirm.html-ef3e2bef.js +1 -1
  63. package/docs/assets/copy.html-d20345b6.js +1 -1
  64. package/docs/assets/copy.html-ef8c8571.js +13 -13
  65. package/docs/assets/data.html-6432175d.js +30 -30
  66. package/docs/assets/data.html-a3b05d5b.js +1 -1
  67. package/docs/assets/dialog.html-1f698e5a.js +1 -1
  68. package/docs/assets/dialog.html-62902b83.js +68 -68
  69. package/docs/assets/dialog.html-baea77c9.js +1 -1
  70. package/docs/assets/dialog.html-bb082fc4.js +1 -1
  71. package/docs/assets/dict.html-1311da3d.js +23 -23
  72. package/docs/assets/dict.html-b96fbf0c.js +1 -1
  73. package/docs/assets/dictOptions.html-7c4f40a5.js +1 -1
  74. package/docs/assets/dictOptions.html-fb99d175.js +5 -5
  75. package/docs/assets/dragger.html-668d3efa.js +1 -1
  76. package/docs/assets/dragger.html-749d585a.js +1 -1
  77. package/docs/assets/editor-code.html-6ab26ea9.js +1 -1
  78. package/docs/assets/editor-code.html-d196205d.js +1 -1
  79. package/docs/assets/empty.html-1c139131.js +1 -1
  80. package/docs/assets/empty.html-1e9c441d.js +1 -1
  81. package/docs/assets/field-date.html-069fdb13.js +1 -1
  82. package/docs/assets/field-date.html-ad204aa9.js +1 -1
  83. package/docs/assets/field-table.html-ce480f03.js +1 -1
  84. package/docs/assets/field-table.html-d9236160.js +1 -1
  85. package/docs/assets/field-text.html-7277c62f.js +1 -1
  86. package/docs/assets/field-text.html-ccb4cecf.js +1 -1
  87. package/docs/assets/field-tree.html-519bfb45.js +1 -1
  88. package/docs/assets/field-tree.html-fdc748d6.js +1 -1
  89. package/docs/assets/form.html-2b562c37.js +2 -2
  90. package/docs/assets/form.html-75104cd5.js +1 -1
  91. package/docs/assets/framework-204010b2.js +5 -5
  92. package/docs/assets/getData.html-990e3787.js +1 -1
  93. package/docs/assets/getData.html-bb72025f.js +34 -34
  94. package/docs/assets/getFile.html-42368004.js +1 -1
  95. package/docs/assets/getFile.html-99abd054.js +3 -3
  96. package/docs/assets/getImage.html-3429c5a1.js +1 -1
  97. package/docs/assets/getImage.html-4d886d83.js +3 -3
  98. package/docs/assets/getTime.html-7435f922.js +1 -1
  99. package/docs/assets/getTime.html-b37f49eb.js +20 -20
  100. package/docs/assets/img.html-7d1da657.js +1 -1
  101. package/docs/assets/img.html-fbea1105.js +1 -1
  102. package/docs/assets/index.html-1695dd7c.js +1 -1
  103. package/docs/assets/index.html-65a4aa67.js +1 -1
  104. package/docs/assets/index.html-7b98d5bd.js +1 -1
  105. package/docs/assets/index.html-c01f2648.js +1 -1
  106. package/docs/assets/input-number.html-0b250d2a.js +1 -1
  107. package/docs/assets/input-number.html-a8eb0378.js +1 -1
  108. package/docs/assets/list-menu-item.html-7f1b4611.js +1 -1
  109. package/docs/assets/list-menu-item.html-84ed5ab8.js +1 -1
  110. package/docs/assets/list-menu.html-28b4163f.js +1 -1
  111. package/docs/assets/list-menu.html-cb6ba95b.js +1 -1
  112. package/docs/assets/loading.html-dae9e39d.js +6 -6
  113. package/docs/assets/loading.html-dc74c9e6.js +1 -1
  114. package/docs/assets/notify.html-e6c4c514.js +1 -1
  115. package/docs/assets/notify.html-f2c4d914.js +8 -8
  116. package/docs/assets/power-page.html-32e02f82.js +1 -1
  117. package/docs/assets/power-page.html-485e77da.js +1 -1
  118. package/docs/assets/power.html-d258cc19.js +93 -93
  119. package/docs/assets/power.html-e490bd32.js +1 -1
  120. package/docs/assets/previewImage.html-6a6b4245.js +1 -1
  121. package/docs/assets/previewImage.html-c5b7e945.js +2 -2
  122. package/docs/assets/price.html-1882c548.js +19 -19
  123. package/docs/assets/price.html-94d3f5be.js +1 -1
  124. package/docs/assets/price.html-d213df0f.js +1 -1
  125. package/docs/assets/price.html-deaf880f.js +1 -1
  126. package/docs/assets/render.html-8efcbdd4.js +1 -1
  127. package/docs/assets/render.html-df228e38.js +1 -1
  128. package/docs/assets/rule.html-2cd57fc2.js +13 -13
  129. package/docs/assets/rule.html-61662001.js +1 -1
  130. package/docs/assets/ruleValid.html-04fe2552.js +1 -1
  131. package/docs/assets/ruleValid.html-e0a776af.js +14 -14
  132. package/docs/assets/search-0782d0d1.svg +1 -1
  133. package/docs/assets/search-item.html-3f75394c.js +1 -1
  134. package/docs/assets/search-item.html-4e942ecd.js +1 -1
  135. package/docs/assets/search.html-2807043e.js +1 -1
  136. package/docs/assets/search.html-c24f8806.js +1 -1
  137. package/docs/assets/select.html-00d0607c.js +1 -1
  138. package/docs/assets/select.html-de7731f5.js +1 -1
  139. package/docs/assets/splitter.html-56f51a70.js +1 -1
  140. package/docs/assets/splitter.html-f5c836d7.js +1 -1
  141. package/docs/assets/style-161e43ab.css +1 -1
  142. package/docs/assets/symbols.html-a6aea4bf.js +1 -1
  143. package/docs/assets/symbols.html-b1f65bad.js +21 -21
  144. package/docs/assets/table-column-fixed.html-3a69e7b2.js +1 -1
  145. package/docs/assets/table-column-fixed.html-e763c38b.js +1 -1
  146. package/docs/assets/table-pagination.html-236934d3.js +1 -1
  147. package/docs/assets/table-pagination.html-c37ee2ac.js +1 -1
  148. package/docs/assets/table-splitter.html-07eab15c.js +1 -1
  149. package/docs/assets/table-splitter.html-7670ee65.js +1 -1
  150. package/docs/assets/table-summary.html-04db434f.js +1 -1
  151. package/docs/assets/table-summary.html-943c65a0.js +1 -1
  152. package/docs/assets/table.html-36253ad7.js +1 -1
  153. package/docs/assets/table.html-7f9c5d1b.js +38 -38
  154. package/docs/assets/table.html-93d53dc8.js +1 -1
  155. package/docs/assets/table.html-ac99b9cb.js +1 -1
  156. package/docs/assets/thumbnail.html-bab1976b.js +1 -1
  157. package/docs/assets/thumbnail.html-eb64e5e8.js +1 -1
  158. package/docs/assets/timestamp.html-4e54f79b.js +13 -13
  159. package/docs/assets/timestamp.html-d0e1b88a.js +1 -1
  160. package/docs/assets/toast.html-58ecbe21.js +1 -1
  161. package/docs/assets/toast.html-c9b9d36b.js +6 -6
  162. package/docs/assets/toolbar.html-83d9f97c.js +1 -1
  163. package/docs/assets/toolbar.html-ff7b8c92.js +1 -1
  164. package/docs/assets/tree.html-d07cbe79.js +23 -23
  165. package/docs/assets/tree.html-ea04193e.js +1 -1
  166. package/docs/assets/uploader-query.html-05590718.js +1 -1
  167. package/docs/assets/uploader-query.html-3175bac5.js +1 -1
  168. package/docs/assets/uploader.html-36da4394.js +2 -2
  169. package/docs/assets/uploader.html-6b5f3079.js +1 -1
  170. package/docs/assets/uploader.html-b9340b57.js +1 -1
  171. package/docs/assets/uploader.html-bc1c22e3.js +1 -1
  172. package/docs/assets/value-format.html-8ae3d47d.js +1 -1
  173. package/docs/assets/value-format.html-afa99b3d.js +1 -1
  174. package/docs/components/column-title.html +35 -35
  175. package/docs/components/data.html +62 -62
  176. package/docs/components/dialog.html +33 -33
  177. package/docs/components/dragger.html +33 -33
  178. package/docs/components/editor-code.html +33 -33
  179. package/docs/components/empty.html +33 -33
  180. package/docs/components/field-date.html +33 -33
  181. package/docs/components/field-table.html +33 -33
  182. package/docs/components/field-text.html +33 -33
  183. package/docs/components/field-tree.html +33 -33
  184. package/docs/components/img.html +33 -33
  185. package/docs/components/input-number.html +33 -33
  186. package/docs/components/list-menu-item.html +33 -33
  187. package/docs/components/list-menu.html +33 -33
  188. package/docs/components/power-page.html +33 -33
  189. package/docs/components/price.html +33 -33
  190. package/docs/components/render.html +33 -33
  191. package/docs/components/search-item.html +33 -33
  192. package/docs/components/search.html +33 -33
  193. package/docs/components/select.html +33 -33
  194. package/docs/components/splitter.html +33 -33
  195. package/docs/components/table-column-fixed.html +33 -33
  196. package/docs/components/table-pagination.html +33 -33
  197. package/docs/components/table-splitter.html +33 -33
  198. package/docs/components/table-summary.html +33 -33
  199. package/docs/components/table.html +33 -33
  200. package/docs/components/thumbnail.html +33 -33
  201. package/docs/components/toolbar.html +33 -33
  202. package/docs/components/uploader-query.html +33 -33
  203. package/docs/components/uploader.html +33 -33
  204. package/docs/components/value-format.html +33 -33
  205. package/docs/css/index.css +3 -3
  206. package/docs/index.html +33 -33
  207. package/docs/utils/alert.html +37 -37
  208. package/docs/utils/area.html +74 -74
  209. package/docs/utils/arr.html +43 -43
  210. package/docs/utils/auth.html +40 -40
  211. package/docs/utils/bus.html +38 -38
  212. package/docs/utils/confirm.html +42 -42
  213. package/docs/utils/copy.html +45 -45
  214. package/docs/utils/dialog.html +100 -100
  215. package/docs/utils/dict.html +55 -55
  216. package/docs/utils/dictOptions.html +37 -37
  217. package/docs/utils/form.html +34 -34
  218. package/docs/utils/getData.html +66 -66
  219. package/docs/utils/getFile.html +35 -35
  220. package/docs/utils/getImage.html +35 -35
  221. package/docs/utils/getTime.html +52 -52
  222. package/docs/utils/index.html +33 -33
  223. package/docs/utils/loading.html +38 -38
  224. package/docs/utils/notify.html +40 -40
  225. package/docs/utils/power.html +125 -125
  226. package/docs/utils/previewImage.html +34 -34
  227. package/docs/utils/price.html +51 -51
  228. package/docs/utils/rule.html +45 -45
  229. package/docs/utils/ruleValid.html +46 -46
  230. package/docs/utils/symbols.html +53 -53
  231. package/docs/utils/table.html +70 -70
  232. package/docs/utils/timestamp.html +45 -45
  233. package/docs/utils/toast.html +38 -38
  234. package/docs/utils/tree.html +55 -55
  235. package/docs/utils/uploader.html +34 -34
  236. package/package.json +25 -25
  237. package/sass/common.scss +184 -184
  238. package/sass/index.scss +12 -12
  239. package/sass/line.scss +39 -39
  240. package/sass/quasar/btn.scss +46 -46
  241. package/sass/quasar/common.scss +3 -3
  242. package/sass/quasar/drawer.scss +6 -6
  243. package/sass/quasar/field.scss +259 -259
  244. package/sass/quasar/loading.scss +6 -6
  245. package/sass/quasar/table.scss +168 -168
  246. package/sass/quasar/toolbar.scss +22 -22
  247. package/sass/variables.scss +140 -140
  248. package/store/index.js +29 -29
  249. package/utils/$auth.js +127 -127
  250. package/utils/$form.js +72 -72
  251. package/utils/$power.js +1486 -1486
  252. package/utils/$render.js +75 -75
  253. package/utils/$rule.js +13 -13
  254. package/utils/$ruleValid.js +10 -10
  255. package/utils/$search.js +416 -416
  256. package/utils/$table.js +1275 -1275
  257. package/utils/alert.js +12 -12
  258. package/utils/area.js +400 -400
  259. package/utils/arr.js +51 -51
  260. package/utils/bus.js +6 -6
  261. package/utils/config.js +64 -64
  262. package/utils/confirm.js +11 -11
  263. package/utils/copy.js +30 -30
  264. package/utils/dialog.js +36 -36
  265. package/utils/dict.js +21 -21
  266. package/utils/dictOptions.js +28 -28
  267. package/utils/getData.js +88 -88
  268. package/utils/getFile.js +67 -67
  269. package/utils/getImage.js +276 -276
  270. package/utils/getTime.js +113 -113
  271. package/utils/index.js +67 -67
  272. package/utils/loading.js +15 -15
  273. package/utils/notify.js +13 -13
  274. package/utils/play.js +40 -40
  275. package/utils/previewImage.js +14 -14
  276. package/utils/price.js +18 -18
  277. package/utils/symbols.js +18 -18
  278. package/utils/timestamp.js +18 -18
  279. package/utils/toast.js +13 -13
  280. package/utils/uploader.js +2114 -2114
  281. package/utils/useAuth.js +30 -30
  282. package/utils/useFileUrl.js +26 -26
  283. package/utils/useRouter.js +47 -47
  284. package/utils/useSearch.js +499 -499
@@ -1,499 +1,499 @@
1
- import $n_has from 'lodash/has'
2
- import $n_isArray from 'lodash/isArray'
3
- import $n_cloneDeep from 'lodash/cloneDeep'
4
- import $n_merge from 'lodash/merge'
5
- import $n_isFunction from 'lodash/isFunction'
6
- import $n_findIndex from 'lodash/findIndex'
7
-
8
- import $n_forEach from '@netang/utils/forEach'
9
- import $n_isValidArray from '@netang/utils/isValidArray'
10
- import $n_join from '@netang/utils/join'
11
- import $n_split from '@netang/utils/split'
12
- import $n_indexOf from '@netang/utils/indexOf'
13
-
14
- import $n_isRequired from '@netang/utils/isRequired'
15
- import $n_forIn from '@netang/utils/forIn'
16
- import $n_runAsync from '@netang/utils/runAsync'
17
- import $n_isValidObject from '@netang/utils/isValidObject'
18
- import $n_isValidValue from '@netang/utils/isValidValue'
19
- import $n_trimString from '@netang/utils/trimString'
20
- import $n_numberDeep from '@netang/utils/numberDeep'
21
- import $n_toDate from '@netang/utils/toDate'
22
- import $n_replaceAll from '@netang/utils/replaceAll'
23
-
24
- import { date as quasarDate } from 'quasar'
25
- import { getQuickRange, quickRange } from '../components/field-date/methods'
26
-
27
- import $n_dictOptions from './dictOptions'
28
- import { configs } from './config'
29
-
30
- const {
31
- // 字典常量
32
- dicts,
33
- } = configs
34
-
35
- /**
36
- * 比较类型默认值
37
- */
38
- const COMPARE_TYPE_MAPS = {
39
- // 数字
40
- number: dicts.SEARCH_COMPARE_TYPE__EQUAL,
41
- // 文字
42
- text: dicts.SEARCH_COMPARE_TYPE__LIKE,
43
- // 价格
44
- price: dicts.SEARCH_COMPARE_TYPE__EQUAL,
45
- // 日期
46
- date: dicts.SEARCH_COMPARE_TYPE__EQUAL,
47
- }
48
-
49
- /**
50
- * 设置单个比较条件
51
- */
52
- function setItemCompare(item) {
53
-
54
- // 初始比较条件数组
55
- let opts1 = item.type === 'text'
56
- // 如果类型为 文字
57
- ? [
58
- { label: '相同', value: dicts.SEARCH_COMPARE_TYPE__EQUAL },
59
- { label: '不同', value: dicts.SEARCH_COMPARE_TYPE__NOT_EQUAL },
60
- { label: '包含', value: dicts.SEARCH_COMPARE_TYPE__LIKE },
61
- { label: '不含', value: dicts.SEARCH_COMPARE_TYPE__NOT_LIKE },
62
- ]
63
- // 否则为数字
64
- : [
65
- { label: '=', value: dicts.SEARCH_COMPARE_TYPE__EQUAL },
66
- { label: '!=', value: dicts.SEARCH_COMPARE_TYPE__NOT_EQUAL },
67
- { label: '>', value: dicts.SEARCH_COMPARE_TYPE__GT },
68
- { label: '≥', value: dicts.SEARCH_COMPARE_TYPE__GTE },
69
- ]
70
-
71
- // 如果类型为日期
72
- if (item.type === 'date') {
73
- // 添加日期快捷选项
74
- $n_forEach(quickRange, function(label, key) {
75
- opts1.push({ label, value: key + 20 })
76
- })
77
-
78
- // 否则为其他
79
- } else {
80
- opts1.push(
81
- { label: 'IN', value: dicts.SEARCH_COMPARE_TYPE__IN },
82
- { label: 'NOT IN', value: dicts.SEARCH_COMPARE_TYPE__NOT_IN },
83
- )
84
- }
85
-
86
- // 如果有比较类型
87
- if (
88
- $n_has(item, 'compare')
89
- && $n_isValidArray(item.compare)
90
- ) {
91
- const {
92
- compare,
93
- compareIgnore
94
- } = item
95
-
96
- // 如果有筛选比较条件
97
- // 筛选比较条件
98
- opts1 = opts1.filter(
99
- compareIgnore === true
100
- // 如果为忽略比较条件
101
- ? e => compare.indexOf(e.value) === -1
102
- // 否则为限制比较条件
103
- : e => compare.indexOf(e.value) > -1
104
- )
105
- }
106
-
107
- // 如果没有比较选项, 则设置相同为默认
108
- if (! opts1.length) {
109
- opts1.push({ label: type === 'text' ? '相同' : '=', value: dicts.SEARCH_COMPARE_TYPE__EQUAL })
110
- }
111
-
112
- // 值1 比较类型条件
113
- item.compareOptions1 = opts1
114
- // 值2 比较类型条件
115
- item.compareOptions2 = []
116
-
117
- if (
118
- // 如果比较类型有 >
119
- $n_findIndex(opts1, { value: dicts.SEARCH_COMPARE_TYPE__GT }) > -1
120
- // 如果比较类型有 >=
121
- || $n_findIndex(opts1, { value: dicts.SEARCH_COMPARE_TYPE__GTE }) > -1
122
- ) {
123
- item.compareOptions2.push(
124
- { label: '<', value: dicts.SEARCH_COMPARE_TYPE__LT },
125
- { label: '≤', value: dicts.SEARCH_COMPARE_TYPE__LTE },
126
- )
127
- }
128
- }
129
-
130
- /**
131
- * 设置单个搜索值
132
- */
133
- export function setItemValue(value, val) {
134
-
135
- // 如果值为数组
136
- if (Array.isArray(val)) {
137
- // 比较类型为 in
138
- value[0].compare = dicts.SEARCH_COMPARE_TYPE__IN
139
- // 设置值为将数组转为逗号分隔的字符串
140
- value[0].value = $n_join(val, ',')
141
-
142
- // 如果值是逗号隔开
143
- } else if ($n_split(val, ',').length > 1) {
144
- // 比较类型为 in
145
- value[0].compare = dicts.SEARCH_COMPARE_TYPE__IN
146
- // 设置值为将数组转为逗号分隔的字符串
147
- value[0].value = val
148
-
149
- // 否则为单个值
150
- } else {
151
- // 比较类型为 ==
152
- value[0].compare = dicts.SEARCH_COMPARE_TYPE__EQUAL
153
- // 设置值为当前值
154
- value[0].value = val
155
- }
156
- }
157
-
158
- /**
159
- * 格式化单个比较条件
160
- */
161
- function formatItemValueCompare(value, { compareOptions1 }) {
162
-
163
- // 获取第一个值
164
- const value1 = value[0]
165
-
166
- // 如果值1 的比较条件不在值1 的限制范围内
167
- if ($n_findIndex(compareOptions1, { value: value1.compare }) === -1) {
168
- // 则取比较条件中的第一个
169
- value1.compare = compareOptions1[0].value
170
- }
171
-
172
- // 如果比较类型不为 in / not in
173
- if ($n_indexOf([ dicts.SEARCH_COMPARE_TYPE__IN, dicts.SEARCH_COMPARE_TYPE__NOT_IN ], value1.compare) === -1) {
174
- // 如果值中含有逗号
175
- const arr = $n_split(value1.value, ',')
176
- if (arr.length > 1) {
177
- value1.value = arr[0]
178
- }
179
- }
180
-
181
- // 如果值1 比较类型为 >
182
- if (value1.compare === dicts.SEARCH_COMPARE_TYPE__GT) {
183
- // 则修改值2 类型为 <
184
- value[1].compare = dicts.SEARCH_COMPARE_TYPE__LT
185
-
186
- // 如果值1 比较类型为 >=
187
- } else if (value1.compare === dicts.SEARCH_COMPARE_TYPE__GTE) {
188
- // 则修改值2 类型为 <=
189
- value[1].compare = dicts.SEARCH_COMPARE_TYPE__LTE
190
- }
191
- }
192
-
193
- /**
194
- * 从表格列获取原始值
195
- */
196
- export function getRawData(tableColumns, query, searchFromQuery = true) {
197
-
198
- // 原始参数
199
- const rawQuery = {}
200
- // 原始表格搜索参数
201
- const rawSearchOptions = []
202
- // 原始表格搜索值(空表格搜索值, 用于搜索重置)
203
- const rawTableSearchValue = []
204
- // 首次表格搜索值(如果表格搜索参数中带了初始值, 则设置初始值)
205
- const firstTableSearchValue = []
206
-
207
- // 搜索参数键值数组
208
- const searchQueryKey = []
209
-
210
- $n_forEach(tableColumns, function (item) {
211
- if ($n_has(item, 'search.type')) {
212
-
213
- // 【设置原始表格搜索参数】
214
- // --------------------------------------------------
215
-
216
- // 搜索参数
217
- const newItem = $n_merge({
218
- // 标签
219
- label: item.label,
220
- }, item.search)
221
-
222
- // 标识
223
- newItem.name = $n_has(newItem, 'name') ? newItem.name : item.name
224
-
225
- // 如果有字典标识
226
- if ($n_has(item, 'dict')) {
227
- newItem.dict = item.dict
228
- }
229
-
230
- // 设置单个比较条件
231
- setItemCompare(newItem)
232
-
233
- // 原始表格搜索参数
234
- rawSearchOptions.push(newItem)
235
-
236
- // 【原始表格搜索值】
237
- // --------------------------------------------------
238
-
239
- let value = [
240
- // 值1
241
- {
242
- // 比较类型
243
- compare: COMPARE_TYPE_MAPS[newItem.type],
244
- // 值
245
- value: '',
246
- },
247
- // 值2
248
- {
249
- // 比较类型
250
- compare: dicts.SEARCH_COMPARE_TYPE__LT,
251
- // 值
252
- value: '',
253
- },
254
- ]
255
-
256
- // 如果是日期
257
- if (newItem.type === 'date') {
258
- // 设置日期类型
259
- value[0].dateType = 'day'
260
- }
261
-
262
- // 添加原始表格搜索值
263
- rawTableSearchValue.push($n_cloneDeep(value))
264
-
265
- if (
266
- // 如果开启从参数中获取搜索值
267
- searchFromQuery
268
- // 如果在传参中有搜索参数
269
- && $n_has(query, newItem.name)
270
- ) {
271
- // 如果有值
272
- if ($n_isRequired(query[newItem.name])) {
273
- // 设置单个搜索值
274
- setItemValue(value, query[newItem.name])
275
- }
276
-
277
- // 设置参数中搜索的 key
278
- searchQueryKey.push(newItem.name)
279
-
280
- // 否则, 如果表格参数中有设置初始值
281
- } else if (
282
- $n_has(newItem, 'value')
283
- && $n_isValidArray(newItem.value)
284
- ) {
285
- value = $n_merge([], value, newItem.value)
286
- }
287
-
288
- // 格式化单个值的比较条件
289
- formatItemValueCompare(value, newItem)
290
-
291
- // 首次初始表格搜索值
292
- firstTableSearchValue.push(value)
293
- }
294
- })
295
-
296
- if (searchQueryKey.length) {
297
- $n_forIn(query, function(val, key) {
298
- if (searchQueryKey.indexOf(key) === -1) {
299
- rawQuery[key] = val
300
- }
301
- })
302
- } else {
303
- Object.assign(rawQuery, query)
304
- }
305
-
306
- return {
307
- // 原始参数
308
- rawQuery,
309
- // 原始表格搜索参数
310
- rawSearchOptions,
311
- // 原始表格搜索值(空表格搜索值, 用于搜索重置)
312
- rawTableSearchValue,
313
- // 首次表格搜索值(如果表格搜索参数中带了初始值, 则设置初始值)
314
- firstTableSearchValue,
315
- }
316
- }
317
-
318
- /**
319
- * 获取参数
320
- */
321
- export async function getOptions(rawSearchOptions, format) {
322
-
323
- const lists = []
324
-
325
- if ($n_isValidArray(rawSearchOptions)) {
326
- for (const item of rawSearchOptions) {
327
-
328
- const newItem = Object.assign({}, item)
329
-
330
- // 格式化单个参数
331
- if ($n_isFunction(format)) {
332
- const res = await $n_runAsync(format)(newItem)
333
- if ($n_isValidObject(res)) {
334
- $n_merge(newItem, res)
335
- }
336
- }
337
-
338
- // 如果有字典标识, 则一定是下拉菜单
339
- if ($n_has(newItem, 'dict')) {
340
- $n_merge(newItem, {
341
- searchType: 'select',
342
- select: {
343
- options: $n_dictOptions(newItem.dict)
344
- },
345
- })
346
-
347
- // 如果有下拉菜单选项
348
- } else if ($n_has(newItem, 'select')) {
349
- newItem.searchType = 'select'
350
- newItem.select = Object.assign({
351
- options: [],
352
- }, newItem.select)
353
-
354
- // 如果下拉选项是方法
355
- if ($n_isFunction(newItem.select.options)) {
356
- // 读取下拉选项
357
- newItem.select.options = await $n_runAsync(newItem.select.options)()
358
- }
359
-
360
- // 如果有树选项(调用的是 <n-field-tree> 组件)
361
- } else if ($n_has(newItem, 'tree')) {
362
- newItem.searchType = 'tree'
363
- newItem.tree = Object.assign({
364
- nodes: [],
365
- accordion: true,
366
- clearable: true,
367
- }, newItem.tree)
368
-
369
- // 如果有表格选项(调用的是 <n-field-table.md> 组件)
370
- } else if ($n_has(newItem, 'table')) {
371
- newItem.searchType = 'table'
372
- newItem.table = Object.assign({
373
- // 值字段(必填)
374
- valueKey: newItem.name,
375
- // 是否可清除
376
- clearable: true,
377
- // 是否开启筛选
378
- filter: true,
379
- }, newItem.table)
380
-
381
- // 否则为输入框
382
- } else {
383
- newItem.searchType = 'input'
384
- newItem.input = Object.assign({}, newItem.input)
385
- }
386
-
387
- lists.push(newItem)
388
- }
389
- }
390
-
391
- return lists
392
- }
393
-
394
- /**
395
- * 格式化值
396
- */
397
- export function formatValue(rawSearchOptions, searchValue) {
398
-
399
- const lists = []
400
-
401
- $n_forEach(rawSearchOptions, function ({ name, type }, itemIndex) {
402
-
403
- // 添加值1
404
- function addValue1(value1) {
405
-
406
- // 如果有值1
407
- if ($n_isRequired(value1.value)) {
408
-
409
- // 如果值1 类型为 in / not in
410
- if ($n_indexOf([dicts.SEARCH_COMPARE_TYPE__IN, dicts.SEARCH_COMPARE_TYPE__NOT_IN], value1.compare) > -1) {
411
-
412
- const vals = []
413
-
414
- const values = $n_isArray(value1.value) ? value1.value : $n_split($n_replaceAll($n_trimString(value1.value), ',', ','), ',')
415
- $n_forEach(values, function (item) {
416
- item = $n_numberDeep(item)
417
- if ($n_isValidValue(item)) {
418
- vals.push(item)
419
- }
420
- })
421
-
422
- if (vals.length) {
423
- lists.push({
424
- field: name,
425
- compare: value1.compare,
426
- value: vals,
427
- })
428
- }
429
- return
430
- }
431
-
432
- // 否则添加值1
433
- lists.push({
434
- field: name,
435
- compare: value1.compare,
436
- value: $n_numberDeep(value1.value),
437
- })
438
- }
439
- }
440
-
441
- // 第一个值
442
- const value1 = searchValue[itemIndex][0]
443
-
444
- // 如果是文字
445
- if (type === 'text') {
446
- // 添加值1
447
- addValue1(value1)
448
-
449
- // 否则为数字
450
- } else {
451
-
452
- if (
453
- // 如果是日期
454
- type === 'date'
455
- // 如果类型为快捷日期
456
- && value1.compare >= 20
457
- ) {
458
- const res = getQuickRange(value1.compare - 20, true)
459
- if (res) {
460
-
461
- lists.push(
462
- // 日期起
463
- {
464
- field: name,
465
- // ≥
466
- compare: dicts.SEARCH_COMPARE_TYPE__GTE,
467
- value: $n_numberDeep(quasarDate.formatDate($n_toDate(`${res.date.from} ${res.time.from}`), 'X')),
468
- },
469
- // 日期止
470
- {
471
- field: name,
472
- // ≤
473
- compare: dicts.SEARCH_COMPARE_TYPE__LTE,
474
- value: $n_numberDeep(quasarDate.formatDate($n_toDate(`${res.date.to} ${res.time.to}`), 'X')),
475
- }
476
- )
477
- }
478
- return
479
- }
480
-
481
- // 添加值1
482
- addValue1(value1)
483
-
484
- // 只有值1 类型为 > / ≥ 值2才有效
485
- if ($n_indexOf([dicts.SEARCH_COMPARE_TYPE__GT, dicts.SEARCH_COMPARE_TYPE__GTE], value1.compare) > -1) {
486
- const value2 = searchValue[itemIndex][1]
487
- if ($n_isValidValue(value2.value)) {
488
- lists.push({
489
- field: name,
490
- compare: value2.compare,
491
- value: $n_numberDeep(value2.value),
492
- })
493
- }
494
- }
495
- }
496
- })
497
-
498
- return lists
499
- }
1
+ import $n_has from 'lodash/has'
2
+ import $n_isArray from 'lodash/isArray'
3
+ import $n_cloneDeep from 'lodash/cloneDeep'
4
+ import $n_merge from 'lodash/merge'
5
+ import $n_isFunction from 'lodash/isFunction'
6
+ import $n_findIndex from 'lodash/findIndex'
7
+
8
+ import $n_forEach from '@netang/utils/forEach'
9
+ import $n_isValidArray from '@netang/utils/isValidArray'
10
+ import $n_join from '@netang/utils/join'
11
+ import $n_split from '@netang/utils/split'
12
+ import $n_indexOf from '@netang/utils/indexOf'
13
+
14
+ import $n_isRequired from '@netang/utils/isRequired'
15
+ import $n_forIn from '@netang/utils/forIn'
16
+ import $n_runAsync from '@netang/utils/runAsync'
17
+ import $n_isValidObject from '@netang/utils/isValidObject'
18
+ import $n_isValidValue from '@netang/utils/isValidValue'
19
+ import $n_trimString from '@netang/utils/trimString'
20
+ import $n_numberDeep from '@netang/utils/numberDeep'
21
+ import $n_toDate from '@netang/utils/toDate'
22
+ import $n_replaceAll from '@netang/utils/replaceAll'
23
+
24
+ import { date as quasarDate } from 'quasar'
25
+ import { getQuickRange, quickRange } from '../components/field-date/methods'
26
+
27
+ import $n_dictOptions from './dictOptions'
28
+ import { configs } from './config'
29
+
30
+ const {
31
+ // 字典常量
32
+ dicts,
33
+ } = configs
34
+
35
+ /**
36
+ * 比较类型默认值
37
+ */
38
+ const COMPARE_TYPE_MAPS = {
39
+ // 数字
40
+ number: dicts.SEARCH_COMPARE_TYPE__EQUAL,
41
+ // 文字
42
+ text: dicts.SEARCH_COMPARE_TYPE__LIKE,
43
+ // 价格
44
+ price: dicts.SEARCH_COMPARE_TYPE__EQUAL,
45
+ // 日期
46
+ date: dicts.SEARCH_COMPARE_TYPE__EQUAL,
47
+ }
48
+
49
+ /**
50
+ * 设置单个比较条件
51
+ */
52
+ function setItemCompare(item) {
53
+
54
+ // 初始比较条件数组
55
+ let opts1 = item.type === 'text'
56
+ // 如果类型为 文字
57
+ ? [
58
+ { label: '相同', value: dicts.SEARCH_COMPARE_TYPE__EQUAL },
59
+ { label: '不同', value: dicts.SEARCH_COMPARE_TYPE__NOT_EQUAL },
60
+ { label: '包含', value: dicts.SEARCH_COMPARE_TYPE__LIKE },
61
+ { label: '不含', value: dicts.SEARCH_COMPARE_TYPE__NOT_LIKE },
62
+ ]
63
+ // 否则为数字
64
+ : [
65
+ { label: '=', value: dicts.SEARCH_COMPARE_TYPE__EQUAL },
66
+ { label: '!=', value: dicts.SEARCH_COMPARE_TYPE__NOT_EQUAL },
67
+ { label: '>', value: dicts.SEARCH_COMPARE_TYPE__GT },
68
+ { label: '≥', value: dicts.SEARCH_COMPARE_TYPE__GTE },
69
+ ]
70
+
71
+ // 如果类型为日期
72
+ if (item.type === 'date') {
73
+ // 添加日期快捷选项
74
+ $n_forEach(quickRange, function(label, key) {
75
+ opts1.push({ label, value: key + 20 })
76
+ })
77
+
78
+ // 否则为其他
79
+ } else {
80
+ opts1.push(
81
+ { label: 'IN', value: dicts.SEARCH_COMPARE_TYPE__IN },
82
+ { label: 'NOT IN', value: dicts.SEARCH_COMPARE_TYPE__NOT_IN },
83
+ )
84
+ }
85
+
86
+ // 如果有比较类型
87
+ if (
88
+ $n_has(item, 'compare')
89
+ && $n_isValidArray(item.compare)
90
+ ) {
91
+ const {
92
+ compare,
93
+ compareIgnore
94
+ } = item
95
+
96
+ // 如果有筛选比较条件
97
+ // 筛选比较条件
98
+ opts1 = opts1.filter(
99
+ compareIgnore === true
100
+ // 如果为忽略比较条件
101
+ ? e => compare.indexOf(e.value) === -1
102
+ // 否则为限制比较条件
103
+ : e => compare.indexOf(e.value) > -1
104
+ )
105
+ }
106
+
107
+ // 如果没有比较选项, 则设置相同为默认
108
+ if (! opts1.length) {
109
+ opts1.push({ label: type === 'text' ? '相同' : '=', value: dicts.SEARCH_COMPARE_TYPE__EQUAL })
110
+ }
111
+
112
+ // 值1 比较类型条件
113
+ item.compareOptions1 = opts1
114
+ // 值2 比较类型条件
115
+ item.compareOptions2 = []
116
+
117
+ if (
118
+ // 如果比较类型有 >
119
+ $n_findIndex(opts1, { value: dicts.SEARCH_COMPARE_TYPE__GT }) > -1
120
+ // 如果比较类型有 >=
121
+ || $n_findIndex(opts1, { value: dicts.SEARCH_COMPARE_TYPE__GTE }) > -1
122
+ ) {
123
+ item.compareOptions2.push(
124
+ { label: '<', value: dicts.SEARCH_COMPARE_TYPE__LT },
125
+ { label: '≤', value: dicts.SEARCH_COMPARE_TYPE__LTE },
126
+ )
127
+ }
128
+ }
129
+
130
+ /**
131
+ * 设置单个搜索值
132
+ */
133
+ export function setItemValue(value, val) {
134
+
135
+ // 如果值为数组
136
+ if (Array.isArray(val)) {
137
+ // 比较类型为 in
138
+ value[0].compare = dicts.SEARCH_COMPARE_TYPE__IN
139
+ // 设置值为将数组转为逗号分隔的字符串
140
+ value[0].value = $n_join(val, ',')
141
+
142
+ // 如果值是逗号隔开
143
+ } else if ($n_split(val, ',').length > 1) {
144
+ // 比较类型为 in
145
+ value[0].compare = dicts.SEARCH_COMPARE_TYPE__IN
146
+ // 设置值为将数组转为逗号分隔的字符串
147
+ value[0].value = val
148
+
149
+ // 否则为单个值
150
+ } else {
151
+ // 比较类型为 ==
152
+ value[0].compare = dicts.SEARCH_COMPARE_TYPE__EQUAL
153
+ // 设置值为当前值
154
+ value[0].value = val
155
+ }
156
+ }
157
+
158
+ /**
159
+ * 格式化单个比较条件
160
+ */
161
+ function formatItemValueCompare(value, { compareOptions1 }) {
162
+
163
+ // 获取第一个值
164
+ const value1 = value[0]
165
+
166
+ // 如果值1 的比较条件不在值1 的限制范围内
167
+ if ($n_findIndex(compareOptions1, { value: value1.compare }) === -1) {
168
+ // 则取比较条件中的第一个
169
+ value1.compare = compareOptions1[0].value
170
+ }
171
+
172
+ // 如果比较类型不为 in / not in
173
+ if ($n_indexOf([ dicts.SEARCH_COMPARE_TYPE__IN, dicts.SEARCH_COMPARE_TYPE__NOT_IN ], value1.compare) === -1) {
174
+ // 如果值中含有逗号
175
+ const arr = $n_split(value1.value, ',')
176
+ if (arr.length > 1) {
177
+ value1.value = arr[0]
178
+ }
179
+ }
180
+
181
+ // 如果值1 比较类型为 >
182
+ if (value1.compare === dicts.SEARCH_COMPARE_TYPE__GT) {
183
+ // 则修改值2 类型为 <
184
+ value[1].compare = dicts.SEARCH_COMPARE_TYPE__LT
185
+
186
+ // 如果值1 比较类型为 >=
187
+ } else if (value1.compare === dicts.SEARCH_COMPARE_TYPE__GTE) {
188
+ // 则修改值2 类型为 <=
189
+ value[1].compare = dicts.SEARCH_COMPARE_TYPE__LTE
190
+ }
191
+ }
192
+
193
+ /**
194
+ * 从表格列获取原始值
195
+ */
196
+ export function getRawData(tableColumns, query, searchFromQuery = true) {
197
+
198
+ // 原始参数
199
+ const rawQuery = {}
200
+ // 原始表格搜索参数
201
+ const rawSearchOptions = []
202
+ // 原始表格搜索值(空表格搜索值, 用于搜索重置)
203
+ const rawTableSearchValue = []
204
+ // 首次表格搜索值(如果表格搜索参数中带了初始值, 则设置初始值)
205
+ const firstTableSearchValue = []
206
+
207
+ // 搜索参数键值数组
208
+ const searchQueryKey = []
209
+
210
+ $n_forEach(tableColumns, function (item) {
211
+ if ($n_has(item, 'search.type')) {
212
+
213
+ // 【设置原始表格搜索参数】
214
+ // --------------------------------------------------
215
+
216
+ // 搜索参数
217
+ const newItem = $n_merge({
218
+ // 标签
219
+ label: item.label,
220
+ }, item.search)
221
+
222
+ // 标识
223
+ newItem.name = $n_has(newItem, 'name') ? newItem.name : item.name
224
+
225
+ // 如果有字典标识
226
+ if ($n_has(item, 'dict')) {
227
+ newItem.dict = item.dict
228
+ }
229
+
230
+ // 设置单个比较条件
231
+ setItemCompare(newItem)
232
+
233
+ // 原始表格搜索参数
234
+ rawSearchOptions.push(newItem)
235
+
236
+ // 【原始表格搜索值】
237
+ // --------------------------------------------------
238
+
239
+ let value = [
240
+ // 值1
241
+ {
242
+ // 比较类型
243
+ compare: COMPARE_TYPE_MAPS[newItem.type],
244
+ // 值
245
+ value: '',
246
+ },
247
+ // 值2
248
+ {
249
+ // 比较类型
250
+ compare: dicts.SEARCH_COMPARE_TYPE__LT,
251
+ // 值
252
+ value: '',
253
+ },
254
+ ]
255
+
256
+ // 如果是日期
257
+ if (newItem.type === 'date') {
258
+ // 设置日期类型
259
+ value[0].dateType = 'day'
260
+ }
261
+
262
+ // 添加原始表格搜索值
263
+ rawTableSearchValue.push($n_cloneDeep(value))
264
+
265
+ if (
266
+ // 如果开启从参数中获取搜索值
267
+ searchFromQuery
268
+ // 如果在传参中有搜索参数
269
+ && $n_has(query, newItem.name)
270
+ ) {
271
+ // 如果有值
272
+ if ($n_isRequired(query[newItem.name])) {
273
+ // 设置单个搜索值
274
+ setItemValue(value, query[newItem.name])
275
+ }
276
+
277
+ // 设置参数中搜索的 key
278
+ searchQueryKey.push(newItem.name)
279
+
280
+ // 否则, 如果表格参数中有设置初始值
281
+ } else if (
282
+ $n_has(newItem, 'value')
283
+ && $n_isValidArray(newItem.value)
284
+ ) {
285
+ value = $n_merge([], value, newItem.value)
286
+ }
287
+
288
+ // 格式化单个值的比较条件
289
+ formatItemValueCompare(value, newItem)
290
+
291
+ // 首次初始表格搜索值
292
+ firstTableSearchValue.push(value)
293
+ }
294
+ })
295
+
296
+ if (searchQueryKey.length) {
297
+ $n_forIn(query, function(val, key) {
298
+ if (searchQueryKey.indexOf(key) === -1) {
299
+ rawQuery[key] = val
300
+ }
301
+ })
302
+ } else {
303
+ Object.assign(rawQuery, query)
304
+ }
305
+
306
+ return {
307
+ // 原始参数
308
+ rawQuery,
309
+ // 原始表格搜索参数
310
+ rawSearchOptions,
311
+ // 原始表格搜索值(空表格搜索值, 用于搜索重置)
312
+ rawTableSearchValue,
313
+ // 首次表格搜索值(如果表格搜索参数中带了初始值, 则设置初始值)
314
+ firstTableSearchValue,
315
+ }
316
+ }
317
+
318
+ /**
319
+ * 获取参数
320
+ */
321
+ export async function getOptions(rawSearchOptions, format) {
322
+
323
+ const lists = []
324
+
325
+ if ($n_isValidArray(rawSearchOptions)) {
326
+ for (const item of rawSearchOptions) {
327
+
328
+ const newItem = Object.assign({}, item)
329
+
330
+ // 格式化单个参数
331
+ if ($n_isFunction(format)) {
332
+ const res = await $n_runAsync(format)(newItem)
333
+ if ($n_isValidObject(res)) {
334
+ $n_merge(newItem, res)
335
+ }
336
+ }
337
+
338
+ // 如果有字典标识, 则一定是下拉菜单
339
+ if ($n_has(newItem, 'dict')) {
340
+ $n_merge(newItem, {
341
+ searchType: 'select',
342
+ select: {
343
+ options: $n_dictOptions(newItem.dict)
344
+ },
345
+ })
346
+
347
+ // 如果有下拉菜单选项
348
+ } else if ($n_has(newItem, 'select')) {
349
+ newItem.searchType = 'select'
350
+ newItem.select = Object.assign({
351
+ options: [],
352
+ }, newItem.select)
353
+
354
+ // 如果下拉选项是方法
355
+ if ($n_isFunction(newItem.select.options)) {
356
+ // 读取下拉选项
357
+ newItem.select.options = await $n_runAsync(newItem.select.options)()
358
+ }
359
+
360
+ // 如果有树选项(调用的是 <n-field-tree> 组件)
361
+ } else if ($n_has(newItem, 'tree')) {
362
+ newItem.searchType = 'tree'
363
+ newItem.tree = Object.assign({
364
+ nodes: [],
365
+ accordion: true,
366
+ clearable: true,
367
+ }, newItem.tree)
368
+
369
+ // 如果有表格选项(调用的是 <n-field-table.md> 组件)
370
+ } else if ($n_has(newItem, 'table')) {
371
+ newItem.searchType = 'table'
372
+ newItem.table = Object.assign({
373
+ // 值字段(必填)
374
+ valueKey: newItem.name,
375
+ // 是否可清除
376
+ clearable: true,
377
+ // 是否开启筛选
378
+ filter: true,
379
+ }, newItem.table)
380
+
381
+ // 否则为输入框
382
+ } else {
383
+ newItem.searchType = 'input'
384
+ newItem.input = Object.assign({}, newItem.input)
385
+ }
386
+
387
+ lists.push(newItem)
388
+ }
389
+ }
390
+
391
+ return lists
392
+ }
393
+
394
+ /**
395
+ * 格式化值
396
+ */
397
+ export function formatValue(rawSearchOptions, searchValue) {
398
+
399
+ const lists = []
400
+
401
+ $n_forEach(rawSearchOptions, function ({ name, type }, itemIndex) {
402
+
403
+ // 添加值1
404
+ function addValue1(value1) {
405
+
406
+ // 如果有值1
407
+ if ($n_isRequired(value1.value)) {
408
+
409
+ // 如果值1 类型为 in / not in
410
+ if ($n_indexOf([dicts.SEARCH_COMPARE_TYPE__IN, dicts.SEARCH_COMPARE_TYPE__NOT_IN], value1.compare) > -1) {
411
+
412
+ const vals = []
413
+
414
+ const values = $n_isArray(value1.value) ? value1.value : $n_split($n_replaceAll($n_trimString(value1.value), ',', ','), ',')
415
+ $n_forEach(values, function (item) {
416
+ item = $n_numberDeep(item)
417
+ if ($n_isValidValue(item)) {
418
+ vals.push(item)
419
+ }
420
+ })
421
+
422
+ if (vals.length) {
423
+ lists.push({
424
+ field: name,
425
+ compare: value1.compare,
426
+ value: vals,
427
+ })
428
+ }
429
+ return
430
+ }
431
+
432
+ // 否则添加值1
433
+ lists.push({
434
+ field: name,
435
+ compare: value1.compare,
436
+ value: $n_numberDeep(value1.value),
437
+ })
438
+ }
439
+ }
440
+
441
+ // 第一个值
442
+ const value1 = searchValue[itemIndex][0]
443
+
444
+ // 如果是文字
445
+ if (type === 'text') {
446
+ // 添加值1
447
+ addValue1(value1)
448
+
449
+ // 否则为数字
450
+ } else {
451
+
452
+ if (
453
+ // 如果是日期
454
+ type === 'date'
455
+ // 如果类型为快捷日期
456
+ && value1.compare >= 20
457
+ ) {
458
+ const res = getQuickRange(value1.compare - 20, true)
459
+ if (res) {
460
+
461
+ lists.push(
462
+ // 日期起
463
+ {
464
+ field: name,
465
+ // ≥
466
+ compare: dicts.SEARCH_COMPARE_TYPE__GTE,
467
+ value: $n_numberDeep(quasarDate.formatDate($n_toDate(`${res.date.from} ${res.time.from}`), 'X')),
468
+ },
469
+ // 日期止
470
+ {
471
+ field: name,
472
+ // ≤
473
+ compare: dicts.SEARCH_COMPARE_TYPE__LTE,
474
+ value: $n_numberDeep(quasarDate.formatDate($n_toDate(`${res.date.to} ${res.time.to}`), 'X')),
475
+ }
476
+ )
477
+ }
478
+ return
479
+ }
480
+
481
+ // 添加值1
482
+ addValue1(value1)
483
+
484
+ // 只有值1 类型为 > / ≥ 值2才有效
485
+ if ($n_indexOf([dicts.SEARCH_COMPARE_TYPE__GT, dicts.SEARCH_COMPARE_TYPE__GTE], value1.compare) > -1) {
486
+ const value2 = searchValue[itemIndex][1]
487
+ if ($n_isValidValue(value2.value)) {
488
+ lists.push({
489
+ field: name,
490
+ compare: value2.compare,
491
+ value: $n_numberDeep(value2.value),
492
+ })
493
+ }
494
+ }
495
+ }
496
+ })
497
+
498
+ return lists
499
+ }