@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,257 +0,0 @@
1
- <template>
2
- <div class="user">
3
- <div class="panel">
4
- <div class="p10 log-filter">
5
- <span class="item">
6
- <span class="label">状态</span>
7
- <el-select v-model="filterLogType" size="default" placeholder="请选择筛选状态">
8
- <el-option label="全部" :value="-1"></el-option>
9
- <el-option v-for="(item, idx) in logTypeList" :key="idx" :label="item.label" :value="item.type"></el-option>
10
- </el-select>
11
- </span>
12
- <span class="item">
13
- <el-input size="default" clearable placeholder="请输入要检索的内容" :prefix-icon="Search" v-model="searchWord">
14
- </el-input>
15
- </span>
16
- </div>
17
- <el-table height="550" stripe border :default-sort="{ prop: 'date', order: 'descending' }" :data="pageWishes"
18
- style="width: 100%">
19
- <el-table-column sortable prop="createDate" label="提交时间" width="190">
20
- <template #default="scope">{{ scope.row.createDate && formatDate(new Date(scope.row.createDate)) }}</template>
21
- </el-table-column>
22
- <el-table-column prop="title" label="标题" width="120"></el-table-column>
23
- <el-table-column prop="des" label="详细描述"></el-table-column>
24
- <el-table-column prop="contact" label="联系方式"></el-table-column>
25
- <el-table-column prop="status" label="状态">
26
- <template #default="scope">
27
- {{ logTypeList.find(v => v.type === scope.row.status).label }}
28
- </template>
29
- </el-table-column>
30
- <el-table-column fixed="right" label="操作" width="100">
31
- <template #default="scope">
32
- <div class="text-btn-list">
33
- <el-button @click="handleChangeStatus(scope.row.id, scope.row.status)" type="primary" text size="small">修改状态
34
- </el-button>
35
- <el-button @click="handleRewriteDes(scope.row.id, scope.row.title, scope.row.des)" type="primary" text
36
- size="small">
37
- 修改描述
38
- </el-button>
39
- </div>
40
- </template>
41
- </el-table-column>
42
- </el-table>
43
- <div class="flex fc p10">
44
- <el-pagination :current-page="pageCurrent" @current-change="handlePageChange" background :page-count="pageCount"
45
- :page-sizes="[10, 50, 100, 200]" :page-size="pageSize" @size-change="handleSizeChange"
46
- :total="filterWishes.length" layout="total, sizes, prev, pager, next, jumper"></el-pagination>
47
- </div>
48
- </div>
49
- <!-- 状态修改弹窗 -->
50
- <el-dialog :fullscreen="isMobile" center title="状态修改" v-model="showWishStatusDialog">
51
- <div class="tc">
52
- <el-select v-model="selectStatus" placeholder="请选择新状态">
53
- <el-option v-for="s in wishStatusList" :key="s.type" :label="s.label" :value="s.type"></el-option>
54
- </el-select>
55
- </div>
56
- <template #footer>
57
- <span class="dialog-footer">
58
- <el-button @click="showWishStatusDialog = false">取 消</el-button>
59
- <el-button type="primary" @click="handleSaveStatus">确 定</el-button>
60
- </span>
61
- </template>
62
- </el-dialog>
63
-
64
- <!-- 需求描述更新弹窗 -->
65
- <el-dialog title="需求信息" v-model="desVisible" :fullscreen="isMobile">
66
- <el-form :model="formData">
67
- <el-form-item label="需求" :label-width="formLabelWidth">
68
- <el-input placeholder="一句简单明了的话概括一下" v-model="formData.title"></el-input>
69
- </el-form-item>
70
- <el-form-item label="详细描述" :label-width="formLabelWidth">
71
- <el-input placeholder="用朴素的话语进一步描述你的需求" type="textarea" v-model="formData.des"></el-input>
72
- </el-form-item>
73
- </el-form>
74
- <template #footer>
75
- <span class="dialog-footer">
76
- <el-button @click="desVisible = false">取 消</el-button>
77
- <el-button type="primary" @click="handleUpdateWish">确 定</el-button>
78
- </span>
79
- </template>
80
- </el-dialog>
81
- </div>
82
- </template>
83
- <script lang="ts" setup>
84
- import { ElMessage } from 'element-plus'
85
- import {
86
- computed, onMounted, reactive, ref,
87
- } from 'vue'
88
- import { useStore } from 'vuex'
89
- import { Search } from '@element-plus/icons-vue'
90
- import { WishApi } from '@/apis'
91
- import { formatDate } from '@/utils/stringUtil'
92
- import { WishStatus } from '@/constants'
93
-
94
- const $store = useStore()
95
- const wishes = reactive<WishApiTypes.WishItem[]>([])
96
- const refreshWishes = () => {
97
- WishApi.findAllWish().then((v) => {
98
- wishes.splice(0, wishes.length, ...v.data)
99
- })
100
- }
101
-
102
- // 筛选状态
103
- const filterLogType = ref(-1)
104
- const searchWord = ref('')
105
- const logTypeList = reactive([
106
- {
107
- label: '待审核',
108
- type: WishStatus.REVIEW,
109
- },
110
- {
111
- label: '待开始',
112
- type: WishStatus.WAIT,
113
- },
114
- {
115
- label: '关闭',
116
- type: WishStatus.CLOSE,
117
- },
118
- {
119
- label: '已上线',
120
- type: WishStatus.END,
121
- },
122
- {
123
- label: '开发中',
124
- type: WishStatus.START,
125
- },
126
- ])
127
-
128
- const filterWishes = computed(() => wishes
129
- .filter((v) => v.status === filterLogType.value || filterLogType.value === -1)
130
- .filter((v) => {
131
- const {
132
- createDate, title, des, contact,
133
- } = v
134
- if (searchWord.value.length === 0) return true
135
- return `${formatDate(new Date(createDate))} ${title} ${des} ${contact}`.includes(searchWord.value)
136
- }))
137
-
138
- // 分页
139
- const pageSize = ref(10)
140
- const handleSizeChange = (v: number) => {
141
- pageSize.value = v
142
- }
143
- const pageCount = computed(() => {
144
- const t = Math.ceil(filterWishes.value.length / pageSize.value)
145
- return t
146
- })
147
- const pageCurrent = ref(1)
148
- const pageWishes = computed(() => {
149
- const start = (pageCurrent.value - 1) * pageSize.value
150
- const end = (pageCurrent.value) * pageSize.value
151
- return filterWishes.value.slice(start, end)
152
- })
153
- const handlePageChange = (idx: number) => {
154
- pageCurrent.value = idx
155
- }
156
-
157
- // 状态修改
158
- const showWishStatusDialog = ref(false)
159
- const selectWishId = ref('')
160
- const selectStatus = ref(WishStatus.REVIEW)
161
- const wishStatusList = logTypeList
162
- const handleChangeStatus = (wishId: string, status: WishStatus) => {
163
- selectWishId.value = wishId
164
- selectStatus.value = status
165
- showWishStatusDialog.value = true
166
- }
167
- const handleSaveStatus = () => {
168
- const wish = wishes.find((v) => v.id === selectWishId.value)
169
- wish.status = selectStatus.value
170
- showWishStatusDialog.value = false
171
- WishApi
172
- .updateWishStatus(selectWishId.value, selectStatus.value)
173
- .then(() => {
174
- ElMessage.success('修改成功')
175
- })
176
- }
177
-
178
- // 描述信息修改
179
- const formLabelWidth = '80px'
180
- const desVisible = ref(false)
181
- const formData = reactive({
182
- title: '',
183
- des: '',
184
- })
185
- const handleRewriteDes = (id: string, title: string, des: string) => {
186
- selectWishId.value = id
187
- formData.title = title
188
- formData.des = des
189
- desVisible.value = true
190
- }
191
- const handleUpdateWish = () => {
192
- const wish = wishes.find((v) => v.id === selectWishId.value)
193
- WishApi
194
- .updateWishDes(selectWishId.value, formData.title, formData.des)
195
- .then(() => {
196
- desVisible.value = false
197
- wish.title = formData.title
198
- wish.des = formData.des
199
- ElMessage.success('修改成功')
200
- })
201
- }
202
- onMounted(() => {
203
- refreshWishes()
204
- })
205
- const isMobile = computed(() => $store.getters['public/isMobile'])
206
-
207
- </script>
208
-
209
- <style scoped lang="scss">
210
- @media screen and (max-width: 700px) {
211
- .user {
212
- margin-top: 40px !important;
213
- }
214
-
215
- .log-filter {
216
- justify-content: center;
217
- }
218
- }
219
-
220
- .user {
221
- margin: 0 auto;
222
- }
223
-
224
- .panel {
225
- max-width: 1256px;
226
- padding: 1em;
227
- background-color: #fff;
228
- margin: 10px auto;
229
- box-sizing: border-box;
230
- box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
231
- border-radius: 4px;
232
- }
233
-
234
- .log-filter {
235
- display: flex;
236
- flex-wrap: wrap;
237
-
238
- .item {
239
- margin-right: 10px;
240
- margin-bottom: 10px;
241
-
242
- .label {
243
- margin-right: 10px;
244
- font-size: 12px;
245
- }
246
- }
247
- }
248
-
249
- .text-btn-list {
250
- display: flex;
251
- flex-wrap: wrap;
252
-
253
- button {
254
- margin-left: 0;
255
- }
256
- }
257
- </style>
@@ -1,208 +0,0 @@
1
- <template>
2
- <!-- 分类管理 -->
3
- <div class="panel">
4
- <!-- 按钮 -->
5
- <div class="btn-area">
6
- <h5>分类列表</h5>
7
- <h6 style="font-weight: lighter">(点击分类可筛选任务)</h6>
8
- </div>
9
- <!-- 分类列表 -->
10
- <div style="margin-top: 15px" class="category-list">
11
- <div class="new-tag-wrap">
12
- <!-- 新分类 -->
13
- <el-input
14
- class="input-new-tag el-tag"
15
- v-if="isShowCreateCategory"
16
- v-model="categoryName"
17
- ref="saveTagInput"
18
- placeholder="分类名称"
19
- @keyup.enter="addCategory"
20
- @focusout="addCategory"
21
- ></el-input>
22
- <el-button
23
- v-else
24
- class="button-new-tag el-tag"
25
- size="small"
26
- @click="isShowCreateCategory = true"
27
- >+ New 分类</el-button
28
- >
29
- <el-tag
30
- :effect="category === 'default' ? 'dark' : 'plain'"
31
- @click="handleClickCategory('default')"
32
- >默认{{ taskCount('default') }}</el-tag
33
- >
34
- <span class="list-tip"
35
- ><el-tag
36
- type="danger"
37
- :effect="category === 'trash' ? 'dark' : 'plain'"
38
- @click="handleClickCategory('trash')"
39
- ><el-icon><DeleteFilled /></el-icon> 回收站{{
40
- taskCount('trash')
41
- }}</el-tag
42
- ></span
43
- >
44
- </div>
45
- <div class="tag-wrap">
46
- <div class="tag-list">
47
- <el-tag
48
- v-for="tag in categorys"
49
- :key="tag.k"
50
- closable
51
- :effect="category === tag.k ? 'dark' : 'plain'"
52
- @close="handleDeleteCategory(tag)"
53
- @click="handleClickCategory(tag.k)"
54
- >{{ tag.name }}{{ taskCount(tag.k) }}</el-tag
55
- >
56
- </div>
57
- </div>
58
- </div>
59
- </div>
60
- </template>
61
- <script lang="ts">
62
- import { ElMessage, ElMessageBox } from 'element-plus'
63
- import { computed, defineComponent, ref } from 'vue'
64
- import { DeleteFilled } from '@element-plus/icons-vue'
65
- import { useStore } from 'vuex'
66
-
67
- export default defineComponent({
68
- name: 'categoryPanel',
69
- components: {
70
- DeleteFilled
71
- },
72
- props: {
73
- category: {
74
- type: String,
75
- required: true,
76
- default: 'default'
77
- }
78
- },
79
- setup(props, context) {
80
- const $store = useStore()
81
- // 分类相关
82
- const categorys = computed(() => $store.state.category.categoryList)
83
- const tasks = computed(() => $store.state.task.taskList)
84
- const taskCount = (c: string) => {
85
- const count = tasks.value.filter((t: any) => t.category === c).length
86
- return count === 0 ? '' : ` (${count})`
87
- }
88
- const isShowCreateCategory = ref(false)
89
- const categoryName = ref('')
90
- const addCategory = () => {
91
- isShowCreateCategory.value = false
92
- if (!categoryName.value.trim()) {
93
- // ElMessage.warning('不能为空')
94
- return
95
- }
96
- $store
97
- .dispatch('category/createCategory', categoryName.value)
98
- .then(() => {
99
- ElMessage.success('创建成功')
100
- })
101
- .catch((err) => {
102
- if (err.code === 2001) {
103
- ElMessage.warning('分类名称已存在')
104
- }
105
- })
106
- categoryName.value = ''
107
- }
108
-
109
- const handleClickCategory = (k: string) => {
110
- context.emit('update:category', k)
111
- }
112
-
113
- const handleDeleteCategory = (c: any) => {
114
- ElMessageBox.confirm('是否删除', '提示', {
115
- confirmButtonText: '确定',
116
- cancelButtonText: '取消'
117
- })
118
- .then(() => {
119
- $store.dispatch('category/deleteCategory', c.k).then(() => {
120
- // 删除后变动的默认选择
121
- handleClickCategory('default')
122
- ElMessage.success('删除成功')
123
- // 获取最新的任务
124
- $store.dispatch('task/getTask')
125
- })
126
- })
127
- .catch(() => {
128
- ElMessage.info('取消删除')
129
- })
130
- }
131
-
132
- return {
133
- categorys,
134
- isShowCreateCategory,
135
- categoryName,
136
- addCategory,
137
- handleDeleteCategory,
138
- handleClickCategory,
139
- taskCount
140
- }
141
- }
142
- })
143
- </script>
144
- <style scoped lang="scss">
145
- .el-tag {
146
- margin-left: 10px;
147
- margin-bottom: 10px;
148
- cursor: pointer;
149
- }
150
- .new-tag-wrap {
151
- display: flex;
152
- align-items: center;
153
- }
154
- .button-new-tag {
155
- margin-left: 10px;
156
- height: 32px;
157
- line-height: 30px;
158
- padding-top: 0;
159
- padding-bottom: 0;
160
- }
161
- .input-new-tag {
162
- width: 120px;
163
- padding: 0;
164
- margin-left: 10px;
165
- margin-bottom: 10px;
166
- vertical-align: bottom;
167
- }
168
- .panel {
169
- padding: 1em;
170
- background-color: #fff;
171
- margin: 10px auto;
172
- box-sizing: border-box;
173
- box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
174
- border-radius: 4px;
175
- }
176
- .btn-area {
177
- display: flex;
178
- justify-content: center;
179
- }
180
- .list-tip {
181
- // color: #67c23a;
182
- // font-size: 10px;
183
- margin-right: 10px;
184
- flex: 1;
185
- text-align: right;
186
- }
187
- .tag-wrap {
188
- width: 100%;
189
- height: 150px;
190
- }
191
- .tag-list {
192
- height: 150px;
193
- overflow-x: hidden;
194
- overflow-y: scroll;
195
- display: flex;
196
- flex-wrap: wrap;
197
- :deep(.el-tag) {
198
- width: 140px;
199
- }
200
- :deep(.el-tag__content) {
201
- width: 100px;
202
- text-align: center;
203
- text-overflow: ellipsis;
204
- word-break: keep-all;
205
- overflow: hidden;
206
- }
207
- }
208
- </style>
@@ -1,93 +0,0 @@
1
- <template>
2
- <div>
3
- <div class="btn-area">
4
- <el-button size="large" type="primary" :plain="!isShowCreateTask" @click="
5
- isShowCreateTask =
6
- !isShowCreateTask
7
- ">
8
- {{
9
- isShowCreateTask
10
- ? '关闭创建面板'
11
- : '创建收集任务'
12
- }}
13
- </el-button>
14
- </div>
15
- <!-- 新增区域 -->
16
- <div v-show="isShowCreateTask">
17
- <div class="input-container">
18
- <el-input placeholder="请输入任务名称(上述列表选择分类)" v-model="taskName"></el-input>
19
- <el-button @click="createTask" :type="taskName?.length ? 'success' : 'default'">确定</el-button>
20
- </div>
21
- </div>
22
- <tip class="p10">
23
- 点击
24
- <el-icon>
25
- <Menu />
26
- </el-icon> 可以进一步的调整任务
27
- </tip>
28
- <tip>
29
- 设置截止时间,自动重命名,名单限制,批注,文件模板。。🚀
30
- </tip>
31
- </div>
32
- </template>
33
- <script lang="ts" setup>
34
- import { ElMessage } from 'element-plus'
35
- import {
36
- computed,
37
- ref,
38
- } from 'vue'
39
- import { useStore } from 'vuex'
40
- import { Menu } from '@element-plus/icons-vue'
41
- import Tip from './infoPanel/tip.vue'
42
-
43
- const props = defineProps({
44
- activeCategoryKey: {
45
- type: String,
46
- default: 'default',
47
- },
48
- })
49
- const $store = useStore()
50
- const categorys = computed(() => $store.state.category
51
- .categoryList)
52
- const categoryName = computed(() => {
53
- if (props.activeCategoryKey
54
- === 'default') {
55
- return '默认'
56
- }
57
- return categorys.value.find((v: any) => v.k
58
- === props.activeCategoryKey).name
59
- })
60
- // 任务相关
61
- const isShowCreateTask = ref(false)
62
- const taskName = ref('')
63
- const createTask = () => {
64
- if (!taskName.value.trim()) {
65
- ElMessage.warning('不能为空')
66
- return
67
- }
68
- $store
69
- .dispatch('task/createTask', {
70
- name: taskName.value,
71
- category: props.activeCategoryKey,
72
- })
73
- .then(() => {
74
- ElMessage.success('创建成功')
75
- })
76
- taskName.value = ''
77
- }
78
-
79
- </script>
80
- <style scoped>
81
- .btn-area {
82
- display: flex;
83
- justify-content: center;
84
- }
85
-
86
- .input-container {
87
- margin: 15px auto;
88
- max-width: 600px;
89
- background-color: #fff;
90
- display: flex;
91
- justify-content: space-around;
92
- }
93
- </style>
@@ -1,129 +0,0 @@
1
- <template>
2
- <el-card class="task-item">
3
- <template #header>
4
- <div class="header">
5
- <span class="ellipsis">{{ item.name }}</span>
6
- <div class="actions">
7
- <el-button
8
- circle
9
- type="warning"
10
- :icon="Menu"
11
- title="更多"
12
- @click="$emit('more', item)"
13
- ></el-button>
14
- <el-button
15
- circle
16
- type="success"
17
- :icon="Edit"
18
- title="编辑基本信息"
19
- @click="$emit('edit', item)"
20
- >
21
- </el-button>
22
- <el-button
23
- circle
24
- type="primary"
25
- :icon="Share"
26
- title="分享"
27
- @click="$emit('share', item.key)"
28
- >
29
- </el-button>
30
- <el-button
31
- circle
32
- type="danger"
33
- :icon="Delete"
34
- title="删除"
35
- @click="$emit('delete', item.key, item.category === 'trash')"
36
- >
37
- </el-button>
38
- </div>
39
- </div>
40
- </template>
41
-
42
- <!-- 没有提交记录 -->
43
- <div class="body">
44
- <div v-if="item.recentLog.length === 0" class="empty">
45
- 暂时没有提交记录...
46
- </div>
47
- <ul v-else>
48
- <li class="check-files">
49
- <strong>近 {{ item.recentLog.length }} 条提交记录</strong>
50
- <router-link :to="`/dashboard/files?task=${item.key}`"
51
- >查看详情</router-link
52
- >
53
- </li>
54
- <li
55
- v-for="(log, idx) in item.recentLog"
56
- :key="Number(idx)"
57
- class="ellipsis"
58
- >
59
- <span class="time">{{ formatDate(new Date(log.date)) }}</span>
60
- <span class="name">{{ log.filename }}</span>
61
- </li>
62
- </ul>
63
- </div>
64
- </el-card>
65
- </template>
66
- <script lang="ts" setup>
67
- import { Delete, Share, Menu, Edit } from '@element-plus/icons-vue'
68
-
69
- import { formatDate } from '@/utils/stringUtil'
70
-
71
- defineProps<{
72
- item: TaskApiTypes.TaskItem
73
- }>()
74
- </script>
75
- <style scoped lang="scss">
76
- .task-item {
77
- min-width: 400px;
78
- margin-top: 1em;
79
-
80
- .header {
81
- overflow: hidden;
82
- display: flex;
83
- align-items: center;
84
- justify-content: space-between;
85
- flex-wrap: nowrap;
86
-
87
- .actions {
88
- min-width: 200px;
89
- padding: 3px 0;
90
- margin-left: 20px;
91
- }
92
- }
93
-
94
- .body {
95
- min-height: 30px;
96
-
97
- .empty {
98
- text-align: center;
99
- font-size: 12px;
100
- color: grey;
101
- }
102
-
103
- ul {
104
- font-size: 12px;
105
- color: grey;
106
- list-style: none;
107
-
108
- .time {
109
- margin-right: 10px;
110
- }
111
- }
112
- }
113
- }
114
-
115
- @media screen and (max-width: 700px) {
116
- .task-item {
117
- min-width: 100%;
118
- }
119
- }
120
-
121
- .check-files {
122
- display: flex;
123
- justify-content: space-between;
124
- align-items: center;
125
- a {
126
- color: #409eff;
127
- }
128
- }
129
- </style>