@sugarat/easypicker2-client 2.4.3 → 2.6.1-beta.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-632af70e.js +2 -0
  5. package/dist/assets/data-analysis-632af70e.js.map +1 -0
  6. package/dist/assets/data-analysis-legacy.297ff95d.js +2 -0
  7. package/dist/assets/data-board-4290cade.js +2 -0
  8. package/dist/assets/data-board-4290cade.js.map +1 -0
  9. package/dist/assets/data-board-legacy.b3bf2f61.js +2 -0
  10. package/dist/assets/el-date-picker-b3398f8f.js +2 -0
  11. package/dist/assets/el-date-picker-b3398f8f.js.map +1 -0
  12. package/dist/assets/el-date-picker-cf2e83b6.css +1 -0
  13. package/dist/assets/el-date-picker-legacy.fd044c30.js +2 -0
  14. package/dist/assets/el-dialog-25bd2fb8.css +1 -0
  15. package/dist/assets/el-dialog-c11c4af2.js +2 -0
  16. package/dist/assets/el-dialog-c11c4af2.js.map +1 -0
  17. package/dist/assets/el-dialog-legacy.d2229175.js +2 -0
  18. package/dist/assets/el-dropdown-item-0c6ddabc.css +1 -0
  19. package/dist/assets/el-dropdown-item-3eb29c67.js +2 -0
  20. package/dist/assets/el-dropdown-item-3eb29c67.js.map +1 -0
  21. package/dist/assets/el-dropdown-item-legacy.60575f42.js +2 -0
  22. package/dist/assets/el-form-item-3aad794a.css +1 -0
  23. package/dist/assets/el-form-item-fb230be3.js +2 -0
  24. package/dist/assets/el-form-item-fb230be3.js.map +1 -0
  25. package/dist/assets/el-form-item-legacy.237ed4b6.js +2 -0
  26. package/dist/assets/el-loading-d0f2d079.css +1 -0
  27. package/dist/assets/el-loading-e9365e7e.js +2 -0
  28. package/dist/assets/el-loading-e9365e7e.js.map +1 -0
  29. package/dist/assets/el-loading-legacy.8045609e.js +2 -0
  30. package/dist/assets/el-pagination-85149e11.js +2 -0
  31. package/dist/assets/el-pagination-85149e11.js.map +1 -0
  32. package/dist/assets/el-pagination-bf7c736d.css +1 -0
  33. package/dist/assets/el-pagination-legacy.02ed0149.js +2 -0
  34. package/dist/assets/el-progress-63aabe3a.css +1 -0
  35. package/dist/assets/el-progress-b98becda.js +2 -0
  36. package/dist/assets/el-progress-b98becda.js.map +1 -0
  37. package/dist/assets/el-progress-legacy.1165db46.js +2 -0
  38. package/dist/assets/el-select-2a16e5df.js +2 -0
  39. package/dist/assets/el-select-2a16e5df.js.map +1 -0
  40. package/dist/assets/el-select-6be23320.css +1 -0
  41. package/dist/assets/el-select-legacy.5ccdd9a4.js +2 -0
  42. package/dist/assets/el-switch-abdd5a33.js +2 -0
  43. package/dist/assets/el-switch-abdd5a33.js.map +1 -0
  44. package/dist/assets/el-switch-aeab2c6b.css +1 -0
  45. package/dist/assets/el-switch-legacy.96786863.js +2 -0
  46. package/dist/assets/el-tab-pane-4a1bb4c7.css +1 -0
  47. package/dist/assets/el-tab-pane-db271c8d.js +2 -0
  48. package/dist/assets/el-tab-pane-db271c8d.js.map +1 -0
  49. package/dist/assets/el-tab-pane-legacy.143cbc33.js +2 -0
  50. package/dist/assets/el-table-column-19feeab8.js +21 -0
  51. package/dist/assets/el-table-column-19feeab8.js.map +1 -0
  52. package/dist/assets/el-table-column-6c2089f9.css +1 -0
  53. package/dist/assets/el-table-column-legacy.afba06f3.js +24 -0
  54. package/dist/assets/index-01e33329.css +1 -0
  55. package/dist/assets/index-0f83ff96.css +1 -0
  56. package/dist/assets/index-0fbe23b2.js +2 -0
  57. package/dist/assets/index-0fbe23b2.js.map +1 -0
  58. package/dist/assets/index-14d600a5.js +2 -0
  59. package/dist/assets/index-14d600a5.js.map +1 -0
  60. package/dist/assets/index-1639ad54.js +15 -0
  61. package/dist/assets/index-1639ad54.js.map +1 -0
  62. package/dist/assets/index-16b096cf.js +2 -0
  63. package/dist/assets/index-16b096cf.js.map +1 -0
  64. package/dist/assets/index-1bd2cd2e.js +2 -0
  65. package/dist/assets/index-1bd2cd2e.js.map +1 -0
  66. package/dist/assets/index-2c76567d.js +2 -0
  67. package/dist/assets/index-2c76567d.js.map +1 -0
  68. package/dist/assets/index-3091894a.css +1 -0
  69. package/dist/assets/index-34fd4f9f.css +1 -0
  70. package/dist/assets/index-37e15bc6.css +1 -0
  71. package/dist/assets/index-3f82ab7a.css +1 -0
  72. package/dist/assets/index-43d1d27e.js +2 -0
  73. package/dist/assets/index-43d1d27e.js.map +1 -0
  74. package/dist/assets/index-488b0f9e.js +2 -0
  75. package/dist/assets/index-488b0f9e.js.map +1 -0
  76. package/dist/assets/index-4b1f55ea.js +2 -0
  77. package/dist/assets/index-4b1f55ea.js.map +1 -0
  78. package/dist/assets/index-4c81cf78.css +1 -0
  79. package/dist/assets/index-51740dfd.js +2 -0
  80. package/dist/assets/index-51740dfd.js.map +1 -0
  81. package/dist/assets/index-5281fad0.js +2 -0
  82. package/dist/assets/index-5281fad0.js.map +1 -0
  83. package/dist/assets/index-68448dbd.js +2 -0
  84. package/dist/assets/index-68448dbd.js.map +1 -0
  85. package/dist/assets/index-74330c06.js +2 -0
  86. package/dist/assets/index-74330c06.js.map +1 -0
  87. package/dist/assets/index-76f31e30.css +1 -0
  88. package/dist/assets/index-76ff9b9b.css +1 -0
  89. package/dist/assets/index-78a8b3c7.js +2 -0
  90. package/dist/assets/index-78a8b3c7.js.map +1 -0
  91. package/dist/assets/index-82a6b493.css +1 -0
  92. package/dist/assets/index-93c733b3.css +1 -0
  93. package/dist/assets/index-98b55468.css +1 -0
  94. package/dist/assets/index-9e6a9bcf.js +2 -0
  95. package/dist/assets/index-9e6a9bcf.js.map +1 -0
  96. package/dist/assets/index-9e6bd406.js +2 -0
  97. package/dist/assets/index-9e6bd406.js.map +1 -0
  98. package/dist/assets/index-ac06071b.js +2 -0
  99. package/dist/assets/index-ac06071b.js.map +1 -0
  100. package/dist/assets/index-adc1b681.js +2 -0
  101. package/dist/assets/index-adc1b681.js.map +1 -0
  102. package/dist/assets/index-b8357360.js +2 -0
  103. package/dist/assets/index-b8357360.js.map +1 -0
  104. package/dist/assets/index-d09329eb.js +2 -0
  105. package/dist/assets/index-d09329eb.js.map +1 -0
  106. package/dist/assets/index-d3ae2239.css +1 -0
  107. package/dist/assets/index-da51da36.css +1 -0
  108. package/dist/assets/index-e7d8a83e.css +1 -0
  109. package/dist/assets/index-eb08e7b7.css +1 -0
  110. package/dist/assets/index-f31c9ba4.css +1 -0
  111. package/dist/assets/index-f74b7eb6.js +2 -0
  112. package/dist/assets/index-f74b7eb6.js.map +1 -0
  113. package/dist/assets/index-legacy.082ccf5b.js +2 -0
  114. package/dist/assets/index-legacy.12de1889.js +2 -0
  115. package/dist/assets/index-legacy.1796b3ef.js +2 -0
  116. package/dist/assets/index-legacy.227978b5.js +2 -0
  117. package/dist/assets/index-legacy.296716c3.js +2 -0
  118. package/dist/assets/index-legacy.36482c14.js +2 -0
  119. package/dist/assets/index-legacy.41d8801d.js +2 -0
  120. package/dist/assets/index-legacy.4b2923ee.js +2 -0
  121. package/dist/assets/index-legacy.4c1d6eb3.js +2 -0
  122. package/dist/assets/index-legacy.7a041259.js +2 -0
  123. package/dist/assets/index-legacy.820f4ba0.js +2 -0
  124. package/dist/assets/index-legacy.8311ba4a.js +2 -0
  125. package/dist/assets/index-legacy.9eb93981.js +18 -0
  126. package/dist/assets/index-legacy.a19ed25e.js +2 -0
  127. package/dist/assets/index-legacy.b8de0bf4.js +2 -0
  128. package/dist/assets/index-legacy.e932a3d4.js +2 -0
  129. package/dist/assets/index-legacy.e96fb189.js +2 -0
  130. package/dist/assets/index-legacy.ec490514.js +2 -0
  131. package/dist/assets/index-legacy.ed2883a1.js +2 -0
  132. package/dist/assets/index-legacy.f16524a6.js +2 -0
  133. package/dist/assets/index-legacy.f84efe08.js +2 -0
  134. package/dist/assets/isEqual-95d6c129.js +2 -0
  135. package/dist/assets/isEqual-95d6c129.js.map +1 -0
  136. package/dist/assets/isEqual-legacy.83836994.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-be31af7a.js +2 -0
  142. package/dist/assets/refresh-be31af7a.js.map +1 -0
  143. package/dist/assets/refresh-legacy.600c5af4.js +2 -0
  144. package/dist/assets/tip-822b05b7.js +2 -0
  145. package/dist/assets/tip-822b05b7.js.map +1 -0
  146. package/dist/assets/tip-9cb18ee8.css +1 -0
  147. package/dist/assets/tip-legacy.b6d754fd.js +2 -0
  148. package/dist/assets/validator-5c60ab85.js +2 -0
  149. package/dist/assets/validator-5c60ab85.js.map +1 -0
  150. package/dist/assets/validator-legacy.86b93c0e.js +2 -0
  151. package/{index.html → dist/index.html} +8 -1
  152. package/package.json +26 -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>