fix(env): Update API URL and enhance HTML structure

- Change VITE_API_URL in .env from localhost:3000 to localhost:3001 for backend access.
- Update index.html to replace favicon with logo.png and ensure proper HTML structure.
- Add new dependencies for WangEditor in package.json and package-lock.json to support rich text editing features.
This commit is contained in:
Ethanfly 2026-02-06 19:04:16 +08:00
parent 2ee017bccf
commit d07ebb735a
116 changed files with 3903 additions and 1633 deletions

View File

@ -16,7 +16,7 @@
VITE_API_URL=/api
# 如需直接访问后端(不使用代理),设置完整地址:
# VITE_API_URL=http://localhost:3000/api
VITE_API_URL=http://localhost:3001/api
# VITE_API_URL=https://your-server.com/api
# ------------------------------------------

View File

@ -1,13 +1,16 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>英飒俱乐部管理系统</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/logo.png" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>英飒俱乐部管理系统</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>
</html>

1584
admin/node_modules/.package-lock.json generated vendored

File diff suppressed because it is too large Load Diff

View File

@ -292,8 +292,8 @@ import {
wind_power_default,
zoom_in_default,
zoom_out_default
} from "./chunk-OP4ZUAFM.js";
import "./chunk-H2732BJL.js";
} from "./chunk-L7WLSQ4R.js";
import "./chunk-ELEEJBJQ.js";
import "./chunk-G3PMV62Z.js";
export {
add_location_default as AddLocation,

View File

@ -1,347 +1,365 @@
{
"hash": "0b0fcdca",
"configHash": "0bd4dba1",
"lockfileHash": "45a4e0fd",
"browserHash": "2a9cc92b",
"hash": "8a568c02",
"configHash": "47a28a65",
"lockfileHash": "05df1c47",
"browserHash": "dda6d657",
"optimized": {
"@element-plus/icons-vue": {
"src": "../../@element-plus/icons-vue/dist/index.js",
"file": "@element-plus_icons-vue.js",
"fileHash": "0ce2075a",
"fileHash": "ec7aa758",
"needsInterop": false
},
"axios": {
"src": "../../axios/index.js",
"file": "axios.js",
"fileHash": "e0339058",
"fileHash": "50abb3a0",
"needsInterop": false
},
"dayjs": {
"src": "../../dayjs/dayjs.min.js",
"file": "dayjs.js",
"fileHash": "d6bd156a",
"fileHash": "7122c9bb",
"needsInterop": true
},
"element-plus": {
"src": "../../element-plus/es/index.mjs",
"file": "element-plus.js",
"fileHash": "eb6d080f",
"fileHash": "de0a4e4c",
"needsInterop": false
},
"element-plus/dist/locale/zh-cn.mjs": {
"src": "../../element-plus/dist/locale/zh-cn.mjs",
"file": "element-plus_dist_locale_zh-cn__mjs.js",
"fileHash": "23bb7a06",
"fileHash": "7ff2f81b",
"needsInterop": false
},
"pinia": {
"src": "../../pinia/dist/pinia.mjs",
"file": "pinia.js",
"fileHash": "3e06a4e4",
"fileHash": "9025ba71",
"needsInterop": false
},
"qrcode": {
"src": "../../qrcode/lib/browser.js",
"file": "qrcode.js",
"fileHash": "b1dc1626",
"fileHash": "85e1c633",
"needsInterop": true
},
"vue": {
"src": "../../vue/dist/vue.runtime.esm-bundler.js",
"file": "vue.js",
"fileHash": "cf2fc702",
"fileHash": "d67acca6",
"needsInterop": false
},
"vue-router": {
"src": "../../vue-router/dist/vue-router.mjs",
"file": "vue-router.js",
"fileHash": "731df609",
"fileHash": "f248d375",
"needsInterop": false
},
"element-plus/es": {
"src": "../../element-plus/es/index.mjs",
"file": "element-plus_es.js",
"fileHash": "a8df203a",
"fileHash": "48f929fb",
"needsInterop": false
},
"element-plus/es/components/base/style/css": {
"src": "../../element-plus/es/components/base/style/css.mjs",
"file": "element-plus_es_components_base_style_css.js",
"fileHash": "a217b400",
"needsInterop": false
},
"element-plus/es/components/dialog/style/css": {
"src": "../../element-plus/es/components/dialog/style/css.mjs",
"file": "element-plus_es_components_dialog_style_css.js",
"fileHash": "75a45c45",
"needsInterop": false
},
"element-plus/es/components/button/style/css": {
"src": "../../element-plus/es/components/button/style/css.mjs",
"file": "element-plus_es_components_button_style_css.js",
"fileHash": "d80bcc5a",
"fileHash": "0bfce4cf",
"needsInterop": false
},
"element-plus/es/components/form/style/css": {
"src": "../../element-plus/es/components/form/style/css.mjs",
"file": "element-plus_es_components_form_style_css.js",
"fileHash": "1c8a603a",
"fileHash": "d4788822",
"needsInterop": false
},
"element-plus/es/components/button/style/css": {
"src": "../../element-plus/es/components/button/style/css.mjs",
"file": "element-plus_es_components_button_style_css.js",
"fileHash": "3041eea7",
"needsInterop": false
},
"element-plus/es/components/form-item/style/css": {
"src": "../../element-plus/es/components/form-item/style/css.mjs",
"file": "element-plus_es_components_form-item_style_css.js",
"fileHash": "0acbe0b6",
"fileHash": "c56d69b7",
"needsInterop": false
},
"element-plus/es/components/input/style/css": {
"src": "../../element-plus/es/components/input/style/css.mjs",
"file": "element-plus_es_components_input_style_css.js",
"fileHash": "7206bf43",
"fileHash": "416bddc0",
"needsInterop": false
},
"element-plus/es/components/dialog/style/css": {
"src": "../../element-plus/es/components/dialog/style/css.mjs",
"file": "element-plus_es_components_dialog_style_css.js",
"fileHash": "e061560e",
"needsInterop": false
},
"element-plus/es/components/container/style/css": {
"src": "../../element-plus/es/components/container/style/css.mjs",
"file": "element-plus_es_components_container_style_css.js",
"fileHash": "98a7fc8d",
"fileHash": "a3114877",
"needsInterop": false
},
"element-plus/es/components/main/style/css": {
"src": "../../element-plus/es/components/main/style/css.mjs",
"file": "element-plus_es_components_main_style_css.js",
"fileHash": "06ad125e",
"fileHash": "51b2c8ae",
"needsInterop": false
},
"element-plus/es/components/header/style/css": {
"src": "../../element-plus/es/components/header/style/css.mjs",
"file": "element-plus_es_components_header_style_css.js",
"fileHash": "0d145a75",
"fileHash": "29396d87",
"needsInterop": false
},
"element-plus/es/components/dropdown/style/css": {
"src": "../../element-plus/es/components/dropdown/style/css.mjs",
"file": "element-plus_es_components_dropdown_style_css.js",
"fileHash": "59eef490",
"fileHash": "de9c8b64",
"needsInterop": false
},
"element-plus/es/components/dropdown-menu/style/css": {
"src": "../../element-plus/es/components/dropdown-menu/style/css.mjs",
"file": "element-plus_es_components_dropdown-menu_style_css.js",
"fileHash": "14e34d1b",
"fileHash": "876b962c",
"needsInterop": false
},
"element-plus/es/components/dropdown-item/style/css": {
"src": "../../element-plus/es/components/dropdown-item/style/css.mjs",
"file": "element-plus_es_components_dropdown-item_style_css.js",
"fileHash": "b27e43bb",
"fileHash": "02fc7e6a",
"needsInterop": false
},
"element-plus/es/components/avatar/style/css": {
"src": "../../element-plus/es/components/avatar/style/css.mjs",
"file": "element-plus_es_components_avatar_style_css.js",
"fileHash": "2a5e4249",
"fileHash": "8dd20109",
"needsInterop": false
},
"element-plus/es/components/breadcrumb/style/css": {
"src": "../../element-plus/es/components/breadcrumb/style/css.mjs",
"file": "element-plus_es_components_breadcrumb_style_css.js",
"fileHash": "429623db",
"fileHash": "57e8092c",
"needsInterop": false
},
"element-plus/es/components/breadcrumb-item/style/css": {
"src": "../../element-plus/es/components/breadcrumb-item/style/css.mjs",
"file": "element-plus_es_components_breadcrumb-item_style_css.js",
"fileHash": "41266817",
"fileHash": "481a3941",
"needsInterop": false
},
"element-plus/es/components/aside/style/css": {
"src": "../../element-plus/es/components/aside/style/css.mjs",
"file": "element-plus_es_components_aside_style_css.js",
"fileHash": "7d5a15fd",
"fileHash": "59d11e8a",
"needsInterop": false
},
"element-plus/es/components/menu/style/css": {
"src": "../../element-plus/es/components/menu/style/css.mjs",
"file": "element-plus_es_components_menu_style_css.js",
"fileHash": "16c1dd4d",
"fileHash": "2698e97e",
"needsInterop": false
},
"element-plus/es/components/menu-item/style/css": {
"src": "../../element-plus/es/components/menu-item/style/css.mjs",
"file": "element-plus_es_components_menu-item_style_css.js",
"fileHash": "61715a00",
"fileHash": "52307744",
"needsInterop": false
},
"element-plus/es/components/icon/style/css": {
"src": "../../element-plus/es/components/icon/style/css.mjs",
"file": "element-plus_es_components_icon_style_css.js",
"fileHash": "dadfdc54",
"fileHash": "1ca3c820",
"needsInterop": false
},
"element-plus/es/components/input-number/style/css": {
"src": "../../element-plus/es/components/input-number/style/css.mjs",
"file": "element-plus_es_components_input-number_style_css.js",
"fileHash": "fe1a5065",
"fileHash": "47263c6c",
"needsInterop": false
},
"element-plus/es/components/autocomplete/style/css": {
"src": "../../element-plus/es/components/autocomplete/style/css.mjs",
"file": "element-plus_es_components_autocomplete_style_css.js",
"fileHash": "18633b2b",
"fileHash": "1f9138ee",
"needsInterop": false
},
"element-plus/es/components/tag/style/css": {
"src": "../../element-plus/es/components/tag/style/css.mjs",
"file": "element-plus_es_components_tag_style_css.js",
"fileHash": "9560cfd1",
"fileHash": "64584bf9",
"needsInterop": false
},
"element-plus/es/components/row/style/css": {
"src": "../../element-plus/es/components/row/style/css.mjs",
"file": "element-plus_es_components_row_style_css.js",
"fileHash": "28bb8b75",
"fileHash": "a66bee2e",
"needsInterop": false
},
"element-plus/es/components/col/style/css": {
"src": "../../element-plus/es/components/col/style/css.mjs",
"file": "element-plus_es_components_col_style_css.js",
"fileHash": "e29b5cd8",
"fileHash": "0f603d50",
"needsInterop": false
},
"element-plus/es/components/loading/style/css": {
"src": "../../element-plus/es/components/loading/style/css.mjs",
"file": "element-plus_es_components_loading_style_css.js",
"fileHash": "c5141ba1",
"needsInterop": false
},
"element-plus/es/components/divider/style/css": {
"src": "../../element-plus/es/components/divider/style/css.mjs",
"file": "element-plus_es_components_divider_style_css.js",
"fileHash": "37c51f12",
"needsInterop": false
},
"element-plus/es/components/text/style/css": {
"src": "../../element-plus/es/components/text/style/css.mjs",
"file": "element-plus_es_components_text_style_css.js",
"fileHash": "e5b97e77",
"needsInterop": false
},
"element-plus/es/components/switch/style/css": {
"src": "../../element-plus/es/components/switch/style/css.mjs",
"file": "element-plus_es_components_switch_style_css.js",
"fileHash": "2b98b2df",
"needsInterop": false
},
"element-plus/es/components/radio-group/style/css": {
"src": "../../element-plus/es/components/radio-group/style/css.mjs",
"file": "element-plus_es_components_radio-group_style_css.js",
"fileHash": "a90022be",
"needsInterop": false
},
"element-plus/es/components/radio/style/css": {
"src": "../../element-plus/es/components/radio/style/css.mjs",
"file": "element-plus_es_components_radio_style_css.js",
"fileHash": "42b918e0",
"fileHash": "3e156d5d",
"needsInterop": false
},
"element-plus/es/components/pagination/style/css": {
"src": "../../element-plus/es/components/pagination/style/css.mjs",
"file": "element-plus_es_components_pagination_style_css.js",
"fileHash": "29d647a3",
"fileHash": "7bbf7c89",
"needsInterop": false
},
"element-plus/es/components/table/style/css": {
"src": "../../element-plus/es/components/table/style/css.mjs",
"file": "element-plus_es_components_table_style_css.js",
"fileHash": "1f1a4f40",
"fileHash": "d5e7610e",
"needsInterop": false
},
"element-plus/es/components/table-column/style/css": {
"src": "../../element-plus/es/components/table-column/style/css.mjs",
"file": "element-plus_es_components_table-column_style_css.js",
"fileHash": "f35fe942",
"fileHash": "bd8ce5e0",
"needsInterop": false
},
"element-plus/es/components/select/style/css": {
"src": "../../element-plus/es/components/select/style/css.mjs",
"file": "element-plus_es_components_select_style_css.js",
"fileHash": "7ee42f75",
"fileHash": "abd102ea",
"needsInterop": false
},
"element-plus/es/components/option/style/css": {
"src": "../../element-plus/es/components/option/style/css.mjs",
"file": "element-plus_es_components_option_style_css.js",
"fileHash": "78e3b880",
"fileHash": "57ef18f7",
"needsInterop": false
},
"element-plus/es/components/collapse/style/css": {
"src": "../../element-plus/es/components/collapse/style/css.mjs",
"file": "element-plus_es_components_collapse_style_css.js",
"fileHash": "bf75176c",
"needsInterop": false
},
"element-plus/es/components/collapse-item/style/css": {
"src": "../../element-plus/es/components/collapse-item/style/css.mjs",
"file": "element-plus_es_components_collapse-item_style_css.js",
"fileHash": "afc23457",
"needsInterop": false
},
"element-plus/es/components/descriptions/style/css": {
"src": "../../element-plus/es/components/descriptions/style/css.mjs",
"file": "element-plus_es_components_descriptions_style_css.js",
"fileHash": "585f05ee",
"fileHash": "751f9003",
"needsInterop": false
},
"element-plus/es/components/descriptions-item/style/css": {
"src": "../../element-plus/es/components/descriptions-item/style/css.mjs",
"file": "element-plus_es_components_descriptions-item_style_css.js",
"fileHash": "0dc4fea5",
"fileHash": "364abd80",
"needsInterop": false
},
"element-plus/es/components/radio-group/style/css": {
"src": "../../element-plus/es/components/radio-group/style/css.mjs",
"file": "element-plus_es_components_radio-group_style_css.js",
"fileHash": "5d023797",
"needsInterop": false
},
"element-plus/es/components/radio/style/css": {
"src": "../../element-plus/es/components/radio/style/css.mjs",
"file": "element-plus_es_components_radio_style_css.js",
"fileHash": "7013a88b",
"needsInterop": false
},
"element-plus/es/components/switch/style/css": {
"src": "../../element-plus/es/components/switch/style/css.mjs",
"file": "element-plus_es_components_switch_style_css.js",
"fileHash": "9c2d7cdf",
"needsInterop": false
},
"@wangeditor/editor-for-vue": {
"src": "../../@wangeditor/editor-for-vue/dist/index.esm.js",
"file": "@wangeditor_editor-for-vue.js",
"fileHash": "d16802eb",
"needsInterop": false
},
"element-plus/es/components/upload/style/css": {
"src": "../../element-plus/es/components/upload/style/css.mjs",
"file": "element-plus_es_components_upload_style_css.js",
"fileHash": "7a2dd68a",
"needsInterop": false
},
"element-plus/es/components/image/style/css": {
"src": "../../element-plus/es/components/image/style/css.mjs",
"file": "element-plus_es_components_image_style_css.js",
"fileHash": "b70cc47f",
"needsInterop": false
}
},
"chunks": {
"chunk-4PW274X2": {
"file": "chunk-4PW274X2.js"
"chunk-UONBUPA2": {
"file": "chunk-UONBUPA2.js"
},
"chunk-B2YDYSZR": {
"file": "chunk-B2YDYSZR.js"
"chunk-VPJRTVUV": {
"file": "chunk-VPJRTVUV.js"
},
"chunk-75C4BP7B": {
"file": "chunk-75C4BP7B.js"
"chunk-FU6BXPW4": {
"file": "chunk-FU6BXPW4.js"
},
"chunk-UBLR4G7Q": {
"file": "chunk-UBLR4G7Q.js"
"chunk-CGXI5ONL": {
"file": "chunk-CGXI5ONL.js"
},
"chunk-5KK3TTMN": {
"file": "chunk-5KK3TTMN.js"
"chunk-3UWZ6IZW": {
"file": "chunk-3UWZ6IZW.js"
},
"chunk-R5DNQ3QC": {
"file": "chunk-R5DNQ3QC.js"
"chunk-DVSPEOSC": {
"file": "chunk-DVSPEOSC.js"
},
"chunk-NKQWFVTF": {
"file": "chunk-NKQWFVTF.js"
"chunk-PHTWDJV4": {
"file": "chunk-PHTWDJV4.js"
},
"chunk-REWOA3VH": {
"file": "chunk-REWOA3VH.js"
"chunk-EFJ4VOFN": {
"file": "chunk-EFJ4VOFN.js"
},
"chunk-TX5YLZ4O": {
"file": "chunk-TX5YLZ4O.js"
"chunk-4AQGC7O6": {
"file": "chunk-4AQGC7O6.js"
},
"chunk-SMFPDFTD": {
"file": "chunk-SMFPDFTD.js"
"chunk-VID4RN2V": {
"file": "chunk-VID4RN2V.js"
},
"chunk-JUCAMQ7P": {
"file": "chunk-JUCAMQ7P.js"
"chunk-I2FMO3TN": {
"file": "chunk-I2FMO3TN.js"
},
"chunk-IV6PSERC": {
"file": "chunk-IV6PSERC.js"
"chunk-PKGVV2AH": {
"file": "chunk-PKGVV2AH.js"
},
"chunk-6CKQ2YFZ": {
"file": "chunk-6CKQ2YFZ.js"
"chunk-QPJ3ZUOF": {
"file": "chunk-QPJ3ZUOF.js"
},
"chunk-OP4ZUAFM": {
"file": "chunk-OP4ZUAFM.js"
"chunk-47WSI2HY": {
"file": "chunk-47WSI2HY.js"
},
"chunk-YAGW2SQC": {
"file": "chunk-YAGW2SQC.js"
},
"chunk-L7WLSQ4R": {
"file": "chunk-L7WLSQ4R.js"
},
"chunk-ELEEJBJQ": {
"file": "chunk-ELEEJBJQ.js"
},
"chunk-QZC7O2C6": {
"file": "chunk-QZC7O2C6.js"
},
"chunk-YFT6OQ5R": {
"file": "chunk-YFT6OQ5R.js"
},
"chunk-HYZ2CRGS": {
"file": "chunk-HYZ2CRGS.js"
},
"chunk-H2732BJL": {
"file": "chunk-H2732BJL.js"
},
"chunk-G3PMV62Z": {
"file": "chunk-G3PMV62Z.js"
}

File diff suppressed because one or more lines are too long

View File

@ -514,11 +514,11 @@ import {
virtualizedScrollbarProps,
watermarkProps,
zIndexContextKey
} from "./chunk-6CKQ2YFZ.js";
import "./chunk-OP4ZUAFM.js";
} from "./chunk-47WSI2HY.js";
import "./chunk-YAGW2SQC.js";
import "./chunk-L7WLSQ4R.js";
import "./chunk-ELEEJBJQ.js";
import "./chunk-QZC7O2C6.js";
import "./chunk-HYZ2CRGS.js";
import "./chunk-H2732BJL.js";
import "./chunk-G3PMV62Z.js";
var export_dayjs = import_dayjs.default;
export {

File diff suppressed because one or more lines are too long

View File

@ -514,11 +514,11 @@ import {
virtualizedScrollbarProps,
watermarkProps,
zIndexContextKey
} from "./chunk-6CKQ2YFZ.js";
import "./chunk-OP4ZUAFM.js";
} from "./chunk-47WSI2HY.js";
import "./chunk-YAGW2SQC.js";
import "./chunk-L7WLSQ4R.js";
import "./chunk-ELEEJBJQ.js";
import "./chunk-QZC7O2C6.js";
import "./chunk-HYZ2CRGS.js";
import "./chunk-H2732BJL.js";
import "./chunk-G3PMV62Z.js";
var export_dayjs = import_dayjs.default;
export {

View File

@ -1,5 +1,5 @@
import "./chunk-IV6PSERC.js";
import "./chunk-QPJ3ZUOF.js";
// node_modules/element-plus/es/components/aside/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-aside.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-aside.css";
//# sourceMappingURL=element-plus_es_components_aside_style_css.js.map

View File

@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/aside/style/css.mjs"],
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-aside.css';\n//# sourceMappingURL=css.mjs.map\n"],
"sourcesContent": ["import '../../base/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-aside.css';\r\n//# sourceMappingURL=css.mjs.map\r\n"],
"mappings": ";;;AACA,OAAO;",
"names": []
}

View File

@ -1,5 +1,5 @@
import "./chunk-IV6PSERC.js";
import "./chunk-QPJ3ZUOF.js";
// node_modules/element-plus/es/components/avatar/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-avatar.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-avatar.css";
//# sourceMappingURL=element-plus_es_components_avatar_style_css.js.map

View File

@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/avatar/style/css.mjs"],
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-avatar.css';\n//# sourceMappingURL=css.mjs.map\n"],
"sourcesContent": ["import '../../base/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-avatar.css';\r\n//# sourceMappingURL=css.mjs.map\r\n"],
"mappings": ";;;AACA,OAAO;",
"names": []
}

View File

@ -1,2 +1,2 @@
import "./chunk-IV6PSERC.js";
import "./chunk-QPJ3ZUOF.js";
//# sourceMappingURL=element-plus_es_components_base_style_css.js.map

View File

@ -1,5 +1,5 @@
import "./chunk-IV6PSERC.js";
import "./chunk-QPJ3ZUOF.js";
// node_modules/element-plus/es/components/breadcrumb-item/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-breadcrumb-item.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-breadcrumb-item.css";
//# sourceMappingURL=element-plus_es_components_breadcrumb-item_style_css.js.map

View File

@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/breadcrumb-item/style/css.mjs"],
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-breadcrumb-item.css';\n//# sourceMappingURL=css.mjs.map\n"],
"sourcesContent": ["import '../../base/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-breadcrumb-item.css';\r\n//# sourceMappingURL=css.mjs.map\r\n"],
"mappings": ";;;AACA,OAAO;",
"names": []
}

View File

@ -1,5 +1,5 @@
import "./chunk-IV6PSERC.js";
import "./chunk-QPJ3ZUOF.js";
// node_modules/element-plus/es/components/breadcrumb/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-breadcrumb.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-breadcrumb.css";
//# sourceMappingURL=element-plus_es_components_breadcrumb_style_css.js.map

View File

@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/breadcrumb/style/css.mjs"],
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-breadcrumb.css';\n//# sourceMappingURL=css.mjs.map\n"],
"sourcesContent": ["import '../../base/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-breadcrumb.css';\r\n//# sourceMappingURL=css.mjs.map\r\n"],
"mappings": ";;;AACA,OAAO;",
"names": []
}

View File

@ -1,3 +1,3 @@
import "./chunk-SMFPDFTD.js";
import "./chunk-IV6PSERC.js";
import "./chunk-I2FMO3TN.js";
import "./chunk-QPJ3ZUOF.js";
//# sourceMappingURL=element-plus_es_components_button_style_css.js.map

View File

@ -1,5 +1,5 @@
import "./chunk-IV6PSERC.js";
import "./chunk-QPJ3ZUOF.js";
// node_modules/element-plus/es/components/col/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-col.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-col.css";
//# sourceMappingURL=element-plus_es_components_col_style_css.js.map

View File

@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/col/style/css.mjs"],
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-col.css';\n//# sourceMappingURL=css.mjs.map\n"],
"sourcesContent": ["import '../../base/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-col.css';\r\n//# sourceMappingURL=css.mjs.map\r\n"],
"mappings": ";;;AACA,OAAO;",
"names": []
}

View File

@ -1,9 +1,9 @@
import "./chunk-IV6PSERC.js";
import "./chunk-QPJ3ZUOF.js";
// node_modules/element-plus/es/components/container/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-container.css";
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-aside.css";
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-footer.css";
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-header.css";
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-main.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-container.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-aside.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-footer.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-header.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-main.css";
//# sourceMappingURL=element-plus_es_components_container_style_css.js.map

View File

@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/container/style/css.mjs"],
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-container.css';\nimport 'element-plus/theme-chalk/el-aside.css';\nimport 'element-plus/theme-chalk/el-footer.css';\nimport 'element-plus/theme-chalk/el-header.css';\nimport 'element-plus/theme-chalk/el-main.css';\n//# sourceMappingURL=css.mjs.map\n"],
"sourcesContent": ["import '../../base/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-container.css';\r\nimport 'element-plus/theme-chalk/el-aside.css';\r\nimport 'element-plus/theme-chalk/el-footer.css';\r\nimport 'element-plus/theme-chalk/el-header.css';\r\nimport 'element-plus/theme-chalk/el-main.css';\r\n//# sourceMappingURL=css.mjs.map\r\n"],
"mappings": ";;;AACA,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;",
"names": []
}

View File

@ -1,8 +1,8 @@
import "./chunk-IV6PSERC.js";
import "./chunk-QPJ3ZUOF.js";
// node_modules/element-plus/es/components/dialog/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-dialog.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-dialog.css";
// node_modules/element-plus/es/components/overlay/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-overlay.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-overlay.css";
//# sourceMappingURL=element-plus_es_components_dialog_style_css.js.map

View File

@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/dialog/style/css.mjs", "../../element-plus/es/components/overlay/style/css.mjs"],
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-dialog.css';\nimport '../../overlay/style/css.mjs';\n//# sourceMappingURL=css.mjs.map\n", "import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-overlay.css';\n//# sourceMappingURL=css.mjs.map\n"],
"sourcesContent": ["import '../../base/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-dialog.css';\r\nimport '../../overlay/style/css.mjs';\r\n//# sourceMappingURL=css.mjs.map\r\n", "import '../../base/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-overlay.css';\r\n//# sourceMappingURL=css.mjs.map\r\n"],
"mappings": ";;;AACA,OAAO;;;ACAP,OAAO;",
"names": []
}

View File

@ -1,5 +1,5 @@
import "./chunk-IV6PSERC.js";
import "./chunk-QPJ3ZUOF.js";
// node_modules/element-plus/es/components/dropdown-item/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-dropdown-item.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-dropdown-item.css";
//# sourceMappingURL=element-plus_es_components_dropdown-item_style_css.js.map

View File

@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/dropdown-item/style/css.mjs"],
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-dropdown-item.css';\n//# sourceMappingURL=css.mjs.map\n"],
"sourcesContent": ["import '../../base/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-dropdown-item.css';\r\n//# sourceMappingURL=css.mjs.map\r\n"],
"mappings": ";;;AACA,OAAO;",
"names": []
}

View File

@ -1,5 +1,5 @@
import "./chunk-IV6PSERC.js";
import "./chunk-QPJ3ZUOF.js";
// node_modules/element-plus/es/components/dropdown-menu/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-dropdown-menu.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-dropdown-menu.css";
//# sourceMappingURL=element-plus_es_components_dropdown-menu_style_css.js.map

View File

@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/dropdown-menu/style/css.mjs"],
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-dropdown-menu.css';\n//# sourceMappingURL=css.mjs.map\n"],
"sourcesContent": ["import '../../base/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-dropdown-menu.css';\r\n//# sourceMappingURL=css.mjs.map\r\n"],
"mappings": ";;;AACA,OAAO;",
"names": []
}

View File

@ -1,11 +1,11 @@
import "./chunk-REWOA3VH.js";
import "./chunk-TX5YLZ4O.js";
import "./chunk-SMFPDFTD.js";
import "./chunk-IV6PSERC.js";
import "./chunk-EFJ4VOFN.js";
import "./chunk-4AQGC7O6.js";
import "./chunk-I2FMO3TN.js";
import "./chunk-QPJ3ZUOF.js";
// node_modules/element-plus/es/components/button-group/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-button-group.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-button-group.css";
// node_modules/element-plus/es/components/dropdown/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-dropdown.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-dropdown.css";
//# sourceMappingURL=element-plus_es_components_dropdown_style_css.js.map

View File

@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/button-group/style/css.mjs", "../../element-plus/es/components/dropdown/style/css.mjs"],
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-button-group.css';\n//# sourceMappingURL=css.mjs.map\n", "import '../../base/style/css.mjs';\nimport '../../button/style/css.mjs';\nimport '../../button-group/style/css.mjs';\nimport '../../popper/style/css.mjs';\nimport '../../scrollbar/style/css.mjs';\nimport 'element-plus/theme-chalk/el-dropdown.css';\n//# sourceMappingURL=css.mjs.map\n"],
"sourcesContent": ["import '../../base/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-button-group.css';\r\n//# sourceMappingURL=css.mjs.map\r\n", "import '../../base/style/css.mjs';\r\nimport '../../button/style/css.mjs';\r\nimport '../../button-group/style/css.mjs';\r\nimport '../../popper/style/css.mjs';\r\nimport '../../scrollbar/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-dropdown.css';\r\n//# sourceMappingURL=css.mjs.map\r\n"],
"mappings": ";;;;;;AACA,OAAO;;;ACIP,OAAO;",
"names": []
}

View File

@ -1,5 +1,5 @@
import "./chunk-IV6PSERC.js";
import "./chunk-QPJ3ZUOF.js";
// node_modules/element-plus/es/components/form-item/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-form-item.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-form-item.css";
//# sourceMappingURL=element-plus_es_components_form-item_style_css.js.map

View File

@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/form-item/style/css.mjs"],
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-form-item.css';\n//# sourceMappingURL=css.mjs.map\n"],
"sourcesContent": ["import '../../base/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-form-item.css';\r\n//# sourceMappingURL=css.mjs.map\r\n"],
"mappings": ";;;AACA,OAAO;",
"names": []
}

View File

@ -1,5 +1,5 @@
import "./chunk-IV6PSERC.js";
import "./chunk-QPJ3ZUOF.js";
// node_modules/element-plus/es/components/form/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-form.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-form.css";
//# sourceMappingURL=element-plus_es_components_form_style_css.js.map

View File

@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/form/style/css.mjs"],
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-form.css';\n//# sourceMappingURL=css.mjs.map\n"],
"sourcesContent": ["import '../../base/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-form.css';\r\n//# sourceMappingURL=css.mjs.map\r\n"],
"mappings": ";;;AACA,OAAO;",
"names": []
}

View File

@ -1,5 +1,5 @@
import "./chunk-IV6PSERC.js";
import "./chunk-QPJ3ZUOF.js";
// node_modules/element-plus/es/components/header/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-header.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-header.css";
//# sourceMappingURL=element-plus_es_components_header_style_css.js.map

View File

@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/header/style/css.mjs"],
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-header.css';\n//# sourceMappingURL=css.mjs.map\n"],
"sourcesContent": ["import '../../base/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-header.css';\r\n//# sourceMappingURL=css.mjs.map\r\n"],
"mappings": ";;;AACA,OAAO;",
"names": []
}

View File

@ -1,2 +1,2 @@
import "./chunk-IV6PSERC.js";
import "./chunk-QPJ3ZUOF.js";
//# sourceMappingURL=element-plus_es_components_icon_style_css.js.map

View File

@ -1,6 +1,6 @@
import "./chunk-NKQWFVTF.js";
import "./chunk-IV6PSERC.js";
import "./chunk-PKGVV2AH.js";
import "./chunk-QPJ3ZUOF.js";
// node_modules/element-plus/es/components/input-number/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-input-number.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-input-number.css";
//# sourceMappingURL=element-plus_es_components_input-number_style_css.js.map

View File

@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/input-number/style/css.mjs"],
"sourcesContent": ["import '../../base/style/css.mjs';\nimport '../../input/style/css.mjs';\nimport 'element-plus/theme-chalk/el-input-number.css';\n//# sourceMappingURL=css.mjs.map\n"],
"sourcesContent": ["import '../../base/style/css.mjs';\r\nimport '../../input/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-input-number.css';\r\n//# sourceMappingURL=css.mjs.map\r\n"],
"mappings": ";;;;AAEA,OAAO;",
"names": []
}

View File

@ -1,3 +1,3 @@
import "./chunk-NKQWFVTF.js";
import "./chunk-IV6PSERC.js";
import "./chunk-PKGVV2AH.js";
import "./chunk-QPJ3ZUOF.js";
//# sourceMappingURL=element-plus_es_components_input_style_css.js.map

View File

@ -1,5 +1,5 @@
import "./chunk-IV6PSERC.js";
import "./chunk-QPJ3ZUOF.js";
// node_modules/element-plus/es/components/loading/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-loading.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-loading.css";
//# sourceMappingURL=element-plus_es_components_loading_style_css.js.map

View File

@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/loading/style/css.mjs"],
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-loading.css';\n//# sourceMappingURL=css.mjs.map\n"],
"sourcesContent": ["import '../../base/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-loading.css';\r\n//# sourceMappingURL=css.mjs.map\r\n"],
"mappings": ";;;AACA,OAAO;",
"names": []
}

View File

@ -1,5 +1,5 @@
import "./chunk-IV6PSERC.js";
import "./chunk-QPJ3ZUOF.js";
// node_modules/element-plus/es/components/main/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-main.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-main.css";
//# sourceMappingURL=element-plus_es_components_main_style_css.js.map

View File

@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/main/style/css.mjs"],
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-main.css';\n//# sourceMappingURL=css.mjs.map\n"],
"sourcesContent": ["import '../../base/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-main.css';\r\n//# sourceMappingURL=css.mjs.map\r\n"],
"mappings": ";;;AACA,OAAO;",
"names": []
}

View File

@ -1,5 +1,5 @@
import "./chunk-IV6PSERC.js";
import "./chunk-QPJ3ZUOF.js";
// node_modules/element-plus/es/components/menu-item/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-menu-item.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-menu-item.css";
//# sourceMappingURL=element-plus_es_components_menu-item_style_css.js.map

View File

@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/menu-item/style/css.mjs"],
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-menu-item.css';\n//# sourceMappingURL=css.mjs.map\n"],
"sourcesContent": ["import '../../base/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-menu-item.css';\r\n//# sourceMappingURL=css.mjs.map\r\n"],
"mappings": ";;;AACA,OAAO;",
"names": []
}

