@sugarat/easypicker2-client 2.4.3 → 2.6.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 (293) hide show
  1. package/dist/assets/aria-bc8e8b0f.js +2 -0
  2. package/dist/assets/aria-bc8e8b0f.js.map +1 -0
  3. package/dist/assets/aria-legacy.af0825d3.js +2 -0
  4. package/dist/assets/data-analysis-3ce8c1c1.js +2 -0
  5. package/dist/assets/data-analysis-3ce8c1c1.js.map +1 -0
  6. package/dist/assets/data-analysis-legacy.985137a1.js +2 -0
  7. package/dist/assets/data-board-fc2c2ec1.js +2 -0
  8. package/dist/assets/data-board-fc2c2ec1.js.map +1 -0
  9. package/dist/assets/data-board-legacy.33116f7c.js +2 -0
  10. package/dist/assets/el-date-picker-b377a533.js +2 -0
  11. package/dist/assets/el-date-picker-b377a533.js.map +1 -0
  12. package/dist/assets/el-date-picker-cf2e83b6.css +1 -0
  13. package/dist/assets/el-date-picker-legacy.127f0787.js +2 -0
  14. package/dist/assets/el-dialog-25bd2fb8.css +1 -0
  15. package/dist/assets/el-dialog-5b7bce58.js +2 -0
  16. package/dist/assets/el-dialog-5b7bce58.js.map +1 -0
  17. package/dist/assets/el-dialog-legacy.e6ef2c86.js +2 -0
  18. package/dist/assets/el-dropdown-item-0c6ddabc.css +1 -0
  19. package/dist/assets/el-dropdown-item-e0275106.js +2 -0
  20. package/dist/assets/el-dropdown-item-e0275106.js.map +1 -0
  21. package/dist/assets/el-dropdown-item-legacy.4888d114.js +2 -0
  22. package/dist/assets/el-form-item-3aad794a.css +1 -0
  23. package/dist/assets/el-form-item-c0658f70.js +2 -0
  24. package/dist/assets/el-form-item-c0658f70.js.map +1 -0
  25. package/dist/assets/el-form-item-legacy.a8e8784e.js +2 -0
  26. package/dist/assets/el-loading-c8798044.js +2 -0
  27. package/dist/assets/el-loading-c8798044.js.map +1 -0
  28. package/dist/assets/el-loading-d0f2d079.css +1 -0
  29. package/dist/assets/el-loading-legacy.534bd799.js +2 -0
  30. package/dist/assets/el-pagination-bf7c736d.css +1 -0
  31. package/dist/assets/el-pagination-dabcccbb.js +2 -0
  32. package/dist/assets/el-pagination-dabcccbb.js.map +1 -0
  33. package/dist/assets/el-pagination-legacy.7d2ae10d.js +2 -0
  34. package/dist/assets/el-progress-54b274cd.js +2 -0
  35. package/dist/assets/el-progress-54b274cd.js.map +1 -0
  36. package/dist/assets/el-progress-63aabe3a.css +1 -0
  37. package/dist/assets/el-progress-legacy.07ca6502.js +2 -0
  38. package/dist/assets/el-select-6be23320.css +1 -0
  39. package/dist/assets/el-select-f81a7377.js +2 -0
  40. package/dist/assets/el-select-f81a7377.js.map +1 -0
  41. package/dist/assets/el-select-legacy.94fad7fa.js +2 -0
  42. package/dist/assets/el-switch-9eba6fd0.js +2 -0
  43. package/dist/assets/el-switch-9eba6fd0.js.map +1 -0
  44. package/dist/assets/el-switch-aeab2c6b.css +1 -0
  45. package/dist/assets/el-switch-legacy.490534be.js +2 -0
  46. package/dist/assets/el-tab-pane-4a1bb4c7.css +1 -0
  47. package/dist/assets/el-tab-pane-89bdd69b.js +2 -0
  48. package/dist/assets/el-tab-pane-89bdd69b.js.map +1 -0
  49. package/dist/assets/el-tab-pane-legacy.cfdbc441.js +2 -0
  50. package/dist/assets/el-table-column-6716308a.js +21 -0
  51. package/dist/assets/el-table-column-6716308a.js.map +1 -0
  52. package/dist/assets/el-table-column-6c2089f9.css +1 -0
  53. package/dist/assets/el-table-column-legacy.49685e5a.js +24 -0
  54. package/dist/assets/index-01e33329.css +1 -0
  55. package/dist/assets/index-0b0f29ec.js +2 -0
  56. package/dist/assets/index-0b0f29ec.js.map +1 -0
  57. package/dist/assets/index-17c6005d.css +1 -0
  58. package/dist/assets/index-20019c57.js +2 -0
  59. package/dist/assets/index-20019c57.js.map +1 -0
  60. package/dist/assets/index-247f2c67.css +1 -0
  61. package/dist/assets/index-248e88e2.js +2 -0
  62. package/dist/assets/index-248e88e2.js.map +1 -0
  63. package/dist/assets/index-3091894a.css +1 -0
  64. package/dist/assets/index-37e15bc6.css +1 -0
  65. package/dist/assets/index-39637d43.js +2 -0
  66. package/dist/assets/index-39637d43.js.map +1 -0
  67. package/dist/assets/index-3f82ab7a.css +1 -0
  68. package/dist/assets/index-4c81cf78.css +1 -0
  69. package/dist/assets/index-5099f123.js +2 -0
  70. package/dist/assets/index-5099f123.js.map +1 -0
  71. package/dist/assets/index-57513f17.css +1 -0
  72. package/dist/assets/index-76f31e30.css +1 -0
  73. package/dist/assets/index-76ff9b9b.css +1 -0
  74. package/dist/assets/index-8557974a.js +2 -0
  75. package/dist/assets/index-8557974a.js.map +1 -0
  76. package/dist/assets/index-85fcd87a.css +1 -0
  77. package/dist/assets/index-867d07e4.js +2 -0
  78. package/dist/assets/index-867d07e4.js.map +1 -0
  79. package/dist/assets/index-8f353d3b.js +2 -0
  80. package/dist/assets/index-8f353d3b.js.map +1 -0
  81. package/dist/assets/index-8f7abc30.js +2 -0
  82. package/dist/assets/index-8f7abc30.js.map +1 -0
  83. package/dist/assets/index-8fbd06a5.js +2 -0
  84. package/dist/assets/index-8fbd06a5.js.map +1 -0
  85. package/dist/assets/index-93c733b3.css +1 -0
  86. package/dist/assets/index-98b55468.css +1 -0
  87. package/dist/assets/index-9e6bd406.js +2 -0
  88. package/dist/assets/index-9e6bd406.js.map +1 -0
  89. package/dist/assets/index-a880597c.css +1 -0
  90. package/dist/assets/index-acdbf3b6.js +2 -0
  91. package/dist/assets/index-acdbf3b6.js.map +1 -0
  92. package/dist/assets/index-b3e58b02.js +2 -0
  93. package/dist/assets/index-b3e58b02.js.map +1 -0
  94. package/dist/assets/index-c13133c5.js +2 -0
  95. package/dist/assets/index-c13133c5.js.map +1 -0
  96. package/dist/assets/index-c1d6836c.js +2 -0
  97. package/dist/assets/index-c1d6836c.js.map +1 -0
  98. package/dist/assets/index-d26aeed5.css +1 -0
  99. package/dist/assets/index-d98be3e4.js +19 -0
  100. package/dist/assets/index-d98be3e4.js.map +1 -0
  101. package/dist/assets/index-d9db6cc1.js +2 -0
  102. package/dist/assets/index-d9db6cc1.js.map +1 -0
  103. package/dist/assets/index-da51da36.css +1 -0
  104. package/dist/assets/index-e0ef7135.js +2 -0
  105. package/dist/assets/index-e0ef7135.js.map +1 -0
  106. package/dist/assets/index-e7d8a83e.css +1 -0
  107. package/dist/assets/index-ebf625c9.js +2 -0
  108. package/dist/assets/index-ebf625c9.js.map +1 -0
  109. package/dist/assets/index-eda7d85a.js +2 -0
  110. package/dist/assets/index-eda7d85a.js.map +1 -0
  111. package/dist/assets/index-fdc557f8.js +2 -0
  112. package/dist/assets/index-fdc557f8.js.map +1 -0
  113. package/dist/assets/index-legacy.0c570346.js +2 -0
  114. package/dist/assets/index-legacy.24edddf9.js +2 -0
  115. package/dist/assets/index-legacy.31681402.js +2 -0
  116. package/dist/assets/index-legacy.3e6b32cf.js +2 -0
  117. package/dist/assets/index-legacy.4edc099d.js +2 -0
  118. package/dist/assets/index-legacy.614df679.js +2 -0
  119. package/dist/assets/index-legacy.6420d0ab.js +2 -0
  120. package/dist/assets/index-legacy.679e5ce1.js +2 -0
  121. package/dist/assets/index-legacy.7b42e0cb.js +2 -0
  122. package/dist/assets/index-legacy.7bafa2e6.js +2 -0
  123. package/dist/assets/index-legacy.7ff3d773.js +2 -0
  124. package/dist/assets/index-legacy.84e0eca9.js +2 -0
  125. package/dist/assets/index-legacy.9ca64f8c.js +2 -0
  126. package/dist/assets/index-legacy.a4371211.js +2 -0
  127. package/dist/assets/index-legacy.acb8b137.js +23 -0
  128. package/dist/assets/index-legacy.bc3790f6.js +2 -0
  129. package/dist/assets/index-legacy.d0e21cb1.js +2 -0
  130. package/dist/assets/index-legacy.daf56c8f.js +2 -0
  131. package/dist/assets/index-legacy.e12feae0.js +2 -0
  132. package/dist/assets/index-legacy.e7f8790c.js +2 -0
  133. package/dist/assets/index-legacy.f84efe08.js +2 -0
  134. package/dist/assets/isEqual-82bb65ad.js +2 -0
  135. package/dist/assets/isEqual-82bb65ad.js.map +1 -0
  136. package/dist/assets/isEqual-legacy.dbaa2a6e.js +2 -0
  137. package/dist/assets/other-8d7ba6a0.js +2 -0
  138. package/dist/assets/other-8d7ba6a0.js.map +1 -0
  139. package/dist/assets/other-legacy.39078796.js +2 -0
  140. package/dist/assets/polyfills-legacy.99e38685.js +4 -0
  141. package/dist/assets/refresh-f2c4c532.js +2 -0
  142. package/dist/assets/refresh-f2c4c532.js.map +1 -0
  143. package/dist/assets/refresh-legacy.0ee83ca1.js +2 -0
  144. package/dist/assets/tip-3d272885.js +2 -0
  145. package/dist/assets/tip-3d272885.js.map +1 -0
  146. package/dist/assets/tip-9cb18ee8.css +1 -0
  147. package/dist/assets/tip-legacy.dee89e85.js +2 -0
  148. package/dist/assets/validator-d4ea1237.js +2 -0
  149. package/dist/assets/validator-d4ea1237.js.map +1 -0
  150. package/dist/assets/validator-legacy.ecd1e5dd.js +2 -0
  151. package/{index.html → dist/index.html} +8 -1
  152. package/package.json +30 -19
  153. package/.env +0 -6
  154. package/.env.production +0 -3
  155. package/.env.test +0 -4
  156. package/.eslintignore +0 -0
  157. package/.eslintrc.json +0 -57
  158. package/.github/workflows/main.yml +0 -61
  159. package/.prettierrc.js +0 -9
  160. package/auto-imports.d.ts +0 -6
  161. package/components.d.ts +0 -56
  162. package/docker/ep_backup/easypicker2.sql +0 -214
  163. package/docker/ep_backup/mongodb/easypicker2/action.bson +0 -0
  164. package/docker/ep_backup/mongodb/easypicker2/action.metadata.json +0 -1
  165. package/docker/ep_backup/mongodb/easypicker2/log.bson +0 -0
  166. package/docker/ep_backup/mongodb/easypicker2/log.metadata.json +0 -1
  167. package/docker/ep_backup/user-config.json +0 -176
  168. package/docs/.env +0 -1
  169. package/docs/.env.production +0 -2
  170. package/docs/.vitepress/config.ts +0 -204
  171. package/docs/.vitepress/theme/bg.png +0 -0
  172. package/docs/.vitepress/theme/index.scss +0 -41
  173. package/docs/.vitepress/theme/index.ts +0 -5
  174. package/docs/author.md +0 -24
  175. package/docs/auto-imports.d.ts +0 -6
  176. package/docs/components.d.ts +0 -17
  177. package/docs/deploy/design/api.md +0 -3
  178. package/docs/deploy/design/db.md +0 -3
  179. package/docs/deploy/design/index.md +0 -3
  180. package/docs/deploy/design/shell.md +0 -9
  181. package/docs/deploy/faq.md +0 -86
  182. package/docs/deploy/index.md +0 -9
  183. package/docs/deploy/local.md +0 -275
  184. package/docs/deploy/online-new.md +0 -610
  185. package/docs/deploy/online.md +0 -683
  186. package/docs/deploy/qiniu.md +0 -183
  187. package/docs/index.md +0 -40
  188. package/docs/introduction/about/code.md +0 -26
  189. package/docs/introduction/about/index.md +0 -33
  190. package/docs/introduction/feature/index.md +0 -3
  191. package/docs/plan/log.md +0 -346
  192. package/docs/plan/todo.md +0 -127
  193. package/docs/plan/wish.md +0 -29
  194. package/docs/praise/index.md +0 -45
  195. package/docs/public/robots.txt +0 -2
  196. package/docs/src/apis/ajax.ts +0 -66
  197. package/docs/src/apis/index.ts +0 -1
  198. package/docs/src/apis/modules/wish.ts +0 -20
  199. package/docs/src/components/Avatar.vue +0 -60
  200. package/docs/src/components/Home.vue +0 -85
  201. package/docs/src/components/Picture.vue +0 -13
  202. package/docs/src/components/Praise.vue +0 -52
  203. package/docs/src/components/WishBtn.vue +0 -98
  204. package/docs/src/components/WishPanel.vue +0 -170
  205. package/docs/src/components/callme/index.vue +0 -72
  206. package/docs/vite.config.ts +0 -42
  207. package/public/favicon.ico +0 -0
  208. package/public/logo.png +0 -0
  209. package/scripts/deploy/docs.mjs +0 -24
  210. package/scripts/deploy/prod.mjs +0 -24
  211. package/scripts/deploy/test.mjs +0 -26
  212. package/src/@types/ajax.d.ts +0 -5
  213. package/src/@types/api.d.ts +0 -305
  214. package/src/@types/lib.d.ts +0 -26
  215. package/src/@types/page.d.ts +0 -18
  216. package/src/App.vue +0 -36
  217. package/src/apis/ajax.ts +0 -72
  218. package/src/apis/index.ts +0 -20
  219. package/src/apis/modules/action.ts +0 -17
  220. package/src/apis/modules/category.ts +0 -20
  221. package/src/apis/modules/config.ts +0 -19
  222. package/src/apis/modules/file.ts +0 -150
  223. package/src/apis/modules/people.ts +0 -81
  224. package/src/apis/modules/public.ts +0 -49
  225. package/src/apis/modules/super/overview.ts +0 -56
  226. package/src/apis/modules/super/user.ts +0 -62
  227. package/src/apis/modules/task.ts +0 -67
  228. package/src/apis/modules/user.ts +0 -56
  229. package/src/apis/modules/wish.ts +0 -31
  230. package/src/assets/i/EasyPicker.png +0 -0
  231. package/src/assets/logo.png +0 -0
  232. package/src/assets/styles/app.css +0 -69
  233. package/src/components/HomeFooter/index.vue +0 -134
  234. package/src/components/HomeHeader/index.vue +0 -156
  235. package/src/components/InfosForm/index.vue +0 -73
  236. package/src/components/MessageList/index.vue +0 -155
  237. package/src/components/MessagePanel/index.vue +0 -46
  238. package/src/components/Praise/index.vue +0 -102
  239. package/src/components/QrCode.vue +0 -44
  240. package/src/components/linkDialog.vue +0 -104
  241. package/src/components/loginPanel.vue +0 -92
  242. package/src/constants/index.ts +0 -83
  243. package/src/env.d.ts +0 -8
  244. package/src/main.ts +0 -19
  245. package/src/pages/404/index.vue +0 -59
  246. package/src/pages/about/index.vue +0 -152
  247. package/src/pages/callme/index.vue +0 -155
  248. package/src/pages/dashboard/config/index.vue +0 -304
  249. package/src/pages/dashboard/files/index.vue +0 -1152
  250. package/src/pages/dashboard/index.vue +0 -335
  251. package/src/pages/dashboard/manage/config/index.vue +0 -97
  252. package/src/pages/dashboard/manage/index.vue +0 -105
  253. package/src/pages/dashboard/manage/overview/index.vue +0 -486
  254. package/src/pages/dashboard/manage/user/index.vue +0 -678
  255. package/src/pages/dashboard/manage/wish/index.vue +0 -257
  256. package/src/pages/dashboard/tasks/components/CategoryPanel.vue +0 -208
  257. package/src/pages/dashboard/tasks/components/CreateTask.vue +0 -93
  258. package/src/pages/dashboard/tasks/components/TaskInfo.vue +0 -129
  259. package/src/pages/dashboard/tasks/components/infoPanel/ddl.vue +0 -96
  260. package/src/pages/dashboard/tasks/components/infoPanel/file.vue +0 -175
  261. package/src/pages/dashboard/tasks/components/infoPanel/info.vue +0 -467
  262. package/src/pages/dashboard/tasks/components/infoPanel/people.vue +0 -566
  263. package/src/pages/dashboard/tasks/components/infoPanel/template.vue +0 -146
  264. package/src/pages/dashboard/tasks/components/infoPanel/tip.vue +0 -55
  265. package/src/pages/dashboard/tasks/components/infoPanel/tipInfo.vue +0 -196
  266. package/src/pages/dashboard/tasks/index.vue +0 -302
  267. package/src/pages/dashboard/tasks/public.ts +0 -32
  268. package/src/pages/disabled/index.vue +0 -47
  269. package/src/pages/feedback/index.vue +0 -5
  270. package/src/pages/home/index.vue +0 -72
  271. package/src/pages/login/index.vue +0 -270
  272. package/src/pages/register/index.vue +0 -211
  273. package/src/pages/reset/index.vue +0 -186
  274. package/src/pages/task/index.vue +0 -895
  275. package/src/pages/wish/index.vue +0 -152
  276. package/src/router/Interceptor/index.ts +0 -112
  277. package/src/router/index.ts +0 -13
  278. package/src/router/routes/index.ts +0 -197
  279. package/src/shims-vue.d.ts +0 -6
  280. package/src/store/index.ts +0 -17
  281. package/src/store/modules/category.ts +0 -44
  282. package/src/store/modules/public.ts +0 -27
  283. package/src/store/modules/task.ts +0 -55
  284. package/src/store/modules/user.ts +0 -57
  285. package/src/utils/elementUI.ts +0 -8
  286. package/src/utils/networkUtil.ts +0 -236
  287. package/src/utils/other.ts +0 -25
  288. package/src/utils/regExp.ts +0 -11
  289. package/src/utils/stringUtil.ts +0 -241
  290. package/tsconfig.json +0 -24
  291. package/vite.config.ts +0 -55
  292. /package/{docs/public → dist}/favicon.ico +0 -0
  293. /package/{docs/public → dist}/logo.png +0 -0
