@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.
- package/dist/assets/{data-analysis-CVdTnsNg.js → data-analysis-B61f8OZD.js} +2 -2
- package/dist/assets/{data-analysis-CVdTnsNg.js.map → data-analysis-B61f8OZD.js.map} +1 -1
- package/dist/assets/{data-analysis-legacy-CrjrJgyN.js → data-analysis-legacy-sXkPNcPD.js} +2 -2
- package/dist/assets/{data-analysis-legacy-CrjrJgyN.js.map → data-analysis-legacy-sXkPNcPD.js.map} +1 -1
- package/dist/assets/{data-board-CKaKy1IB.js → data-board-BIN3HXKE.js} +2 -2
- package/dist/assets/{data-board-CKaKy1IB.js.map → data-board-BIN3HXKE.js.map} +1 -1
- package/dist/assets/{data-board-legacy-DfESxuEd.js → data-board-legacy-mqcredpF.js} +2 -2
- package/dist/assets/{data-board-legacy-DfESxuEd.js.map → data-board-legacy-mqcredpF.js.map} +1 -1
- package/dist/assets/{el-date-picker-cVKa-X4K.js → el-date-picker-B-cvGosU.js} +2 -2
- package/dist/assets/{el-date-picker-cVKa-X4K.js.map → el-date-picker-B-cvGosU.js.map} +1 -1
- package/dist/assets/{el-date-picker-legacy-CJ2heCkq.js → el-date-picker-legacy-CACCtxzL.js} +2 -2
- package/dist/assets/{el-date-picker-legacy-CJ2heCkq.js.map → el-date-picker-legacy-CACCtxzL.js.map} +1 -1
- package/dist/assets/{el-dialog-U5Zmt3t3.js → el-dialog-C9wNxcPt.js} +2 -2
- package/dist/assets/{el-dialog-U5Zmt3t3.js.map → el-dialog-C9wNxcPt.js.map} +1 -1
- package/dist/assets/{el-dialog-legacy-u4KST5yo.js → el-dialog-legacy-CX7a77_4.js} +2 -2
- package/dist/assets/{el-dialog-legacy-u4KST5yo.js.map → el-dialog-legacy-CX7a77_4.js.map} +1 -1
- package/dist/assets/{el-dropdown-item-flwUs2cH.js → el-dropdown-item-jbdZL0Yj.js} +2 -2
- package/dist/assets/{el-dropdown-item-flwUs2cH.js.map → el-dropdown-item-jbdZL0Yj.js.map} +1 -1
- package/dist/assets/{el-dropdown-item-legacy-B2fmSGnI.js → el-dropdown-item-legacy-ChoB2YAN.js} +2 -2
- package/dist/assets/{el-dropdown-item-legacy-B2fmSGnI.js.map → el-dropdown-item-legacy-ChoB2YAN.js.map} +1 -1
- package/dist/assets/{el-form-item-B08Ira7l.js → el-form-item-BhAyaXPT.js} +2 -2
- package/dist/assets/{el-form-item-B08Ira7l.js.map → el-form-item-BhAyaXPT.js.map} +1 -1
- package/dist/assets/{el-form-item-legacy-CcX_hnMk.js → el-form-item-legacy-DNwgpXzk.js} +2 -2
- package/dist/assets/{el-form-item-legacy-CcX_hnMk.js.map → el-form-item-legacy-DNwgpXzk.js.map} +1 -1
- package/dist/assets/{el-loading-BMbhg8vq.js → el-loading-D5D_2rI_.js} +2 -2
- package/dist/assets/{el-loading-BMbhg8vq.js.map → el-loading-D5D_2rI_.js.map} +1 -1
- package/dist/assets/{el-loading-legacy-CRJF51cp.js → el-loading-legacy-CCDpn-BT.js} +2 -2
- package/dist/assets/{el-loading-legacy-CRJF51cp.js.map → el-loading-legacy-CCDpn-BT.js.map} +1 -1
- package/dist/assets/{el-pagination-D4Wuvfl8.js → el-pagination-DRV4WevC.js} +2 -2
- package/dist/assets/{el-pagination-D4Wuvfl8.js.map → el-pagination-DRV4WevC.js.map} +1 -1
- package/dist/assets/{el-pagination-legacy-C2E-fHif.js → el-pagination-legacy-CAxn6D5y.js} +2 -2
- package/dist/assets/{el-pagination-legacy-C2E-fHif.js.map → el-pagination-legacy-CAxn6D5y.js.map} +1 -1
- package/dist/assets/{el-progress-ChbdZpVl.js → el-progress-GDfl1hgb.js} +2 -2
- package/dist/assets/{el-progress-ChbdZpVl.js.map → el-progress-GDfl1hgb.js.map} +1 -1
- package/dist/assets/{el-progress-legacy-zjlCtRh2.js → el-progress-legacy-C5K3FqLs.js} +2 -2
- package/dist/assets/{el-progress-legacy-zjlCtRh2.js.map → el-progress-legacy-C5K3FqLs.js.map} +1 -1
- package/dist/assets/{el-select-DP5UYxt3.js → el-select-B9z8VvNb.js} +2 -2
- package/dist/assets/{el-select-DP5UYxt3.js.map → el-select-B9z8VvNb.js.map} +1 -1
- package/dist/assets/{el-select-legacy-D4o92tvp.js → el-select-legacy-BI1YK9Jv.js} +2 -2
- package/dist/assets/{el-select-legacy-D4o92tvp.js.map → el-select-legacy-BI1YK9Jv.js.map} +1 -1
- package/dist/assets/{el-switch-legacy-D1AVOg2z.js → el-switch-legacy-CG_sT4XS.js} +2 -2
- package/dist/assets/{el-switch-legacy-D1AVOg2z.js.map → el-switch-legacy-CG_sT4XS.js.map} +1 -1
- package/dist/assets/{el-switch-DAReoFaC.js → el-switch-oOC_byJv.js} +2 -2
- package/dist/assets/{el-switch-DAReoFaC.js.map → el-switch-oOC_byJv.js.map} +1 -1
- package/dist/assets/{el-tab-pane-6kk7HB4E.js → el-tab-pane-NvGl_NI0.js} +2 -2
- package/dist/assets/{el-tab-pane-6kk7HB4E.js.map → el-tab-pane-NvGl_NI0.js.map} +1 -1
- package/dist/assets/{el-tab-pane-legacy-7aEB8qvn.js → el-tab-pane-legacy-usarmKVQ.js} +2 -2
- package/dist/assets/{el-tab-pane-legacy-7aEB8qvn.js.map → el-tab-pane-legacy-usarmKVQ.js.map} +1 -1
- package/dist/assets/{el-table-column-DsGlAuX3.js → el-table-column-JBAymLKS.js} +2 -2
- package/dist/assets/{el-table-column-DsGlAuX3.js.map → el-table-column-JBAymLKS.js.map} +1 -1
- package/dist/assets/{el-table-column-legacy-C8A33Lav.js → el-table-column-legacy-BWpnrxZl.js} +2 -2
- package/dist/assets/{el-table-column-legacy-C8A33Lav.js.map → el-table-column-legacy-BWpnrxZl.js.map} +1 -1
- package/dist/assets/{index-ggQcjFPK.js → index-B0mV367i.js} +2 -2
- package/dist/assets/{index-ggQcjFPK.js.map → index-B0mV367i.js.map} +1 -1
- package/dist/assets/{index-ShzTlShR.css → index-BOep9MOB.css} +1 -1
- package/dist/assets/{index-DjTj_2YG.js → index-BUF8Xxid.js} +2 -2
- package/dist/assets/{index-DjTj_2YG.js.map → index-BUF8Xxid.js.map} +1 -1
- package/dist/assets/index-BxsJs6HZ.js +2 -0
- package/dist/assets/index-BxsJs6HZ.js.map +1 -0
- package/dist/assets/{index-Dczz94WX.js → index-Byzqqd86.js} +2 -2
- package/dist/assets/{index-Dczz94WX.js.map → index-Byzqqd86.js.map} +1 -1
- package/dist/assets/{index-my4zFbcM.js → index-C0niS8Vv.js} +2 -2
- package/dist/assets/{index-my4zFbcM.js.map → index-C0niS8Vv.js.map} +1 -1
- package/dist/assets/{index-BdVQjSN6.js → index-CHIrZkSk.js} +2 -2
- package/dist/assets/{index-BdVQjSN6.js.map → index-CHIrZkSk.js.map} +1 -1
- package/dist/assets/{index-CeKw5v7N.js → index-CKIiHmIf.js} +2 -2
- package/dist/assets/{index-CeKw5v7N.js.map → index-CKIiHmIf.js.map} +1 -1
- package/dist/assets/{index-mKO4gpWB.js → index-Cno4i6lg.js} +2 -2
- package/dist/assets/{index-mKO4gpWB.js.map → index-Cno4i6lg.js.map} +1 -1
- package/dist/assets/{index-yrncPnXk.js → index-D80lTVeV.js} +3 -3
- package/dist/assets/{index-yrncPnXk.js.map → index-D80lTVeV.js.map} +1 -1
- package/dist/assets/{index-Caxtv5sl.js → index-DCwrZmag.js} +2 -2
- package/dist/assets/{index-Caxtv5sl.js.map → index-DCwrZmag.js.map} +1 -1
- package/dist/assets/{index-BK3KKBAN.js → index-DDGYm9L-.js} +2 -2
- package/dist/assets/{index-BK3KKBAN.js.map → index-DDGYm9L-.js.map} +1 -1
- package/dist/assets/{index-BVM3WMNO.js → index-DEiWe2Bk.js} +2 -2
- package/dist/assets/{index-BVM3WMNO.js.map → index-DEiWe2Bk.js.map} +1 -1
- package/dist/assets/{index-DkbS1z1O.js → index-DJnltRnr.js} +2 -2
- package/dist/assets/{index-DkbS1z1O.js.map → index-DJnltRnr.js.map} +1 -1
- package/dist/assets/{index-BMZu8UZ6.js → index-DMIqQLOE.js} +2 -2
- package/dist/assets/{index-BMZu8UZ6.js.map → index-DMIqQLOE.js.map} +1 -1
- package/dist/assets/{index-BnQi1XPn.js → index-DRHl9KU8.js} +2 -2
- package/dist/assets/{index-BnQi1XPn.js.map → index-DRHl9KU8.js.map} +1 -1
- package/dist/assets/{index-jSHW6lhR.js → index-Dj5caLYF.js} +2 -2
- package/dist/assets/{index-jSHW6lhR.js.map → index-Dj5caLYF.js.map} +1 -1
- package/dist/assets/{index-D-JYypPJ.js → index-Dxy6ycv8.js} +2 -2
- package/dist/assets/{index-D-JYypPJ.js.map → index-Dxy6ycv8.js.map} +1 -1
- package/dist/assets/{index-D6LMez3u.js → index-MTuc20rr.js} +2 -2
- package/dist/assets/{index-D6LMez3u.js.map → index-MTuc20rr.js.map} +1 -1
- package/dist/assets/{index-q94vR-7W.js → index-bD-fr3vy.js} +2 -2
- package/dist/assets/{index-q94vR-7W.js.map → index-bD-fr3vy.js.map} +1 -1
- package/dist/assets/{index-DcmA3tsY.js → index-fb67TYJ8.js} +2 -2
- package/dist/assets/{index-DcmA3tsY.js.map → index-fb67TYJ8.js.map} +1 -1
- package/dist/assets/{index-legacy-DVOM8HaY.js → index-legacy-2G5G7SiF.js} +2 -2
- package/dist/assets/index-legacy-2G5G7SiF.js.map +1 -0
- package/dist/assets/{index-legacy-DcKfHHls.js → index-legacy-B1WwgC0S.js} +2 -2
- package/dist/assets/{index-legacy-DcKfHHls.js.map → index-legacy-B1WwgC0S.js.map} +1 -1
- package/dist/assets/{index-legacy-CRq_O11N.js → index-legacy-BN-W2P7-.js} +2 -2
- package/dist/assets/{index-legacy-CRq_O11N.js.map → index-legacy-BN-W2P7-.js.map} +1 -1
- package/dist/assets/{index-legacy-DasH54g3.js → index-legacy-BZb5uhBF.js} +2 -2
- package/dist/assets/{index-legacy-DasH54g3.js.map → index-legacy-BZb5uhBF.js.map} +1 -1
- package/dist/assets/{index-legacy-BFfoAOF1.js → index-legacy-BdJHr4yN.js} +2 -2
- package/dist/assets/{index-legacy-BFfoAOF1.js.map → index-legacy-BdJHr4yN.js.map} +1 -1
- package/dist/assets/{index-legacy-CW0OHQkF.js → index-legacy-BwpR0DP9.js} +2 -2
- package/dist/assets/{index-legacy-CW0OHQkF.js.map → index-legacy-BwpR0DP9.js.map} +1 -1
- package/dist/assets/{index-legacy-BqL3XK76.js → index-legacy-Cbyz8WHA.js} +2 -2
- package/dist/assets/{index-legacy-BqL3XK76.js.map → index-legacy-Cbyz8WHA.js.map} +1 -1
- package/dist/assets/{index-legacy-DD6zMGGT.js → index-legacy-Chw6iyCz.js} +2 -2
- package/dist/assets/{index-legacy-DD6zMGGT.js.map → index-legacy-Chw6iyCz.js.map} +1 -1
- package/dist/assets/{index-legacy-BLKO-78a.js → index-legacy-DC5-MYgp.js} +2 -2
- package/dist/assets/{index-legacy-BLKO-78a.js.map → index-legacy-DC5-MYgp.js.map} +1 -1
- package/dist/assets/{index-legacy-pP3Pmgbs.js → index-legacy-DM_G6GXF.js} +2 -2
- package/dist/assets/{index-legacy-pP3Pmgbs.js.map → index-legacy-DM_G6GXF.js.map} +1 -1
- package/dist/assets/{index-legacy-Dt4Eky4l.js → index-legacy-DP3Q6cDA.js} +2 -2
- package/dist/assets/{index-legacy-Dt4Eky4l.js.map → index-legacy-DP3Q6cDA.js.map} +1 -1
- package/dist/assets/{index-legacy-B4s89tRC.js → index-legacy-DUrsbgNe.js} +2 -2
- package/dist/assets/{index-legacy-B4s89tRC.js.map → index-legacy-DUrsbgNe.js.map} +1 -1
- package/dist/assets/{index-legacy-BezkAR3b.js → index-legacy-DV-KwU0c.js} +2 -2
- package/dist/assets/{index-legacy-BezkAR3b.js.map → index-legacy-DV-KwU0c.js.map} +1 -1
- package/dist/assets/{index-legacy-6cMsZS3c.js → index-legacy-DiNZXmUs.js} +2 -2
- package/dist/assets/{index-legacy-6cMsZS3c.js.map → index-legacy-DiNZXmUs.js.map} +1 -1
- package/dist/assets/{index-legacy-2f3kE3Xe.js → index-legacy-DmJc-LaA.js} +2 -2
- package/dist/assets/{index-legacy-2f3kE3Xe.js.map → index-legacy-DmJc-LaA.js.map} +1 -1
- package/dist/assets/{index-legacy-CqVgmAMA.js → index-legacy-Dmi-DBK0.js} +2 -2
- package/dist/assets/{index-legacy-CqVgmAMA.js.map → index-legacy-Dmi-DBK0.js.map} +1 -1
- package/dist/assets/{index-legacy-CslCZVZ0.js → index-legacy-K0GPuvtR.js} +2 -2
- package/dist/assets/{index-legacy-CslCZVZ0.js.map → index-legacy-K0GPuvtR.js.map} +1 -1
- package/dist/assets/{index-legacy-CUZgiMNa.js → index-legacy-Qibh5ehq.js} +2 -2
- package/dist/assets/{index-legacy-CUZgiMNa.js.map → index-legacy-Qibh5ehq.js.map} +1 -1
- package/dist/assets/{index-legacy-bElvuK5I.js → index-legacy-gQf30T09.js} +2 -2
- package/dist/assets/{index-legacy-bElvuK5I.js.map → index-legacy-gQf30T09.js.map} +1 -1
- package/dist/assets/{index-legacy-8BA9X4aO.js → index-legacy-l7TP3X8w.js} +2 -2
- package/dist/assets/{index-legacy-8BA9X4aO.js.map → index-legacy-l7TP3X8w.js.map} +1 -1
- package/dist/assets/{isEqual-legacy-4dmPHJnc.js → isEqual-legacy-DVLZyo95.js} +2 -2
- package/dist/assets/{isEqual-legacy-4dmPHJnc.js.map → isEqual-legacy-DVLZyo95.js.map} +1 -1
- package/dist/assets/{isEqual-DdkrQbjH.js → isEqual-pN6Ih18F.js} +2 -2
- package/dist/assets/{isEqual-DdkrQbjH.js.map → isEqual-pN6Ih18F.js.map} +1 -1
- package/dist/assets/{refresh-CCIG6-IB.js → refresh-BTQLK-UW.js} +2 -2
- package/dist/assets/{refresh-CCIG6-IB.js.map → refresh-BTQLK-UW.js.map} +1 -1
- package/dist/assets/{refresh-legacy-CchIU9Mh.js → refresh-legacy-Cv7RM_sm.js} +2 -2
- package/dist/assets/{refresh-legacy-CchIU9Mh.js.map → refresh-legacy-Cv7RM_sm.js.map} +1 -1
- package/dist/assets/{tip-BM0xMiq8.js → tip-DQo-E_Pu.js} +2 -2
- package/dist/assets/{tip-BM0xMiq8.js.map → tip-DQo-E_Pu.js.map} +1 -1
- package/dist/assets/{tip-legacy-DpAPUNpm.js → tip-legacy-Ci60OMi9.js} +2 -2
- package/dist/assets/{tip-legacy-DpAPUNpm.js.map → tip-legacy-Ci60OMi9.js.map} +1 -1
- package/dist/assets/validator-CZlzBDi2.js +2 -0
- package/dist/assets/{validator-DG4_rB-x.js.map → validator-CZlzBDi2.js.map} +1 -1
- package/dist/assets/validator-legacy-D-pC1hkO.js +2 -0
- package/dist/assets/{validator-legacy-CN5REdqi.js.map → validator-legacy-D-pC1hkO.js.map} +1 -1
- package/dist/index.html +2 -2
- package/package.json +4 -3
- package/dist/assets/index-ITkwOdUc.js +0 -2
- package/dist/assets/index-ITkwOdUc.js.map +0 -1
- package/dist/assets/index-legacy-DVOM8HaY.js.map +0 -1
- package/dist/assets/validator-DG4_rB-x.js +0 -2
- package/dist/assets/validator-legacy-CN5REdqi.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-jSHW6lhR.js","sources":["../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/popover/src/popover.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/popover/src/popover2.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/popover/src/directive.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/popover/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/bell.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/close.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/expand.mjs","../../src/components/MessageList/index.vue","../../src/components/MessagePanel/index.vue","../../src/pages/dashboard/index.vue"],"sourcesContent":["import '../../../utils/index.mjs';\nimport '../../tooltip/index.mjs';\nimport '../../dropdown/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { useTooltipTriggerProps, useTooltipContentProps } from '../../tooltip/src/tooltip.mjs';\nimport { dropdownProps } from '../../dropdown/src/dropdown.mjs';\nimport { isBoolean } from '@vueuse/core';\n\nconst popoverProps = buildProps({\n trigger: useTooltipTriggerProps.trigger,\n placement: dropdownProps.placement,\n disabled: useTooltipTriggerProps.disabled,\n visible: useTooltipContentProps.visible,\n transition: useTooltipContentProps.transition,\n popperOptions: dropdownProps.popperOptions,\n tabindex: dropdownProps.tabindex,\n content: useTooltipContentProps.content,\n popperStyle: useTooltipContentProps.popperStyle,\n popperClass: useTooltipContentProps.popperClass,\n enterable: {\n ...useTooltipContentProps.enterable,\n default: true\n },\n effect: {\n ...useTooltipContentProps.effect,\n default: \"light\"\n },\n teleported: useTooltipContentProps.teleported,\n title: String,\n width: {\n type: [String, Number],\n default: 150\n },\n offset: {\n type: Number,\n default: void 0\n },\n showAfter: {\n type: Number,\n default: 0\n },\n hideAfter: {\n type: Number,\n default: 200\n },\n autoClose: {\n type: Number,\n default: 0\n },\n showArrow: {\n type: Boolean,\n default: true\n },\n persistent: {\n type: Boolean,\n default: true\n },\n \"onUpdate:visible\": {\n type: Function\n }\n});\nconst popoverEmits = {\n \"update:visible\": (value) => isBoolean(value),\n \"before-enter\": () => true,\n \"before-leave\": () => true,\n \"after-enter\": () => true,\n \"after-leave\": () => true\n};\n\nexport { popoverEmits, popoverProps };\n//# sourceMappingURL=popover.mjs.map\n","import { defineComponent, computed, ref, unref, openBlock, createBlock, mergeProps, withCtx, createElementBlock, normalizeClass, toDisplayString, createCommentVNode, renderSlot, createTextVNode } from 'vue';\nimport { ElTooltip } from '../../tooltip/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { popoverProps, popoverEmits } from './popover.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { addUnit } from '../../../utils/dom/style.mjs';\n\nconst __default__ = {\n name: \"ElPopover\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: popoverProps,\n emits: popoverEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const updateEventKeyRaw = `onUpdate:visible`;\n const onUpdateVisible = computed(() => {\n return props[updateEventKeyRaw];\n });\n const ns = useNamespace(\"popover\");\n const tooltipRef = ref();\n const popperRef = computed(() => {\n var _a;\n return (_a = unref(tooltipRef)) == null ? void 0 : _a.popperRef;\n });\n const style = computed(() => {\n return [\n {\n width: addUnit(props.width)\n },\n props.popperStyle\n ];\n });\n const kls = computed(() => {\n return [ns.b(), props.popperClass, { [ns.m(\"plain\")]: !!props.content }];\n });\n const gpuAcceleration = computed(() => {\n return props.transition === \"el-fade-in-linear\";\n });\n const hide = () => {\n var _a;\n (_a = tooltipRef.value) == null ? void 0 : _a.hide();\n };\n const beforeEnter = () => {\n emit(\"before-enter\");\n };\n const beforeLeave = () => {\n emit(\"before-leave\");\n };\n const afterEnter = () => {\n emit(\"after-enter\");\n };\n const afterLeave = () => {\n emit(\"update:visible\", false);\n emit(\"after-leave\");\n };\n expose({\n popperRef,\n hide\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(ElTooltip), mergeProps({\n ref_key: \"tooltipRef\",\n ref: tooltipRef\n }, _ctx.$attrs, {\n trigger: _ctx.trigger,\n placement: _ctx.placement,\n disabled: _ctx.disabled,\n visible: _ctx.visible,\n transition: _ctx.transition,\n \"popper-options\": _ctx.popperOptions,\n tabindex: _ctx.tabindex,\n content: _ctx.content,\n offset: _ctx.offset,\n \"show-after\": _ctx.showAfter,\n \"hide-after\": _ctx.hideAfter,\n \"auto-close\": _ctx.autoClose,\n \"show-arrow\": _ctx.showArrow,\n \"aria-label\": _ctx.title,\n effect: _ctx.effect,\n enterable: _ctx.enterable,\n \"popper-class\": unref(kls),\n \"popper-style\": unref(style),\n teleported: _ctx.teleported,\n persistent: _ctx.persistent,\n \"gpu-acceleration\": unref(gpuAcceleration),\n \"onUpdate:visible\": unref(onUpdateVisible),\n onBeforeShow: beforeEnter,\n onBeforeHide: beforeLeave,\n onShow: afterEnter,\n onHide: afterLeave\n }), {\n content: withCtx(() => [\n _ctx.title ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"title\")),\n role: \"title\"\n }, toDisplayString(_ctx.title), 3)) : createCommentVNode(\"v-if\", true),\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createTextVNode(toDisplayString(_ctx.content), 1)\n ])\n ]),\n default: withCtx(() => [\n _ctx.$slots.reference ? renderSlot(_ctx.$slots, \"reference\", { key: 0 }) : createCommentVNode(\"v-if\", true)\n ]),\n _: 3\n }, 16, [\"trigger\", \"placement\", \"disabled\", \"visible\", \"transition\", \"popper-options\", \"tabindex\", \"content\", \"offset\", \"show-after\", \"hide-after\", \"auto-close\", \"show-arrow\", \"aria-label\", \"effect\", \"enterable\", \"popper-class\", \"popper-style\", \"teleported\", \"persistent\", \"gpu-acceleration\", \"onUpdate:visible\"]);\n };\n }\n});\nvar Popover = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"/home/runner/work/element-plus/element-plus/packages/components/popover/src/popover.vue\"]]);\n\nexport { Popover as default };\n//# sourceMappingURL=popover2.mjs.map\n","const attachEvents = (el, binding) => {\n const popperComponent = binding.arg || binding.value;\n const popover = popperComponent == null ? void 0 : popperComponent.popperRef;\n if (popover) {\n popover.triggerRef = el;\n }\n};\nvar PopoverDirective = {\n mounted(el, binding) {\n attachEvents(el, binding);\n },\n updated(el, binding) {\n attachEvents(el, binding);\n }\n};\nconst VPopover = \"popover\";\n\nexport { VPopover, PopoverDirective as default };\n//# sourceMappingURL=directive.mjs.map\n","import '../../utils/index.mjs';\nimport Popover from './src/popover2.mjs';\nimport PopoverDirective, { VPopover } from './src/directive.mjs';\nexport { popoverEmits, popoverProps } from './src/popover.mjs';\nimport { withInstallDirective, withInstall } from '../../utils/vue/install.mjs';\n\nconst ElPopoverDirective = withInstallDirective(PopoverDirective, VPopover);\nconst ElPopover = withInstall(Popover, {\n directive: ElPopoverDirective\n});\n\nexport { ElPopover, ElPopoverDirective, ElPopover 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: \"Bell\"\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 64a64 64 0 0 1 64 64v64H448v-64a64 64 0 0 1 64-64z\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M256 768h512V448a256 256 0 1 0-512 0v320zm256-640a320 320 0 0 1 320 320v384H192V448a320 320 0 0 1 320-320z\"\n}, null, -1);\nconst _hoisted_4 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M96 768h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32zm352 128h128a64 64 0 0 1-128 0z\"\n}, null, -1);\nconst _hoisted_5 = [\n _hoisted_2,\n _hoisted_3,\n _hoisted_4\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_5);\n}\nvar bell = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { bell 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: \"Close\"\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: \"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z\"\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 close = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { close 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: \"Expand\"\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: \"M128 192h768v128H128V192zm0 256h512v128H128V448zm0 256h768v128H128V704zm576-352 192 160-192 128V352z\"\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 expand = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { expand as default };\n","<script lang=\"ts\" setup>\nimport { reactive, ref, watch } from 'vue'\nimport { formatDate } from '@/utils/stringUtil'\nimport { SuperUserApi } from '@/apis'\nimport { useIsMobile } from '@/composables'\n\nconst props = defineProps<{\n data: SuperUserApiTypes.MessageItem[]\n autoShow?: boolean\n}>()\n\nconst dialogMessage = reactive({\n show: false,\n title: '系统消息',\n text: '内容',\n})\nconst activeMessage = ref<SuperUserApiTypes.MessageItem>(null)\nfunction handleViewDialogMessage(v: SuperUserApiTypes.MessageItem) {\n activeMessage.value = v\n dialogMessage.text = v.text\n // TODO: 魔法数字问题\n // TODO:支持更多的消息类型\n dialogMessage.title = v.type === 0 ? '【系统消息】' : '【私信】'\n dialogMessage.show = true\n}\n\nfunction readMessage() {\n if (activeMessage.value.read) {\n dialogMessage.show = false\n return\n }\n SuperUserApi.readMessage(activeMessage.value.id).then(() => {\n activeMessage.value.read = true\n dialogMessage.show = false\n })\n}\n\nwatch(\n () => props.data.length,\n () => {\n if (!props.autoShow) {\n return\n }\n const showItem = props.data.find(v => !v.read)\n if (showItem) {\n handleViewDialogMessage(showItem)\n }\n },\n)\n\nconst isMobile = useIsMobile()\n</script>\n\n<template>\n <div v-if=\"!data.length\" class=\"empty\">\n 暂无更多消息 ღ( ´・ᴗ・` )比心\n </div>\n <ul class=\"message-list\">\n <li\n v-for=\"d in data\"\n :key=\"d.id\"\n :class=\"{\n read: d.read,\n }\"\n @click=\"handleViewDialogMessage(d)\"\n >\n <p class=\"text\">\n {{ d.text }}\n </p>\n <p class=\"date\">\n {{ formatDate(new Date(d.date)) }}\n </p>\n </li>\n </ul>\n <el-dialog\n v-model=\"dialogMessage.show\"\n center\n show-close\n append-to-body\n :close-on-click-modal=\"false\"\n :title=\"dialogMessage.title\"\n width=\"30%\"\n :fullscreen=\"isMobile\"\n >\n <div class=\"message-text\" v-html=\"dialogMessage.text\" />\n <template #footer>\n <p class=\"dialog-date\">\n 时间:{{ formatDate(new Date(activeMessage.date)) }}\n </p>\n <span>\n <el-button\n type=\"default\"\n @click=\"\n () => {\n dialogMessage.show = false\n }\n \"\n >\n 下次提醒\n </el-button>\n <el-button type=\"primary\" @click=\"readMessage\"> 确定 </el-button>\n </span>\n </template>\n </el-dialog>\n</template>\n\n<style lang=\"scss\" scoped>\n.message-list {\n list-style: none;\n max-height: 500px;\n overflow-y: scroll;\n li {\n border-bottom: 1px solid #ddd;\n padding: 10px;\n cursor: pointer;\n &.read {\n opacity: 0.5;\n &:hover {\n opacity: 0.9;\n }\n }\n &:last-child {\n border-bottom: none;\n }\n\n p.text {\n font-size: 16px;\n display: -webkit-box;\n overflow: hidden;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n }\n p.date {\n font-size: 14px;\n margin-top: 4px;\n }\n }\n}\n.empty {\n text-align: center;\n padding: 10px;\n}\n\n.dialog-date {\n font-size: 14px;\n text-align: right;\n padding: 10px;\n color: grey;\n}\n</style>\n\n<style lang=\"scss\">\n.message-text {\n overflow-y: scroll;\n max-height: 500px;\n ul,\n ol {\n list-style: none;\n }\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { Bell } from '@element-plus/icons-vue'\nimport { computed, reactive, onMounted, ref } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { SuperUserApi } from '@/apis'\nimport MessageList from '@/components/MessageList/index.vue'\n\nconst activeTab = ref<'all' | 'no'>('all')\nconst messageData = reactive<SuperUserApiTypes.MessageItem[]>([])\n\nconst noReadMessage = computed(() => messageData.filter((v) => !v.read))\nconst route = useRoute()\nonMounted(() => {\n if (route.name !== 'config') {\n SuperUserApi.getMessageList().then((v) => {\n messageData.push(...v.data)\n })\n }\n})\n</script>\n<template>\n <div class=\"message-panel\">\n <el-popover placement=\"bottom-end\" :width=\"375\" trigger=\"hover\">\n <template #reference>\n <el-badge :value=\"noReadMessage.length || ''\" :max=\"99\">\n <el-button :icon=\"Bell\" circle />\n </el-badge>\n </template>\n <div>\n <el-tabs v-model=\"activeTab\">\n <el-tab-pane :label=\"`未读 ${noReadMessage.length || ''}`\" name=\"no\">\n <message-list auto-show :data=\"noReadMessage\" />\n </el-tab-pane>\n <el-tab-pane :label=\"`全部 ${messageData.length || ''}`\" name=\"all\">\n <message-list :data=\"messageData\" />\n </el-tab-pane>\n </el-tabs>\n </div>\n </el-popover>\n </div>\n</template>\n<style lang=\"scss\" scoped>\n.message-panel {\n margin-right: 10px;\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { ArrowDown, Close, Expand } from '@element-plus/icons-vue'\nimport HomeFooter from '@components/HomeFooter/index.vue'\n\nimport { onMounted, reactive, ref, watch } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\nimport { useStore } from 'vuex'\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport MessagePanel from '@/components/MessagePanel/index.vue'\nimport { UserApi } from '@/apis'\nimport { useIsMobile } from '@/composables'\n\nconst isMobile = useIsMobile()\n\nconst $router = useRouter()\nconst $store = useStore()\nconst $route = useRoute()\nconst navList = reactive<\n { title: string, path: string, isExternal?: boolean }[]\n>([\n {\n title: '文件管理',\n path: '/dashboard/files',\n },\n {\n title: '任务管理',\n path: '/dashboard/tasks',\n },\n])\nconst navActiveIdx = ref(0)\nfunction handleNav(idx: number) {\n const n = navList[idx]\n if (!n.isExternal && idx !== navActiveIdx.value) {\n $router.push({\n path: n.path,\n })\n }\n if (n.isExternal) {\n window.open(n.path, '_blank')\n }\n}\n\n// 自动切换激活的标题栏\nwatch(\n () => $route.path,\n (path: string) => {\n const idx = navList.findIndex(n => path.startsWith(n.path))\n if (idx !== -1) {\n navActiveIdx.value = idx\n }\n },\n)\n\nfunction handleLogout() {\n ElMessageBox.confirm('确认退出登录?', '登出提示', {\n draggable: true,\n })\n .then(() => {\n // 登出接口\n UserApi.logout().finally(() => {\n $store.commit('user/setToken', null)\n $router.replace({\n name: 'home',\n })\n })\n })\n .catch(() => {\n ElMessage.info('取消')\n })\n}\nconst userName = ref('World')\n\nfunction refreshActiveTab() {\n // 动态修改active的项\n navActiveIdx.value = navList.findIndex(v => $route.path.startsWith(v.path))\n}\nonMounted(() => {\n // 动态添加管理页面入口\n UserApi.checkPower().then((r) => {\n const isSuperAdmin = r.data?.power\n userName.value = r.data?.name\n $store.commit('user/setSuperAdmin', isSuperAdmin)\n if (isSuperAdmin) {\n const superNavList = [\n {\n title: '应用管理',\n path: '/dashboard/manage',\n },\n {\n title: '网站监控',\n path: 'https://www.frontjs.com/app/87c1ef7667a513f313b4abb22a88dc78',\n isExternal: true,\n },\n ]\n navList.push(...superNavList)\n }\n const isSystem = r.data?.system\n if (isSystem) {\n navList.splice(0, navList.length)\n navList.push({\n title: '系统管理',\n path: '/dashboard/config',\n })\n }\n refreshActiveTab()\n })\n})\n</script>\n\n<template>\n <div class=\"dashboard\">\n <div class=\"pc-nav\">\n <div class=\"nav\">\n <!-- LOGO -->\n <div class=\"logo\">\n <router-link to=\"/\">\n <img\n src=\"https://img.cdn.sugarat.top/easypicker/EasyPicker.png\"\n alt=\"logo\"\n >\n </router-link>\n </div>\n <input v-if=\"isMobile\" id=\"navActive\" type=\"checkbox\">\n <nav>\n <label v-if=\"isMobile\" for=\"navActive\" class=\"nav-item\">\n <span>Hello💐,</span>\n {{ userName }}\n </label>\n <label\n v-for=\"(n, idx) in navList\"\n :key=\"idx\"\n for=\"navActive\"\n class=\"nav-item\"\n :class=\"{\n active: navActiveIdx === idx,\n }\"\n @click=\"handleNav(idx)\"\n >{{ n.title }}</label>\n <label\n v-if=\"isMobile\"\n for=\"navActive\"\n class=\"nav-item\"\n @click=\"handleLogout\"\n >\n <span style=\"margin-right: 6px\">退出</span>\n <el-icon size=\"16\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n data-v-53d86618\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10.6667 2.55473C13.0212 3.58347 14.6667 5.93291 14.6667 8.66667C14.6667 12.3486 11.6819 15.3333 8 15.3333C4.3181 15.3333 1.33333 12.3486 1.33333 8.66667C1.33333 5.93291 2.97879 3.58347 5.33333 2.55473V4.04684C3.7392 4.969 2.66667 6.69259 2.66667 8.66667C2.66667 11.6122 5.05448 14 8 14C10.9455 14 13.3333 11.6122 13.3333 8.66667C13.3333 6.69259 12.2608 4.969 10.6667 4.04684V2.55473ZM7.33333 8.66667V1.33333C7.33333 1.14924 7.48257 1 7.66667 1H8.33333C8.51743 1 8.66667 1.14924 8.66667 1.33333V8.66667C8.66667 8.85076 8.51743 9 8.33333 9H7.66667C7.48257 9 7.33333 8.85076 7.33333 8.66667Z\"\n fill=\"#86909C\"\n data-v-53d86618\n />\n </svg>\n </el-icon>\n </label>\n </nav>\n <div class=\"mask\" />\n </div>\n <!-- 移动端展示 -->\n <span id=\"navMenu\">\n <MessagePanel v-if=\"isMobile\" class=\"mobile-message-bell\" />\n <label for=\"navActive\">\n <el-icon size=\"32\">\n <Expand />\n </el-icon>\n </label>\n </span>\n <div v-if=\"!isMobile\" class=\"flex fac\">\n <MessagePanel />\n <span>Hello 💐,</span>\n <el-dropdown class=\"exit\">\n <span class=\"exit-info\">\n <span class=\"ellipsis\">{{ userName }}</span>\n <el-icon>\n <ArrowDown />\n </el-icon>\n </span>\n <template #dropdown>\n <el-dropdown-menu>\n <el-dropdown-item :icon=\"Close\" @click=\"handleLogout\">\n 退出\n </el-dropdown-item>\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n </div>\n </div>\n <router-view />\n <div>\n <HomeFooter type=\"dashboard\" />\n </div>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.dashboard {\n background-color: #fafafa;\n}\n.pc-nav {\n background-color: #fff;\n display: flex;\n padding: 10px;\n justify-content: space-between;\n align-items: center;\n .exit {\n cursor: pointer;\n display: flex;\n align-items: center;\n .exit-info {\n display: flex;\n justify-content: center;\n align-items: center;\n > span {\n margin-right: 5px;\n display: block;\n max-width: 70px;\n }\n }\n }\n .nav {\n display: flex;\n nav {\n display: flex;\n align-items: center;\n .nav-item {\n font-size: 1rem;\n color: #595959;\n padding: 10px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n &.active {\n color: #409eff !important;\n font-weight: 600;\n }\n }\n }\n .exit {\n color: #595959;\n }\n }\n .logo {\n width: 180px;\n margin: 0 10px;\n img {\n height: 40px;\n }\n }\n}\n#navActive {\n display: none;\n opacity: 0;\n}\n#navMenu {\n display: none;\n}\n.mobile-message-bell {\n display: none;\n position: fixed;\n right: 0;\n top: 0;\n}\n@media screen and (max-width: 700px) {\n #navActive {\n display: block;\n position: fixed;\n left: 0;\n top: 0;\n }\n .mobile-message-bell {\n display: block;\n }\n #navMenu {\n cursor: pointer;\n display: block;\n position: absolute;\n left: 10px;\n top: 5px;\n font-size: 2rem;\n }\n .pc-nav {\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n z-index: 6;\n .nav {\n flex-wrap: wrap;\n width: 100%;\n .logo {\n width: 100%;\n text-align: center;\n }\n }\n #navActive {\n & + nav {\n display: none;\n }\n }\n #navActive:checked {\n & + nav {\n display: flex;\n flex-direction: column;\n width: 100%;\n position: absolute;\n z-index: 1;\n background: #fff;\n left: 0;\n top: 50px;\n + .mask {\n display: block;\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 50px;\n background-color: rgba(0, 0, 0, 0.5);\n }\n }\n }\n .exit {\n position: absolute;\n right: 10px;\n top: 20px;\n }\n }\n}\n</style>\n"],"names":["popoverProps","buildProps","useTooltipTriggerProps","dropdownProps","useTooltipContentProps","popoverEmits","value","isBoolean","__default__","_sfc_main","defineComponent","__props","expose","emit","props","updateEventKeyRaw","onUpdateVisible","computed","ns","useNamespace","tooltipRef","ref","popperRef","_a","unref","style","addUnit","kls","gpuAcceleration","hide","beforeEnter","beforeLeave","afterEnter","afterLeave","_ctx","_cache","openBlock","createBlock","ElTooltip","mergeProps","withCtx","createElementBlock","normalizeClass","toDisplayString","createCommentVNode","renderSlot","createTextVNode","Popover","_export_sfc","attachEvents","el","binding","popperComponent","popover","PopoverDirective","VPopover","ElPopoverDirective","withInstallDirective","ElPopover","withInstall","_hoisted_1","_hoisted_2","createElementVNode","_hoisted_3","_hoisted_4","_hoisted_5","_sfc_render","$props","$setup","$data","$options","bell","close","expand","dialogMessage","reactive","activeMessage","handleViewDialogMessage","v","readMessage","SuperUserApi","watch","showItem","isMobile","useIsMobile","activeTab","messageData","noReadMessage","route","useRoute","onMounted","$router","useRouter","$store","useStore","$route","navList","navActiveIdx","handleNav","idx","n","path","handleLogout","ElMessageBox","UserApi","ElMessage","userName","refreshActiveTab","r","isSuperAdmin","_b","superNavList","_c"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}
|
|
1
|
+
{"version":3,"file":"index-Dj5caLYF.js","sources":["../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/popover/src/popover.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/popover/src/popover2.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/popover/src/directive.mjs","../../node_modules/.pnpm/element-plus@2.2.13_vue@3.4.31_typescript@4.9.5_/node_modules/element-plus/es/components/popover/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/bell.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/close.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/expand.mjs","../../src/components/MessageList/index.vue","../../src/components/MessagePanel/index.vue","../../src/pages/dashboard/index.vue"],"sourcesContent":["import '../../../utils/index.mjs';\nimport '../../tooltip/index.mjs';\nimport '../../dropdown/index.mjs';\nimport { buildProps } from '../../../utils/vue/props/runtime.mjs';\nimport { useTooltipTriggerProps, useTooltipContentProps } from '../../tooltip/src/tooltip.mjs';\nimport { dropdownProps } from '../../dropdown/src/dropdown.mjs';\nimport { isBoolean } from '@vueuse/core';\n\nconst popoverProps = buildProps({\n trigger: useTooltipTriggerProps.trigger,\n placement: dropdownProps.placement,\n disabled: useTooltipTriggerProps.disabled,\n visible: useTooltipContentProps.visible,\n transition: useTooltipContentProps.transition,\n popperOptions: dropdownProps.popperOptions,\n tabindex: dropdownProps.tabindex,\n content: useTooltipContentProps.content,\n popperStyle: useTooltipContentProps.popperStyle,\n popperClass: useTooltipContentProps.popperClass,\n enterable: {\n ...useTooltipContentProps.enterable,\n default: true\n },\n effect: {\n ...useTooltipContentProps.effect,\n default: \"light\"\n },\n teleported: useTooltipContentProps.teleported,\n title: String,\n width: {\n type: [String, Number],\n default: 150\n },\n offset: {\n type: Number,\n default: void 0\n },\n showAfter: {\n type: Number,\n default: 0\n },\n hideAfter: {\n type: Number,\n default: 200\n },\n autoClose: {\n type: Number,\n default: 0\n },\n showArrow: {\n type: Boolean,\n default: true\n },\n persistent: {\n type: Boolean,\n default: true\n },\n \"onUpdate:visible\": {\n type: Function\n }\n});\nconst popoverEmits = {\n \"update:visible\": (value) => isBoolean(value),\n \"before-enter\": () => true,\n \"before-leave\": () => true,\n \"after-enter\": () => true,\n \"after-leave\": () => true\n};\n\nexport { popoverEmits, popoverProps };\n//# sourceMappingURL=popover.mjs.map\n","import { defineComponent, computed, ref, unref, openBlock, createBlock, mergeProps, withCtx, createElementBlock, normalizeClass, toDisplayString, createCommentVNode, renderSlot, createTextVNode } from 'vue';\nimport { ElTooltip } from '../../tooltip/index.mjs';\nimport '../../../utils/index.mjs';\nimport '../../../hooks/index.mjs';\nimport { popoverProps, popoverEmits } from './popover.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { addUnit } from '../../../utils/dom/style.mjs';\n\nconst __default__ = {\n name: \"ElPopover\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: popoverProps,\n emits: popoverEmits,\n setup(__props, { expose, emit }) {\n const props = __props;\n const updateEventKeyRaw = `onUpdate:visible`;\n const onUpdateVisible = computed(() => {\n return props[updateEventKeyRaw];\n });\n const ns = useNamespace(\"popover\");\n const tooltipRef = ref();\n const popperRef = computed(() => {\n var _a;\n return (_a = unref(tooltipRef)) == null ? void 0 : _a.popperRef;\n });\n const style = computed(() => {\n return [\n {\n width: addUnit(props.width)\n },\n props.popperStyle\n ];\n });\n const kls = computed(() => {\n return [ns.b(), props.popperClass, { [ns.m(\"plain\")]: !!props.content }];\n });\n const gpuAcceleration = computed(() => {\n return props.transition === \"el-fade-in-linear\";\n });\n const hide = () => {\n var _a;\n (_a = tooltipRef.value) == null ? void 0 : _a.hide();\n };\n const beforeEnter = () => {\n emit(\"before-enter\");\n };\n const beforeLeave = () => {\n emit(\"before-leave\");\n };\n const afterEnter = () => {\n emit(\"after-enter\");\n };\n const afterLeave = () => {\n emit(\"update:visible\", false);\n emit(\"after-leave\");\n };\n expose({\n popperRef,\n hide\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(ElTooltip), mergeProps({\n ref_key: \"tooltipRef\",\n ref: tooltipRef\n }, _ctx.$attrs, {\n trigger: _ctx.trigger,\n placement: _ctx.placement,\n disabled: _ctx.disabled,\n visible: _ctx.visible,\n transition: _ctx.transition,\n \"popper-options\": _ctx.popperOptions,\n tabindex: _ctx.tabindex,\n content: _ctx.content,\n offset: _ctx.offset,\n \"show-after\": _ctx.showAfter,\n \"hide-after\": _ctx.hideAfter,\n \"auto-close\": _ctx.autoClose,\n \"show-arrow\": _ctx.showArrow,\n \"aria-label\": _ctx.title,\n effect: _ctx.effect,\n enterable: _ctx.enterable,\n \"popper-class\": unref(kls),\n \"popper-style\": unref(style),\n teleported: _ctx.teleported,\n persistent: _ctx.persistent,\n \"gpu-acceleration\": unref(gpuAcceleration),\n \"onUpdate:visible\": unref(onUpdateVisible),\n onBeforeShow: beforeEnter,\n onBeforeHide: beforeLeave,\n onShow: afterEnter,\n onHide: afterLeave\n }), {\n content: withCtx(() => [\n _ctx.title ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass(unref(ns).e(\"title\")),\n role: \"title\"\n }, toDisplayString(_ctx.title), 3)) : createCommentVNode(\"v-if\", true),\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createTextVNode(toDisplayString(_ctx.content), 1)\n ])\n ]),\n default: withCtx(() => [\n _ctx.$slots.reference ? renderSlot(_ctx.$slots, \"reference\", { key: 0 }) : createCommentVNode(\"v-if\", true)\n ]),\n _: 3\n }, 16, [\"trigger\", \"placement\", \"disabled\", \"visible\", \"transition\", \"popper-options\", \"tabindex\", \"content\", \"offset\", \"show-after\", \"hide-after\", \"auto-close\", \"show-arrow\", \"aria-label\", \"effect\", \"enterable\", \"popper-class\", \"popper-style\", \"teleported\", \"persistent\", \"gpu-acceleration\", \"onUpdate:visible\"]);\n };\n }\n});\nvar Popover = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__file\", \"/home/runner/work/element-plus/element-plus/packages/components/popover/src/popover.vue\"]]);\n\nexport { Popover as default };\n//# sourceMappingURL=popover2.mjs.map\n","const attachEvents = (el, binding) => {\n const popperComponent = binding.arg || binding.value;\n const popover = popperComponent == null ? void 0 : popperComponent.popperRef;\n if (popover) {\n popover.triggerRef = el;\n }\n};\nvar PopoverDirective = {\n mounted(el, binding) {\n attachEvents(el, binding);\n },\n updated(el, binding) {\n attachEvents(el, binding);\n }\n};\nconst VPopover = \"popover\";\n\nexport { VPopover, PopoverDirective as default };\n//# sourceMappingURL=directive.mjs.map\n","import '../../utils/index.mjs';\nimport Popover from './src/popover2.mjs';\nimport PopoverDirective, { VPopover } from './src/directive.mjs';\nexport { popoverEmits, popoverProps } from './src/popover.mjs';\nimport { withInstallDirective, withInstall } from '../../utils/vue/install.mjs';\n\nconst ElPopoverDirective = withInstallDirective(PopoverDirective, VPopover);\nconst ElPopover = withInstall(Popover, {\n directive: ElPopoverDirective\n});\n\nexport { ElPopover, ElPopoverDirective, ElPopover 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: \"Bell\"\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 64a64 64 0 0 1 64 64v64H448v-64a64 64 0 0 1 64-64z\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M256 768h512V448a256 256 0 1 0-512 0v320zm256-640a320 320 0 0 1 320 320v384H192V448a320 320 0 0 1 320-320z\"\n}, null, -1);\nconst _hoisted_4 = /* @__PURE__ */ createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M96 768h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32zm352 128h128a64 64 0 0 1-128 0z\"\n}, null, -1);\nconst _hoisted_5 = [\n _hoisted_2,\n _hoisted_3,\n _hoisted_4\n];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_5);\n}\nvar bell = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { bell 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: \"Close\"\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: \"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z\"\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 close = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { close 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: \"Expand\"\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: \"M128 192h768v128H128V192zm0 256h512v128H128V448zm0 256h768v128H128V704zm576-352 192 160-192 128V352z\"\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 expand = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { expand as default };\n","<script lang=\"ts\" setup>\nimport { reactive, ref, watch } from 'vue'\nimport { formatDate } from '@/utils/stringUtil'\nimport { SuperUserApi } from '@/apis'\nimport { useIsMobile } from '@/composables'\n\nconst props = defineProps<{\n data: SuperUserApiTypes.MessageItem[]\n autoShow?: boolean\n}>()\n\nconst dialogMessage = reactive({\n show: false,\n title: '系统消息',\n text: '内容',\n})\nconst activeMessage = ref<SuperUserApiTypes.MessageItem>(null)\nfunction handleViewDialogMessage(v: SuperUserApiTypes.MessageItem) {\n activeMessage.value = v\n dialogMessage.text = v.text\n // TODO: 魔法数字问题\n // TODO:支持更多的消息类型\n dialogMessage.title = v.type === 0 ? '【系统消息】' : '【私信】'\n dialogMessage.show = true\n}\n\nfunction readMessage() {\n if (activeMessage.value.read) {\n dialogMessage.show = false\n return\n }\n SuperUserApi.readMessage(activeMessage.value.id).then(() => {\n activeMessage.value.read = true\n dialogMessage.show = false\n })\n}\n\nwatch(\n () => props.data.length,\n () => {\n if (!props.autoShow) {\n return\n }\n const showItem = props.data.find(v => !v.read)\n if (showItem) {\n handleViewDialogMessage(showItem)\n }\n },\n)\n\nconst isMobile = useIsMobile()\n</script>\n\n<template>\n <div v-if=\"!data.length\" class=\"empty\">\n 暂无更多消息 ღ( ´・ᴗ・` )比心\n </div>\n <ul class=\"message-list\">\n <li\n v-for=\"d in data\"\n :key=\"d.id\"\n :class=\"{\n read: d.read,\n }\"\n @click=\"handleViewDialogMessage(d)\"\n >\n <p class=\"text\">\n {{ d.text }}\n </p>\n <p class=\"date\">\n {{ formatDate(new Date(d.date)) }}\n </p>\n </li>\n </ul>\n <el-dialog\n v-model=\"dialogMessage.show\"\n center\n show-close\n append-to-body\n :close-on-click-modal=\"false\"\n :title=\"dialogMessage.title\"\n width=\"30%\"\n :fullscreen=\"isMobile\"\n >\n <div class=\"message-text\" v-html=\"dialogMessage.text\" />\n <template #footer>\n <p class=\"dialog-date\">\n 时间:{{ formatDate(new Date(activeMessage.date)) }}\n </p>\n <span>\n <el-button\n type=\"default\"\n @click=\"\n () => {\n dialogMessage.show = false\n }\n \"\n >\n 下次提醒\n </el-button>\n <el-button type=\"primary\" @click=\"readMessage\"> 确定 </el-button>\n </span>\n </template>\n </el-dialog>\n</template>\n\n<style lang=\"scss\" scoped>\n.message-list {\n list-style: none;\n max-height: 500px;\n overflow-y: scroll;\n li {\n border-bottom: 1px solid #ddd;\n padding: 10px;\n cursor: pointer;\n &.read {\n opacity: 0.5;\n &:hover {\n opacity: 0.9;\n }\n }\n &:last-child {\n border-bottom: none;\n }\n\n p.text {\n font-size: 16px;\n display: -webkit-box;\n overflow: hidden;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n }\n p.date {\n font-size: 14px;\n margin-top: 4px;\n }\n }\n}\n.empty {\n text-align: center;\n padding: 10px;\n}\n\n.dialog-date {\n font-size: 14px;\n text-align: right;\n padding: 10px;\n color: grey;\n}\n</style>\n\n<style lang=\"scss\">\n.message-text {\n overflow-y: scroll;\n max-height: 500px;\n ul,\n ol {\n list-style: none;\n }\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { Bell } from '@element-plus/icons-vue'\nimport { computed, reactive, onMounted, ref } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { SuperUserApi } from '@/apis'\nimport MessageList from '@/components/MessageList/index.vue'\n\nconst activeTab = ref<'all' | 'no'>('all')\nconst messageData = reactive<SuperUserApiTypes.MessageItem[]>([])\n\nconst noReadMessage = computed(() => messageData.filter((v) => !v.read))\nconst route = useRoute()\nonMounted(() => {\n if (route.name !== 'config') {\n SuperUserApi.getMessageList().then((v) => {\n messageData.push(...v.data)\n })\n }\n})\n</script>\n<template>\n <div class=\"message-panel\">\n <el-popover placement=\"bottom-end\" :width=\"375\" trigger=\"hover\">\n <template #reference>\n <el-badge :value=\"noReadMessage.length || ''\" :max=\"99\">\n <el-button :icon=\"Bell\" circle />\n </el-badge>\n </template>\n <div>\n <el-tabs v-model=\"activeTab\">\n <el-tab-pane :label=\"`未读 ${noReadMessage.length || ''}`\" name=\"no\">\n <message-list auto-show :data=\"noReadMessage\" />\n </el-tab-pane>\n <el-tab-pane :label=\"`全部 ${messageData.length || ''}`\" name=\"all\">\n <message-list :data=\"messageData\" />\n </el-tab-pane>\n </el-tabs>\n </div>\n </el-popover>\n </div>\n</template>\n<style lang=\"scss\" scoped>\n.message-panel {\n margin-right: 10px;\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { ArrowDown, Close, Expand } from '@element-plus/icons-vue'\nimport HomeFooter from '@components/HomeFooter/index.vue'\n\nimport { onMounted, reactive, ref, watch } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\nimport { useStore } from 'vuex'\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimport MessagePanel from '@/components/MessagePanel/index.vue'\nimport { UserApi } from '@/apis'\nimport { useIsMobile } from '@/composables'\n\nconst isMobile = useIsMobile()\n\nconst $router = useRouter()\nconst $store = useStore()\nconst $route = useRoute()\nconst navList = reactive<\n { title: string, path: string, isExternal?: boolean }[]\n>([\n {\n title: '文件管理',\n path: '/dashboard/files',\n },\n {\n title: '任务管理',\n path: '/dashboard/tasks',\n },\n])\nconst navActiveIdx = ref(0)\nfunction handleNav(idx: number) {\n const n = navList[idx]\n if (!n.isExternal && idx !== navActiveIdx.value) {\n $router.push({\n path: n.path,\n })\n }\n if (n.isExternal) {\n window.open(n.path, '_blank')\n }\n}\n\n// 自动切换激活的标题栏\nwatch(\n () => $route.path,\n (path: string) => {\n const idx = navList.findIndex(n => path.startsWith(n.path))\n if (idx !== -1) {\n navActiveIdx.value = idx\n }\n },\n)\n\nfunction handleLogout() {\n ElMessageBox.confirm('确认退出登录?', '登出提示', {\n draggable: true,\n })\n .then(() => {\n // 登出接口\n UserApi.logout().finally(() => {\n $store.commit('user/setToken', null)\n $router.replace({\n name: 'home',\n })\n })\n })\n .catch(() => {\n ElMessage.info('取消')\n })\n}\nconst userName = ref('World')\n\nfunction refreshActiveTab() {\n // 动态修改active的项\n navActiveIdx.value = navList.findIndex(v => $route.path.startsWith(v.path))\n}\nonMounted(() => {\n // 动态添加管理页面入口\n UserApi.checkPower().then((r) => {\n const isSuperAdmin = r.data?.power\n userName.value = r.data?.name\n $store.commit('user/setSuperAdmin', isSuperAdmin)\n if (isSuperAdmin) {\n const superNavList = [\n {\n title: '应用管理',\n path: '/dashboard/manage',\n },\n {\n title: '网站监控',\n path: 'https://www.frontjs.com/app/87c1ef7667a513f313b4abb22a88dc78',\n isExternal: true,\n },\n ]\n navList.push(...superNavList)\n }\n const isSystem = r.data?.system\n if (isSystem) {\n navList.splice(0, navList.length)\n navList.push({\n title: '系统管理',\n path: '/dashboard/config',\n })\n }\n refreshActiveTab()\n })\n})\n</script>\n\n<template>\n <div class=\"dashboard\">\n <div class=\"pc-nav\">\n <div class=\"nav\">\n <!-- LOGO -->\n <div class=\"logo\">\n <router-link to=\"/\">\n <img\n src=\"https://img.cdn.sugarat.top/easypicker/EasyPicker.png\"\n alt=\"logo\"\n >\n </router-link>\n </div>\n <input v-if=\"isMobile\" id=\"navActive\" type=\"checkbox\">\n <nav>\n <label v-if=\"isMobile\" for=\"navActive\" class=\"nav-item\">\n <span>Hello💐,</span>\n {{ userName }}\n </label>\n <label\n v-for=\"(n, idx) in navList\"\n :key=\"idx\"\n for=\"navActive\"\n class=\"nav-item\"\n :class=\"{\n active: navActiveIdx === idx,\n }\"\n @click=\"handleNav(idx)\"\n >{{ n.title }}</label>\n <label\n v-if=\"isMobile\"\n for=\"navActive\"\n class=\"nav-item\"\n @click=\"handleLogout\"\n >\n <span style=\"margin-right: 6px\">退出</span>\n <el-icon size=\"16\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n data-v-53d86618\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M10.6667 2.55473C13.0212 3.58347 14.6667 5.93291 14.6667 8.66667C14.6667 12.3486 11.6819 15.3333 8 15.3333C4.3181 15.3333 1.33333 12.3486 1.33333 8.66667C1.33333 5.93291 2.97879 3.58347 5.33333 2.55473V4.04684C3.7392 4.969 2.66667 6.69259 2.66667 8.66667C2.66667 11.6122 5.05448 14 8 14C10.9455 14 13.3333 11.6122 13.3333 8.66667C13.3333 6.69259 12.2608 4.969 10.6667 4.04684V2.55473ZM7.33333 8.66667V1.33333C7.33333 1.14924 7.48257 1 7.66667 1H8.33333C8.51743 1 8.66667 1.14924 8.66667 1.33333V8.66667C8.66667 8.85076 8.51743 9 8.33333 9H7.66667C7.48257 9 7.33333 8.85076 7.33333 8.66667Z\"\n fill=\"#86909C\"\n data-v-53d86618\n />\n </svg>\n </el-icon>\n </label>\n </nav>\n <div class=\"mask\" />\n </div>\n <!-- 移动端展示 -->\n <span id=\"navMenu\">\n <MessagePanel v-if=\"isMobile\" class=\"mobile-message-bell\" />\n <label for=\"navActive\">\n <el-icon size=\"32\">\n <Expand />\n </el-icon>\n </label>\n </span>\n <div v-if=\"!isMobile\" class=\"flex fac\">\n <MessagePanel />\n <span>Hello 💐,</span>\n <el-dropdown class=\"exit\">\n <span class=\"exit-info\">\n <span class=\"ellipsis\">{{ userName }}</span>\n <el-icon>\n <ArrowDown />\n </el-icon>\n </span>\n <template #dropdown>\n <el-dropdown-menu>\n <el-dropdown-item :icon=\"Close\" @click=\"handleLogout\">\n 退出\n </el-dropdown-item>\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n </div>\n </div>\n <router-view />\n <div>\n <HomeFooter type=\"dashboard\" />\n </div>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.dashboard {\n background-color: #fafafa;\n}\n.pc-nav {\n background-color: #fff;\n display: flex;\n padding: 10px;\n justify-content: space-between;\n align-items: center;\n .exit {\n cursor: pointer;\n display: flex;\n align-items: center;\n .exit-info {\n display: flex;\n justify-content: center;\n align-items: center;\n > span {\n margin-right: 5px;\n display: block;\n max-width: 70px;\n }\n }\n }\n .nav {\n display: flex;\n nav {\n display: flex;\n align-items: center;\n .nav-item {\n font-size: 1rem;\n color: #595959;\n padding: 10px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n &.active {\n color: #409eff !important;\n font-weight: 600;\n }\n }\n }\n .exit {\n color: #595959;\n }\n }\n .logo {\n width: 180px;\n margin: 0 10px;\n img {\n height: 40px;\n }\n }\n}\n#navActive {\n display: none;\n opacity: 0;\n}\n#navMenu {\n display: none;\n}\n.mobile-message-bell {\n display: none;\n position: fixed;\n right: 0;\n top: 0;\n}\n@media screen and (max-width: 700px) {\n #navActive {\n display: block;\n position: fixed;\n left: 0;\n top: 0;\n }\n .mobile-message-bell {\n display: block;\n }\n #navMenu {\n cursor: pointer;\n display: block;\n position: absolute;\n left: 10px;\n top: 5px;\n font-size: 2rem;\n }\n .pc-nav {\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n z-index: 6;\n .nav {\n flex-wrap: wrap;\n width: 100%;\n .logo {\n width: 100%;\n text-align: center;\n }\n }\n #navActive {\n & + nav {\n display: none;\n }\n }\n #navActive:checked {\n & + nav {\n display: flex;\n flex-direction: column;\n width: 100%;\n position: absolute;\n z-index: 1;\n background: #fff;\n left: 0;\n top: 50px;\n + .mask {\n display: block;\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 50px;\n background-color: rgba(0, 0, 0, 0.5);\n }\n }\n }\n .exit {\n position: absolute;\n right: 10px;\n top: 20px;\n }\n }\n}\n</style>\n"],"names":["popoverProps","buildProps","useTooltipTriggerProps","dropdownProps","useTooltipContentProps","popoverEmits","value","isBoolean","__default__","_sfc_main","defineComponent","__props","expose","emit","props","updateEventKeyRaw","onUpdateVisible","computed","ns","useNamespace","tooltipRef","ref","popperRef","_a","unref","style","addUnit","kls","gpuAcceleration","hide","beforeEnter","beforeLeave","afterEnter","afterLeave","_ctx","_cache","openBlock","createBlock","ElTooltip","mergeProps","withCtx","createElementBlock","normalizeClass","toDisplayString","createCommentVNode","renderSlot","createTextVNode","Popover","_export_sfc","attachEvents","el","binding","popperComponent","popover","PopoverDirective","VPopover","ElPopoverDirective","withInstallDirective","ElPopover","withInstall","_hoisted_1","_hoisted_2","createElementVNode","_hoisted_3","_hoisted_4","_hoisted_5","_sfc_render","$props","$setup","$data","$options","bell","close","expand","dialogMessage","reactive","activeMessage","handleViewDialogMessage","v","readMessage","SuperUserApi","watch","showItem","isMobile","useIsMobile","activeTab","messageData","noReadMessage","route","useRoute","onMounted","$router","useRouter","$store","useStore","$route","navList","navActiveIdx","handleNav","idx","n","path","handleLogout","ElMessageBox","UserApi","ElMessage","userName","refreshActiveTab","r","isSuperAdmin","_b","superNavList","_c"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a4 as D,d as se,Z as $,r as d,O as T,o as oe,a as y,c as U,b as u,j as l,w as s,F,C as N,D as R,k as E,e as r,t as O,s as j,E as P,v as ne,x as ue,p as ie,f as de,_ as re}from"./index-
|
|
2
|
-
//# sourceMappingURL=index-
|
|
1
|
+
import{a4 as D,d as se,Z as $,r as d,O as T,o as oe,a as y,c as U,b as u,j as l,w as s,F,C as N,D as R,k as E,e as r,t as O,s as j,E as P,v as ne,x as ue,p as ie,f as de,_ as re}from"./index-D80lTVeV.js";import{E as pe,a as ce}from"./el-form-item-BhAyaXPT.js";import{u as fe,E as me}from"./el-dialog-C9wNxcPt.js";import{s as _e,E as ve}from"./el-pagination-DRV4WevC.js";import{E as he,a as be}from"./el-select-B9z8VvNb.js";import{E as ge,a as we}from"./el-table-column-JBAymLKS.js";import{W as _}from"./index-BrOLxzFM.js";import"./isEqual-pN6Ih18F.js";import"./index-BUF8Xxid.js";import"./validator-CZlzBDi2.js";function Ve(n){return D.post("/wish/add",n)}function ye(){return D.get("/wish/all")}function Ee(n,i){return D.put("/wish/update",{id:n,status:i})}function Ce(n,i,k){return D.put("/wish/update/".concat(n),{title:i,des:k})}const L={addWish:Ve,findAllWish:ye,updateWishStatus:Ee,updateWishDes:Ce},We=n=>(ie("data-v-fb1cf9f1"),n=n(),de(),n),Se={class:"user"},xe={class:"panel"},De={class:"p10 log-filter"},ke={class:"item"},ze=We(()=>u("span",{class:"label"},"状态",-1)),Ie={class:"item"},$e={class:"text-btn-list"},Te={class:"flex fc p10"},Ue={class:"tc"},Le={class:"dialog-footer"},Ae={class:"dialog-footer"},Z="80px",Be=se({__name:"index",setup(n){const i=$([]);function k(){L.findAllWish().then(a=>{i.splice(0,i.length,...a.data)})}const C=d(-1),W=d(""),z=$([{label:"待审核",type:_.REVIEW},{label:"待开始",type:_.WAIT},{label:"关闭",type:_.CLOSE},{label:"已上线",type:_.END},{label:"开发中",type:_.START}]),I=T(()=>i.filter(a=>a.status===C.value||C.value===-1).filter(a=>{const{createDate:t,title:p,des:x,contact:w}=a;return W.value.length===0?!0:"".concat(j(new Date(t))," ").concat(p," ").concat(x," ").concat(w).includes(W.value)})),v=d(10);function q(a){v.value=a}const G=T(()=>Math.ceil(I.value.length/v.value)),S=d(1),H=T(()=>{const a=(S.value-1)*v.value,t=S.value*v.value;return I.value.slice(a,t)});function J(a){S.value=a}const h=d(!1),c=d(""),b=d(_.REVIEW),K=z;function Q(a,t){c.value=a,b.value=t,h.value=!0}function X(){const a=i.find(t=>t.id===c.value);a.status=b.value,h.value=!1,L.updateWishStatus(c.value,b.value).then(()=>{P.success("修改成功")})}const g=d(!1),o=$({title:"",des:""});function Y(a,t,p){c.value=a,o.title=t,o.des=p,g.value=!0}function ee(){const a=i.find(t=>t.id===c.value);L.updateWishDes(c.value,o.title,o.des).then(()=>{g.value=!1,a.title=o.title,a.des=o.des,P.success("修改成功")})}oe(()=>{k()});const A=fe();return(a,t)=>{const p=he,x=be,w=ne,f=ge,m=ue,te=we,le=ve,B=me,M=pe,ae=ce;return y(),U("div",Se,[u("div",xe,[u("div",De,[u("span",ke,[ze,l(x,{modelValue:C.value,"onUpdate:modelValue":t[0]||(t[0]=e=>C.value=e),size:"default",placeholder:"请选择筛选状态"},{default:s(()=>[l(p,{label:"全部",value:-1}),(y(!0),U(F,null,N(z,(e,V)=>(y(),R(p,{key:V,label:e.label,value:e.type},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),u("span",Ie,[l(w,{modelValue:W.value,"onUpdate:modelValue":t[1]||(t[1]=e=>W.value=e),size:"default",clearable:"",placeholder:"请输入要检索的内容","prefix-icon":E(_e)},null,8,["modelValue","prefix-icon"])])]),l(te,{height:"550",stripe:"",border:"","default-sort":{prop:"date",order:"descending"},data:H.value,style:{width:"100%"}},{default:s(()=>[l(f,{sortable:"",prop:"createDate",label:"提交时间",width:"190"},{default:s(e=>[r(O(e.row.createDate&&E(j)(new Date(e.row.createDate))),1)]),_:1}),l(f,{prop:"title",label:"标题",width:"120"}),l(f,{prop:"des",label:"详细描述"}),l(f,{prop:"contact",label:"联系方式"}),l(f,{prop:"status",label:"状态"},{default:s(e=>[r(O(z.find(V=>V.type===e.row.status).label),1)]),_:1}),l(f,{fixed:"right",label:"操作",width:"100"},{default:s(e=>[u("div",$e,[l(m,{type:"primary",text:"",size:"small",onClick:V=>Q(e.row.id,e.row.status)},{default:s(()=>[r(" 修改状态 ")]),_:2},1032,["onClick"]),l(m,{type:"primary",text:"",size:"small",onClick:V=>Y(e.row.id,e.row.title,e.row.des)},{default:s(()=>[r(" 修改描述 ")]),_:2},1032,["onClick"])])]),_:1})]),_:1},8,["data"]),u("div",Te,[l(le,{"current-page":S.value,background:"","page-count":G.value,"page-sizes":[10,50,100,200],"page-size":v.value,total:I.value.length,layout:"total, sizes, prev, pager, next, jumper",onCurrentChange:J,onSizeChange:q},null,8,["current-page","page-count","page-size","total"])])]),l(B,{modelValue:h.value,"onUpdate:modelValue":t[4]||(t[4]=e=>h.value=e),fullscreen:E(A),center:"",title:"状态修改"},{footer:s(()=>[u("span",Le,[l(m,{onClick:t[3]||(t[3]=e=>h.value=!1)},{default:s(()=>[r("取 消")]),_:1}),l(m,{type:"primary",onClick:X},{default:s(()=>[r("确 定")]),_:1})])]),default:s(()=>[u("div",Ue,[l(x,{modelValue:b.value,"onUpdate:modelValue":t[2]||(t[2]=e=>b.value=e),placeholder:"请选择新状态"},{default:s(()=>[(y(!0),U(F,null,N(E(K),e=>(y(),R(p,{key:e.type,label:e.label,value:e.type},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])])]),_:1},8,["modelValue","fullscreen"]),l(B,{modelValue:g.value,"onUpdate:modelValue":t[8]||(t[8]=e=>g.value=e),title:"需求信息",fullscreen:E(A)},{footer:s(()=>[u("span",Ae,[l(m,{onClick:t[7]||(t[7]=e=>g.value=!1)},{default:s(()=>[r("取 消")]),_:1}),l(m,{type:"primary",onClick:ee},{default:s(()=>[r("确 定")]),_:1})])]),default:s(()=>[l(ae,{model:o},{default:s(()=>[l(M,{label:"需求","label-width":Z},{default:s(()=>[l(w,{modelValue:o.title,"onUpdate:modelValue":t[5]||(t[5]=e=>o.title=e),placeholder:"一句简单明了的话概括一下"},null,8,["modelValue"])]),_:1}),l(M,{label:"详细描述","label-width":Z},{default:s(()=>[l(w,{modelValue:o.des,"onUpdate:modelValue":t[6]||(t[6]=e=>o.des=e),placeholder:"用朴素的话语进一步描述你的需求",type:"textarea"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","fullscreen"])])}}}),He=re(Be,[["__scopeId","data-v-fb1cf9f1"]]);export{He as default};
|
|
2
|
+
//# sourceMappingURL=index-Dxy6ycv8.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-D-JYypPJ.js","sources":["../../src/apis/modules/wish.ts","../../src/pages/dashboard/manage/wish/index.vue"],"sourcesContent":["import { WishStatus } from '@/constants'\nimport ajax from '../ajax'\n\nfunction addWish(wish: Partial<WishApiTypes.Wish>): WishApiTypes.addWish {\n return ajax.post('/wish/add', wish)\n}\n\nfunction findAllWish(): WishApiTypes.allWishData {\n return ajax.get('/wish/all')\n}\n\nfunction updateWishStatus(\n id: string,\n status: WishStatus\n): WishApiTypes.updateWish {\n return ajax.put('/wish/update', { id, status })\n}\n\nfunction updateWishDes(\n id: string,\n title: string,\n des: string\n): WishApiTypes.updateWish {\n return ajax.put(`/wish/update/${id}`, { title, des })\n}\nexport default {\n addWish,\n findAllWish,\n updateWishStatus,\n updateWishDes\n}\n","<script lang=\"ts\" setup>\nimport { ElMessage } from 'element-plus'\nimport {\n computed,\n onMounted,\n reactive,\n ref,\n} from 'vue'\nimport { Search } from '@element-plus/icons-vue'\nimport { WishApi } from '@/apis'\nimport { formatDate } from '@/utils/stringUtil'\nimport { WishStatus } from '@/constants'\nimport { useIsMobile } from '@/composables'\n\nconst wishes = reactive<WishApiTypes.WishItem[]>([])\nfunction refreshWishes() {\n WishApi.findAllWish().then((v) => {\n wishes.splice(0, wishes.length, ...v.data)\n })\n}\n\n// 筛选状态\nconst filterLogType = ref(-1)\nconst searchWord = ref('')\nconst logTypeList = reactive([\n {\n label: '待审核',\n type: WishStatus.REVIEW,\n },\n {\n label: '待开始',\n type: WishStatus.WAIT,\n },\n {\n label: '关闭',\n type: WishStatus.CLOSE,\n },\n {\n label: '已上线',\n type: WishStatus.END,\n },\n {\n label: '开发中',\n type: WishStatus.START,\n },\n])\n\nconst filterWishes = computed(() => wishes\n .filter(v => v.status === filterLogType.value || filterLogType.value === -1)\n .filter((v) => {\n const {\n createDate,\n title,\n des,\n contact,\n } = v\n if (searchWord.value.length === 0)\n return true\n return `${formatDate(new Date(createDate))} ${title} ${des} ${contact}`.includes(searchWord.value)\n }))\n\n// 分页\nconst pageSize = ref(10)\nfunction handleSizeChange(v: number) {\n pageSize.value = v\n}\nconst pageCount = computed(() => {\n const t = Math.ceil(filterWishes.value.length / pageSize.value)\n return t\n})\nconst pageCurrent = ref(1)\nconst pageWishes = computed(() => {\n const start = (pageCurrent.value - 1) * pageSize.value\n const end = (pageCurrent.value) * pageSize.value\n return filterWishes.value.slice(start, end)\n})\nfunction handlePageChange(idx: number) {\n pageCurrent.value = idx\n}\n\n// 状态修改\nconst showWishStatusDialog = ref(false)\nconst selectWishId = ref('')\nconst selectStatus = ref(WishStatus.REVIEW)\nconst wishStatusList = logTypeList\nfunction handleChangeStatus(wishId: string, status: WishStatus) {\n selectWishId.value = wishId\n selectStatus.value = status\n showWishStatusDialog.value = true\n}\nfunction handleSaveStatus() {\n const wish = wishes.find(v => v.id === selectWishId.value)\n wish.status = selectStatus.value\n showWishStatusDialog.value = false\n WishApi\n .updateWishStatus(selectWishId.value, selectStatus.value)\n .then(() => {\n ElMessage.success('修改成功')\n })\n}\n\n// 描述信息修改\nconst formLabelWidth = '80px'\nconst desVisible = ref(false)\nconst formData = reactive({\n title: '',\n des: '',\n})\nfunction handleRewriteDes(id: string, title: string, des: string) {\n selectWishId.value = id\n formData.title = title\n formData.des = des\n desVisible.value = true\n}\nfunction handleUpdateWish() {\n const wish = wishes.find(v => v.id === selectWishId.value)\n WishApi\n .updateWishDes(selectWishId.value, formData.title, formData.des)\n .then(() => {\n desVisible.value = false\n wish.title = formData.title\n wish.des = formData.des\n ElMessage.success('修改成功')\n })\n}\nonMounted(() => {\n refreshWishes()\n})\n\nconst isMobile = useIsMobile()\n</script>\n\n<template>\n <div class=\"user\">\n <div class=\"panel\">\n <div class=\"p10 log-filter\">\n <span class=\"item\">\n <span class=\"label\">状态</span>\n <el-select v-model=\"filterLogType\" size=\"default\" placeholder=\"请选择筛选状态\">\n <el-option label=\"全部\" :value=\"-1\" />\n <el-option v-for=\"(item, idx) in logTypeList\" :key=\"idx\" :label=\"item.label\" :value=\"item.type\" />\n </el-select>\n </span>\n <span class=\"item\">\n <el-input v-model=\"searchWord\" size=\"default\" clearable placeholder=\"请输入要检索的内容\" :prefix-icon=\"Search\" />\n </span>\n </div>\n <el-table\n height=\"550\" stripe border :default-sort=\"{ prop: 'date', order: 'descending' }\" :data=\"pageWishes\"\n style=\"width: 100%\"\n >\n <el-table-column sortable prop=\"createDate\" label=\"提交时间\" width=\"190\">\n <template #default=\"scope\">\n {{ scope.row.createDate && formatDate(new Date(scope.row.createDate)) }}\n </template>\n </el-table-column>\n <el-table-column prop=\"title\" label=\"标题\" width=\"120\" />\n <el-table-column prop=\"des\" label=\"详细描述\" />\n <el-table-column prop=\"contact\" label=\"联系方式\" />\n <el-table-column prop=\"status\" label=\"状态\">\n <template #default=\"scope\">\n {{ logTypeList.find(v => v.type === scope.row.status).label }}\n </template>\n </el-table-column>\n <el-table-column fixed=\"right\" label=\"操作\" width=\"100\">\n <template #default=\"scope\">\n <div class=\"text-btn-list\">\n <el-button type=\"primary\" text size=\"small\" @click=\"handleChangeStatus(scope.row.id, scope.row.status)\">\n 修改状态\n </el-button>\n <el-button\n type=\"primary\" text size=\"small\"\n @click=\"handleRewriteDes(scope.row.id, scope.row.title, scope.row.des)\"\n >\n 修改描述\n </el-button>\n </div>\n </template>\n </el-table-column>\n </el-table>\n <div class=\"flex fc p10\">\n <el-pagination\n :current-page=\"pageCurrent\" background :page-count=\"pageCount\" :page-sizes=\"[10, 50, 100, 200]\"\n :page-size=\"pageSize\" :total=\"filterWishes.length\" layout=\"total, sizes, prev, pager, next, jumper\"\n @current-change=\"handlePageChange\" @size-change=\"handleSizeChange\"\n />\n </div>\n </div>\n <!-- 状态修改弹窗 -->\n <el-dialog v-model=\"showWishStatusDialog\" :fullscreen=\"isMobile\" center title=\"状态修改\">\n <div class=\"tc\">\n <el-select v-model=\"selectStatus\" placeholder=\"请选择新状态\">\n <el-option v-for=\"s in wishStatusList\" :key=\"s.type\" :label=\"s.label\" :value=\"s.type\" />\n </el-select>\n </div>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showWishStatusDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"handleSaveStatus\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n\n <!-- 需求描述更新弹窗 -->\n <el-dialog v-model=\"desVisible\" title=\"需求信息\" :fullscreen=\"isMobile\">\n <el-form :model=\"formData\">\n <el-form-item label=\"需求\" :label-width=\"formLabelWidth\">\n <el-input v-model=\"formData.title\" placeholder=\"一句简单明了的话概括一下\" />\n </el-form-item>\n <el-form-item label=\"详细描述\" :label-width=\"formLabelWidth\">\n <el-input v-model=\"formData.des\" placeholder=\"用朴素的话语进一步描述你的需求\" type=\"textarea\" />\n </el-form-item>\n </el-form>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"desVisible = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"handleUpdateWish\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n@media screen and (max-width: 700px) {\n .user {\n margin-top: 40px !important;\n }\n\n .log-filter {\n justify-content: center;\n }\n}\n\n.user {\n margin: 0 auto;\n}\n\n.panel {\n max-width: 1256px;\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);\n border-radius: 4px;\n}\n\n.log-filter {\n display: flex;\n flex-wrap: wrap;\n\n .item {\n margin-right: 10px;\n margin-bottom: 10px;\n\n .label {\n margin-right: 10px;\n font-size: 12px;\n }\n }\n}\n\n.text-btn-list {\n display: flex;\n flex-wrap: wrap;\n\n button {\n margin-left: 0;\n }\n}\n</style>\n"],"names":["addWish","wish","ajax","findAllWish","updateWishStatus","id","status","updateWishDes","title","des","WishApi","formLabelWidth","wishes","reactive","refreshWishes","v","filterLogType","ref","searchWord","logTypeList","WishStatus","filterWishes","computed","createDate","contact","formatDate","pageSize","handleSizeChange","pageCount","pageCurrent","pageWishes","start","end","handlePageChange","idx","showWishStatusDialog","selectWishId","selectStatus","wishStatusList","handleChangeStatus","wishId","handleSaveStatus","ElMessage","desVisible","formData","handleRewriteDes","handleUpdateWish","onMounted","isMobile","useIsMobile"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-Dxy6ycv8.js","sources":["../../src/apis/modules/wish.ts","../../src/pages/dashboard/manage/wish/index.vue"],"sourcesContent":["import { WishStatus } from '@/constants'\nimport ajax from '../ajax'\n\nfunction addWish(wish: Partial<WishApiTypes.Wish>): WishApiTypes.addWish {\n return ajax.post('/wish/add', wish)\n}\n\nfunction findAllWish(): WishApiTypes.allWishData {\n return ajax.get('/wish/all')\n}\n\nfunction updateWishStatus(\n id: string,\n status: WishStatus\n): WishApiTypes.updateWish {\n return ajax.put('/wish/update', { id, status })\n}\n\nfunction updateWishDes(\n id: string,\n title: string,\n des: string\n): WishApiTypes.updateWish {\n return ajax.put(`/wish/update/${id}`, { title, des })\n}\nexport default {\n addWish,\n findAllWish,\n updateWishStatus,\n updateWishDes\n}\n","<script lang=\"ts\" setup>\nimport { ElMessage } from 'element-plus'\nimport {\n computed,\n onMounted,\n reactive,\n ref,\n} from 'vue'\nimport { Search } from '@element-plus/icons-vue'\nimport { WishApi } from '@/apis'\nimport { formatDate } from '@/utils/stringUtil'\nimport { WishStatus } from '@/constants'\nimport { useIsMobile } from '@/composables'\n\nconst wishes = reactive<WishApiTypes.WishItem[]>([])\nfunction refreshWishes() {\n WishApi.findAllWish().then((v) => {\n wishes.splice(0, wishes.length, ...v.data)\n })\n}\n\n// 筛选状态\nconst filterLogType = ref(-1)\nconst searchWord = ref('')\nconst logTypeList = reactive([\n {\n label: '待审核',\n type: WishStatus.REVIEW,\n },\n {\n label: '待开始',\n type: WishStatus.WAIT,\n },\n {\n label: '关闭',\n type: WishStatus.CLOSE,\n },\n {\n label: '已上线',\n type: WishStatus.END,\n },\n {\n label: '开发中',\n type: WishStatus.START,\n },\n])\n\nconst filterWishes = computed(() => wishes\n .filter(v => v.status === filterLogType.value || filterLogType.value === -1)\n .filter((v) => {\n const {\n createDate,\n title,\n des,\n contact,\n } = v\n if (searchWord.value.length === 0)\n return true\n return `${formatDate(new Date(createDate))} ${title} ${des} ${contact}`.includes(searchWord.value)\n }))\n\n// 分页\nconst pageSize = ref(10)\nfunction handleSizeChange(v: number) {\n pageSize.value = v\n}\nconst pageCount = computed(() => {\n const t = Math.ceil(filterWishes.value.length / pageSize.value)\n return t\n})\nconst pageCurrent = ref(1)\nconst pageWishes = computed(() => {\n const start = (pageCurrent.value - 1) * pageSize.value\n const end = (pageCurrent.value) * pageSize.value\n return filterWishes.value.slice(start, end)\n})\nfunction handlePageChange(idx: number) {\n pageCurrent.value = idx\n}\n\n// 状态修改\nconst showWishStatusDialog = ref(false)\nconst selectWishId = ref('')\nconst selectStatus = ref(WishStatus.REVIEW)\nconst wishStatusList = logTypeList\nfunction handleChangeStatus(wishId: string, status: WishStatus) {\n selectWishId.value = wishId\n selectStatus.value = status\n showWishStatusDialog.value = true\n}\nfunction handleSaveStatus() {\n const wish = wishes.find(v => v.id === selectWishId.value)\n wish.status = selectStatus.value\n showWishStatusDialog.value = false\n WishApi\n .updateWishStatus(selectWishId.value, selectStatus.value)\n .then(() => {\n ElMessage.success('修改成功')\n })\n}\n\n// 描述信息修改\nconst formLabelWidth = '80px'\nconst desVisible = ref(false)\nconst formData = reactive({\n title: '',\n des: '',\n})\nfunction handleRewriteDes(id: string, title: string, des: string) {\n selectWishId.value = id\n formData.title = title\n formData.des = des\n desVisible.value = true\n}\nfunction handleUpdateWish() {\n const wish = wishes.find(v => v.id === selectWishId.value)\n WishApi\n .updateWishDes(selectWishId.value, formData.title, formData.des)\n .then(() => {\n desVisible.value = false\n wish.title = formData.title\n wish.des = formData.des\n ElMessage.success('修改成功')\n })\n}\nonMounted(() => {\n refreshWishes()\n})\n\nconst isMobile = useIsMobile()\n</script>\n\n<template>\n <div class=\"user\">\n <div class=\"panel\">\n <div class=\"p10 log-filter\">\n <span class=\"item\">\n <span class=\"label\">状态</span>\n <el-select v-model=\"filterLogType\" size=\"default\" placeholder=\"请选择筛选状态\">\n <el-option label=\"全部\" :value=\"-1\" />\n <el-option v-for=\"(item, idx) in logTypeList\" :key=\"idx\" :label=\"item.label\" :value=\"item.type\" />\n </el-select>\n </span>\n <span class=\"item\">\n <el-input v-model=\"searchWord\" size=\"default\" clearable placeholder=\"请输入要检索的内容\" :prefix-icon=\"Search\" />\n </span>\n </div>\n <el-table\n height=\"550\" stripe border :default-sort=\"{ prop: 'date', order: 'descending' }\" :data=\"pageWishes\"\n style=\"width: 100%\"\n >\n <el-table-column sortable prop=\"createDate\" label=\"提交时间\" width=\"190\">\n <template #default=\"scope\">\n {{ scope.row.createDate && formatDate(new Date(scope.row.createDate)) }}\n </template>\n </el-table-column>\n <el-table-column prop=\"title\" label=\"标题\" width=\"120\" />\n <el-table-column prop=\"des\" label=\"详细描述\" />\n <el-table-column prop=\"contact\" label=\"联系方式\" />\n <el-table-column prop=\"status\" label=\"状态\">\n <template #default=\"scope\">\n {{ logTypeList.find(v => v.type === scope.row.status).label }}\n </template>\n </el-table-column>\n <el-table-column fixed=\"right\" label=\"操作\" width=\"100\">\n <template #default=\"scope\">\n <div class=\"text-btn-list\">\n <el-button type=\"primary\" text size=\"small\" @click=\"handleChangeStatus(scope.row.id, scope.row.status)\">\n 修改状态\n </el-button>\n <el-button\n type=\"primary\" text size=\"small\"\n @click=\"handleRewriteDes(scope.row.id, scope.row.title, scope.row.des)\"\n >\n 修改描述\n </el-button>\n </div>\n </template>\n </el-table-column>\n </el-table>\n <div class=\"flex fc p10\">\n <el-pagination\n :current-page=\"pageCurrent\" background :page-count=\"pageCount\" :page-sizes=\"[10, 50, 100, 200]\"\n :page-size=\"pageSize\" :total=\"filterWishes.length\" layout=\"total, sizes, prev, pager, next, jumper\"\n @current-change=\"handlePageChange\" @size-change=\"handleSizeChange\"\n />\n </div>\n </div>\n <!-- 状态修改弹窗 -->\n <el-dialog v-model=\"showWishStatusDialog\" :fullscreen=\"isMobile\" center title=\"状态修改\">\n <div class=\"tc\">\n <el-select v-model=\"selectStatus\" placeholder=\"请选择新状态\">\n <el-option v-for=\"s in wishStatusList\" :key=\"s.type\" :label=\"s.label\" :value=\"s.type\" />\n </el-select>\n </div>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"showWishStatusDialog = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"handleSaveStatus\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n\n <!-- 需求描述更新弹窗 -->\n <el-dialog v-model=\"desVisible\" title=\"需求信息\" :fullscreen=\"isMobile\">\n <el-form :model=\"formData\">\n <el-form-item label=\"需求\" :label-width=\"formLabelWidth\">\n <el-input v-model=\"formData.title\" placeholder=\"一句简单明了的话概括一下\" />\n </el-form-item>\n <el-form-item label=\"详细描述\" :label-width=\"formLabelWidth\">\n <el-input v-model=\"formData.des\" placeholder=\"用朴素的话语进一步描述你的需求\" type=\"textarea\" />\n </el-form-item>\n </el-form>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"desVisible = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"handleUpdateWish\">确 定</el-button>\n </span>\n </template>\n </el-dialog>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n@media screen and (max-width: 700px) {\n .user {\n margin-top: 40px !important;\n }\n\n .log-filter {\n justify-content: center;\n }\n}\n\n.user {\n margin: 0 auto;\n}\n\n.panel {\n max-width: 1256px;\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);\n border-radius: 4px;\n}\n\n.log-filter {\n display: flex;\n flex-wrap: wrap;\n\n .item {\n margin-right: 10px;\n margin-bottom: 10px;\n\n .label {\n margin-right: 10px;\n font-size: 12px;\n }\n }\n}\n\n.text-btn-list {\n display: flex;\n flex-wrap: wrap;\n\n button {\n margin-left: 0;\n }\n}\n</style>\n"],"names":["addWish","wish","ajax","findAllWish","updateWishStatus","id","status","updateWishDes","title","des","WishApi","formLabelWidth","wishes","reactive","refreshWishes","v","filterLogType","ref","searchWord","logTypeList","WishStatus","filterWishes","computed","createDate","contact","formatDate","pageSize","handleSizeChange","pageCount","pageCurrent","pageWishes","start","end","handlePageChange","idx","showWishStatusDialog","selectWishId","selectStatus","wishStatusList","handleChangeStatus","wishId","handleSaveStatus","ElMessage","desVisible","formData","handleRewriteDes","handleUpdateWish","onMounted","isMobile","useIsMobile"],"mappings":"omBAGA,SAASA,GAAQC,EAAwD,CAChE,OAAAC,EAAK,KAAK,YAAaD,CAAI,CACpC,CAEA,SAASE,IAAwC,CACxC,OAAAD,EAAK,IAAI,WAAW,CAC7B,CAEA,SAASE,GACPC,EACAC,EACyB,CACzB,OAAOJ,EAAK,IAAI,eAAgB,CAAE,GAAAG,EAAI,OAAAC,EAAQ,CAChD,CAEA,SAASC,GACPF,EACAG,EACAC,EACyB,CAClB,OAAAP,EAAK,IAAI,gBAAgB,OAAAG,GAAM,CAAE,MAAAG,EAAO,IAAAC,EAAK,CACtD,CACA,MAAeC,EAAA,CACb,QAAAV,GACA,YAAAG,GACA,iBAAAC,GACA,cAAAG,EACF,yTCwEMI,EAAiB,sCAxFjB,MAAAC,EAASC,EAAkC,CAAA,CAAE,EACnD,SAASC,GAAgB,CACvBJ,EAAQ,YAAY,EAAE,KAAMK,GAAM,CAChCH,EAAO,OAAO,EAAGA,EAAO,OAAQ,GAAGG,EAAE,IAAI,CAAA,CAC1C,CACH,CAGM,MAAAC,EAAgBC,EAAI,EAAE,EACtBC,EAAaD,EAAI,EAAE,EACnBE,EAAcN,EAAS,CAC3B,CACE,MAAO,MACP,KAAMO,EAAW,MACnB,EACA,CACE,MAAO,MACP,KAAMA,EAAW,IACnB,EACA,CACE,MAAO,KACP,KAAMA,EAAW,KACnB,EACA,CACE,MAAO,MACP,KAAMA,EAAW,GACnB,EACA,CACE,MAAO,MACP,KAAMA,EAAW,KACnB,CAAA,CACD,EAEKC,EAAeC,EAAS,IAAMV,EACjC,UAAYG,EAAE,SAAWC,EAAc,OAASA,EAAc,QAAU,EAAE,EAC1E,OAAQD,GAAM,CACP,KAAA,CACJ,WAAAQ,EACA,MAAAf,EACA,IAAAC,EACA,QAAAe,CACE,EAAAT,EACA,OAAAG,EAAW,MAAM,SAAW,EACvB,GACF,GAAG,OAAAO,EAAW,IAAI,KAAKF,CAAU,CAAC,EAAC,KAAI,OAAAf,EAAK,KAAI,OAAAC,EAAG,KAAI,OAAAe,GAAU,SAASN,EAAW,KAAK,CAClG,CAAA,CAAC,EAGEQ,EAAWT,EAAI,EAAE,EACvB,SAASU,EAAiBZ,EAAW,CACnCW,EAAS,MAAQX,CACnB,CACM,MAAAa,EAAYN,EAAS,IACf,KAAK,KAAKD,EAAa,MAAM,OAASK,EAAS,KAAK,CAE/D,EACKG,EAAcZ,EAAI,CAAC,EACnBa,EAAaR,EAAS,IAAM,CAChC,MAAMS,GAASF,EAAY,MAAQ,GAAKH,EAAS,MAC3CM,EAAOH,EAAY,MAASH,EAAS,MAC3C,OAAOL,EAAa,MAAM,MAAMU,EAAOC,CAAG,CAAA,CAC3C,EACD,SAASC,EAAiBC,EAAa,CACrCL,EAAY,MAAQK,CACtB,CAGM,MAAAC,EAAuBlB,EAAI,EAAK,EAChCmB,EAAenB,EAAI,EAAE,EACrBoB,EAAepB,EAAIG,EAAW,MAAM,EACpCkB,EAAiBnB,EACd,SAAAoB,EAAmBC,EAAgBlC,EAAoB,CAC9D8B,EAAa,MAAQI,EACrBH,EAAa,MAAQ/B,EACrB6B,EAAqB,MAAQ,EAC/B,CACA,SAASM,GAAmB,CAC1B,MAAMxC,EAAOW,EAAO,QAAUG,EAAE,KAAOqB,EAAa,KAAK,EACzDnC,EAAK,OAASoC,EAAa,MAC3BF,EAAqB,MAAQ,GAC7BzB,EACG,iBAAiB0B,EAAa,MAAOC,EAAa,KAAK,EACvD,KAAK,IAAM,CACVK,EAAU,QAAQ,MAAM,CAAA,CACzB,CACL,CAIM,MAAAC,EAAa1B,EAAI,EAAK,EACtB2B,EAAW/B,EAAS,CACxB,MAAO,GACP,IAAK,EAAA,CACN,EACQ,SAAAgC,EAAiBxC,EAAYG,EAAeC,EAAa,CAChE2B,EAAa,MAAQ/B,EACrBuC,EAAS,MAAQpC,EACjBoC,EAAS,IAAMnC,EACfkC,EAAW,MAAQ,EACrB,CACA,SAASG,IAAmB,CAC1B,MAAM7C,EAAOW,EAAO,QAAUG,EAAE,KAAOqB,EAAa,KAAK,EAEtD1B,EAAA,cAAc0B,EAAa,MAAOQ,EAAS,MAAOA,EAAS,GAAG,EAC9D,KAAK,IAAM,CACVD,EAAW,MAAQ,GACnB1C,EAAK,MAAQ2C,EAAS,MACtB3C,EAAK,IAAM2C,EAAS,IACpBF,EAAU,QAAQ,MAAM,CAAA,CACzB,CACL,CACAK,GAAU,IAAM,CACAjC,GAAA,CACf,EAED,MAAMkC,EAAWC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{g as f,d as r,a as o,c as n,b as t,i as $,F as m,C as h,j as u,w as g,D as w,G as T,H as k,t as x,e as I,I as z,p as N,f as C,_ as M}from"./index-
|
|
2
|
-
//# sourceMappingURL=index-
|
|
1
|
+
import{g as f,d as r,a as o,c as n,b as t,i as $,F as m,C as h,j as u,w as g,D as w,G as T,H as k,t as x,e as I,I as z,p as N,f as C,_ as M}from"./index-D80lTVeV.js";const E=r({name:"Promotion"}),B={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},O=t("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),Q=[O];function y(e,a,c,d,p,i){return o(),n("svg",B,Q)}var Y=f(E,[["render",y]]);const b=r({name:"UserFilled"}),j={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},D=t("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),F=[D];function S(e,a,c,d,p,i){return o(),n("svg",j,F)}var V=f(b,[["render",S]]);const _=e=>(N("data-v-a235cdd8"),e=e(),C(),e),L={class:"callme"},q={class:"panel"},A=_(()=>t("h1",null,"联系作者",-1)),H={class:"baseinfo"},G=["href"],P=_(()=>t("hr",null,null,-1)),U={class:"qq-wechat"},J={class:"title"},K={class:"content"},R=["src"],W=_(()=>t("div",{class:"description"},[t("p",null,"如遇无法解决的账号/使用问题,欢迎小窗联系我")],-1)),X={class:"links"},Z=r({__name:"index",setup(e){const a=[{icon:V,text:"粥里有勺糖",href:"https://sugarat.top"},{icon:Y,text:"engineerzjl@foxmail.com",href:"mailto:engineerzjl@foxmail.com"}],c=[{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(d,p)=>{const i=z,v=$("router-link");return o(),n("div",L,[t("main",null,[t("div",q,[A,t("div",H,[(o(),n(m,null,h(a,(s,l)=>t("span",{key:l,class:"info-item"},[u(i,null,{default:g(()=>[(o(),w(T(s.icon)))]),_:2},1024),t("i",{class:k(s.icon)},null,2),t("a",{target:"_blank",href:s.href},x(s.text),9,G)])),64))]),P,t("div",U,[t("ul",null,[(o(),n(m,null,h(c,(s,l)=>t("li",{key:l},[t("div",J,x(s.text),1),t("div",K,[t("img",{src:s.img},null,8,R)])])),64))])]),W,t("div",X,[u(v,{to:"/"},{default:g(()=>[I("回到首页")]),_:1})])])])])}}}),st=M(Z,[["__scopeId","data-v-a235cdd8"]]);export{st as default};
|
|
2
|
+
//# sourceMappingURL=index-MTuc20rr.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-MTuc20rr.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","_hoisted_1","_hoisted_2","createElementVNode","_hoisted_3","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","promotion","_export_sfc","userFilled","baseInfo","UserFilled","Promotion","qrCOdes"],"mappings":"sKAGA,MAAMA,EAAYC,EAAgB,CAChC,KAAM,WACR,CAAC,EACKC,EAAa,CACjB,QAAS,gBACT,MAAO,4BACT,EACMC,EAA6BC,EAAmB,OAAQ,CAC5D,KAAM,eACN,EAAG,yGACL,EAAG,KAAM,EAAE,EACLC,EAAa,CACjBF,CACF,EACA,SAASG,EAAYC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,EAAU,CAClE,OAAOC,EAAW,EAAEC,EAAmB,MAAOZ,EAAYG,CAAU,CACtE,CACA,IAAIU,EAA4BC,EAAYhB,EAAW,CAAC,CAAC,SAAUM,CAAW,CAAC,CAAC,ECjBhF,MAAMN,EAAYC,EAAgB,CAChC,KAAM,YACR,CAAC,EACKC,EAAa,CACjB,QAAS,gBACT,MAAO,4BACT,EACMC,EAA6BC,EAAmB,OAAQ,CAC5D,KAAM,eACN,EAAG,2JACL,EAAG,KAAM,EAAE,EACLC,EAAa,CACjBF,CACF,EACA,SAASG,EAAYC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,EAAU,CAClE,OAAOC,EAAW,EAAEC,EAAmB,MAAOZ,EAAYG,CAAU,CACtE,CACA,IAAIY,EAA6BD,EAAYhB,EAAW,CAAC,CAAC,SAAUM,CAAW,CAAC,CAAC,0XCoBjF,MAAMY,EAAW,CACf,CACE,KAAMC,EACN,KAAM,QACN,KAAM,qBACR,EACA,CACE,KAAMC,EACN,KAAM,0BACN,KAAM,gCACR,CAAA,EAGIC,EAAU,CACd,CACE,KAAM,KACN,IAAK,oEACP,EACA,CACE,KAAM,MACN,IAAK,oEACP,EACA,CACE,KAAM,KACN,IAAK,oEACP,EACA,CACE,KAAM,MACN,IAAK,oEACP,CAAA","x_google_ignoreList":[0,1]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a4 as b,g as D,d as S,a as s,c as a,b as e,Z as Y,r as z,O as F,o as Q,j as r,w as n,k as E,H as j,a8 as N,a9 as T,e as _,F as k,C as M,t as g,D as m,S as q,E as O,I as U,x as H,v as P,p as R,f as Z,_ as G}from"./index-
|
|
2
|
-
//# sourceMappingURL=index-
|
|
1
|
+
import{a4 as b,g as D,d as S,a as s,c as a,b as e,Z as Y,r as z,O as F,o as Q,j as r,w as n,k as E,H as j,a8 as N,a9 as T,e as _,F as k,C as M,t as g,D as m,S as q,E as O,I as U,x as H,v as P,p as R,f as Z,_ as G}from"./index-D80lTVeV.js";import{E as J,a as K}from"./el-form-item-BhAyaXPT.js";import{T as w}from"./tip-DQo-E_Pu.js";import{r as W}from"./refresh-BTQLK-UW.js";import"./isEqual-pN6Ih18F.js";import"./index-BUF8Xxid.js";function X(){return b.get("/config/service/overview")}function ee(){return b.get("/config/service/config")}function te(i){return b.put("/config/service/config",i)}const $={getServiceOverview:X,getServiceConfig:ee,updateCfg:te},se=S({name:"CloseBold"}),ae={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},oe=e("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),ne=[oe];function le(i,p,c,h,f,v){return s(),a("svg",ae,ne)}var re=D(se,[["render",le]]);const ie=S({name:"Select"}),ce={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},de=e("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),ue=[de];function _e(i,p,c,h,f,v){return s(),a("svg",ce,ue)}var pe=D(ie,[["render",_e]]);const B=i=>(R("data-v-9638922a"),i=i(),Z(),i),fe={class:"user"},ge={class:"panel"},me=B(()=>e("span",null,"服务概况",-1)),he={class:"service-list"},ve=["src","alt"],ye={key:2},ke={class:"error-panel"},Me=B(()=>e("h1",null,"错误信息",-1)),we={class:"error"},xe=B(()=>e("h1",null,"服务相关配置",-1)),Ce={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"},Ee={class:"config-container"},$e={class:"flex",style:{flex:"1"}},be=S({__name:"index",setup(i){const p=Y([{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:"短信服务"}]),c=z(!1),h=F(()=>p.filter(o=>o.errMsg));function f(){c.value||(c.value=!0,$.getServiceOverview().then(o=>{const{data:y}=o;p.forEach(d=>{const{status:u,errMsg:x}=y[d.key];d.status=u,d.errMsg=x}),O.success("服务状态刷新完成"),c.value=!1}))}const v=z([]);function L(){$.getServiceConfig().then(o=>{o.data.forEach(y=>{y.data.forEach(d=>{d.disabled=!0})}),v.value=o.data})}function V(o){$.updateCfg(o).then(()=>{o.disabled=!0,O.success("更新成功"),f()})}return Q(()=>{f(),L()}),(o,y)=>{const d=U,u=H,x=P,A=J,I=K;return s(),a("div",fe,[e("div",ge,[e("div",null,[e("h1",null,[me,r(d,{class:j({loading:c.value}),style:{cursor:"pointer","margin-left":"10px"},onClick:f},{default:n(()=>[r(E(W))]),_:1},8,["class"]),N(e("span",null,"数据加载中...",512),[[T,c.value]])]),r(w,null,{default:n(()=>[_("查看各个服务的运行情况")]),_:1}),e("div",he,[(s(!0),a(k,null,M(p,t=>(s(),a("div",{key:t.key,class:"service-item"},[e("img",{src:t.logo,alt:t.name},null,8,ve),e("p",null,[r(w,null,{default:n(()=>[_(g(t.des),1)]),_:2},1024)]),t.status?(s(),m(u,{key:0,type:"success",size:"small",icon:E(pe),circle:""},null,8,["icon"])):(s(),m(u,{key:1,type:"danger",size:"small",icon:E(re),circle:""},null,8,["icon"])),!t.status&&t.error?(s(),a("p",ye,[r(w,null,{default:n(()=>[_(g(t.error),1)]),_:2},1024)])):q("",!0)]))),128))])]),N(e("div",ke,[Me,(s(!0),a(k,null,M(h.value,t=>(s(),a("p",{key:t.key},[e("strong",null,g(t.name)+":",1),e("span",we,g(t.errMsg),1)]))),128))],512),[[T,h.value.length]]),e("div",null,[xe,r(w,null,{default:n(()=>[_(" 在此面板,配置服务器运行相关参数 "),e("a",Ce,[r(u,{type:"primary",link:""},{default:n(()=>[_("配置手册?")]),_:1})])]),_:1})]),e("div",Ee,[(s(!0),a(k,null,M(v.value,t=>(s(),a("div",{key:t.title,class:"config-panel"},[e("h2",null,g(t.title),1),r(I,{"label-position":"right","label-width":"100px",style:{"max-width":"400px",margin:"0 auto"}},{default:n(()=>[(s(!0),a(k,null,M(t.data,l=>(s(),m(A,{key:l.key,"label-width":"auto",label:l.label||l.key},{default:n(()=>[e("div",$e,[r(x,{modelValue:l.value,"onUpdate:modelValue":C=>l.value=C,disabled:l.disabled},null,8,["modelValue","onUpdate:modelValue","disabled"]),l.disabled?(s(),m(u,{key:0,type:"primary",text:"",onClick:C=>l.disabled=!1},{default:n(()=>[_(" 更新 ")]),_:2},1032,["onClick"])):(s(),m(u,{key:1,type:"success",text:"",onClick:C=>V(l)},{default:n(()=>[_(" 完成 ")]),_:2},1032,["onClick"]))])]),_:2},1032,["label"]))),128))]),_:2},1024)]))),128))])])])}}}),De=G(be,[["__scopeId","data-v-9638922a"]]);export{De as default};
|
|
2
|
+
//# sourceMappingURL=index-bD-fr3vy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-q94vR-7W.js","sources":["../../src/apis/modules/config.ts","../../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/close-bold.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/select.mjs","../../src/pages/dashboard/config/index.vue"],"sourcesContent":["import ajax from '../ajax'\n\nfunction getServiceOverview(): ConfigServiceAPITypes.getServiceOverview {\n return ajax.get('/config/service/overview')\n}\n\nfunction getServiceConfig(): ConfigServiceAPITypes.getServiceConfig {\n return ajax.get('/config/service/config')\n}\n\nfunction updateCfg(data: ConfigServiceAPITypes.ServiceConfigItem) {\n return ajax.put('/config/service/config', data)\n}\n\nexport default {\n getServiceOverview,\n getServiceConfig,\n updateCfg\n}\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: \"CloseBold\"\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: \"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\"\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 closeBold = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { closeBold 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: \"Select\"\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: \"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\"\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 select = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { select as default };\n","<script lang=\"ts\" setup>\nimport { ElMessage } from 'element-plus'\nimport { computed, onMounted, reactive, ref } from 'vue'\nimport { CloseBold, Refresh, Select } from '@element-plus/icons-vue'\nimport Tip from '../tasks/components/infoPanel/tip.vue'\nimport { ConfigServiceAPI } from '@/apis'\n\nconst serviceList = reactive([\n {\n name: 'MySQL',\n key: 'mysql',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTAyMjIwNA==657359022204',\n status: false,\n des: '存储用户数据',\n errMsg: '',\n },\n {\n name: '七牛云',\n key: 'qiniu',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1ODcyODM0Mg==657358728342',\n status: false,\n des: '文件存储',\n },\n {\n name: 'MongoDB',\n key: 'mongodb',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTA4OTc3Nw==657359089777',\n status: false,\n des: '用户数据与日志',\n },\n {\n name: 'Redis',\n key: 'redis',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1ODgyNzM1MA==657358827350',\n status: false,\n des: '持久化缓存数据',\n error: '确保安装redis,且监听端口6379',\n },\n {\n name: '腾讯云',\n key: 'tx',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTE1MzQzOQ==657359153439',\n status: false,\n des: '短信服务',\n },\n])\n\nconst loading = ref(false)\nconst showErrorList = computed(() => serviceList.filter(item => item.errMsg))\nfunction refreshStatus() {\n if (loading.value)\n return\n loading.value = true\n ConfigServiceAPI.getServiceOverview().then((v) => {\n const { data } = v\n serviceList.forEach((item) => {\n const { status, errMsg } = data[item.key]\n item.status = status\n item.errMsg = errMsg\n })\n ElMessage.success('服务状态刷新完成')\n loading.value = false\n })\n}\n\nconst serverConfig = ref([])\nfunction getServiceConfig() {\n ConfigServiceAPI.getServiceConfig().then((v) => {\n // console.log(v.data)\n v.data.forEach((v) => {\n v.data.forEach((v) => {\n v.disabled = true\n })\n })\n serverConfig.value = v.data\n })\n}\nfunction updateCfg(item: ConfigServiceAPITypes.ServiceConfigItem) {\n ConfigServiceAPI.updateCfg(item).then(() => {\n item.disabled = true\n ElMessage.success('更新成功')\n refreshStatus()\n })\n}\nonMounted(() => {\n refreshStatus()\n getServiceConfig()\n})\n</script>\n\n<template>\n <div class=\"user\">\n <div class=\"panel\">\n <!-- 服务概况 -->\n <div>\n <h1>\n <span>服务概况</span>\n <el-icon\n :class=\"{\n loading,\n }\"\n style=\"cursor: pointer; margin-left: 10px\"\n @click=\"refreshStatus\"\n >\n <Refresh />\n </el-icon>\n <span v-show=\"loading\">数据加载中...</span>\n </h1>\n <Tip>查看各个服务的运行情况</Tip>\n <div class=\"service-list\">\n <div\n v-for=\"service in serviceList\"\n :key=\"service.key\"\n class=\"service-item\"\n >\n <img :src=\"service.logo\" :alt=\"service.name\">\n <!-- <p>{{ service.name }}</p> -->\n <p>\n <Tip>{{ service.des }}</Tip>\n </p>\n <el-button\n v-if=\"service.status\"\n type=\"success\"\n size=\"small\"\n :icon=\"Select\"\n circle\n />\n <el-button\n v-else\n type=\"danger\"\n size=\"small\"\n :icon=\"CloseBold\"\n circle\n />\n <p v-if=\"!service.status && service.error\">\n <Tip>{{ service.error }}</Tip>\n </p>\n </div>\n </div>\n </div>\n <div v-show=\"showErrorList.length\" class=\"error-panel\">\n <h1>错误信息</h1>\n <p v-for=\"err in showErrorList\" :key=\"err.key\">\n <strong>{{ err.name }}:</strong>\n <span class=\"error\">{{ err.errMsg }}</span>\n </p>\n </div>\n <div>\n <h1>服务相关配置</h1>\n <Tip>\n 在此面板,配置服务器运行相关参数\n <a\n 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\"\n >\n <el-button type=\"primary\" link>配置手册?</el-button></a>\n </Tip>\n </div>\n <div class=\"config-container\">\n <div\n v-for=\"serverItem in serverConfig\"\n :key=\"serverItem.title\"\n class=\"config-panel\"\n >\n <h2>\n {{ serverItem.title }}\n </h2>\n <el-form\n label-position=\"right\"\n label-width=\"100px\"\n style=\"max-width: 400px; margin: 0 auto\"\n >\n <el-form-item\n v-for=\"cfgItem in serverItem.data\"\n :key=\"cfgItem.key\"\n label-width=\"auto\"\n :label=\"cfgItem.label || cfgItem.key\"\n >\n <div class=\"flex\" style=\"flex: 1\">\n <el-input\n v-model=\"cfgItem.value\"\n :disabled=\"cfgItem.disabled\"\n />\n <el-button\n v-if=\"cfgItem.disabled\"\n type=\"primary\"\n text\n @click=\"cfgItem.disabled = false\"\n >\n 更新\n </el-button>\n <el-button\n v-else\n type=\"success\"\n text\n @click=\"updateCfg(cfgItem)\"\n >\n 完成\n </el-button>\n </div>\n </el-form-item>\n </el-form>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n@media screen and (max-width: 700px) {\n .user {\n margin-top: 40px !important;\n }\n}\n\n.user {\n margin: 0 auto;\n}\n\n.panel {\n max-width: 1256px;\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);\n border-radius: 4px;\n}\n\nh1 {\n margin: 0;\n padding: 10px 0;\n font-size: 20px;\n font-weight: bold;\n text-align: center;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.service-list {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n}\n\n.service-item {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n margin: 10px;\n min-width: 120px;\n\n img {\n width: 80px;\n }\n\n p {\n text-align: center;\n padding-top: 10px;\n font-size: 14px;\n }\n}\n\n@keyframes rotate {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.loading {\n margin-left: 10px;\n animation: rotate 1s linear infinite;\n}\n\n.error-panel {\n padding: 0 20px;\n\n p {\n .error {\n color: red;\n }\n\n margin-bottom: 10px;\n }\n}\n\n.config-container {\n display: flex;\n justify-content: space-around;\n flex-wrap: wrap;\n}\n\n.config-panel {\n h2 {\n text-align: center;\n font-size: 16px;\n margin-bottom: 10px;\n }\n}\n</style>\n"],"names":["getServiceOverview","ajax","getServiceConfig","updateCfg","data","ConfigServiceAPI","_sfc_main","defineComponent","_hoisted_1","_hoisted_2","createElementVNode","_hoisted_3","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","closeBold","_export_sfc","select","serviceList","reactive","loading","ref","showErrorList","computed","item","refreshStatus","v","status","errMsg","ElMessage","serverConfig","onMounted"],"mappings":"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","x_google_ignoreList":[1,2]}
|
|
1
|
+
{"version":3,"file":"index-bD-fr3vy.js","sources":["../../src/apis/modules/config.ts","../../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/close-bold.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/select.mjs","../../src/pages/dashboard/config/index.vue"],"sourcesContent":["import ajax from '../ajax'\n\nfunction getServiceOverview(): ConfigServiceAPITypes.getServiceOverview {\n return ajax.get('/config/service/overview')\n}\n\nfunction getServiceConfig(): ConfigServiceAPITypes.getServiceConfig {\n return ajax.get('/config/service/config')\n}\n\nfunction updateCfg(data: ConfigServiceAPITypes.ServiceConfigItem) {\n return ajax.put('/config/service/config', data)\n}\n\nexport default {\n getServiceOverview,\n getServiceConfig,\n updateCfg\n}\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: \"CloseBold\"\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: \"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\"\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 closeBold = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { closeBold 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: \"Select\"\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: \"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\"\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 select = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\n\nexport { select as default };\n","<script lang=\"ts\" setup>\nimport { ElMessage } from 'element-plus'\nimport { computed, onMounted, reactive, ref } from 'vue'\nimport { CloseBold, Refresh, Select } from '@element-plus/icons-vue'\nimport Tip from '../tasks/components/infoPanel/tip.vue'\nimport { ConfigServiceAPI } from '@/apis'\n\nconst serviceList = reactive([\n {\n name: 'MySQL',\n key: 'mysql',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTAyMjIwNA==657359022204',\n status: false,\n des: '存储用户数据',\n errMsg: '',\n },\n {\n name: '七牛云',\n key: 'qiniu',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1ODcyODM0Mg==657358728342',\n status: false,\n des: '文件存储',\n },\n {\n name: 'MongoDB',\n key: 'mongodb',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTA4OTc3Nw==657359089777',\n status: false,\n des: '用户数据与日志',\n },\n {\n name: 'Redis',\n key: 'redis',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1ODgyNzM1MA==657358827350',\n status: false,\n des: '持久化缓存数据',\n error: '确保安装redis,且监听端口6379',\n },\n {\n name: '腾讯云',\n key: 'tx',\n logo: 'https://img.cdn.sugarat.top/mdImg/MTY1NzM1OTE1MzQzOQ==657359153439',\n status: false,\n des: '短信服务',\n },\n])\n\nconst loading = ref(false)\nconst showErrorList = computed(() => serviceList.filter(item => item.errMsg))\nfunction refreshStatus() {\n if (loading.value)\n return\n loading.value = true\n ConfigServiceAPI.getServiceOverview().then((v) => {\n const { data } = v\n serviceList.forEach((item) => {\n const { status, errMsg } = data[item.key]\n item.status = status\n item.errMsg = errMsg\n })\n ElMessage.success('服务状态刷新完成')\n loading.value = false\n })\n}\n\nconst serverConfig = ref([])\nfunction getServiceConfig() {\n ConfigServiceAPI.getServiceConfig().then((v) => {\n // console.log(v.data)\n v.data.forEach((v) => {\n v.data.forEach((v) => {\n v.disabled = true\n })\n })\n serverConfig.value = v.data\n })\n}\nfunction updateCfg(item: ConfigServiceAPITypes.ServiceConfigItem) {\n ConfigServiceAPI.updateCfg(item).then(() => {\n item.disabled = true\n ElMessage.success('更新成功')\n refreshStatus()\n })\n}\nonMounted(() => {\n refreshStatus()\n getServiceConfig()\n})\n</script>\n\n<template>\n <div class=\"user\">\n <div class=\"panel\">\n <!-- 服务概况 -->\n <div>\n <h1>\n <span>服务概况</span>\n <el-icon\n :class=\"{\n loading,\n }\"\n style=\"cursor: pointer; margin-left: 10px\"\n @click=\"refreshStatus\"\n >\n <Refresh />\n </el-icon>\n <span v-show=\"loading\">数据加载中...</span>\n </h1>\n <Tip>查看各个服务的运行情况</Tip>\n <div class=\"service-list\">\n <div\n v-for=\"service in serviceList\"\n :key=\"service.key\"\n class=\"service-item\"\n >\n <img :src=\"service.logo\" :alt=\"service.name\">\n <!-- <p>{{ service.name }}</p> -->\n <p>\n <Tip>{{ service.des }}</Tip>\n </p>\n <el-button\n v-if=\"service.status\"\n type=\"success\"\n size=\"small\"\n :icon=\"Select\"\n circle\n />\n <el-button\n v-else\n type=\"danger\"\n size=\"small\"\n :icon=\"CloseBold\"\n circle\n />\n <p v-if=\"!service.status && service.error\">\n <Tip>{{ service.error }}</Tip>\n </p>\n </div>\n </div>\n </div>\n <div v-show=\"showErrorList.length\" class=\"error-panel\">\n <h1>错误信息</h1>\n <p v-for=\"err in showErrorList\" :key=\"err.key\">\n <strong>{{ err.name }}:</strong>\n <span class=\"error\">{{ err.errMsg }}</span>\n </p>\n </div>\n <div>\n <h1>服务相关配置</h1>\n <Tip>\n 在此面板,配置服务器运行相关参数\n <a\n 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\"\n >\n <el-button type=\"primary\" link>配置手册?</el-button></a>\n </Tip>\n </div>\n <div class=\"config-container\">\n <div\n v-for=\"serverItem in serverConfig\"\n :key=\"serverItem.title\"\n class=\"config-panel\"\n >\n <h2>\n {{ serverItem.title }}\n </h2>\n <el-form\n label-position=\"right\"\n label-width=\"100px\"\n style=\"max-width: 400px; margin: 0 auto\"\n >\n <el-form-item\n v-for=\"cfgItem in serverItem.data\"\n :key=\"cfgItem.key\"\n label-width=\"auto\"\n :label=\"cfgItem.label || cfgItem.key\"\n >\n <div class=\"flex\" style=\"flex: 1\">\n <el-input\n v-model=\"cfgItem.value\"\n :disabled=\"cfgItem.disabled\"\n />\n <el-button\n v-if=\"cfgItem.disabled\"\n type=\"primary\"\n text\n @click=\"cfgItem.disabled = false\"\n >\n 更新\n </el-button>\n <el-button\n v-else\n type=\"success\"\n text\n @click=\"updateCfg(cfgItem)\"\n >\n 完成\n </el-button>\n </div>\n </el-form-item>\n </el-form>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n@media screen and (max-width: 700px) {\n .user {\n margin-top: 40px !important;\n }\n}\n\n.user {\n margin: 0 auto;\n}\n\n.panel {\n max-width: 1256px;\n padding: 1em;\n background-color: #fff;\n margin: 10px auto;\n box-sizing: border-box;\n box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);\n border-radius: 4px;\n}\n\nh1 {\n margin: 0;\n padding: 10px 0;\n font-size: 20px;\n font-weight: bold;\n text-align: center;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.service-list {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n}\n\n.service-item {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n margin: 10px;\n min-width: 120px;\n\n img {\n width: 80px;\n }\n\n p {\n text-align: center;\n padding-top: 10px;\n font-size: 14px;\n }\n}\n\n@keyframes rotate {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.loading {\n margin-left: 10px;\n animation: rotate 1s linear infinite;\n}\n\n.error-panel {\n padding: 0 20px;\n\n p {\n .error {\n color: red;\n }\n\n margin-bottom: 10px;\n }\n}\n\n.config-container {\n display: flex;\n justify-content: space-around;\n flex-wrap: wrap;\n}\n\n.config-panel {\n h2 {\n text-align: center;\n font-size: 16px;\n margin-bottom: 10px;\n }\n}\n</style>\n"],"names":["getServiceOverview","ajax","getServiceConfig","updateCfg","data","ConfigServiceAPI","_sfc_main","defineComponent","_hoisted_1","_hoisted_2","createElementVNode","_hoisted_3","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","closeBold","_export_sfc","select","serviceList","reactive","loading","ref","showErrorList","computed","item","refreshStatus","v","status","errMsg","ElMessage","serverConfig","onMounted"],"mappings":"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","x_google_ignoreList":[1,2]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{g as Ae,d as Ee,a as s,c,b as l,u as He,a1 as Ge,Z as U,O as _,r as h,$ as Je,bt as qe,o as Ke,aW as we,E as r,bf as Ye,i as Xe,j as d,w as n,F as $,C as le,t as k,a8 as se,k as N,S as g,e as u,D as y,a9 as ke,a5 as xe,a3 as Ze,aY as be,ag as oe,bX as Qe,ae as j,aa as et,af as $e,y as tt,v as at,x as lt,I as st,p as ot,f as nt,b0 as it,s as ut,ac as rt,a_ as dt,P as ct,_ as pt}from"./index-yrncPnXk.js";import{v as mt}from"./el-loading-BMbhg8vq.js";import{a as ft,E as vt}from"./el-progress-ChbdZpVl.js";import{E as _t,a as ht}from"./el-form-item-B08Ira7l.js";import{T as E,E as gt}from"./tip-BM0xMiq8.js";import{I as yt,L as wt}from"./index-BVM3WMNO.js";import{u as kt}from"./el-dialog-U5Zmt3t3.js";import{E as Ne}from"./index-Dczz94WX.js";import"./index-DjTj_2YG.js";import"./isEqual-DdkrQbjH.js";import"./el-select-DP5UYxt3.js";import"./validator-DG4_rB-x.js";import"./aria-nkjrUMQ-.js";const xt=Ee({name:"UploadFilled"}),bt={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},$t=l("path",{fill:"currentColor",d:"M544 864V672h128L512 480 352 672h128v192H320v-1.6c-5.376.32-10.496 1.6-16 1.6A240 240 0 0 1 64 624c0-123.136 93.12-223.488 212.608-237.248A239.808 239.808 0 0 1 512 192a239.872 239.872 0 0 1 235.456 194.752c119.488 13.76 212.48 114.112 212.48 237.248a240 240 0 0 1-240 240c-5.376 0-10.56-1.28-16-1.6v1.6H544z"},null,-1),Nt=[$t];function Et(D,G,ne,ie,B,ue){return s(),c("svg",bt,Nt)}var Ft=Ae(xt,[["render",Et]]);const F=D=>(ot("data-v-8a74d233"),D=D(),nt(),D),Ct={class:"task-panel"},St={class:"pc-nav"},Ut={class:"nav"},zt={class:"logo"},It=F(()=>l("img",{style:{height:"40px",width:"170px"},src:"https://img.cdn.sugarat.top/easypicker/EasyPicker.png",alt:"logo"},null,-1)),Tt=["onClick"],Lt={key:0,"element-loading-text":"Loading...",class:"panel tc"},Mt={class:"name"},Vt={key:0,style:{color:"red"}},Dt={class:"tip-wrapper"},Bt={class:"ddl"},Pt={key:0},Rt={key:4},Wt={class:"infos"},Ot={key:0},jt={class:"infos"},At=F(()=>l("div",{class:"el-upload__text"},[u(" 将文件拖于此处 or "),l("em",null,"直接选择文件")],-1)),Ht={class:"p10"},Gt={class:"p10"},Jt={class:"p10 option-tips"},qt={style:{color:"red"}},Kt={style:{color:"red"}},Yt=F(()=>l("br",null,null,-1)),Xt=F(()=>l("br",null,null,-1)),Zt=F(()=>l("strong",null,"查询提交情况,需填写和提交时一样的表单信息",-1)),Qt=F(()=>l("br",null,null,-1)),ea=F(()=>l("strong",null,"选择大文件后需要等待一会儿才展示处理",-1)),ta=F(()=>l("br",null,null,-1)),aa={class:"withdraw"},la={key:1,class:"panel tc"},sa={class:"name"},oa={style:{"padding-top":"20px"}},na=Ee({__name:"index",setup(D){const G=kt(),ne=He(),ie=Ge(),B=U([{title:"我也要收集",path:"https://docs.ep.sugarat.top/"}]);function ue(t){if(B[t].path.startsWith("http")){window.location.href=B[t].path;return}ne.push({path:B[t].path})}const z=U({name:"",category:""}),o=U({bindField:""}),f=_(()=>it(o.format)),p=h(""),A=h(0),P=_(()=>A.value<=0),Fe=_(()=>{let t=~~(A.value/1e3),e=~~(t/(60*60));const a=~~(e/24);e%=24;const i=~~(t%3600/60);return t%=60,"剩余".concat(a,"天").concat(e,"时").concat(i,"分").concat(t,"秒")});function J(t=!0){if(o!=null&&o.ddl){const e=new Date(o.ddl);A.value=e.getTime()-Date.now()}else A.value=0;t&&setTimeout(()=>{J()},1e3)}const I=_(()=>{if(o!=null&&o.ddl){const t=new Date(o.ddl);return ut(t)}return""}),v=U([]),C=h([]),q=h(),K=_(()=>C.value.filter(t=>t.status==="uploading").length>0),Ce=t=>t.status==="uploading"||t.status==="success"?Ne.confirm("不影响已经上传成功的,正在上传的将取消上传","确定从列表移除文件吗?").then(()=>(t.status==="uploading"&&(r.info("取消".concat(t.name,"的上传")),t.subscription.unsubscribe()),!0)).catch(()=>!1):!0,Y=_(()=>v.every(t=>t.value)),T=_(()=>o.bindField.trim()||"姓名"),re=_(()=>v.find(t=>t.text===T.value)),Se=_(()=>o.people&&!re.value),x=U({peopleName:""});function de(t,e,a){if(!e){const i="请输入".concat(T.value);a(new Error(i)),r.error(i);return}be.checkPeopleIsExist(p.value,e).then(i=>{i.data.exist||r.error("你不在此次提交名单中,如有疑问请联系管理员"),a(i.data.exist?void 0:new Error("你不在此次提交名单中,如有疑问请联系管理员"))})}const ce=h(),Ue=U({peopleName:[{validator:de,trigger:"blur"}]});function X(){var t;if(re.value){const e=(t=v.find(a=>a.text===T.value))==null?void 0:t.value;return x.peopleName=e||"",new Promise(a=>{de(null,e,a)}).then(a=>!a)}return ce.value.validate(e=>e)}function ze(){const t=C.value;for(const e of t)if(!e.md5)r.info("文件(".concat(e.name,")的唯一指纹还在计算中,再等待一会儿再点击上传")),setTimeout(()=>{r.info("文件越大计算时间越长(1G通常需要20s)")},100);else if(e.status==="ready"){e.status="uploading";let{name:a}=e;const i=a;o.rewrite&&(a=v.map(W=>W.value).join(f.value.splitChar||"-")+oe(a)),a=rt(a);const te="easypicker2/".concat(p.value,"/").concat(e.md5,"/").concat(a);j.getUploadToken().then(W=>{dt(W.data.token,e.raw,te,{success(O){const{fsize:H}=O;j.addFile({originName:i,name:a,taskKey:p.value,taskName:z.name,size:H,hash:e.md5,info:JSON.stringify(v),people:x.peopleName}).then(()=>{e.status="success",r.success("文件:".concat(e.name,"提交成功")),o.people&&be.updatePeopleStatus(p.value,a,x.peopleName,e.md5)})},process(O,H,ae){e.percentage=Math.floor(O),e.subscription=ae}})})}}async function Ie(){if(!Y.value){r.warning("请先完成必要信息的填写");return}o.people&&!await X()||ze()}const Te=_(()=>{for(const t of C.value)if(t.status==="ready")return!0;return!1}),Le=_(()=>{for(const t of C.value)if(["success","ready"].includes(t.status))return!0;return!1}),L=h(0);function Me(t){const{name:e}=t;if(f.value.format.length&&f.value.status){const a=oe(e);if(!f.value.format.find(i=>a.toLowerCase().endsWith(i))){r.error("".concat(e," 格式不符合要求")),q.value.handleRemove(t);return}}if(f.value.size&&f.value.size<t.size){r.error("".concat(e," 大小").concat(xe(t.size)," 不符合要求")),q.value.handleRemove(t);return}L.value+=1,Qe(t.raw).then(a=>{t.md5=a,L.value-=1})}const pe=_(()=>f.value.limit||10);function Ve(){r.warning("一次提交最多只能选择".concat(pe.value,"个文件,请移除已经上传成功的或刷新页面"))}const Z=h(!1),me=h("");function De(){const t=C.value;for(const e of t)if(!e.md5)r.info("文件(".concat(e.name,")的唯一指纹还在计算中,再等待一会儿再点击上传")),setTimeout(()=>{r.info("文件越大计算时间越长(1G通常需要20s)")},100);else if(!["fail","uploading"].includes(e.status)){let{name:a}=e;o.rewrite&&(a=v.map(i=>i.value).join(f.value.splitChar||"-")+oe(a)),j.withdrawFile({taskKey:p.value,taskName:z.name,filename:a,hash:e.md5,info:JSON.stringify(v),peopleName:x.peopleName}).then(()=>{r.success("文件:".concat(e.name,"撤回成功")),e.name+=" - (已撤回 ✅ )",e.status="fail"}).catch(()=>{r.error("撤回失败: 没有文件:".concat(e.name,"对应提交记录"))})}}function fe(){j.getTemplateUrl(o.template,p.value).then(t=>{Z.value=!0;const{link:e}=t.data;me.value=e,et(e,o.template)}).catch(()=>{r.warning("文件已从服务器上移除,请联系管理员重新上传")})}const R=h(!1);async function Be(){if(!Y.value){r.warning("请先完成必要信息的填写");return}o.people&&!await X()||De()}async function Pe(){if(!Y.value){r.warning("请先完成必要信息的填写,需和提交时信息完全一致");return}o.people&&!await X()||j.checkSubmitStatus(p.value,v,x.peopleName).then(t=>{t.data.isSubmit?r.success("已经提交过啦"):r.warning("还未提交过哟")})}const Q=h(!1),ee=h(!1);function ve(t=[],e=[]){return t.length!==e.length?!1:t.every((a,i)=>a.type===e[i].type&&a.text===e[i].text&&ve(a.children,e[i].children))}function _e(t=!1){we.getTaskMoreInfo(p.value).then(e=>{Object.assign(o,e.data),ve(v,$e(o.info))||(v.splice(0,v.length),v.push(...$e(o.info)),t&&r.success("表单信息有更新")),J(!1),Q.value=!1})}function he(){ee.value=!0}function ge(){ee.value&&!K.value&&(ee.value=!1,_e(!0))}const Re=_(()=>P.value?I.value:I.value+Fe.value),S=U({text:"",imgs:[]}),w=h([]);Je(()=>o.tip,()=>{try{const t=JSON.parse(o.tip);S.imgs=t.imgs,S.text=t.text||"",w.value=S.imgs.map(e=>({...e,url:"https://img.cdn.sugarat.top/mdImg/MTY3NzkxMDI1NTU1Nw==20140524124237518.gif"})),w.value.length&&ct.getTipImageUrl(p.value,w.value.map(e=>({uid:e.uid,name:e.name}))).then(e=>{e.data.forEach((a,i)=>{w.value[i].url=a.cover,Object.assign(w.value[i],{preview:a.preview})})})}catch(t){S.text="",S.imgs=[],w.value=[]}});const M=qe("disabledUpload",!1);return Ke(()=>{p.value=ie.params.key,p.value&&(Q.value=!0,we.getTaskInfo(p.value).then(t=>{Object.assign(z,t.data),M.value=!!t.data.limitUpload,M.value&&Ne.alert("任务存储空间容量已达到上限,已经无法进行上传,请联系发起人扩容空间")}).catch(t=>{t.code===4001&&(r.error("任务不存在"),p.value="",z.name="任务不存在")}),_e(),J()),window.addEventListener("blur",he),window.addEventListener("focus",ge)}),Ye(()=>{window.removeEventListener("blur",he),window.removeEventListener("focus",ge)}),(t,e)=>{const a=Xe("router-link"),i=tt,te=gt,W=ft,O=at,H=_t,ae=ht,b=lt,We=st,Oe=vt,je=mt;return s(),c("div",Ct,[l("div",St,[l("div",Ut,[l("div",zt,[d(a,{to:"/"},{default:n(()=>[It]),_:1})]),l("nav",null,[(s(!0),c($,null,le(B,(m,V)=>(s(),c("div",{key:V,class:"nav-item",onClick:ye=>ue(V)},k(m.title),9,Tt))),128))])])]),p.value?se((s(),c("div",Lt,[l("h1",Mt,k(z.name),1),N(M)?(s(),c("h2",Vt," 任务存储空间容量已达到上限,已经无法进行上传,请联系发起人扩容空间 ")):g("",!0),S.text&&(!I.value||!P.value)?(s(),c($,{key:1},[d(i,null,{default:n(()=>[u("⚠️ 注意事项 ⚠️")]),_:1}),d(E,null,{default:n(()=>[l("div",Dt,[(s(!0),c($,null,le(S.text.split("\n"),(m,V)=>(s(),c("p",{key:V},k(m.replace(/\s/g," ")),1))),128))])]),_:1})],64)):g("",!0),w.value.length&&(!I.value||!P.value)?(s(!0),c($,{key:2},le(w.value,(m,V)=>(s(),y(te,{key:m.uid,"hide-on-click-modal":"",style:{width:"100px",height:"100px",margin:"10px"},src:m.url,"zoom-rate":1.2,"preview-src-list":w.value.map(ye=>ye.preview),"initial-index":V,fit:"contain"},null,8,["src","preview-src-list","initial-index"]))),128)):g("",!0),I.value?(s(),c($,{key:3},[d(i,null,{default:n(()=>[u("截止时间")]),_:1}),l("h2",Bt,k(Re.value),1),P.value?(s(),c("div",Pt,[d(W,{description:"已经结束啦!"})])):g("",!0)],64)):g("",!0),!I.value||!P.value?(s(),c("div",Rt,[d(i,null,{default:n(()=>[u("必要信息填写")]),_:1}),l("div",Wt,[se(l("div",null,[d(E,null,{default:n(()=>[u("“"+k(T.value)+"”在参与名单里才能正常提交",1)]),_:1})],512),[[ke,o.people]]),Se.value?(s(),c("div",Ot,[l("div",jt,[d(ae,{ref_key:"validModalRef",ref:ce,rules:Ue,"status-icon":"",model:x,disabled:K.value,"label-position":"top"},{default:n(()=>[d(H,{prop:"peopleName",label:T.value},{default:n(()=>[d(O,{modelValue:x.peopleName,"onUpdate:modelValue":e[0]||(e[0]=m=>x.peopleName=m),maxlength:14,clearable:"","show-word-limit":"",placeholder:"请输入 ".concat(T.value)},null,8,["modelValue","placeholder"])]),_:1},8,["label"])]),_:1},8,["rules","model","disabled"])])])):g("",!0),d(yt,{infos:v,disabled:K.value},null,8,["infos","disabled"])]),d(Oe,{ref_key:"fileUpload",ref:q,"file-list":C.value,"onUpdate:fileList":e[1]||(e[1]=m=>C.value=m),style:{"max-width":"400px",margin:"0 auto"},drag:!N(G),action:"","on-change":Me,"before-remove":Ce,"on-exceed":Ve,"auto-upload":!1,multiple:"",limit:pe.value},{tip:n(()=>[se(l("div",Ht,[d(E,null,{default:n(()=>[u(" 还有 "+k(L.value)+" 个文件正在生成校验信息,请稍等(1G通常需要20s) ",1)]),_:1})],512),[[ke,!!L.value]])]),default:n(()=>[N(G)?(s(),y(b,{key:0,type:"primary"},{default:n(()=>[u(" 选择文件 ")]),_:1})):(s(),c($,{key:1},[d(We,{class:"el-icon--upload"},{default:n(()=>[d(N(Ft))]),_:1}),At],64))]),_:1},8,["file-list","drag","limit"]),l("div",Gt,[R.value?(s(),y(b,{key:0,size:"default",type:"warning",disabled:!Le.value||!!L.value,onClick:Be},{default:n(()=>[u(" 一键撤回 ")]),_:1},8,["disabled"])):N(M)?g("",!0):(s(),y(b,{key:1,size:"default",type:"success",disabled:!Te.value||!!L.value,onClick:Ie},{default:n(()=>[u(" 提交文件 ")]),_:1},8,["disabled"])),d(b,{size:"default",onClick:Pe},{default:n(()=>[u(" 查询提交情况 ")]),_:1})]),l("div",Jt,[f.value.status&&f.value.format.length?(s(),y(E,{key:0},{default:n(()=>[u(" 限制格式为: "),l("span",qt,k(f.value.format.join(", ")),1)]),_:1})):g("",!0),f.value.size?(s(),y(E,{key:1},{default:n(()=>[u(" 限制文件大小不超过: "),l("span",Kt,k(N(xe)(f.value.size)),1)]),_:1})):g("",!0),R.value?(s(),y(E,{key:2},{default:n(()=>[u(" ① 须保证选择的文件与提交时的文件一致"),Yt,u(" ② 填写表单信息一致 "),Xt,u(" ③ 完全一模一样的文件的提交记录(内容md5+命名),将会一次性全部撤回 ")]),_:1})):(s(),c($,{key:3},[d(E,null,{default:n(()=>[Zt]),_:1}),d(E,null,{default:n(()=>[u(" ① 选择完文件,点击 ”提交文件“即可 "),Qt,u(" ② "),ea,o.template&&!N(M)?(s(),c($,{key:0},[ta,u(" ③ "),l("strong",null,[d(b,{type:"primary",text:"",style:{color:"#85ce61"},size:"small",onClick:fe},{default:n(()=>[u("右下角可 “查看提交示例” ")]),_:1})])],64)):g("",!0)]),_:1})],64))]),l("div",aa,[o.template&&!N(M)?(s(),y(b,{key:0,type:"primary",text:"",style:{color:"#85ce61"},size:"small",onClick:fe},{default:n(()=>[u(" 查看提交示例 ")]),_:1})):g("",!0),R.value?(s(),y(b,{key:1,size:"small",type:"primary",text:"",onClick:e[2]||(e[2]=m=>R.value=!1)},{default:n(()=>[u(" 正常提交 ")]),_:1})):(s(),y(b,{key:2,size:"small",type:"primary",text:"",onClick:e[3]||(e[3]=m=>R.value=!0)},{default:n(()=>[u(" 我要撤回 ")]),_:1}))])])):g("",!0)])),[[je,Q.value]]):(s(),c("div",la,[l("h1",sa,k(z.name),1)])),d(wt,{value:Z.value,"onUpdate:value":e[4]||(e[4]=m=>Z.value=m),title:"示例文件下载链接",link:me.value},null,8,["value","link"]),l("div",oa,[d(Ze,{type:"task"})])])}}}),wa=pt(na,[["__scopeId","data-v-8a74d233"]]);export{wa as default};
|
|
2
|
-
//# sourceMappingURL=index-
|
|
1
|
+
import{g as Ae,d as Ee,a as s,c,b as l,u as He,a1 as Ge,Z as U,O as _,r as h,$ as Je,bt as qe,o as Ke,aW as we,E as r,bf as Ye,i as Xe,j as d,w as n,F as $,C as le,t as k,a8 as se,k as N,S as g,e as u,D as y,a9 as ke,a5 as xe,a3 as Ze,aY as be,ag as oe,bX as Qe,ae as j,aa as et,af as $e,y as tt,v as at,x as lt,I as st,p as ot,f as nt,b0 as it,s as ut,ac as rt,a_ as dt,P as ct,_ as pt}from"./index-D80lTVeV.js";import{v as mt}from"./el-loading-D5D_2rI_.js";import{a as ft,E as vt}from"./el-progress-GDfl1hgb.js";import{E as _t,a as ht}from"./el-form-item-BhAyaXPT.js";import{T as E,E as gt}from"./tip-DQo-E_Pu.js";import{I as yt,L as wt}from"./index-DEiWe2Bk.js";import{u as kt}from"./el-dialog-C9wNxcPt.js";import{E as Ne}from"./index-Byzqqd86.js";import"./index-BUF8Xxid.js";import"./isEqual-pN6Ih18F.js";import"./el-select-B9z8VvNb.js";import"./validator-CZlzBDi2.js";import"./aria-nkjrUMQ-.js";const xt=Ee({name:"UploadFilled"}),bt={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},$t=l("path",{fill:"currentColor",d:"M544 864V672h128L512 480 352 672h128v192H320v-1.6c-5.376.32-10.496 1.6-16 1.6A240 240 0 0 1 64 624c0-123.136 93.12-223.488 212.608-237.248A239.808 239.808 0 0 1 512 192a239.872 239.872 0 0 1 235.456 194.752c119.488 13.76 212.48 114.112 212.48 237.248a240 240 0 0 1-240 240c-5.376 0-10.56-1.28-16-1.6v1.6H544z"},null,-1),Nt=[$t];function Et(D,G,ne,ie,B,ue){return s(),c("svg",bt,Nt)}var Ft=Ae(xt,[["render",Et]]);const F=D=>(ot("data-v-8a74d233"),D=D(),nt(),D),Ct={class:"task-panel"},St={class:"pc-nav"},Ut={class:"nav"},zt={class:"logo"},It=F(()=>l("img",{style:{height:"40px",width:"170px"},src:"https://img.cdn.sugarat.top/easypicker/EasyPicker.png",alt:"logo"},null,-1)),Tt=["onClick"],Lt={key:0,"element-loading-text":"Loading...",class:"panel tc"},Mt={class:"name"},Vt={key:0,style:{color:"red"}},Dt={class:"tip-wrapper"},Bt={class:"ddl"},Pt={key:0},Rt={key:4},Wt={class:"infos"},Ot={key:0},jt={class:"infos"},At=F(()=>l("div",{class:"el-upload__text"},[u(" 将文件拖于此处 or "),l("em",null,"直接选择文件")],-1)),Ht={class:"p10"},Gt={class:"p10"},Jt={class:"p10 option-tips"},qt={style:{color:"red"}},Kt={style:{color:"red"}},Yt=F(()=>l("br",null,null,-1)),Xt=F(()=>l("br",null,null,-1)),Zt=F(()=>l("strong",null,"查询提交情况,需填写和提交时一样的表单信息",-1)),Qt=F(()=>l("br",null,null,-1)),ea=F(()=>l("strong",null,"选择大文件后需要等待一会儿才展示处理",-1)),ta=F(()=>l("br",null,null,-1)),aa={class:"withdraw"},la={key:1,class:"panel tc"},sa={class:"name"},oa={style:{"padding-top":"20px"}},na=Ee({__name:"index",setup(D){const G=kt(),ne=He(),ie=Ge(),B=U([{title:"我也要收集",path:"https://docs.ep.sugarat.top/"}]);function ue(t){if(B[t].path.startsWith("http")){window.location.href=B[t].path;return}ne.push({path:B[t].path})}const z=U({name:"",category:""}),o=U({bindField:""}),f=_(()=>it(o.format)),p=h(""),A=h(0),P=_(()=>A.value<=0),Fe=_(()=>{let t=~~(A.value/1e3),e=~~(t/(60*60));const a=~~(e/24);e%=24;const i=~~(t%3600/60);return t%=60,"剩余".concat(a,"天").concat(e,"时").concat(i,"分").concat(t,"秒")});function J(t=!0){if(o!=null&&o.ddl){const e=new Date(o.ddl);A.value=e.getTime()-Date.now()}else A.value=0;t&&setTimeout(()=>{J()},1e3)}const I=_(()=>{if(o!=null&&o.ddl){const t=new Date(o.ddl);return ut(t)}return""}),v=U([]),C=h([]),q=h(),K=_(()=>C.value.filter(t=>t.status==="uploading").length>0),Ce=t=>t.status==="uploading"||t.status==="success"?Ne.confirm("不影响已经上传成功的,正在上传的将取消上传","确定从列表移除文件吗?").then(()=>(t.status==="uploading"&&(r.info("取消".concat(t.name,"的上传")),t.subscription.unsubscribe()),!0)).catch(()=>!1):!0,Y=_(()=>v.every(t=>t.value)),T=_(()=>o.bindField.trim()||"姓名"),re=_(()=>v.find(t=>t.text===T.value)),Se=_(()=>o.people&&!re.value),x=U({peopleName:""});function de(t,e,a){if(!e){const i="请输入".concat(T.value);a(new Error(i)),r.error(i);return}be.checkPeopleIsExist(p.value,e).then(i=>{i.data.exist||r.error("你不在此次提交名单中,如有疑问请联系管理员"),a(i.data.exist?void 0:new Error("你不在此次提交名单中,如有疑问请联系管理员"))})}const ce=h(),Ue=U({peopleName:[{validator:de,trigger:"blur"}]});function X(){var t;if(re.value){const e=(t=v.find(a=>a.text===T.value))==null?void 0:t.value;return x.peopleName=e||"",new Promise(a=>{de(null,e,a)}).then(a=>!a)}return ce.value.validate(e=>e)}function ze(){const t=C.value;for(const e of t)if(!e.md5)r.info("文件(".concat(e.name,")的唯一指纹还在计算中,再等待一会儿再点击上传")),setTimeout(()=>{r.info("文件越大计算时间越长(1G通常需要20s)")},100);else if(e.status==="ready"){e.status="uploading";let{name:a}=e;const i=a;o.rewrite&&(a=v.map(W=>W.value).join(f.value.splitChar||"-")+oe(a)),a=rt(a);const te="easypicker2/".concat(p.value,"/").concat(e.md5,"/").concat(a);j.getUploadToken().then(W=>{dt(W.data.token,e.raw,te,{success(O){const{fsize:H}=O;j.addFile({originName:i,name:a,taskKey:p.value,taskName:z.name,size:H,hash:e.md5,info:JSON.stringify(v),people:x.peopleName}).then(()=>{e.status="success",r.success("文件:".concat(e.name,"提交成功")),o.people&&be.updatePeopleStatus(p.value,a,x.peopleName,e.md5)})},process(O,H,ae){e.percentage=Math.floor(O),e.subscription=ae}})})}}async function Ie(){if(!Y.value){r.warning("请先完成必要信息的填写");return}o.people&&!await X()||ze()}const Te=_(()=>{for(const t of C.value)if(t.status==="ready")return!0;return!1}),Le=_(()=>{for(const t of C.value)if(["success","ready"].includes(t.status))return!0;return!1}),L=h(0);function Me(t){const{name:e}=t;if(f.value.format.length&&f.value.status){const a=oe(e);if(!f.value.format.find(i=>a.toLowerCase().endsWith(i))){r.error("".concat(e," 格式不符合要求")),q.value.handleRemove(t);return}}if(f.value.size&&f.value.size<t.size){r.error("".concat(e," 大小").concat(xe(t.size)," 不符合要求")),q.value.handleRemove(t);return}L.value+=1,Qe(t.raw).then(a=>{t.md5=a,L.value-=1})}const pe=_(()=>f.value.limit||10);function Ve(){r.warning("一次提交最多只能选择".concat(pe.value,"个文件,请移除已经上传成功的或刷新页面"))}const Z=h(!1),me=h("");function De(){const t=C.value;for(const e of t)if(!e.md5)r.info("文件(".concat(e.name,")的唯一指纹还在计算中,再等待一会儿再点击上传")),setTimeout(()=>{r.info("文件越大计算时间越长(1G通常需要20s)")},100);else if(!["fail","uploading"].includes(e.status)){let{name:a}=e;o.rewrite&&(a=v.map(i=>i.value).join(f.value.splitChar||"-")+oe(a)),j.withdrawFile({taskKey:p.value,taskName:z.name,filename:a,hash:e.md5,info:JSON.stringify(v),peopleName:x.peopleName}).then(()=>{r.success("文件:".concat(e.name,"撤回成功")),e.name+=" - (已撤回 ✅ )",e.status="fail"}).catch(()=>{r.error("撤回失败: 没有文件:".concat(e.name,"对应提交记录"))})}}function fe(){j.getTemplateUrl(o.template,p.value).then(t=>{Z.value=!0;const{link:e}=t.data;me.value=e,et(e,o.template)}).catch(()=>{r.warning("文件已从服务器上移除,请联系管理员重新上传")})}const R=h(!1);async function Be(){if(!Y.value){r.warning("请先完成必要信息的填写");return}o.people&&!await X()||De()}async function Pe(){if(!Y.value){r.warning("请先完成必要信息的填写,需和提交时信息完全一致");return}o.people&&!await X()||j.checkSubmitStatus(p.value,v,x.peopleName).then(t=>{t.data.isSubmit?r.success("已经提交过啦"):r.warning("还未提交过哟")})}const Q=h(!1),ee=h(!1);function ve(t=[],e=[]){return t.length!==e.length?!1:t.every((a,i)=>a.type===e[i].type&&a.text===e[i].text&&ve(a.children,e[i].children))}function _e(t=!1){we.getTaskMoreInfo(p.value).then(e=>{Object.assign(o,e.data),ve(v,$e(o.info))||(v.splice(0,v.length),v.push(...$e(o.info)),t&&r.success("表单信息有更新")),J(!1),Q.value=!1})}function he(){ee.value=!0}function ge(){ee.value&&!K.value&&(ee.value=!1,_e(!0))}const Re=_(()=>P.value?I.value:I.value+Fe.value),S=U({text:"",imgs:[]}),w=h([]);Je(()=>o.tip,()=>{try{const t=JSON.parse(o.tip);S.imgs=t.imgs,S.text=t.text||"",w.value=S.imgs.map(e=>({...e,url:"https://img.cdn.sugarat.top/mdImg/MTY3NzkxMDI1NTU1Nw==20140524124237518.gif"})),w.value.length&&ct.getTipImageUrl(p.value,w.value.map(e=>({uid:e.uid,name:e.name}))).then(e=>{e.data.forEach((a,i)=>{w.value[i].url=a.cover,Object.assign(w.value[i],{preview:a.preview})})})}catch(t){S.text="",S.imgs=[],w.value=[]}});const M=qe("disabledUpload",!1);return Ke(()=>{p.value=ie.params.key,p.value&&(Q.value=!0,we.getTaskInfo(p.value).then(t=>{Object.assign(z,t.data),M.value=!!t.data.limitUpload,M.value&&Ne.alert("任务存储空间容量已达到上限,已经无法进行上传,请联系发起人扩容空间")}).catch(t=>{t.code===4001&&(r.error("任务不存在"),p.value="",z.name="任务不存在")}),_e(),J()),window.addEventListener("blur",he),window.addEventListener("focus",ge)}),Ye(()=>{window.removeEventListener("blur",he),window.removeEventListener("focus",ge)}),(t,e)=>{const a=Xe("router-link"),i=tt,te=gt,W=ft,O=at,H=_t,ae=ht,b=lt,We=st,Oe=vt,je=mt;return s(),c("div",Ct,[l("div",St,[l("div",Ut,[l("div",zt,[d(a,{to:"/"},{default:n(()=>[It]),_:1})]),l("nav",null,[(s(!0),c($,null,le(B,(m,V)=>(s(),c("div",{key:V,class:"nav-item",onClick:ye=>ue(V)},k(m.title),9,Tt))),128))])])]),p.value?se((s(),c("div",Lt,[l("h1",Mt,k(z.name),1),N(M)?(s(),c("h2",Vt," 任务存储空间容量已达到上限,已经无法进行上传,请联系发起人扩容空间 ")):g("",!0),S.text&&(!I.value||!P.value)?(s(),c($,{key:1},[d(i,null,{default:n(()=>[u("⚠️ 注意事项 ⚠️")]),_:1}),d(E,null,{default:n(()=>[l("div",Dt,[(s(!0),c($,null,le(S.text.split("\n"),(m,V)=>(s(),c("p",{key:V},k(m.replace(/\s/g," ")),1))),128))])]),_:1})],64)):g("",!0),w.value.length&&(!I.value||!P.value)?(s(!0),c($,{key:2},le(w.value,(m,V)=>(s(),y(te,{key:m.uid,"hide-on-click-modal":"",style:{width:"100px",height:"100px",margin:"10px"},src:m.url,"zoom-rate":1.2,"preview-src-list":w.value.map(ye=>ye.preview),"initial-index":V,fit:"contain"},null,8,["src","preview-src-list","initial-index"]))),128)):g("",!0),I.value?(s(),c($,{key:3},[d(i,null,{default:n(()=>[u("截止时间")]),_:1}),l("h2",Bt,k(Re.value),1),P.value?(s(),c("div",Pt,[d(W,{description:"已经结束啦!"})])):g("",!0)],64)):g("",!0),!I.value||!P.value?(s(),c("div",Rt,[d(i,null,{default:n(()=>[u("必要信息填写")]),_:1}),l("div",Wt,[se(l("div",null,[d(E,null,{default:n(()=>[u("“"+k(T.value)+"”在参与名单里才能正常提交",1)]),_:1})],512),[[ke,o.people]]),Se.value?(s(),c("div",Ot,[l("div",jt,[d(ae,{ref_key:"validModalRef",ref:ce,rules:Ue,"status-icon":"",model:x,disabled:K.value,"label-position":"top"},{default:n(()=>[d(H,{prop:"peopleName",label:T.value},{default:n(()=>[d(O,{modelValue:x.peopleName,"onUpdate:modelValue":e[0]||(e[0]=m=>x.peopleName=m),maxlength:14,clearable:"","show-word-limit":"",placeholder:"请输入 ".concat(T.value)},null,8,["modelValue","placeholder"])]),_:1},8,["label"])]),_:1},8,["rules","model","disabled"])])])):g("",!0),d(yt,{infos:v,disabled:K.value},null,8,["infos","disabled"])]),d(Oe,{ref_key:"fileUpload",ref:q,"file-list":C.value,"onUpdate:fileList":e[1]||(e[1]=m=>C.value=m),style:{"max-width":"400px",margin:"0 auto"},drag:!N(G),action:"","on-change":Me,"before-remove":Ce,"on-exceed":Ve,"auto-upload":!1,multiple:"",limit:pe.value},{tip:n(()=>[se(l("div",Ht,[d(E,null,{default:n(()=>[u(" 还有 "+k(L.value)+" 个文件正在生成校验信息,请稍等(1G通常需要20s) ",1)]),_:1})],512),[[ke,!!L.value]])]),default:n(()=>[N(G)?(s(),y(b,{key:0,type:"primary"},{default:n(()=>[u(" 选择文件 ")]),_:1})):(s(),c($,{key:1},[d(We,{class:"el-icon--upload"},{default:n(()=>[d(N(Ft))]),_:1}),At],64))]),_:1},8,["file-list","drag","limit"]),l("div",Gt,[R.value?(s(),y(b,{key:0,size:"default",type:"warning",disabled:!Le.value||!!L.value,onClick:Be},{default:n(()=>[u(" 一键撤回 ")]),_:1},8,["disabled"])):N(M)?g("",!0):(s(),y(b,{key:1,size:"default",type:"success",disabled:!Te.value||!!L.value,onClick:Ie},{default:n(()=>[u(" 提交文件 ")]),_:1},8,["disabled"])),d(b,{size:"default",onClick:Pe},{default:n(()=>[u(" 查询提交情况 ")]),_:1})]),l("div",Jt,[f.value.status&&f.value.format.length?(s(),y(E,{key:0},{default:n(()=>[u(" 限制格式为: "),l("span",qt,k(f.value.format.join(", ")),1)]),_:1})):g("",!0),f.value.size?(s(),y(E,{key:1},{default:n(()=>[u(" 限制文件大小不超过: "),l("span",Kt,k(N(xe)(f.value.size)),1)]),_:1})):g("",!0),R.value?(s(),y(E,{key:2},{default:n(()=>[u(" ① 须保证选择的文件与提交时的文件一致"),Yt,u(" ② 填写表单信息一致 "),Xt,u(" ③ 完全一模一样的文件的提交记录(内容md5+命名),将会一次性全部撤回 ")]),_:1})):(s(),c($,{key:3},[d(E,null,{default:n(()=>[Zt]),_:1}),d(E,null,{default:n(()=>[u(" ① 选择完文件,点击 ”提交文件“即可 "),Qt,u(" ② "),ea,o.template&&!N(M)?(s(),c($,{key:0},[ta,u(" ③ "),l("strong",null,[d(b,{type:"primary",text:"",style:{color:"#85ce61"},size:"small",onClick:fe},{default:n(()=>[u("右下角可 “查看提交示例” ")]),_:1})])],64)):g("",!0)]),_:1})],64))]),l("div",aa,[o.template&&!N(M)?(s(),y(b,{key:0,type:"primary",text:"",style:{color:"#85ce61"},size:"small",onClick:fe},{default:n(()=>[u(" 查看提交示例 ")]),_:1})):g("",!0),R.value?(s(),y(b,{key:1,size:"small",type:"primary",text:"",onClick:e[2]||(e[2]=m=>R.value=!1)},{default:n(()=>[u(" 正常提交 ")]),_:1})):(s(),y(b,{key:2,size:"small",type:"primary",text:"",onClick:e[3]||(e[3]=m=>R.value=!0)},{default:n(()=>[u(" 我要撤回 ")]),_:1}))])])):g("",!0)])),[[je,Q.value]]):(s(),c("div",la,[l("h1",sa,k(z.name),1)])),d(wt,{value:Z.value,"onUpdate:value":e[4]||(e[4]=m=>Z.value=m),title:"示例文件下载链接",link:me.value},null,8,["value","link"]),l("div",oa,[d(Ze,{type:"task"})])])}}}),wa=pt(na,[["__scopeId","data-v-8a74d233"]]);export{wa as default};
|
|
2
|
+
//# sourceMappingURL=index-fb67TYJ8.js.map
|