View File

@ -1,7 +1,7 @@
import "./chunk-R5DNQ3QC.js";
import "./chunk-TX5YLZ4O.js";
import "./chunk-IV6PSERC.js";
import "./chunk-PHTWDJV4.js";
import "./chunk-4AQGC7O6.js";
import "./chunk-QPJ3ZUOF.js";
// node_modules/element-plus/es/components/menu/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-menu.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-menu.css";
//# sourceMappingURL=element-plus_es_components_menu_style_css.js.map

View File

@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/menu/style/css.mjs"],
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-menu.css';\nimport '../../tooltip/style/css.mjs';\n//# sourceMappingURL=css.mjs.map\n"],
"sourcesContent": ["import '../../base/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-menu.css';\r\nimport '../../tooltip/style/css.mjs';\r\n//# sourceMappingURL=css.mjs.map\r\n"],
"mappings": ";;;;;AACA,OAAO;",
"names": []
}

View File

@ -1,3 +1,3 @@
import "./chunk-UBLR4G7Q.js";
import "./chunk-IV6PSERC.js";
import "./chunk-CGXI5ONL.js";
import "./chunk-QPJ3ZUOF.js";
//# sourceMappingURL=element-plus_es_components_option_style_css.js.map

View File

@ -1,11 +1,11 @@
import "./chunk-75C4BP7B.js";
import "./chunk-UBLR4G7Q.js";
import "./chunk-5KK3TTMN.js";
import "./chunk-NKQWFVTF.js";
import "./chunk-REWOA3VH.js";
import "./chunk-TX5YLZ4O.js";
import "./chunk-IV6PSERC.js";
import "./chunk-FU6BXPW4.js";
import "./chunk-CGXI5ONL.js";
import "./chunk-DVSPEOSC.js";
import "./chunk-EFJ4VOFN.js";
import "./chunk-4AQGC7O6.js";
import "./chunk-PKGVV2AH.js";
import "./chunk-QPJ3ZUOF.js";
// node_modules/element-plus/es/components/pagination/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-pagination.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-pagination.css";
//# sourceMappingURL=element-plus_es_components_pagination_style_css.js.map