@@ -1,236 +0,0 @@
1
- import { base64 } from './stringUtil'
2
-
3
- /* eslint-disable no-restricted-syntax */
4
- type SuccessCallback = (data: any) => void
5
- export function jsonp(
6
- url: string,
7
- jsonpCallback: string,
8
- success: SuccessCallback
9
- ) {
10
- const $script = document.createElement('script')
11
- $script.src = `${url}&callback=${jsonpCallback}`
12
- $script.async = true
13
- $script.type = 'text/javascript'
14
- ;(<any>window)[jsonpCallback] = function callback(data: any) {
15
- if (success) {
16
- success(data)
17
- }
18
- }
19
- document.body.appendChild($script)
20
- }
21
-
22
- interface UploadFileOptions {
23
- success?: any
24
- error?: any
25
- process?: any
26
- method?: string
27
- }
28
- export function uploadFile(
29
- file: File,
30
- url: string,
31
- options?: UploadFileOptions
32
- ) {
33
- const form = new FormData()
34
- // ajax对象
35
- const xhr = new XMLHttpRequest()
36
- // 添加文件到表单中
37
- form.append('file', file)
38
- // 设置请求方式 路径 是否异步
39
- xhr.open(options?.method || 'post', url, true)
40
- // 设置请求头参数的方式,如果没有可忽略此行代码
41
- xhr.setRequestHeader('token', localStorage.getItem('token') as string)
42
- if (options?.success) {
43
- // 上传完成
44
- xhr.onload = (e) => {
45
- const target = e?.currentTarget as any
46
- if (target.response) {
47
- options.success(JSON.parse(target.response))
48
- return
49
- }
50
- options.success()
51
- }
52
- }
53
- if (options?.error) {
54
- // 上传出错
55
- xhr.onerror = options.error
56
- }
57
- if (options?.process) {
58
- // 上传中
59
- xhr.onprogress = (e) => {
60
- const { total, loaded, lengthComputable } = e
61
- if (lengthComputable) {
62
- options.process((loaded / total).toFixed(2))
63
- }
64
- }
65
- }
66
-
67
- // 发送请求
68
- xhr.send(form)
69
- }
70
-
71
- export interface tableItem {
72
- value: string
73
- col?: number
74
- row?: number
75
- }
76
- /**
77
- * 导出表格数据为xls
78
- * @param headers 头部
79
- * @param body 身体部分数据
80
- */
81
- export function tableToExcel(
82
- headers: (string | tableItem)[],
83
- body: any[],
84
- filename = 'res.xlsx'
85
- ) {
86
- // 列标题
87
- let str = `<tr>${headers
88
- .map((v) => {
89
- if (v instanceof Object) {
90
- const { value, col = 1, row = 1 } = v
91
- return `<th colspan="${col}" rowspan="${row}">${value}</th>`
92
- }
93
- return `<th>${v}</th>`
94
- })
95
- .join('')}</tr>`
96
- // 循环遍历,每行加入tr标签,每个单元格加td标签
97
- for (const row of body) {
98
- str += '<tr>'
99
- for (const cell of row) {
100
- if (cell instanceof Object) {
101
- const { value, col = 1, row = 1 } = cell
102
- str += `<td colspan="${col}" rowspan="${row}">${value}</td>`
103
- }
104
- // 增加\t为了不让表格显示科学计数法或者其他格式
105
- str += `<td>${`${cell}\t`}</td>`
106
- }
107
- str += '</tr>'
108
- }
109
-
110
- // Worksheet名
111
- // const worksheet = 'sheet1'
112
- // const uri = 'data:application/vnd.ms-excel;base64,'
113
-
114
- // // 下载的表格模板数据
115
- // const template =
116
- // '<html xmlns:o="urn:schemas-microsoft-com:office:office" \n' +
117
- // ' xmlns:x="urn:schemas-microsoft-com:office:excel" \n' +
118
- // ' xmlns="http://www.w3.org/TR/REC-html40">\n' +
119
- // ' <head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>\n' +
120
- // ` <x:Name>${worksheet}</x:Name>\n` +
121
- // ' <x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>\n' +
122
- // ' </x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->\n' +
123
- // ` </head><body><table>${str}</table></body></html>\n`
124
- // 下载模板
125
- // const tempA = document.createElement('a')
126
- // tempA.href = uri + base64(template)
127
- // tempA.download = filename
128
- // document.body.appendChild(tempA)
129
- // tempA.click()
130
- // document.body.removeChild(tempA)
131
- const tableElement = document.createElement('table')
132
- tableElement.innerHTML = str
133
- const wb = XLSX.utils.table_to_book(tableElement)
134
- XLSX.writeFile(wb, filename)
135
- }
136
-
137
- /**
138
- * 七牛云上传
139
- */
140
- export function qiniuUpload(
141
- token: string,
142
- file: File,
143
- key: string,
144
- options?: UploadFileOptions
145
- ) {
146
- const observable = qiniu.upload(file, key, token)
147
- const { success, error, process } = options || {}
148
- const subscription = observable.subscribe({
149
- next(res) {
150
- const {
151
- total: { percent }
152
- } = res
153
- if (process) {
154
- process(percent.toFixed(2), res, subscription)
155
- }
156
- },
157
- error(err) {
158
- if (error) {
159
- error(err, subscription)
160
- }
161
- },
162
- complete(res) {
163
- if (success) {
164
- success(res, subscription)
165
- }
166
- }
167
- })
168
- // subscription.close() // 取消上传
169
- }
170
-
171
- export function downLoadByUrl(url: string, filename = `${Date.now()}`) {
172
- const a = document.createElement('a')
173
- a.href = url
174
- a.target = '_blank'
175
- a.download = filename
176
- a.click()
177
- }
178
-
179
- /**
180
- * 解决图片被预览的问题
181
- * @param url
182
- * @param filename
183
- */
184
- export function downLoadByXhr(
185
- url: string,
186
- filename = `${Date.now()}`,
187
- options?: {
188
- progress: (loaded: number, total: number) => void
189
- success: (res) => void
190
- }
191
- ) {
192
- const { progress, success } = options || {}
193
- const xhr = new XMLHttpRequest()
194
- xhr.open('GET', url)
195
- // 设置返回数据的类型为blob
196
- xhr.responseType = 'blob'
197
-
198
- // 增加的代码
199
- xhr.onprogress = function (e) {
200
- const { total, loaded } = e
201
- if (typeof progress === 'function') {
202
- progress(loaded, total)
203
- }
204
- }
205
-
206
- // 资源完成下载
207
- xhr.onload = function () {
208
- let name = filename
209
- // 获取响应的blob对象
210
- const blob = xhr.response
211
- const a = document.createElement('a')
212
- // 设置下载的文件名字
213
- name = name || blob.name || 'download'
214
- a.download = name
215
-
216
- // 解决安全问题,新页面的window.opener 指向前一个页面的window对象
217
- // 使用noopener使 window.opener 获取的值为null
218
- a.rel = 'noopener'
219
-
220
- // 创建一个DOMString指向这个blob
221
- // 简单理解就是为这个blob对象生成一个可访问的链接
222
- a.href = URL.createObjectURL(blob)
223
-
224
- // 40s后移除这个临时链接
225
- setTimeout(() => {
226
- URL.revokeObjectURL(a.href)
227
- }, 4e4) // 40s
228
- // 触发a标签,执行下载
229
- setTimeout(() => {
230
- a.dispatchEvent(new MouseEvent('click'))
231
- success(xhr)
232
- }, 0)
233
- }
234
- // 发送请求
235
- xhr.send()
236
- }
@@ -1,25 +0,0 @@
1
- /* eslint-disable prefer-rest-params */
2
- /* eslint-disable @typescript-eslint/no-this-alias */
3
- export function debounce(func, wait = 1000, immediate = false) {
4
- let timeout
5
- let count = 0
6
- return function () {
7
- count += 1
8
- const context = this
9
- const args = arguments
10
- const later = function () {
11
- timeout = null
12
- if (count > 0) {
13
- func.apply(context, args)
14
- count = 0
15
- }
16
- }
17
- const callNow = immediate && !timeout
18
- clearTimeout(timeout)
19
- timeout = setTimeout(later, wait)
20
- if (callNow) {
21
- func.apply(context, args)
22
- count = 0
23
- }
24
- }
25
- }
@@ -1,11 +0,0 @@
1
- // 手机号
2
- export const rMobilePhone = /^1\d{10}$/
3
-
4
- // 账号
5
- export const rAccount = /^(\d|[a-zA-Z]){4,11}$/
6
-
7
- // 密码 支持字母/数字/下划线(6-16)
8
- export const rPassword = /^\w{6,16}$/
9
-
10
- // 验证码
11
- export const rVerCode = /^\d{4}$/
@@ -1,241 +0,0 @@
1
- import { ElMessage } from 'element-plus'
2
- import SparkMD5 from 'spark-md5'
3
- import copy from 'clipboard-copy'
4
- import { jsonp } from './networkUtil'
5
- /**
6
- * 将结果写入的剪贴板
7
- * @param {String} text
8
- */
9
- export function copyRes(text: string, msg = '结果已成功复制到剪贴板') {
10
- // 自定义
11
- // const input = document.createElement('input')
12
- // document.body.appendChild(input)
13
- // input.setAttribute('value', text)
14
- // input.select()
15
- // if (document.execCommand('copy')) {
16
- // document.execCommand('copy')
17
- // }
18
- // document.body.removeChild(input)
19
-
20
- // 第三方
21
- copy(text)
22
- .then(() => {
23
- if (msg) {
24
- ElMessage.success(msg)
25
- }
26
- })
27
- .catch((err) => {
28
- ElMessage.error(err?.message || '无粘贴板权限')
29
- ElMessage.warning('不支持自动复制,请手动选择复制')
30
- })
31
- }
32
-
33
- /**
34
- * 生成短地址
35
- * @param url
36
- */
37
- export function getShortUrl(text: string): Promise<string> {
38
- return new Promise((resolve, reject) => {
39
- jsonp(
40
- `https://api.suowo.cn/api.htm?format=jsonp&url=${encodeURIComponent(
41
- text
42
- )}&key=5ec8a001be96bd79a37f19b8@bf33c7483d0c6900bb7bc90a0e6dfdf0&expireDate=2030-03-31&domain=0`,
43
- 'shortLink',
44
- (res) => {
45
- const { url, err } = res
46
- if (err) {
47
- reject(err)
48
- }
49
- resolve(url)
50
- }
51
- )
52
- })
53
- }
54
-
55
- export function base64(s: string) {
56
- return window.btoa(unescape(encodeURIComponent(s)))
57
- }
58
-
59
- export function formatDate(d: Date, fmt = 'yyyy-MM-dd hh:mm:ss') {
60
- if (!(d instanceof Date)) {
61
- d = new Date(d)
62
- }
63
- const o: any = {
64
- 'M+': d.getMonth() + 1, // 月份
65
- 'd+': d.getDate(), // 日
66
- 'h+': d.getHours(), // 小时
67
- 'm+': d.getMinutes(), // 分
68
- 's+': d.getSeconds(), // 秒
69
- 'q+': Math.floor((d.getMonth() + 3) / 3), // 季度
70
- S: d.getMilliseconds() // 毫秒
71
- }
72
- if (/(y+)/.test(fmt)) {
73
- fmt = fmt.replace(
74
- RegExp.$1,
75
- `${d.getFullYear()}`.substr(4 - RegExp.$1.length)
76
- )
77
- }
78
- // eslint-disable-next-line no-restricted-syntax
79
- for (const k in o) {
80
- if (new RegExp(`(${k})`).test(fmt))
81
- fmt = fmt.replace(
82
- RegExp.$1,
83
- RegExp.$1.length === 1 ? o[k] : `00${o[k]}`.substr(`${o[k]}`.length)
84
- )
85
- }
86
- return fmt
87
- }
88
-
89
- export function getFileSuffix(str: string) {
90
- const startIndex = str.lastIndexOf('.')
91
- return startIndex >= 0 ? str.slice(startIndex) : ''
92
- }
93
-
94
- export function getFileMd5Hash(file: File) {
95
- return new Promise((resolve, reject) => {
96
- const blobSlice = File.prototype.slice
97
- const chunkSize = 2097152 // Read in chunks of 2MB
98
- const chunks = Math.ceil(file.size / chunkSize)
99
- let currentChunk = 0
100
- const spark = new SparkMD5.ArrayBuffer()
101
- const fileReader = new FileReader()
102
-
103
- function loadNext() {
104
- const start = currentChunk * chunkSize
105
- const end = start + chunkSize >= file.size ? file.size : start + chunkSize
106
-
107
- fileReader.readAsArrayBuffer(blobSlice.call(file, start, end))
108
- }
109
- fileReader.onload = function (e) {
110
- // console.log('read chunk nr', currentChunk + 1, 'of', chunks)
111
- spark.append(e?.target?.result) // Append array buffer
112
- currentChunk += 1
113
-
114
- if (currentChunk < chunks) {
115
- loadNext()
116
- } else {
117
- // console.log('finished loading')
118
- const hashResult = spark.end()
119
- // console.info('computed hash', hashResult) // Compute hash
120
- resolve(hashResult)
121
- }
122
- }
123
-
124
- fileReader.onerror = function () {
125
- reject(new Error('oops, something went wrong.'))
126
- }
127
-
128
- loadNext()
129
- })
130
- }
131
-
132
- export function formatSize(
133
- size: number,
134
- pointLength?: number,
135
- units?: string[]
136
- ) {
137
- let unit
138
- units = units || ['B', 'K', 'M', 'G', 'TB']
139
- // eslint-disable-next-line no-cond-assign
140
- while ((unit = units.shift()) && size > 1024) {
141
- size /= 1024
142
- }
143
- return (
144
- (unit === 'B'
145
- ? size
146
- : size.toFixed(pointLength === undefined ? 2 : pointLength)) + unit
147
- )
148
- }
149
-
150
- /**
151
- * 浏览器支持预览的类型
152
- */
153
- function getSupportPreviewType() {
154
- const types = [
155
- 'image/jpeg',
156
- 'image/png',
157
- 'image/gif',
158
- 'image/bmp',
159
- 'image/webp',
160
- 'image/svg+xml',
161
- 'application/pdf',
162
- 'text/plain',
163
- 'video/mp4'
164
- ]
165
- const supportTypes = []
166
- types.forEach((type) => {
167
- if (
168
- typeof FileReader !== 'undefined' &&
169
- typeof FileReader.prototype.readAsDataURL !== 'undefined'
170
- ) {
171
- const fileReader = new FileReader()
172
- if (fileReader.readAsDataURL) {
173
- try {
174
- fileReader.readAsDataURL(new Blob([new ArrayBuffer(1)], { type }))
175
- supportTypes.push(type)
176
- } catch (e) {
177
- // console.log(e)
178
- }
179
- }
180
- }
181
- })
182
- return supportTypes
183
- }
184
-
185
- export function isSupportPreview(type: string) {
186
- const supportTypes = getSupportPreviewType()
187
- return supportTypes.includes(type)
188
- }
189
-
190
- export function parseInfo(info: string): InfoItem[] {
191
- return JSON.parse(info).map((v: string | InfoItem) => {
192
- // 兼容旧表单数据
193
- if (typeof v === 'string') {
194
- return { type: 'input', text: v, value: '' }
195
- }
196
- // 兼容旧数据展示
197
- if (!v.type) {
198
- v.type = 'input'
199
- }
200
- v.value = v.value || ''
201
- return v
202
- })
203
- }
204
-
205
- /**
206
- * 文件名合法化
207
- */
208
- export function normalizeFileName(name: string) {
209
- return name.replace(/[\\/:*?"<>|]/g, '-')
210
- }
211
-
212
- export const getDefaultFormat = () => {
213
- return {
214
- size: 0,
215
- sizeUnit: 'MB',
216
- status: false,
217
- format: [],
218
- limit: 10,
219
- splitChar: '-'
220
- }
221
- }
222
- export function parseFileFormat(format: string) {
223
- const formatData = getDefaultFormat()
224
- try {
225
- const v = JSON.parse(format)
226
- Object.keys(v).forEach((key) => {
227
- formatData[key] = v[key] || formatData[key]
228
- })
229
- } catch (_) {
230
- return formatData
231
- }
232
- return formatData
233
- }
234
-
235
- export function getTipImageKey(
236
- key: string,
237
- name: string,
238
- uid?: number | string
239
- ) {
240
- return `easypicker2/tip/${key}/${uid || Date.now()}/${name}`
241
- }
package/tsconfig.json DELETED
@@ -1,24 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "esnext",
4
- "module": "esnext",
5
- "moduleResolution": "node",
6
- "strict": false,
7
- "jsx": "preserve",
8
- "sourceMap": true,
9
- "resolveJsonModule": true,
10
- "esModuleInterop": true,
11
- "allowJs": true,
12
- "lib": ["esnext", "dom"],
13
- "types": ["vite/client","node","element-plus/global"],
14
- "baseUrl": "./",
15
- "paths": {
16
- "@/*": [
17
- "src/*"
18
- ],
19
- "@components/":["src/components/*"]
20
- }
21
- },
22
- "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue", "docs/**/*.ts", "docs/**/*.d.ts"],
23
- "exclude": ["vite.config.ts"]
24
- }
package/vite.config.ts DELETED
@@ -1,55 +0,0 @@
1
- import { defineConfig } from 'vite'
2
- import vue from '@vitejs/plugin-vue'
3
- import path from 'path'
4
- import AutoImport from 'unplugin-auto-import/vite'
5
- import Components from 'unplugin-vue-components/vite'
6
- import ElementPlus from 'unplugin-element-plus/vite'
7
- import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
8
- import legacy from '@vitejs/plugin-legacy'
9
-
10
- // https://vitejs.dev/config/
11
- export default defineConfig({
12
- plugins: [
13
- legacy({
14
- targets: ['defaults', 'not IE 11']
15
- }),
16
- vue(),
17
- AutoImport({
18
- resolvers: [ElementPlusResolver()]
19
- }),
20
- Components({
21
- resolvers: [ElementPlusResolver()]
22
- })
23
- // ElementPlus({
24
- // defaultLocale: 'zh-cn'
25
- // })
26
- ],
27
- optimizeDeps: {
28
- include: ['vue', 'vue-router', 'vuex', 'axios', 'vue-json-viewer']
29
- },
30
- build: {
31
- target: 'modules', // 默认值
32
- sourcemap: true
33
- },
34
- server: {
35
- host: '0.0.0.0',
36
- proxy: {
37
- '/api/': {
38
- target: 'http://localhost:3000',
39
- changeOrigin: true,
40
- rewrite: (p) => p.replace(/^\/api/, '')
41
- },
42
- '/api-test/': {
43
- target: 'https://ep.dev.sugarat.top',
44
- changeOrigin: true,
45
- rewrite: (p) => p.replace(/^\/api-test/, 'api/')
46
- }
47
- }
48
- },
49
- resolve: {
50
- alias: {
51
- '@': path.resolve(__dirname, './src'),
52
- '@components': path.resolve(__dirname, './src/components')
53
- }
54
- }
55
- })
File without changes
File without changes