@netang/quasar 0.2.30 → 0.2.32

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 (289) 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/dialog/index.vue +387 -387
  10. package/components/dragger/index.vue +203 -203
  11. package/components/drawer/index.vue +303 -303
  12. package/components/editor-code/index.vue +328 -328
  13. package/components/empty/index.vue +82 -82
  14. package/components/field-date/index.vue +860 -860
  15. package/components/field-date/methods.js +100 -100
  16. package/components/field-table/index.vue +1483 -1483
  17. package/components/field-text/index.vue +166 -166
  18. package/components/field-tree/index.vue +755 -755
  19. package/components/img/index.vue +279 -279
  20. package/components/input-number/index.vue +560 -560
  21. package/components/list-menu/index.vue +149 -149
  22. package/components/list-menu-item/index.vue +79 -79
  23. package/components/mixed-table/index.vue +532 -532
  24. package/components/mixed-table-splitter/index.vue +377 -377
  25. package/components/power-page/index.vue +96 -96
  26. package/components/price/index.vue +188 -188
  27. package/components/private/components/index.js +11 -11
  28. package/components/private/components/move-to-tree/index.vue +154 -154
  29. package/components/private/edit-power-data/index.vue +846 -846
  30. package/components/private/table-visible-columns-button/index.vue +114 -114
  31. package/components/render/index.vue +123 -123
  32. package/components/search/index.vue +231 -231
  33. package/components/search-item/index.vue +210 -210
  34. package/components/select/index.vue +177 -177
  35. package/components/splitter/index.vue +422 -422
  36. package/components/table/index.vue +513 -513
  37. package/components/table-column-fixed/index.vue +110 -110
  38. package/components/table-pagination/index.vue +192 -192
  39. package/components/table-summary/index.vue +107 -107
  40. package/components/thumbnail/index.vue +72 -72
  41. package/components/toolbar/index.vue +150 -150
  42. package/components/tree/index.vue +1728 -1728
  43. package/components/tree/virtual-scroll.vue +41 -41
  44. package/components/uploader/index.vue +196 -196
  45. package/components/uploader-query/index.vue +945 -945
  46. package/components/value-format/index.vue +274 -274
  47. package/components/virtual-scroll/index.vue +136 -136
  48. package/configs/area3.js +1 -1
  49. package/docs/404.html +33 -33
  50. package/docs/assets/404.html-60b35caa.js +1 -1
  51. package/docs/assets/404.html-d1e63d77.js +1 -1
  52. package/docs/assets/alert.html-b2a2a72f.js +5 -5
  53. package/docs/assets/alert.html-ba46d137.js +1 -1
  54. package/docs/assets/app-9f30aa4b.js +6 -6
  55. package/docs/assets/area.html-01b9b58d.js +42 -42
  56. package/docs/assets/area.html-9a4fce6a.js +1 -1
  57. package/docs/assets/arr.html-145d27e7.js +1 -1
  58. package/docs/assets/arr.html-674e65ab.js +11 -11
  59. package/docs/assets/auth.html-579fa830.js +1 -1
  60. package/docs/assets/auth.html-8544ed95.js +8 -8
  61. package/docs/assets/bus.html-c71254aa.js +1 -1
  62. package/docs/assets/bus.html-dc7d3d19.js +6 -6
  63. package/docs/assets/column-title.html-c735cb5a.js +3 -3
  64. package/docs/assets/column-title.html-e9316762.js +1 -1
  65. package/docs/assets/confirm.html-ddfdc27f.js +10 -10
  66. package/docs/assets/confirm.html-ef3e2bef.js +1 -1
  67. package/docs/assets/copy.html-d20345b6.js +1 -1
  68. package/docs/assets/copy.html-ef8c8571.js +13 -13
  69. package/docs/assets/data.html-6432175d.js +30 -30
  70. package/docs/assets/data.html-a3b05d5b.js +1 -1
  71. package/docs/assets/dialog.html-1f698e5a.js +1 -1
  72. package/docs/assets/dialog.html-62902b83.js +68 -68
  73. package/docs/assets/dialog.html-baea77c9.js +1 -1
  74. package/docs/assets/dialog.html-bb082fc4.js +1 -1
  75. package/docs/assets/dict.html-1311da3d.js +23 -23
  76. package/docs/assets/dict.html-b96fbf0c.js +1 -1
  77. package/docs/assets/dictOptions.html-7c4f40a5.js +1 -1
  78. package/docs/assets/dictOptions.html-fb99d175.js +5 -5
  79. package/docs/assets/dragger.html-668d3efa.js +1 -1
  80. package/docs/assets/dragger.html-749d585a.js +1 -1
  81. package/docs/assets/editor-code.html-6ab26ea9.js +1 -1
  82. package/docs/assets/editor-code.html-d196205d.js +1 -1
  83. package/docs/assets/empty.html-1c139131.js +1 -1
  84. package/docs/assets/empty.html-1e9c441d.js +1 -1
  85. package/docs/assets/field-date.html-069fdb13.js +1 -1
  86. package/docs/assets/field-date.html-ad204aa9.js +1 -1
  87. package/docs/assets/field-table.html-ce480f03.js +1 -1
  88. package/docs/assets/field-table.html-d9236160.js +1 -1
  89. package/docs/assets/field-text.html-7277c62f.js +1 -1
  90. package/docs/assets/field-text.html-ccb4cecf.js +1 -1
  91. package/docs/assets/field-tree.html-519bfb45.js +1 -1
  92. package/docs/assets/field-tree.html-fdc748d6.js +1 -1
  93. package/docs/assets/form.html-2b562c37.js +2 -2
  94. package/docs/assets/form.html-75104cd5.js +1 -1
  95. package/docs/assets/framework-204010b2.js +5 -5
  96. package/docs/assets/getData.html-990e3787.js +1 -1
  97. package/docs/assets/getData.html-bb72025f.js +34 -34
  98. package/docs/assets/getFile.html-42368004.js +1 -1
  99. package/docs/assets/getFile.html-99abd054.js +3 -3
  100. package/docs/assets/getImage.html-3429c5a1.js +1 -1
  101. package/docs/assets/getImage.html-4d886d83.js +3 -3
  102. package/docs/assets/getTime.html-7435f922.js +1 -1
  103. package/docs/assets/getTime.html-b37f49eb.js +20 -20
  104. package/docs/assets/img.html-7d1da657.js +1 -1
  105. package/docs/assets/img.html-fbea1105.js +1 -1
  106. package/docs/assets/index.html-1695dd7c.js +1 -1
  107. package/docs/assets/index.html-65a4aa67.js +1 -1
  108. package/docs/assets/index.html-7b98d5bd.js +1 -1
  109. package/docs/assets/index.html-c01f2648.js +1 -1
  110. package/docs/assets/input-number.html-0b250d2a.js +1 -1
  111. package/docs/assets/input-number.html-a8eb0378.js +1 -1
  112. package/docs/assets/list-menu-item.html-7f1b4611.js +1 -1
  113. package/docs/assets/list-menu-item.html-84ed5ab8.js +1 -1
  114. package/docs/assets/list-menu.html-28b4163f.js +1 -1
  115. package/docs/assets/list-menu.html-cb6ba95b.js +1 -1
  116. package/docs/assets/loading.html-dae9e39d.js +6 -6
  117. package/docs/assets/loading.html-dc74c9e6.js +1 -1
  118. package/docs/assets/notify.html-e6c4c514.js +1 -1
  119. package/docs/assets/notify.html-f2c4d914.js +8 -8
  120. package/docs/assets/power-page.html-32e02f82.js +1 -1
  121. package/docs/assets/power-page.html-485e77da.js +1 -1
  122. package/docs/assets/power.html-d258cc19.js +93 -93
  123. package/docs/assets/power.html-e490bd32.js +1 -1
  124. package/docs/assets/previewImage.html-6a6b4245.js +1 -1
  125. package/docs/assets/previewImage.html-c5b7e945.js +2 -2
  126. package/docs/assets/price.html-1882c548.js +19 -19
  127. package/docs/assets/price.html-94d3f5be.js +1 -1
  128. package/docs/assets/price.html-d213df0f.js +1 -1
  129. package/docs/assets/price.html-deaf880f.js +1 -1
  130. package/docs/assets/render.html-8efcbdd4.js +1 -1
  131. package/docs/assets/render.html-df228e38.js +1 -1
  132. package/docs/assets/rule.html-2cd57fc2.js +13 -13
  133. package/docs/assets/rule.html-61662001.js +1 -1
  134. package/docs/assets/ruleValid.html-04fe2552.js +1 -1
  135. package/docs/assets/ruleValid.html-e0a776af.js +14 -14
  136. package/docs/assets/search-0782d0d1.svg +1 -1
  137. package/docs/assets/search-item.html-3f75394c.js +1 -1
  138. package/docs/assets/search-item.html-4e942ecd.js +1 -1
  139. package/docs/assets/search.html-2807043e.js +1 -1
  140. package/docs/assets/search.html-c24f8806.js +1 -1
  141. package/docs/assets/select.html-00d0607c.js +1 -1
  142. package/docs/assets/select.html-de7731f5.js +1 -1
  143. package/docs/assets/splitter.html-56f51a70.js +1 -1
  144. package/docs/assets/splitter.html-f5c836d7.js +1 -1
  145. package/docs/assets/style-161e43ab.css +1 -1
  146. package/docs/assets/symbols.html-a6aea4bf.js +1 -1
  147. package/docs/assets/symbols.html-b1f65bad.js +21 -21
  148. package/docs/assets/table-column-fixed.html-3a69e7b2.js +1 -1
  149. package/docs/assets/table-column-fixed.html-e763c38b.js +1 -1
  150. package/docs/assets/table-pagination.html-236934d3.js +1 -1
  151. package/docs/assets/table-pagination.html-c37ee2ac.js +1 -1
  152. package/docs/assets/table-splitter.html-07eab15c.js +1 -1
  153. package/docs/assets/table-splitter.html-7670ee65.js +1 -1
  154. package/docs/assets/table-summary.html-04db434f.js +1 -1
  155. package/docs/assets/table-summary.html-943c65a0.js +1 -1
  156. package/docs/assets/table.html-36253ad7.js +1 -1
  157. package/docs/assets/table.html-7f9c5d1b.js +38 -38
  158. package/docs/assets/table.html-93d53dc8.js +1 -1
  159. package/docs/assets/table.html-ac99b9cb.js +1 -1
  160. package/docs/assets/thumbnail.html-bab1976b.js +1 -1
  161. package/docs/assets/thumbnail.html-eb64e5e8.js +1 -1
  162. package/docs/assets/timestamp.html-4e54f79b.js +13 -13
  163. package/docs/assets/timestamp.html-d0e1b88a.js +1 -1
  164. package/docs/assets/toast.html-58ecbe21.js +1 -1
  165. package/docs/assets/toast.html-c9b9d36b.js +6 -6
  166. package/docs/assets/toolbar.html-83d9f97c.js +1 -1
  167. package/docs/assets/toolbar.html-ff7b8c92.js +1 -1
  168. package/docs/assets/tree.html-d07cbe79.js +23 -23
  169. package/docs/assets/tree.html-ea04193e.js +1 -1
  170. package/docs/assets/uploader-query.html-05590718.js +1 -1
  171. package/docs/assets/uploader-query.html-3175bac5.js +1 -1
  172. package/docs/assets/uploader.html-36da4394.js +2 -2
  173. package/docs/assets/uploader.html-6b5f3079.js +1 -1
  174. package/docs/assets/uploader.html-b9340b57.js +1 -1
  175. package/docs/assets/uploader.html-bc1c22e3.js +1 -1
  176. package/docs/assets/value-format.html-8ae3d47d.js +1 -1
  177. package/docs/assets/value-format.html-afa99b3d.js +1 -1
  178. package/docs/components/column-title.html +35 -35
  179. package/docs/components/data.html +62 -62
  180. package/docs/components/dialog.html +33 -33
  181. package/docs/components/dragger.html +33 -33
  182. package/docs/components/editor-code.html +33 -33
  183. package/docs/components/empty.html +33 -33
  184. package/docs/components/field-date.html +33 -33
  185. package/docs/components/field-table.html +33 -33
  186. package/docs/components/field-text.html +33 -33
  187. package/docs/components/field-tree.html +33 -33
  188. package/docs/components/img.html +33 -33
  189. package/docs/components/input-number.html +33 -33
  190. package/docs/components/list-menu-item.html +33 -33
  191. package/docs/components/list-menu.html +33 -33
  192. package/docs/components/power-page.html +33 -33
  193. package/docs/components/price.html +33 -33
  194. package/docs/components/render.html +33 -33
  195. package/docs/components/search-item.html +33 -33
  196. package/docs/components/search.html +33 -33
  197. package/docs/components/select.html +33 -33
  198. package/docs/components/splitter.html +33 -33
  199. package/docs/components/table-column-fixed.html +33 -33
  200. package/docs/components/table-pagination.html +33 -33
  201. package/docs/components/table-splitter.html +33 -33
  202. package/docs/components/table-summary.html +33 -33
  203. package/docs/components/table.html +33 -33
  204. package/docs/components/thumbnail.html +33 -33
  205. package/docs/components/toolbar.html +33 -33
  206. package/docs/components/uploader-query.html +33 -33
  207. package/docs/components/uploader.html +33 -33
  208. package/docs/components/value-format.html +33 -33
  209. package/docs/css/index.css +3 -3
  210. package/docs/index.html +33 -33
  211. package/docs/utils/alert.html +37 -37
  212. package/docs/utils/area.html +74 -74
  213. package/docs/utils/arr.html +43 -43
  214. package/docs/utils/auth.html +40 -40
  215. package/docs/utils/bus.html +38 -38
  216. package/docs/utils/confirm.html +42 -42
  217. package/docs/utils/copy.html +45 -45
  218. package/docs/utils/dialog.html +100 -100
  219. package/docs/utils/dict.html +55 -55
  220. package/docs/utils/dictOptions.html +37 -37
  221. package/docs/utils/form.html +34 -34
  222. package/docs/utils/getData.html +66 -66
  223. package/docs/utils/getFile.html +35 -35
  224. package/docs/utils/getImage.html +35 -35
  225. package/docs/utils/getTime.html +52 -52
  226. package/docs/utils/index.html +33 -33
  227. package/docs/utils/loading.html +38 -38
  228. package/docs/utils/notify.html +40 -40
  229. package/docs/utils/power.html +125 -125
  230. package/docs/utils/previewImage.html +34 -34
  231. package/docs/utils/price.html +51 -51
  232. package/docs/utils/rule.html +45 -45
  233. package/docs/utils/ruleValid.html +46 -46
  234. package/docs/utils/symbols.html +53 -53
  235. package/docs/utils/table.html +70 -70
  236. package/docs/utils/timestamp.html +45 -45
  237. package/docs/utils/toast.html +38 -38
  238. package/docs/utils/tree.html +55 -55
  239. package/docs/utils/uploader.html +34 -34
  240. package/package.json +25 -25
  241. package/sass/common.scss +184 -184
  242. package/sass/index.scss +12 -12
  243. package/sass/line.scss +39 -39
  244. package/sass/quasar/btn.scss +46 -46
  245. package/sass/quasar/common.scss +3 -3
  246. package/sass/quasar/drawer.scss +6 -6
  247. package/sass/quasar/field.scss +259 -259
  248. package/sass/quasar/loading.scss +6 -6
  249. package/sass/quasar/table.scss +168 -168
  250. package/sass/quasar/toolbar.scss +22 -22
  251. package/sass/variables.scss +140 -140
  252. package/store/index.js +29 -29
  253. package/utils/$auth.js +128 -128
  254. package/utils/$form.js +72 -72
  255. package/utils/$power.js +1494 -1492
  256. package/utils/$render.js +75 -75
  257. package/utils/$rule.js +13 -13
  258. package/utils/$ruleValid.js +10 -10
  259. package/utils/$search.js +416 -416
  260. package/utils/$table.js +1348 -1276
  261. package/utils/$tree.js +682 -682
  262. package/utils/alert.js +12 -12
  263. package/utils/area.js +400 -400
  264. package/utils/arr.js +51 -51
  265. package/utils/bus.js +6 -6
  266. package/utils/config.js +66 -66
  267. package/utils/confirm.js +11 -11
  268. package/utils/copy.js +30 -30
  269. package/utils/dialog.js +36 -36
  270. package/utils/dict.js +21 -21
  271. package/utils/dictOptions.js +28 -28
  272. package/utils/getData.js +88 -88
  273. package/utils/getFile.js +67 -67
  274. package/utils/getImage.js +276 -276
  275. package/utils/getTime.js +113 -113
  276. package/utils/index.js +67 -67
  277. package/utils/loading.js +15 -15
  278. package/utils/notify.js +13 -13
  279. package/utils/play.js +40 -40
  280. package/utils/previewImage.js +14 -14
  281. package/utils/price.js +18 -18
  282. package/utils/symbols.js +18 -18
  283. package/utils/timestamp.js +18 -18
  284. package/utils/toast.js +13 -13
  285. package/utils/uploader.js +2114 -2114
  286. package/utils/useAuth.js +30 -30
  287. package/utils/useFileUrl.js +26 -26
  288. package/utils/useRouter.js +47 -47
  289. package/utils/useSearch.js +562 -562