View File

@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/pagination/style/css.mjs"],
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-pagination.css';\nimport '../../select/style/css.mjs';\nimport '../../input/style/css.mjs';\n//# sourceMappingURL=css.mjs.map\n"],
"sourcesContent": ["import '../../base/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-pagination.css';\r\nimport '../../select/style/css.mjs';\r\nimport '../../input/style/css.mjs';\r\n//# sourceMappingURL=css.mjs.map\r\n"],
"mappings": ";;;;;;;;;AACA,OAAO;",
"names": []
}

View File

@ -1,6 +1,6 @@
import "./chunk-4PW274X2.js";
import "./chunk-IV6PSERC.js";
import "./chunk-VPJRTVUV.js";
import "./chunk-QPJ3ZUOF.js";
// node_modules/element-plus/es/components/radio-group/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-radio-group.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-radio-group.css";
//# sourceMappingURL=element-plus_es_components_radio-group_style_css.js.map

View File

@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/radio-group/style/css.mjs"],
"sourcesContent": ["import '../../base/style/css.mjs';\nimport '../../radio/style/css.mjs';\nimport 'element-plus/theme-chalk/el-radio-group.css';\n//# sourceMappingURL=css.mjs.map\n"],
"sourcesContent": ["import '../../base/style/css.mjs';\r\nimport '../../radio/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-radio-group.css';\r\n//# sourceMappingURL=css.mjs.map\r\n"],
"mappings": ";;;;AAEA,OAAO;",
"names": []
}

View File

@ -1,3 +1,3 @@
import "./chunk-4PW274X2.js";
import "./chunk-IV6PSERC.js";
import "./chunk-VPJRTVUV.js";
import "./chunk-QPJ3ZUOF.js";
//# sourceMappingURL=element-plus_es_components_radio_style_css.js.map

View File

@ -1,5 +1,5 @@
import "./chunk-IV6PSERC.js";
import "./chunk-QPJ3ZUOF.js";
// node_modules/element-plus/es/components/row/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-row.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-row.css";
//# sourceMappingURL=element-plus_es_components_row_style_css.js.map

