@sugarat/easypicker2-client 2.7.0 → 2.7.1

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 (156) hide show
  1. package/dist/assets/{data-analysis-CVdTnsNg.js → data-analysis-B61f8OZD.js} +2 -2
  2. package/dist/assets/{data-analysis-CVdTnsNg.js.map → data-analysis-B61f8OZD.js.map} +1 -1
  3. package/dist/assets/{data-analysis-legacy-CrjrJgyN.js → data-analysis-legacy-sXkPNcPD.js} +2 -2
  4. package/dist/assets/{data-analysis-legacy-CrjrJgyN.js.map → data-analysis-legacy-sXkPNcPD.js.map} +1 -1
  5. package/dist/assets/{data-board-CKaKy1IB.js → data-board-BIN3HXKE.js} +2 -2
  6. package/dist/assets/{data-board-CKaKy1IB.js.map → data-board-BIN3HXKE.js.map} +1 -1
  7. package/dist/assets/{data-board-legacy-DfESxuEd.js → data-board-legacy-mqcredpF.js} +2 -2
  8. package/dist/assets/{data-board-legacy-DfESxuEd.js.map → data-board-legacy-mqcredpF.js.map} +1 -1
  9. package/dist/assets/{el-date-picker-cVKa-X4K.js → el-date-picker-B-cvGosU.js} +2 -2
  10. package/dist/assets/{el-date-picker-cVKa-X4K.js.map → el-date-picker-B-cvGosU.js.map} +1 -1
  11. package/dist/assets/{el-date-picker-legacy-CJ2heCkq.js → el-date-picker-legacy-CACCtxzL.js} +2 -2
  12. package/dist/assets/{el-date-picker-legacy-CJ2heCkq.js.map → el-date-picker-legacy-CACCtxzL.js.map} +1 -1
  13. package/dist/assets/{el-dialog-U5Zmt3t3.js → el-dialog-C9wNxcPt.js} +2 -2
  14. package/dist/assets/{el-dialog-U5Zmt3t3.js.map → el-dialog-C9wNxcPt.js.map} +1 -1
  15. package/dist/assets/{el-dialog-legacy-u4KST5yo.js → el-dialog-legacy-CX7a77_4.js} +2 -2
  16. package/dist/assets/{el-dialog-legacy-u4KST5yo.js.map → el-dialog-legacy-CX7a77_4.js.map} +1 -1
  17. package/dist/assets/{el-dropdown-item-flwUs2cH.js → el-dropdown-item-jbdZL0Yj.js} +2 -2
  18. package/dist/assets/{el-dropdown-item-flwUs2cH.js.map → el-dropdown-item-jbdZL0Yj.js.map} +1 -1
  19. package/dist/assets/{el-dropdown-item-legacy-B2fmSGnI.js → el-dropdown-item-legacy-ChoB2YAN.js} +2 -2
  20. package/dist/assets/{el-dropdown-item-legacy-B2fmSGnI.js.map → el-dropdown-item-legacy-ChoB2YAN.js.map} +1 -1
  21. package/dist/assets/{el-form-item-B08Ira7l.js → el-form-item-BhAyaXPT.js} +2 -2
  22. package/dist/assets/{el-form-item-B08Ira7l.js.map → el-form-item-BhAyaXPT.js.map} +1 -1
  23. package/dist/assets/{el-form-item-legacy-CcX_hnMk.js → el-form-item-legacy-DNwgpXzk.js} +2 -2
  24. package/dist/assets/{el-form-item-legacy-CcX_hnMk.js.map → el-form-item-legacy-DNwgpXzk.js.map} +1 -1
  25. package/dist/assets/{el-loading-BMbhg8vq.js → el-loading-D5D_2rI_.js} +2 -2
  26. package/dist/assets/{el-loading-BMbhg8vq.js.map → el-loading-D5D_2rI_.js.map} +1 -1
  27. package/dist/assets/{el-loading-legacy-CRJF51cp.js → el-loading-legacy-CCDpn-BT.js} +2 -2
  28. package/dist/assets/{el-loading-legacy-CRJF51cp.js.map → el-loading-legacy-CCDpn-BT.js.map} +1 -1
  29. package/dist/assets/{el-pagination-D4Wuvfl8.js → el-pagination-DRV4WevC.js} +2 -2
  30. package/dist/assets/{el-pagination-D4Wuvfl8.js.map → el-pagination-DRV4WevC.js.map} +1 -1
  31. package/dist/assets/{el-pagination-legacy-C2E-fHif.js → el-pagination-legacy-CAxn6D5y.js} +2 -2
  32. package/dist/assets/{el-pagination-legacy-C2E-fHif.js.map → el-pagination-legacy-CAxn6D5y.js.map} +1 -1
  33. package/dist/assets/{el-progress-ChbdZpVl.js → el-progress-GDfl1hgb.js} +2 -2
  34. package/dist/assets/{el-progress-ChbdZpVl.js.map → el-progress-GDfl1hgb.js.map} +1 -1
  35. package/dist/assets/{el-progress-legacy-zjlCtRh2.js → el-progress-legacy-C5K3FqLs.js} +2 -2
  36. package/dist/assets/{el-progress-legacy-zjlCtRh2.js.map → el-progress-legacy-C5K3FqLs.js.map} +1 -1
  37. package/dist/assets/{el-select-DP5UYxt3.js → el-select-B9z8VvNb.js} +2 -2
  38. package/dist/assets/{el-select-DP5UYxt3.js.map → el-select-B9z8VvNb.js.map} +1 -1
  39. package/dist/assets/{el-select-legacy-D4o92tvp.js → el-select-legacy-BI1YK9Jv.js} +2 -2
  40. package/dist/assets/{el-select-legacy-D4o92tvp.js.map → el-select-legacy-BI1YK9Jv.js.map} +1 -1
  41. package/dist/assets/{el-switch-legacy-D1AVOg2z.js → el-switch-legacy-CG_sT4XS.js} +2 -2
  42. package/dist/assets/{el-switch-legacy-D1AVOg2z.js.map → el-switch-legacy-CG_sT4XS.js.map} +1 -1
  43. package/dist/assets/{el-switch-DAReoFaC.js → el-switch-oOC_byJv.js} +2 -2
  44. package/dist/assets/{el-switch-DAReoFaC.js.map → el-switch-oOC_byJv.js.map} +1 -1
  45. package/dist/assets/{el-tab-pane-6kk7HB4E.js → el-tab-pane-NvGl_NI0.js} +2 -2
  46. package/dist/assets/{el-tab-pane-6kk7HB4E.js.map → el-tab-pane-NvGl_NI0.js.map} +1 -1
  47. package/dist/assets/{el-tab-pane-legacy-7aEB8qvn.js → el-tab-pane-legacy-usarmKVQ.js} +2 -2
  48. package/dist/assets/{el-tab-pane-legacy-7aEB8qvn.js.map → el-tab-pane-legacy-usarmKVQ.js.map} +1 -1
  49. package/dist/assets/{el-table-column-DsGlAuX3.js → el-table-column-JBAymLKS.js} +2 -2
  50. package/dist/assets/{el-table-column-DsGlAuX3.js.map → el-table-column-JBAymLKS.js.map} +1 -1
  51. package/dist/assets/{el-table-column-legacy-C8A33Lav.js → el-table-column-legacy-BWpnrxZl.js} +2 -2
  52. package/dist/assets/{el-table-column-legacy-C8A33Lav.js.map → el-table-column-legacy-BWpnrxZl.js.map} +1 -1
  53. package/dist/assets/{index-ggQcjFPK.js → index-B0mV367i.js} +2 -2
  54. package/dist/assets/{index-ggQcjFPK.js.map → index-B0mV367i.js.map} +1 -1
  55. package/dist/assets/{index-ShzTlShR.css → index-BOep9MOB.css} +1 -1
  56. package/dist/assets/{index-DjTj_2YG.js → index-BUF8Xxid.js} +2 -2
  57. package/dist/assets/{index-DjTj_2YG.js.map → index-BUF8Xxid.js.map} +1 -1
  58. package/dist/assets/index-BxsJs6HZ.js +2 -0
  59. package/dist/assets/index-BxsJs6HZ.js.map +1 -0
  60. package/dist/assets/{index-Dczz94WX.js → index-Byzqqd86.js} +2 -2
  61. package/dist/assets/{index-Dczz94WX.js.map → index-Byzqqd86.js.map} +1 -1
  62. package/dist/assets/{index-my4zFbcM.js → index-C0niS8Vv.js} +2 -2
  63. package/dist/assets/{index-my4zFbcM.js.map → index-C0niS8Vv.js.map} +1 -1
  64. package/dist/assets/{index-BdVQjSN6.js → index-CHIrZkSk.js} +2 -2
  65. package/dist/assets/{index-BdVQjSN6.js.map → index-CHIrZkSk.js.map} +1 -1
  66. package/dist/assets/{index-CeKw5v7N.js → index-CKIiHmIf.js} +2 -2
  67. package/dist/assets/{index-CeKw5v7N.js.map → index-CKIiHmIf.js.map} +1 -1
  68. package/dist/assets/{index-mKO4gpWB.js → index-Cno4i6lg.js} +2 -2
  69. package/dist/assets/{index-mKO4gpWB.js.map → index-Cno4i6lg.js.map} +1 -1
  70. package/dist/assets/{index-yrncPnXk.js → index-D80lTVeV.js} +3 -3
  71. package/dist/assets/{index-yrncPnXk.js.map → index-D80lTVeV.js.map} +1 -1
  72. package/dist/assets/{index-Caxtv5sl.js → index-DCwrZmag.js} +2 -2
  73. package/dist/assets/{index-Caxtv5sl.js.map → index-DCwrZmag.js.map} +1 -1
  74. package/dist/assets/{index-BK3KKBAN.js → index-DDGYm9L-.js} +2 -2
  75. package/dist/assets/{index-BK3KKBAN.js.map → index-DDGYm9L-.js.map} +1 -1
  76. package/dist/assets/{index-BVM3WMNO.js → index-DEiWe2Bk.js} +2 -2
  77. package/dist/assets/{index-BVM3WMNO.js.map → index-DEiWe2Bk.js.map} +1 -1
  78. package/dist/assets/{index-DkbS1z1O.js → index-DJnltRnr.js} +2 -2
  79. package/dist/assets/{index-DkbS1z1O.js.map → index-DJnltRnr.js.map} +1 -1
  80. package/dist/assets/{index-BMZu8UZ6.js → index-DMIqQLOE.js} +2 -2
  81. package/dist/assets/{index-BMZu8UZ6.js.map → index-DMIqQLOE.js.map} +1 -1
  82. package/dist/assets/{index-BnQi1XPn.js → index-DRHl9KU8.js} +2 -2
  83. package/dist/assets/{index-BnQi1XPn.js.map → index-DRHl9KU8.js.map} +1 -1
  84. package/dist/assets/{index-jSHW6lhR.js → index-Dj5caLYF.js} +2 -2
  85. package/dist/assets/{index-jSHW6lhR.js.map → index-Dj5caLYF.js.map} +1 -1
  86. package/dist/assets/{index-D-JYypPJ.js → index-Dxy6ycv8.js} +2 -2
  87. package/dist/assets/{index-D-JYypPJ.js.map → index-Dxy6ycv8.js.map} +1 -1
  88. package/dist/assets/{index-D6LMez3u.js → index-MTuc20rr.js} +2 -2
  89. package/dist/assets/{index-D6LMez3u.js.map → index-MTuc20rr.js.map} +1 -1
  90. package/dist/assets/{index-q94vR-7W.js → index-bD-fr3vy.js} +2 -2
  91. package/dist/assets/{index-q94vR-7W.js.map → index-bD-fr3vy.js.map} +1 -1
  92. package/dist/assets/{index-DcmA3tsY.js → index-fb67TYJ8.js} +2 -2
  93. package/dist/assets/{index-DcmA3tsY.js.map → index-fb67TYJ8.js.map} +1 -1
  94. package/dist/assets/{index-legacy-DVOM8HaY.js → index-legacy-2G5G7SiF.js} +2 -2
  95. package/dist/assets/index-legacy-2G5G7SiF.js.map +1 -0
  96. package/dist/assets/{index-legacy-DcKfHHls.js → index-legacy-B1WwgC0S.js} +2 -2
  97. package/dist/assets/{index-legacy-DcKfHHls.js.map → index-legacy-B1WwgC0S.js.map} +1 -1
  98. package/dist/assets/{index-legacy-CRq_O11N.js → index-legacy-BN-W2P7-.js} +2 -2
  99. package/dist/assets/{index-legacy-CRq_O11N.js.map → index-legacy-BN-W2P7-.js.map} +1 -1
  100. package/dist/assets/{index-legacy-DasH54g3.js → index-legacy-BZb5uhBF.js} +2 -2
  101. package/dist/assets/{index-legacy-DasH54g3.js.map → index-legacy-BZb5uhBF.js.map} +1 -1
  102. package/dist/assets/{index-legacy-BFfoAOF1.js → index-legacy-BdJHr4yN.js} +2 -2
  103. package/dist/assets/{index-legacy-BFfoAOF1.js.map → index-legacy-BdJHr4yN.js.map} +1 -1
  104. package/dist/assets/{index-legacy-CW0OHQkF.js → index-legacy-BwpR0DP9.js} +2 -2
  105. package/dist/assets/{index-legacy-CW0OHQkF.js.map → index-legacy-BwpR0DP9.js.map} +1 -1
  106. package/dist/assets/{index-legacy-BqL3XK76.js → index-legacy-Cbyz8WHA.js} +2 -2
  107. package/dist/assets/{index-legacy-BqL3XK76.js.map → index-legacy-Cbyz8WHA.js.map} +1 -1
  108. package/dist/assets/{index-legacy-DD6zMGGT.js → index-legacy-Chw6iyCz.js} +2 -2
  109. package/dist/assets/{index-legacy-DD6zMGGT.js.map → index-legacy-Chw6iyCz.js.map} +1 -1
  110. package/dist/assets/{index-legacy-BLKO-78a.js → index-legacy-DC5-MYgp.js} +2 -2
  111. package/dist/assets/{index-legacy-BLKO-78a.js.map → index-legacy-DC5-MYgp.js.map} +1 -1
  112. package/dist/assets/{index-legacy-pP3Pmgbs.js → index-legacy-DM_G6GXF.js} +2 -2
  113. package/dist/assets/{index-legacy-pP3Pmgbs.js.map → index-legacy-DM_G6GXF.js.map} +1 -1
  114. package/dist/assets/{index-legacy-Dt4Eky4l.js → index-legacy-DP3Q6cDA.js} +2 -2
  115. package/dist/assets/{index-legacy-Dt4Eky4l.js.map → index-legacy-DP3Q6cDA.js.map} +1 -1
  116. package/dist/assets/{index-legacy-B4s89tRC.js → index-legacy-DUrsbgNe.js} +2 -2
  117. package/dist/assets/{index-legacy-B4s89tRC.js.map → index-legacy-DUrsbgNe.js.map} +1 -1
  118. package/dist/assets/{index-legacy-BezkAR3b.js → index-legacy-DV-KwU0c.js} +2 -2
  119. package/dist/assets/{index-legacy-BezkAR3b.js.map → index-legacy-DV-KwU0c.js.map} +1 -1
  120. package/dist/assets/{index-legacy-6cMsZS3c.js → index-legacy-DiNZXmUs.js} +2 -2
  121. package/dist/assets/{index-legacy-6cMsZS3c.js.map → index-legacy-DiNZXmUs.js.map} +1 -1
  122. package/dist/assets/{index-legacy-2f3kE3Xe.js → index-legacy-DmJc-LaA.js} +2 -2
  123. package/dist/assets/{index-legacy-2f3kE3Xe.js.map → index-legacy-DmJc-LaA.js.map} +1 -1
  124. package/dist/assets/{index-legacy-CqVgmAMA.js → index-legacy-Dmi-DBK0.js} +2 -2
  125. package/dist/assets/{index-legacy-CqVgmAMA.js.map → index-legacy-Dmi-DBK0.js.map} +1 -1
  126. package/dist/assets/{index-legacy-CslCZVZ0.js → index-legacy-K0GPuvtR.js} +2 -2
  127. package/dist/assets/{index-legacy-CslCZVZ0.js.map → index-legacy-K0GPuvtR.js.map} +1 -1
  128. package/dist/assets/{index-legacy-CUZgiMNa.js → index-legacy-Qibh5ehq.js} +2 -2
  129. package/dist/assets/{index-legacy-CUZgiMNa.js.map → index-legacy-Qibh5ehq.js.map} +1 -1
  130. package/dist/assets/{index-legacy-bElvuK5I.js → index-legacy-gQf30T09.js} +2 -2
  131. package/dist/assets/{index-legacy-bElvuK5I.js.map → index-legacy-gQf30T09.js.map} +1 -1
  132. package/dist/assets/{index-legacy-8BA9X4aO.js → index-legacy-l7TP3X8w.js} +2 -2
  133. package/dist/assets/{index-legacy-8BA9X4aO.js.map → index-legacy-l7TP3X8w.js.map} +1 -1
  134. package/dist/assets/{isEqual-legacy-4dmPHJnc.js → isEqual-legacy-DVLZyo95.js} +2 -2
  135. package/dist/assets/{isEqual-legacy-4dmPHJnc.js.map → isEqual-legacy-DVLZyo95.js.map} +1 -1
  136. package/dist/assets/{isEqual-DdkrQbjH.js → isEqual-pN6Ih18F.js} +2 -2
  137. package/dist/assets/{isEqual-DdkrQbjH.js.map → isEqual-pN6Ih18F.js.map} +1 -1
  138. package/dist/assets/{refresh-CCIG6-IB.js → refresh-BTQLK-UW.js} +2 -2
  139. package/dist/assets/{refresh-CCIG6-IB.js.map → refresh-BTQLK-UW.js.map} +1 -1
  140. package/dist/assets/{refresh-legacy-CchIU9Mh.js → refresh-legacy-Cv7RM_sm.js} +2 -2
  141. package/dist/assets/{refresh-legacy-CchIU9Mh.js.map → refresh-legacy-Cv7RM_sm.js.map} +1 -1
  142. package/dist/assets/{tip-BM0xMiq8.js → tip-DQo-E_Pu.js} +2 -2
  143. package/dist/assets/{tip-BM0xMiq8.js.map → tip-DQo-E_Pu.js.map} +1 -1
  144. package/dist/assets/{tip-legacy-DpAPUNpm.js → tip-legacy-Ci60OMi9.js} +2 -2
  145. package/dist/assets/{tip-legacy-DpAPUNpm.js.map → tip-legacy-Ci60OMi9.js.map} +1 -1
  146. package/dist/assets/validator-CZlzBDi2.js +2 -0
  147. package/dist/assets/{validator-DG4_rB-x.js.map → validator-CZlzBDi2.js.map} +1 -1
  148. package/dist/assets/validator-legacy-D-pC1hkO.js +2 -0
  149. package/dist/assets/{validator-legacy-CN5REdqi.js.map → validator-legacy-D-pC1hkO.js.map} +1 -1
  150. package/dist/index.html +2 -2
  151. package/package.json +4 -3
  152. package/dist/assets/index-ITkwOdUc.js +0 -2
  153. package/dist/assets/index-ITkwOdUc.js.map +0 -1
  154. package/dist/assets/index-legacy-DVOM8HaY.js.map +0 -1
  155. package/dist/assets/validator-DG4_rB-x.js +0 -2
  156. package/dist/assets/validator-legacy-CN5REdqi.js +0 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-legacy-2G5G7SiF.js","sources":["../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/card/src/card.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/card/index.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/card/src/card2.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/input-number/src/input-number.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/input-number/src/input-number2.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/input-number/index.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/circle-close-filled.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/circle-plus-filled.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/delete.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/edit.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/menu.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/plus.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/share.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/top.mjs","../../src/pages/dashboard/tasks/components/CategoryPanel.vue","../../src/pages/dashboard/tasks/components/CreateTask.vue","../../src/pages/dashboard/tasks/public.ts","../../src/pages/dashboard/tasks/components/infoPanel/ddl.vue","../../src/pages/dashboard/tasks/components/infoPanel/people.vue","../../src/pages/dashboard/tasks/components/infoPanel/template.vue","../../src/pages/dashboard/tasks/components/infoPanel/info.vue","../../src/pages/dashboard/tasks/components/infoPanel/tipInfo.vue","../../src/pages/dashboard/tasks/components/infoPanel/file.vue","../../src/pages/dashboard/tasks/index.vue"],"sourcesContent":["import '../../../utils/index.mjs';\nimport { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';\n\nconst cardProps = buildProps({\n header: {\n type: String,\n default: \"\"\n },\n bodyStyle: {\n type: definePropType([String, Object, Array]),\n default: \"\"\n },\n shadow: {\n type: String,\n values: [\"always\", \"hover\", \"never\"],\n default: \"always\"\n }\n});\n\nexport { cardProps };\n//# sourceMappingURL=card.mjs.map\n","import '../../utils/index.mjs';\nimport Card from './src/card2.mjs';\nexport { cardProps } from './src/card.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElCard = withInstall(Card);\n\nexport { ElCard, ElCard as default };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, openBlock, createElementBlock, normalizeClass, unref, renderSlot, createTextVNode, toDisplayString, createCommentVNode, createElementVNode, normalizeStyle } from 'vue';\nimport '../../../hooks/index.mjs';\nimport { cardProps } from './card.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\n\nconst __default__ = {\n name: \"ElCard\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: cardProps,\n setup(__props) {\n const ns = useNamespace(\"card\");\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([unref(ns).b(), unref(ns).is(`${_ctx.shadow}-shadow`)])\n }, [\n _ctx.$slots.header || _ctx.header ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"header\"))\n }, [\n renderSlot(_ctx.$slots, \"header\", {}, () => [\n createTextVNode(toDisplayString(_ctx.header), 1)\n ])\n ], 2)) : createCommentVNode(\"v-if\", true),\n createElementVNode(\"div\", {\n class: normalizeClass(unref(ns).e(\"body\")),\n style: normalizeStyle(_ctx.bodyStyle)\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 6)\n ], 2);\n };\n }\n});\nvar Card = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"/home/runner/work/element-plus/element-plus/packages/components/card/src/card.vue\"]]);\n\nexport { Card as default };\n//# sourceMappingURL=card2.mjs.map\n","import { isNil } from 'lodash-unified';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../constants/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { useSizeProp } from '../../../hooks/use-common-props/index.mjs';\nimport { isNumber } from '@vueuse/core';\nimport { CHANGE_EVENT, INPUT_EVENT, UPDATE_MODEL_EVENT } from '../../../constants/event.mjs';\n\nconst inputNumberProps = buildProps({\n id: {\n type: String,\n default: void 0\n },\n step: {\n type: Number,\n default: 1\n },\n stepStrictly: Boolean,\n max: {\n type: Number,\n default: Number.POSITIVE_INFINITY\n },\n min: {\n type: Number,\n default: Number.NEGATIVE_INFINITY\n },\n modelValue: Number,\n disabled: Boolean,\n size: useSizeProp,\n controls: {\n type: Boolean,\n default: true\n },\n controlsPosition: {\n type: String,\n default: \"\",\n values: [\"\", \"right\"]\n },\n valueOnClear: {\n type: [String, Number, null],\n validator: (val) => val === null || isNumber(val) || [\"min\", \"max\"].includes(val),\n default: null\n },\n name: String,\n label: String,\n placeholder: String,\n precision: {\n type: Number,\n validator: (val) => val >= 0 && val === Number.parseInt(`${val}`, 10)\n },\n validateEvent: {\n type: Boolean,\n default: true\n }\n});\nconst inputNumberEmits = {\n [CHANGE_EVENT]: (prev, cur) => prev !== cur,\n blur: (e) => e instanceof FocusEvent,\n focus: (e) => e instanceof FocusEvent,\n [INPUT_EVENT]: (val) => isNumber(val) || isNil(val),\n [UPDATE_MODEL_EVENT]: (val) => isNumber(val) || isNil(val)\n};\n\nexport { inputNumberEmits, inputNumberProps };\n//# sourceMappingURL=input-number.mjs.map\n","import { defineComponent, ref, reactive, computed, watch, onMounted, onUpdated, openBlock, createElementBlock, normalizeClass, unref, withModifiers, withDirectives, withKeys, createVNode, withCtx, createBlock, createCommentVNode } from 'vue';\nimport { isNil } from 'lodash-unified';\nimport { ElInput } from '../../input/index.mjs';\nimport { ElIcon } from '../../icon/index.mjs';\nimport '../../../directives/index.mjs';\nimport '../../../hooks/index.mjs';\nimport '../../../utils/index.mjs';\nimport { ArrowDown, Minus, ArrowUp, Plus } from '@element-plus/icons-vue';\nimport { inputNumberProps, inputNumberEmits } from './input-number.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useLocale } from '../../../hooks/use-locale/index.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { useFormItem } from '../../../hooks/use-form-item/index.mjs';\nimport { isNumber } from '@vueuse/core';\nimport { isUndefined } from '../../../utils/types.mjs';\nimport { debugWarn } from '../../../utils/error.mjs';\nimport { useSize, useDisabled } from '../../../hooks/use-common-props/index.mjs';\nimport { isString } from '@vue/shared';\nimport RepeatClick from '../../../directives/repeat-click/index.mjs';\n\nconst _hoisted_1 = [\"aria-label\", \"onKeydown\"];\nconst _hoisted_2 = [\"aria-label\", \"onKeydown\"];\nconst __default__ = {\n name: \"ElInputNumber\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: inputNumberProps,\n emits: inputNumberEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const { t } = useLocale();\n const ns = useNamespace(\"input-number\");\n const input = ref();\n const data = reactive({\n currentValue: props.modelValue,\n userInput: null\n });\n const { formItem } = useFormItem();\n const minDisabled = computed(() => isNumber(props.modelValue) && ensurePrecision(props.modelValue, -1) < props.min);\n const maxDisabled = computed(() => isNumber(props.modelValue) && ensurePrecision(props.modelValue) > props.max);\n const numPrecision = computed(() => {\n const stepPrecision = getPrecision(props.step);\n if (!isUndefined(props.precision)) {\n if (stepPrecision > props.precision) {\n debugWarn(\"InputNumber\", \"precision should not be less than the decimal places of step\");\n }\n return props.precision;\n } else {\n return Math.max(getPrecision(props.modelValue), stepPrecision);\n }\n });\n const controlsAtRight = computed(() => {\n return props.controls && props.controlsPosition === \"right\";\n });\n const inputNumberSize = useSize();\n const inputNumberDisabled = useDisabled();\n const displayValue = computed(() => {\n if (data.userInput !== null) {\n return data.userInput;\n }\n let currentValue = data.currentValue;\n if (isNil(currentValue))\n return \"\";\n if (isNumber(currentValue)) {\n if (Number.isNaN(currentValue))\n return \"\";\n if (!isUndefined(props.precision)) {\n currentValue = currentValue.toFixed(props.precision);\n }\n }\n return currentValue;\n });\n const toPrecision = (num, pre) => {\n if (isUndefined(pre))\n pre = numPrecision.value;\n if (pre === 0)\n return Math.round(num);\n let snum = String(num);\n const pointPos = snum.indexOf(\".\");\n if (pointPos === -1)\n return num;\n const nums = snum.replace(\".\", \"\").split(\"\");\n const datum = nums[pointPos + pre];\n if (!datum)\n return num;\n const length = snum.length;\n if (snum.charAt(length - 1) === \"5\") {\n snum = `${snum.slice(0, Math.max(0, length - 1))}6`;\n }\n return Number.parseFloat(Number(snum).toFixed(pre));\n };\n const getPrecision = (value) => {\n if (isNil(value))\n return 0;\n const valueString = value.toString();\n const dotPosition = valueString.indexOf(\".\");\n let precision = 0;\n if (dotPosition !== -1) {\n precision = valueString.length - dotPosition - 1;\n }\n return precision;\n };\n const ensurePrecision = (val, coefficient = 1) => {\n if (!isNumber(val))\n return data.currentValue;\n return toPrecision(val + props.step * coefficient);\n };\n const increase = () => {\n if (inputNumberDisabled.value || maxDisabled.value)\n return;\n const value = props.modelValue || 0;\n const newVal = ensurePrecision(value);\n setCurrentValue(newVal);\n };\n const decrease = () => {\n if (inputNumberDisabled.value || minDisabled.value)\n return;\n const value = props.modelValue || 0;\n const newVal = ensurePrecision(value, -1);\n setCurrentValue(newVal);\n };\n const verifyValue = (value, update) => {\n const { max, min, step, precision, stepStrictly, valueOnClear } = props;\n let newVal = Number(value);\n if (isNil(value) || Number.isNaN(newVal)) {\n return null;\n }\n if (value === \"\") {\n if (valueOnClear === null) {\n return null;\n }\n newVal = isString(valueOnClear) ? { min, max }[valueOnClear] : valueOnClear;\n }\n if (stepStrictly) {\n newVal = toPrecision(Math.round(newVal / step) * step, precision);\n }\n if (!isUndefined(precision)) {\n newVal = toPrecision(newVal, precision);\n }\n if (newVal > max || newVal < min) {\n newVal = newVal > max ? max : min;\n update && emit(\"update:modelValue\", newVal);\n }\n return newVal;\n };\n const setCurrentValue = (value) => {\n var _a;\n const oldVal = data.currentValue;\n const newVal = verifyValue(value);\n if (oldVal === newVal)\n return;\n data.userInput = null;\n emit(\"update:modelValue\", newVal);\n emit(\"input\", newVal);\n emit(\"change\", newVal, oldVal);\n if (props.validateEvent) {\n (_a = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a.call(formItem, \"change\").catch((err) => debugWarn(err));\n }\n data.currentValue = newVal;\n };\n const handleInput = (value) => {\n return data.userInput = value;\n };\n const handleInputChange = (value) => {\n const newVal = value !== \"\" ? Number(value) : \"\";\n if (isNumber(newVal) && !Number.isNaN(newVal) || value === \"\") {\n setCurrentValue(newVal);\n }\n data.userInput = null;\n };\n const focus = () => {\n var _a, _b;\n (_b = (_a = input.value) == null ? void 0 : _a.focus) == null ? void 0 : _b.call(_a);\n };\n const blur = () => {\n var _a, _b;\n (_b = (_a = input.value) == null ? void 0 : _a.blur) == null ? void 0 : _b.call(_a);\n };\n const handleFocus = (event) => {\n emit(\"focus\", event);\n };\n const handleBlur = (event) => {\n var _a;\n emit(\"blur\", event);\n if (props.validateEvent) {\n (_a = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a.call(formItem, \"blur\").catch((err) => debugWarn(err));\n }\n };\n watch(() => props.modelValue, (value) => {\n data.currentValue = verifyValue(value, true);\n data.userInput = null;\n }, { immediate: true });\n onMounted(() => {\n var _a;\n const { min, max, modelValue } = props;\n const innerInput = (_a = input.value) == null ? void 0 : _a.input;\n innerInput.setAttribute(\"role\", \"spinbutton\");\n if (Number.isFinite(max)) {\n innerInput.setAttribute(\"aria-valuemax\", String(max));\n } else {\n innerInput.removeAttribute(\"aria-valuemax\");\n }\n if (Number.isFinite(min)) {\n innerInput.setAttribute(\"aria-valuemin\", String(min));\n } else {\n innerInput.removeAttribute(\"aria-valuemin\");\n }\n innerInput.setAttribute(\"aria-valuenow\", String(data.currentValue));\n innerInput.setAttribute(\"aria-disabled\", String(inputNumberDisabled.value));\n if (!isNumber(modelValue) && modelValue != null) {\n let val = Number(modelValue);\n if (Number.isNaN(val)) {\n val = null;\n }\n emit(\"update:modelValue\", val);\n }\n });\n onUpdated(() => {\n var _a;\n const innerInput = (_a = input.value) == null ? void 0 : _a.input;\n innerInput == null ? void 0 : innerInput.setAttribute(\"aria-valuenow\", `${data.currentValue}`);\n });\n expose({\n focus,\n blur\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\n unref(ns).b(),\n unref(ns).m(unref(inputNumberSize)),\n unref(ns).is(\"disabled\", unref(inputNumberDisabled)),\n unref(ns).is(\"without-controls\", !_ctx.controls),\n unref(ns).is(\"controls-right\", unref(controlsAtRight))\n ]),\n onDragstart: _cache[0] || (_cache[0] = withModifiers(() => {\n }, [\"prevent\"]))\n }, [\n _ctx.controls ? withDirectives((openBlock(), createElementBlock(\"span\", {\n key: 0,\n role: \"button\",\n \"aria-label\": unref(t)(\"el.inputNumber.decrease\"),\n class: normalizeClass([unref(ns).e(\"decrease\"), unref(ns).is(\"disabled\", unref(minDisabled))]),\n onKeydown: withKeys(decrease, [\"enter\"])\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n unref(controlsAtRight) ? (openBlock(), createBlock(unref(ArrowDown), { key: 0 })) : (openBlock(), createBlock(unref(Minus), { key: 1 }))\n ]),\n _: 1\n })\n ], 42, _hoisted_1)), [\n [unref(RepeatClick), decrease]\n ]) : createCommentVNode(\"v-if\", true),\n _ctx.controls ? withDirectives((openBlock(), createElementBlock(\"span\", {\n key: 1,\n role: \"button\",\n \"aria-label\": unref(t)(\"el.inputNumber.increase\"),\n class: normalizeClass([unref(ns).e(\"increase\"), unref(ns).is(\"disabled\", unref(maxDisabled))]),\n onKeydown: withKeys(increase, [\"enter\"])\n }, [\n createVNode(unref(ElIcon), null, {\n default: withCtx(() => [\n unref(controlsAtRight) ? (openBlock(), createBlock(unref(ArrowUp), { key: 0 })) : (openBlock(), createBlock(unref(Plus), { key: 1 }))\n ]),\n _: 1\n })\n ], 42, _hoisted_2)), [\n [unref(RepeatClick), increase]\n ]) : createCommentVNode(\"v-if\", true),\n createVNode(unref(ElInput), {\n id: _ctx.id,\n ref_key: \"input\",\n ref: input,\n type: \"number\",\n step: _ctx.step,\n \"model-value\": unref(displayValue),\n placeholder: _ctx.placeholder,\n disabled: unref(inputNumberDisabled),\n size: unref(inputNumberSize),\n max: _ctx.max,\n min: _ctx.min,\n name: _ctx.name,\n label: _ctx.label,\n \"validate-event\": false,\n onKeydown: [\n withKeys(withModifiers(increase, [\"prevent\"]), [\"up\"]),\n withKeys(withModifiers(decrease, [\"prevent\"]), [\"down\"])\n ],\n onBlur: handleBlur,\n onFocus: handleFocus,\n onInput: handleInput,\n onChange: handleInputChange\n }, null, 8, [\"id\", \"step\", \"model-value\", \"placeholder\", \"disabled\", \"size\", \"max\", \"min\", \"name\", \"label\", \"onKeydown\"])\n ], 34);\n };\n }\n});\nvar InputNumber = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"/home/runner/work/element-plus/element-plus/packages/components/input-number/src/input-number.vue\"]]);\n\nexport { InputNumber as default };\n//# sourceMappingURL=input-number2.mjs.map\n","import '../../utils/index.mjs';\nimport InputNumber from './src/input-number2.mjs';\nexport { inputNumberEmits, inputNumberProps } from './src/input-number.mjs';\nimport { withInstall } from '../../utils/vue/install.mjs';\n\nconst ElInputNumber = withInstall(InputNumber);\n\nexport { ElInputNumber, ElInputNumber as default };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"CircleCloseFilled\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336L512 457.664z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar circleCloseFilled = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { circleCloseFilled as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"CirclePlusFilled\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm-38.4 409.6H326.4a38.4 38.4 0 1 0 0 76.8h147.2v147.2a38.4 38.4 0 0 0 76.8 0V550.4h147.2a38.4 38.4 0 0 0 0-76.8H550.4V326.4a38.4 38.4 0 1 0-76.8 0v147.2z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar circlePlusFilled = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { circlePlusFilled as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Delete\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V256zm448-64v-64H416v64h192zM224 896h576V256H224v640zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32zm192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar _delete = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { _delete as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Edit\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M832 512a32 32 0 1 1 64 0v352a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h352a32 32 0 0 1 0 64H192v640h640V512z\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"m469.952 554.24 52.8-7.552L847.104 222.4a32 32 0 1 0-45.248-45.248L477.44 501.44l-7.552 52.8zm422.4-422.4a96 96 0 0 1 0 135.808l-331.84 331.84a32 32 0 0 1-18.112 9.088L436.8 623.68a32 32 0 0 1-36.224-36.224l15.104-105.6a32 32 0 0 1 9.024-18.112l331.904-331.84a96 96 0 0 1 135.744 0z\"\n}, null, -1);\nconst _hoisted_4 = [\n _hoisted_2,\n _hoisted_3\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_4);\n}\nvar edit = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { edit as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Menu\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M160 448a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32H160zm448 0a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32H608zM160 896a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32H160zm448 0a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32H608z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar menu = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { menu as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Plus\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64h352z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar plus = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { plus as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Share\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"m679.872 348.8-301.76 188.608a127.808 127.808 0 0 1 5.12 52.16l279.936 104.96a128 128 0 1 1-22.464 59.904l-279.872-104.96a128 128 0 1 1-16.64-166.272l301.696-188.608a128 128 0 1 1 33.92 54.272z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar share = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { share as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Top\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M572.235 205.282v600.365a30.118 30.118 0 1 1-60.235 0V205.282L292.382 438.633a28.913 28.913 0 0 1-42.646 0 33.43 33.43 0 0 1 0-45.236l271.058-288.045a28.913 28.913 0 0 1 42.647 0L834.5 393.397a33.43 33.43 0 0 1 0 45.176 28.913 28.913 0 0 1-42.647 0l-219.618-233.23z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar top = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { top as default };\n","<template>\n <!-- 分类管理 -->\n <div class=\"panel\">\n <!-- 按钮 -->\n <div class=\"btn-area\">\n <h5>分类列表</h5>\n <h6 style=\"font-weight: lighter\">(点击分类可筛选任务)</h6>\n </div>\n <!-- 分类列表 -->\n <div style=\"margin-top: 15px\" class=\"category-list\">\n <div class=\"new-tag-wrap\">\n <!-- 新分类 -->\n <el-input\n class=\"input-new-tag el-tag\"\n v-if=\"isShowCreateCategory\"\n v-model=\"categoryName\"\n ref=\"saveTagInput\"\n placeholder=\"分类名称\"\n @keyup.enter=\"addCategory\"\n @focusout=\"addCategory\"\n ></el-input>\n <el-button\n v-else\n class=\"button-new-tag el-tag\"\n size=\"small\"\n @click=\"isShowCreateCategory = true\"\n >+ New 分类</el-button\n >\n <el-tag\n :effect=\"category === 'default' ? 'dark' : 'plain'\"\n @click=\"handleClickCategory('default')\"\n >默认{{ taskCount('default') }}</el-tag\n >\n <span class=\"list-tip\"\n ><el-tag\n type=\"danger\"\n :effect=\"category === 'trash' ? 'dark' : 'plain'\"\n @click=\"handleClickCategory('trash')\"\n ><el-icon><DeleteFilled /></el-icon> 回收站{{\n taskCount('trash')\n }}</el-tag\n ></span\n >\n </div>\n <div class=\"tag-wrap\">\n <div class=\"tag-list\">\n <el-tag\n v-for=\"tag in categorys\"\n :key=\"tag.k\"\n closable\n :effect=\"category === tag.k ? 'dark' : 'plain'\"\n @close=\"handleDeleteCategory(tag)\"\n @click=\"handleClickCategory(tag.k)\"\n >{{ tag.name }}{{ taskCount(tag.k) }}</el-tag\n >\n </div>\n </div>\n </div>\n </div>\n</template>\n<script lang=\"ts\">\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport { computed, defineComponent, ref } from 'vue'\nimport { DeleteFilled } from '@element-plus/icons-vue'\nimport { useStore } from 'vuex'\n\nexport default defineComponent({\n name: 'categoryPanel',\n components: {\n DeleteFilled\n },\n props: {\n category: {\n type: String,\n required: true,\n default: 'default'\n }\n },\n setup(props, context) {\n const $store = useStore()\n // 分类相关\n const categorys = computed(() => $store.state.category.categoryList)\n const tasks = computed(() => $store.state.task.taskList)\n const taskCount = (c: string) => {\n const count = tasks.value.filter((t: any) => t.category === c).length\n return count === 0 ? '' : ` (${count})`\n }\n const isShowCreateCategory = ref(false)\n const categoryName = ref('')\n const addCategory = () => {\n isShowCreateCategory.value = false\n if (!categoryName.value.trim()) {\n // ElMessage.warning('不能为空')\n return\n }\n $store\n .dispatch('category/createCategory', categoryName.value)\n .then(() => {\n ElMessage.success('创建成功')\n })\n .catch((err) => {\n if (err.code === 2001) {\n ElMessage.warning('分类名称已存在')\n }\n })\n categoryName.value = ''\n }\n\n const handleClickCategory = (k: string) => {\n context.emit('update:category', k)\n }\n\n const handleDeleteCategory = (c: any) => {\n ElMessageBox.confirm('是否删除', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消'\n })\n .then(() => {\n $store.dispatch('category/deleteCategory', c.k).then(() => {\n // 删除后变动的默认选择\n handleClickCategory('default')\n ElMessage.success('删除成功')\n // 获取最新的任务\n $store.dispatch('task/getTask')\n })\n })\n .catch(() => {\n ElMessage.info('取消删除')\n })\n }\n\n return {\n categorys,\n isShowCreateCategory,\n categoryName,\n addCategory,\n handleDeleteCategory,\n handleClickCategory,\n taskCount\n }\n }\n})\n</script>\n<style scoped lang=\"scss\">\n.el-tag {\n margin-left: 10px;\n margin-bottom: 10px;\n cursor: pointer;\n}\n.new-tag-wrap {\n display: flex;\n align-items: center;\n}\n.button-new-tag {\n margin-left: 10px;\n height: 32px;\n line-height: 30px;\n padding-top: 0;\n padding-bottom: 0;\n}\n.input-new-tag {\n width: 120px;\n padding: 0;\n margin-left: 10px;\n margin-bottom: 10px;\n vertical-align: bottom;\n}\n.panel {\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\n border-radius: 4px;\n}\n.btn-area {\n display: flex;\n justify-content: center;\n}\n.list-tip {\n // color: #67c23a;\n // font-size: 10px;\n margin-right: 10px;\n flex: 1;\n text-align: right;\n}\n.tag-wrap {\n width: 100%;\n height: 150px;\n}\n.tag-list {\n height: 150px;\n overflow-x: hidden;\n overflow-y: scroll;\n display: flex;\n flex-wrap: wrap;\n :deep(.el-tag) {\n width: 140px;\n }\n :deep(.el-tag__content) {\n width: 100px;\n text-align: center;\n text-overflow: ellipsis;\n word-break: keep-all;\n overflow: hidden;\n }\n}\n</style>\n","<template>\n <div>\n <div class=\"btn-area\">\n <el-button size=\"large\" type=\"primary\" :plain=\"!isShowCreateTask\" @click=\"\n isShowCreateTask =\n !isShowCreateTask\n \">\n {{\n isShowCreateTask\n ? '关闭创建面板'\n : '创建收集任务'\n }}\n </el-button>\n </div>\n <!-- 新增区域 -->\n <div v-show=\"isShowCreateTask\">\n <div class=\"input-container\">\n <el-input placeholder=\"请输入任务名称(上述列表选择分类)\" v-model=\"taskName\"></el-input>\n <el-button @click=\"createTask\" :type=\"taskName?.length ? 'success' : 'default'\">确定</el-button>\n </div>\n </div>\n <tip class=\"p10\">\n 点击\n <el-icon>\n <Menu />\n </el-icon> 可以进一步的调整任务\n </tip>\n <tip>\n 设置截止时间,自动重命名,名单限制,批注,文件模板。。🚀\n </tip>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ElMessage } from 'element-plus'\nimport {\n computed,\n ref,\n} from 'vue'\nimport { useStore } from 'vuex'\nimport { Menu } from '@element-plus/icons-vue'\nimport Tip from './infoPanel/tip.vue'\n\nconst props = defineProps({\n activeCategoryKey: {\n type: String,\n default: 'default',\n },\n})\nconst $store = useStore()\nconst categorys = computed(() => $store.state.category\n .categoryList)\nconst categoryName = computed(() => {\n if (props.activeCategoryKey\n === 'default') {\n return '默认'\n }\n return categorys.value.find((v: any) => v.k\n === props.activeCategoryKey).name\n})\n// 任务相关\nconst isShowCreateTask = ref(false)\nconst taskName = ref('')\nconst createTask = () => {\n if (!taskName.value.trim()) {\n ElMessage.warning('不能为空')\n return\n }\n $store\n .dispatch('task/createTask', {\n name: taskName.value,\n category: props.activeCategoryKey,\n })\n .then(() => {\n ElMessage.success('创建成功')\n })\n taskName.value = ''\n}\n\n</script>\n<style scoped>\n.btn-area {\n display: flex;\n justify-content: center;\n}\n\n.input-container {\n margin: 15px auto;\n max-width: 600px;\n background-color: #fff;\n display: flex;\n justify-content: space-around;\n}\n</style>\n","import { ElMessage } from 'element-plus'\nimport { TaskApi } from '@/apis'\nimport { debounce } from '@/utils/other'\n\nexport const updateTaskInfo: (\n key: string,\n options: TaskApiTypes.TaskInfo,\n successInfo?: boolean\n) => void = debounce(\n (key, options, successInfo = true) => {\n if (key) {\n TaskApi.updateTaskMoreInfo(key, options)\n .then(() => {\n if (successInfo) {\n ElMessage.success({\n message: '设置成功',\n zIndex: 4000,\n duration: 1000\n })\n }\n })\n .catch(() => {\n ElMessage.error({\n message: '设置失败',\n zIndex: 4000\n })\n })\n }\n },\n 1000,\n true\n)\n","<template>\n <div class=\"tc ddl\">\n <tip\n :imgs=\"[\n 'https://img.cdn.sugarat.top/mdImg/MTY0OTE0OTI4NjU5Nw==649149286597',\n 'https://img.cdn.sugarat.top/mdImg/MTY0OTE0OTMxMDEyOQ==649149310129',\n 'https://img.cdn.sugarat.top/mdImg/MTY0OTE0OTM3MzgxOA==649149373818'\n ]\"\n >设置截止日期,截止后将不能再提交文件。</tip\n >\n <div class=\"tc flex fc fac\">\n <el-date-picker\n :editable=\"false\"\n v-model=\"newDate\"\n type=\"datetime\"\n placeholder=\"点击设置新截止日期\"\n @change=\"updateDDL\"\n :default-time=\"new Date(ddl)\"\n ></el-date-picker>\n <el-button v-if=\"newDate\" @click=\"closeDDL\">取消</el-button>\n </div>\n <div style=\"margin-top: 10px\" v-if=\"newDate\">\n <tip>{{ isOver ? '已经截止' : `剩余时间: ${waitTimeStr}` }} </tip>\n </div>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, onMounted, ref, watchEffect } from 'vue'\nimport { formatDate } from '@/utils/stringUtil'\nimport { updateTaskInfo } from '../../public'\nimport Tip from './tip.vue'\n\nconst props = defineProps({\n ddl: {\n type: String,\n default: '',\n required: false\n },\n k: {\n type: String,\n default: ''\n }\n})\n\nconst newDate = ref()\nwatchEffect(() => {\n if (props.ddl) {\n newDate.value = new Date(props.ddl)\n } else {\n newDate.value = null\n }\n})\n// 更新DDL\nconst updateDDL = () => {\n if (newDate.value) {\n const ddl = formatDate(\n new Date(newDate.value.getTime() - 1000 * 60 * 60 * 8)\n )\n updateTaskInfo(props.k, { ddl })\n }\n}\n// 关闭DDL\nconst closeDDL = () => {\n newDate.value = null\n updateTaskInfo(props.k, { ddl: null })\n}\n\nconst waitTime = ref(0)\nconst isOver = computed(() => waitTime.value <= 0)\nconst waitTimeStr = computed(() => {\n let seconds = ~~(waitTime.value / 1000)\n let hour = ~~(seconds / (60 * 60))\n const day = ~~(hour / 24)\n hour %= 24\n const minute = ~~((seconds % 3600) / 60)\n seconds %= 60\n return `剩余${day}天${hour}时${minute}分${seconds}秒`\n})\n\nconst refreshWaitTime = (loop = true) => {\n if (newDate.value) {\n waitTime.value = newDate.value.getTime() - Date.now()\n } else {\n waitTime.value = 0\n }\n if (loop) {\n setTimeout(() => {\n refreshWaitTime()\n }, 1000)\n }\n}\n\nonMounted(() => {\n refreshWaitTime()\n})\n</script>\n","<script lang=\"ts\" setup>\nimport type { UploadUserFile } from 'element-plus'\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport { computed, reactive, ref, watch, watchEffect } from 'vue'\nimport { useStore } from 'vuex'\nimport { updateTaskInfo } from '../../public'\nimport Tip from './tip.vue'\nimport { PeopleApi, TaskApi } from '@/apis'\nimport { tableToExcel, uploadFile } from '@/utils/networkUtil'\nimport { formatDate } from '@/utils/stringUtil'\nimport { useIsMobile } from '@/composables'\n\nconst props = defineProps({\n value: {\n type: Number,\n defalut: 0,\n },\n k: {\n type: String,\n default: '',\n },\n name: {\n type: String,\n default: '',\n },\n field: {\n type: String,\n default: '姓名',\n },\n})\n\nconst activeTab = ref('手动添加')\nconst userInputName = ref('')\nconst importStatus = ref(false)\n\nfunction handAddName() {\n if (!userInputName.value) {\n return\n }\n importStatus.value = true\n PeopleApi.addPeopleByUser(userInputName.value, props.k)\n .then(() => {\n ElMessage.success(`添加 ${userInputName.value} 成功`)\n })\n .catch(() => {\n ElMessage.error(`${userInputName.value} 已存在`)\n })\n .finally(() => {\n importStatus.value = false\n userInputName.value = ''\n })\n}\nconst checkMore = ref(false)\n\nconst people = ref(0)\nwatchEffect(() => {\n people.value = props.value as number\n})\n// 限制提交人员\nfunction updateLimitPeople(limit: boolean) {\n updateTaskInfo(props.k, {\n people: +limit,\n })\n people.value = +limit\n}\n\n// 查看提交情况\nconst showPeopleList = ref(false)\nconst peopleList: any = reactive([])\nconst selectSubmitStatus = ref('all')\nconst searchName = ref('')\nconst filterPeopleBySearchWord = computed(() => {\n if (!searchName.value) {\n return peopleList\n }\n return peopleList.filter(v => v.name.includes(searchName.value))\n})\nconst peopleSubmitData = computed(() => {\n if (selectSubmitStatus.value === 'all') {\n return filterPeopleBySearchWord.value\n }\n return filterPeopleBySearchWord.value.filter(\n p => p.status === selectSubmitStatus.value,\n )\n})\nconst isLoadingPeopleData = ref(false)\nfunction refreshSubmitData() {\n isLoadingPeopleData.value = true\n PeopleApi.getPeople(props.k, `${+checkMore.value}`).then((res) => {\n peopleList.splice(0, peopleList.length)\n peopleList.push(...res.data.people)\n peopleList.forEach((p) => {\n if (!p.status && p.count === 0) {\n p.lastDate = '暂无记录'\n }\n else {\n p.lastDate = formatDate(new Date(p.lastDate), 'yyyy-MM-dd hh:mm:ss')\n }\n })\n isLoadingPeopleData.value = false\n })\n}\nfunction handleCheckMore() {\n checkMore.value = !checkMore.value\n if (checkMore.value) {\n refreshSubmitData()\n }\n}\nfunction checkPeople() {\n showPeopleList.value = true\n // 默认不展示提交数量\n checkMore.value = false\n refreshSubmitData()\n}\nfunction handleDeletePeople(item: any) {\n ElMessageBox.confirm('确认删除此人员吗', '数据无价,请谨慎操作')\n .then(() => {\n PeopleApi.deletePeople(props.k, item.id).then(() => {\n ElMessage.success('删除成功')\n peopleList.splice(\n peopleList.findIndex(v => v.id === item.id),\n 1,\n )\n })\n })\n .catch(() => {\n ElMessage.info('取消删除')\n })\n}\n// 文件上传\nconst peopleFileList = ref<UploadUserFile[]>([])\nconst peopleUpload = ref()\n// 超出选择的文件个数\nfunction handleExceedFile() {\n ElMessage.error('只能选择一个文件,可删除后重新选择')\n}\n// 清空文件\nfunction clearFiles() {\n peopleFileList.value.splice(0, peopleFileList.value.length)\n peopleUpload.value.clearFiles()\n}\n// 开始上传\nfunction submitUploadPeople() {\n peopleFileList.value.forEach((file) => {\n uploadFile(\n file.raw,\n `${import.meta.env.VITE_APP_AXIOS_BASE_URL}public/upload`,\n {\n success: (e: any) => {\n const { name, type } = e.data\n PeopleApi.importPeople(props.k, name, type).then((res) => {\n const { success, fail } = res.data\n ElMessage.success(`导入完成:${success}成功,${fail.length}失败`)\n if (fail.length > 0) {\n setTimeout(() => {\n ElMessage.info('自动开始下载未成功导入名单')\n tableToExcel(\n ['未成功导入名单'],\n fail.map((v: string) => [v]),\n `${props.name}_导入失败名单_${formatDate(\n new Date(),\n 'yyyy年MM月日hh时mm分ss秒',\n )}.xlsx`,\n )\n }, 1000)\n }\n clearFiles()\n })\n },\n },\n )\n })\n}\n// 添加文件\nfunction handleChangeFile(file: any) {\n if (file.raw.type !== 'text/plain') {\n ElMessage.warning({\n message: '只支持txt文件',\n zIndex: 4000,\n })\n clearFiles()\n }\n}\nfunction handleExportExcel() {\n if (peopleSubmitData.value.length === 0) {\n ElMessage.warning('表格中没有可导出数据')\n return\n }\n const headers = [\n '姓名',\n '提交状态',\n '提交数量',\n '最后操作时间',\n ...(checkMore.value ? ['现存数量', '提交次数'] : []),\n ]\n const body = peopleSubmitData.value.map((v) => {\n const { name, status, lastDate, submitCount, fileCount, count } = v\n return [\n name,\n status ? '✔' : 'x',\n submitCount,\n status ? formatDate(new Date(lastDate)) : '',\n ...(checkMore.value ? [fileCount, count] : []),\n ]\n })\n tableToExcel(\n headers,\n body,\n `${props.name}_提交情况_${formatDate(\n new Date(),\n 'yyyy年MM月日hh时mm分ss秒',\n )}.xlsx`,\n )\n ElMessage.success('导出成功')\n}\n\nconst isMobile = useIsMobile()\nconst importPanelInfo = reactive({\n taskList: [],\n type: 'override',\n taskValue: '',\n})\nconst showImportPanel = ref(false)\nasync function openImportPanel() {\n const taskKey = props.k\n // 通过任务Key获取可用任务列表,与概况信息\n const { data } = await PeopleApi.getUsefulTemplate(taskKey)\n importPanelInfo.taskList = data\n importPanelInfo.taskValue = data[0]?.taskKey || ''\n showImportPanel.value = true\n}\nconst ImportTaskTipMsg = computed(() => {\n const { taskList, taskValue } = importPanelInfo\n const task = taskList.find(v => v.taskKey === taskValue)\n if (!task) {\n return '无可用任务'\n }\n return `${task.count} 条数据`\n})\nfunction handleSaveImportInfo() {\n PeopleApi.importPeopleFromTpl(\n props.k,\n importPanelInfo.taskValue,\n importPanelInfo.type,\n ).then((res) => {\n showImportPanel.value = false\n const { success, fail } = res.data\n ElMessage.success(`导入成功${success}条,失败${fail.length}条`)\n\n if (fail.length > 0) {\n setTimeout(() => {\n ElMessage.info('自动开始下载未成功导入名单')\n tableToExcel(\n ['未成功导入名单'],\n fail.map((v: string) => [v]),\n `${props.name}_导入失败名单_${formatDate(\n new Date(),\n 'yyyy年MM月日hh时mm分ss秒',\n )}.xlsx`,\n )\n }, 1000)\n }\n })\n}\n\nconst importPanelFlexStyle = computed(() => (isMobile.value ? '0 0 auto' : 0.5))\n\nconst bindField = ref('姓名')\nwatch(\n () => props.field,\n (v) => {\n bindField.value = v\n },\n {\n immediate: true,\n },\n)\nfunction handleSureBind() {\n // 空值校验\n if (!bindField.value.trim().length) {\n ElMessage.warning('绑定的表单项不能为空')\n return\n }\n\n // 提交保存\n TaskApi.updateTaskMoreInfo(props.k, {\n bindField: bindField.value,\n }).then(() => {\n ElMessage.success('保存成功')\n })\n}\n</script>\n\n<template>\n <div class=\"tc info-panel\">\n <Tip\n :imgs=\"[\n 'https://img.cdn.sugarat.top/mdImg/MTY1MDE4MzEwOTEzOQ==650183109139',\n 'https://img.cdn.sugarat.top/mdImg/MTY1MTQ5NjY3MTUyMw==651496671523',\n ]\"\n >\n 只有名单里的成员,才可提交文件\n </Tip>\n <el-button\n v-if=\"!people\"\n size=\"default\"\n round\n type=\"success\"\n @click=\"updateLimitPeople(true)\"\n >\n 开启\n </el-button>\n <el-button\n v-if=\"people\"\n size=\"default\"\n round\n type=\"danger\"\n @click=\"updateLimitPeople(false)\"\n >\n 关闭\n </el-button>\n <el-button\n v-if=\"people\"\n round\n size=\"default\"\n type=\"primary\"\n @click=\"checkPeople\"\n >\n 查看提交情况\n </el-button>\n <div v-if=\"people\" class=\"upload-people\">\n <el-radio-group v-model=\"activeTab\" size=\"small\">\n <el-radio-button label=\"文件导入\" />\n <el-radio-button label=\"任务导入\" />\n <el-radio-button label=\"手动添加\" />\n </el-radio-group>\n <div class=\"import-people-wrapper\">\n <div v-show=\"activeTab === '文件导入'\">\n <el-upload\n ref=\"peopleUpload\"\n v-model:file-list=\"peopleFileList\"\n accept=\"text/plain\"\n action=\"\"\n class=\"upload-demo\"\n :on-change=\"handleChangeFile\"\n :on-exceed=\"handleExceedFile\"\n :on-remove=\"clearFiles\"\n :auto-upload=\"false\"\n :limit=\"1\"\n >\n <template #trigger>\n <el-button size=\"small\" type=\"primary\">\n 选择文件\n </el-button>\n </template>\n <el-button\n style=\"margin-left: 10px\"\n size=\"small\"\n type=\"success\"\n :disabled=\"!peopleFileList.length\"\n @click=\"submitUploadPeople\"\n >\n 确定上传\n </el-button>\n <template #tip>\n <div class=\"el-upload__tip\">\n <Tip\n :imgs=\"[\n 'https://img.cdn.sugarat.top/mdImg/MTY1MDE4Mjk2NjUxMA==650182966510',\n ]\"\n >\n 只能上传 .txt 文本文件,每行一个名字\n </Tip>\n <Tip>如名字有特殊字符,建议去除</Tip>\n <Tip>上传文件导入的方式,为追加导入,不会覆盖已存在数据</Tip>\n </div>\n </template>\n </el-upload>\n </div>\n <div v-show=\"activeTab === '任务导入'\">\n <!-- 从其它任务导入 -->\n <el-button size=\"small\" type=\"success\" @click=\"openImportPanel\">\n 选择任务\n </el-button>\n <div class=\"p10\">\n <Tip>支持从已有的任务直接导入名单</Tip>\n </div>\n </div>\n <div v-show=\"activeTab === '手动添加'\">\n <div style=\"max-width: 300px; margin: 0 auto\">\n <el-input\n v-model=\"userInputName\"\n :disabled=\"importStatus\"\n placeholder=\"请输入姓名\"\n >\n <template #append>\n <el-button @click=\"handAddName\">\n 确定\n </el-button>\n </template>\n </el-input>\n </div>\n <div class=\"p10\">\n <Tip>会自动判重,不会重复添加</Tip>\n <Tip>大量名单优先推荐使用文件导入</Tip>\n </div>\n </div>\n </div>\n <div style=\"max-width: 320px; margin: 0 auto\">\n <el-form label-width=\"120px\">\n <el-form-item label=\"绑定表单项\" style=\"margin-bottom: 6px\">\n <el-input v-model=\"bindField\" size=\"small\" clearable>\n <template #append>\n <el-button @click=\"handleSureBind\">\n 确定\n </el-button>\n </template>\n </el-input>\n </el-form-item>\n <Tip style=\"\">\n 和表单项同名字段,可以避免重复填写!!\n </Tip>\n </el-form>\n </div>\n </div>\n <el-dialog v-model=\"showPeopleList\" :fullscreen=\"isMobile\" title=\"提交情况\">\n <!-- 上部分的筛选菜单 -->\n <div class=\"nav\">\n <div class=\"item\">\n <el-button\n :disabled=\"peopleList.length === 0\"\n type=\"success\"\n size=\"default\"\n @click=\"handleExportExcel\"\n >\n 导出记录\n </el-button>\n </div>\n <div class=\"item\">\n <el-select\n v-model=\"selectSubmitStatus\"\n size=\"default\"\n placeholder=\"状态筛选\"\n >\n <el-option label=\"全部\" value=\"all\" />\n <el-option label=\"已提交\" :value=\"1\" />\n <el-option label=\"未提交\" :value=\"0\" />\n </el-select>\n </div>\n <div class=\"item\">\n <el-input\n v-model=\"searchName\"\n size=\"default\"\n placeholder=\"输入要查询的姓名\"\n />\n </div>\n <div class=\"item\">\n <el-button type=\"primary\" size=\"default\" @click=\"handleCheckMore\">\n {{ checkMore ? '隐藏' : '显示' }}详细提交情况\n </el-button>\n </div>\n </div>\n <!-- 概况信息 -->\n <div class=\"tc p10\">\n <span>共: {{ peopleSubmitData.length }} 条数据</span>,\n <span>已提交: {{ peopleSubmitData.filter((v) => v.status).length }}</span>,\n <span>未提交: {{ peopleSubmitData.filter((v) => !v.status).length }}</span>\n </div>\n <div class=\"tc p10\">\n <Tip>\"提交次数\" 用户实际的提交次数</Tip>\n <Tip>\"现存数量\" 还存在于服务器上的文件数 (不包含删除) --- 慢查询</Tip>\n <Tip>\"提交数量\" 用户实际提交的文件数 (不包含撤回) --- 慢查询</Tip>\n </div>\n <!-- 数据部分 -->\n <el-table\n v-loading=\"isLoadingPeopleData\"\n element-loading-text=\"Loading...\"\n stripe\n border\n :data=\"peopleSubmitData\"\n height=\"460px\"\n >\n <el-table-column label=\"序号\" width=\"60\">\n <template #default=\"scope\">\n <div style=\"text-align: center\">\n {{ scope.$index + 1 }}\n </div>\n </template>\n </el-table-column>\n <el-table-column property=\"name\" label=\"姓名\" />\n <el-table-column label=\"提交状态\" width=\"100\">\n <template #default=\"scope\">\n <span v-if=\"scope.row.status\" class=\"submit-ok\">已提交</span>\n <span v-else class=\"submit-fail\">未提交</span>\n </template>\n </el-table-column>\n <el-table-column\n property=\"count\"\n label=\"提交次数\"\n width=\"94\"\n />\n <el-table-column\n sortable\n property=\"lastDate\"\n label=\"最后操作时间\"\n width=\"120\"\n />\n <template v-if=\"checkMore\">\n <el-table-column\n property=\"fileCount\"\n label=\"现存数量\"\n width=\"94\"\n />\n <el-table-column\n sortable\n property=\"submitCount\"\n label=\"提交数量\"\n width=\"120\"\n />\n </template>\n <el-table-column label=\"操作\" width=\"100\">\n <template #default=\"scope\">\n <el-button\n type=\"primary\"\n text\n size=\"small\"\n @click=\"handleDeletePeople(scope.row)\"\n >\n 删除\n </el-button>\n </template>\n </el-table-column>\n </el-table>\n </el-dialog>\n <el-dialog\n v-model=\"showImportPanel\"\n :fullscreen=\"isMobile\"\n title=\"人员列表导入\"\n >\n <el-form\n :model=\"importPanelInfo\"\n label-width=\"100px\"\n label-position=\"right\"\n >\n <el-form-item label=\"任务\">\n <el-select\n v-model=\"importPanelInfo.taskValue\"\n filterable\n placeholder=\"请选择\"\n no-data-text=\"无可用任务\"\n >\n <el-option\n v-for=\"t in importPanelInfo.taskList\"\n :key=\"t.taskKey\"\n :label=\"t.name\"\n :value=\"t.taskKey\"\n />\n </el-select>\n </el-form-item>\n <Tip>{{ ImportTaskTipMsg }}</Tip>\n <el-form-item label=\"任务\">\n <el-radio-group v-model=\"importPanelInfo.type\">\n <el-radio label=\"override\">\n 覆盖导入\n </el-radio>\n <el-radio label=\"add\">\n 追加导入\n </el-radio>\n </el-radio-group>\n </el-form-item>\n <Tip>\n {{\n importPanelInfo.type === 'override'\n ? '“覆盖导入” 将会覆盖原来的数据'\n : '“追加导入” 将只会导入不存在数据'\n }}\n </Tip>\n </el-form>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showImportPanel = false\">取 消</el-button>\n <el-button\n :disabled=\"!importPanelInfo.taskValue\"\n type=\"primary\"\n @click=\"handleSaveImportInfo\"\n >确 定</el-button>\n </span>\n </template>\n </el-dialog>\n </div>\n</template>\n\n<style scoped>\n.upload-people {\n padding: 10px;\n}\n\n.import-people-wrapper {\n padding: 10px 0;\n}\n.submit-ok {\n color: #67c23a;\n}\n\n.submit-fail {\n color: #f56c6c;\n}\n\n.nav {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n padding-bottom: 5px;\n}\n\n.nav .item {\n margin-left: 10px;\n margin-top: 5px;\n}\n\n.info-panel :deep(.el-form-item__label) {\n flex: v-bind(importPanelFlexStyle);\n}\n\n.info-panel :deep(.el-upload-list__item-name) {\n justify-content: center;\n}\n</style>\n","<template>\n <div class=\"tc info-panel\">\n <tip\n :imgs=\"[\n 'https://img.cdn.sugarat.top/mdImg/MTY1MDE4MjY3MjUxNw==650182672517'\n ]\"\n >设置的模板文件,可供用户在提交页下载。</tip\n >\n <el-button\n v-if=\"template\"\n :disabled=\"!template\"\n @click=\"deleteTemplate\"\n size=\"default\"\n round\n type=\"danger\"\n >删除</el-button\n >\n <div class=\"p10\">{{ template || '尚未设置模板文件' }}</div>\n <div class=\"upload-file\" v-if=\"!template\">\n <el-upload\n action=\"\"\n ref=\"elUpload\"\n :on-exceed=\"handleExceedFile\"\n :on-remove=\"clearFiles\"\n :auto-upload=\"false\"\n :limit=\"1\"\n v-model:file-list=\"fileList\"\n >\n <template #trigger>\n <el-button size=\"small\" type=\"primary\">选取文件</el-button>\n </template>\n <el-button\n @click=\"submitUploadPeople\"\n style=\"margin-left: 10px\"\n size=\"small\"\n type=\"success\"\n >设为模板</el-button\n >\n <template #tip>\n <div class=\"el-upload__tip\">选择模板文件,然后点击上传</div>\n </template>\n </el-upload>\n </div>\n </div>\n</template>\n<script lang=\"ts\">\nimport { ElMessage, UploadUserFile } from 'element-plus'\nimport { defineComponent, ref, watchEffect } from 'vue'\nimport { FileApi } from '@/apis'\nimport { qiniuUpload } from '@/utils/networkUtil'\nimport { updateTaskInfo } from '../../public'\nimport Tip from './tip.vue'\n\nexport default defineComponent({\n name: 'templatePanel',\n props: {\n value: {\n type: String,\n default: ''\n },\n k: {\n type: String,\n default: ''\n }\n },\n setup(props) {\n const template = ref()\n watchEffect(() => {\n if (props.value) {\n template.value = props.value\n } else {\n template.value = ''\n }\n })\n const percentage = ref(0)\n // 删除模板\n const deleteTemplate = () => {\n if (template.value) {\n // 移除文件,避免空间被长时间占用\n updateTaskInfo(props.k, { template: '' })\n template.value = ''\n percentage.value = 0\n }\n }\n // 文件上传\n const fileList = ref<UploadUserFile[]>([])\n const elUpload = ref()\n // 超出选择的文件个数\n const handleExceedFile = () => {\n ElMessage.error('只能选择一个文件,可删除后重新选择')\n }\n // 清空文件\n const clearFiles = () => {\n elUpload.value.clearFiles()\n }\n // 开始上传\n const submitUploadPeople = () => {\n fileList.value.forEach((file) => {\n if (!props.k) {\n return\n }\n const { name } = file\n const key = `easypicker2/${props.k}_template/${name}`\n if (file.status === 'ready') {\n file.status = 'uploading'\n // qiniu上传\n FileApi.getUploadToken().then((res) => {\n qiniuUpload(res.data.token, file.raw, key, {\n success() {\n ElMessage.success('上传成功')\n updateTaskInfo(props.k, { template: name })\n // 清理上传完成的\n clearFiles()\n template.value = name\n file.status = 'success'\n // hash,key\n // console.log(data)\n },\n process(per: number) {\n file.percentage = ~~per\n }\n })\n })\n }\n })\n }\n return {\n template,\n deleteTemplate,\n fileList,\n handleExceedFile,\n clearFiles,\n submitUploadPeople,\n elUpload,\n percentage\n }\n },\n components: { Tip }\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.info-panel :deep(.el-upload-list__item-name) {\n justify-content: center;\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport { computed, reactive, ref, watch, watchEffect } from 'vue'\nimport {\n CircleCloseFilled,\n CirclePlusFilled,\n Top,\n} from '@element-plus/icons-vue'\nimport { updateTaskInfo } from '../../public'\nimport Tip from './tip.vue'\nimport { TaskApi } from '@/apis'\nimport InfosForm from '@/components/InfosForm/index.vue'\nimport {\n getDefaultFormat,\n parseFileFormat,\n parseInfo,\n} from '@/utils/stringUtil'\nimport { useIsMobile, useSiteConfig } from '@/composables'\n\nconst props = defineProps({\n rewrite: {\n type: Number,\n default: 0,\n },\n info: {\n typs: String,\n default: '[]',\n },\n k: {\n type: String,\n default: '',\n },\n format: {\n type: String,\n default: '',\n required: false,\n },\n})\nconst formatData = reactive(getDefaultFormat())\nconst openPreview = ref(false)\nconst infoTypeList = reactive<{ label: string, value: InfoItemType }[]>([\n {\n label: '输入框',\n value: 'input',\n },\n {\n label: '固定内容',\n value: 'text',\n },\n {\n label: '单选框',\n value: 'radio',\n },\n {\n label: '下拉选择',\n value: 'select',\n },\n])\nfunction getTypeDes(type: string) {\n return infoTypeList.find(v => v.value === type)?.label\n}\n\nconst selectType = ref<InfoItemType>('input')\n\nconst { value: siteConfig } = useSiteConfig()\nconst maxInputLength = computed(() => siteConfig.value.maxInputLength)\n\nconst autoRewrite = ref(false)\nconst infos = reactive<InfoItem[]>([])\nconst needSave = ref(false)\n\nconst showAddInfo = computed(() => infos.length < siteConfig.value.formLength && !openPreview.value)\n// 负责清空&更新\nwatch(\n () => props.info,\n () => {\n infos.splice(0, infos.length)\n selectType.value = 'input'\n openPreview.value = false\n infos.push(...parseInfo(props.info))\n needSave.value = false\n },\n {\n immediate: true,\n },\n)\n\n// 预计格式\nconst resFormat = computed(\n () => `${infos.map(v => v.text).join(formatData.splitChar)}.后缀`,\n)\nwatchEffect(() => {\n autoRewrite.value = !!props.rewrite\n})\nfunction handleChange(v: boolean) {\n updateTaskInfo(props.k, {\n rewrite: +v,\n })\n}\n\nfunction addInfo(infoList?: InfoItem[], type?: InfoItemType) {\n const list = infoList || infos\n const t = type || selectType.value\n const item: InfoItem = { text: `标题${list.length + 1}`, type: t, value: '' }\n if (t === 'radio' || t === 'select') {\n item.children = [{ text: '选项1' }, { text: '选项2' }]\n }\n list.push(item)\n needSave.value = true\n}\nfunction deleteInfo(idx: number, infoList?: InfoItem[], minLen = 1) {\n const list = infoList || infos\n if (list.length <= minLen) {\n return\n }\n list.splice(idx, 1)\n needSave.value = true\n}\nfunction judgeInfoForm(items: InfoItem[]) {\n return items.every(v => v.text.trim() && judgeInfoForm(v.children || []))\n}\nfunction saveInfo() {\n if (!judgeInfoForm(infos)) {\n ElMessage.error('请完整填写表单信息')\n setTimeout(() => {\n ElMessage.warning('不能有空项')\n }, 100)\n return\n }\n updateTaskInfo(props.k, {\n info: JSON.stringify(\n infos.map((v) => {\n // 特殊处理固定值的内容\n if (v.type === 'text') {\n v.value = v.text\n }\n return v\n }),\n ),\n })\n needSave.value = false\n}\n\nfunction moveInfoUp(idx: number) {\n if (idx === 0)\n return\n const temp = infos[idx - 1]\n infos.splice(idx - 1, 1)\n infos.splice(idx, 0, temp)\n}\n\nconst importPanelInfo = reactive({ taskList: [], taskValue: '' })\nconst showImportPanel = ref(false)\nasync function openImportPanel() {\n const taskKey = props.k\n // 通过任务Key获取可用任务列表,与概况信息\n const { data } = await TaskApi.getUsefulTemplate(taskKey)\n importPanelInfo.taskList = data\n importPanelInfo.taskValue = data[0]?.taskKey || ''\n showImportPanel.value = true\n}\n\nfunction handleSaveImportInfo() {\n const usefulInfo = importPanelInfo.taskList.find(\n v => v.taskKey === importPanelInfo.taskValue,\n ).info\n infos.splice(0, infos.length)\n infos.push(...parseInfo(usefulInfo))\n showImportPanel.value = false\n needSave.value = true\n}\n\nconst isMobile = useIsMobile()\nconst importPanelFlexStyle = computed(() => (isMobile.value ? '0 0 auto' : 0.5))\n\nfunction showHelp() {\n ElMessageBox.alert(\n '<p>固定内容主要用于重命名中,固定的部分,如“活动名”,“班级名”</p><p>如要设置注意事项,请使用 <strong>批注</strong> 功能</p>',\n '注意事项',\n { dangerouslyUseHTMLString: true },\n )\n}\n\nfunction handleChangeSplitChar() {\n updateTaskInfo(props.k, {\n format: JSON.stringify(formatData),\n })\n}\nconst splitCharList = reactive(['-', '+', '_'])\nwatchEffect(() => {\n if (props.format !== null) {\n Object.assign(formatData, parseFileFormat(props.format))\n }\n})\n</script>\n\n<template>\n <div class=\"tc\">\n <Tip\n :imgs=\"[\n 'https://img.cdn.sugarat.top/mdImg/MTY1MDE4MzM3NjUyNg==650183376526',\n 'https://img.cdn.sugarat.top/mdImg/MTY1MTQ5NjU2ODcyNg==651496568726',\n ]\"\n >\n 上传文件必填表单信息\n </Tip>\n <div class=\"auto-format\">\n <span>文件自动重命名:</span>\n <el-switch\n v-model=\"autoRewrite\"\n style=\"display: block\"\n active-color=\"#13ce66\"\n inactive-color=\"#ff4949\"\n active-text=\"开\"\n inactive-text=\"关\"\n @change=\"handleChange\"\n />\n </div>\n <div v-if=\"autoRewrite\" style=\"margin-bottom: 10px\">\n 预期格式:\n <span style=\"color: #409eff\">{{ resFormat }}</span>\n </div>\n <div v-if=\"autoRewrite\" style=\"margin-bottom: 10px\">\n 分割符:\n <el-select\n v-model=\"formatData.splitChar\"\n placeholder=\"分隔符\"\n style=\"width: 60px\"\n size=\"small\"\n @change=\"handleChangeSplitChar\"\n >\n <el-option v-for=\"v in splitCharList\" :key=\"v\" :label=\"v\" :value=\"v\" />\n </el-select>\n </div>\n <Tip v-if=\"autoRewrite\" style=\"color: red\">\n 开启自动重命名后,重点关注文件名格式是否符合预期\n </Tip>\n <div>\n 预览\n <el-switch\n v-model=\"openPreview\"\n inline-prompt\n active-text=\"是\"\n inactive-text=\"否\"\n active-color=\"#13ce66\"\n inactive-color=\"#ff4949\"\n />\n </div>\n <!-- 必填信息区域 -->\n <div class=\"form-wrapper\">\n <InfosForm v-if=\"openPreview\" :infos=\"infos\" :disabled=\"openPreview\" />\n <el-form v-else label-width=\"100px\">\n <el-form-item v-for=\"(item, idx) in infos\" :key=\"idx\">\n <template #label>\n <div class=\"flex fc fac\">\n <div class=\"num-wrapper\">\n <div>{{ idx + 1 }}</div>\n </div>\n <div class=\"form-item-type\" :class=\"item.type\">\n {{ getTypeDes(item.type) }}\n </div>\n </div>\n </template>\n <el-input\n v-model=\"item.text\"\n placeholder=\"输入内容\"\n :maxlength=\"maxInputLength\"\n clearable\n show-word-limit\n >\n <template #append>\n <div class=\"form-item-wrapper\">\n <el-icon\n :color=\"infos.length > 1 ? 'red' : 'grey'\"\n @click=\"deleteInfo(idx)\"\n >\n <CircleCloseFilled />\n </el-icon>\n <el-icon\n v-if=\"idx > 0\"\n color=\"#000\"\n style=\"margin-left: 6px\"\n @click=\"moveInfoUp(idx)\"\n >\n <Top />\n </el-icon>\n </div>\n </template>\n </el-input>\n <div\n v-if=\"item.type === 'radio' || item.type === 'select'\"\n class=\"radio-list\"\n >\n <el-input\n v-for=\"(v, idx2) in item.children\"\n :key=\"idx2\"\n v-model=\"v.text\"\n size=\"small\"\n placeholder=\"输入内容\"\n :maxlength=\"maxInputLength\"\n clearable\n show-word-limit\n >\n <template #append>\n <div class=\"form-item-wrapper\">\n <el-icon\n :color=\"item.children.length > 2 ? 'red' : 'grey'\"\n @click=\"deleteInfo(idx2, item.children, 2)\"\n >\n <CircleCloseFilled />\n </el-icon>\n <template v-if=\"idx2 + 1 === item.children.length\">\n <el-icon\n style=\"margin-left: 10px\"\n color=\"#67C23A\"\n @click=\"addInfo(item.children, item.type)\"\n >\n <CirclePlusFilled />\n </el-icon>\n </template>\n </div>\n </template>\n </el-input>\n </div>\n </el-form-item>\n </el-form>\n </div>\n <div v-if=\"showAddInfo\" class=\"p10\">\n <el-button\n size=\"small\"\n type=\"primary\"\n round\n @click=\"\n () => {\n addInfo()\n }\n \"\n >\n 添加一项\n </el-button>\n <el-select\n v-model=\"selectType\"\n style=\"margin: 0 10px\"\n size=\"small\"\n placeholder=\"选择添加的类型\"\n >\n <el-option\n v-for=\"(v, idx) in infoTypeList\"\n :key=\"idx\"\n :label=\"v.label\"\n :value=\"v.value\"\n />\n </el-select>\n <el-button type=\"primary\" text @click=\"showHelp\">\n 提示❓\n </el-button>\n </div>\n <!-- 从其它任务导入 -->\n <el-button size=\"small\" type=\"warning\" @click=\"openImportPanel\">\n 从其它任务导入\n </el-button>\n <div class=\"p10\">\n <Tip>支持从已有的任务直接导入表单信息</Tip>\n <el-button type=\"success\" style=\"width: 200px\" @click=\"saveInfo\">\n 保存\n </el-button>\n </div>\n <div v-if=\"needSave\" style=\"color: red\">\n 有变动,请记得点击保存\n </div>\n <div class=\"info-panel\">\n <el-dialog\n v-model=\"showImportPanel\"\n :fullscreen=\"isMobile\"\n title=\"表单信息导入\"\n >\n <el-form\n :model=\"importPanelInfo\"\n label-width=\"100px\"\n label-position=\"right\"\n >\n <el-form-item label=\"任务\">\n <el-select\n v-model=\"importPanelInfo.taskValue\"\n filterable\n placeholder=\"请选择\"\n no-data-text=\"无可用任务\"\n >\n <el-option\n v-for=\"t in importPanelInfo.taskList\"\n :key=\"t.taskKey\"\n :label=\"t.name\"\n :value=\"t.taskKey\"\n />\n </el-select>\n </el-form-item>\n <Tip>{{ importPanelInfo.taskValue ? '' : '无可用任务' }}</Tip>\n </el-form>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showImportPanel = false\">取 消</el-button>\n <el-button\n :disabled=\"!importPanelInfo.taskValue\"\n type=\"primary\"\n @click=\"handleSaveImportInfo\"\n >确 定\n </el-button>\n </span>\n </template>\n </el-dialog>\n </div>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.auto-format {\n display: flex;\n justify-content: center;\n}\n\n:deep(.el-form-item__label) {\n display: flex;\n justify-content: center;\n align-items: flex-start;\n}\n\n.num-wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n border: 2px solid #000;\n text-align: center;\n font-size: 14px;\n}\n\n.info-panel :deep(.el-form-item__label) {\n flex: v-bind(importPanelFlexStyle);\n justify-content: flex-end;\n}\n\n.form-wrapper {\n max-width: 380px;\n margin: 0 auto;\n}\n\n.form-wrapper :deep(.el-input-group__append) {\n background-color: transparent;\n border: none;\n box-shadow: none;\n padding: 0;\n}\n\n.form-item-wrapper {\n width: 50px;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.form-item-type {\n margin-left: 10px;\n font-size: 12px;\n width: 48px;\n text-align: left;\n}\n\n.radio-list {\n padding-top: 10px;\n}\n\n.radio-list :deep(.el-input) {\n width: 80%;\n}\n</style>\n","<!-- eslint-disable ts/ban-ts-comment -->\n<script lang=\"ts\" setup>\nimport { computed, reactive, ref, watch } from 'vue'\nimport { Plus } from '@element-plus/icons-vue'\nimport type { UploadProps, UploadUserFile } from 'element-plus'\nimport { ElMessage } from 'element-plus'\nimport { updateTaskInfo } from '../../public'\nimport Tip from './tip.vue'\nimport { FileApi, PublicApi, TaskApi } from '@/apis'\nimport { qiniuUpload } from '@/utils/networkUtil'\nimport { getTipImageKey } from '@/utils/stringUtil'\n\nconst props = defineProps({\n tip: {\n type: String,\n default: '',\n required: false,\n },\n k: {\n type: String,\n default: '',\n },\n})\nconst textValue = ref('')\n\nconst tipData = reactive<{\n text: string\n imgs: {\n uid: number\n name: string\n }[]\n}>({\n text: '',\n imgs: [],\n})\nconst MaxImgCount = ref(3)\nconst imageList = ref<UploadUserFile[]>([])\nconst previewList = computed(() => {\n // @ts-expect-error\n return imageList.value.map(v => v!.preview || v.url)\n})\nconst previewIdx = ref(0)\n\nwatch(\n () => props.tip,\n () => {\n // 初始化\n try {\n const parseData = JSON.parse(props.tip)\n tipData.imgs = parseData.imgs\n tipData.text = parseData.text || ''\n imageList.value = tipData.imgs.map((v) => {\n return {\n ...v,\n url: 'https://img.cdn.sugarat.top/mdImg/MTY3NzkxMDI1NTU1Nw==20140524124237518.gif',\n }\n })\n if (imageList.value.length) {\n // 异步填充url\n PublicApi.getTipImageUrl(\n props.k,\n imageList.value.map(v => ({\n uid: v.uid,\n name: v.name,\n })),\n ).then((v) => {\n v.data.forEach((url, idx) => {\n imageList.value[idx].url = url.cover\n Object.assign(imageList.value[idx], {\n preview: url.preview,\n })\n })\n })\n }\n }\n catch {\n tipData.text = props.tip || ''\n tipData.imgs = []\n imageList.value = []\n }\n\n // 外部变动\n if (tipData.text) {\n textValue.value = tipData.text\n }\n else {\n textValue.value = ''\n }\n },\n {\n immediate: true,\n },\n)\nconst needSave = computed(() => tipData.text !== textValue.value)\n\n// 更新批注信息\nfunction updateTip(notify = true) {\n if (tipData.text !== textValue.value) {\n tipData.text = textValue.value\n }\n updateTaskInfo(props.k, { tip: JSON.stringify(tipData) }, notify)\n}\n\nconst imageViewerVisible = ref(false)\nfunction handleChangeFile(file: UploadUserFile) {\n if (!props.k) {\n return\n }\n const { name, uid } = file\n const key = getTipImageKey(props.k, name, uid)\n if (file.status === 'ready') {\n file.status = 'success'\n // qiniu上传\n FileApi.getUploadToken().then((res) => {\n qiniuUpload(res.data.token, file.raw, key, {\n success() {\n tipData.imgs.push({\n uid,\n name,\n })\n updateTip()\n },\n })\n })\n }\n}\nconst handleRemove: UploadProps['onRemove'] = (file) => {\n const { uid, name } = file\n const idx = tipData.imgs.findIndex(v => v.uid === uid)\n tipData.imgs.splice(idx, 1)\n updateTip()\n TaskApi.delTipImage(props.k, uid, name)\n}\n\nfunction handlePictureCardPreview(file) {\n imageViewerVisible.value = true\n const idx = imageList.value.findIndex(v => v.uid === file.uid)\n previewIdx.value = idx\n}\n// 超出选择的文件个数\nfunction handleExceedFile() {\n ElMessage.error(`只能选择${MaxImgCount.value}个图片,可删除后重新选择`)\n}\n</script>\n\n<template>\n <div class=\"tc ddl\">\n <Tip\n :imgs=\"[\n 'https://img.cdn.sugarat.top/mdImg/MTY1MTQ5NjI2OTI0MQ==651496269241',\n ]\"\n >\n 设置注意事项,供用户提交时查看\n </Tip>\n <Tip>注意控制字数和换行,避免展示异常,设置完记得预览一下,再投放</Tip>\n <div class=\"tc flex fc fac\">\n <el-input\n v-model=\"textValue\"\n :rows=\"5\"\n clearable\n :max=\"500\"\n show-word-limit\n type=\"textarea\"\n placeholder=\"请输入要展示的批注信息\"\n />\n </div>\n <div class=\"p10\">\n <el-button size=\"default\" type=\"success\" @click=\"updateTip\">\n 保存\n </el-button>\n <el-button size=\"default\" type=\"danger\" @click=\"textValue = ''\">\n 清空\n </el-button>\n </div>\n <Tip v-if=\"needSave\">\n 有变动记得保存\n </Tip>\n <Tip> 可以设置图片啦↓ 最多3张 </Tip>\n <el-upload\n v-model:file-list=\"imageList\"\n accept=\"image/*\"\n :limit=\"MaxImgCount\"\n action=\"\"\n list-type=\"picture-card\"\n :on-change=\"handleChangeFile\"\n :on-exceed=\"handleExceedFile\"\n :on-preview=\"handlePictureCardPreview\"\n :on-remove=\"handleRemove\"\n :auto-upload=\"false\"\n >\n <el-icon><Plus /></el-icon>\n </el-upload>\n <ElImageViewer\n v-if=\"imageViewerVisible\"\n hide-on-click-modal\n :initial-index=\"previewIdx\"\n :url-list=\"previewList\"\n teleported\n @close=\"imageViewerVisible = false\"\n />\n </div>\n</template>\n","<template>\n <div class=\"tc\">\n <tip class=\"title\"> ↓下方设置允许提交的文件类型↓ </tip>\n <tip>暂时只支持通过文件名后缀进行卡控,不区分大小写</tip>\n <tip>例如:txt,png,jpeg,webp</tip>\n <div class=\"tc\">\n <el-switch\n active-text=\"限制文件类型\"\n inactive-text=\"不限制文件类型\"\n @change=\"handleChange\"\n :value=\"formatData.status\"\n style=\"--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949\"\n />\n </div>\n <div v-show=\"formatData.status\">\n <tip>支持英文逗号\",\"分割,一次添加多个</tip>\n <div style=\"max-width: 300px; margin: 0 auto\">\n <el-input v-model=\"typeName\" placeholder=\"请输入文件类型(省略.)\">\n <template #append>\n <el-button @click=\"handleAddType\"> 确定 </el-button>\n </template>\n </el-input>\n </div>\n <el-tag\n v-for=\"(tag, idx) in formatData.format\"\n :key=\"idx\"\n class=\"type\"\n closable\n :disable-transitions=\"false\"\n @close=\"handleDelType(idx)\"\n >\n {{ tag }}\n </el-tag>\n <tip v-show=\"formatData.format.length\"\n >已添加: <span>{{ formatData.format.join(',') }}</span>\n <el-button type=\"primary\" text size=\"small\" @click=\"handleCopyType\"\n >一键复制</el-button\n >\n </tip>\n </div>\n <div class=\"split-line\"></div>\n <tip class=\"title\"\n >↓下方设置最大同时提交文件数量(16 >= x >=1 默认 10)↓</tip\n >\n <div class=\"tc\">\n <el-input-number\n :model-value=\"formatData.limit\"\n :min=\"1\"\n :max=\"16\"\n @change=\"handleChangeLimit\"\n />\n </div>\n <div class=\"split-line\"></div>\n <tip class=\"title\"> ↓下方设置文件最大的大小↓ </tip>\n <tip>1024B = 1KB, 1024KB = 1MB, 1024MB = 1GB</tip>\n <tip>0表示不限制</tip>\n <div class=\"tc\">\n <el-input-number\n :model-value=\"inputSize\"\n :min=\"0\"\n :max=\"1024\"\n @change=\"handleLimitSize\"\n />\n <el-select\n @change=\"handleChangeUnit\"\n v-model=\"formatData.sizeUnit\"\n placeholder=\"单位\"\n style=\"width: 100px\"\n >\n <el-option v-for=\"v in unitList\" :key=\"v\" :label=\"v\" :value=\"v\" />\n </el-select>\n </div>\n <div class=\"split-line\"></div>\n <tip :style=\"formatData.size === 0 ? 'color:grey' : 'color:red'\">{{\n formatData.size === 0\n ? '不限制大小'\n : `限制为不超过: ${formatSize(formatData.size)}`\n }}</tip>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { ElMessage } from 'element-plus'\nimport { reactive, ref, watchEffect } from 'vue'\nimport {\n copyRes,\n formatSize,\n getDefaultFormat,\n parseFileFormat\n} from '@/utils/stringUtil'\nimport { updateTaskInfo } from '../../public'\nimport Tip from './tip.vue'\n\nconst props = defineProps({\n format: {\n type: String,\n default: '',\n required: false\n },\n k: {\n type: String,\n default: ''\n }\n})\n\nconst formatData = reactive(getDefaultFormat())\nconst typeName = ref('')\nconst updateInfo = () => {\n updateTaskInfo(props.k, {\n format: JSON.stringify(formatData)\n })\n}\nconst handleChange = (v: boolean) => {\n formatData.status = !!v\n updateInfo()\n}\n\nconst handleAddType = () => {\n const inputValue = typeName.value\n .split(',')\n // 转为小写\n .map((v) => v.trim().toLowerCase())\n for (const v of inputValue) {\n if (formatData.format.includes(v)) {\n ElMessage.error(`${v} 已存在`)\n return\n }\n }\n\n formatData.format.push(...inputValue)\n updateInfo()\n\n typeName.value = ''\n}\nconst handleDelType = (idx) => {\n formatData.format.splice(idx, 1)\n updateInfo()\n}\nconst handleCopyType = () => {\n copyRes(formatData.format.join(','))\n}\n\nconst handleChangeLimit = (limit: number) => {\n formatData.limit = limit\n updateInfo()\n}\n\nconst inputSize = ref(0)\nconst unitList = reactive(['B', 'KB', 'MB', 'GB'])\nconst handleChangeUnit = () => {\n const idx = unitList.findIndex((v) => v === formatData.sizeUnit)\n formatData.size = inputSize.value * 1024 ** idx\n updateInfo()\n}\nconst handleLimitSize = (limit: number) => {\n inputSize.value = limit\n const idx = unitList.findIndex((v) => v === formatData.sizeUnit)\n formatData.size = inputSize.value * 1024 ** idx\n updateInfo()\n}\n\nwatchEffect(() => {\n if (props.format !== null) {\n Object.assign(formatData, parseFileFormat(props.format))\n }\n})\n</script>\n<style scoped>\n.type {\n margin: 10px;\n}\n.split-line {\n margin-top: 10px;\n}\n.title {\n color: black;\n font-weight: bold;\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport { computed, onMounted, reactive, ref, watchEffect } from 'vue'\nimport { useStore } from 'vuex'\nimport LinkDialog from '@components/linkDialog.vue'\nimport CategoryPanel from './components/CategoryPanel.vue'\nimport CreateTask from './components/CreateTask.vue'\nimport TaskInfo from './components/TaskInfo.vue'\nimport DDlPanel from './components/infoPanel/ddl.vue'\nimport PeoplePanel from './components/infoPanel/people.vue'\nimport TemplatePanel from './components/infoPanel/template.vue'\nimport InfoPanel from './components/infoPanel/info.vue'\nimport TipInfoPanel from './components/infoPanel/tipInfo.vue'\nimport FileInfoPanel from './components/infoPanel/file.vue'\nimport { copyRes } from '@/utils/stringUtil'\nimport { TaskApi } from '@/apis'\nimport { useIsMobile } from '@/composables'\n\nconst $store = useStore()\n\nconst isMobile = useIsMobile()\n// 分类相关\nconst categorys = computed(() => $store.state.category.categoryList)\n\n// 任务相关\nconst selectCategory = ref('default')\nconst tasks = computed<TaskApiTypes.TaskItem[]>(\n () => $store.state.task.taskList,\n)\nconst filterTasks = computed(() => {\n const t = tasks.value.filter(v => v.category === selectCategory.value)\n return t\n})\n\n// 删除任务\nfunction deleteTask(k: string, isTrash = false) {\n if (!k)\n return\n ElMessageBox.confirm(\n '确认删除此任务吗?',\n isTrash ? '!!回收站的删除后无法再恢复' : '数据无价,请谨慎操作',\n {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: isTrash ? 'error' : 'info',\n },\n )\n .then(() => {\n $store.dispatch('task/deleteTask', k).then(() => {\n ElMessage.success('删除成功')\n })\n })\n .catch(() => {\n ElMessage.info('取消删除')\n })\n}\n\n// 基本信息编辑\nconst showBaseInfoDialog = ref(false)\nconst taskBaseInfo = reactive({ name: '', category: '', key: '' })\nfunction editBaseInfo(task: any) {\n taskBaseInfo.name = task.name\n taskBaseInfo.category = task.category\n taskBaseInfo.key = task.key\n showBaseInfoDialog.value = true\n}\nfunction handleSaveEditInfo() {\n showBaseInfoDialog.value = false\n if (!taskBaseInfo.name.trim()) {\n ElMessage.warning('不能为空')\n return\n }\n $store.dispatch('task/updateTask', taskBaseInfo).then(() => {\n ElMessage.success('更新成功')\n })\n}\n\n// 生成分享链接\nconst shareTaskLink = ref('')\nconst showLinkModal = ref(false)\nfunction shareTask(k: string) {\n shareTaskLink.value = 'default'\n const { origin } = window.location\n shareTaskLink.value = `${origin}/task/${k}`\n copyRes(shareTaskLink.value, '收集链接已自动复制到粘贴板')\n showLinkModal.value = true\n}\n\n// 附加属性编辑\nconst taskInfo = reactive<TaskApiTypes.TaskInfo>({})\nconst showTaskInfoPanel = ref(false)\nconst activeInfo = ref('info')\nconst activeTask: TaskApiTypes.TaskItem = reactive({\n category: '',\n key: '',\n name: '',\n recentLog: [],\n})\nfunction editMore(item: any) {\n Object.assign(activeTask, item)\n TaskApi.getTaskMoreInfo(item.key).then((res) => {\n // 先初始化,再赋值\n taskInfo.info = '[]'\n taskInfo.ddl = ''\n taskInfo.tip = ''\n taskInfo.format = ''\n taskInfo.bindField = ''\n setTimeout(() => {\n Object.assign(taskInfo, res.data)\n showTaskInfoPanel.value = true\n })\n })\n}\n\n// TODO: 有需要再优化,目前像bug\n// 用于选择默认展示项目\n// const taskCount = (c: string) => {\n// const count = tasks.value.filter((t: any) => t.category === c).length\n// return count\n// }\n\n// 选中一个有任务数据的分类\n// watchEffect(() => {\n// if (taskCount('default') > 0) {\n// return\n// }\n// if (categorys.value.length > 0) {\n// for (const c of categorys.value) {\n// if (taskCount(c.k) > 0) {\n// selectCategory.value = c.k\n// break\n// }\n// }\n// }\n// })\n\nonMounted(() => {\n $store.dispatch('category/getCategory')\n $store.dispatch('task/getTask')\n})\n\nfunction openTaskPage() {\n window.open(`/task/${activeTask.key}`)\n}\n</script>\n\n<template>\n <div class=\"tasks\">\n <!-- 分类管理 -->\n <div class=\"categorys-area\">\n <CategoryPanel v-model:category=\"selectCategory\" />\n </div>\n\n <!-- 任务管理 -->\n <div class=\"panel task-panel\">\n <!-- 创建任务 -->\n <CreateTask :active-category-key=\"selectCategory\" />\n\n <!-- 任务列表 -->\n <div class=\"task-list\">\n <TaskInfo\n v-for=\"item in filterTasks\"\n :key=\"item.key\"\n :item=\"item\"\n @edit=\"editBaseInfo\"\n @delete=\"deleteTask\"\n @share=\"shareTask\"\n @more=\"editMore\"\n />\n <el-empty\n v-if=\"filterTasks.length === 0\"\n description=\"此分类下没有任务哟,快去创建吧\"\n />\n </div>\n </div>\n\n <!-- 任务基本信息维护弹窗 -->\n <el-dialog\n v-model=\"showBaseInfoDialog\"\n draggable\n :fullscreen=\"isMobile\"\n title=\"基本信息修改\"\n >\n <el-form :model=\"taskBaseInfo\">\n <el-form-item label=\"任务名称\" label-width=\"100px\">\n <el-input v-model=\"taskBaseInfo.name\" autocomplete=\"off\" />\n </el-form-item>\n <el-form-item label=\"新的分类\" label-width=\"100px\">\n <el-select v-model=\"taskBaseInfo.category\" placeholder=\"请选择新分类\">\n <el-option label=\"默认\" value=\"default\" />\n <el-option\n v-for=\"c in categorys\"\n :key=\"c.k\"\n :label=\"c.name\"\n :value=\"c.k\"\n />\n </el-select>\n </el-form-item>\n </el-form>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showBaseInfoDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"handleSaveEditInfo\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n\n <!-- 分享链接弹窗(二维码/链接/短链) -->\n <LinkDialog\n v-model:value=\"showLinkModal\"\n :download=\"false\"\n title=\"收取链接\"\n :link=\"shareTaskLink\"\n />\n <!-- 附加属性编辑弹窗 -->\n <el-dialog\n v-model=\"showTaskInfoPanel\"\n :fullscreen=\"isMobile\"\n title=\"更多设置\"\n center\n >\n <div>\n <h3 class=\"tc\" style=\"font-size: 14px; color: #9e9e9e\">\n 任务名:<strong style=\"color: #000000\">{{ activeTask.name }}</strong>,\n <el-button type=\"primary\" text @click=\"openTaskPage\">\n 去查看效果\n </el-button>\n </h3>\n <el-tabs v-model=\"activeInfo\">\n <el-tab-pane label=\"截止日期\" name=\"ddl\">\n <DDlPanel :ddl=\"taskInfo.ddl\" :k=\"activeTask.key\" />\n </el-tab-pane>\n <el-tab-pane label=\"批注信息\" name=\"tip\">\n <TipInfoPanel\n :rewrite=\"taskInfo.rewrite\"\n :tip=\"taskInfo.tip\"\n :k=\"activeTask.key\"\n />\n </el-tab-pane>\n <el-tab-pane label=\"限制名单\" name=\"people\">\n <PeoplePanel\n :name=\"activeTask.name\"\n :value=\"taskInfo.people\"\n :k=\"activeTask.key\"\n :field=\"taskInfo.bindField\"\n />\n </el-tab-pane>\n <el-tab-pane label=\"必填信息\" name=\"info\">\n <InfoPanel\n :rewrite=\"taskInfo.rewrite\"\n :info=\"taskInfo.info\"\n :k=\"activeTask.key\"\n :format=\"taskInfo.format\"\n />\n </el-tab-pane>\n <el-tab-pane label=\"模板文件\" name=\"template\">\n <TemplatePanel :value=\"taskInfo.template\" :k=\"activeTask.key\" />\n </el-tab-pane>\n <el-tab-pane label=\"文件属性\" name=\"attr\">\n <FileInfoPanel :format=\"taskInfo.format\" :k=\"activeTask.key\" />\n </el-tab-pane>\n </el-tabs>\n </div>\n </el-dialog>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.tasks {\n max-width: 1024px;\n margin: 0 auto;\n padding-bottom: 2em;\n}\n\n.tasks :deep(.el-dialog__body) {\n padding-top: 10px;\n}\n\n.panel {\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\n border-radius: 4px;\n}\n\n.task-list {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n}\n\n@media screen and (max-width: 700px) {\n .categorys-area {\n margin-top: 20px;\n }\n :deep(.el-tabs__nav-scroll) {\n overflow-x: scroll;\n &::-webkit-scrollbar {\n display: none; /* Chrome Safari */\n }\n }\n}\n</style>\n"],"names":["cardProps","buildProps","header","type","String","default","bodyStyle","definePropType","Object","Array","shadow","values","ElCard","withInstall","_export_sfc","defineComponent","name","props","setup","__props","ns","useNamespace","_ctx","_cache","openBlock","createElementBlock","class","normalizeClass","unref","b","is","$slots","key","e","renderSlot","createTextVNode","toDisplayString","createCommentVNode","createElementVNode","style","normalizeStyle","inputNumberProps","id","step","Number","stepStrictly","Boolean","max","POSITIVE_INFINITY","min","NEGATIVE_INFINITY","modelValue","disabled","size","useSizeProp","controls","controlsPosition","valueOnClear","validator","val","isNumber","includes","label","placeholder","precision","parseInt","validateEvent","_hoisted_1","_hoisted_2","ElInputNumber","emits","CHANGE_EVENT","prev","cur","blur","FocusEvent","focus","INPUT_EVENT","isNil","UPDATE_MODEL_EVENT","expose","emit","t","useLocale","input","ref","data","reactive","currentValue","userInput","formItem","useFormItem","minDisabled","computed","ensurePrecision","maxDisabled","numPrecision","stepPrecision","getPrecision","isUndefined","Math","controlsAtRight","inputNumberSize","useSize","inputNumberDisabled","useDisabled","displayValue","isNaN","toFixed","toPrecision","num","pre","value","round","snum","pointPos","indexOf","replace","split","length","charAt","slice","parseFloat","valueString","toString","dotPosition","coefficient","increase","newVal","setCurrentValue","decrease","verifyValue","update","isString","_a","oldVal","validate","call","catch","err","debugWarn","handleInput","handleInputChange","handleFocus","event","handleBlur","watch","immediate","onMounted","innerInput","setAttribute","isFinite","removeAttribute","onUpdated","_b","m","onDragstart","withModifiers","withDirectives","role","onKeydown","withKeys","createVNode","ElIcon","withCtx","createBlock","ArrowDown","Minus","_","RepeatClick","ArrowUp","Plus","ElInput","ref_key","onBlur","onFocus","onInput","onChange","_sfc_main","viewBox","xmlns","_hoisted_3","fill","d","circleCloseFilled","$props","$setup","$data","$options","circlePlusFilled","_delete","_hoisted_4","edit","menu","plus","share","top","_sfc_main$9","components","DeleteFilled","category","required","context","$store","useStore","categorys","state","categoryList","tasks","task","taskList","isShowCreateCategory","categoryName","handleClickCategory","k","addCategory","trim","dispatch","then","ElMessage","success","code","warning","handleDeleteCategory","c","ElMessageBox","confirm","confirmButtonText","cancelButtonText","info","taskCount","count","filter","n","_pushScopeId","_popScopeId","_withScopeId","_createElementVNode","_hoisted_5","_component_el_icon","__unplugin_components_3","_openBlock","_createElementBlock","_createBlock","_component_el_input","$event","onFocusout","_component_el_button","onClick","_createTextVNode","_createVNode","_component_el_tag","effect","_toDisplayString","_withCtx","_component_DeleteFilled","_hoisted_6","_hoisted_7","_Fragment","_renderList","tag","closable","activeCategoryKey","find","v","isShowCreateTask","taskName","createTask","updateTaskInfo","debounce","options","successInfo","TaskApi","updateTaskMoreInfo","message","zIndex","duration","error","newDate","watchEffect","ddl","Date","updateDDL","formatDate","getTime","closeDDL","waitTime","isOver","waitTimeStr","seconds","hour","day","minute","refreshWaitTime","loop","now","setTimeout","activeTab","userInputName","importStatus","handAddName","PeopleApi","addPeopleByUser","finally","checkMore","people","updateLimitPeople","limit","showPeopleList","peopleList","selectSubmitStatus","searchName","filterPeopleBySearchWord","peopleSubmitData","p","status","isLoadingPeopleData","refreshSubmitData","getPeople","res","splice","push","forEach","lastDate","handleCheckMore","checkPeople","peopleFileList","peopleUpload","handleExceedFile","clearFiles","submitUploadPeople","file","uploadFile","raw","importPeople","fail","tableToExcel","map","handleChangeFile","handleExportExcel","headers","body","submitCount","fileCount","isMobile","useIsMobile","importPanelInfo","taskValue","showImportPanel","async","openImportPanel","taskKey","getUsefulTemplate","ImportTaskTipMsg","handleSaveImportInfo","importPeopleFromTpl","importPanelFlexStyle","bindField","handleSureBind","field","item","deletePeople","findIndex","_sfc_main$4","template","percentage","fileList","elUpload","deleteTemplate","FileApi","getUploadToken","qiniuUpload","token","process","per","Tip","_component_el_upload","__unplugin_components_1","_component_tip","imgs","_createCommentVNode","action","formatData","getDefaultFormat","openPreview","infoTypeList","selectType","siteConfig","useSiteConfig","maxInputLength","autoRewrite","infos","needSave","showAddInfo","formLength","parseInfo","resFormat","text","join","splitChar","handleChange","rewrite","addInfo","infoList","list","children","deleteInfo","idx","minLen","judgeInfoForm","items","every","saveInfo","JSON","stringify","usefulInfo","showHelp","alert","dangerouslyUseHTMLString","handleChangeSplitChar","format","splitCharList","assign","parseFileFormat","temp","textValue","tipData","MaxImgCount","imageList","previewList","preview","url","previewIdx","tip","parseData","parse","PublicApi","getTipImageUrl","uid","cover","updateTip","notify","imageViewerVisible","getTipImageKey","handleRemove","delTipImage","handlePictureCardPreview","typeName","updateInfo","handleAddType","inputValue","toLowerCase","handleCopyType","copyRes","handleChangeLimit","inputSize","unitList","handleChangeUnit","sizeUnit","handleLimitSize","selectCategory","filterTasks","deleteTask","isTrash","showBaseInfoDialog","taskBaseInfo","editBaseInfo","handleSaveEditInfo","shareTaskLink","showLinkModal","shareTask","origin","window","location","taskInfo","showTaskInfoPanel","activeInfo","activeTask","recentLog","editMore","getTaskMoreInfo","openTaskPage","open"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13]}
@@ -1,2 +1,2 @@
1
- System.register(["./index-legacy-BLKO-78a.js"],(function(a,t){"use strict";var c,e,i,d,r,f,l,n,s,v,o,p;return{setters:[a=>{c=a.d,e=a._,i=a.i,d=a.a,r=a.c,f=a.b,l=a.j,n=a.w,s=a.e,v=a.B,o=a.p,p=a.f}],execute:function(){var t=document.createElement("style");t.textContent="h1[data-v-57f0136c],h2[data-v-57f0136c],h3[data-v-57f0136c],h4[data-v-57f0136c]{font-weight:500}.about[data-v-57f0136c]{background-image:linear-gradient(120deg,#a1c4fd,#c2e9fb);min-height:100vh}main[data-v-57f0136c]{max-width:860px;margin:0 auto;padding:20px}main .panel[data-v-57f0136c]{position:relative;margin:0 auto 10px;padding:16px 20px;width:100%;overflow:hidden;border-radius:.25rem;box-shadow:#eee;box-sizing:border-box;transition:all .3s;background-color:#fff}main .logo[data-v-57f0136c]{width:100%;max-width:520px;margin:0 auto;display:block}main h1[data-v-57f0136c]{font-size:1.6rem;margin-bottom:10px}main h2[data-v-57f0136c]{font-size:1.3rem;margin-bottom:12px}main ul[data-v-57f0136c],main ol[data-v-57f0136c]{margin-left:20px;font-size:15px;margin-bottom:1em}main p[data-v-57f0136c]{font-size:15px;margin-bottom:1em}main a[data-v-57f0136c]{color:#409eff}\n",document.head.appendChild(t);const g=c({setup:()=>({})}),h=a=>(o("data-v-57f0136c"),a=a(),p(),a),u={class:"about"},m={class:"panel"},b=h((()=>f("img",{class:"logo",src:"https://img.cdn.sugarat.top/easypicker/EasyPicker.png"},null,-1))),k=h((()=>f("div",{class:"panel"},[f("h1",null,"简介"),f("p",null,"在线文件收取助手,帮助用户快速的完成一对多的文件收取")],-1))),y={class:"panel"},x=v('<h1 data-v-57f0136c>诞生背景</h1><p data-v-57f0136c>校园学习或者工作场景中会有以下几个场景:</p><ul data-v-57f0136c><li data-v-57f0136c><strong data-v-57f0136c>电子文件:</strong> 班委向同学收取各种实验电子报告</li><li data-v-57f0136c><strong data-v-57f0136c>图片:</strong> 收取各种截图证明/活动照片</li><li data-v-57f0136c>...</li></ul><p data-v-57f0136c>目前最广泛的收取方式为,通过邮箱,QQ,微信等通讯工具传递</p><p data-v-57f0136c>弊端显而易见,不方便整理统计。还占用电脑/手机内存</p><p data-v-57f0136c>为了解决这个问题,此项目应运而生</p><p data-v-57f0136c>当然<span data-v-57f0136c><strong data-v-57f0136c>市面上也有几款类似的办公工具</strong></span> ,功能及使用方式都差不多</p><p data-v-57f0136c>本项目<strong data-v-57f0136c>是 <a href="https://github.com/ATQQ/easypicker2-client" data-v-57f0136c>开源</a> 的</strong></p>',8),Q=v('<div class="panel" data-v-57f0136c><h1 data-v-57f0136c>现有功能 <span style="color:grey;font-size:0.8rem;" data-v-57f0136c>(用户关心的)</span></h1><h2 data-v-57f0136c>收集任务</h2><ul data-v-57f0136c><li data-v-57f0136c><strong data-v-57f0136c>分类管理: </strong> 收集任务支持分类管理</li><li data-v-57f0136c><strong data-v-57f0136c>设置DDL(截止日期): </strong> 任务截止后不可再提交文件</li><li data-v-57f0136c><strong data-v-57f0136c>限制提交人员: </strong> 非指定的人员(姓名),无法提交文件</li><li data-v-57f0136c><strong data-v-57f0136c>设置模板文件: </strong> 提交者可直接在提交页面下载此文件</li><li data-v-57f0136c><strong data-v-57f0136c>自动重命名: </strong> 提交的文件按填写表单信息进行自动重名(如:姓名-工号.后缀)</li></ul><h2 data-v-57f0136c>文件相关</h2><ul data-v-57f0136c><li data-v-57f0136c><strong data-v-57f0136c>上传(提交): </strong>单个/多个</li><li data-v-57f0136c><strong data-v-57f0136c>下载: </strong>单个/多个/按收集任务</li><li data-v-57f0136c><strong data-v-57f0136c>撤回: </strong>用户可以撤回自己提交的文件</li><li data-v-57f0136c><strong data-v-57f0136c>分享: </strong>用户可以将文件下载链接分享给朋友</li><li data-v-57f0136c><strong data-v-57f0136c>模板下载: </strong> 下载任务发布者设置的模板文件</li><li data-v-57f0136c><strong data-v-57f0136c>导出: </strong> 导出提交记录</li></ul></div><div class="panel" data-v-57f0136c><h1 data-v-57f0136c>相关链接</h1><h2 data-v-57f0136c>应用链接相关</h2><ul data-v-57f0136c><li data-v-57f0136c><a href="https://docs.ep.sugarat.top" target="_blank" rel="noopener noreferrer" data-v-57f0136c>私有化部署</a></li><li data-v-57f0136c><a target="_blank" href="https://ep.sugarat.top" data-v-57f0136c>Easypicker1.0</a></li><li data-v-57f0136c><a target="_blank" href="https://ep2.sugarat.top" data-v-57f0136c>Easypicker2.0</a></li></ul><h2 data-v-57f0136c>应用源代码 <span style="color:grey;font-size:0.8rem;" data-v-57f0136c>(开发者需要的)</span></h2><ul data-v-57f0136c><li data-v-57f0136c><a target="_blank" href="https://github.com/ATQQ/EasyPicker-webpack" data-v-57f0136c>Easypicker1.0-客户端</a></li><li data-v-57f0136c><a target="_blank" href="https://github.com/ATQQ/easypicker-server" data-v-57f0136c>Easypicker1.0-服务端</a></li></ul><ul data-v-57f0136c><li data-v-57f0136c><a target="_blank" href="https://github.com/ATQQ/easypicker2-client" data-v-57f0136c>Easypicker2.0-客户端</a></li><li data-v-57f0136c><a target="_blank" href="https://github.com/ATQQ/easypicker2-server" data-v-57f0136c>Easypicker2.0-服务端</a></li></ul><ul data-v-57f0136c><li data-v-57f0136c><a target="_blank" href="https://github.com/ATQQ/vite-vue3-template" data-v-57f0136c>Easypicker2.0-客户端模板仓库</a></li><li data-v-57f0136c><a target="_blank" href="https://github.com/ATQQ/node-server" data-v-57f0136c>Easypicker2.0-服务端模板仓库</a></li></ul><h2 data-v-57f0136c>作者 <span style="color:grey;font-size:0.8rem;" data-v-57f0136c>(夹带私货)</span></h2><ul data-v-57f0136c><li data-v-57f0136c><a target="_blank" href="https://sugarat.top" data-v-57f0136c>博客</a></li><li data-v-57f0136c><a target="_blank" href="https://github.com/ATQQ" data-v-57f0136c>GitHub</a></li><li data-v-57f0136c><a target="_blank" href="https://juejin.cn/user/1028798615918983" data-v-57f0136c>掘金</a></li></ul></div>',2);a("default",e(g,[["render",function(a,t,c,e,v,o){const p=i("router-link");return d(),r("div",u,[f("main",null,[f("div",m,[l(p,{to:"/"},{default:n((()=>[b])),_:1})]),k,f("div",y,[x,f("p",null,[s("如有私有化的需求,可自行部署使用(也可 "),l(p,{to:"/author"},{default:n((()=>[s("联系作者")])),_:1}),s(" 提供帮助)")])]),Q])])}],["__scopeId","data-v-57f0136c"]]))}}}));
2
- //# sourceMappingURL=index-legacy-DcKfHHls.js.map
1
+ System.register(["./index-legacy-DC5-MYgp.js"],(function(a,t){"use strict";var c,e,i,d,r,f,l,n,s,v,o,p;return{setters:[a=>{c=a.d,e=a._,i=a.i,d=a.a,r=a.c,f=a.b,l=a.j,n=a.w,s=a.e,v=a.B,o=a.p,p=a.f}],execute:function(){var t=document.createElement("style");t.textContent="h1[data-v-57f0136c],h2[data-v-57f0136c],h3[data-v-57f0136c],h4[data-v-57f0136c]{font-weight:500}.about[data-v-57f0136c]{background-image:linear-gradient(120deg,#a1c4fd,#c2e9fb);min-height:100vh}main[data-v-57f0136c]{max-width:860px;margin:0 auto;padding:20px}main .panel[data-v-57f0136c]{position:relative;margin:0 auto 10px;padding:16px 20px;width:100%;overflow:hidden;border-radius:.25rem;box-shadow:#eee;box-sizing:border-box;transition:all .3s;background-color:#fff}main .logo[data-v-57f0136c]{width:100%;max-width:520px;margin:0 auto;display:block}main h1[data-v-57f0136c]{font-size:1.6rem;margin-bottom:10px}main h2[data-v-57f0136c]{font-size:1.3rem;margin-bottom:12px}main ul[data-v-57f0136c],main ol[data-v-57f0136c]{margin-left:20px;font-size:15px;margin-bottom:1em}main p[data-v-57f0136c]{font-size:15px;margin-bottom:1em}main a[data-v-57f0136c]{color:#409eff}\n",document.head.appendChild(t);const g=c({setup:()=>({})}),h=a=>(o("data-v-57f0136c"),a=a(),p(),a),u={class:"about"},m={class:"panel"},b=h((()=>f("img",{class:"logo",src:"https://img.cdn.sugarat.top/easypicker/EasyPicker.png"},null,-1))),k=h((()=>f("div",{class:"panel"},[f("h1",null,"简介"),f("p",null,"在线文件收取助手,帮助用户快速的完成一对多的文件收取")],-1))),y={class:"panel"},x=v('<h1 data-v-57f0136c>诞生背景</h1><p data-v-57f0136c>校园学习或者工作场景中会有以下几个场景:</p><ul data-v-57f0136c><li data-v-57f0136c><strong data-v-57f0136c>电子文件:</strong> 班委向同学收取各种实验电子报告</li><li data-v-57f0136c><strong data-v-57f0136c>图片:</strong> 收取各种截图证明/活动照片</li><li data-v-57f0136c>...</li></ul><p data-v-57f0136c>目前最广泛的收取方式为,通过邮箱,QQ,微信等通讯工具传递</p><p data-v-57f0136c>弊端显而易见,不方便整理统计。还占用电脑/手机内存</p><p data-v-57f0136c>为了解决这个问题,此项目应运而生</p><p data-v-57f0136c>当然<span data-v-57f0136c><strong data-v-57f0136c>市面上也有几款类似的办公工具</strong></span> ,功能及使用方式都差不多</p><p data-v-57f0136c>本项目<strong data-v-57f0136c>是 <a href="https://github.com/ATQQ/easypicker2-client" data-v-57f0136c>开源</a> 的</strong></p>',8),Q=v('<div class="panel" data-v-57f0136c><h1 data-v-57f0136c>现有功能 <span style="color:grey;font-size:0.8rem;" data-v-57f0136c>(用户关心的)</span></h1><h2 data-v-57f0136c>收集任务</h2><ul data-v-57f0136c><li data-v-57f0136c><strong data-v-57f0136c>分类管理: </strong> 收集任务支持分类管理</li><li data-v-57f0136c><strong data-v-57f0136c>设置DDL(截止日期): </strong> 任务截止后不可再提交文件</li><li data-v-57f0136c><strong data-v-57f0136c>限制提交人员: </strong> 非指定的人员(姓名),无法提交文件</li><li data-v-57f0136c><strong data-v-57f0136c>设置模板文件: </strong> 提交者可直接在提交页面下载此文件</li><li data-v-57f0136c><strong data-v-57f0136c>自动重命名: </strong> 提交的文件按填写表单信息进行自动重名(如:姓名-工号.后缀)</li></ul><h2 data-v-57f0136c>文件相关</h2><ul data-v-57f0136c><li data-v-57f0136c><strong data-v-57f0136c>上传(提交): </strong>单个/多个</li><li data-v-57f0136c><strong data-v-57f0136c>下载: </strong>单个/多个/按收集任务</li><li data-v-57f0136c><strong data-v-57f0136c>撤回: </strong>用户可以撤回自己提交的文件</li><li data-v-57f0136c><strong data-v-57f0136c>分享: </strong>用户可以将文件下载链接分享给朋友</li><li data-v-57f0136c><strong data-v-57f0136c>模板下载: </strong> 下载任务发布者设置的模板文件</li><li data-v-57f0136c><strong data-v-57f0136c>导出: </strong> 导出提交记录</li></ul></div><div class="panel" data-v-57f0136c><h1 data-v-57f0136c>相关链接</h1><h2 data-v-57f0136c>应用链接相关</h2><ul data-v-57f0136c><li data-v-57f0136c><a href="https://docs.ep.sugarat.top" target="_blank" rel="noopener noreferrer" data-v-57f0136c>私有化部署</a></li><li data-v-57f0136c><a target="_blank" href="https://ep.sugarat.top" data-v-57f0136c>Easypicker1.0</a></li><li data-v-57f0136c><a target="_blank" href="https://ep2.sugarat.top" data-v-57f0136c>Easypicker2.0</a></li></ul><h2 data-v-57f0136c>应用源代码 <span style="color:grey;font-size:0.8rem;" data-v-57f0136c>(开发者需要的)</span></h2><ul data-v-57f0136c><li data-v-57f0136c><a target="_blank" href="https://github.com/ATQQ/EasyPicker-webpack" data-v-57f0136c>Easypicker1.0-客户端</a></li><li data-v-57f0136c><a target="_blank" href="https://github.com/ATQQ/easypicker-server" data-v-57f0136c>Easypicker1.0-服务端</a></li></ul><ul data-v-57f0136c><li data-v-57f0136c><a target="_blank" href="https://github.com/ATQQ/easypicker2-client" data-v-57f0136c>Easypicker2.0-客户端</a></li><li data-v-57f0136c><a target="_blank" href="https://github.com/ATQQ/easypicker2-server" data-v-57f0136c>Easypicker2.0-服务端</a></li></ul><ul data-v-57f0136c><li data-v-57f0136c><a target="_blank" href="https://github.com/ATQQ/vite-vue3-template" data-v-57f0136c>Easypicker2.0-客户端模板仓库</a></li><li data-v-57f0136c><a target="_blank" href="https://github.com/ATQQ/node-server" data-v-57f0136c>Easypicker2.0-服务端模板仓库</a></li></ul><h2 data-v-57f0136c>作者 <span style="color:grey;font-size:0.8rem;" data-v-57f0136c>(夹带私货)</span></h2><ul data-v-57f0136c><li data-v-57f0136c><a target="_blank" href="https://sugarat.top" data-v-57f0136c>博客</a></li><li data-v-57f0136c><a target="_blank" href="https://github.com/ATQQ" data-v-57f0136c>GitHub</a></li><li data-v-57f0136c><a target="_blank" href="https://juejin.cn/user/1028798615918983" data-v-57f0136c>掘金</a></li></ul></div>',2);a("default",e(g,[["render",function(a,t,c,e,v,o){const p=i("router-link");return d(),r("div",u,[f("main",null,[f("div",m,[l(p,{to:"/"},{default:n((()=>[b])),_:1})]),k,f("div",y,[x,f("p",null,[s("如有私有化的需求,可自行部署使用(也可 "),l(p,{to:"/author"},{default:n((()=>[s("联系作者")])),_:1}),s(" 提供帮助)")])]),Q])])}],["__scopeId","data-v-57f0136c"]]))}}}));
2
+ //# sourceMappingURL=index-legacy-B1WwgC0S.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-legacy-DcKfHHls.js","sources":["../../src/pages/about/index.vue"],"sourcesContent":["<template>\n <div class=\"about\">\n <main>\n <div class=\"panel\">\n <router-link to=\"/\">\n <img class=\"logo\" src=\"https://img.cdn.sugarat.top/easypicker/EasyPicker.png\">\n </router-link>\n </div>\n <div class=\"panel\">\n <h1>简介</h1>\n <p>在线文件收取助手,帮助用户快速的完成一对多的文件收取</p>\n </div>\n <div class=\"panel\">\n <h1>诞生背景</h1>\n <p>校园学习或者工作场景中会有以下几个场景:</p>\n <ul>\n <li><strong>电子文件:</strong> 班委向同学收取各种实验电子报告</li>\n <li><strong>图片:</strong> 收取各种截图证明/活动照片</li>\n <li>...</li>\n </ul>\n <p>目前最广泛的收取方式为,通过邮箱,QQ,微信等通讯工具传递</p>\n <p>弊端显而易见,不方便整理统计。还占用电脑/手机内存</p>\n <p>为了解决这个问题,此项目应运而生</p>\n <p>当然<span><strong>市面上也有几款类似的办公工具</strong></span> ,功能及使用方式都差不多</p>\n <p>本项目<strong>是 <a href=\"https://github.com/ATQQ/easypicker2-client\">开源</a> 的</strong> </p>\n <p>如有私有化的需求,可自行部署使用(也可 <router-link to=\"/author\">联系作者</router-link> 提供帮助)</p>\n </div>\n <div class=\"panel\">\n <h1>现有功能 <span style=\"color:grey;font-size:0.8rem;\">(用户关心的)</span></h1>\n <h2>收集任务</h2>\n <ul>\n <li><strong>分类管理: </strong> 收集任务支持分类管理</li>\n <li><strong>设置DDL(截止日期): </strong> 任务截止后不可再提交文件</li>\n <li><strong>限制提交人员: </strong> 非指定的人员(姓名),无法提交文件</li>\n <li><strong>设置模板文件: </strong> 提交者可直接在提交页面下载此文件</li>\n <li><strong>自动重命名: </strong> 提交的文件按填写表单信息进行自动重名(如:姓名-工号.后缀)</li>\n </ul>\n <h2>文件相关</h2>\n <ul>\n <li><strong>上传(提交): </strong>单个/多个</li>\n <li><strong>下载: </strong>单个/多个/按收集任务</li>\n <li><strong>撤回: </strong>用户可以撤回自己提交的文件</li>\n <li><strong>分享: </strong>用户可以将文件下载链接分享给朋友</li>\n <li><strong>模板下载: </strong> 下载任务发布者设置的模板文件</li>\n <li><strong>导出: </strong> 导出提交记录</li>\n </ul>\n </div>\n <div class=\"panel\">\n <h1>相关链接</h1>\n <h2>应用链接相关</h2>\n <ul>\n <li><a href=\"https://docs.ep.sugarat.top\" target=\"_blank\" rel=\"noopener noreferrer\">私有化部署</a></li>\n <li><a target=\"_blank\" href=\"https://ep.sugarat.top\">Easypicker1.0</a></li>\n <li><a target=\"_blank\" href=\"https://ep2.sugarat.top\">Easypicker2.0</a></li>\n </ul>\n <h2>应用源代码 <span style=\"color:grey;font-size:0.8rem;\">(开发者需要的)</span></h2>\n <ul>\n <li><a target=\"_blank\" href=\"https://github.com/ATQQ/EasyPicker-webpack\">Easypicker1.0-客户端</a></li>\n <li><a target=\"_blank\" href=\"https://github.com/ATQQ/easypicker-server\">Easypicker1.0-服务端</a></li>\n </ul>\n <ul>\n <li><a target=\"_blank\" href=\"https://github.com/ATQQ/easypicker2-client\">Easypicker2.0-客户端</a></li>\n <li><a target=\"_blank\" href=\"https://github.com/ATQQ/easypicker2-server\">Easypicker2.0-服务端</a></li>\n </ul>\n <ul>\n <li><a target=\"_blank\" href=\"https://github.com/ATQQ/vite-vue3-template\">Easypicker2.0-客户端模板仓库</a></li>\n <li><a target=\"_blank\" href=\"https://github.com/ATQQ/node-server\">Easypicker2.0-服务端模板仓库</a></li>\n </ul>\n <h2>作者 <span style=\"color:grey;font-size:0.8rem;\">(夹带私货)</span></h2>\n <ul>\n <li><a target=\"_blank\" href=\"https://sugarat.top\">博客</a></li>\n <li><a target=\"_blank\" href=\"https://github.com/ATQQ\">GitHub</a></li>\n <li><a target=\"_blank\" href=\"https://juejin.cn/user/1028798615918983\">掘金</a></li>\n </ul>\n </div>\n <!-- <div class=\"panel\">\n <h1>开发计划</h1>\n <h2>...未完待续</h2>\n </div>\n <div class=\"panel\">\n <h1>涉及技术</h1>\n <h2>...未完待续</h2>\n </div> -->\n </main>\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n setup() {\n return {\n\n }\n },\n})\n</script>\n<style lang=\"scss\" scoped>\nh1,\nh2,\nh3,\nh4 {\n font-weight: 500;\n}\n.about {\n background-image: linear-gradient(120deg, #a1c4fd 0%, #c2e9fb 100%);\n min-height: 100vh;\n}\nmain {\n max-width: 860px;\n margin: 0 auto;\n padding: 20px;\n .panel {\n position: relative;\n margin: 0 auto 10px;\n padding: 16px 20px;\n width: 100%;\n overflow: hidden;\n border-radius: 0.25rem;\n box-shadow: #eee;\n box-sizing: border-box;\n transition: all 0.3s;\n background-color: #fff;\n }\n .logo{\n width: 100%;\n max-width: 520px;\n margin: 0 auto;\n display: block;\n }\n h1 {\n font-size: 1.6rem;\n margin-bottom: 10px;\n }\n h2{\n font-size: 1.3rem;\n margin-bottom: 12px;\n }\n ul,ol{\n margin-left: 20px;\n font-size: 15px;\n margin-bottom: 1em;\n }\n p{\n font-size: 15px;\n margin-bottom: 1em;\n }\n a{\n color: #409eff;\n }\n}\n</style>\n"],"names":["_sfc_main","defineComponent","setup","_withScopeId","n","_pushScopeId","_popScopeId","_hoisted_2","class","_hoisted_3","_createElementVNode","_hoisted_4","_hoisted_5","_resolveComponent","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_component_router_link","to","default","_withCtx","_hoisted_6","_createTextVNode","_"],"mappings":"opCAyFA,MAAAA,EAAeC,EAAgB,CAC7BC,MAAQA,KACC,MAxFMC,EAAAC,IAAKC,EAAQ,mBAAAD,EAAAA,IAAAE,IAAAF,qBAELG,EAAY,CAAAC,MAAA,SAAIC,EAAwDN,GAAA,IAAAO,EAAA,MAAA,CAAAF,MAAA,+EAKjFG,EAAAR,GAAG,IAA0BO,EAAA,MAAA,CAAAF,MAAA,SAAA,CAAAE,EAAA,KAAA,KAAA,MAEfA,EAAA,IAAA,KAAA,qCAZ9BE,EAAA,CAAAJ,MAAA,gqHACIK,EAmFM,sBAjFEC,IAIMC,EAAA,MAAAC,EAAA,CADYN,EAAA,OAAA,KAAA,CAAAA,EAN9B,MAKkGH,EAAA,CAAAU,EAA9EC,EAA8E,CAAAC,GAAA,KAAA,CAAAC,QAAAC,GAAA,IAAA,CALlGZ,aAYYE,IAaI,MAA6EC,EAAA,CAAAU,EAAVZ,EAAA,IAAA,KAAA,CAAAa,EAzBnF,wBAyBqEN,EAzBrEC,EAyBqE,CAAAC,GAAA,WAAA,CAAAC,QAAAC,GAAA,IAAA,CAzBrEE,EAAA,WAAAC,EAAA"}
1
+ {"version":3,"file":"index-legacy-B1WwgC0S.js","sources":["../../src/pages/about/index.vue"],"sourcesContent":["<template>\n <div class=\"about\">\n <main>\n <div class=\"panel\">\n <router-link to=\"/\">\n <img class=\"logo\" src=\"https://img.cdn.sugarat.top/easypicker/EasyPicker.png\">\n </router-link>\n </div>\n <div class=\"panel\">\n <h1>简介</h1>\n <p>在线文件收取助手,帮助用户快速的完成一对多的文件收取</p>\n </div>\n <div class=\"panel\">\n <h1>诞生背景</h1>\n <p>校园学习或者工作场景中会有以下几个场景:</p>\n <ul>\n <li><strong>电子文件:</strong> 班委向同学收取各种实验电子报告</li>\n <li><strong>图片:</strong> 收取各种截图证明/活动照片</li>\n <li>...</li>\n </ul>\n <p>目前最广泛的收取方式为,通过邮箱,QQ,微信等通讯工具传递</p>\n <p>弊端显而易见,不方便整理统计。还占用电脑/手机内存</p>\n <p>为了解决这个问题,此项目应运而生</p>\n <p>当然<span><strong>市面上也有几款类似的办公工具</strong></span> ,功能及使用方式都差不多</p>\n <p>本项目<strong>是 <a href=\"https://github.com/ATQQ/easypicker2-client\">开源</a> 的</strong> </p>\n <p>如有私有化的需求,可自行部署使用(也可 <router-link to=\"/author\">联系作者</router-link> 提供帮助)</p>\n </div>\n <div class=\"panel\">\n <h1>现有功能 <span style=\"color:grey;font-size:0.8rem;\">(用户关心的)</span></h1>\n <h2>收集任务</h2>\n <ul>\n <li><strong>分类管理: </strong> 收集任务支持分类管理</li>\n <li><strong>设置DDL(截止日期): </strong> 任务截止后不可再提交文件</li>\n <li><strong>限制提交人员: </strong> 非指定的人员(姓名),无法提交文件</li>\n <li><strong>设置模板文件: </strong> 提交者可直接在提交页面下载此文件</li>\n <li><strong>自动重命名: </strong> 提交的文件按填写表单信息进行自动重名(如:姓名-工号.后缀)</li>\n </ul>\n <h2>文件相关</h2>\n <ul>\n <li><strong>上传(提交): </strong>单个/多个</li>\n <li><strong>下载: </strong>单个/多个/按收集任务</li>\n <li><strong>撤回: </strong>用户可以撤回自己提交的文件</li>\n <li><strong>分享: </strong>用户可以将文件下载链接分享给朋友</li>\n <li><strong>模板下载: </strong> 下载任务发布者设置的模板文件</li>\n <li><strong>导出: </strong> 导出提交记录</li>\n </ul>\n </div>\n <div class=\"panel\">\n <h1>相关链接</h1>\n <h2>应用链接相关</h2>\n <ul>\n <li><a href=\"https://docs.ep.sugarat.top\" target=\"_blank\" rel=\"noopener noreferrer\">私有化部署</a></li>\n <li><a target=\"_blank\" href=\"https://ep.sugarat.top\">Easypicker1.0</a></li>\n <li><a target=\"_blank\" href=\"https://ep2.sugarat.top\">Easypicker2.0</a></li>\n </ul>\n <h2>应用源代码 <span style=\"color:grey;font-size:0.8rem;\">(开发者需要的)</span></h2>\n <ul>\n <li><a target=\"_blank\" href=\"https://github.com/ATQQ/EasyPicker-webpack\">Easypicker1.0-客户端</a></li>\n <li><a target=\"_blank\" href=\"https://github.com/ATQQ/easypicker-server\">Easypicker1.0-服务端</a></li>\n </ul>\n <ul>\n <li><a target=\"_blank\" href=\"https://github.com/ATQQ/easypicker2-client\">Easypicker2.0-客户端</a></li>\n <li><a target=\"_blank\" href=\"https://github.com/ATQQ/easypicker2-server\">Easypicker2.0-服务端</a></li>\n </ul>\n <ul>\n <li><a target=\"_blank\" href=\"https://github.com/ATQQ/vite-vue3-template\">Easypicker2.0-客户端模板仓库</a></li>\n <li><a target=\"_blank\" href=\"https://github.com/ATQQ/node-server\">Easypicker2.0-服务端模板仓库</a></li>\n </ul>\n <h2>作者 <span style=\"color:grey;font-size:0.8rem;\">(夹带私货)</span></h2>\n <ul>\n <li><a target=\"_blank\" href=\"https://sugarat.top\">博客</a></li>\n <li><a target=\"_blank\" href=\"https://github.com/ATQQ\">GitHub</a></li>\n <li><a target=\"_blank\" href=\"https://juejin.cn/user/1028798615918983\">掘金</a></li>\n </ul>\n </div>\n <!-- <div class=\"panel\">\n <h1>开发计划</h1>\n <h2>...未完待续</h2>\n </div>\n <div class=\"panel\">\n <h1>涉及技术</h1>\n <h2>...未完待续</h2>\n </div> -->\n </main>\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n setup() {\n return {\n\n }\n },\n})\n</script>\n<style lang=\"scss\" scoped>\nh1,\nh2,\nh3,\nh4 {\n font-weight: 500;\n}\n.about {\n background-image: linear-gradient(120deg, #a1c4fd 0%, #c2e9fb 100%);\n min-height: 100vh;\n}\nmain {\n max-width: 860px;\n margin: 0 auto;\n padding: 20px;\n .panel {\n position: relative;\n margin: 0 auto 10px;\n padding: 16px 20px;\n width: 100%;\n overflow: hidden;\n border-radius: 0.25rem;\n box-shadow: #eee;\n box-sizing: border-box;\n transition: all 0.3s;\n background-color: #fff;\n }\n .logo{\n width: 100%;\n max-width: 520px;\n margin: 0 auto;\n display: block;\n }\n h1 {\n font-size: 1.6rem;\n margin-bottom: 10px;\n }\n h2{\n font-size: 1.3rem;\n margin-bottom: 12px;\n }\n ul,ol{\n margin-left: 20px;\n font-size: 15px;\n margin-bottom: 1em;\n }\n p{\n font-size: 15px;\n margin-bottom: 1em;\n }\n a{\n color: #409eff;\n }\n}\n</style>\n"],"names":["_sfc_main","defineComponent","setup","_withScopeId","n","_pushScopeId","_popScopeId","_hoisted_2","class","_hoisted_3","_createElementVNode","_hoisted_4","_hoisted_5","_resolveComponent","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_component_router_link","to","default","_withCtx","_hoisted_6","_createTextVNode","_"],"mappings":"opCAyFA,MAAAA,EAAeC,EAAgB,CAC7BC,MAAQA,KACC,MAxFMC,EAAAC,IAAKC,EAAQ,mBAAAD,EAAAA,IAAAE,IAAAF,qBAELG,EAAY,CAAAC,MAAA,SAAIC,EAAwDN,GAAA,IAAAO,EAAA,MAAA,CAAAF,MAAA,+EAKjFG,EAAAR,GAAG,IAA0BO,EAAA,MAAA,CAAAF,MAAA,SAAA,CAAAE,EAAA,KAAA,KAAA,MAEfA,EAAA,IAAA,KAAA,qCAZ9BE,EAAA,CAAAJ,MAAA,gqHACIK,EAmFM,sBAjFEC,IAIMC,EAAA,MAAAC,EAAA,CADYN,EAAA,OAAA,KAAA,CAAAA,EAN9B,MAKkGH,EAAA,CAAAU,EAA9EC,EAA8E,CAAAC,GAAA,KAAA,CAAAC,QAAAC,GAAA,IAAA,CALlGZ,aAYYE,IAaI,MAA6EC,EAAA,CAAAU,EAAVZ,EAAA,IAAA,KAAA,CAAAa,EAzBnF,wBAyBqEN,EAzBrEC,EAyBqE,CAAAC,GAAA,WAAA,CAAAC,QAAAC,GAAA,IAAA,CAzBrEE,EAAA,WAAAC,EAAA"}
@@ -1,2 +1,2 @@
1
- System.register(["./index-legacy-BLKO-78a.js"],(function(e,t){"use strict";var a,n,l,d,c,o,i,r,f,v,u,s;return{setters:[e=>{a=e.d,n=e.r,l=e.u,d=e.o,c=e.a,o=e.c,i=e.b,r=e.e,f=e.t,v=e.p,u=e.f,s=e._}],execute:function(){var t=document.createElement("style");t.textContent=".not-found[data-v-7bc5f813]{font-family:Avenir,Helvetica,Arial,sans-serif;background-image:linear-gradient(to top,#30cfd0,#330867);min-height:100vh}h1[data-v-7bc5f813],h2[data-v-7bc5f813],h3[data-v-7bc5f813],a[data-v-7bc5f813]{color:#f0f8ff;text-align:center;font-weight:lighter}a[data-v-7bc5f813]{margin-left:10px;border-bottom:2px solid aliceblue}h1[data-v-7bc5f813]{font-size:48px;padding-top:10%}h2[data-v-7bc5f813]{font-size:30px;padding-top:2vh}h3[data-v-7bc5f813]{font-size:28px;padding-top:1vh}\n",document.head.appendChild(t);const p=e=>(v("data-v-7bc5f813"),e=e(),u(),e),h={class:"not-found"},b=p((()=>i("h1",null,"404 Not Found",-1))),g=p((()=>i("h2",null,"糟糕页面走丢了",-1)));e("default",s(a({__name:"index",setup(e){const t=n(3),a=n(null),v=l(),u=()=>{clearInterval(a.value),v.replace("/")};return d((()=>{a.value=setInterval((()=>{1===t.value&&(clearInterval(a.value),v.replace("/")),t.value-=1}),1e3)})),(e,a)=>(c(),o("div",h,[b,g,i("h3",null,[r(f(t.value)+"s后",1),i("a",{onClick:u},"回到首页")])]))}}),[["__scopeId","data-v-7bc5f813"]]))}}}));
2
- //# sourceMappingURL=index-legacy-CRq_O11N.js.map
1
+ System.register(["./index-legacy-DC5-MYgp.js"],(function(e,t){"use strict";var a,n,l,d,c,o,i,r,f,v,u,s;return{setters:[e=>{a=e.d,n=e.r,l=e.u,d=e.o,c=e.a,o=e.c,i=e.b,r=e.e,f=e.t,v=e.p,u=e.f,s=e._}],execute:function(){var t=document.createElement("style");t.textContent=".not-found[data-v-7bc5f813]{font-family:Avenir,Helvetica,Arial,sans-serif;background-image:linear-gradient(to top,#30cfd0,#330867);min-height:100vh}h1[data-v-7bc5f813],h2[data-v-7bc5f813],h3[data-v-7bc5f813],a[data-v-7bc5f813]{color:#f0f8ff;text-align:center;font-weight:lighter}a[data-v-7bc5f813]{margin-left:10px;border-bottom:2px solid aliceblue}h1[data-v-7bc5f813]{font-size:48px;padding-top:10%}h2[data-v-7bc5f813]{font-size:30px;padding-top:2vh}h3[data-v-7bc5f813]{font-size:28px;padding-top:1vh}\n",document.head.appendChild(t);const p=e=>(v("data-v-7bc5f813"),e=e(),u(),e),h={class:"not-found"},b=p((()=>i("h1",null,"404 Not Found",-1))),g=p((()=>i("h2",null,"糟糕页面走丢了",-1)));e("default",s(a({__name:"index",setup(e){const t=n(3),a=n(null),v=l(),u=()=>{clearInterval(a.value),v.replace("/")};return d((()=>{a.value=setInterval((()=>{1===t.value&&(clearInterval(a.value),v.replace("/")),t.value-=1}),1e3)})),(e,a)=>(c(),o("div",h,[b,g,i("h3",null,[r(f(t.value)+"s后",1),i("a",{onClick:u},"回到首页")])]))}}),[["__scopeId","data-v-7bc5f813"]]))}}}));
2
+ //# sourceMappingURL=index-legacy-BN-W2P7-.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-legacy-CRq_O11N.js","sources":["../../src/pages/404/index.vue"],"sourcesContent":["<template>\n <div class=\"not-found\">\n <h1>404 Not Found</h1>\n <h2>糟糕页面走丢了</h2>\n <h3>{{ time }}s后<a @click=\"handleToHome\">回到首页</a></h3>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { onMounted, ref } from 'vue'\nimport { useRouter } from 'vue-router'\n\nconst time = ref(3)\nconst timer = ref(null)\nconst router = useRouter()\nconst handleToHome = () => {\n clearInterval(timer.value)\n router.replace('/')\n}\nonMounted(() => {\n timer.value = setInterval(() => {\n if (time.value === 1) {\n clearInterval(timer.value)\n router.replace('/')\n }\n time.value -= 1\n }, 1000)\n})\n</script>\n<style lang=\"scss\" scoped>\n.not-found {\n font-family: 'Avenir', Helvetica, Arial, sans-serif;\n background-image: linear-gradient(to top, #30cfd0 0%, #330867 100%);\n min-height: 100vh;\n}\nh1,\nh2,\nh3,\na {\n color: aliceblue;\n text-align: center;\n font-weight: lighter;\n}\na {\n margin-left: 10px;\n border-bottom: 2px solid aliceblue;\n}\nh1 {\n font-size: 48px;\n padding-top: 10%;\n}\nh2 {\n font-size: 30px;\n padding-top: 2vh;\n}\nh3 {\n font-size: 28px;\n padding-top: 1vh;\n}\n</style>\n"],"names":["time","ref","timer","router","useRouter","handleToHome","clearInterval","value","replace","onMounted","setInterval"],"mappings":"i+BAWM,MAAAA,EAAOC,EAAI,GACXC,EAAQD,EAAI,MACZE,EAASC,IACTC,EAAeA,KACnBC,cAAcJ,EAAMK,OACpBJ,EAAOK,QAAQ,IAAG,SAEpBC,GAAU,KACFP,EAAAK,MAAQG,aAAY,KACL,IAAfV,EAAKO,QACPD,cAAcJ,EAAMK,OACpBJ,EAAOK,QAAQ,MAEjBR,EAAKO,OAAS,CAAA,GACb,IAAI"}
1
+ {"version":3,"file":"index-legacy-BN-W2P7-.js","sources":["../../src/pages/404/index.vue"],"sourcesContent":["<template>\n <div class=\"not-found\">\n <h1>404 Not Found</h1>\n <h2>糟糕页面走丢了</h2>\n <h3>{{ time }}s后<a @click=\"handleToHome\">回到首页</a></h3>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { onMounted, ref } from 'vue'\nimport { useRouter } from 'vue-router'\n\nconst time = ref(3)\nconst timer = ref(null)\nconst router = useRouter()\nconst handleToHome = () => {\n clearInterval(timer.value)\n router.replace('/')\n}\nonMounted(() => {\n timer.value = setInterval(() => {\n if (time.value === 1) {\n clearInterval(timer.value)\n router.replace('/')\n }\n time.value -= 1\n }, 1000)\n})\n</script>\n<style lang=\"scss\" scoped>\n.not-found {\n font-family: 'Avenir', Helvetica, Arial, sans-serif;\n background-image: linear-gradient(to top, #30cfd0 0%, #330867 100%);\n min-height: 100vh;\n}\nh1,\nh2,\nh3,\na {\n color: aliceblue;\n text-align: center;\n font-weight: lighter;\n}\na {\n margin-left: 10px;\n border-bottom: 2px solid aliceblue;\n}\nh1 {\n font-size: 48px;\n padding-top: 10%;\n}\nh2 {\n font-size: 30px;\n padding-top: 2vh;\n}\nh3 {\n font-size: 28px;\n padding-top: 1vh;\n}\n</style>\n"],"names":["time","ref","timer","router","useRouter","handleToHome","clearInterval","value","replace","onMounted","setInterval"],"mappings":"i+BAWM,MAAAA,EAAOC,EAAI,GACXC,EAAQD,EAAI,MACZE,EAASC,IACTC,EAAeA,KACnBC,cAAcJ,EAAMK,OACpBJ,EAAOK,QAAQ,IAAG,SAEpBC,GAAU,KACFP,EAAAK,MAAQG,aAAY,KACL,IAAfV,EAAKO,QACPD,cAAcJ,EAAMK,OACpBJ,EAAOK,QAAQ,MAEjBR,EAAKO,OAAS,CAAA,GACb,IAAI"}
@@ -1,2 +1,2 @@
1
- System.register(["./index-legacy-BLKO-78a.js"],(function(a,t){"use strict";var e,n,i,d,l,o,r,c,m,s,g,p,u,f,x,v,h,w,b;return{setters:[a=>{e=a.g,n=a.d,i=a.a,d=a.c,l=a.b,o=a.i,r=a.F,c=a.C,m=a.j,s=a.w,g=a.D,p=a.G,u=a.H,f=a.t,x=a.e,v=a.I,h=a.p,w=a.f,b=a._}],execute:function(){var t=document.createElement("style");t.textContent="h1[data-v-a235cdd8],h2[data-v-a235cdd8],h3[data-v-a235cdd8],h4[data-v-a235cdd8]{font-weight:500}.callme[data-v-a235cdd8]{background-image:linear-gradient(120deg,#a1c4fd,#c2e9fb);min-height:100vh}main[data-v-a235cdd8]{max-width:860px;margin:0 auto;padding:20px}main .panel[data-v-a235cdd8]{position:relative;margin:0 auto 20px;padding:16px 20px;width:100%;overflow:hidden;border-radius:.25rem;box-shadow:#eee;box-sizing:border-box;transition:all .3s;background-color:#fff}main h1[data-v-a235cdd8]{font-size:1.6rem;font-weight:500;margin-bottom:10px}main .baseinfo[data-v-a235cdd8]{color:#7f7f7f;font-size:1rem;display:flex;flex-wrap:wrap;margin-bottom:10px}main .baseinfo a[data-v-a235cdd8]{color:#7f7f7f;font-size:1rem;margin-left:10px}main .baseinfo .info-item[data-v-a235cdd8]{margin-right:20px}main hr[data-v-a235cdd8]{margin-bottom:10px}main .qq-wechat ul[data-v-a235cdd8]{list-style:none;display:flex;flex-wrap:wrap;margin-bottom:10px}main .qq-wechat ul li[data-v-a235cdd8]{text-align:center}main .qq-wechat ul li .title[data-v-a235cdd8]{font-weight:600}main .qq-wechat ul li .content[data-v-a235cdd8]{padding:.5em}main .qq-wechat ul li img[data-v-a235cdd8]{width:150px}main .description[data-v-a235cdd8]{color:#242424;font-size:15px;margin-bottom:10px;text-align:center}main .links[data-v-a235cdd8]{text-align:center}main .links a[data-v-a235cdd8]{color:#409eff}\n",document.head.appendChild(t);const z=n({name:"Promotion"}),q={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},T=[l("path",{fill:"currentColor",d:"m64 448 832-320-128 704-446.08-243.328L832 192 242.816 545.472 64 448zm256 512V657.024L512 768 320 960z"},null,-1)];var k=e(z,[["render",function(a,t,e,n,l,o){return i(),d("svg",q,T)}]]);const y=n({name:"UserFilled"}),M={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},_=[l("path",{fill:"currentColor",d:"M288 320a224 224 0 1 0 448 0 224 224 0 1 0-448 0zm544 608H160a32 32 0 0 1-32-32v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 0 1-32 32z"},null,-1)];var N=e(y,[["render",function(a,t,e,n,l,o){return i(),d("svg",M,_)}]]);const E=a=>(h("data-v-a235cdd8"),a=a(),w(),a),I={class:"callme"},Q={class:"panel"},j=E((()=>l("h1",null,"联系作者",-1))),C={class:"baseinfo"},O=["href"],Y=E((()=>l("hr",null,null,-1))),A={class:"qq-wechat"},B={class:"title"},D={class:"content"},F=["src"],H=E((()=>l("div",{class:"description"},[l("p",null,"如遇无法解决的账号/使用问题,欢迎小窗联系我")],-1))),L={class:"links"};a("default",b(n({__name:"index",setup(a){const t=[{icon:N,text:"粥里有勺糖",href:"https://sugarat.top"},{icon:k,text:"engineerzjl@foxmail.com",href:"mailto:engineerzjl@foxmail.com"}],e=[{text:"微信",img:"https://img.cdn.sugarat.top/mdImg/MTYxOTE1NTk3MTkyNA==619155971925"},{text:"公众号",img:"https://img.cdn.sugarat.top/mdImg/MTYxOTE1NTYwNzQ5MQ==619155607491"},{text:"QQ",img:"https://img.cdn.sugarat.top/mdImg/MTYxOTE1NjQ5ODczOQ==619156498739"},{text:"交流群",img:"https://img.cdn.sugarat.top/mdImg/MTY0Nzc2MTE2MTE2NA==ep-group.png"}];return(a,n)=>{const h=v,w=o("router-link");return i(),d("div",I,[l("main",null,[l("div",Q,[j,l("div",C,[(i(),d(r,null,c(t,((a,t)=>l("span",{key:t,class:"info-item"},[m(h,null,{default:s((()=>[(i(),g(p(a.icon)))])),_:2},1024),l("i",{class:u(a.icon)},null,2),l("a",{target:"_blank",href:a.href},f(a.text),9,O)]))),64))]),Y,l("div",A,[l("ul",null,[(i(),d(r,null,c(e,((a,t)=>l("li",{key:t},[l("div",B,f(a.text),1),l("div",D,[l("img",{src:a.img},null,8,F)])]))),64))])]),H,l("div",L,[m(w,{to:"/"},{default:s((()=>[x("回到首页")])),_:1})])])])])}}}),[["__scopeId","data-v-a235cdd8"]]))}}}));
2
- //# sourceMappingURL=index-legacy-DasH54g3.js.map
1
+ System.register(["./index-legacy-DC5-MYgp.js"],(function(a,t){"use strict";var e,n,i,d,l,o,r,c,m,s,g,p,u,f,x,v,h,w,b;return{setters:[a=>{e=a.g,n=a.d,i=a.a,d=a.c,l=a.b,o=a.i,r=a.F,c=a.C,m=a.j,s=a.w,g=a.D,p=a.G,u=a.H,f=a.t,x=a.e,v=a.I,h=a.p,w=a.f,b=a._}],execute:function(){var t=document.createElement("style");t.textContent="h1[data-v-a235cdd8],h2[data-v-a235cdd8],h3[data-v-a235cdd8],h4[data-v-a235cdd8]{font-weight:500}.callme[data-v-a235cdd8]{background-image:linear-gradient(120deg,#a1c4fd,#c2e9fb);min-height:100vh}main[data-v-a235cdd8]{max-width:860px;margin:0 auto;padding:20px}main .panel[data-v-a235cdd8]{position:relative;margin:0 auto 20px;padding:16px 20px;width:100%;overflow:hidden;border-radius:.25rem;box-shadow:#eee;box-sizing:border-box;transition:all .3s;background-color:#fff}main h1[data-v-a235cdd8]{font-size:1.6rem;font-weight:500;margin-bottom:10px}main .baseinfo[data-v-a235cdd8]{color:#7f7f7f;font-size:1rem;display:flex;flex-wrap:wrap;margin-bottom:10px}main .baseinfo a[data-v-a235cdd8]{color:#7f7f7f;font-size:1rem;margin-left:10px}main .baseinfo .info-item[data-v-a235cdd8]{margin-right:20px}main hr[data-v-a235cdd8]{margin-bottom:10px}main .qq-wechat ul[data-v-a235cdd8]{list-style:none;display:flex;flex-wrap:wrap;margin-bottom:10px}main .qq-wechat ul li[data-v-a235cdd8]{text-align:center}main .qq-wechat ul li .title[data-v-a235cdd8]{font-weight:600}main .qq-wechat ul li .content[data-v-a235cdd8]{padding:.5em}main .qq-wechat ul li img[data-v-a235cdd8]{width:150px}main .description[data-v-a235cdd8]{color:#242424;font-size:15px;margin-bottom:10px;text-align:center}main .links[data-v-a235cdd8]{text-align:center}main .links a[data-v-a235cdd8]{color:#409eff}\n",document.head.appendChild(t);const z=n({name:"Promotion"}),q={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},T=[l("path",{fill:"currentColor",d:"m64 448 832-320-128 704-446.08-243.328L832 192 242.816 545.472 64 448zm256 512V657.024L512 768 320 960z"},null,-1)];var k=e(z,[["render",function(a,t,e,n,l,o){return i(),d("svg",q,T)}]]);const y=n({name:"UserFilled"}),M={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},_=[l("path",{fill:"currentColor",d:"M288 320a224 224 0 1 0 448 0 224 224 0 1 0-448 0zm544 608H160a32 32 0 0 1-32-32v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 0 1-32 32z"},null,-1)];var N=e(y,[["render",function(a,t,e,n,l,o){return i(),d("svg",M,_)}]]);const E=a=>(h("data-v-a235cdd8"),a=a(),w(),a),I={class:"callme"},Q={class:"panel"},j=E((()=>l("h1",null,"联系作者",-1))),C={class:"baseinfo"},O=["href"],Y=E((()=>l("hr",null,null,-1))),A={class:"qq-wechat"},B={class:"title"},D={class:"content"},F=["src"],H=E((()=>l("div",{class:"description"},[l("p",null,"如遇无法解决的账号/使用问题,欢迎小窗联系我")],-1))),L={class:"links"};a("default",b(n({__name:"index",setup(a){const t=[{icon:N,text:"粥里有勺糖",href:"https://sugarat.top"},{icon:k,text:"engineerzjl@foxmail.com",href:"mailto:engineerzjl@foxmail.com"}],e=[{text:"微信",img:"https://img.cdn.sugarat.top/mdImg/MTYxOTE1NTk3MTkyNA==619155971925"},{text:"公众号",img:"https://img.cdn.sugarat.top/mdImg/MTYxOTE1NTYwNzQ5MQ==619155607491"},{text:"QQ",img:"https://img.cdn.sugarat.top/mdImg/MTYxOTE1NjQ5ODczOQ==619156498739"},{text:"交流群",img:"https://img.cdn.sugarat.top/mdImg/MTY0Nzc2MTE2MTE2NA==ep-group.png"}];return(a,n)=>{const h=v,w=o("router-link");return i(),d("div",I,[l("main",null,[l("div",Q,[j,l("div",C,[(i(),d(r,null,c(t,((a,t)=>l("span",{key:t,class:"info-item"},[m(h,null,{default:s((()=>[(i(),g(p(a.icon)))])),_:2},1024),l("i",{class:u(a.icon)},null,2),l("a",{target:"_blank",href:a.href},f(a.text),9,O)]))),64))]),Y,l("div",A,[l("ul",null,[(i(),d(r,null,c(e,((a,t)=>l("li",{key:t},[l("div",B,f(a.text),1),l("div",D,[l("img",{src:a.img},null,8,F)])]))),64))])]),H,l("div",L,[m(w,{to:"/"},{default:s((()=>[x("回到首页")])),_:1})])])])])}}}),[["__scopeId","data-v-a235cdd8"]]))}}}));
2
+ //# sourceMappingURL=index-legacy-BZb5uhBF.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-legacy-DasH54g3.js","sources":["../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/promotion.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/user-filled.mjs","../../src/pages/callme/index.vue"],"sourcesContent":["import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Promotion\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"m64 448 832-320-128 704-446.08-243.328L832 192 242.816 545.472 64 448zm256 512V657.024L512 768 320 960z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar promotion = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { promotion as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"UserFilled\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M288 320a224 224 0 1 0 448 0 224 224 0 1 0-448 0zm544 608H160a32 32 0 0 1-32-32v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 0 1-32 32z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar userFilled = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { userFilled as default };\n","<template>\n <div class=\"callme\">\n <main>\n <div class=\"panel\">\n <h1>联系作者</h1>\n <!-- 基本信息 -->\n <div class=\"baseinfo\">\n <span v-for=\"(info, idx) in baseInfo\" :key=\"idx\" class=\"info-item\">\n <el-icon>\n <component :is=\"info.icon\" />\n </el-icon>\n <i :class=\"info.icon\"></i>\n <a target=\"_blank\" :href=\"info.href\">{{ info.text }}</a>\n </span>\n </div>\n <hr />\n <!-- 一堆二维码 -->\n <div class=\"qq-wechat\">\n <ul>\n <li v-for=\"(qrcode, idx) in qrCOdes\" :key=\"idx\">\n <div class=\"title\">{{ qrcode.text }}</div>\n <div class=\"content\">\n <img :src=\"qrcode.img\" />\n </div>\n </li>\n </ul>\n </div>\n <div class=\"description\">\n <p>如遇无法解决的账号/使用问题,欢迎小窗联系我</p>\n </div>\n <div class=\"links\">\n <router-link to=\"/\">回到首页</router-link>\n </div>\n </div>\n </main>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { UserFilled, Promotion } from '@element-plus/icons-vue'\n\nconst baseInfo = [\n {\n icon: UserFilled,\n text: '粥里有勺糖',\n href: 'https://sugarat.top',\n },\n {\n icon: Promotion,\n text: 'engineerzjl@foxmail.com',\n href: 'mailto:engineerzjl@foxmail.com',\n },\n]\n\nconst qrCOdes = [\n {\n text: '微信',\n img: 'https://img.cdn.sugarat.top/mdImg/MTYxOTE1NTk3MTkyNA==619155971925',\n },\n {\n text: '公众号',\n img: 'https://img.cdn.sugarat.top/mdImg/MTYxOTE1NTYwNzQ5MQ==619155607491',\n },\n {\n text: 'QQ',\n img: 'https://img.cdn.sugarat.top/mdImg/MTYxOTE1NjQ5ODczOQ==619156498739',\n },\n {\n text: '交流群',\n img: 'https://img.cdn.sugarat.top/mdImg/MTY0Nzc2MTE2MTE2NA==ep-group.png',\n },\n]\n\n</script>\n<style lang=\"scss\" scoped>\nh1,\nh2,\nh3,\nh4 {\n font-weight: 500;\n}\n.callme {\n background-image: linear-gradient(120deg, #a1c4fd 0%, #c2e9fb 100%);\n min-height: 100vh;\n}\nmain {\n max-width: 860px;\n margin: 0 auto;\n padding: 20px;\n .panel {\n position: relative;\n margin: 0 auto 20px;\n padding: 16px 20px;\n width: 100%;\n overflow: hidden;\n border-radius: 0.25rem;\n box-shadow: #eee;\n box-sizing: border-box;\n transition: all 0.3s;\n background-color: #fff;\n }\n h1 {\n font-size: 1.6rem;\n font-weight: 500;\n margin-bottom: 10px;\n }\n .baseinfo {\n color: #7f7f7f;\n font-size: 1rem;\n display: flex;\n flex-wrap: wrap;\n a {\n color: #7f7f7f;\n font-size: 1rem;\n margin-left: 10px;\n }\n .info-item {\n margin-right: 20px;\n }\n margin-bottom: 10px;\n }\n hr {\n margin-bottom: 10px;\n }\n .qq-wechat ul {\n list-style: none;\n display: flex;\n flex-wrap: wrap;\n margin-bottom: 10px;\n li {\n text-align: center;\n .title {\n font-weight: 600;\n }\n .content {\n padding: 0.5em;\n }\n img {\n width: 150px;\n }\n }\n }\n .description {\n color: #242424;\n font-size: 15px;\n margin-bottom: 10px;\n text-align: center;\n }\n .links {\n text-align: center;\n a {\n color: #409eff;\n }\n }\n}\n</style>\n"],"names":["_sfc_main","defineComponent","name","_hoisted_1","viewBox","xmlns","_hoisted_3","createElementVNode","fill","d","promotion","_export_sfc","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","userFilled","baseInfo","icon","UserFilled","text","href","Promotion","qrCOdes","img"],"mappings":"8rDAGA,MAAMA,EAAYC,EAAgB,CAChCC,KAAM,cAEFC,EAAa,CACjBC,QAAS,gBACTC,MAAO,8BAMHC,EAAa,CAJgBC,EAAmB,OAAQ,CAC5DC,KAAM,eACNC,EAAG,2GACF,MAAO,IAOV,IAAIC,EAA4BC,EAAYX,EAAW,CAAC,CAAC,SAHzD,SAAqBY,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GACxD,OAAOC,IAAaC,EAAmB,MAAOhB,EAAYG,EAC5D,KChBA,MAAMN,EAAYC,EAAgB,CAChCC,KAAM,eAEFC,EAAa,CACjBC,QAAS,gBACTC,MAAO,8BAMHC,EAAa,CAJgBC,EAAmB,OAAQ,CAC5DC,KAAM,eACNC,EAAG,6JACF,MAAO,IAOV,IAAIW,EAA6BT,EAAYX,EAAW,CAAC,CAAC,SAH1D,SAAqBY,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GACxD,OAAOC,IAAaC,EAAmB,MAAOhB,EAAYG,EAC5D,+YCqBA,MAAMe,EAAW,CACf,CACEC,KAAMC,EACNC,KAAM,QACNC,KAAM,uBAER,CACEH,KAAMI,EACNF,KAAM,0BACNC,KAAM,mCAIJE,EAAU,CACd,CACEH,KAAM,KACNI,IAAK,sEAEP,CACEJ,KAAM,MACNI,IAAK,sEAEP,CACEJ,KAAM,KACNI,IAAK,sEAEP,CACEJ,KAAM,MACNI,IAAK","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"index-legacy-BZb5uhBF.js","sources":["../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/promotion.mjs","../../node_modules/.pnpm/@element-plus+icons-vue@1.1.4_vue@3.4.31_typescript@4.9.5_/node_modules/@element-plus/icons-vue/dist/es/user-filled.mjs","../../src/pages/callme/index.vue"],"sourcesContent":["import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"Promotion\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"m64 448 832-320-128 704-446.08-243.328L832 192 242.816 545.472 64 448zm256 512V657.024L512 768 320 960z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar promotion = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { promotion as default };\n","import { defineComponent, openBlock, createElementBlock, createElementVNode } from 'vue';\nimport _export_sfc from './_virtual/plugin-vue_export-helper.mjs';\n\nconst _sfc_main = defineComponent({\n name: \"UserFilled\"\n});\nconst _hoisted_1 = {\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M288 320a224 224 0 1 0 448 0 224 224 0 1 0-448 0zm544 608H160a32 32 0 0 1-32-32v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 0 1-32 32z\"\n}, null, -1);\nconst _hoisted_3 = [\n _hoisted_2\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_3);\n}\nvar userFilled = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { userFilled as default };\n","<template>\n <div class=\"callme\">\n <main>\n <div class=\"panel\">\n <h1>联系作者</h1>\n <!-- 基本信息 -->\n <div class=\"baseinfo\">\n <span v-for=\"(info, idx) in baseInfo\" :key=\"idx\" class=\"info-item\">\n <el-icon>\n <component :is=\"info.icon\" />\n </el-icon>\n <i :class=\"info.icon\"></i>\n <a target=\"_blank\" :href=\"info.href\">{{ info.text }}</a>\n </span>\n </div>\n <hr />\n <!-- 一堆二维码 -->\n <div class=\"qq-wechat\">\n <ul>\n <li v-for=\"(qrcode, idx) in qrCOdes\" :key=\"idx\">\n <div class=\"title\">{{ qrcode.text }}</div>\n <div class=\"content\">\n <img :src=\"qrcode.img\" />\n </div>\n </li>\n </ul>\n </div>\n <div class=\"description\">\n <p>如遇无法解决的账号/使用问题,欢迎小窗联系我</p>\n </div>\n <div class=\"links\">\n <router-link to=\"/\">回到首页</router-link>\n </div>\n </div>\n </main>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { UserFilled, Promotion } from '@element-plus/icons-vue'\n\nconst baseInfo = [\n {\n icon: UserFilled,\n text: '粥里有勺糖',\n href: 'https://sugarat.top',\n },\n {\n icon: Promotion,\n text: 'engineerzjl@foxmail.com',\n href: 'mailto:engineerzjl@foxmail.com',\n },\n]\n\nconst qrCOdes = [\n {\n text: '微信',\n img: 'https://img.cdn.sugarat.top/mdImg/MTYxOTE1NTk3MTkyNA==619155971925',\n },\n {\n text: '公众号',\n img: 'https://img.cdn.sugarat.top/mdImg/MTYxOTE1NTYwNzQ5MQ==619155607491',\n },\n {\n text: 'QQ',\n img: 'https://img.cdn.sugarat.top/mdImg/MTYxOTE1NjQ5ODczOQ==619156498739',\n },\n {\n text: '交流群',\n img: 'https://img.cdn.sugarat.top/mdImg/MTY0Nzc2MTE2MTE2NA==ep-group.png',\n },\n]\n\n</script>\n<style lang=\"scss\" scoped>\nh1,\nh2,\nh3,\nh4 {\n font-weight: 500;\n}\n.callme {\n background-image: linear-gradient(120deg, #a1c4fd 0%, #c2e9fb 100%);\n min-height: 100vh;\n}\nmain {\n max-width: 860px;\n margin: 0 auto;\n padding: 20px;\n .panel {\n position: relative;\n margin: 0 auto 20px;\n padding: 16px 20px;\n width: 100%;\n overflow: hidden;\n border-radius: 0.25rem;\n box-shadow: #eee;\n box-sizing: border-box;\n transition: all 0.3s;\n background-color: #fff;\n }\n h1 {\n font-size: 1.6rem;\n font-weight: 500;\n margin-bottom: 10px;\n }\n .baseinfo {\n color: #7f7f7f;\n font-size: 1rem;\n display: flex;\n flex-wrap: wrap;\n a {\n color: #7f7f7f;\n font-size: 1rem;\n margin-left: 10px;\n }\n .info-item {\n margin-right: 20px;\n }\n margin-bottom: 10px;\n }\n hr {\n margin-bottom: 10px;\n }\n .qq-wechat ul {\n list-style: none;\n display: flex;\n flex-wrap: wrap;\n margin-bottom: 10px;\n li {\n text-align: center;\n .title {\n font-weight: 600;\n }\n .content {\n padding: 0.5em;\n }\n img {\n width: 150px;\n }\n }\n }\n .description {\n color: #242424;\n font-size: 15px;\n margin-bottom: 10px;\n text-align: center;\n }\n .links {\n text-align: center;\n a {\n color: #409eff;\n }\n }\n}\n</style>\n"],"names":["_sfc_main","defineComponent","name","_hoisted_1","viewBox","xmlns","_hoisted_3","createElementVNode","fill","d","promotion","_export_sfc","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","userFilled","baseInfo","icon","UserFilled","text","href","Promotion","qrCOdes","img"],"mappings":"8rDAGA,MAAMA,EAAYC,EAAgB,CAChCC,KAAM,cAEFC,EAAa,CACjBC,QAAS,gBACTC,MAAO,8BAMHC,EAAa,CAJgBC,EAAmB,OAAQ,CAC5DC,KAAM,eACNC,EAAG,2GACF,MAAO,IAOV,IAAIC,EAA4BC,EAAYX,EAAW,CAAC,CAAC,SAHzD,SAAqBY,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GACxD,OAAOC,IAAaC,EAAmB,MAAOhB,EAAYG,EAC5D,KChBA,MAAMN,EAAYC,EAAgB,CAChCC,KAAM,eAEFC,EAAa,CACjBC,QAAS,gBACTC,MAAO,8BAMHC,EAAa,CAJgBC,EAAmB,OAAQ,CAC5DC,KAAM,eACNC,EAAG,6JACF,MAAO,IAOV,IAAIW,EAA6BT,EAAYX,EAAW,CAAC,CAAC,SAH1D,SAAqBY,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GACxD,OAAOC,IAAaC,EAAmB,MAAOhB,EAAYG,EAC5D,+YCqBA,MAAMe,EAAW,CACf,CACEC,KAAMC,EACNC,KAAM,QACNC,KAAM,uBAER,CACEH,KAAMI,EACNF,KAAM,0BACNC,KAAM,mCAIJE,EAAU,CACd,CACEH,KAAM,KACNI,IAAK,sEAEP,CACEJ,KAAM,MACNI,IAAK,sEAEP,CACEJ,KAAM,KACNI,IAAK,sEAEP,CACEJ,KAAM,MACNI,IAAK","x_google_ignoreList":[0,1]}
@@ -1,2 +1,2 @@
1
- System.register(["./index-legacy-BLKO-78a.js","./el-form-item-legacy-CcX_hnMk.js","./tip-legacy-DpAPUNpm.js","./refresh-legacy-CchIU9Mh.js","./isEqual-legacy-4dmPHJnc.js","./index-legacy-6cMsZS3c.js"],(function(e,a){"use strict";var t,l,n,r,s,i,o,d,c,u,g,p,m,v,f,x,y,h,w,k,M,b,z,C,E,_,j,O,T,B,I,N,S;return{setters:[e=>{t=e.a4,l=e.g,n=e.d,r=e.a,s=e.c,i=e.b,o=e.Z,d=e.r,c=e.O,u=e.o,g=e.j,p=e.w,m=e.k,v=e.H,f=e.a8,x=e.a9,y=e.e,h=e.F,w=e.C,k=e.t,M=e.D,b=e.S,z=e.E,C=e.I,E=e.x,_=e.v,j=e.p,O=e.f,T=e._},e=>{B=e.E,I=e.a},e=>{N=e.T},e=>{S=e.r},null,null],execute:function(){var a=document.createElement("style");a.textContent="@media screen and (max-width: 700px){.user[data-v-9638922a]{margin-top:40px!important}}.user[data-v-9638922a]{margin:0 auto}.panel[data-v-9638922a]{max-width:1256px;padding:1em;background-color:#fff;margin:10px auto;box-sizing:border-box;box-shadow:0 2px 12px rgba(0,0,0,.1);border-radius:4px}h1[data-v-9638922a]{margin:0;padding:10px 0;font-size:20px;font-weight:700;text-align:center;display:flex;justify-content:center;align-items:center}.service-list[data-v-9638922a]{display:flex;flex-wrap:wrap;justify-content:space-around}.service-item[data-v-9638922a]{display:flex;flex-direction:column;justify-content:center;align-items:center;margin:10px;min-width:120px}.service-item img[data-v-9638922a]{width:80px}.service-item p[data-v-9638922a]{text-align:center;padding-top:10px;font-size:14px}@keyframes rotate-9638922a{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading[data-v-9638922a]{margin-left:10px;animation:rotate-9638922a 1s linear infinite}.error-panel[data-v-9638922a]{padding:0 20px}.error-panel p[data-v-9638922a]{margin-bottom:10px}.error-panel p .error[data-v-9638922a]{color:red}.config-container[data-v-9638922a]{display:flex;justify-content:space-around;flex-wrap:wrap}.config-panel h2[data-v-9638922a]{text-align:center;font-size:16px;margin-bottom:10px}\n",document.head.appendChild(a);const D={getServiceOverview:function(){return t.get("/config/service/overview")},getServiceConfig:function(){return t.get("/config/service/config")},updateCfg:function(e){return t.put("/config/service/config",e)}},A=n({name:"CloseBold"}),L={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Y=[i("path",{fill:"currentColor",d:"M195.2 195.2a64 64 0 0 1 90.496 0L512 421.504 738.304 195.2a64 64 0 0 1 90.496 90.496L602.496 512 828.8 738.304a64 64 0 0 1-90.496 90.496L512 602.496 285.696 828.8a64 64 0 0 1-90.496-90.496L421.504 512 195.2 285.696a64 64 0 0 1 0-90.496z"},null,-1)];var q=l(A,[["render",function(e,a,t,l,n,i){return r(),s("svg",L,Y)}]]);const V=n({name:"Select"}),Q={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},U=[i("path",{fill:"currentColor",d:"M77.248 415.04a64 64 0 0 1 90.496 0l226.304 226.304L846.528 188.8a64 64 0 1 1 90.56 90.496l-543.04 543.04-316.8-316.8a64 64 0 0 1 0-90.496z"},null,-1)];var F=l(V,[["render",function(e,a,t,l,n,i){return r(),s("svg",Q,U)}]]);const H=e=>(j("data-v-9638922a"),e=e(),O(),e),R={class:"user"},Z={class:"panel"},G=H((()=>i("span",null,"服务概况",-1))),J={class:"service-list"},K=["src","alt"],P={key:2},W={class:"error-panel"},X=H((()=>i("h1",null,"错误信息",-1))),$={class:"error"},ee=H((()=>i("h1",null,"服务相关配置",-1))),ae={href:"https://docs.ep.sugarat.top/deploy/online-new.html#_5-%E6%9C%80%E5%90%8E%E6%9B%B4%E6%96%B0%E9%85%8D%E7%BD%AE"},te={class:"config-container"},le={class:"flex",style:{flex:"1"}};e("default",T(n({__name:"index",setup(e){const a=o([{name:"MySQL",key:"mysql",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTAyMjIwNA==657359022204",status:!1,des:"存储用户数据",errMsg:""},{name:"七牛云",key:"qiniu",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1ODcyODM0Mg==657358728342",status:!1,des:"文件存储"},{name:"MongoDB",key:"mongodb",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTA4OTc3Nw==657359089777",status:!1,des:"用户数据与日志"},{name:"Redis",key:"redis",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1ODgyNzM1MA==657358827350",status:!1,des:"持久化缓存数据",error:"确保安装redis,且监听端口6379"},{name:"腾讯云",key:"tx",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTE1MzQzOQ==657359153439",status:!1,des:"短信服务"}]),t=d(!1),l=c((()=>a.filter((e=>e.errMsg))));function n(){t.value||(t.value=!0,D.getServiceOverview().then((e=>{const{data:l}=e;a.forEach((e=>{const{status:a,errMsg:t}=l[e.key];e.status=a,e.errMsg=t})),z.success("服务状态刷新完成"),t.value=!1})))}const j=d([]);return u((()=>{n(),D.getServiceConfig().then((e=>{e.data.forEach((e=>{e.data.forEach((e=>{e.disabled=!0}))})),j.value=e.data}))})),(e,o)=>{const d=C,c=E,u=_,O=B,T=I;return r(),s("div",R,[i("div",Z,[i("div",null,[i("h1",null,[G,g(d,{class:v({loading:t.value}),style:{cursor:"pointer","margin-left":"10px"},onClick:n},{default:p((()=>[g(m(S))])),_:1},8,["class"]),f(i("span",null,"数据加载中...",512),[[x,t.value]])]),g(N,null,{default:p((()=>[y("查看各个服务的运行情况")])),_:1}),i("div",J,[(r(!0),s(h,null,w(a,(e=>(r(),s("div",{key:e.key,class:"service-item"},[i("img",{src:e.logo,alt:e.name},null,8,K),i("p",null,[g(N,null,{default:p((()=>[y(k(e.des),1)])),_:2},1024)]),e.status?(r(),M(c,{key:0,type:"success",size:"small",icon:m(F),circle:""},null,8,["icon"])):(r(),M(c,{key:1,type:"danger",size:"small",icon:m(q),circle:""},null,8,["icon"])),!e.status&&e.error?(r(),s("p",P,[g(N,null,{default:p((()=>[y(k(e.error),1)])),_:2},1024)])):b("",!0)])))),128))])]),f(i("div",W,[X,(r(!0),s(h,null,w(l.value,(e=>(r(),s("p",{key:e.key},[i("strong",null,k(e.name)+":",1),i("span",$,k(e.errMsg),1)])))),128))],512),[[x,l.value.length]]),i("div",null,[ee,g(N,null,{default:p((()=>[y(" 在此面板,配置服务器运行相关参数 "),i("a",ae,[g(c,{type:"primary",link:""},{default:p((()=>[y("配置手册?")])),_:1})])])),_:1})]),i("div",te,[(r(!0),s(h,null,w(j.value,(e=>(r(),s("div",{key:e.title,class:"config-panel"},[i("h2",null,k(e.title),1),g(T,{"label-position":"right","label-width":"100px",style:{"max-width":"400px",margin:"0 auto"}},{default:p((()=>[(r(!0),s(h,null,w(e.data,(e=>(r(),M(O,{key:e.key,"label-width":"auto",label:e.label||e.key},{default:p((()=>[i("div",le,[g(u,{modelValue:e.value,"onUpdate:modelValue":a=>e.value=a,disabled:e.disabled},null,8,["modelValue","onUpdate:modelValue","disabled"]),e.disabled?(r(),M(c,{key:0,type:"primary",text:"",onClick:a=>e.disabled=!1},{default:p((()=>[y(" 更新 ")])),_:2},1032,["onClick"])):(r(),M(c,{key:1,type:"success",text:"",onClick:a=>{return t=e,void D.updateCfg(t).then((()=>{t.disabled=!0,z.success("更新成功"),n()}));var t}},{default:p((()=>[y(" 完成 ")])),_:2},1032,["onClick"]))])])),_:2},1032,["label"])))),128))])),_:2},1024)])))),128))])])])}}}),[["__scopeId","data-v-9638922a"]]))}}}));
2
- //# sourceMappingURL=index-legacy-BFfoAOF1.js.map
1
+ System.register(["./index-legacy-DC5-MYgp.js","./el-form-item-legacy-DNwgpXzk.js","./tip-legacy-Ci60OMi9.js","./refresh-legacy-Cv7RM_sm.js","./isEqual-legacy-DVLZyo95.js","./index-legacy-DiNZXmUs.js"],(function(e,a){"use strict";var t,l,n,r,s,i,o,d,c,u,g,p,m,v,f,x,y,h,w,k,M,b,z,C,E,_,j,O,T,B,I,N,S;return{setters:[e=>{t=e.a4,l=e.g,n=e.d,r=e.a,s=e.c,i=e.b,o=e.Z,d=e.r,c=e.O,u=e.o,g=e.j,p=e.w,m=e.k,v=e.H,f=e.a8,x=e.a9,y=e.e,h=e.F,w=e.C,k=e.t,M=e.D,b=e.S,z=e.E,C=e.I,E=e.x,_=e.v,j=e.p,O=e.f,T=e._},e=>{B=e.E,I=e.a},e=>{N=e.T},e=>{S=e.r},null,null],execute:function(){var a=document.createElement("style");a.textContent="@media screen and (max-width: 700px){.user[data-v-9638922a]{margin-top:40px!important}}.user[data-v-9638922a]{margin:0 auto}.panel[data-v-9638922a]{max-width:1256px;padding:1em;background-color:#fff;margin:10px auto;box-sizing:border-box;box-shadow:0 2px 12px rgba(0,0,0,.1);border-radius:4px}h1[data-v-9638922a]{margin:0;padding:10px 0;font-size:20px;font-weight:700;text-align:center;display:flex;justify-content:center;align-items:center}.service-list[data-v-9638922a]{display:flex;flex-wrap:wrap;justify-content:space-around}.service-item[data-v-9638922a]{display:flex;flex-direction:column;justify-content:center;align-items:center;margin:10px;min-width:120px}.service-item img[data-v-9638922a]{width:80px}.service-item p[data-v-9638922a]{text-align:center;padding-top:10px;font-size:14px}@keyframes rotate-9638922a{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading[data-v-9638922a]{margin-left:10px;animation:rotate-9638922a 1s linear infinite}.error-panel[data-v-9638922a]{padding:0 20px}.error-panel p[data-v-9638922a]{margin-bottom:10px}.error-panel p .error[data-v-9638922a]{color:red}.config-container[data-v-9638922a]{display:flex;justify-content:space-around;flex-wrap:wrap}.config-panel h2[data-v-9638922a]{text-align:center;font-size:16px;margin-bottom:10px}\n",document.head.appendChild(a);const D={getServiceOverview:function(){return t.get("/config/service/overview")},getServiceConfig:function(){return t.get("/config/service/config")},updateCfg:function(e){return t.put("/config/service/config",e)}},A=n({name:"CloseBold"}),L={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},Y=[i("path",{fill:"currentColor",d:"M195.2 195.2a64 64 0 0 1 90.496 0L512 421.504 738.304 195.2a64 64 0 0 1 90.496 90.496L602.496 512 828.8 738.304a64 64 0 0 1-90.496 90.496L512 602.496 285.696 828.8a64 64 0 0 1-90.496-90.496L421.504 512 195.2 285.696a64 64 0 0 1 0-90.496z"},null,-1)];var q=l(A,[["render",function(e,a,t,l,n,i){return r(),s("svg",L,Y)}]]);const V=n({name:"Select"}),Q={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},U=[i("path",{fill:"currentColor",d:"M77.248 415.04a64 64 0 0 1 90.496 0l226.304 226.304L846.528 188.8a64 64 0 1 1 90.56 90.496l-543.04 543.04-316.8-316.8a64 64 0 0 1 0-90.496z"},null,-1)];var F=l(V,[["render",function(e,a,t,l,n,i){return r(),s("svg",Q,U)}]]);const H=e=>(j("data-v-9638922a"),e=e(),O(),e),R={class:"user"},Z={class:"panel"},G=H((()=>i("span",null,"服务概况",-1))),J={class:"service-list"},K=["src","alt"],P={key:2},W={class:"error-panel"},X=H((()=>i("h1",null,"错误信息",-1))),$={class:"error"},ee=H((()=>i("h1",null,"服务相关配置",-1))),ae={href:"https://docs.ep.sugarat.top/deploy/online-new.html#_5-%E6%9C%80%E5%90%8E%E6%9B%B4%E6%96%B0%E9%85%8D%E7%BD%AE"},te={class:"config-container"},le={class:"flex",style:{flex:"1"}};e("default",T(n({__name:"index",setup(e){const a=o([{name:"MySQL",key:"mysql",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTAyMjIwNA==657359022204",status:!1,des:"存储用户数据",errMsg:""},{name:"七牛云",key:"qiniu",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1ODcyODM0Mg==657358728342",status:!1,des:"文件存储"},{name:"MongoDB",key:"mongodb",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTA4OTc3Nw==657359089777",status:!1,des:"用户数据与日志"},{name:"Redis",key:"redis",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1ODgyNzM1MA==657358827350",status:!1,des:"持久化缓存数据",error:"确保安装redis,且监听端口6379"},{name:"腾讯云",key:"tx",logo:"https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTE1MzQzOQ==657359153439",status:!1,des:"短信服务"}]),t=d(!1),l=c((()=>a.filter((e=>e.errMsg))));function n(){t.value||(t.value=!0,D.getServiceOverview().then((e=>{const{data:l}=e;a.forEach((e=>{const{status:a,errMsg:t}=l[e.key];e.status=a,e.errMsg=t})),z.success("服务状态刷新完成"),t.value=!1})))}const j=d([]);return u((()=>{n(),D.getServiceConfig().then((e=>{e.data.forEach((e=>{e.data.forEach((e=>{e.disabled=!0}))})),j.value=e.data}))})),(e,o)=>{const d=C,c=E,u=_,O=B,T=I;return r(),s("div",R,[i("div",Z,[i("div",null,[i("h1",null,[G,g(d,{class:v({loading:t.value}),style:{cursor:"pointer","margin-left":"10px"},onClick:n},{default:p((()=>[g(m(S))])),_:1},8,["class"]),f(i("span",null,"数据加载中...",512),[[x,t.value]])]),g(N,null,{default:p((()=>[y("查看各个服务的运行情况")])),_:1}),i("div",J,[(r(!0),s(h,null,w(a,(e=>(r(),s("div",{key:e.key,class:"service-item"},[i("img",{src:e.logo,alt:e.name},null,8,K),i("p",null,[g(N,null,{default:p((()=>[y(k(e.des),1)])),_:2},1024)]),e.status?(r(),M(c,{key:0,type:"success",size:"small",icon:m(F),circle:""},null,8,["icon"])):(r(),M(c,{key:1,type:"danger",size:"small",icon:m(q),circle:""},null,8,["icon"])),!e.status&&e.error?(r(),s("p",P,[g(N,null,{default:p((()=>[y(k(e.error),1)])),_:2},1024)])):b("",!0)])))),128))])]),f(i("div",W,[X,(r(!0),s(h,null,w(l.value,(e=>(r(),s("p",{key:e.key},[i("strong",null,k(e.name)+":",1),i("span",$,k(e.errMsg),1)])))),128))],512),[[x,l.value.length]]),i("div",null,[ee,g(N,null,{default:p((()=>[y(" 在此面板,配置服务器运行相关参数 "),i("a",ae,[g(c,{type:"primary",link:""},{default:p((()=>[y("配置手册?")])),_:1})])])),_:1})]),i("div",te,[(r(!0),s(h,null,w(j.value,(e=>(r(),s("div",{key:e.title,class:"config-panel"},[i("h2",null,k(e.title),1),g(T,{"label-position":"right","label-width":"100px",style:{"max-width":"400px",margin:"0 auto"}},{default:p((()=>[(r(!0),s(h,null,w(e.data,(e=>(r(),M(O,{key:e.key,"label-width":"auto",label:e.label||e.key},{default:p((()=>[i("div",le,[g(u,{modelValue:e.value,"onUpdate:modelValue":a=>e.value=a,disabled:e.disabled},null,8,["modelValue","onUpdate:modelValue","disabled"]),e.disabled?(r(),M(c,{key:0,type:"primary",text:"",onClick:a=>e.disabled=!1},{default:p((()=>[y(" 更新 ")])),_:2},1032,["onClick"])):(r(),M(c,{key:1,type:"success",text:"",onClick:a=>{return t=e,void D.updateCfg(t).then((()=>{t.disabled=!0,z.success("更新成功"),n()}));var t}},{default:p((()=>[y(" 完成 ")])),_:2},1032,["onClick"]))])])),_:2},1032,["label"])))),128))])),_:2},1024)])))),128))])])])}}}),[["__scopeId","data-v-9638922a"]]))}}}));
2
+ //# sourceMappingURL=index-legacy-BdJHr4yN.js.map