package/utils/$search.js CHANGED
@@ -1,416 +1,416 @@
1
- import { ref, inject } from 'vue'
2
-
3
- import $n_has from 'lodash/has'
4
- import $n_get from 'lodash/get'
5
- import $n_cloneDeep from 'lodash/cloneDeep'
6
- import $n_merge from 'lodash/merge'
7
- import $n_isFunction from 'lodash/isFunction'
8
- import $n_concat from 'lodash/concat'
9
-
10
- import $n_router from '@netang/utils/vue/router'
11
-
12
- import $n_forEach from '@netang/utils/forEach'
13
- import $n_isValidArray from '@netang/utils/isValidArray'
14
- import $n_isValidString from '@netang/utils/isValidString'
15
- import $n_indexOf from '@netang/utils/indexOf'
16
-
17
- import $n_isRequired from '@netang/utils/isRequired'
18
- import $n_forIn from '@netang/utils/forIn'
19
- import $n_runAsync from '@netang/utils/runAsync'
20
- import $n_isValidObject from '@netang/utils/isValidObject'
21
- import $n_http from '@netang/utils/http'
22
- import $n_run from '@netang/utils/run'
23
-
24
- import {
25
- // 从表格列获取原始值
26
- getRawData,
27
- // 获取参数
28
- getOptions,
29
- // 格式化值
30
- formatValue,
31
- } from './useSearch'
32
-
33
- import { NPowerKey } from './symbols'
34
-
35
- /**
36
- * 创建搜索
37
- */
38
- function create(options) {
39
-
40
- // ==========【数据】=================================================================================================
41
-
42
- // 原始参数
43
- const rawOptions = {
44
- // 路由路径
45
- path: '',
46
- // 请求地址(默认为 path)
47
- url: '',
48
- // 路由参数
49
- query: {},
50
- // 附加请求数据
51
- data: {},
52
- // 初始搜索加载状态
53
- loading: false,
54
- // 搜索列数据(对象数组)
55
- columns: [],
56
- // 自定义请求方法
57
- request: null,
58
- // 格式化单条数据
59
- formatRow: null,
60
- // http 设置
61
- httpSettings: {},
62
- // 从参数中获取搜索值
63
- searchFromQuery: true,
64
- // 请求成功执行
65
- requestSuccess: null,
66
- // 请求失败执行
67
- requestFail: null,
68
- // 请求后执行
69
- requestAfter: null,
70
- }
71
-
72
- let o
73
- let $power
74
- let hasPowr
75
- let $route
76
-
77
- // 表格加载状态
78
- let tableLoading
79
- // 表格请求参数(将表格传参中的搜索参数剥离掉, 剩下的直接当做参数传递给服务器)
80
- let tableRequestQuery
81
-
82
- // 原始参数
83
- let rawQuery
84
- // 原始表格搜索参数
85
- let rawSearchOptions
86
- // 原始表格搜索值(空表格搜索值, 用于搜索重置)
87
- let rawTableSearchValue
88
- // 首次表格搜索值(如果表格搜索参数中带了初始值, 则设置初始值)
89
- let firstTableSearchValue
90
-
91
- // 表格搜索数据值
92
- let tableSearchValue
93
- // 表格搜索参数
94
- let tableSearchOptions
95
- // 是否已加载
96
- let _isTableLoaded
97
-
98
- // 是否已生成数据
99
- let _isCreated = false
100
-
101
- // 创建表格
102
- reCreate(options)
103
-
104
- // 已生成数据
105
- _isCreated = true
106
-
107
- // ==========【方法】================================================================================================
108
-
109
- /**
110
- * 重新创建表格
111
- */
112
- function reCreate(options) {
113
-
114
- // 获取参数
115
- o = $n_merge({}, rawOptions, options)
116
-
117
- // 获取权限注入
118
- $power = $n_has(options, '$power') ? options.$power : (_isCreated ? $power : inject(NPowerKey))
119
- hasPowr = !! $power
120
-
121
- // 获取权限路由
122
- $route = $n_isValidString(o.path) ?
123
- // 如果为自定义路由
124
- $n_router.resolve({
125
- path: o.path,
126
- query: $n_isValidObject(o.query) ? o.query : {},
127
- })
128
- // 否则获取当前路由
129
- : (hasPowr ? $power.getRoute() : $n_router.getRoute())
130
-
131
- // 表格列
132
- const _tableColumns = []
133
-
134
- // 设置表格列数据
135
- // 设置列参数
136
- $n_forEach(o.columns, function(item) {
137
-
138
- // 是否隐藏
139
- item.hide = $n_get(item, 'hide') === true
140
-
141
- // 如果有路由
142
- if ($n_get(item, 'route')) {
143
- // 如果该值在当前路由路径中, 则显示
144
- if ($n_indexOf($route.fullPath, item.route) > -1) {
145
- _tableColumns.push(item)
146
- }
147
-
148
- } else {
149
- _tableColumns.push(item)
150
- }
151
- })
152
-
153
- // 获取原始数据
154
- const r = getRawData(_tableColumns, Object.assign({}, $route.query), o.searchFromQuery)
155
- // 原始参数
156
- rawQuery = r.rawQuery
157
- // 原始表格搜索参数
158
- rawSearchOptions = r.rawSearchOptions
159
- // 原始表格搜索值(空表格搜索值, 用于搜索重置)
160
- rawTableSearchValue = r.rawTableSearchValue
161
- // 首次表格搜索值(如果表格搜索参数中带了初始值, 则设置初始值)
162
- firstTableSearchValue = r.firstTableSearchValue
163
-
164
- // 表格搜索数据值
165
- const _tableSearchValue = $route.fullPath ? firstTableSearchValue : []
166
-
167
- if (_isCreated) {
168
-
169
- // 表格加载状态
170
- tableLoading.value = o.loading
171
-
172
- // 表格搜索数据值
173
- tableSearchValue.value = _tableSearchValue
174
-
175
- // 表格搜索参数
176
- tableSearchOptions.value = null
177
-
178
- } else {
179
-
180
- // 表格加载状态
181
- tableLoading = ref(o.loading)
182
-
183
- // 表格搜索数据值
184
- tableSearchValue = ref(_tableSearchValue)
185
-
186
- // 表格搜索参数
187
- tableSearchOptions = ref(null)
188
- }
189
-
190
- // 表格请求参数(将表格传参中的搜索参数剥离掉, 剩下的直接当做参数传递给服务器)
191
- tableRequestQuery = {}
192
-
193
- // 是否已加载
194
- _isTableLoaded = false
195
-
196
- // 设置表格搜索参数
197
- setTableSearchOptions()
198
- .finally()
199
-
200
- if (_isCreated) {
201
-
202
- // 重新赋值
203
- Object.assign(resTable, {
204
- // 当前路由全路径
205
- routeFullPath: $route.fullPath,
206
- // 当前路由路径
207
- routePath: $route.path,
208
- // 当前路由参数
209
- routeQuery: $route.query,
210
- })
211
- }
212
- }
213
-
214
- // ==========【方法】================================================================================================
215
-
216
- /**
217
- * 表格是否已加载
218
- */
219
- function isTableLoaded() {
220
- return _isTableLoaded
221
- }
222
-
223
- /**
224
- * 表格加载(只加载一次)
225
- */
226
- async function tableLoad() {
227
-
228
- // 如果表格已加载过了
229
- if (_isTableLoaded) {
230
- // 则无任何操作
231
- return
232
- }
233
-
234
- // 表格重新加载
235
- await tableReload()
236
- }
237
-
238
- /**
239
- * 表格重新加载
240
- */
241
- async function tableReload() {
242
-
243
- // 表格已加载
244
- _isTableLoaded = true
245
-
246
- if (! $route.fullPath) {
247
- return
248
- }
249
-
250
- // 请求表格数据
251
- return await tableRequest()
252
- }
253
-
254
- /**
255
- * 表格搜索重置
256
- */
257
- function tableSearchReset(reload = true) {
258
-
259
- const newValue = []
260
-
261
- $n_forEach(rawSearchOptions, function (item, index) {
262
- // 如果该搜索条件是隐藏的
263
- if (item.hide) {
264
- newValue.push(tableSearchValue.value[index])
265
- // 否则为初始值
266
- } else {
267
- newValue.push(rawTableSearchValue[index])
268
- }
269
- })
270
-
271
- // 还原表格搜索数据
272
- tableSearchValue.value = $n_cloneDeep(newValue)
273
-
274
- // 表格重新加载
275
- if (reload) {
276
- tableReload().finally()
277
- }
278
- }
279
-
280
- /**
281
- * 获取表格请求数据
282
- */
283
- function getTableRequestData() {
284
-
285
- // 请求数据
286
- const data = {}
287
-
288
- // 合并参数
289
- $n_forIn(Object.assign({}, rawQuery, tableRequestQuery, o.data), function(value, key) {
290
- // 如果有值
291
- if ($n_isRequired(value)) {
292
- data[key] = value
293
- }
294
- })
295
-
296
- // 获取搜索值
297
- const search = formatValue(rawSearchOptions, tableSearchValue.value)
298
- if ($n_isValidArray(search)) {
299
- data.n_search = $n_has(data, 'n_search') ? $n_concat(data.n_search, search) : search
300
- }
301
-
302
- return data
303
- }
304
-
305
- /**
306
- * 请求数据
307
- */
308
- async function tableRequest() {
309
-
310
- // 加载
311
- tableLoading.value = true
312
-
313
- // http 请求参数
314
- const httpOptions = Object.assign({
315
- // 请求数据
316
- url: $n_isValidString(o.url) ? o.url : $route.path,
317
- // 请求数据
318
- data: getTableRequestData(),
319
- // ~~~~~~ 先开启防抖, 如果后期遇到表格加载不出来的情况, 再关闭防抖
320
- // 关闭防抖(允许重复请求)
321
- debounce: false,
322
- }, o.httpSettings)
323
-
324
- const e = $n_isFunction(o.request)
325
- // 如果有自定义请求方法
326
- ? await $n_runAsync(o.request)({
327
- // http 请求参数
328
- httpOptions,
329
- })
330
- // 否则请求服务器
331
- : await $n_http(httpOptions)
332
-
333
- // 取消加载
334
- tableLoading.value = false
335
-
336
- if (e.status) {
337
- // 请求成功执行
338
- $n_run(o.requestSuccess)(e)
339
- } else {
340
- // 请求失败执行
341
- $n_run(o.requestFail)(e)
342
- }
343
- // 请求后执行
344
- $n_run(o.requestAfter)(e)
345
- }
346
-
347
- /**
348
- * 设置表格搜索参数
349
- */
350
- async function setTableSearchOptions(format) {
351
- tableSearchOptions.value = await getOptions(rawSearchOptions, format)
352
- }
353
-
354
- /**
355
- * 是否有表格搜索值
356
- */
357
- function hasTableSearchValue() {
358
- return !! formatValue(rawSearchOptions, tableSearchValue.value).length
359
- }
360
-
361
- // ==========【返回】=================================================================================================
362
-
363
- const resTable = {
364
- // 当前路由全路径
365
- routeFullPath: $route.fullPath,
366
- // 当前路由路径
367
- routePath: $route.path,
368
- // 当前路由参数
369
- routeQuery: $route.query,
370
-
371
- // 搜索加载状态
372
- searchLoading: tableLoading,
373
-
374
- // 搜索数据
375
- searchValue: tableSearchValue,
376
- // 搜索参数
377
- searchOptions: tableSearchOptions,
378
-
379
- // 搜索是否已加载
380
- isSearchLoaded: isTableLoaded,
381
- // 搜索加载(只加载一次)
382
- searchLoad: tableLoad,
383
- // 表格重新加载
384
- searchReload: tableReload,
385
- // 搜索重置
386
- searchReset: tableSearchReset,
387
- // 获取搜索请求数据
388
- getSearchRequestData: getTableRequestData,
389
- // 搜索请求数据
390
- searchRequest: tableRequest,
391
- // 设置搜索参数
392
- setSearchOptions: setTableSearchOptions,
393
-
394
- // 是否有搜索值
395
- hasSearchValue: hasTableSearchValue,
396
-
397
- // 获取当前路由
398
- getRoute() {
399
- return $route
400
- },
401
- // 重新创建搜索
402
- reCreate,
403
- }
404
-
405
- return resTable
406
- }
407
-
408
- /**
409
- * 业务搜索
410
- */
411
- const $search = {
412
- // 创建搜索
413
- create,
414
- }
415
-
416
- export default $search
1
+ import { ref, inject } from 'vue'
2
+
3
+ import $n_has from 'lodash/has'
4
+ import $n_get from 'lodash/get'
5
+ import $n_cloneDeep from 'lodash/cloneDeep'
6
+ import $n_merge from 'lodash/merge'
7
+ import $n_isFunction from 'lodash/isFunction'
8
+ import $n_concat from 'lodash/concat'
9
+
10
+ import $n_router from '@netang/utils/vue/router'
11
+
12
+ import $n_forEach from '@netang/utils/forEach'
13
+ import $n_isValidArray from '@netang/utils/isValidArray'
14
+ import $n_isValidString from '@netang/utils/isValidString'
15
+ import $n_indexOf from '@netang/utils/indexOf'
16
+
17
+ import $n_isRequired from '@netang/utils/isRequired'
18
+ import $n_forIn from '@netang/utils/forIn'
19
+ import $n_runAsync from '@netang/utils/runAsync'
20
+ import $n_isValidObject from '@netang/utils/isValidObject'
21
+ import $n_http from '@netang/utils/http'
22
+ import $n_run from '@netang/utils/run'
23
+
24
+ import {
25
+ // 从表格列获取原始值
26
+ getRawData,
27
+ // 获取参数
28
+ getOptions,
29
+ // 格式化值
30
+ formatValue,
31
+ } from './useSearch'
32
+
33
+ import { NPowerKey } from './symbols'
34
+
35
+ /**
36
+ * 创建搜索
37
+ */
38
+ function create(options) {
39
+
40
+ // ==========【数据】=================================================================================================
41
+
42
+ // 原始参数
43
+ const rawOptions = {
44
+ // 路由路径
45
+ path: '',
46
+ // 请求地址(默认为 path)
47
+ url: '',
48
+ // 路由参数
49
+ query: {},
50
+ // 附加请求数据
51
+ data: {},
52
+ // 初始搜索加载状态
53
+ loading: false,
54
+ // 搜索列数据(对象数组)
55
+ columns: [],
56
+ // 自定义请求方法
57
+ request: null,
58
+ // 格式化单条数据
59
+ formatRow: null,
60
+ // http 设置
61
+ httpSettings: {},
62
+ // 从参数中获取搜索值
63
+ searchFromQuery: true,
64
+ // 请求成功执行
65
+ requestSuccess: null,
66
+ // 请求失败执行
67
+ requestFail: null,
68
+ // 请求后执行
69
+ requestAfter: null,
70
+ }
71
+
72
+ let o
73
+ let $power
74
+ let hasPowr
75
+ let $route
76
+
77
+ // 表格加载状态
78
+ let tableLoading
79
+ // 表格请求参数(将表格传参中的搜索参数剥离掉, 剩下的直接当做参数传递给服务器)
80
+ let tableRequestQuery
81
+
82
+ // 原始参数
83
+ let rawQuery
84
+ // 原始表格搜索参数
85
+ let rawSearchOptions
86
+ // 原始表格搜索值(空表格搜索值, 用于搜索重置)
87
+ let rawTableSearchValue
88
+ // 首次表格搜索值(如果表格搜索参数中带了初始值, 则设置初始值)
89
+ let firstTableSearchValue
90
+
91
+ // 表格搜索数据值
92
+ let tableSearchValue
93
+ // 表格搜索参数
94
+ let tableSearchOptions
95
+ // 是否已加载
96
+ let _isTableLoaded
97
+
98
+ // 是否已生成数据
99
+ let _isCreated = false
100
+
101
+ // 创建表格
102
+ reCreate(options)
103
+
104
+ // 已生成数据
105
+ _isCreated = true
106
+
107
+ // ==========【方法】================================================================================================
108
+
109
+ /**
110
+ * 重新创建表格
111
+ */
112
+ function reCreate(options) {
113
+
114
+ // 获取参数
115
+ o = $n_merge({}, rawOptions, options)
116
+
117
+ // 获取权限注入
118
+ $power = $n_has(options, '$power') ? options.$power : (_isCreated ? $power : inject(NPowerKey))
119
+ hasPowr = !! $power
120
+
121
+ // 获取权限路由
122
+ $route = $n_isValidString(o.path) ?
123
+ // 如果为自定义路由
124
+ $n_router.resolve({
125
+ path: o.path,
126
+ query: $n_isValidObject(o.query) ? o.query : {},
127
+ })
128
+ // 否则获取当前路由
129
+ : (hasPowr ? $power.getRoute() : $n_router.getRoute())
130
+
131
+ // 表格列
132
+ const _tableColumns = []
133
+
134
+ // 设置表格列数据
135
+ // 设置列参数
136
+ $n_forEach(o.columns, function(item) {
137
+
138
+ // 是否隐藏
139
+ item.hide = $n_get(item, 'hide') === true
140
+
141
+ // 如果有路由
142
+ if ($n_get(item, 'route')) {
143
+ // 如果该值在当前路由路径中, 则显示
144
+ if ($n_indexOf($route.fullPath, item.route) > -1) {
145
+ _tableColumns.push(item)
146
+ }
147
+
148
+ } else {
149
+ _tableColumns.push(item)
150
+ }
151
+ })
152
+
153
+ // 获取原始数据
154
+ const r = getRawData(_tableColumns, Object.assign({}, $route.query), o.searchFromQuery)
155
+ // 原始参数
156
+ rawQuery = r.rawQuery
157
+ // 原始表格搜索参数
158
+ rawSearchOptions = r.rawSearchOptions
159
+ // 原始表格搜索值(空表格搜索值, 用于搜索重置)
160
+ rawTableSearchValue = r.rawTableSearchValue
161
+ // 首次表格搜索值(如果表格搜索参数中带了初始值, 则设置初始值)
162
+ firstTableSearchValue = r.firstTableSearchValue
163
+
164
+ // 表格搜索数据值
165
+ const _tableSearchValue = $route.fullPath ? firstTableSearchValue : []
166
+
167
+ if (_isCreated) {
168
+
169
+ // 表格加载状态
170
+ tableLoading.value = o.loading
171
+
172
+ // 表格搜索数据值
173
+ tableSearchValue.value = _tableSearchValue
174
+
175
+ // 表格搜索参数
176
+ tableSearchOptions.value = null
177
+
178
+ } else {
179
+
180
+ // 表格加载状态
181
+ tableLoading = ref(o.loading)
182
+
183
+ // 表格搜索数据值
184
+ tableSearchValue = ref(_tableSearchValue)
185
+
186
+ // 表格搜索参数
187
+ tableSearchOptions = ref(null)
188
+ }
189
+
190
+ // 表格请求参数(将表格传参中的搜索参数剥离掉, 剩下的直接当做参数传递给服务器)
191
+ tableRequestQuery = {}
192
+
193
+ // 是否已加载
194
+ _isTableLoaded = false
195
+
196
+ // 设置表格搜索参数
197
+ setTableSearchOptions()
198
+ .finally()
199
+
200
+ if (_isCreated) {
201
+
202
+ // 重新赋值
203
+ Object.assign(resTable, {
204
+ // 当前路由全路径
205
+ routeFullPath: $route.fullPath,
206
+ // 当前路由路径
207
+ routePath: $route.path,
208
+ // 当前路由参数
209
+ routeQuery: $route.query,
210
+ })
211
+ }
212
+ }
213
+
214
+ // ==========【方法】================================================================================================
215
+
216
+ /**
217
+ * 表格是否已加载
218
+ */
219
+ function isTableLoaded() {
220
+ return _isTableLoaded
221
+ }
222
+
223
+ /**
224
+ * 表格加载(只加载一次)
225
+ */
226
+ async function tableLoad() {
227
+
228
+ // 如果表格已加载过了
229
+ if (_isTableLoaded) {
230
+ // 则无任何操作
231
+ return
232
+ }
233
+
234
+ // 表格重新加载
235
+ await tableReload()
236
+ }
237
+
238
+ /**
239
+ * 表格重新加载
240
+ */
241
+ async function tableReload() {
242
+
243
+ // 表格已加载
244
+ _isTableLoaded = true
245
+
246
+ if (! $route.fullPath) {
247
+ return
248
+ }
249
+
250
+ // 请求表格数据
251
+ return await tableRequest()
252
+ }
253
+
254
+ /**
255
+ * 表格搜索重置
256
+ */
257
+ function tableSearchReset(reload = true) {
258
+
259
+ const newValue = []
260
+
261
+ $n_forEach(rawSearchOptions, function (item, index) {
262
+ // 如果该搜索条件是隐藏的
263
+ if (item.hide) {
264
+ newValue.push(tableSearchValue.value[index])
265
+ // 否则为初始值
266
+ } else {
267
+ newValue.push(rawTableSearchValue[index])
268
+ }
269
+ })
270
+
271
+ // 还原表格搜索数据
272
+ tableSearchValue.value = $n_cloneDeep(newValue)
273
+
274
+ // 表格重新加载
275
+ if (reload) {
276
+ tableReload().finally()
277
+ }
278
+ }
279
+
280
+ /**
281
+ * 获取表格请求数据
282
+ */
283
+ function getTableRequestData() {
284
+
285
+ // 请求数据
286
+ const data = {}
287
+
288
+ // 合并参数
289
+ $n_forIn(Object.assign({}, rawQuery, tableRequestQuery, o.data), function(value, key) {
290
+ // 如果有值
291
+ if ($n_isRequired(value)) {
292
+ data[key] = value
293
+ }
294
+ })
295
+
296
+ // 获取搜索值
297
+ const search = formatValue(rawSearchOptions, tableSearchValue.value)
298
+ if ($n_isValidArray(search)) {
299
+ data.n_search = $n_has(data, 'n_search') ? $n_concat(data.n_search, search) : search
300
+ }
301
+
302
+ return data
303
+ }
304
+
305
+ /**
306
+ * 请求数据
307
+ */
308
+ async function tableRequest() {
309
+
310
+ // 加载
311
+ tableLoading.value = true
312
+
313
+ // http 请求参数
314
+ const httpOptions = Object.assign({
315
+ // 请求数据
316
+ url: $n_isValidString(o.url) ? o.url : $route.path,
317
+ // 请求数据
318
+ data: getTableRequestData(),
319
+ // ~~~~~~ 先开启防抖, 如果后期遇到表格加载不出来的情况, 再关闭防抖
320
+ // 关闭防抖(允许重复请求)
321
+ debounce: false,
322
+ }, o.httpSettings)
323
+
324
+ const e = $n_isFunction(o.request)
325
+ // 如果有自定义请求方法
326
+ ? await $n_runAsync(o.request)({
327
+ // http 请求参数
328
+ httpOptions,
329
+ })
330
+ // 否则请求服务器
331
+ : await $n_http(httpOptions)
332
+
333
+ // 取消加载
334
+ tableLoading.value = false
335
+
336
+ if (e.status) {
337
+ // 请求成功执行
338
+ $n_run(o.requestSuccess)(e)
339
+ } else {
340
+ // 请求失败执行
341
+ $n_run(o.requestFail)(e)
342
+ }
343
+ // 请求后执行
344
+ $n_run(o.requestAfter)(e)
345
+ }
346
+
347
+ /**
348
+ * 设置表格搜索参数
349
+ */
350
+ async function setTableSearchOptions(format) {
351
+ tableSearchOptions.value = await getOptions(rawSearchOptions, format)
352
+ }
353
+
354
+ /**
355
+ * 是否有表格搜索值
356
+ */
357
+ function hasTableSearchValue() {
358
+ return !! formatValue(rawSearchOptions, tableSearchValue.value).length
359
+ }
360
+
361
+ // ==========【返回】=================================================================================================
362
+
363
+ const resTable = {
364
+ // 当前路由全路径
365
+ routeFullPath: $route.fullPath,
366
+ // 当前路由路径
367
+ routePath: $route.path,
368
+ // 当前路由参数
369
+ routeQuery: $route.query,
370
+
371
+ // 搜索加载状态
372
+ searchLoading: tableLoading,
373
+
374
+ // 搜索数据
375
+ searchValue: tableSearchValue,
376
+ // 搜索参数
377
+ searchOptions: tableSearchOptions,
378
+
379
+ // 搜索是否已加载
380
+ isSearchLoaded: isTableLoaded,
381
+ // 搜索加载(只加载一次)
382
+ searchLoad: tableLoad,
383
+ // 表格重新加载
384
+ searchReload: tableReload,
385
+ // 搜索重置
386
+ searchReset: tableSearchReset,
387
+ // 获取搜索请求数据
388
+ getSearchRequestData: getTableRequestData,
389
+ // 搜索请求数据
390
+ searchRequest: tableRequest,
391
+ // 设置搜索参数
392
+ setSearchOptions: setTableSearchOptions,
393
+
394
+ // 是否有搜索值
395
+ hasSearchValue: hasTableSearchValue,
396
+
397
+ // 获取当前路由
398
+ getRoute() {
399
+ return $route
400
+ },
401
+ // 重新创建搜索
402
+ reCreate,
403
+ }
404
+
405
+ return resTable
406
+ }
407
+
408
+ /**
409
+ * 业务搜索
410
+ */
411
+ const $search = {
412
+ // 创建搜索
413
+ create,
414
+ }
415
+
416
+ export default $search