View File

@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/row/style/css.mjs"],
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-row.css';\n//# sourceMappingURL=css.mjs.map\n"],
"sourcesContent": ["import '../../base/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-row.css';\r\n//# sourceMappingURL=css.mjs.map\r\n"],
"mappings": ";;;AACA,OAAO;",
"names": []
}

View File

@ -1,7 +1,7 @@
import "./chunk-75C4BP7B.js";
import "./chunk-UBLR4G7Q.js";
import "./chunk-5KK3TTMN.js";
import "./chunk-REWOA3VH.js";
import "./chunk-TX5YLZ4O.js";
import "./chunk-IV6PSERC.js";
import "./chunk-FU6BXPW4.js";
import "./chunk-CGXI5ONL.js";
import "./chunk-DVSPEOSC.js";
import "./chunk-EFJ4VOFN.js";
import "./chunk-4AQGC7O6.js";
import "./chunk-QPJ3ZUOF.js";
//# sourceMappingURL=element-plus_es_components_select_style_css.js.map

View File

@ -1,7 +1,7 @@
import "./chunk-B2YDYSZR.js";
import "./chunk-5KK3TTMN.js";
import "./chunk-IV6PSERC.js";
import "./chunk-3UWZ6IZW.js";
import "./chunk-DVSPEOSC.js";
import "./chunk-QPJ3ZUOF.js";
// node_modules/element-plus/es/components/table-column/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-table-column.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-table-column.css";
//# sourceMappingURL=element-plus_es_components_table-column_style_css.js.map

View File

@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/table-column/style/css.mjs"],
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-table-column.css';\nimport '../../checkbox/style/css.mjs';\nimport '../../tag/style/css.mjs';\n//# sourceMappingURL=css.mjs.map\n"],
"sourcesContent": ["import '../../base/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-table-column.css';\r\nimport '../../checkbox/style/css.mjs';\r\nimport '../../tag/style/css.mjs';\r\n//# sourceMappingURL=css.mjs.map\r\n"],
"mappings": ";;;;;AACA,OAAO;",
"names": []
}

View File

@ -1,9 +1,9 @@
import "./chunk-B2YDYSZR.js";
import "./chunk-R5DNQ3QC.js";
import "./chunk-REWOA3VH.js";
import "./chunk-TX5YLZ4O.js";
import "./chunk-IV6PSERC.js";
import "./chunk-3UWZ6IZW.js";
import "./chunk-PHTWDJV4.js";
import "./chunk-EFJ4VOFN.js";
import "./chunk-4AQGC7O6.js";
import "./chunk-QPJ3ZUOF.js";
// node_modules/element-plus/es/components/table/style/css.mjs
import "E:/workspace/yingsha/admin/node_modules/element-plus/theme-chalk/el-table.css";
import "E:/Workspace/yingsa/admin/node_modules/element-plus/theme-chalk/el-table.css";
//# sourceMappingURL=element-plus_es_components_table_style_css.js.map

View File

@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../element-plus/es/components/table/style/css.mjs"],
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-table.css';\nimport '../../checkbox/style/css.mjs';\nimport '../../tooltip/style/css.mjs';\nimport '../../scrollbar/style/css.mjs';\n//# sourceMappingURL=css.mjs.map\n"],
"sourcesContent": ["import '../../base/style/css.mjs';\r\nimport 'element-plus/theme-chalk/el-table.css';\r\nimport '../../checkbox/style/css.mjs';\r\nimport '../../tooltip/style/css.mjs';\r\nimport '../../scrollbar/style/css.mjs';\r\n//# sourceMappingURL=css.mjs.map\r\n"],
"mappings": ";;;;;;;AACA,OAAO;",
"names": []
}

View File

@ -1,3 +1,3 @@
import "./chunk-5KK3TTMN.js";
import "./chunk-IV6PSERC.js";
import "./chunk-DVSPEOSC.js";
import "./chunk-QPJ3ZUOF.js";
//# sourceMappingURL=element-plus_es_components_tag_style_css.js.map

View File

@ -1,11 +1,11 @@
import {
setupDevtoolsPlugin
} from "./chunk-YFT6OQ5R.js";
} from "./chunk-VID4RN2V.js";
import {
del,
isVue2,
set
} from "./chunk-HYZ2CRGS.js";
} from "./chunk-YAGW2SQC.js";
import {
computed,
effectScope,
@ -25,7 +25,7 @@ import {
toRefs,
unref,
watch
} from "./chunk-H2732BJL.js";
} from "./chunk-ELEEJBJQ.js";
import "./chunk-G3PMV62Z.js";
// node_modules/pinia/dist/pinia.mjs

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
import {
setupDevtoolsPlugin
} from "./chunk-YFT6OQ5R.js";
} from "./chunk-VID4RN2V.js";
import {
computed,
defineComponent,
@ -19,7 +19,7 @@ import {
unref,
watch,
watchEffect
} from "./chunk-H2732BJL.js";
} from "./chunk-ELEEJBJQ.js";
import "./chunk-G3PMV62Z.js";
// node_modules/vue-router/dist/devtools-EWN81iOl.mjs

File diff suppressed because one or more lines are too long

View File

