@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,486 +0,0 @@
1
- <template>
2
- <div class="overview">
3
- <div
4
- class="card-list"
5
- v-loading="isLoadingOverview"
6
- element-loading-text="Loading..."
7
- >
8
- <div v-for="c in cardList" :key="c.type" class="card">
9
- <div class="logo">
10
- <el-icon :color="c.color">
11
- <component :is="c.icon"></component>
12
- </el-icon>
13
- </div>
14
- <div class="content">
15
- <div class="title">{{ c.title }}</div>
16
- <div class="text">{{ c.value }}</div>
17
- <div class="supplement">{{ c.supplement }}</div>
18
- </div>
19
- </div>
20
- </div>
21
- <div class="panel">
22
- <div class="p10 log-filter">
23
- <span class="item">
24
- <span class="label">类型</span>
25
- <el-select
26
- v-model="filterLogType"
27
- size="default"
28
- placeholder="请选择日志类型"
29
- >
30
- <el-option
31
- v-for="(item, idx) in logTypeList"
32
- :key="idx"
33
- :label="item.label"
34
- :value="item.type"
35
- ></el-option>
36
- </el-select>
37
- </span>
38
- <span class="item">
39
- <el-input
40
- size="default"
41
- clearable
42
- placeholder="请输入要检索的内容"
43
- :prefix-icon="Search"
44
- v-model="searchWord"
45
- >
46
- </el-input>
47
- </span>
48
- <span class="item">
49
- <el-button size="default" :icon="Refresh" @click="refreshLogs"
50
- >刷新</el-button
51
- >
52
- </span>
53
- <span class="item">
54
- <el-button
55
- size="default"
56
- type="primary"
57
- :icon="DataAnalysis"
58
- @click="exportLogData"
59
- >导出日志 {{ logs.length }} 条</el-button
60
- >
61
- </span>
62
- <span class="item">
63
- <el-button
64
- size="default"
65
- type="danger"
66
- :icon="TakeawayBox"
67
- :disabled="disableDelete"
68
- @click="clearExpiredCompressFile"
69
- v-loading="disableDelete"
70
- >清理无效文件</el-button
71
- >
72
- </span>
73
- </div>
74
- <el-table
75
- tooltip-effect="dark"
76
- height="400"
77
- stripe
78
- border
79
- :default-sort="{ prop: 'date', order: 'descending' }"
80
- :data="logs"
81
- style="width: 100%"
82
- >
83
- <el-table-column sortable prop="date" label="日期" width="180">
84
- <template #default="scope">{{
85
- formatDate(new Date(scope.row.date))
86
- }}</template>
87
- </el-table-column>
88
- <!-- <el-table-column prop="type" label="类型" width="100">
89
- <template #default="scope">{{ getLogsTypeText(scope.row.type) }}</template>
90
- </el-table-column>-->
91
- <el-table-column
92
- sortable
93
- prop="ip"
94
- label="IP"
95
- width="100"
96
- ></el-table-column>
97
- <el-table-column
98
- min-width="160"
99
- prop="msg"
100
- label="内容"
101
- ></el-table-column>
102
- <el-table-column fixed="right" label="操作" width="100">
103
- <template #default="scope">
104
- <el-button
105
- @click="handleDetail(scope.row.id)"
106
- type="primary"
107
- text
108
- size="small"
109
- >查看详情</el-button
110
- >
111
- </template>
112
- </el-table-column>
113
- </el-table>
114
-
115
- <div class="flex fc p10">
116
- <el-pagination
117
- :current-page="pageCurrent"
118
- @current-change="handlePageChange"
119
- background
120
- :page-count="pageCount"
121
- :page-sizes="[10, 50, 100, 200, 500, 1000]"
122
- :page-size="pageSize"
123
- @size-change="handleSizeChange"
124
- :total="logSumCount"
125
- layout="total, sizes, prev, pager, next, jumper"
126
- ></el-pagination>
127
- </div>
128
- </div>
129
- <el-dialog
130
- v-model="showDetail"
131
- title="详细信息"
132
- width="50%"
133
- center
134
- :fullscreen="isMobile"
135
- >
136
- <json-viewer
137
- :value="jsonData"
138
- :expand-depth="5"
139
- copyable
140
- boxed
141
- sort
142
- ></json-viewer>
143
- <template #footer>
144
- <span class="dialog-footer">
145
- <el-button type="default" @click="handleCopyDetail">复制</el-button>
146
- <el-button type="primary" @click="showDetail = false">确定</el-button>
147
- </span>
148
- </template>
149
- </el-dialog>
150
- </div>
151
- </template>
152
- <script lang="ts" setup>
153
- import { computed, onMounted, reactive, ref, watchEffect } from 'vue'
154
- import {
155
- User,
156
- Document,
157
- Tickets,
158
- DataBoard,
159
- Search,
160
- Refresh,
161
- DataAnalysis,
162
- Coin,
163
- TakeawayBox
164
- } from '@element-plus/icons-vue'
165
- import { useStore } from 'vuex'
166
- import { ElMessage } from 'element-plus'
167
- import { SuperOverviewApi } from '@/apis'
168
- import { copyRes, formatDate } from '@/utils/stringUtil'
169
- import { tableToExcel } from '@/utils/networkUtil'
170
- import { debounce } from '@/utils/other'
171
-
172
- const $store = useStore()
173
-
174
- const isMobile = computed(() => $store.getters['public/isMobile'])
175
-
176
- const isLoadingOverview = ref(false)
177
- const cardList = reactive([
178
- {
179
- type: 'user',
180
- title: '用户数量',
181
- value: '0',
182
- supplement: '较昨日 +0',
183
- icon: User,
184
- color: '#40c9c6'
185
- },
186
- {
187
- type: 'file',
188
- title: '记录/OSS',
189
- value: '0',
190
- supplement: '记录较昨日 +0',
191
- icon: Document,
192
- color: '#36a3f7'
193
- },
194
- {
195
- type: 'log',
196
- title: '日志数量',
197
- value: '0',
198
- supplement: '较昨日 +0',
199
- icon: Tickets,
200
- color: '#f4516c'
201
- },
202
- {
203
- type: 'pv',
204
- title: 'PV/UV',
205
- value: '0/0',
206
- supplement: '',
207
- icon: DataBoard,
208
- color: '#34bfa3'
209
- },
210
- {
211
- type: 'compress',
212
- title: '归档&无效文件',
213
- value: '0/0KB',
214
- supplement: '已失效0个',
215
- icon: Coin,
216
- color: '#e38013'
217
- }
218
- ])
219
- // 刷新记录条数
220
- const refreshCount = () => {
221
- isLoadingOverview.value = true
222
- SuperOverviewApi.getCount().then((res) => {
223
- const { user, file, log, pv, compress } = res.data
224
- cardList[0].value = `${user.sum}`
225
- cardList[0].supplement = `较昨日 +${user.recent}`
226
- cardList[1].value = `${file.server.sum}/${file.oss.sum} (${file.oss.size})`
227
- cardList[1].supplement = `记录较昨日 +${file.server.recent}`
228
- cardList[2].value = `${log.sum}`
229
- cardList[2].supplement = `较昨日 +${log.recent}`
230
- cardList[3].value = `${pv.today.sum}/${pv.today.uv}`
231
- cardList[3].supplement = `历史: ${pv.all.sum}/${pv.all.uv}`
232
- cardList[4].value = `${compress.all.sum}/${compress.all.size}`
233
- cardList[4].supplement = `已失效 ${compress.expired.sum}/${compress.expired.size}`
234
- isLoadingOverview.value = false
235
- })
236
- }
237
-
238
- const disableDelete = ref(false)
239
- const clearExpiredCompressFile = () => {
240
- disableDelete.value = true
241
- SuperOverviewApi.clearExpiredCompressFile().then(() => {
242
- setTimeout(() => {
243
- ElMessage.success('清理成功,数据同步可能有延迟')
244
- disableDelete.value = false
245
- refreshCount()
246
- }, 2000)
247
- })
248
- }
249
-
250
- // 日志
251
- const logs: any[] = reactive([])
252
-
253
- // function getLogsTypeText(type: string) {
254
- // const logsTypeText: any = {
255
- // request: '网络请求',
256
- // behavior: '用户行为',
257
- // error: '错误',
258
- // pv: '页面访问',
259
- // }
260
- // return logsTypeText[type]
261
- // }
262
- // 筛选的日志
263
- const filterLogType = ref('behavior')
264
- const searchWord = ref('')
265
- const logTypeList = reactive([
266
- {
267
- label: '用户行为',
268
- type: 'behavior'
269
- },
270
- {
271
- label: '网络请求',
272
- type: 'request'
273
- },
274
- {
275
- label: '服务端错误',
276
- type: 'error'
277
- },
278
- {
279
- label: '页面访问',
280
- type: 'pv'
281
- }
282
- ])
283
-
284
- // 分页
285
- // 页大小
286
- const pageSize = ref(10)
287
- const handleSizeChange = (v: number) => {
288
- pageSize.value = v
289
- }
290
- // 总条数
291
- const logSumCount = ref(0)
292
- const pageCount = computed(() => {
293
- const t = Math.ceil(logSumCount.value / pageSize.value)
294
- return t
295
- })
296
- const pageCurrent = ref(1)
297
- const handlePageChange = (idx: number) => {
298
- pageCurrent.value = idx
299
- }
300
-
301
- const refreshLogs = debounce(
302
- () => {
303
- SuperOverviewApi.getLogMsg(
304
- pageSize.value,
305
- pageCurrent.value,
306
- filterLogType.value,
307
- searchWord.value
308
- ).then((res) => {
309
- logs.splice(0, logs.length)
310
- logs.push(...res.data.logs)
311
- logSumCount.value = res.data.sum
312
- })
313
- },
314
- 100,
315
- false
316
- )
317
-
318
- watchEffect(() => {
319
- if (filterLogType.value) {
320
- pageCurrent.value = 1
321
- }
322
- })
323
-
324
- watchEffect(() => {
325
- if (searchWord.value !== undefined) {
326
- refreshLogs()
327
- }
328
- })
329
-
330
- watchEffect(() => {
331
- if (filterLogType.value) {
332
- refreshLogs()
333
- }
334
- })
335
-
336
- watchEffect(() => {
337
- if (pageCurrent.value || pageSize.value) {
338
- refreshLogs()
339
- }
340
- })
341
-
342
- const showDetail = ref(false)
343
- const showData = ref('')
344
- const handleDetail = (id) => {
345
- SuperOverviewApi.getLogMsgDetail(id).then((res) => {
346
- showDetail.value = true
347
- showData.value = JSON.stringify(res.data, null, 2)
348
- })
349
- }
350
- const jsonData = computed(() => {
351
- try {
352
- return JSON.parse(showData.value)
353
- } catch (e) {
354
- return {}
355
- }
356
- })
357
- const handleCopyDetail = () => {
358
- copyRes(showData.value)
359
- }
360
-
361
- const exportLogData = () => {
362
- if (logs.length === 0) {
363
- return
364
- }
365
- const headers = ['日期', 'IP', '内容']
366
- const body = logs.map((v) => {
367
- const { date, ip, msg } = v
368
- return [formatDate(new Date(date)), ip, msg]
369
- })
370
- tableToExcel(
371
- headers,
372
- body,
373
- `导出日志_${logs.length}条${formatDate(
374
- new Date(),
375
- 'yyyy年MM月日hh时mm分ss秒'
376
- )}.xlsx`
377
- )
378
- ElMessage.success('导出成功')
379
- }
380
- onMounted(() => {
381
- refreshCount()
382
- })
383
- </script>
384
-
385
- <style scoped lang="scss">
386
- @media screen and (max-width: 700px) {
387
- .card-list {
388
- margin-top: 40px;
389
- }
390
-
391
- .card {
392
- min-width: 300px;
393
- }
394
-
395
- .log-filter {
396
- justify-content: center;
397
- }
398
- }
399
-
400
- .overview {
401
- margin: 0 auto;
402
- }
403
-
404
- .card-list {
405
- display: flex;
406
- margin-top: 20px;
407
- justify-content: center;
408
- flex-wrap: wrap;
409
- }
410
-
411
- .card {
412
- margin: 10px;
413
- cursor: pointer;
414
- font-size: 12px;
415
- position: relative;
416
- overflow: hidden;
417
- color: #666;
418
- background: #fff;
419
- box-shadow: 4px 4px 40px rgb(0 0 0 / 5%);
420
- border-color: rgba(0, 0, 0, 0.05);
421
- min-width: 300px;
422
-
423
- .logo {
424
- float: left;
425
- margin: 4px 10px 0 10px;
426
- -webkit-transition: all 0.38s ease-out;
427
- transition: all 0.38s ease-out;
428
- border-radius: 6px;
429
- font-size: 48px;
430
-
431
- i {
432
- padding: 10px;
433
- }
434
- }
435
-
436
- .content {
437
- float: right;
438
- font-weight: 700;
439
- margin: 10px;
440
- margin-left: 0;
441
-
442
- .title {
443
- line-height: 18px;
444
- color: rgba(0, 0, 0, 0.45);
445
- font-size: 14px;
446
- text-align: right;
447
- }
448
-
449
- .text {
450
- font-size: 16px;
451
- text-align: right;
452
- }
453
-
454
- .supplement {
455
- font-size: 12px;
456
- font-weight: lighter;
457
- text-align: right;
458
- }
459
- }
460
- }
461
-
462
- .panel {
463
- max-width: 1024px;
464
- padding: 1em;
465
- background-color: #fff;
466
- margin: 10px auto;
467
- box-sizing: border-box;
468
- box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
469
- border-radius: 4px;
470
- }
471
-
472
- .log-filter {
473
- display: flex;
474
- flex-wrap: wrap;
475
-
476
- .item {
477
- margin-right: 10px;
478
- margin-bottom: 10px;
479
-
480
- .label {
481
- margin-right: 10px;
482
- font-size: 12px;
483
- }
484
- }
485
- }
486
- </style>