@ -170,7 +170,7 @@ import {
withMemo,
withModifiers,
withScopeId
} from "./chunk-H2732BJL.js";
} from "./chunk-ELEEJBJQ.js";
import "./chunk-G3PMV62Z.js";
export {
BaseTransition,

565
admin/package-lock.json generated
View File

@ -9,6 +9,8 @@
"version": "1.0.0",
"dependencies": {
"@element-plus/icons-vue": "^2.3.1",
"@wangeditor/editor": "^5.1.23",
"@wangeditor/editor-for-vue": "^5.1.12",
"axios": "^1.6.2",
"dayjs": "^1.11.10",
"echarts": "^5.4.3",
@ -69,6 +71,15 @@
"node": ">=6.0.0"
}
},
"node_modules/@babel/runtime": {
"version": "7.28.6",
"resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.28.6.tgz",
"integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/types": {
"version": "7.28.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz",
@ -1254,6 +1265,12 @@
"win32"
]
},
"node_modules/@transloadit/prettier-bytes": {
"version": "0.0.7",
"resolved": "https://registry.npmmirror.com/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz",
"integrity": "sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==",
"license": "MIT"
},
"node_modules/@types/estree": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
@ -1261,6 +1278,12 @@
"dev": true,
"license": "MIT"
},
"node_modules/@types/event-emitter": {
"version": "0.3.5",
"resolved": "https://registry.npmmirror.com/@types/event-emitter/-/event-emitter-0.3.5.tgz",
"integrity": "sha512-zx2/Gg0Eg7gwEiOIIh5w9TrhKKTeQh7CPCOPNc0el4pLSwzebA8SmnHwZs2dWlLONvyulykSwGSQxQHLhjGLvQ==",
"license": "MIT"
},
"node_modules/@types/lodash": {
"version": "4.17.23",
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.23.tgz",
@ -1272,6 +1295,7 @@
"resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz",
"integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@types/lodash": "*"
}
@ -1282,6 +1306,63 @@
"integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==",
"license": "MIT"
},
"node_modules/@uppy/companion-client": {
"version": "2.2.2",
"resolved": "https://registry.npmmirror.com/@uppy/companion-client/-/companion-client-2.2.2.tgz",
"integrity": "sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==",
"license": "MIT",
"dependencies": {
"@uppy/utils": "^4.1.2",
"namespace-emitter": "^2.0.1"
}
},
"node_modules/@uppy/core": {
"version": "2.3.4",
"resolved": "https://registry.npmmirror.com/@uppy/core/-/core-2.3.4.tgz",
"integrity": "sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@transloadit/prettier-bytes": "0.0.7",
"@uppy/store-default": "^2.1.1",
"@uppy/utils": "^4.1.3",
"lodash.throttle": "^4.1.1",
"mime-match": "^1.0.2",
"namespace-emitter": "^2.0.1",
"nanoid": "^3.1.25",
"preact": "^10.5.13"
}
},
"node_modules/@uppy/store-default": {
"version": "2.1.1",
"resolved": "https://registry.npmmirror.com/@uppy/store-default/-/store-default-2.1.1.tgz",
"integrity": "sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ==",
"license": "MIT"
},
"node_modules/@uppy/utils": {
"version": "4.1.3",
"resolved": "https://registry.npmmirror.com/@uppy/utils/-/utils-4.1.3.tgz",
"integrity": "sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==",
"license": "MIT",
"dependencies": {
"lodash.throttle": "^4.1.1"
}
},
"node_modules/@uppy/xhr-upload": {
"version": "2.1.3",
"resolved": "https://registry.npmmirror.com/@uppy/xhr-upload/-/xhr-upload-2.1.3.tgz",
"integrity": "sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@uppy/companion-client": "^2.2.2",
"@uppy/utils": "^4.1.2",
"nanoid": "^3.1.25"
},
"peerDependencies": {
"@uppy/core": "^2.3.3"
}
},
"node_modules/@vitejs/plugin-vue": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz",
@ -1438,6 +1519,168 @@
"url": "https://github.com/sponsors/antfu"
}
},
"node_modules/@wangeditor/basic-modules": {
"version": "1.1.7",
"resolved": "https://registry.npmmirror.com/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz",
"integrity": "sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==",
"license": "MIT",
"peer": true,
"dependencies": {
"is-url": "^1.2.4"
},
"peerDependencies": {
"@wangeditor/core": "1.x",
"dom7": "^3.0.0",
"lodash.throttle": "^4.1.1",
"nanoid": "^3.2.0",
"slate": "^0.72.0",
"snabbdom": "^3.1.0"
}
},
"node_modules/@wangeditor/code-highlight": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/@wangeditor/code-highlight/-/code-highlight-1.0.3.tgz",
"integrity": "sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==",
"license": "MIT",
"dependencies": {
"prismjs": "^1.23.0"
},
"peerDependencies": {
"@wangeditor/core": "1.x",
"dom7": "^3.0.0",
"slate": "^0.72.0",
"snabbdom": "^3.1.0"
}
},
"node_modules/@wangeditor/core": {
"version": "1.1.19",
"resolved": "https://registry.npmmirror.com/@wangeditor/core/-/core-1.1.19.tgz",
"integrity": "sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==",
"license": "MIT",
"peer": true,
"dependencies": {
"@types/event-emitter": "^0.3.3",
"event-emitter": "^0.3.5",
"html-void-elements": "^2.0.0",
"i18next": "^20.4.0",
"scroll-into-view-if-needed": "^2.2.28",
"slate-history": "^0.66.0"
},
"peerDependencies": {
"@uppy/core": "^2.1.1",
"@uppy/xhr-upload": "^2.0.3",
"dom7": "^3.0.0",
"is-hotkey": "^0.2.0",
"lodash.camelcase": "^4.3.0",
"lodash.clonedeep": "^4.5.0",
"lodash.debounce": "^4.0.8",
"lodash.foreach": "^4.5.0",
"lodash.isequal": "^4.5.0",
"lodash.throttle": "^4.1.1",
"lodash.toarray": "^4.4.0",
"nanoid": "^3.2.0",
"slate": "^0.72.0",
"snabbdom": "^3.1.0"
}
},
"node_modules/@wangeditor/editor": {
"version": "5.1.23",
"resolved": "https://registry.npmmirror.com/@wangeditor/editor/-/editor-5.1.23.tgz",
"integrity": "sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@uppy/core": "^2.1.1",
"@uppy/xhr-upload": "^2.0.3",
"@wangeditor/basic-modules": "^1.1.7",
"@wangeditor/code-highlight": "^1.0.3",
"@wangeditor/core": "^1.1.19",
"@wangeditor/list-module": "^1.0.5",
"@wangeditor/table-module": "^1.1.4",
"@wangeditor/upload-image-module": "^1.0.2",
"@wangeditor/video-module": "^1.1.4",
"dom7": "^3.0.0",
"is-hotkey": "^0.2.0",
"lodash.camelcase": "^4.3.0",
"lodash.clonedeep": "^4.5.0",
"lodash.debounce": "^4.0.8",
"lodash.foreach": "^4.5.0",
"lodash.isequal": "^4.5.0",
"lodash.throttle": "^4.1.1",
"lodash.toarray": "^4.4.0",
"nanoid": "^3.2.0",
"slate": "^0.72.0",
"snabbdom": "^3.1.0"
}
},
"node_modules/@wangeditor/editor-for-vue": {
"version": "5.1.12",
"resolved": "https://registry.npmmirror.com/@wangeditor/editor-for-vue/-/editor-for-vue-5.1.12.tgz",
"integrity": "sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==",
"license": "MIT",
"peerDependencies": {
"@wangeditor/editor": ">=5.1.0",
"vue": "^3.0.5"
}
},
"node_modules/@wangeditor/list-module": {
"version": "1.0.5",
"resolved": "https://registry.npmmirror.com/@wangeditor/list-module/-/list-module-1.0.5.tgz",
"integrity": "sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==",
"license": "MIT",
"peerDependencies": {
"@wangeditor/core": "1.x",
"dom7": "^3.0.0",
"slate": "^0.72.0",
"snabbdom": "^3.1.0"
}
},
"node_modules/@wangeditor/table-module": {
"version": "1.1.4",
"resolved": "https://registry.npmmirror.com/@wangeditor/table-module/-/table-module-1.1.4.tgz",
"integrity": "sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==",
"license": "MIT",
"peerDependencies": {
"@wangeditor/core": "1.x",
"dom7": "^3.0.0",
"lodash.isequal": "^4.5.0",
"lodash.throttle": "^4.1.1",
"nanoid": "^3.2.0",
"slate": "^0.72.0",
"snabbdom": "^3.1.0"
}
},
"node_modules/@wangeditor/upload-image-module": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/@wangeditor/upload-image-module/-/upload-image-module-1.0.2.tgz",
"integrity": "sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==",
"license": "MIT",
"peerDependencies": {
"@uppy/core": "^2.0.3",
"@uppy/xhr-upload": "^2.0.3",
"@wangeditor/basic-modules": "1.x",
"@wangeditor/core": "1.x",
"dom7": "^3.0.0",
"lodash.foreach": "^4.5.0",
"slate": "^0.72.0",
"snabbdom": "^3.1.0"
}
},
"node_modules/@wangeditor/video-module": {
"version": "1.1.4",
"resolved": "https://registry.npmmirror.com/@wangeditor/video-module/-/video-module-1.1.4.tgz",
"integrity": "sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==",
"license": "MIT",
"peerDependencies": {
"@uppy/core": "^2.1.4",
"@uppy/xhr-upload": "^2.0.7",
"@wangeditor/core": "1.x",
"dom7": "^3.0.0",
"nanoid": "^3.2.0",
"slate": "^0.72.0",
"snabbdom": "^3.1.0"
}
},
"node_modules/acorn": {
"version": "8.15.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
@ -1647,6 +1890,12 @@
"node": ">= 0.8"
}
},
"node_modules/compute-scroll-into-view": {
"version": "1.0.20",
"resolved": "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz",
"integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==",
"license": "MIT"
},
"node_modules/confbox": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz",
@ -1660,6 +1909,19 @@
"integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
"license": "MIT"
},
"node_modules/d": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/d/-/d-1.0.2.tgz",
"integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
"license": "ISC",
"dependencies": {
"es5-ext": "^0.10.64",
"type": "^2.7.2"
},
"engines": {
"node": ">=0.12"
}
},
"node_modules/dayjs": {
"version": "1.11.19",
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz",
@ -1719,6 +1981,16 @@
"integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==",
"license": "MIT"
},
"node_modules/dom7": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/dom7/-/dom7-3.0.0.tgz",
"integrity": "sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==",
"license": "MIT",
"peer": true,
"dependencies": {
"ssr-window": "^3.0.0-alpha.1"
}
},
"node_modules/dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
@ -1831,6 +2103,46 @@
"node": ">= 0.4"
}
},
"node_modules/es5-ext": {
"version": "0.10.64",
"resolved": "https://registry.npmmirror.com/es5-ext/-/es5-ext-0.10.64.tgz",
"integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
"hasInstallScript": true,
"license": "ISC",
"dependencies": {
"es6-iterator": "^2.0.3",
"es6-symbol": "^3.1.3",
"esniff": "^2.0.1",
"next-tick": "^1.1.0"
},
"engines": {
"node": ">=0.10"
}
},
"node_modules/es6-iterator": {
"version": "2.0.3",
"resolved": "https://registry.npmmirror.com/es6-iterator/-/es6-iterator-2.0.3.tgz",
"integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
"license": "MIT",
"dependencies": {
"d": "1",
"es5-ext": "^0.10.35",
"es6-symbol": "^3.1.1"
}
},
"node_modules/es6-symbol": {
"version": "3.1.4",
"resolved": "https://registry.npmmirror.com/es6-symbol/-/es6-symbol-3.1.4.tgz",
"integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==",
"license": "ISC",
"dependencies": {
"d": "^1.0.2",
"ext": "^1.7.0"
},
"engines": {
"node": ">=0.12"
}
},
"node_modules/esbuild": {
"version": "0.21.5",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
@ -1883,12 +2195,37 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/esniff": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/esniff/-/esniff-2.0.1.tgz",
"integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
"license": "ISC",
"dependencies": {
"d": "^1.0.1",
"es5-ext": "^0.10.62",
"event-emitter": "^0.3.5",
"type": "^2.7.2"
},
"engines": {
"node": ">=0.10"
}
},
"node_modules/estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"license": "MIT"
},
"node_modules/event-emitter": {
"version": "0.3.5",
"resolved": "https://registry.npmmirror.com/event-emitter/-/event-emitter-0.3.5.tgz",
"integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
"license": "MIT",
"dependencies": {
"d": "1",
"es5-ext": "~0.10.14"
}
},
"node_modules/exsolve": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz",
@ -1896,6 +2233,15 @@
"dev": true,
"license": "MIT"
},
"node_modules/ext": {
"version": "1.7.0",
"resolved": "https://registry.npmmirror.com/ext/-/ext-1.7.0.tgz",
"integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
"license": "ISC",
"dependencies": {
"type": "^2.7.2"
}
},
"node_modules/fast-glob": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
@ -2119,6 +2465,35 @@
"node": ">= 0.4"
}
},
"node_modules/html-void-elements": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/html-void-elements/-/html-void-elements-2.0.1.tgz",
"integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==",
"license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/i18next": {
"version": "20.6.1",
"resolved": "https://registry.npmmirror.com/i18next/-/i18next-20.6.1.tgz",
"integrity": "sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.12.0"
}
},
"node_modules/immer": {
"version": "9.0.21",
"resolved": "https://registry.npmmirror.com/immer/-/immer-9.0.21.tgz",
"integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==",
"license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/immer"
}
},
"node_modules/immutable": {
"version": "5.1.4",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.4.tgz",
@ -2187,6 +2562,13 @@
"node": ">=0.10.0"
}
},
"node_modules/is-hotkey": {
"version": "0.2.0",
"resolved": "https://registry.npmmirror.com/is-hotkey/-/is-hotkey-0.2.0.tgz",
"integrity": "sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==",
"license": "MIT",
"peer": true
},
"node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
@ -2197,6 +2579,21 @@
"node": ">=0.12.0"
}
},
"node_modules/is-plain-object": {
"version": "5.0.0",
"resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz",
"integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-url": {
"version": "1.2.4",
"resolved": "https://registry.npmmirror.com/is-url/-/is-url-1.2.4.tgz",
"integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==",
"license": "MIT"
},
"node_modules/js-tokens": {
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz",
@ -2237,13 +2634,15 @@
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"license": "MIT"
"license": "MIT",
"peer": true
},
"node_modules/lodash-es": {
"version": "4.17.22",
"resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.22.tgz",
"integrity": "sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q==",
"license": "MIT"
"license": "MIT",
"peer": true
},
"node_modules/lodash-unified": {
"version": "1.0.3",
@ -2256,6 +2655,56 @@
"lodash-es": "*"
}
},
"node_modules/lodash.camelcase": {
"version": "4.3.0",
"resolved": "https://registry.npmmirror.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
"integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
"license": "MIT",
"peer": true
},
"node_modules/lodash.clonedeep": {
"version": "4.5.0",
"resolved": "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
"integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
"license": "MIT",
"peer": true
},
"node_modules/lodash.debounce": {
"version": "4.0.8",
"resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
"integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
"license": "MIT",
"peer": true
},
"node_modules/lodash.foreach": {
"version": "4.5.0",
"resolved": "https://registry.npmmirror.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
"integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==",
"license": "MIT",
"peer": true
},
"node_modules/lodash.isequal": {
"version": "4.5.0",
"resolved": "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
"integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==",
"deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.",
"license": "MIT",
"peer": true
},
"node_modules/lodash.throttle": {
"version": "4.1.1",
"resolved": "https://registry.npmmirror.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
"integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==",
"license": "MIT",
"peer": true
},
"node_modules/lodash.toarray": {
"version": "4.4.0",
"resolved": "https://registry.npmmirror.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
"integrity": "sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==",
"license": "MIT",
"peer": true
},
"node_modules/magic-string": {
"version": "0.30.21",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
@ -2326,6 +2775,15 @@
"node": ">= 0.6"
}
},
"node_modules/mime-match": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/mime-match/-/mime-match-1.0.2.tgz",
"integrity": "sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==",
"license": "ISC",
"dependencies": {
"wildcard": "^1.1.0"
}
},
"node_modules/mime-types": {
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
@ -2374,6 +2832,12 @@
"dev": true,
"license": "MIT"
},
"node_modules/namespace-emitter": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/namespace-emitter/-/namespace-emitter-2.0.1.tgz",
"integrity": "sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==",
"license": "MIT"
},
"node_modules/nanoid": {
"version": "3.3.11",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
@ -2385,6 +2849,7 @@
}
],
"license": "MIT",
"peer": true,
"bin": {
"nanoid": "bin/nanoid.cjs"
},
@ -2392,6 +2857,12 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/next-tick": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/next-tick/-/next-tick-1.1.0.tgz",
"integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
"license": "ISC"
},
"node_modules/node-addon-api": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
@ -2565,6 +3036,25 @@
"node": "^10 || ^12 || >=14"
}
},
"node_modules/preact": {
"version": "10.28.3",
"resolved": "https://registry.npmmirror.com/preact/-/preact-10.28.3.tgz",
"integrity": "sha512-tCmoRkPQLpBeWzpmbhryairGnhW9tKV6c6gr/w+RhoRoKEJwsjzipwp//1oCpGPOchvSLaAPlpcJi9MwMmoPyA==",
"license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/preact"
}
},
"node_modules/prismjs": {
"version": "1.30.0",
"resolved": "https://registry.npmmirror.com/prismjs/-/prismjs-1.30.0.tgz",
"integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==",
"license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
@ -2693,6 +3183,7 @@
"integrity": "sha512-PggGy4dhwx5qaW+CKBilA/98Ql9keyfnb7lh4SR6shQ91QQQi1ORJ1v4UinkdP2i87OBs9AQFooQylcrrRfIcg==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@types/estree": "1.0.8"
},
@ -2762,6 +3253,7 @@
"integrity": "sha512-y5LWb0IlbO4e97Zr7c3mlpabcbBtS+ieiZ9iwDooShpFKWXf62zz5pEPdwrLYm+Bxn1fnbwFGzHuCLSA9tBmrw==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"chokidar": "^4.0.0",
"immutable": "^5.0.2",
@ -2777,6 +3269,15 @@
"@parcel/watcher": "^2.4.1"
}
},
"node_modules/scroll-into-view-if-needed": {
"version": "2.2.31",
"resolved": "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz",
"integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==",
"license": "MIT",
"dependencies": {
"compute-scroll-into-view": "^1.0.20"
}
},
"node_modules/scule": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz",
@ -2790,6 +3291,40 @@
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
"license": "ISC"
},
"node_modules/slate": {
"version": "0.72.8",
"resolved": "https://registry.npmmirror.com/slate/-/slate-0.72.8.tgz",
"integrity": "sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==",
"license": "MIT",
"peer": true,
"dependencies": {
"immer": "^9.0.6",
"is-plain-object": "^5.0.0",
"tiny-warning": "^1.0.3"
}
},
"node_modules/slate-history": {
"version": "0.66.0",
"resolved": "https://registry.npmmirror.com/slate-history/-/slate-history-0.66.0.tgz",
"integrity": "sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==",
"license": "MIT",
"dependencies": {
"is-plain-object": "^5.0.0"
},
"peerDependencies": {
"slate": ">=0.65.3"
}
},
"node_modules/snabbdom": {
"version": "3.6.3",
"resolved": "https://registry.npmmirror.com/snabbdom/-/snabbdom-3.6.3.tgz",
"integrity": "sha512-W2lHLLw2qR2Vv0DcMmcxXqcfdBaIcoN+y/86SmHv8fn4DazEQSH6KN3TjZcWvwujW56OHiiirsbHWZb4vx/0fg==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=12.17.0"
}
},
"node_modules/source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
@ -2799,6 +3334,12 @@
"node": ">=0.10.0"
}
},
"node_modules/ssr-window": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-3.0.0.tgz",
"integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==",
"license": "MIT"
},
"node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
@ -2851,6 +3392,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/tiny-warning": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/tiny-warning/-/tiny-warning-1.0.3.tgz",
"integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==",
"license": "MIT"
},
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@ -2870,6 +3417,12 @@
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==",
"license": "0BSD"
},
"node_modules/type": {
"version": "2.7.3",
"resolved": "https://registry.npmmirror.com/type/-/type-2.7.3.tgz",
"integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==",
"license": "ISC"
},
"node_modules/ufo": {
"version": "1.6.3",
"resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz",
@ -3104,6 +3657,7 @@
"integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"esbuild": "^0.21.3",
"postcss": "^8.4.43",
@ -3163,6 +3717,7 @@
"resolved": "https://registry.npmjs.org/vue/-/vue-3.5.27.tgz",
"integrity": "sha512-aJ/UtoEyFySPBGarREmN4z6qNKpbEguYHMmXSiOGk69czc+zhs0NF6tEFrY8TZKAl8N/LYAkd4JHVd5E/AsSmw==",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/compiler-dom": "3.5.27",
"@vue/compiler-sfc": "3.5.27",
@ -3233,6 +3788,12 @@
"integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==",
"license": "ISC"
},
"node_modules/wildcard": {
"version": "1.1.2",
"resolved": "https://registry.npmmirror.com/wildcard/-/wildcard-1.1.2.tgz",
"integrity": "sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==",
"license": "MIT"
},
"node_modules/wrap-ansi": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",

View File

@ -10,6 +10,8 @@
},
"dependencies": {
"@element-plus/icons-vue": "^2.3.1",
"@wangeditor/editor": "^5.1.23",
"@wangeditor/editor-for-vue": "^5.1.12",
"axios": "^1.6.2",
"dayjs": "^1.11.10",
"echarts": "^5.4.3",

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 20 KiB

BIN
admin/public/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

View File

@ -71,6 +71,12 @@ export const getPointOrders = params => request.get('/admin/point-orders', { par
export const verifyOrder = id => request.post(`/admin/point-orders/${id}/verify`)
export const verifyByCode = data => request.post('/admin/point-orders/verify-by-code', data)
// === 图文内容管理 ===
export const getArticles = params => request.get('/admin/articles', { params })
export const createArticle = data => request.post('/admin/articles', data)
export const updateArticle = (id, data) => request.put(`/admin/articles/${id}`, data)
export const deleteArticle = id => request.delete(`/admin/articles/${id}`)
// === 文件上传 ===
export const uploadImage = file => {
const formData = new FormData()

View File

@ -3,7 +3,7 @@
<!-- 侧边栏 -->
<el-aside :width="isCollapse ? '64px' : '220px'" class="sidebar">
<div class="logo">
<img src="/favicon.svg" alt="logo" class="logo-icon" />
<img src="/logo.png" alt="logo" class="logo-icon" />
<span v-show="!isCollapse" class="logo-text">英飒俱乐部</span>
</div>

View File

@ -67,6 +67,12 @@ const routes = [
component: () => import("@/views/points/orders.vue"),
meta: { title: "兑换订单", icon: "List" },
},
{
path: "articles",
name: "Articles",
component: () => import("@/views/article/index.vue"),
meta: { title: "活动公告", icon: "Document", superAdmin: true },
},
{
path: "system/users",
name: "SystemUsers",

View File

@ -0,0 +1,445 @@
<template>
<div class="article-page">
<div class="page-card">
<div class="page-header">
<h2>活动公告管理</h2>
<el-button type="primary" @click="handleAdd">
<el-icon><Plus /></el-icon>
新增图文
</el-button>
</div>
<!-- 筛选区 -->
<div class="filter-bar">
<el-input
v-model="query.keyword"
placeholder="按标题搜索"
clearable
class="filter-item"
@keyup.enter="handleSearch"
/>
<el-select
v-if="userStore.isSuperAdmin"
v-model="query.store_id"
placeholder="门店"
clearable
class="filter-item"
>
<el-option
v-for="s in stores"
:key="s.id"
:label="s.name"
:value="s.id"
/>
</el-select>
<el-select
v-model="query.category"
placeholder="分类"
clearable
class="filter-item"
>
<el-option label="比赛规则" value="rules" />
<el-option label="活动公告" value="notice" />
</el-select>
<el-select
v-model="query.status"
placeholder="状态"
clearable
class="filter-item"
>
<el-option label="草稿" :value="0" />
<el-option label="已发布" :value="1" />
</el-select>
<el-button type="primary" @click="handleSearch">查询</el-button>
<el-button @click="handleReset">重置</el-button>
</div>
<!-- 表格 -->
<el-table :data="tableData" v-loading="loading" stripe>
<el-table-column prop="id" label="ID" width="80" />
<el-table-column prop="title" label="标题" min-width="200" show-overflow-tooltip />
<el-table-column label="分类" width="120">
<template #default="{ row }">
<el-tag v-if="row.category === 'rules'" type="success" effect="light">
比赛规则
</el-tag>
<el-tag v-else-if="row.category === 'notice'" type="warning" effect="light">
公告
</el-tag>
<span v-else></span>
</template>
</el-table-column>
<el-table-column label="置顶" width="90">
<template #default="{ row }">
<el-tag v-if="row.is_top === 1" type="warning">置顶</el-tag>
<span v-else></span>
</template>
</el-table-column>
<el-table-column label="状态" width="100">
<template #default="{ row }">
<el-tag :type="row.status === 1 ? 'success' : 'info'">
{{ row.status === 1 ? '已发布' : '草稿' }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="sort_order" label="排序" width="90" />
<el-table-column prop="created_at" label="创建时间" min-width="160">
<template #default="{ row }">
{{ formatTime(row.created_at) }}
</template>
</el-table-column>
<el-table-column label="操作" width="180" fixed="right">
<template #default="{ row }">
<div class="table-actions">
<el-button type="primary" link @click="handleEdit(row)">编辑</el-button>
<el-button type="danger" link @click="handleDelete(row)">删除</el-button>
</div>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<div class="pagination-container">
<el-pagination
v-model:current-page="pagination.page"
v-model:page-size="pagination.pageSize"
:total="pagination.total"
:page-sizes="[10, 20, 50]"
layout="total, sizes, prev, pager, next, jumper"
@size-change="fetchData"
@current-change="fetchData"
/>
</div>
</div>
<!-- 编辑弹窗 -->
<el-dialog
v-model="showEditDialog"
:title="editForm.id ? '编辑图文' : '新增图文'"
width="900px"
top="5vh"
>
<el-form
ref="editFormRef"
:model="editForm"
:rules="editRules"
label-width="90px"
class="edit-form"
>
<el-form-item label="标题" prop="title">
<el-input v-model="editForm.title" placeholder="请输入标题" />
</el-form-item>
<el-form-item v-if="userStore.isSuperAdmin" label="门店">
<el-select v-model="editForm.store_id" placeholder="请选择门店" clearable>
<el-option
v-for="s in stores"
:key="s.id"
:label="s.name"
:value="s.id"
/>
</el-select>
</el-form-item>
<el-form-item label="分类" prop="category">
<el-select v-model="editForm.category" placeholder="请选择分类" clearable>
<el-option label="比赛规则" value="rules" />
<el-option label="活动公告" value="notice" />
</el-select>
</el-form-item>
<el-form-item label="摘要">
<el-input
v-model="editForm.summary"
type="textarea"
:rows="3"
maxlength="200"
show-word-limit
placeholder="用于列表展示的简短摘要,可选"
/>
</el-form-item>
<el-form-item label="排序值">
<el-input-number v-model="editForm.sort_order" :min="0" />
<span class="form-tip">数值越大越靠前</span>
</el-form-item>
<el-form-item label="置顶">
<el-switch v-model="editForm.is_top" :active-value="1" :inactive-value="0" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="editForm.status">
<el-radio :value="1">已发布</el-radio>
<el-radio :value="0">草稿</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="内容" prop="content_html">
<div class="editor-wrapper">
<Toolbar
:editor="editorRef"
:defaultConfig="toolbarConfig"
mode="default"
class="editor-toolbar"
/>
<Editor
v-model="editForm.content_html"
:defaultConfig="editorConfig"
mode="default"
class="editor-content"
@onCreated="handleEditorCreated"
/>
</div>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="showEditDialog = false">取消</el-button>
<el-button type="primary" @click="handleSave">保存</el-button>
</template>
</el-dialog>
</div>
</template>
<script setup>
import { ref, onMounted, shallowRef, onBeforeUnmount } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { Plus } from '@element-plus/icons-vue'
import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
import '@wangeditor/editor/dist/css/style.css'
import dayjs from 'dayjs'
import { useUserStore } from '@/stores/user'
import { getArticles, createArticle, updateArticle, deleteArticle, getStores } from '@/api/admin'
const userStore = useUserStore()
const loading = ref(false)
const tableData = ref([])
const pagination = ref({ page: 1, pageSize: 20, total: 0 })
const query = ref({
keyword: '',
category: '',
status: '',
store_id: '',
})
const showEditDialog = ref(false)
const editFormRef = ref()
const editForm = ref({
id: null,
title: '',
category: '',
summary: '',
sort_order: 0,
status: 1,
content_html: '',
is_top: 0,
store_id: '',
})
const stores = ref([])
const editRules = {
title: [{ required: true, message: '请输入标题', trigger: 'blur' }],
content_html: [{ required: true, message: '请输入内容', trigger: 'blur' }],
}
//
const editorRef = shallowRef()
const toolbarConfig = {}
const editorConfig = {
placeholder: '请输入图文内容,可直接粘贴富文本',
}
const handleEditorCreated = (editor) => {
editorRef.value = editor
}
onBeforeUnmount(() => {
const editor = editorRef.value
if (editor == null) return
editor.destroy()
})
const formatTime = (time) => {
if (!time) return ''
return dayjs(time).format('YYYY-MM-DD HH:mm')
}
const fetchStores = async () => {
if (userStore.isSuperAdmin) {
const res = await getStores({ pageSize: 200 })
stores.value = res.data.list || []
}
}
const fetchData = async () => {
loading.value = true
try {
const params = {
page: pagination.value.page,
pageSize: pagination.value.pageSize,
}
if (query.value.keyword) params.keyword = query.value.keyword
if (query.value.category) params.category = query.value.category
if (query.value.status !== '' && query.value.status !== null && query.value.status !== undefined) {
params.status = query.value.status
}
if (userStore.isSuperAdmin && query.value.store_id) {
params.store_id = query.value.store_id
}
const res = await getArticles(params)
tableData.value = res.data.list || []
pagination.value.total = res.data.pagination.total || 0
} finally {
loading.value = false
}
}
const handleSearch = () => {
pagination.value.page = 1
fetchData()
}
const handleReset = () => {
query.value = {
keyword: '',
category: '',
status: '',
store_id: '',
}
pagination.value.page = 1
fetchData()
}
const handleAdd = () => {
editForm.value = {
id: null,
title: '',
category: 'notice',
summary: '',
sort_order: 0,
status: 1,
content_html: '',
is_top: 0,
store_id: userStore.isSuperAdmin ? '' : userStore.userInfo?.storeId || '',
}
showEditDialog.value = true
}
const handleEdit = (row) => {
editForm.value = {
id: row.id,
title: row.title,
category: row.category || '',
summary: row.summary || '',
sort_order: row.sort_order || 0,
status: row.status ?? 1,
content_html: row.content_html || '',
is_top: row.is_top ?? 0,
store_id: row.store_id || row.storeId || '',
}
showEditDialog.value = true
}
const handleSave = async () => {
await editFormRef.value?.validate()
if (userStore.isSuperAdmin && !editForm.value.store_id) {
ElMessage.error('请选择门店')
return
}
const payload = { ...editForm.value }
if (payload.id) {
await updateArticle(payload.id, payload)
ElMessage.success('更新成功')
} else {
await createArticle(payload)
ElMessage.success('创建成功')
}
showEditDialog.value = false
fetchData()
}
const handleDelete = (row) => {
ElMessageBox.confirm('确定要删除该图文吗?', '提示', {
type: 'warning',
}).then(async () => {
await deleteArticle(row.id)
ElMessage.success('删除成功')
fetchData()
})
}
onMounted(() => {
fetchStores()
fetchData()
})
</script>
<style lang="scss" scoped>
.article-page {
.page-card {
background: #fff;
padding: 20px;
border-radius: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
}
.page-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 16px;
h2 {
margin: 0;
font-size: 20px;
font-weight: 600;
}
}
.filter-bar {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 12px;
margin-bottom: 16px;
.filter-item {
width: 200px;
}
}
.pagination-container {
margin-top: 16px;
text-align: right;
}
.table-actions {
display: flex;
gap: 8px;
}
.edit-form {
.editor-wrapper {
border: 1px solid #e5e7eb;
border-radius: 8px;
overflow: hidden;
.editor-toolbar {
border-bottom: 1px solid #e5e7eb;
}
.editor-content {
min-height: 320px;
max-height: 520px;
overflow-y: auto;
padding: 8px 12px;
}
}
}
.form-tip {
margin-left: 12px;
color: var(--text-secondary);
font-size: 12px;
}
}
</style>

View File

@ -529,7 +529,7 @@ const handleConfirmEnter = (e) => {
//
const handleSearchUsers = async (queryString, cb) => {
if (!queryString || queryString.trim().length < 2) {
if (!queryString || queryString.trim().length < 1) {
cb([])
return
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 175 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 20 KiB

View File

@ -413,6 +413,30 @@ App({
showCancel: false,
});
break;
case "ranking_game_updated":
// 排位赛比分/匹配更新:刷新当前排位赛详情页
try {
const pages3 = getCurrentPages();
const currentPage3 = pages3[pages3.length - 1];
if (
currentPage3 &&
currentPage3.route === "pages/match/ranking/index"
) {
const targetCode = data.data && data.data.matchCode;
if (
!targetCode ||
!currentPage3.data ||
currentPage3.data.matchCode === targetCode
) {
if (typeof currentPage3.fetchMatchDetail === "function") {
currentPage3.fetchMatchDetail();
}
}
}
} catch (e) {
console.error("处理 ranking_game_updated 消息失败:", e);
}
break;
}
},

View File

@ -7,6 +7,9 @@
"pages/match/challenge-detail/index",
"pages/match/ranking/index",
"pages/match/history/index",
"pages/match/recent/index",
"pages/article/list/index",
"pages/article/detail/index",
"pages/points/mall/index",
"pages/points/records/index",
"pages/points/order/index",

View File

@ -0,0 +1,53 @@
const app = getApp();
const util = require("../../../utils/util");
Page({
data: {
id: null,
article: {
title: "",
contentHtml: "",
timeText: "",
categoryName: "",
},
},
onLoad(options) {
const id = options.id;
if (!id) {
wx.showToast({ title: "参数错误", icon: "none" });
return;
}
this.setData({ id });
this.fetchDetail();
},
async fetchDetail() {
try {
const res = await app.request(`/api/article/${this.data.id}`);
const data = res.data || {};
const categoryName =
data.category === "rules"
? "比赛规则"
: data.category === "notice"
? "公告"
: "";
this.setData({
article: {
title: data.title || "",
contentHtml: data.contentHtml || "",
timeText: data.createdAt ? util.formatDate(data.createdAt) : "",
categoryName,
},
});
if (data.title) {
wx.setNavigationBarTitle({ title: data.title });
}
} catch (e) {
console.error("获取文章详情失败:", e);
wx.showToast({ title: "内容加载失败", icon: "none" });
}
},
});

View File

@ -0,0 +1,3 @@
{
"navigationBarTitleText": "图文详情"
}

View File

@ -0,0 +1,17 @@
<view class="page">
<view class="article-header">
<text class="title">{{article.title}}</text>
<view class="meta">
<text class="time" wx:if="{{article.timeText}}">{{article.timeText}}</text>
<text class="dot" wx:if="{{article.timeText && article.categoryName}}">·</text>
<text class="category" wx:if="{{article.categoryName}}">{{article.categoryName}}</text>
</view>
</view>
<scroll-view scroll-y="true" class="content-scroll">
<view class="article-content">
<rich-text nodes="{{article.contentHtml}}"></rich-text>
</view>
</scroll-view>
</view>

View File

@ -0,0 +1,57 @@
.page {
min-height: 100vh;
background: #f7f8fa;
display: flex;
flex-direction: column;
padding: 24rpx 24rpx 40rpx;
box-sizing: border-box;
}
.article-header {
padding-bottom: 16rpx;
}
.title {
font-size: 34rpx;
font-weight: 600;
color: #111827;
line-height: 1.4;
}
.meta {
margin-top: 10rpx;
display: flex;
align-items: center;
font-size: 24rpx;
color: #9ca3af;
}
.dot {
margin: 0 8rpx;
}
.category {
padding: 2rpx 10rpx;
border-radius: 999rpx;
background: rgba(37, 99, 235, 0.06);
color: #2563eb;
}
.content-scroll {
flex: 1;
margin-top: 12rpx;
}
.article-content {
padding: 20rpx;
border-radius: 18rpx;
background: #ffffff;
box-shadow: 0 6rpx 16rpx rgba(15, 23, 42, 0.04);
}
.article-content rich-text {
font-size: 28rpx;
color: #111827;
line-height: 1.7;
}

View File

@ -0,0 +1,59 @@
const app = getApp();
const util = require("../../../utils/util");
Page({
data: {
articles: [],
loading: false,
},
onLoad() {
this.fetchArticles();
},
onPullDownRefresh() {
this.fetchArticles().finally(() => {
wx.stopPullDownRefresh();
});
},
async fetchArticles() {
this.setData({ loading: true });
try {
// 活动公告:按当前门店只拉取公告分类最近 10 条
const storeId = app.globalData.currentStore && app.globalData.currentStore.storeId;
const data = { category: "notice", limit: 10 };
if (storeId) {
data.store_id = storeId;
}
const res = await app.request("/api/article", {
method: "GET",
data,
});
const raw = res.data || [];
const articles = raw.map((a) => ({
id: a.id,
title: a.title,
category: a.category,
categoryName: a.category === "notice" ? "活动公告" : "",
summary: a.summary,
timeText: a.createdAt ? util.formatDate(a.createdAt) : "",
isTop: !!a.isTop,
}));
this.setData({ articles });
} catch (e) {
console.error("获取文章列表失败:", e);
} finally {
this.setData({ loading: false });
}
},
goDetail(e) {
const id = e.currentTarget.dataset.id;
if (!id) return;
wx.navigateTo({
url: `/pages/article/detail/index?id=${id}`,
});
},
});

View File

@ -0,0 +1,4 @@
{
"navigationBarTitleText": "活动公告",
"enablePullDownRefresh": true
}

View File

@ -0,0 +1,45 @@
<view class="page">
<view class="header">
<view class="title">活动公告</view>
<view class="subtitle">最新活动与重要通知</view>
</view>
<view wx:if="{{loading}}" class="loading">
<text>加载中...</text>
</view>
<view wx:elif="{{articles.length === 0}}" class="empty">
<text class="empty-title">暂无内容</text>
<text class="empty-subtitle">敬请期待更多活动与公告</text>
</view>
<scroll-view wx:else scroll-y="true" class="list-scroll">
<view class="article-list">
<view
class="article-item"
wx:for="{{articles}}"
wx:key="id"
bindtap="goDetail"
data-id="{{item.id}}"
>
<view class="article-main">
<view class="article-title-row">
<view class="article-title">{{item.title}}</view>
<view class="article-top-badge" wx:if="{{item.isTop}}">置顶</view>
</view>
<view class="article-meta">
<view class="article-category" wx:if="{{item.categoryName}}">
{{item.categoryName}}
</view>
<view class="article-time">{{item.timeText}}</view>
</view>
<view class="article-summary" wx:if="{{item.summary}}">
{{item.summary}}
</view>
</view>
<view class="article-arrow"></view>
</view>
</view>
</scroll-view>
</view>

View File

@ -0,0 +1,122 @@
.page {
min-height: 100vh;
background: #f7f8fa;
padding: 24rpx 24rpx 40rpx;
box-sizing: border-box;
}
.header {
margin-bottom: 24rpx;
}
.title {
font-size: 32rpx;
font-weight: 600;
color: #111827;
}
.subtitle {
margin-top: 8rpx;
font-size: 24rpx;
color: #6b7280;
}
.loading,
.empty {
margin-top: 120rpx;
text-align: center;
color: #9ca3af;
font-size: 26rpx;
}
.empty-title {
font-size: 28rpx;
color: #4b5563;
}
.empty-subtitle {
margin-top: 8rpx;
font-size: 24rpx;
color: #9ca3af;
}
.list-scroll {
max-height: calc(100vh - 140rpx);
}
.article-list {
display: flex;
flex-direction: column;
gap: 16rpx;
}
.article-item {
display: flex;
align-items: center;
justify-content: space-between;
padding: 20rpx 24rpx;
border-radius: 18rpx;
background: #ffffff;
box-shadow: 0 6rpx 16rpx rgba(15, 23, 42, 0.04);
}
.article-main {
flex: 1;
min-width: 0;
}
.article-title {
font-size: 28rpx;
color: #111827;
font-weight: 600;
margin-bottom: 8rpx;
}
.article-title-row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 16rpx;
}
.article-top-badge {
padding: 4rpx 14rpx;
border-radius: 999rpx;
font-size: 20rpx;
color: #f97316;
background: rgba(249, 115, 22, 0.1);
white-space: nowrap;
}
.article-meta {
display: flex;
align-items: center;
gap: 12rpx;
margin-bottom: 6rpx;
}
.article-category {
padding: 4rpx 12rpx;
border-radius: 999rpx;
font-size: 20rpx;
color: #2563eb;
background: rgba(37, 99, 235, 0.06);
}
.article-time {
font-size: 22rpx;
color: #9ca3af;
}
.article-summary {
font-size: 24rpx;
color: #6b7280;
line-height: 1.4;
}
.article-arrow {
margin-left: 16rpx;
font-size: 40rpx;
color: #d1d5db;
}

View File

@ -4,6 +4,8 @@ Page({
data: {
matchId: null,
matchInfo: null,
challengerAvatarSrc: "/images/avatar-default.svg",
defenderAvatarSrc: "/images/avatar-default.svg",
myRole: null, // 'challenger' | 'defender' | null
canAccept: false,
canReject: false,
@ -126,7 +128,7 @@ Page({
const currentUser = app.globalData.userInfo
const isChallenger = currentUser && matchInfo.challenger &&
(matchInfo.challenger.userId == currentUser.id ||
(currentUser.phone && matchInfo.challenger.phone === currentUser.phone))
(currentUser.phone && matchInfo.challenger.phone === currentUser.phone))
// 如果不是挑战者,可能是被挑战者,显示按钮
if (!isChallenger) {
@ -179,13 +181,13 @@ Page({
if (currentUser) {
// 检查提交者是否是挑战者
if (matchInfo.challenger && game.submitBy == matchInfo.challenger.id &&
currentUser.id == matchInfo.challenger.userId) {
currentUser.id == matchInfo.challenger.userId) {
isSubmitter = true
console.log('当前用户是提交者通过challenger判断')
}
// 检查提交者是否是被挑战者
else if (matchInfo.defender && game.submitBy == matchInfo.defender.id &&
currentUser.id == matchInfo.defender.userId) {
currentUser.id == matchInfo.defender.userId) {
isSubmitter = true
console.log('当前用户是提交者通过defender判断')
}
@ -263,7 +265,7 @@ Page({
else if (game.status === 2 && game.submitBy) {
// 判断当前用户是否是提交者
const isSubmitter = (myRole === 'challenger' && matchInfo.challenger && game.submitBy == matchInfo.challenger.id) ||
(myRole === 'defender' && matchInfo.defender && game.submitBy == matchInfo.defender.id)
(myRole === 'defender' && matchInfo.defender && game.submitBy == matchInfo.defender.id)
if (!isSubmitter && game.confirmStatus === 0) {
canConfirmScore = true
@ -302,6 +304,8 @@ Page({
this.setData({
matchInfo,
challengerAvatarSrc: this.normalizeAvatarSrc(matchInfo?.challenger?.avatar),
defenderAvatarSrc: this.normalizeAvatarSrc(matchInfo?.defender?.avatar),
myRole,
canAccept,
canReject,
@ -331,6 +335,35 @@ Page({
}
},
normalizeAvatarSrc(avatar) {
const fallback = "/images/avatar-default.svg";
if (!avatar) return fallback;
if (typeof avatar !== "string") return fallback;
const a = avatar.trim();
if (!a) return fallback;
if (a === "null" || a === "undefined") return fallback;
// 已经是网络地址或小程序临时文件
if (/^https?:\/\//i.test(a) || a.startsWith("wxfile://")) return a;
// 服务端可能返回 /uploads/xxx 或 uploads/xxx 之类的相对路径
const baseUrl = app?.globalData?.baseUrl || "";
if (!baseUrl) return a; // 没有 baseUrl 时保持原值,让 binderror 兜底
if (a.startsWith("/")) return `${baseUrl}${a}`;
return `${baseUrl}/${a}`;
},
onAvatarError(e) {
const role = e?.currentTarget?.dataset?.role;
const fallback = "/images/avatar-default.svg";
if (role === "challenger") {
this.setData({ challengerAvatarSrc: fallback });
} else if (role === "defender") {
this.setData({ defenderAvatarSrc: fallback });
}
},
// 处理挑战请求从WebSocket调用
handleChallengeRequest(challengeData) {
// 如果当前页面是挑战赛详情且是同一个比赛,显示弹框

View File

@ -23,10 +23,19 @@
<view class="opponent-card" wx:if="{{matchInfo.challenger}}">
<view class="opponent-label">挑战者</view>
<view class="opponent-info">
<image class="opponent-avatar" src="{{matchInfo.challenger.avatar || '/images/avatar-default.svg'}}" mode="aspectFill"></image>
<image
class="opponent-avatar"
src="{{challengerAvatarSrc}}"
mode="aspectFill"
binderror="onAvatarError"
data-role="challenger"
></image>
<view class="opponent-details">
<text class="opponent-name">{{matchInfo.challenger.realName}}</text>
<text class="opponent-level">Lv{{matchInfo.challenger.level}} · 战力{{matchInfo.challenger.powerScore}}</text>
<view class="opponent-meta">
<text class="meta-tag meta-level">Lv{{matchInfo.challenger.level}}</text>
<text class="meta-tag meta-power">战力 {{matchInfo.challenger.powerScore}}</text>
</view>
</view>
</view>
</view>
@ -38,10 +47,19 @@
<view class="opponent-card" wx:if="{{matchInfo.defender}}">
<view class="opponent-label">被挑战者</view>
<view class="opponent-info">
<image class="opponent-avatar" src="{{matchInfo.defender.avatar || '/images/avatar-default.svg'}}" mode="aspectFill"></image>
<image
class="opponent-avatar"
src="{{defenderAvatarSrc}}"
mode="aspectFill"
binderror="onAvatarError"
data-role="defender"
></image>
<view class="opponent-details">
<text class="opponent-name">{{matchInfo.defender.realName}}</text>
<text class="opponent-level">Lv{{matchInfo.defender.level}} · 战力{{matchInfo.defender.powerScore}}</text>
<view class="opponent-meta">
<text class="meta-tag meta-level">Lv{{matchInfo.defender.level}}</text>
<text class="meta-tag meta-power">战力 {{matchInfo.defender.powerScore}}</text>
</view>
</view>
</view>
</view>

View File

@ -100,9 +100,34 @@
color: var(--text-primary);
}
.opponent-level {
font-size: 24rpx;
.opponent-meta {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 12rpx;
}
.meta-tag {
font-size: 22rpx;
line-height: 1;
padding: 8rpx 14rpx;
border-radius: 999rpx;
background: var(--bg-soft);
color: var(--text-secondary);
border: 2rpx solid var(--border-soft);
}
.meta-level {
background: rgba(93, 156, 236, 0.12);
color: rgba(45, 120, 210, 1);
border-color: rgba(93, 156, 236, 0.28);
font-weight: 600;
}
.meta-power {
background: rgba(245, 154, 35, 0.12);
color: rgba(210, 115, 0, 1);
border-color: rgba(245, 154, 35, 0.28);
}
.vs-divider {

View File

@ -1,4 +1,5 @@
const app = getApp();
const util = require("../../../utils/util");
Page({
data: {
@ -7,6 +8,7 @@ Page({
currentStore: null,
ongoingMatches: [], // 正在进行中的比赛
pendingGames: [], // 待确认的比赛
recentMatches: [], // 最近比赛用于预览前10场
},
onLoad() {
@ -57,6 +59,7 @@ Page({
if (app.globalData.ladderUser) {
this.fetchOngoingMatches();
this.fetchPendingGames();
this.fetchRecentMatches();
}
},
@ -115,6 +118,53 @@ Page({
}
},
// 获取最近比赛近7天最多10场用于比赛页预览
async fetchRecentMatches() {
try {
const storeId = this.data.currentStore
? this.data.currentStore.storeId
: null;
const res = await app.request("/api/match/display-list", {
store_id: storeId,
days: 7,
limit: 10,
});
const raw = res.data || [];
const recentMatches = raw.map((item) => {
const time = item.startTime || item.createdAt || item.endTime || null;
const stageName = item.stageName || "";
const statusName = item.statusName || "";
const showStage = !!stageName && stageName !== statusName;
let statusType = "pending";
switch (item.status) {
case 1:
statusType = "ongoing";
break;
case 2:
statusType = "finished";
break;
case 3:
statusType = "cancelled";
break;
default:
statusType = "pending";
}
return Object.assign({}, item, {
timeText: time ? util.formatDate(time) : "",
stageName,
statusName,
showStage,
statusType,
});
});
this.setData({ recentMatches });
} catch (e) {
console.error("获取最近比赛失败:", e);
}
},
startChallenge() {
if (!this.data.ladderUser) {
wx.showToast({ title: "请先加入天梯系统", icon: "none" });
@ -259,6 +309,11 @@ Page({
wx.navigateTo({ url: "/pages/store/index" });
},
// 跳转到最近比赛列表页
goToRecentMatches() {
wx.navigateTo({ url: "/pages/match/recent/index" });
},
// 跳转到比赛详情
goToMatchDetail(e) {
const match = e.currentTarget.dataset.match;

View File

@ -73,7 +73,7 @@
</view>
<text class="scan-title">挑战赛</text>
<text class="scan-desc">1v1 对决</text>
<view class="scan-badge">权重 ×1.5</view>
<view class="scan-badge">不服就干</view>
</view>
<view class="scan-card ranking" bindtap="joinRankingMatch">
@ -86,12 +86,12 @@
</view>
</view>
<!-- 正在进行中的比赛 -->
<!-- 正在进行中的比赛(当前比赛信息) -->
<view class="ongoing-card animate-fadeInUp" style="animation-delay: 0.12s" wx:if="{{ongoingMatches.length > 0}}">
<view class="ongoing-header">
<view class="ongoing-header-left">
<image class="ongoing-icon-img" src="/images/icon-history.svg" mode="aspectFit"></image>
<text class="ongoing-title">进行中的比赛</text>
<text class="ongoing-title">当前比赛</text>
</view>
<view class="ongoing-count">{{ongoingMatches.length}}</view>
</view>
@ -151,6 +151,37 @@
</view>
</view>
<!-- 最近比赛近10场可进入更多 -->
<view class="recent-card animate-fadeInUp" style="animation-delay: 0.14s" wx:if="{{recentMatches.length > 0}}">
<view class="recent-header">
<view class="recent-header-left">
<image class="recent-icon-img" src="/images/icon-records.svg" mode="aspectFit"></image>
<text class="recent-title">最近比赛</text>
</view>
<view class="recent-actions" bindtap="goToRecentMatches">
<text class="recent-more-pill">最近7天</text>
</view>
</view>
<view class="recent-list">
<view class="recent-item" wx:for="{{recentMatches}}" wx:key="id" bindtap="goToMatchDetail" data-match="{{item}}">
<view class="recent-item-inner">
<view class="recent-line-1">
<text class="recent-name">{{item.name || (item.typeName + (item.matchCode || ''))}}</text>
<text class="recent-type-tag {{item.type === 1 ? 'challenge' : 'ranking'}}">{{item.typeName}}</text>
</view>
<view class="recent-line-2">
<text class="recent-store" wx:if="{{item.storeName}}">{{item.storeName}}</text>
<text class="recent-stage" wx:if="{{item.showStage}}">{{item.stageName}}</text>
<text class="recent-status status-{{item.statusType}}">{{item.statusName}}</text>
</view>
<view class="recent-line-3">
<text class="recent-time">{{item.timeText}}</text>
</view>
</view>
</view>
</view>
</view>
<!-- 待确认比赛 -->
<view class="pending-card animate-fadeInUp" style="animation-delay: 0.15s" wx:if="{{pendingGames.length > 0}}">
<view class="pending-header">

View File

@ -731,6 +731,149 @@
border: 2rpx solid rgba(255, 107, 53, 0.15);
}
/* 最近比赛 */
.recent-card {
margin-top: 24rpx;
margin-bottom: 24rpx;
padding: 24rpx;
border-radius: 20rpx;
background: #ffffff;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.04);
}
.recent-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 12rpx;
}
.recent-header-left {
display: flex;
align-items: center;
gap: 8rpx;
}
.recent-icon-img {
width: 32rpx;
height: 32rpx;
}
.recent-title {
font-size: 28rpx;
font-weight: 600;
color: var(--text-primary);
}
.recent-actions {
font-size: 24rpx;
color: var(--primary, #ff6b35);
}
.recent-more-pill {
padding: 8rpx 20rpx;
border-radius: 999rpx;
border: 2rpx solid rgba(255, 107, 53, 0.4);
color: #ff6b35;
background: rgba(255, 248, 243, 0.9);
font-size: 22rpx;
}
.recent-list {
display: flex;
flex-direction: column;
gap: 12rpx;
}
.recent-item {
border-radius: 16rpx;
background: #fafafa;
padding: 16rpx 18rpx;
box-shadow: 0 2rpx 6rpx rgba(0, 0, 0, 0.02);
}
.recent-item:last-child {
}
.recent-item-inner {
flex: 1;
}
.recent-line-1 {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 4rpx;
}
.recent-name {
font-size: 26rpx;
color: var(--text-primary);
max-width: 420rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.recent-type-tag {
font-size: 22rpx;
padding: 4rpx 12rpx;
border-radius: 999rpx;
background: rgba(25, 118, 210, 0.06);
color: #1565c0;
}
.recent-type-tag.challenge {
background: rgba(255, 152, 0, 0.08);
color: #e65100;
}
.recent-type-tag.ranking {
background: rgba(25, 118, 210, 0.08);
color: #1565c0;
}
.recent-line-2 {
display: flex;
align-items: center;
gap: 10rpx;
font-size: 22rpx;
color: var(--text-muted);
}
.recent-status {
font-weight: 500;
padding: 4rpx 10rpx;
border-radius: 16rpx;
font-size: 20rpx;
}
.status-pending {
background: rgba(255, 193, 7, 0.12);
color: #ff8f00;
}
.status-ongoing {
background: rgba(76, 175, 80, 0.12);
color: #2e7d32;
}
.status-finished {
background: rgba(158, 158, 158, 0.12);
color: #616161;
}
.status-cancelled {
background: rgba(244, 67, 54, 0.12);
color: #c62828;
}
.recent-line-3 {
font-size: 22rpx;
color: var(--text-muted);
margin-top: 4rpx;
}
.pending-header {
display: flex;
align-items: center;
@ -835,6 +978,7 @@
border-radius: 28rpx;
padding: 24rpx;
box-shadow: 0 8rpx 32rpx rgba(0, 0, 0, 0.06);
margin-top: 0;
}
.rules-header {

View File

@ -130,10 +130,12 @@ Page({
const myPlayer = res.data.players.find(p => p.ladderUserId == ladderUser.id)
this.setData({ myPlayer })
// 获取当前对局
if (myPlayer && myPlayer.status === 'playing') {
this.fetchCurrentGame()
}
// 不再根据本地 myPlayer.status 决定是否拉取当前对局
// 后端 /my-game 接口内部会负责:
// - 如果当前有对局:返回对手信息
// - 如果没有对局但我在 waiting尝试自动匹配并返回新对局
// - 否则返回 currentGame: null
this.fetchCurrentGame()
}
} catch (e) {
console.error('获取排位赛详情失败:', e)
@ -143,7 +145,22 @@ Page({
async fetchCurrentGame() {
try {
const res = await app.request(`/api/match/ranking/${this.data.matchCode}/my-game`)
this.setData({ currentGame: res.data.currentGame })
const newGame = res.data.currentGame || null
// 如果切换到了新的对局(或上一局结束变为 null重置本地输入框
const prevGameId = this.data.currentGame && this.data.currentGame.id
const newGameId = newGame && newGame.id
const gameChanged = prevGameId !== newGameId
if (gameChanged) {
this.setData({
currentGame: newGame,
myScoreInput: '',
opponentScoreInput: ''
})
} else {
this.setData({ currentGame: newGame })
}
} catch (e) {
console.error('获取当前对局失败:', e)
}

View File

@ -345,6 +345,13 @@
margin-bottom: 8rpx;
}
.opponent-meta {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 14rpx;
}
.game-actions {
margin-top: 24rpx;
padding-top: 24rpx;
@ -480,8 +487,8 @@
}
.level-tag {
padding: 4rpx 12rpx;
border-radius: 6rpx;
padding: 6rpx 14rpx;
border-radius: 8rpx;
font-size: 20rpx;
font-weight: 600;
}
@ -510,6 +517,7 @@
.opponent-power {
font-size: 24rpx;
color: var(--text-secondary);
letter-spacing: 0.5rpx;
}
/* 参赛选手卡片 */

View File

@ -0,0 +1,90 @@
const app = getApp();
const util = require("../../../utils/util");
Page({
data: {
list: [],
loading: false,
},
onLoad() {
this.fetchList();
},
onPullDownRefresh() {
this.fetchList().finally(() => {
wx.stopPullDownRefresh();
});
},
async fetchList() {
const currentStore = app.globalData.currentStore;
const storeId = currentStore ? currentStore.storeId : null;
this.setData({ loading: true });
try {
const res = await app.request("/api/match/display-list", {
store_id: storeId,
days: 7,
limit: 100,
});
const raw = res.data || [];
const list = raw.map((item) => {
const time = item.startTime || item.createdAt || item.endTime || null;
const stageName = item.stageName || "";
const statusName = item.statusName || "";
// 如果阶段名和状态名一样(例如都是“已结束”),只显示一次状态
const showStage = !!stageName && stageName !== statusName;
// 根据状态生成样式类型
let statusType = "pending";
switch (item.status) {
case 1:
statusType = "ongoing";
break;
case 2:
statusType = "finished";
break;
case 3:
statusType = "cancelled";
break;
default:
statusType = "pending";
}
return {
...item,
timeText: time ? util.formatDate(time) : "",
stageName,
statusName,
showStage,
statusType,
};
});
this.setData({ list });
} catch (e) {
console.error("获取最近比赛列表失败:", e);
} finally {
this.setData({ loading: false });
}
},
goDetail(e) {
const match = e.currentTarget.dataset.match;
if (!match) return;
if (match.type === 1) {
wx.navigateTo({
url: `/pages/match/challenge-detail/index?id=${match.id}`,
});
} else {
wx.navigateTo({
url: `/pages/match/ranking/index?code=${match.matchCode}`,
});
}
},
});

View File

@ -0,0 +1,6 @@
{
"usingComponents": {},
"navigationBarTitleText": "最近比赛",
"enablePullDownRefresh": true,
"backgroundTextStyle": "dark"
}

Some files were not shown because too many files have changed in this diff Show More