newadmin
This commit is contained in:
parent
9c7ea6ff0b
commit
b9043a562e
1
dist/assets/Edit.c6fc6979.js
vendored
1
dist/assets/Edit.c6fc6979.js
vendored
@ -1 +0,0 @@
|
||||
const e={};e.render=function(e,n){return" 编辑/新增 "};export{e as default};
|
||||
1
dist/assets/Index.ec83240c.css
vendored
1
dist/assets/Index.ec83240c.css
vendored
File diff suppressed because one or more lines are too long
1
dist/assets/List.8ea1b7ae.js
vendored
1
dist/assets/List.8ea1b7ae.js
vendored
@ -1 +0,0 @@
|
||||
const e={};e.render=function(e,n){return" 用户列表 "};export{e as default};
|
||||
6
dist/index.html
vendored
6
dist/index.html
vendored
@ -5,10 +5,10 @@
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Vite App</title>
|
||||
<script type="module" crossorigin src="/assets/index.09599c30.js"></script>
|
||||
<link rel="modulepreload" href="/assets/vendor.51cc00ea.js">
|
||||
<script type="module" crossorigin src="/assets/index.b524af77.js"></script>
|
||||
<link rel="modulepreload" href="/assets/vendor.7d62357a.js">
|
||||
<link rel="stylesheet" href="/assets/vendor.f9422048.css">
|
||||
<link rel="stylesheet" href="/assets/index.b7a6658c.css">
|
||||
<link rel="stylesheet" href="/assets/index.9ec6da49.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
||||
167
node_modules/.package-lock.json
generated
vendored
167
node_modules/.package-lock.json
generated
vendored
@ -99,6 +99,72 @@
|
||||
"integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@parcel/watcher": {
|
||||
"version": "2.5.1",
|
||||
"resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz",
|
||||
"integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"detect-libc": "^1.0.3",
|
||||
"is-glob": "^4.0.3",
|
||||
"micromatch": "^4.0.5",
|
||||
"node-addon-api": "^7.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/parcel"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@parcel/watcher-android-arm64": "2.5.1",
|
||||
"@parcel/watcher-darwin-arm64": "2.5.1",
|
||||
"@parcel/watcher-darwin-x64": "2.5.1",
|
||||
"@parcel/watcher-freebsd-x64": "2.5.1",
|
||||
"@parcel/watcher-linux-arm-glibc": "2.5.1",
|
||||
"@parcel/watcher-linux-arm-musl": "2.5.1",
|
||||
"@parcel/watcher-linux-arm64-glibc": "2.5.1",
|
||||
"@parcel/watcher-linux-arm64-musl": "2.5.1",
|
||||
"@parcel/watcher-linux-x64-glibc": "2.5.1",
|
||||
"@parcel/watcher-linux-x64-musl": "2.5.1",
|
||||
"@parcel/watcher-win32-arm64": "2.5.1",
|
||||
"@parcel/watcher-win32-ia32": "2.5.1",
|
||||
"@parcel/watcher-win32-x64": "2.5.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@parcel/watcher-win32-x64": {
|
||||
"version": "2.5.1",
|
||||
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz",
|
||||
"integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">= 10.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/parcel"
|
||||
}
|
||||
},
|
||||
"node_modules/@parcel/watcher/node_modules/node-addon-api": {
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
|
||||
"integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true
|
||||
},
|
||||
"node_modules/@popperjs/core": {
|
||||
"name": "@sxzz/popperjs-es",
|
||||
"version": "2.11.7",
|
||||
@ -624,6 +690,20 @@
|
||||
"node": ">=0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/detect-libc": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
|
||||
"integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"optional": true,
|
||||
"bin": {
|
||||
"detect-libc": "bin/detect-libc.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.10"
|
||||
}
|
||||
},
|
||||
"node_modules/dunder-proto": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
|
||||
@ -1112,6 +1192,13 @@
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/immutable": {
|
||||
"version": "5.1.3",
|
||||
"resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz",
|
||||
"integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/iota-array": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/iota-array/-/iota-array-1.0.0.tgz",
|
||||
@ -1311,6 +1398,35 @@
|
||||
"integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/micromatch": {
|
||||
"version": "4.0.8",
|
||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
|
||||
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"braces": "^3.0.3",
|
||||
"picomatch": "^2.3.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.6"
|
||||
}
|
||||
},
|
||||
"node_modules/micromatch/node_modules/picomatch": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
|
||||
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=8.6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/jonschlinkert"
|
||||
}
|
||||
},
|
||||
"node_modules/mime-db": {
|
||||
"version": "1.52.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
|
||||
@ -1761,6 +1877,57 @@
|
||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/sass": {
|
||||
"version": "1.90.0",
|
||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.90.0.tgz",
|
||||
"integrity": "sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"chokidar": "^4.0.0",
|
||||
"immutable": "^5.0.2",
|
||||
"source-map-js": ">=0.6.2 <2.0.0"
|
||||
},
|
||||
"bin": {
|
||||
"sass": "sass.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@parcel/watcher": "^2.4.1"
|
||||
}
|
||||
},
|
||||
"node_modules/sass/node_modules/chokidar": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
|
||||
"integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"readdirp": "^4.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 14.16.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://paulmillr.com/funding/"
|
||||
}
|
||||
},
|
||||
"node_modules/sass/node_modules/readdirp": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
|
||||
"integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 14.18.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "individual",
|
||||
"url": "https://paulmillr.com/funding/"
|
||||
}
|
||||
},
|
||||
"node_modules/scule": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz",
|
||||
|
||||
346
node_modules/.vite/_metadata.json
generated
vendored
346
node_modules/.vite/_metadata.json
generated
vendored
@ -1,225 +1,305 @@
|
||||
{
|
||||
"hash": "a6b4dd21",
|
||||
"browserHash": "706d718b",
|
||||
"hash": "ffb1b781",
|
||||
"browserHash": "cf11b848",
|
||||
"optimized": {
|
||||
"element-plus/es/components/loading/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_loading_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/loading/style/css.mjs",
|
||||
"element-plus/es/components/descriptions/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_descriptions_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/descriptions/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/date-picker/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_date-picker_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/date-picker/style/css.mjs",
|
||||
"element-plus/es/components/descriptions-item/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_descriptions-item_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/descriptions-item/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/locale/lang/zh-cn": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_locale_lang_zh-cn.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/locale/lang/zh-cn.mjs",
|
||||
"element-plus/es/components/message/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_message_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/message/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/dialog/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_dialog_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/dialog/style/css.mjs",
|
||||
"element-plus/es/components/empty/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_empty_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/empty/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/switch/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_switch_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/switch/style/css.mjs",
|
||||
"element-plus/es/components/tree/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_tree_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/tree/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/input-number/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_input-number_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/input-number/style/css.mjs",
|
||||
"element-plus/es/components/popconfirm/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_popconfirm_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/popconfirm/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/select/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_select_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/select/style/css.mjs",
|
||||
"element-plus/es/components/checkbox-group/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_checkbox-group_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/checkbox-group/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/option/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_option_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/option/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/pagination/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_pagination_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/pagination/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/table/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_table_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/table/style/css.mjs",
|
||||
"element-plus/es/components/cascader/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_cascader_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/cascader/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/button-group/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_button-group_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/button-group/style/css.mjs",
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_button-group_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/button-group/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/message-box/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_message-box_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/message-box/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/link/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_link_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/link/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/checkbox/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_checkbox_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/checkbox/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/upload/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_upload_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/upload/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/popover/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_popover_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/popover/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/image/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_image_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/image/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/date-picker/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_date-picker_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/date-picker/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/pagination/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_pagination_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/pagination/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/switch/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_switch_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/switch/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/tag/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_tag_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/tag/style/css.mjs",
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_tag_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/tag/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/table-column/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_table-column_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/table-column/style/css.mjs",
|
||||
"element-plus/es/components/select/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_select_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/select/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/card/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_card_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/card/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/col/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_col_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/col/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/tabs/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_tabs_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/tabs/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/tab-pane/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_tab-pane_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/tab-pane/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/form/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_form_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/form/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/button/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_button_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/button/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/form-item/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_form-item_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/form-item/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/input/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_input_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/input/style/css.mjs",
|
||||
"element-plus/es/components/option/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_option_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/option/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/divider/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_divider_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/divider/style/css.mjs",
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_divider_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/divider/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/tabs/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_tabs_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/tabs/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/tab-pane/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_tab-pane_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/tab-pane/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/loading/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_loading_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/loading/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/dialog/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_dialog_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/dialog/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/input-number/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_input-number_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/input-number/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/radio-group/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_radio-group_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/radio-group/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/radio/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_radio_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/radio/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/table/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_table_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/table/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/table-column/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_table-column_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/table-column/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/row/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_row_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/row/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/col/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_col_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/col/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/card/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_card_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/card/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/form/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_form_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/form/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/button/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_button_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/button/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/form-item/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_form-item_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/form-item/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/input/style/css": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_input_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/input/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/dropdown/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_dropdown_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/dropdown/style/css.mjs",
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_dropdown_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/dropdown/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/dropdown-menu/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_dropdown-menu_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/dropdown-menu/style/css.mjs",
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_dropdown-menu_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/dropdown-menu/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/dropdown-item/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_dropdown-item_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/dropdown-item/style/css.mjs",
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_dropdown-item_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/dropdown-item/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/avatar/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_avatar_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/avatar/style/css.mjs",
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_avatar_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/avatar/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/badge/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_badge_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/badge/style/css.mjs",
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_badge_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/badge/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/tooltip/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_tooltip_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/tooltip/style/css.mjs",
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_tooltip_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/tooltip/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/icon/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_icon_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/icon/style/css.mjs",
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_icon_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/icon/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/menu/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_menu_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/menu/style/css.mjs",
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_menu_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/menu/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/sub-menu/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_sub-menu_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/sub-menu/style/css.mjs",
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_sub-menu_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/sub-menu/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/menu-item/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_menu-item_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/menu-item/style/css.mjs",
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_menu-item_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/menu-item/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/index.mjs",
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/index.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/base/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_base_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/base/style/css.mjs",
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_base_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/base/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/container/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_container_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/container/style/css.mjs",
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_container_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/container/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/main/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_main_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/main/style/css.mjs",
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_main_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/main/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/aside/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_aside_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/aside/style/css.mjs",
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_aside_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/aside/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus/es/components/header/style/css": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus_es_components_header_style_css.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/components/header/style/css.mjs",
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus_es_components_header_style_css.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/components/header/style/css.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vue": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/vue.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/vue/dist/vue.runtime.esm-bundler.js",
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/vue.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/vue/dist/vue.runtime.esm-bundler.js",
|
||||
"needsInterop": false
|
||||
},
|
||||
"element-plus": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/element-plus.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/element-plus/es/index.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vue-router": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/vue-router.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/vue-router/dist/vue-router.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"axios": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/axios.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/axios/index.js",
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/element-plus.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/es/index.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuex": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/vuex.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/vuex/dist/vuex.esm-bundler.js",
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/vuex.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/vuex/dist/vuex.esm-bundler.js",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vue-router": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/vue-router.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/vue-router/dist/vue-router.mjs",
|
||||
"needsInterop": false
|
||||
},
|
||||
"axios": {
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/axios.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/axios/index.js",
|
||||
"needsInterop": false
|
||||
},
|
||||
"@element-plus/icons-vue": {
|
||||
"file": "C:/Users/www/newAdmin/node_modules/.vite/@element-plus_icons-vue.js",
|
||||
"src": "C:/Users/www/newAdmin/node_modules/@element-plus/icons-vue/dist/index.js",
|
||||
"file": "C:/Users/www/xinhoutai/newAdmin/node_modules/.vite/@element-plus_icons-vue.js",
|
||||
"src": "C:/Users/www/xinhoutai/newAdmin/node_modules/@element-plus/icons-vue/dist/index.js",
|
||||
"needsInterop": false
|
||||
}
|
||||
}
|
||||
|
||||
3
node_modules/.vite/chunk-3F4F2EFL.js
generated
vendored
3
node_modules/.vite/chunk-3F4F2EFL.js
generated
vendored
@ -1,3 +0,0 @@
|
||||
// node_modules/element-plus/es/components/checkbox/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-checkbox.css";
|
||||
//# sourceMappingURL=chunk-3F4F2EFL.js.map
|
||||
7
node_modules/.vite/chunk-3F4F2EFL.js.map
generated
vendored
7
node_modules/.vite/chunk-3F4F2EFL.js.map
generated
vendored
@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../element-plus/es/components/checkbox/style/css.mjs"],
|
||||
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-checkbox.css';\n//# sourceMappingURL=css.mjs.map\n"],
|
||||
"mappings": ";AACA;",
|
||||
"names": []
|
||||
}
|
||||
3
node_modules/.vite/chunk-4YMETJHM.js
generated
vendored
3
node_modules/.vite/chunk-4YMETJHM.js
generated
vendored
@ -1,3 +0,0 @@
|
||||
// node_modules/element-plus/es/components/button-group/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-button-group.css";
|
||||
//# sourceMappingURL=chunk-4YMETJHM.js.map
|
||||
7
node_modules/.vite/chunk-4YMETJHM.js.map
generated
vendored
7
node_modules/.vite/chunk-4YMETJHM.js.map
generated
vendored
@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../element-plus/es/components/button-group/style/css.mjs"],
|
||||
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-button-group.css';\n//# sourceMappingURL=css.mjs.map\n"],
|
||||
"mappings": ";AACA;",
|
||||
"names": []
|
||||
}
|
||||
3
node_modules/.vite/chunk-AGG62FMZ.js
generated
vendored
3
node_modules/.vite/chunk-AGG62FMZ.js
generated
vendored
@ -1,3 +0,0 @@
|
||||
// node_modules/element-plus/es/components/input/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-input.css";
|
||||
//# sourceMappingURL=chunk-AGG62FMZ.js.map
|
||||
7
node_modules/.vite/chunk-AGG62FMZ.js.map
generated
vendored
7
node_modules/.vite/chunk-AGG62FMZ.js.map
generated
vendored
@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../element-plus/es/components/input/style/css.mjs"],
|
||||
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-input.css';\n//# sourceMappingURL=css.mjs.map\n"],
|
||||
"mappings": ";AACA;",
|
||||
"names": []
|
||||
}
|
||||
3
node_modules/.vite/chunk-ASTAK5F3.js
generated
vendored
3
node_modules/.vite/chunk-ASTAK5F3.js
generated
vendored
@ -1,3 +0,0 @@
|
||||
// node_modules/element-plus/es/components/scrollbar/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-scrollbar.css";
|
||||
//# sourceMappingURL=chunk-ASTAK5F3.js.map
|
||||
7
node_modules/.vite/chunk-ASTAK5F3.js.map
generated
vendored
7
node_modules/.vite/chunk-ASTAK5F3.js.map
generated
vendored
@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../element-plus/es/components/scrollbar/style/css.mjs"],
|
||||
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-scrollbar.css';\n//# sourceMappingURL=css.mjs.map\n"],
|
||||
"mappings": ";AACA;",
|
||||
"names": []
|
||||
}
|
||||
3
node_modules/.vite/chunk-J2HUJDEQ.js
generated
vendored
3
node_modules/.vite/chunk-J2HUJDEQ.js
generated
vendored
@ -1,3 +0,0 @@
|
||||
// node_modules/element-plus/es/components/base/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/base.css";
|
||||
//# sourceMappingURL=chunk-J2HUJDEQ.js.map
|
||||
7
node_modules/.vite/chunk-J2HUJDEQ.js.map
generated
vendored
7
node_modules/.vite/chunk-J2HUJDEQ.js.map
generated
vendored
@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../element-plus/es/components/base/style/css.mjs"],
|
||||
"sourcesContent": ["import 'element-plus/theme-chalk/base.css';\n//# sourceMappingURL=css.mjs.map\n"],
|
||||
"mappings": ";AAAA;",
|
||||
"names": []
|
||||
}
|
||||
3
node_modules/.vite/chunk-JW55Z2EJ.js
generated
vendored
3
node_modules/.vite/chunk-JW55Z2EJ.js
generated
vendored
@ -1,3 +0,0 @@
|
||||
// node_modules/element-plus/es/components/option/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-option.css";
|
||||
//# sourceMappingURL=chunk-JW55Z2EJ.js.map
|
||||
7
node_modules/.vite/chunk-JW55Z2EJ.js.map
generated
vendored
7
node_modules/.vite/chunk-JW55Z2EJ.js.map
generated
vendored
@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../element-plus/es/components/option/style/css.mjs"],
|
||||
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-option.css';\n//# sourceMappingURL=css.mjs.map\n"],
|
||||
"mappings": ";AACA;",
|
||||
"names": []
|
||||
}
|
||||
3
node_modules/.vite/chunk-MGF34FHY.js
generated
vendored
3
node_modules/.vite/chunk-MGF34FHY.js
generated
vendored
@ -1,3 +0,0 @@
|
||||
// node_modules/element-plus/es/components/button/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-button.css";
|
||||
//# sourceMappingURL=chunk-MGF34FHY.js.map
|
||||
7
node_modules/.vite/chunk-MGF34FHY.js.map
generated
vendored
7
node_modules/.vite/chunk-MGF34FHY.js.map
generated
vendored
@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../element-plus/es/components/button/style/css.mjs"],
|
||||
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-button.css';\n//# sourceMappingURL=css.mjs.map\n"],
|
||||
"mappings": ";AACA;",
|
||||
"names": []
|
||||
}
|
||||
6
node_modules/.vite/chunk-RELBUDK6.js
generated
vendored
6
node_modules/.vite/chunk-RELBUDK6.js
generated
vendored
@ -1,6 +0,0 @@
|
||||
// node_modules/element-plus/es/components/option-group/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-option-group.css";
|
||||
|
||||
// node_modules/element-plus/es/components/select/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-select.css";
|
||||
//# sourceMappingURL=chunk-RELBUDK6.js.map
|
||||
7
node_modules/.vite/chunk-RELBUDK6.js.map
generated
vendored
7
node_modules/.vite/chunk-RELBUDK6.js.map
generated
vendored
@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../element-plus/es/components/option-group/style/css.mjs", "../element-plus/es/components/select/style/css.mjs"],
|
||||
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-option-group.css';\n//# sourceMappingURL=css.mjs.map\n", "import '../../base/style/css.mjs';\nimport '../../tag/style/css.mjs';\nimport '../../option/style/css.mjs';\nimport '../../option-group/style/css.mjs';\nimport '../../scrollbar/style/css.mjs';\nimport '../../popper/style/css.mjs';\nimport 'element-plus/theme-chalk/el-select.css';\n//# sourceMappingURL=css.mjs.map\n"],
|
||||
"mappings": ";AACA;;;ACKA;",
|
||||
"names": []
|
||||
}
|
||||
3
node_modules/.vite/chunk-T6CWIVMK.js
generated
vendored
3
node_modules/.vite/chunk-T6CWIVMK.js
generated
vendored
@ -1,3 +0,0 @@
|
||||
// node_modules/element-plus/es/components/tooltip/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-tooltip.css";
|
||||
//# sourceMappingURL=chunk-T6CWIVMK.js.map
|
||||
7
node_modules/.vite/chunk-T6CWIVMK.js.map
generated
vendored
7
node_modules/.vite/chunk-T6CWIVMK.js.map
generated
vendored
@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../element-plus/es/components/tooltip/style/css.mjs"],
|
||||
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-tooltip.css';\nimport '../../popper/style/css.mjs';\n//# sourceMappingURL=css.mjs.map\n"],
|
||||
"mappings": ";AACA;",
|
||||
"names": []
|
||||
}
|
||||
3
node_modules/.vite/chunk-VJIH6NRZ.js
generated
vendored
3
node_modules/.vite/chunk-VJIH6NRZ.js
generated
vendored
@ -1,3 +0,0 @@
|
||||
// node_modules/element-plus/es/components/popper/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-popper.css";
|
||||
//# sourceMappingURL=chunk-VJIH6NRZ.js.map
|
||||
7
node_modules/.vite/chunk-VJIH6NRZ.js.map
generated
vendored
7
node_modules/.vite/chunk-VJIH6NRZ.js.map
generated
vendored
@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../element-plus/es/components/popper/style/css.mjs"],
|
||||
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-popper.css';\n//# sourceMappingURL=css.mjs.map\n"],
|
||||
"mappings": ";AACA;",
|
||||
"names": []
|
||||
}
|
||||
3
node_modules/.vite/chunk-Y55BWCCL.js
generated
vendored
3
node_modules/.vite/chunk-Y55BWCCL.js
generated
vendored
@ -1,3 +0,0 @@
|
||||
// node_modules/element-plus/es/components/tag/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-tag.css";
|
||||
//# sourceMappingURL=chunk-Y55BWCCL.js.map
|
||||
7
node_modules/.vite/chunk-Y55BWCCL.js.map
generated
vendored
7
node_modules/.vite/chunk-Y55BWCCL.js.map
generated
vendored
@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../element-plus/es/components/tag/style/css.mjs"],
|
||||
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-tag.css';\n//# sourceMappingURL=css.mjs.map\n"],
|
||||
"mappings": ";AACA;",
|
||||
"names": []
|
||||
}
|
||||
4
node_modules/.vite/element-plus_es_components_aside_style_css.js
generated
vendored
4
node_modules/.vite/element-plus_es_components_aside_style_css.js
generated
vendored
@ -1,6 +1,6 @@
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/aside/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-aside.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-aside.css";
|
||||
//# sourceMappingURL=element-plus_es_components_aside_style_css.js.map
|
||||
|
||||
4
node_modules/.vite/element-plus_es_components_avatar_style_css.js
generated
vendored
4
node_modules/.vite/element-plus_es_components_avatar_style_css.js
generated
vendored
@ -1,6 +1,6 @@
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/avatar/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-avatar.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-avatar.css";
|
||||
//# sourceMappingURL=element-plus_es_components_avatar_style_css.js.map
|
||||
|
||||
6
node_modules/.vite/element-plus_es_components_badge_style_css.js
generated
vendored
6
node_modules/.vite/element-plus_es_components_badge_style_css.js
generated
vendored
@ -1,6 +1,4 @@
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-BA3BYPN6.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/badge/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-badge.css";
|
||||
//# sourceMappingURL=element-plus_es_components_badge_style_css.js.map
|
||||
|
||||
6
node_modules/.vite/element-plus_es_components_badge_style_css.js.map
generated
vendored
6
node_modules/.vite/element-plus_es_components_badge_style_css.js.map
generated
vendored
@ -1,7 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../element-plus/es/components/badge/style/css.mjs"],
|
||||
"sourcesContent": ["import '../../base/style/css.mjs';\nimport 'element-plus/theme-chalk/el-badge.css';\n//# sourceMappingURL=css.mjs.map\n"],
|
||||
"mappings": ";;;;AACA;",
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
|
||||
2
node_modules/.vite/element-plus_es_components_base_style_css.js
generated
vendored
2
node_modules/.vite/element-plus_es_components_base_style_css.js
generated
vendored
@ -1,3 +1,3 @@
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
//# sourceMappingURL=element-plus_es_components_base_style_css.js.map
|
||||
|
||||
4
node_modules/.vite/element-plus_es_components_button-group_style_css.js
generated
vendored
4
node_modules/.vite/element-plus_es_components_button-group_style_css.js
generated
vendored
@ -1,4 +1,4 @@
|
||||
import "./chunk-4YMETJHM.js";
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-37WSAZQV.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
//# sourceMappingURL=element-plus_es_components_button-group_style_css.js.map
|
||||
|
||||
4
node_modules/.vite/element-plus_es_components_button_style_css.js
generated
vendored
4
node_modules/.vite/element-plus_es_components_button_style_css.js
generated
vendored
@ -1,4 +1,4 @@
|
||||
import "./chunk-MGF34FHY.js";
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-EI5ZVOL3.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
//# sourceMappingURL=element-plus_es_components_button_style_css.js.map
|
||||
|
||||
4
node_modules/.vite/element-plus_es_components_card_style_css.js
generated
vendored
4
node_modules/.vite/element-plus_es_components_card_style_css.js
generated
vendored
@ -1,6 +1,6 @@
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/card/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-card.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-card.css";
|
||||
//# sourceMappingURL=element-plus_es_components_card_style_css.js.map
|
||||
|
||||
4
node_modules/.vite/element-plus_es_components_col_style_css.js
generated
vendored
4
node_modules/.vite/element-plus_es_components_col_style_css.js
generated
vendored
@ -1,6 +1,6 @@
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/col/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-col.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-col.css";
|
||||
//# sourceMappingURL=element-plus_es_components_col_style_css.js.map
|
||||
|
||||
12
node_modules/.vite/element-plus_es_components_container_style_css.js
generated
vendored
12
node_modules/.vite/element-plus_es_components_container_style_css.js
generated
vendored
@ -1,10 +1,10 @@
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/container/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-container.css";
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-aside.css";
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-footer.css";
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-header.css";
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-main.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-container.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-aside.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-footer.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-header.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-main.css";
|
||||
//# sourceMappingURL=element-plus_es_components_container_style_css.js.map
|
||||
|
||||
8
node_modules/.vite/element-plus_es_components_dialog_style_css.js
generated
vendored
8
node_modules/.vite/element-plus_es_components_dialog_style_css.js
generated
vendored
@ -1,9 +1,7 @@
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-XJMOBMS7.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/dialog/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-dialog.css";
|
||||
|
||||
// node_modules/element-plus/es/components/overlay/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-overlay.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-dialog.css";
|
||||
//# sourceMappingURL=element-plus_es_components_dialog_style_css.js.map
|
||||
|
||||
6
node_modules/.vite/element-plus_es_components_dialog_style_css.js.map
generated
vendored
6
node_modules/.vite/element-plus_es_components_dialog_style_css.js.map
generated
vendored
@ -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"],
|
||||
"mappings": ";;;;AACA;;;ACAA;",
|
||||
"sources": ["../element-plus/es/components/dialog/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"],
|
||||
"mappings": ";;;;;AACA;",
|
||||
"names": []
|
||||
}
|
||||
|
||||
4
node_modules/.vite/element-plus_es_components_divider_style_css.js
generated
vendored
4
node_modules/.vite/element-plus_es_components_divider_style_css.js
generated
vendored
@ -1,6 +1,6 @@
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/divider/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-divider.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-divider.css";
|
||||
//# sourceMappingURL=element-plus_es_components_divider_style_css.js.map
|
||||
|
||||
4
node_modules/.vite/element-plus_es_components_dropdown-item_style_css.js
generated
vendored
4
node_modules/.vite/element-plus_es_components_dropdown-item_style_css.js
generated
vendored
@ -1,6 +1,6 @@
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/dropdown-item/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-dropdown-item.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-dropdown-item.css";
|
||||
//# sourceMappingURL=element-plus_es_components_dropdown-item_style_css.js.map
|
||||
|
||||
4
node_modules/.vite/element-plus_es_components_dropdown-menu_style_css.js
generated
vendored
4
node_modules/.vite/element-plus_es_components_dropdown-menu_style_css.js
generated
vendored
@ -1,6 +1,6 @@
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/dropdown-menu/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-dropdown-menu.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-dropdown-menu.css";
|
||||
//# sourceMappingURL=element-plus_es_components_dropdown-menu_style_css.js.map
|
||||
|
||||
12
node_modules/.vite/element-plus_es_components_dropdown_style_css.js
generated
vendored
12
node_modules/.vite/element-plus_es_components_dropdown_style_css.js
generated
vendored
@ -1,10 +1,10 @@
|
||||
import "./chunk-4YMETJHM.js";
|
||||
import "./chunk-MGF34FHY.js";
|
||||
import "./chunk-ASTAK5F3.js";
|
||||
import "./chunk-VJIH6NRZ.js";
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-37WSAZQV.js";
|
||||
import "./chunk-EI5ZVOL3.js";
|
||||
import "./chunk-44D3S5LE.js";
|
||||
import "./chunk-MKLDHWXD.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/dropdown/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-dropdown.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-dropdown.css";
|
||||
//# sourceMappingURL=element-plus_es_components_dropdown_style_css.js.map
|
||||
|
||||
4
node_modules/.vite/element-plus_es_components_form-item_style_css.js
generated
vendored
4
node_modules/.vite/element-plus_es_components_form-item_style_css.js
generated
vendored
@ -1,6 +1,6 @@
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/form-item/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-form-item.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-form-item.css";
|
||||
//# sourceMappingURL=element-plus_es_components_form-item_style_css.js.map
|
||||
|
||||
4
node_modules/.vite/element-plus_es_components_form_style_css.js
generated
vendored
4
node_modules/.vite/element-plus_es_components_form_style_css.js
generated
vendored
@ -1,6 +1,6 @@
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/form/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-form.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-form.css";
|
||||
//# sourceMappingURL=element-plus_es_components_form_style_css.js.map
|
||||
|
||||
4
node_modules/.vite/element-plus_es_components_header_style_css.js
generated
vendored
4
node_modules/.vite/element-plus_es_components_header_style_css.js
generated
vendored
@ -1,6 +1,6 @@
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/header/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-header.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-header.css";
|
||||
//# sourceMappingURL=element-plus_es_components_header_style_css.js.map
|
||||
|
||||
2
node_modules/.vite/element-plus_es_components_icon_style_css.js
generated
vendored
2
node_modules/.vite/element-plus_es_components_icon_style_css.js
generated
vendored
@ -1,3 +1,3 @@
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
//# sourceMappingURL=element-plus_es_components_icon_style_css.js.map
|
||||
|
||||
6
node_modules/.vite/element-plus_es_components_input-number_style_css.js
generated
vendored
6
node_modules/.vite/element-plus_es_components_input-number_style_css.js
generated
vendored
@ -1,7 +1,7 @@
|
||||
import "./chunk-AGG62FMZ.js";
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-U2ESZ2IA.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/input-number/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-input-number.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-input-number.css";
|
||||
//# sourceMappingURL=element-plus_es_components_input-number_style_css.js.map
|
||||
|
||||
4
node_modules/.vite/element-plus_es_components_input_style_css.js
generated
vendored
4
node_modules/.vite/element-plus_es_components_input_style_css.js
generated
vendored
@ -1,4 +1,4 @@
|
||||
import "./chunk-AGG62FMZ.js";
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-U2ESZ2IA.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
//# sourceMappingURL=element-plus_es_components_input_style_css.js.map
|
||||
|
||||
4
node_modules/.vite/element-plus_es_components_main_style_css.js
generated
vendored
4
node_modules/.vite/element-plus_es_components_main_style_css.js
generated
vendored
@ -1,6 +1,6 @@
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/main/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-main.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-main.css";
|
||||
//# sourceMappingURL=element-plus_es_components_main_style_css.js.map
|
||||
|
||||
4
node_modules/.vite/element-plus_es_components_menu-item_style_css.js
generated
vendored
4
node_modules/.vite/element-plus_es_components_menu-item_style_css.js
generated
vendored
@ -1,6 +1,6 @@
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/menu-item/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-menu-item.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-menu-item.css";
|
||||
//# sourceMappingURL=element-plus_es_components_menu-item_style_css.js.map
|
||||
|
||||
8
node_modules/.vite/element-plus_es_components_menu_style_css.js
generated
vendored
8
node_modules/.vite/element-plus_es_components_menu_style_css.js
generated
vendored
@ -1,8 +1,8 @@
|
||||
import "./chunk-T6CWIVMK.js";
|
||||
import "./chunk-VJIH6NRZ.js";
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-S5PDDXWB.js";
|
||||
import "./chunk-MKLDHWXD.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/menu/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-menu.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-menu.css";
|
||||
//# sourceMappingURL=element-plus_es_components_menu_style_css.js.map
|
||||
|
||||
4
node_modules/.vite/element-plus_es_components_option_style_css.js
generated
vendored
4
node_modules/.vite/element-plus_es_components_option_style_css.js
generated
vendored
@ -1,4 +1,4 @@
|
||||
import "./chunk-JW55Z2EJ.js";
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-52DCIPYL.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
//# sourceMappingURL=element-plus_es_components_option_style_css.js.map
|
||||
|
||||
16
node_modules/.vite/element-plus_es_components_pagination_style_css.js
generated
vendored
16
node_modules/.vite/element-plus_es_components_pagination_style_css.js
generated
vendored
@ -1,12 +1,12 @@
|
||||
import "./chunk-AGG62FMZ.js";
|
||||
import "./chunk-RELBUDK6.js";
|
||||
import "./chunk-Y55BWCCL.js";
|
||||
import "./chunk-ASTAK5F3.js";
|
||||
import "./chunk-VJIH6NRZ.js";
|
||||
import "./chunk-JW55Z2EJ.js";
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-VGA4XJB2.js";
|
||||
import "./chunk-52DCIPYL.js";
|
||||
import "./chunk-Y7BF4SFR.js";
|
||||
import "./chunk-44D3S5LE.js";
|
||||
import "./chunk-U2ESZ2IA.js";
|
||||
import "./chunk-MKLDHWXD.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/pagination/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-pagination.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-pagination.css";
|
||||
//# sourceMappingURL=element-plus_es_components_pagination_style_css.js.map
|
||||
|
||||
12
node_modules/.vite/element-plus_es_components_select_style_css.js
generated
vendored
12
node_modules/.vite/element-plus_es_components_select_style_css.js
generated
vendored
@ -1,8 +1,8 @@
|
||||
import "./chunk-RELBUDK6.js";
|
||||
import "./chunk-Y55BWCCL.js";
|
||||
import "./chunk-ASTAK5F3.js";
|
||||
import "./chunk-VJIH6NRZ.js";
|
||||
import "./chunk-JW55Z2EJ.js";
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-VGA4XJB2.js";
|
||||
import "./chunk-52DCIPYL.js";
|
||||
import "./chunk-Y7BF4SFR.js";
|
||||
import "./chunk-44D3S5LE.js";
|
||||
import "./chunk-MKLDHWXD.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
//# sourceMappingURL=element-plus_es_components_select_style_css.js.map
|
||||
|
||||
4
node_modules/.vite/element-plus_es_components_sub-menu_style_css.js
generated
vendored
4
node_modules/.vite/element-plus_es_components_sub-menu_style_css.js
generated
vendored
@ -1,6 +1,6 @@
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/sub-menu/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-sub-menu.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-sub-menu.css";
|
||||
//# sourceMappingURL=element-plus_es_components_sub-menu_style_css.js.map
|
||||
|
||||
4
node_modules/.vite/element-plus_es_components_switch_style_css.js
generated
vendored
4
node_modules/.vite/element-plus_es_components_switch_style_css.js
generated
vendored
@ -1,6 +1,6 @@
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/switch/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-switch.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-switch.css";
|
||||
//# sourceMappingURL=element-plus_es_components_switch_style_css.js.map
|
||||
|
||||
4
node_modules/.vite/element-plus_es_components_tab-pane_style_css.js
generated
vendored
4
node_modules/.vite/element-plus_es_components_tab-pane_style_css.js
generated
vendored
@ -1,6 +1,6 @@
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/tab-pane/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-tab-pane.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-tab-pane.css";
|
||||
//# sourceMappingURL=element-plus_es_components_tab-pane_style_css.js.map
|
||||
|
||||
8
node_modules/.vite/element-plus_es_components_table-column_style_css.js
generated
vendored
8
node_modules/.vite/element-plus_es_components_table-column_style_css.js
generated
vendored
@ -1,8 +1,8 @@
|
||||
import "./chunk-3F4F2EFL.js";
|
||||
import "./chunk-Y55BWCCL.js";
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-Y7BF4SFR.js";
|
||||
import "./chunk-RHDSKODH.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/table-column/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-table-column.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-table-column.css";
|
||||
//# sourceMappingURL=element-plus_es_components_table-column_style_css.js.map
|
||||
|
||||
12
node_modules/.vite/element-plus_es_components_table_style_css.js
generated
vendored
12
node_modules/.vite/element-plus_es_components_table_style_css.js
generated
vendored
@ -1,10 +1,10 @@
|
||||
import "./chunk-T6CWIVMK.js";
|
||||
import "./chunk-3F4F2EFL.js";
|
||||
import "./chunk-ASTAK5F3.js";
|
||||
import "./chunk-VJIH6NRZ.js";
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-S5PDDXWB.js";
|
||||
import "./chunk-44D3S5LE.js";
|
||||
import "./chunk-RHDSKODH.js";
|
||||
import "./chunk-MKLDHWXD.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/table/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-table.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-table.css";
|
||||
//# sourceMappingURL=element-plus_es_components_table_style_css.js.map
|
||||
|
||||
4
node_modules/.vite/element-plus_es_components_tabs_style_css.js
generated
vendored
4
node_modules/.vite/element-plus_es_components_tabs_style_css.js
generated
vendored
@ -1,6 +1,6 @@
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/components/tabs/style/css.mjs
|
||||
import "C:/Users/www/newAdmin/node_modules/element-plus/theme-chalk/el-tabs.css";
|
||||
import "C:/Users/www/xinhoutai/newAdmin/node_modules/element-plus/theme-chalk/el-tabs.css";
|
||||
//# sourceMappingURL=element-plus_es_components_tabs_style_css.js.map
|
||||
|
||||
4
node_modules/.vite/element-plus_es_components_tag_style_css.js
generated
vendored
4
node_modules/.vite/element-plus_es_components_tag_style_css.js
generated
vendored
@ -1,4 +1,4 @@
|
||||
import "./chunk-Y55BWCCL.js";
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-Y7BF4SFR.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
//# sourceMappingURL=element-plus_es_components_tag_style_css.js.map
|
||||
|
||||
6
node_modules/.vite/element-plus_es_components_tooltip_style_css.js
generated
vendored
6
node_modules/.vite/element-plus_es_components_tooltip_style_css.js
generated
vendored
@ -1,5 +1,5 @@
|
||||
import "./chunk-T6CWIVMK.js";
|
||||
import "./chunk-VJIH6NRZ.js";
|
||||
import "./chunk-J2HUJDEQ.js";
|
||||
import "./chunk-S5PDDXWB.js";
|
||||
import "./chunk-MKLDHWXD.js";
|
||||
import "./chunk-VQBUYH27.js";
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
//# sourceMappingURL=element-plus_es_components_tooltip_style_css.js.map
|
||||
|
||||
188
node_modules/.vite/element-plus_es_locale_lang_zh-cn.js
generated
vendored
188
node_modules/.vite/element-plus_es_locale_lang_zh-cn.js
generated
vendored
@ -1,188 +0,0 @@
|
||||
import "./chunk-4YJPEX7N.js";
|
||||
|
||||
// node_modules/element-plus/es/locale/lang/zh-cn.mjs
|
||||
var zhCn = {
|
||||
name: "zh-cn",
|
||||
el: {
|
||||
breadcrumb: {
|
||||
label: "\u9762\u5305\u5C51"
|
||||
},
|
||||
colorpicker: {
|
||||
confirm: "\u786E\u5B9A",
|
||||
clear: "\u6E05\u7A7A",
|
||||
defaultLabel: "\u989C\u8272\u9009\u62E9\u5668",
|
||||
description: "\u5F53\u524D\u989C\u8272 {color}\uFF0C\u6309 Enter \u952E\u9009\u62E9\u65B0\u989C\u8272",
|
||||
alphaLabel: "\u9009\u62E9\u900F\u660E\u5EA6\u7684\u503C"
|
||||
},
|
||||
datepicker: {
|
||||
now: "\u6B64\u523B",
|
||||
today: "\u4ECA\u5929",
|
||||
cancel: "\u53D6\u6D88",
|
||||
clear: "\u6E05\u7A7A",
|
||||
confirm: "\u786E\u5B9A",
|
||||
dateTablePrompt: "\u4F7F\u7528\u65B9\u5411\u952E\u4E0E Enter \u952E\u53EF\u9009\u62E9\u65E5\u671F",
|
||||
monthTablePrompt: "\u4F7F\u7528\u65B9\u5411\u952E\u4E0E Enter \u952E\u53EF\u9009\u62E9\u6708\u4EFD",
|
||||
yearTablePrompt: "\u4F7F\u7528\u65B9\u5411\u952E\u4E0E Enter \u952E\u53EF\u9009\u62E9\u5E74\u4EFD",
|
||||
selectedDate: "\u5DF2\u9009\u65E5\u671F",
|
||||
selectDate: "\u9009\u62E9\u65E5\u671F",
|
||||
selectTime: "\u9009\u62E9\u65F6\u95F4",
|
||||
startDate: "\u5F00\u59CB\u65E5\u671F",
|
||||
startTime: "\u5F00\u59CB\u65F6\u95F4",
|
||||
endDate: "\u7ED3\u675F\u65E5\u671F",
|
||||
endTime: "\u7ED3\u675F\u65F6\u95F4",
|
||||
prevYear: "\u524D\u4E00\u5E74",
|
||||
nextYear: "\u540E\u4E00\u5E74",
|
||||
prevMonth: "\u4E0A\u4E2A\u6708",
|
||||
nextMonth: "\u4E0B\u4E2A\u6708",
|
||||
year: "\u5E74",
|
||||
month1: "1 \u6708",
|
||||
month2: "2 \u6708",
|
||||
month3: "3 \u6708",
|
||||
month4: "4 \u6708",
|
||||
month5: "5 \u6708",
|
||||
month6: "6 \u6708",
|
||||
month7: "7 \u6708",
|
||||
month8: "8 \u6708",
|
||||
month9: "9 \u6708",
|
||||
month10: "10 \u6708",
|
||||
month11: "11 \u6708",
|
||||
month12: "12 \u6708",
|
||||
weeks: {
|
||||
sun: "\u65E5",
|
||||
mon: "\u4E00",
|
||||
tue: "\u4E8C",
|
||||
wed: "\u4E09",
|
||||
thu: "\u56DB",
|
||||
fri: "\u4E94",
|
||||
sat: "\u516D"
|
||||
},
|
||||
weeksFull: {
|
||||
sun: "\u661F\u671F\u65E5",
|
||||
mon: "\u661F\u671F\u4E00",
|
||||
tue: "\u661F\u671F\u4E8C",
|
||||
wed: "\u661F\u671F\u4E09",
|
||||
thu: "\u661F\u671F\u56DB",
|
||||
fri: "\u661F\u671F\u4E94",
|
||||
sat: "\u661F\u671F\u516D"
|
||||
},
|
||||
months: {
|
||||
jan: "\u4E00\u6708",
|
||||
feb: "\u4E8C\u6708",
|
||||
mar: "\u4E09\u6708",
|
||||
apr: "\u56DB\u6708",
|
||||
may: "\u4E94\u6708",
|
||||
jun: "\u516D\u6708",
|
||||
jul: "\u4E03\u6708",
|
||||
aug: "\u516B\u6708",
|
||||
sep: "\u4E5D\u6708",
|
||||
oct: "\u5341\u6708",
|
||||
nov: "\u5341\u4E00\u6708",
|
||||
dec: "\u5341\u4E8C\u6708"
|
||||
}
|
||||
},
|
||||
inputNumber: {
|
||||
decrease: "\u51CF\u5C11\u6570\u503C",
|
||||
increase: "\u589E\u52A0\u6570\u503C"
|
||||
},
|
||||
select: {
|
||||
loading: "\u52A0\u8F7D\u4E2D",
|
||||
noMatch: "\u65E0\u5339\u914D\u6570\u636E",
|
||||
noData: "\u65E0\u6570\u636E",
|
||||
placeholder: "\u8BF7\u9009\u62E9"
|
||||
},
|
||||
dropdown: {
|
||||
toggleDropdown: "\u5207\u6362\u4E0B\u62C9\u9009\u9879"
|
||||
},
|
||||
mention: {
|
||||
loading: "\u52A0\u8F7D\u4E2D"
|
||||
},
|
||||
cascader: {
|
||||
noMatch: "\u65E0\u5339\u914D\u6570\u636E",
|
||||
loading: "\u52A0\u8F7D\u4E2D",
|
||||
placeholder: "\u8BF7\u9009\u62E9",
|
||||
noData: "\u6682\u65E0\u6570\u636E"
|
||||
},
|
||||
pagination: {
|
||||
goto: "\u524D\u5F80",
|
||||
pagesize: "\u6761/\u9875",
|
||||
total: "\u5171 {total} \u6761",
|
||||
pageClassifier: "\u9875",
|
||||
page: "\u9875",
|
||||
prev: "\u4E0A\u4E00\u9875",
|
||||
next: "\u4E0B\u4E00\u9875",
|
||||
currentPage: "\u7B2C {pager} \u9875",
|
||||
prevPages: "\u5411\u524D {pager} \u9875",
|
||||
nextPages: "\u5411\u540E {pager} \u9875",
|
||||
deprecationWarning: "\u4F60\u4F7F\u7528\u4E86\u4E00\u4E9B\u5DF2\u88AB\u5E9F\u5F03\u7684\u7528\u6CD5\uFF0C\u8BF7\u53C2\u8003 el-pagination \u7684\u5B98\u65B9\u6587\u6863"
|
||||
},
|
||||
dialog: {
|
||||
close: "\u5173\u95ED\u6B64\u5BF9\u8BDD\u6846"
|
||||
},
|
||||
drawer: {
|
||||
close: "\u5173\u95ED\u6B64\u5BF9\u8BDD\u6846"
|
||||
},
|
||||
messagebox: {
|
||||
title: "\u63D0\u793A",
|
||||
confirm: "\u786E\u5B9A",
|
||||
cancel: "\u53D6\u6D88",
|
||||
error: "\u8F93\u5165\u7684\u6570\u636E\u4E0D\u5408\u6CD5!",
|
||||
close: "\u5173\u95ED\u6B64\u5BF9\u8BDD\u6846"
|
||||
},
|
||||
upload: {
|
||||
deleteTip: "\u6309 Delete \u952E\u53EF\u5220\u9664",
|
||||
delete: "\u5220\u9664",
|
||||
preview: "\u67E5\u770B\u56FE\u7247",
|
||||
continue: "\u7EE7\u7EED\u4E0A\u4F20"
|
||||
},
|
||||
slider: {
|
||||
defaultLabel: "\u6ED1\u5757\u4ECB\u4E8E {min} \u81F3 {max}",
|
||||
defaultRangeStartLabel: "\u9009\u62E9\u8D77\u59CB\u503C",
|
||||
defaultRangeEndLabel: "\u9009\u62E9\u7ED3\u675F\u503C"
|
||||
},
|
||||
table: {
|
||||
emptyText: "\u6682\u65E0\u6570\u636E",
|
||||
confirmFilter: "\u7B5B\u9009",
|
||||
resetFilter: "\u91CD\u7F6E",
|
||||
clearFilter: "\u5168\u90E8",
|
||||
sumText: "\u5408\u8BA1"
|
||||
},
|
||||
tour: {
|
||||
next: "\u4E0B\u4E00\u6B65",
|
||||
previous: "\u4E0A\u4E00\u6B65",
|
||||
finish: "\u7ED3\u675F\u5BFC\u89C8"
|
||||
},
|
||||
tree: {
|
||||
emptyText: "\u6682\u65E0\u6570\u636E"
|
||||
},
|
||||
transfer: {
|
||||
noMatch: "\u65E0\u5339\u914D\u6570\u636E",
|
||||
noData: "\u65E0\u6570\u636E",
|
||||
titles: ["\u5217\u8868 1", "\u5217\u8868 2"],
|
||||
filterPlaceholder: "\u8BF7\u8F93\u5165\u641C\u7D22\u5185\u5BB9",
|
||||
noCheckedFormat: "\u5171 {total} \u9879",
|
||||
hasCheckedFormat: "\u5DF2\u9009 {checked}/{total} \u9879"
|
||||
},
|
||||
image: {
|
||||
error: "\u52A0\u8F7D\u5931\u8D25"
|
||||
},
|
||||
pageHeader: {
|
||||
title: "\u8FD4\u56DE"
|
||||
},
|
||||
popconfirm: {
|
||||
confirmButtonText: "\u786E\u5B9A",
|
||||
cancelButtonText: "\u53D6\u6D88"
|
||||
},
|
||||
carousel: {
|
||||
leftArrow: "\u4E0A\u4E00\u5F20\u5E7B\u706F\u7247",
|
||||
rightArrow: "\u4E0B\u4E00\u5F20\u5E7B\u706F\u7247",
|
||||
indicator: "\u5E7B\u706F\u7247\u5207\u6362\u81F3\u7D22\u5F15 {index}"
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// dep:element-plus_es_locale_lang_zh-cn
|
||||
var element_plus_es_locale_lang_zh_cn_default = zhCn;
|
||||
export {
|
||||
element_plus_es_locale_lang_zh_cn_default as default
|
||||
};
|
||||
//# sourceMappingURL=element-plus_es_locale_lang_zh-cn.js.map
|
||||
7
node_modules/.vite/element-plus_es_locale_lang_zh-cn.js.map
generated
vendored
7
node_modules/.vite/element-plus_es_locale_lang_zh-cn.js.map
generated
vendored
File diff suppressed because one or more lines are too long
66
node_modules/.vue-global-types/vue_99_0_0_0.d.ts
generated
vendored
66
node_modules/.vue-global-types/vue_99_0_0_0.d.ts
generated
vendored
@ -2,7 +2,6 @@
|
||||
export {};
|
||||
|
||||
; declare global {
|
||||
const __VLS_intrinsicElements: __VLS_IntrinsicElements;
|
||||
const __VLS_directiveBindingRestFields: { instance: null, oldValue: null, modifiers: any, dir: any };
|
||||
const __VLS_unref: typeof import('vue').unref;
|
||||
const __VLS_placeholder: any;
|
||||
@ -24,10 +23,23 @@ export {};
|
||||
N2 extends keyof __VLS_GlobalComponents ? N2 extends N0 ? Pick<__VLS_GlobalComponents, N0 extends keyof __VLS_GlobalComponents ? N0 : never> : { [K in N0]: __VLS_GlobalComponents[N2] } :
|
||||
N3 extends keyof __VLS_GlobalComponents ? N3 extends N0 ? Pick<__VLS_GlobalComponents, N0 extends keyof __VLS_GlobalComponents ? N0 : never> : { [K in N0]: __VLS_GlobalComponents[N3] } :
|
||||
{ [K in N0]: unknown };
|
||||
type __VLS_FunctionalComponentProps<T, K> =
|
||||
'__ctx' extends keyof __VLS_PickNotAny<K, {}> ? K extends { __ctx?: { props?: infer P } } ? NonNullable<P> : never
|
||||
: T extends (props: infer P, ...args: any) => any ? P :
|
||||
{};
|
||||
type __VLS_FunctionalComponentCtx<T, K> = __VLS_PickNotAny<'__ctx' extends keyof __VLS_PickNotAny<K, {}>
|
||||
? K extends { __ctx?: infer Ctx } ? NonNullable<Ctx> : never : any
|
||||
, T extends (props: any, ctx: infer Ctx) => any ? Ctx : any
|
||||
>;
|
||||
type __VLS_FunctionalComponentProps<T, K> = '__ctx' extends keyof __VLS_PickNotAny<K, {}>
|
||||
? K extends { __ctx?: { props?: infer P } } ? NonNullable<P> : never
|
||||
: T extends (props: infer P, ...args: any) => any ? P
|
||||
: {};
|
||||
type __VLS_FunctionalComponent<T> = (props: (T extends { $props: infer Props } ? Props : {}) & Record<string, unknown>, ctx?: any) => __VLS_Element & {
|
||||
__ctx?: {
|
||||
attrs?: any,
|
||||
slots?: T extends { $slots: infer Slots } ? Slots : Record<string, any>,
|
||||
emit?: T extends { $emit: infer Emit } ? Emit : {},
|
||||
props?: (T extends { $props: infer Props } ? Props : {}) & Record<string, unknown>,
|
||||
expose?: (exposed: T) => void,
|
||||
}
|
||||
};
|
||||
type __VLS_IsFunction<T, K> = K extends keyof T
|
||||
? __VLS_IsAny<T[K]> extends false
|
||||
? unknown extends T[K]
|
||||
@ -35,13 +47,13 @@ export {};
|
||||
: true
|
||||
: false
|
||||
: false;
|
||||
type __VLS_NormalizeComponentEvent<Props, Events, onEvent extends keyof Props, Event extends keyof Events, CamelizedEvent extends keyof Events> = (
|
||||
type __VLS_NormalizeComponentEvent<Props, Emits, onEvent extends keyof Props, Event extends keyof Emits, CamelizedEvent extends keyof Emits> = (
|
||||
__VLS_IsFunction<Props, onEvent> extends true
|
||||
? Props
|
||||
: __VLS_IsFunction<Events, Event> extends true
|
||||
? { [K in onEvent]?: Events[Event] }
|
||||
: __VLS_IsFunction<Events, CamelizedEvent> extends true
|
||||
? { [K in onEvent]?: Events[CamelizedEvent] }
|
||||
: __VLS_IsFunction<Emits, Event> extends true
|
||||
? { [K in onEvent]?: Emits[Event] }
|
||||
: __VLS_IsFunction<Emits, CamelizedEvent> extends true
|
||||
? { [K in onEvent]?: Emits[CamelizedEvent] }
|
||||
: Props
|
||||
) & Record<string, unknown>;
|
||||
// fix https://github.com/vuejs/language-tools/issues/926
|
||||
@ -67,11 +79,16 @@ export {};
|
||||
}
|
||||
>
|
||||
>;
|
||||
type __VLS_PrettifyGlobal<T> = { [K in keyof T]: T[K]; } & {};
|
||||
type __VLS_PickFunctionalComponentCtx<T, K> = NonNullable<__VLS_PickNotAny<
|
||||
'__ctx' extends keyof __VLS_PickNotAny<K, {}> ? K extends { __ctx?: infer Ctx } ? Ctx : never : any
|
||||
, T extends (props: any, ctx: infer Ctx) => any ? Ctx : any
|
||||
>>;
|
||||
type __VLS_ResolveEmits<
|
||||
Comp,
|
||||
Emits,
|
||||
TypeEmits = Comp extends { __typeEmits?: infer T } ? unknown extends T ? {} : import('vue').ShortEmitsToObject<T> : {},
|
||||
NormalizedEmits = __VLS_NormalizeEmits<Emits> extends infer E ? string extends keyof E ? {} : E : never,
|
||||
> = __VLS_SpreadMerge<NormalizedEmits, TypeEmits>;
|
||||
type __VLS_ResolveDirectives<T> = {
|
||||
[K in Exclude<keyof T, keyof __VLS_GlobalDirectives> & string as `v${Capitalize<K>}`]: T[K];
|
||||
};
|
||||
type __VLS_PrettifyGlobal<T> = { [K in keyof T as K]: T[K]; } & {};
|
||||
type __VLS_UseTemplateRef<T> = Readonly<import('vue').ShallowRef<T | null>>;
|
||||
|
||||
function __VLS_getVForSourceType<T extends number | string | any[] | Iterable<any>>(source: T): [
|
||||
@ -87,10 +104,8 @@ export {};
|
||||
key: keyof T,
|
||||
index: number,
|
||||
][];
|
||||
// @ts-ignore
|
||||
function __VLS_getSlotParams<T>(slot: T): Parameters<__VLS_PickNotAny<NonNullable<T>, (...args: any[]) => any>>;
|
||||
// @ts-ignore
|
||||
function __VLS_getSlotParam<T>(slot: T): Parameters<__VLS_PickNotAny<NonNullable<T>, (...args: any[]) => any>>[0];
|
||||
function __VLS_getSlotParameters<S, D extends S>(slot: S, decl?: D):
|
||||
D extends (...args: infer P) => any ? P : any[];
|
||||
function __VLS_asFunctionalDirective<T>(dir: T): T extends import('vue').ObjectDirective
|
||||
? NonNullable<T['created' | 'beforeMount' | 'mounted' | 'beforeUpdate' | 'updated' | 'beforeUnmount' | 'unmounted']>
|
||||
: T extends (...args: any) => any
|
||||
@ -98,19 +113,10 @@ export {};
|
||||
: (arg1: unknown, arg2: unknown, arg3: unknown, arg4: unknown) => void;
|
||||
function __VLS_makeOptional<T>(t: T): { [K in keyof T]?: T[K] };
|
||||
function __VLS_asFunctionalComponent<T, K = T extends new (...args: any) => any ? InstanceType<T> : unknown>(t: T, instance?: K):
|
||||
T extends new (...args: any) => any
|
||||
? (props: (K extends { $props: infer Props } ? Props : any) & Record<string, unknown>, ctx?: any) => __VLS_Element & {
|
||||
__ctx?: {
|
||||
attrs?: any;
|
||||
slots?: K extends { $slots: infer Slots } ? Slots : any;
|
||||
emit?: K extends { $emit: infer Emit } ? Emit : any;
|
||||
expose?(exposed: K): void;
|
||||
props?: (K extends { $props: infer Props } ? Props : any) & Record<string, unknown>;
|
||||
}
|
||||
}
|
||||
T extends new (...args: any) => any ? __VLS_FunctionalComponent<K>
|
||||
: T extends () => any ? (props: {}, ctx?: any) => ReturnType<T>
|
||||
: T extends (...args: any) => any ? T
|
||||
: (_: {} & Record<string, unknown>, ctx?: any) => { __ctx?: { attrs?: any, expose?: any, slots?: any, emit?: any, props?: {} & Record<string, unknown> } };
|
||||
: __VLS_FunctionalComponent<{}>;
|
||||
function __VLS_functionalComponentArgsRest<T extends (...args: any) => any>(t: T): 2 extends Parameters<T>['length'] ? [any] : [];
|
||||
function __VLS_asFunctionalElement<T>(tag: T, endTag?: T): (attrs: T & Record<string, unknown>) => void;
|
||||
function __VLS_asFunctionalSlot<S>(slot: S): S extends () => infer R ? (props: {}) => R : NonNullable<S>;
|
||||
|
||||
BIN
public/flow-chart.png
Normal file
BIN
public/flow-chart.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 87 KiB |
BIN
public/templates/GoodsInfoTemplate.xlsx
Normal file
BIN
public/templates/GoodsInfoTemplate.xlsx
Normal file
Binary file not shown.
@ -13,3 +13,5 @@ export { depotApi } from './modules/depot'
|
||||
export { userApi } from './modules/user'
|
||||
export { userLoginApi } from './modules/userLogin'
|
||||
export { priceTemplateApi } from './modules/priceTemplate'
|
||||
export { filterSetApi } from './modules/filterSet'
|
||||
export { shopGoodsPublishedApi } from './modules/shopGoodsPublished'
|
||||
25
src/api/modules/Image.js
Normal file
25
src/api/modules/Image.js
Normal file
@ -0,0 +1,25 @@
|
||||
import instance from '../../utils/axios.js'
|
||||
const ImageApi = {
|
||||
|
||||
/**
|
||||
* 获取商品标准类目接口
|
||||
*/
|
||||
getImage: (data) => instance.get('/zhishu/image/getImage', data),
|
||||
|
||||
/**
|
||||
* 用户上传图片接口
|
||||
*/
|
||||
imagelicenseUpload: (file) => {
|
||||
const formData = new FormData();
|
||||
formData.append('file', file);
|
||||
return instance.post('/zhishu/image/userUpload', formData, {
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data'
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
// 导出 pdd API 对象
|
||||
export { ImageApi };
|
||||
@ -9,15 +9,9 @@ export const getProvinces = () => {
|
||||
return instance.get('/district/provinces');
|
||||
};
|
||||
|
||||
// 获取运费信息
|
||||
export const getFreInfo = (templateId) => {
|
||||
return instance.get(`/district/freInfo/${templateId}`);
|
||||
};
|
||||
|
||||
// 为了向后兼容,也导出整个对象
|
||||
export const districtApi = {
|
||||
getProvinces,
|
||||
getFreInfo
|
||||
};
|
||||
|
||||
export default districtApi;
|
||||
46
src/api/modules/filterSet.js
Normal file
46
src/api/modules/filterSet.js
Normal file
@ -0,0 +1,46 @@
|
||||
import instance from '../../utils/axios.js'
|
||||
|
||||
// 过滤设置相关API
|
||||
const filterSetApi = {
|
||||
// 获取过滤设置列表(分页查询)
|
||||
getFilterSetList: (params) => instance.get('/zhishu/filterSet/list', { params }),
|
||||
|
||||
// 获取过滤设置详细信息
|
||||
getFilterSetById: (id) => instance.get(`/zhishu/filterSet/${id}`),
|
||||
|
||||
// 新增过滤设置
|
||||
addFilterSet: (data) => instance.post('/zhishu/filterSet', data),
|
||||
|
||||
// 修改过滤设置
|
||||
updateFilterSet: (data) => instance.put('/zhishu/filterSet/update', data),
|
||||
|
||||
// 删除过滤设置(支持批量删除)
|
||||
deleteFilterSet: (ids) => {
|
||||
const idStr = Array.isArray(ids) ? ids.join(',') : ids;
|
||||
return instance.delete(`/zhishu/filterSet/${idStr}`);
|
||||
},
|
||||
|
||||
// 导出过滤设置列表
|
||||
exportFilterSet: (data) => instance.post('/zhishu/filterSet/export', data, {
|
||||
responseType: 'blob'
|
||||
}),
|
||||
|
||||
// 获取导入模板
|
||||
getImportTemplate: () => instance.post('/zhishu/filterSet/importTemplate', {}, {
|
||||
responseType: 'blob'
|
||||
}),
|
||||
|
||||
// 上传文件导入
|
||||
uploadFilterSet: (file) => {
|
||||
const formData = new FormData();
|
||||
formData.append('file', file);
|
||||
return instance.post('/zhishu/filterSet/upload', formData, {
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data'
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// 导出模块
|
||||
export { filterSetApi };
|
||||
30
src/api/modules/newUser.js
Normal file
30
src/api/modules/newUser.js
Normal file
@ -0,0 +1,30 @@
|
||||
import instance from '../../utils/axios.js'
|
||||
const newUseApi = {
|
||||
|
||||
/**
|
||||
* 新增用户接口
|
||||
*/
|
||||
addNewUser: (data) => instance.post('/system/newUser', data),
|
||||
|
||||
/**
|
||||
* 身份证OCR识别接口
|
||||
*/
|
||||
cardRedirect: (file) => {
|
||||
const formData = new FormData();
|
||||
formData.append('file', file);
|
||||
return instance.post('/system/newUser/cardRedirect', formData);
|
||||
},
|
||||
|
||||
/**
|
||||
* 营业执照OCR识别接口
|
||||
*/
|
||||
licenseRedirect: (file) => {
|
||||
const formData = new FormData();
|
||||
formData.append('file', file);
|
||||
return instance.post('/system/newUser/licenseRedirect', formData);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 导出 pdd API 对象
|
||||
export { newUseApi };
|
||||
12
src/api/modules/pdd.js
Normal file
12
src/api/modules/pdd.js
Normal file
@ -0,0 +1,12 @@
|
||||
import instance from '../../utils/axios.js'
|
||||
const pddApi = {
|
||||
|
||||
/**
|
||||
* 获取商品标准类目接口
|
||||
*/
|
||||
getCats: () => instance.get('/huidiao/pdd/getCats'),
|
||||
|
||||
}
|
||||
|
||||
// 导出 pdd API 对象
|
||||
export { pddApi };
|
||||
81
src/api/modules/priceTemplate.js
Normal file
81
src/api/modules/priceTemplate.js
Normal file
@ -0,0 +1,81 @@
|
||||
import instance from '../../utils/axios.js'
|
||||
|
||||
// 价格模板相关API
|
||||
export const priceTemplateApi = {
|
||||
/**
|
||||
* 获取价格模板列表
|
||||
* @param {Object} params 查询参数
|
||||
* @returns {Promise}
|
||||
*/
|
||||
getList: (params) => instance.get('/priceTemplate/list', { params }),
|
||||
|
||||
/**
|
||||
* 获取价格模板详情
|
||||
* @param {number|string} id 价格模板ID
|
||||
* @returns {Promise}
|
||||
*/
|
||||
getDetail: (id) => instance.get(`/priceTemplate/${id}`),
|
||||
|
||||
/**
|
||||
* 根据店铺ID获取价格模板
|
||||
* @param {number|string} shopId 店铺ID
|
||||
* @returns {Promise}
|
||||
*/
|
||||
getByShopId: (shopId) => instance.get(`/priceTemplate/getByShopId/${shopId}`),
|
||||
|
||||
/**
|
||||
* 新增价格模板
|
||||
* @param {Object} data 价格模板数据
|
||||
* @returns {Promise}
|
||||
*/
|
||||
create: (data) => instance.post('/priceTemplate', data),
|
||||
|
||||
/**
|
||||
* 修改价格模板
|
||||
* @param {Object} data 价格模板数据
|
||||
* @returns {Promise}
|
||||
*/
|
||||
update: (data) => instance.put('/priceTemplate', data),
|
||||
|
||||
/**
|
||||
* 删除价格模板
|
||||
* @param {number|string|Array} ids 价格模板ID或ID数组
|
||||
* @returns {Promise}
|
||||
*/
|
||||
delete: (ids) => instance.delete(`/priceTemplate/${ids}`),
|
||||
|
||||
/**
|
||||
* 导出价格模板
|
||||
* @param {Object} params 查询参数
|
||||
* @returns {Promise}
|
||||
*/
|
||||
export: (params) => instance.get('//priceTemplate/export', { params }),
|
||||
|
||||
/**
|
||||
* 根据模板计算价格
|
||||
* @param {Object} data 计算参数
|
||||
* @returns {Promise}
|
||||
*/
|
||||
calculatePrice: (data) => instance.post('/priceTemplate/calculatePrice', data)
|
||||
}
|
||||
|
||||
// 兼容旧的导入方式
|
||||
export function listPriceTemplate(query) {
|
||||
return priceTemplateApi.getList(query)
|
||||
}
|
||||
|
||||
export function getPriceTemplate(id) {
|
||||
return priceTemplateApi.getDetail(id)
|
||||
}
|
||||
|
||||
export function delPriceTemplate(ids) {
|
||||
return priceTemplateApi.delete(ids)
|
||||
}
|
||||
|
||||
export function addPriceTemplate(data) {
|
||||
return priceTemplateApi.create(data)
|
||||
}
|
||||
|
||||
export function updatePriceTemplate(data) {
|
||||
return priceTemplateApi.update(data)
|
||||
}
|
||||
49
src/api/modules/priceTemplate/types.ts
Normal file
49
src/api/modules/priceTemplate/types.ts
Normal file
@ -0,0 +1,49 @@
|
||||
// 价格模板相关类型定义
|
||||
|
||||
// 价格调整项
|
||||
export interface PriceAdjustment {
|
||||
minPrice?: number;
|
||||
maxPrice?: number;
|
||||
adjustPercent?: number;
|
||||
adjustAmount?: number;
|
||||
}
|
||||
|
||||
// 价格模板数据对象
|
||||
export interface PriceTemplateVO {
|
||||
id: number | string;
|
||||
templateName: string;
|
||||
priceType: string;
|
||||
proportion?: number;
|
||||
addAmount?: number;
|
||||
status?: string;
|
||||
lowPrice?: number;
|
||||
highPrice?: number;
|
||||
rangePrice?: string;
|
||||
priceAdjustments?: PriceAdjustment[];
|
||||
}
|
||||
|
||||
// 价格模板查询参数
|
||||
export interface PriceTemplateQuery {
|
||||
pageNum: number;
|
||||
pageSize: number;
|
||||
templateName?: string;
|
||||
priceType?: string;
|
||||
proportion?: string | number;
|
||||
addAmount?: string | number;
|
||||
status?: string;
|
||||
params?: Record<string, any>;
|
||||
}
|
||||
|
||||
// 价格模板表单数据
|
||||
export interface PriceTemplateForm {
|
||||
id?: number | string;
|
||||
templateName?: string;
|
||||
priceType: string;
|
||||
proportion: number;
|
||||
addAmount: number;
|
||||
status?: string;
|
||||
lowPrice: number;
|
||||
highPrice: number;
|
||||
priceAdjustments: PriceAdjustment[];
|
||||
rangePrice?: string | PriceAdjustment[];
|
||||
}
|
||||
@ -62,3 +62,34 @@ export function delShelves(id) {
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询仓库信息列表
|
||||
*/
|
||||
export function getDepotNameList(phoneNumber) {
|
||||
return request({
|
||||
url: '/shelves/namelist',
|
||||
method: 'get',
|
||||
params: { phoneNumber }
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询货架名称列表
|
||||
*/
|
||||
export function getShelvesNameList(depotId) {
|
||||
return request({
|
||||
url: `/shelves/sheNamelist/${depotId}`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询货位名称列表
|
||||
*/
|
||||
export function getFreightNameList(sheId) {
|
||||
return request({
|
||||
url: `/shelves/freNamelist/${sheId}`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
274
src/api/modules/shopGoods.js
Normal file
274
src/api/modules/shopGoods.js
Normal file
@ -0,0 +1,274 @@
|
||||
import instance from '../../utils/axios.js'
|
||||
|
||||
/**
|
||||
* 商品管理相关接口
|
||||
*/
|
||||
|
||||
// 获取商品列表
|
||||
export const getShopGoodsList = async (params = {}) => {
|
||||
// 构造查询参数
|
||||
const queryParams = new URLSearchParams();
|
||||
|
||||
// 添加分页参数
|
||||
if (params.pageNum) queryParams.append('pageNum', params.pageNum);
|
||||
if (params.pageSize) queryParams.append('pageSize', params.pageSize);
|
||||
|
||||
// 添加搜索参数
|
||||
if (params.itemNumber) queryParams.append('itemNumber', params.itemNumber);
|
||||
if (params.goodsName) queryParams.append('goodsName', params.goodsName);
|
||||
if (params.artNo) queryParams.append('artNo', params.artNo);
|
||||
if (params.originalArtNo) queryParams.append('originalArtNo', params.originalArtNo);
|
||||
if (params.isbn) queryParams.append('isbn', params.isbn);
|
||||
if (params.conditionCode) queryParams.append('conditionCode', params.conditionCode);
|
||||
if (params.IsBookPicNull) queryParams.append('IsBookPicNull', params.IsBookPicNull);
|
||||
if (params.minprice) queryParams.append('minprice', params.minprice);
|
||||
if (params.maxprice) queryParams.append('maxprice', params.maxprice);
|
||||
if (params.mininventory) queryParams.append('mininventory', params.mininventory);
|
||||
if (params.maxinventory) queryParams.append('maxinventory', params.maxinventory);
|
||||
if (params.deliveryAddress) queryParams.append('deliveryAddress', params.deliveryAddress);
|
||||
if (params.cargoAreaIds) queryParams.append('cargoAreaIds', params.cargoAreaIds);
|
||||
if (params.isExistIsbn) queryParams.append('isExistIsbn', params.isExistIsbn);
|
||||
if (params.isQueryAllGoods) queryParams.append('isQueryAllGoods', params.isQueryAllGoods);
|
||||
if (params.isJoinDistribution) queryParams.append('isJoinDistribution', params.isJoinDistribution);
|
||||
|
||||
const url = `/zhishu/shopGoods/list?${queryParams.toString()}`;
|
||||
return instance.get(url);
|
||||
};
|
||||
|
||||
// 获取商品详情
|
||||
export const getShopGoodsDetail = (id) => {
|
||||
return instance.get(`/zhishu/shopGoods/detailShopGoods/${id}`);
|
||||
};
|
||||
|
||||
// 新增商品
|
||||
export const addShopGoods = (data) => {
|
||||
return instance.post('/zhishu/shopGoods/add', data);
|
||||
};
|
||||
|
||||
// 修改商品
|
||||
export const updateShopGoods = (data) => {
|
||||
return instance.post('/zhishu/shopGoods/update', data);
|
||||
};
|
||||
|
||||
// 删除商品
|
||||
export const deleteShopGoods = (ids, isProSynch = true) => {
|
||||
const idsStr = Array.isArray(ids) ? ids.join(',') : ids;
|
||||
return instance.delete(`/zhishu/shopGoods/${idsStr}?isProSynch=${isProSynch}`);
|
||||
};
|
||||
|
||||
// 导出商品列表
|
||||
export const exportShopGoods = (params) => {
|
||||
return instance.post('/zhishu/shopGoods/export', params, {
|
||||
responseType: 'blob'
|
||||
});
|
||||
};
|
||||
|
||||
// 导入商品Excel
|
||||
export const importShopGoodsExcel = (file, depotId) => {
|
||||
const formData = new FormData();
|
||||
formData.append('file', file);
|
||||
formData.append('depotId', depotId);
|
||||
return instance.post('/zhishu/shopGoods/importExcel', formData);
|
||||
};
|
||||
|
||||
// 上传商品图片
|
||||
export const uploadShopGoodsImage = (file) => {
|
||||
const formData = new FormData();
|
||||
formData.append('file', file);
|
||||
return instance.post('/zhishu/shopGoods/uploadImages', formData);
|
||||
};
|
||||
|
||||
// 发布商品到店铺
|
||||
export const publishGoodsToShop = (data) => {
|
||||
return instance.post('/zhishu/shopGoods/goodsAdd', data);
|
||||
};
|
||||
|
||||
// 获取库存变更日志
|
||||
export const getStockChangeLog = (id) => {
|
||||
return instance.get(`/zhishu/shopGoods/stockLog/${id}`);
|
||||
};
|
||||
|
||||
// 批量修改货区
|
||||
export const batchUpdateCargoArea = (data) => {
|
||||
return instance.put('/zhishu/shopGoods/batchUpdateAre', data);
|
||||
};
|
||||
|
||||
// 根据商品条码查询商品信息
|
||||
export const getProductByBarcode = (barcode) => {
|
||||
return instance.get(`/zhishu/shopGoods/info?barcode=${barcode}`);
|
||||
};
|
||||
|
||||
// 提交商品信息
|
||||
export const submitProduct = (data) => {
|
||||
return instance.post('/zhishu/shopGoods/submit', data);
|
||||
};
|
||||
|
||||
// 版权页上传
|
||||
export const submitFromCopyrightPage = (data) => {
|
||||
return instance.post('/zhishu/shopGoods/submitFromCopyrightPage', data);
|
||||
};
|
||||
|
||||
// 重复书籍检查
|
||||
export const checkRepeatBook = (data) => {
|
||||
return instance.post('/zhishu/shopGoods/repeatBook', data);
|
||||
};
|
||||
|
||||
// 孔夫子比价搜索
|
||||
export const searchKongfzBooks = (params) => {
|
||||
const queryParams = new URLSearchParams();
|
||||
if (params.keyword) queryParams.append('keyword', params.keyword);
|
||||
if (params.searchType) queryParams.append('searchType', params.searchType);
|
||||
if (params.sortType) queryParams.append('sortType', params.sortType);
|
||||
if (params.conditionValue) queryParams.append('conditionValue', params.conditionValue);
|
||||
if (params.cookies) queryParams.append('cookies', params.cookies);
|
||||
if (params.publisher) queryParams.append('publisher', params.publisher);
|
||||
if (params.author) queryParams.append('author', params.author);
|
||||
|
||||
return instance.get(`/zhishu/shopGoods/kongfz/search?${queryParams.toString()}`);
|
||||
};
|
||||
|
||||
// 根据书名获取作者和出版社信息
|
||||
export const getAuthorAndPublisher = (keyword, cookies) => {
|
||||
return instance.get(`/zhishu/shopGoods/getAuthorAndPublisher?keyword=${keyword}&cookies=${cookies}`);
|
||||
};
|
||||
|
||||
// 小程序上书记录
|
||||
export const getXcxShopGoods = (phoneNumber, pageNum = 1, pageSize = 10, date) => {
|
||||
let url = `/zhishu/shopGoods/xcx/${phoneNumber}?pageNum=${pageNum}&pageSize=${pageSize}`;
|
||||
if (date) url += `&date=${date}`;
|
||||
return instance.get(url);
|
||||
};
|
||||
|
||||
// 查询获取对应商品数据
|
||||
export const getGoodsData = (code, userId, pageNum = 1, pageSize = 10, date) => {
|
||||
let url = `/zhishu/shopGoods/getGoodsData?code=${code}&userId=${userId}&pageNum=${pageNum}&pageSize=${pageSize}`;
|
||||
if (date) url += `&date=${date}`;
|
||||
return instance.get(url);
|
||||
};
|
||||
|
||||
// 批量移动商品位置
|
||||
export const batchMoveItems = (itemIds, newLocationCode, userId) => {
|
||||
const params = new URLSearchParams();
|
||||
itemIds.forEach(id => params.append('itemIds', id));
|
||||
params.append('newLocationCode', newLocationCode);
|
||||
params.append('userId', userId);
|
||||
return instance.post('/zhishu/shopGoods/batchMoveItems', params);
|
||||
};
|
||||
|
||||
// 初始化库存到Redis
|
||||
export const batchInitInventoryToRedis = () => {
|
||||
return instance.get('/zhishu/shopGoods/batchInitInventoryToRedis');
|
||||
};
|
||||
|
||||
// 查询库存
|
||||
export const queryInventory = (shopGoodsId) => {
|
||||
return instance.get(`/zhishu/shopGoods/queryInventory?shopGoodsId=${shopGoodsId}`);
|
||||
};
|
||||
|
||||
// 操作库存
|
||||
export const operatingInventory = (data) => {
|
||||
return instance.post('/zhishu/shopGoods/operatingInventory', data);
|
||||
};
|
||||
|
||||
// 拉取孔夫子/万里牛商品
|
||||
export const synchronizationGoods = (shopId, shopType) => {
|
||||
let url = `/zhishu/shopGoods/synchronizationGoods?shopId=${shopId}`;
|
||||
if (shopType) url += `&shopType=${shopType}`;
|
||||
return instance.get(url);
|
||||
};
|
||||
|
||||
// 比对存入表格
|
||||
export const goodsComparison = (data) => {
|
||||
return instance.post('/zhishu/shopGoods/goodsComparison', data);
|
||||
};
|
||||
|
||||
// 分批比对商品
|
||||
export const batchGoodsComparison = (data) => {
|
||||
return instance.post('/zhishu/shopGoods/batchGoodsComparison', data);
|
||||
};
|
||||
|
||||
// 根据用户选择货号规则将商品存入数据库
|
||||
export const saveShopGoodsInDb = (data) => {
|
||||
return instance.post('/zhishu/shopGoods/saveShopGoodsInDb', data);
|
||||
};
|
||||
|
||||
// 随机修改孔夫子货号(仅测试使用)
|
||||
export const randomUpdateArtNo = (userId, shopId) => {
|
||||
return instance.get(`/zhishu/shopGoods/randomUpdateArtNo?userId=${userId}&shopId=${shopId}`);
|
||||
};
|
||||
|
||||
// 通过货号查询仓库信息
|
||||
export const getDepotIds = (artNo, userId) => {
|
||||
return instance.get(`/zhishu/shopGoods/getDepotIds?artNo=${artNo}&userId=${userId}`);
|
||||
};
|
||||
|
||||
// 修改商品价格
|
||||
export const editShopGoodsPrice = (data) => {
|
||||
return instance.post('/zhishu/shopGoods/editShopGoodsPrice', data);
|
||||
};
|
||||
|
||||
// 通过平台订单Id查询库存操作日志
|
||||
export const queryStockChangeLogByOrderSn = (orderSn, type) => {
|
||||
return instance.get(`/zhishu/shopGoods/queryStockChangeLogByOrderSn?orderSn=${orderSn}&type=${type}`);
|
||||
};
|
||||
|
||||
// 操作下架商品
|
||||
export const operatingSoldOut = (data) => {
|
||||
return instance.post('/zhishu/shopGoods/operatingSoldOut', data);
|
||||
};
|
||||
|
||||
// 通过userId查询对应用户商品表数据条数
|
||||
export const queryGoodsCountByUserId = (userId) => {
|
||||
return instance.get(`/zhishu/shopGoods/queryGoodsCountByUserId?userId=${userId}`);
|
||||
};
|
||||
|
||||
// 通过userId查询对应用户
|
||||
export const queryUserByUserId = (userId) => {
|
||||
return instance.get(`/zhishu/shopGoods/queryUserIdByUserId?userId=${userId}`);
|
||||
};
|
||||
|
||||
// 批量修改店铺商品下架/改价
|
||||
export const updateShopGoodsPrice = (data) => {
|
||||
return instance.post('/zhishu/shopGoods/updateShopGoodsPrice', data);
|
||||
};
|
||||
|
||||
// 为了向后兼容,也导出整个对象
|
||||
export const shopGoodsApi = {
|
||||
getShopGoodsList,
|
||||
getShopGoodsDetail,
|
||||
addShopGoods,
|
||||
updateShopGoods,
|
||||
deleteShopGoods,
|
||||
exportShopGoods,
|
||||
importShopGoodsExcel,
|
||||
uploadShopGoodsImage,
|
||||
publishGoodsToShop,
|
||||
getStockChangeLog,
|
||||
batchUpdateCargoArea,
|
||||
getProductByBarcode,
|
||||
submitProduct,
|
||||
submitFromCopyrightPage,
|
||||
checkRepeatBook,
|
||||
searchKongfzBooks,
|
||||
getAuthorAndPublisher,
|
||||
getXcxShopGoods,
|
||||
getGoodsData,
|
||||
batchMoveItems,
|
||||
batchInitInventoryToRedis,
|
||||
queryInventory,
|
||||
operatingInventory,
|
||||
synchronizationGoods,
|
||||
goodsComparison,
|
||||
batchGoodsComparison,
|
||||
saveShopGoodsInDb,
|
||||
randomUpdateArtNo,
|
||||
getDepotIds,
|
||||
editShopGoodsPrice,
|
||||
queryStockChangeLogByOrderSn,
|
||||
operatingSoldOut,
|
||||
queryGoodsCountByUserId,
|
||||
queryUserByUserId,
|
||||
updateShopGoodsPrice
|
||||
};
|
||||
|
||||
export default shopGoodsApi;
|
||||
100
src/api/modules/shopGoodsPublished.js
Normal file
100
src/api/modules/shopGoodsPublished.js
Normal file
@ -0,0 +1,100 @@
|
||||
import instance from '../../utils/axios.js'
|
||||
|
||||
/**
|
||||
* 已发布商品管理相关接口
|
||||
*/
|
||||
|
||||
// 获取已发布商品列表
|
||||
export const getShopGoodsPublishedList = async (params = {}) => {
|
||||
// 构造查询参数
|
||||
const queryParams = new URLSearchParams();
|
||||
|
||||
// 添加分页参数
|
||||
if (params.pageNum) queryParams.append('pageNum', params.pageNum);
|
||||
if (params.pageSize) queryParams.append('pageSize', params.pageSize);
|
||||
|
||||
// 添加搜索参数
|
||||
if (params.shopId) queryParams.append('shopId', params.shopId);
|
||||
if (params.isbn) queryParams.append('isbn', params.isbn);
|
||||
if (params.conditionCode) queryParams.append('conditionCode', params.conditionCode);
|
||||
if (params.goodsName) queryParams.append('goodsName', params.goodsName);
|
||||
if (params.shopName) queryParams.append('shopName', params.shopName);
|
||||
if (params.platformId) queryParams.append('platformId', params.platformId);
|
||||
if (params.status) queryParams.append('status', params.status);
|
||||
if (params.itemNumber) queryParams.append('itemNumber', params.itemNumber);
|
||||
if (params.price) queryParams.append('price', params.price);
|
||||
if (params.createdBy) queryParams.append('createdBy', params.createdBy);
|
||||
|
||||
const url = `/zhishu/shopGoodsPublished/list?${queryParams.toString()}`;
|
||||
return instance.get(url);
|
||||
};
|
||||
|
||||
// 获取已发布商品详情
|
||||
export const getShopGoodsPublishedDetail = (id) => {
|
||||
return instance.get(`/zhishu/shopGoodsPublished/${id}`);
|
||||
};
|
||||
|
||||
// 新增已发布商品记录
|
||||
export const addShopGoodsPublished = (data) => {
|
||||
return instance.post('/zhishu/shopGoodsPublished', data);
|
||||
};
|
||||
|
||||
// 修改已发布商品记录
|
||||
export const updateShopGoodsPublished = (data) => {
|
||||
return instance.put('/zhishu/shopGoodsPublished', data);
|
||||
};
|
||||
|
||||
// 删除已发布商品记录
|
||||
export const deleteShopGoodsPublished = (ids) => {
|
||||
const idsStr = Array.isArray(ids) ? ids.join(',') : ids;
|
||||
return instance.delete(`/zhishu/shopGoodsPublished/${idsStr}`);
|
||||
};
|
||||
|
||||
// 导出已发布商品列表
|
||||
export const exportShopGoodsPublished = (params) => {
|
||||
return instance.post('/zhishu/shopGoodsPublished/export', params, {
|
||||
responseType: 'blob'
|
||||
});
|
||||
};
|
||||
|
||||
// 拼多多添加商品记录(无需权限验证)
|
||||
export const pddAddGoods = (platformId, goodsId, shopId, userId) => {
|
||||
return instance.get(`/zhishu/shopGoodsPublished/pddAdd/${platformId}/${goodsId}/${shopId}/${userId}`);
|
||||
};
|
||||
|
||||
// 根据店铺ID查询商品列表
|
||||
export const getGoodsListByShopId = (shopId, platformIds) => {
|
||||
return instance.post('/zhishu/shopGoodsPublished/getListByShopId', platformIds, {
|
||||
params: { shopId }
|
||||
});
|
||||
};
|
||||
|
||||
// 商品发布驳回-类目修改cat_id
|
||||
export const updateCatId = (shopType, mallId, platformId) => {
|
||||
return instance.get('/zhishu/shopGoodsPublished/uodateCatId', {
|
||||
params: { shopType, mallId, platformId }
|
||||
});
|
||||
};
|
||||
|
||||
// 根据店铺Id和商品Id删除失败的商品
|
||||
export const deleteFailedGoods = (shopType, mallId, platformId) => {
|
||||
return instance.get('/zhishu/shopGoodsPublished/delShopGoodsPublished', {
|
||||
params: { shopType, mallId, platformId }
|
||||
});
|
||||
};
|
||||
|
||||
// 为了向后兼容,也导出整个对象
|
||||
export const shopGoodsPublishedApi = {
|
||||
getShopGoodsPublishedList,
|
||||
getShopGoodsPublishedDetail,
|
||||
addShopGoodsPublished,
|
||||
updateShopGoodsPublished,
|
||||
deleteShopGoodsPublished,
|
||||
exportShopGoodsPublished,
|
||||
pddAddGoods,
|
||||
getGoodsListByShopId,
|
||||
updateCatId,
|
||||
deleteFailedGoods
|
||||
};
|
||||
|
||||
export default shopGoodsPublishedApi;
|
||||
52
src/api/modules/userRecharge.js
Normal file
52
src/api/modules/userRecharge.js
Normal file
@ -0,0 +1,52 @@
|
||||
import instance from '../../utils/axios.js'
|
||||
|
||||
const userRechargeApi = {
|
||||
/**
|
||||
* 查询用户充值列表(分页)
|
||||
*/
|
||||
getUserRechargeList: (params) => instance.get('/zhishu/userRecharge/list', { params }),
|
||||
|
||||
/**
|
||||
* 导出用户充值列表
|
||||
*/
|
||||
exportUserRecharge: (data) => instance.post('/zhishu/userRecharge/export', data, {
|
||||
responseType: 'blob'
|
||||
}),
|
||||
|
||||
/**
|
||||
* 获取用户充值详细信息
|
||||
*/
|
||||
getUserRechargeById: (id) => instance.get(`/zhishu/userRecharge/${id}`),
|
||||
|
||||
/**
|
||||
* 新增用户充值
|
||||
*/
|
||||
addUserRecharge: (data) => instance.post('/zhishu/userRecharge', data),
|
||||
|
||||
/**
|
||||
* 用户充值(生成支付二维码)
|
||||
*/
|
||||
userRecharge: (data) => instance.post('/zhishu/userRecharge/userRecharge', data),
|
||||
|
||||
/**
|
||||
* 检查充值任务状态
|
||||
*/
|
||||
checkTask: (id) => instance.get(`/zhishu/userRecharge/checkTask/${id}`),
|
||||
|
||||
/**
|
||||
* 将充值状态修改为错误
|
||||
*/
|
||||
editRechargeToError: (id) => instance.get(`/zhishu/userRecharge/editRechargeToError/${id}`),
|
||||
|
||||
/**
|
||||
* 修改用户充值
|
||||
*/
|
||||
updateUserRecharge: (data) => instance.put('/zhishu/userRecharge', data),
|
||||
|
||||
/**
|
||||
* 删除用户充值
|
||||
*/
|
||||
deleteUserRecharge: (ids) => instance.delete(`/zhishu/userRecharge/${ids.join(',')}`)
|
||||
};
|
||||
|
||||
export { userRechargeApi };
|
||||
@ -96,6 +96,21 @@ const menuData = shallowRef([
|
||||
title: '自营书品',
|
||||
path: '/book/shopGoods',
|
||||
// permission: 'book:shopGoods:view'
|
||||
},
|
||||
{
|
||||
title: '书品中心',
|
||||
path: '/book/shopGoodsAll',
|
||||
// permission: 'book:shopGoodsAll:view'
|
||||
},
|
||||
{
|
||||
title: '过滤设置',
|
||||
path: '/book/filterSet',
|
||||
// permission: 'book:filterSet:view'
|
||||
},
|
||||
{
|
||||
title: '已发布书品管理',
|
||||
path: '/book/shopGoodsPublished'
|
||||
// permission: 'book:shopGoodsPublished:view'
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -165,6 +180,28 @@ const menuData = shallowRef([
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
title: '钱包',
|
||||
path: '/purse',
|
||||
icon: TrendCharts,
|
||||
children: [
|
||||
{
|
||||
title: '用户充值',
|
||||
path: '/purse/userRecharge',
|
||||
// permission: 'purse:userRecharge:view'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
title: '升级完整版',
|
||||
path: '/NewUser',
|
||||
children: [
|
||||
{
|
||||
title: '升级完整版',
|
||||
path: '/NewUser'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
title: '监控中心',
|
||||
path: '/monitor',
|
||||
|
||||
@ -125,6 +125,34 @@ const routes = [{
|
||||
component: () => import('@/views/shopGoods/index.vue'),
|
||||
// meta: { title: '自营书品', permission: 'book:shopGoods:view' }
|
||||
meta: { title: '自营书品' }
|
||||
},
|
||||
{
|
||||
path: '/book/shopGoodsAll',
|
||||
component: () => import('@/views/shopGoodsAll/index.vue'),
|
||||
// meta: { title: '自营书品', permission: 'book:shopGoods:view' }
|
||||
meta: { title: '书品中心' }
|
||||
},
|
||||
{
|
||||
path: '/book/filterSet',
|
||||
component: () => import('@/views/filterSet/index.vue'),
|
||||
// meta: { title: '过滤设置', permission: 'book:filterSet:view' }
|
||||
meta: { title: '过滤设置' }
|
||||
},
|
||||
{
|
||||
path: '/book/shopGoodsPublished',
|
||||
component: () => import('@/views/shopGoodsPublished/index.vue'),
|
||||
// meta: { title: '已发布书品管理', permission: 'book:shopGoodsPublished:view' }
|
||||
meta: { title: '已发布书品管理' }
|
||||
},
|
||||
{
|
||||
path: '/NewUser',
|
||||
component: () => import('@/views/NewUser/index.vue'),
|
||||
meta: { title: '升级完整版' }
|
||||
},
|
||||
{
|
||||
path: '/purse/userRecharge',
|
||||
component: () => import('@/views/UserRecharge/index.vue'),
|
||||
meta: { title: '用户充值' }
|
||||
}
|
||||
|
||||
]
|
||||
|
||||
483
src/views/NewUser/index.vue
Normal file
483
src/views/NewUser/index.vue
Normal file
@ -0,0 +1,483 @@
|
||||
<template>
|
||||
<div class="settle-in-container">
|
||||
<!-- 主页面内容 -->
|
||||
<div class="main-content">
|
||||
<h1 class="welcome-title">升级完整版</h1>
|
||||
<p class="welcome-desc">成为我们的合作伙伴,共创美好未来</p>
|
||||
<el-button type="primary" size="large" @click="dialogVisible = true" class="apply-btn">点击升级</el-button>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- 申请入驻对话框 -->
|
||||
<el-dialog title="完善信息" v-model="dialogVisible" width="50%" :before-close="handleClose">
|
||||
<el-form ref="settleForm" :model="form" :rules="rules" label-width="120px">
|
||||
<el-form-item label="身份证正反面" prop="cardIdentity" :error="cartInfo">
|
||||
<el-upload style="margin-right: 40px" class="avatar-uploader" :auto-upload="false" :show-file-list="false"
|
||||
:on-change="handleCartFrontChange" :before-upload="beforeAvatarUpload">
|
||||
<img v-if="cardFronUrl" :src="cardFronUrl" class="avatar" />
|
||||
<el-icon v-else class="avatar-uploader-icon">
|
||||
<Plus />
|
||||
</el-icon>
|
||||
<template #tip>
|
||||
<div class="upload-tip">请上传身份证正面</div>
|
||||
</template>
|
||||
</el-upload>
|
||||
|
||||
<el-upload class="avatar-uploader" :auto-upload="false" :show-file-list="false"
|
||||
:on-change="handleCartSideChange" :before-upload="beforeAvatarUpload">
|
||||
<img v-if="cartSideUrl" :src="cartSideUrl" class="avatar" />
|
||||
<el-icon v-else class="avatar-uploader-icon">
|
||||
<Plus />
|
||||
</el-icon>
|
||||
<template #tip>
|
||||
<div class="upload-tip">请上传身份证反面</div>
|
||||
</template>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="联系人" prop="contactPerson">
|
||||
<el-input v-model="form.contactPerson" disabled="true" placeholder="联系人姓名"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="联系电话" prop="contactPhone">
|
||||
<el-input v-model="form.contactPhone" placeholder="请输入联系电话"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="电子邮箱" prop="email">
|
||||
<el-input v-model="form.email" placeholder="请输入电子邮箱"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="营业执照" prop="license" :error="licenseInfo">
|
||||
<el-upload class="avatar-uploader" :auto-upload="false" :show-file-list="false"
|
||||
:on-change="handleLicenseChange" :before-upload="beforeAvatarUpload">
|
||||
<img v-if="imageUrl" :src="imageUrl" class="avatar" />
|
||||
<el-icon v-else class="avatar-uploader-icon">
|
||||
<Plus />
|
||||
</el-icon>
|
||||
<template #tip>
|
||||
<div class="upload-tip">请上传营业执照</div>
|
||||
</template>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item style="display: none" label="营业执照名称:" prop="licenseName">
|
||||
<el-input v-model="form.licenseName" placeholder="请输入营业执照名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="注册号:" prop="licenseNumber">
|
||||
<el-input v-model="form.licenseNumber" disabled="true" placeholder="营业执照注册号"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="企业名称" prop="companyName">
|
||||
<el-input v-model="form.companyName" disabled="true" placeholder="企业全称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="店铺地址" prop="adress">
|
||||
<el-input v-model="form.adress" disabled="true" placeholder="店铺地址"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="企业类型" prop="companyType">
|
||||
<el-select v-model="form.companyType" placeholder="请选择企业类型">
|
||||
<el-option label="有限责任公司" value="1"></el-option>
|
||||
<el-option label="股份有限公司" value="2"></el-option>
|
||||
<el-option label="个人独资企业" value="3"></el-option>
|
||||
<el-option label="合伙企业" value="4"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="营业执照过期时间" prop="licenseTime" label-width="150">
|
||||
<el-date-picker v-model="form.licenseTime" date-format="YYYY/MM/DD" value-format="YYYY/MM/DD" type="date"
|
||||
placeholder="date" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="经营许可证" prop="businessLicense">
|
||||
<el-upload class="avatar-uploader" :auto-upload="false" :show-file-list="false"
|
||||
:on-change="handleBusinessLicenseChange" :before-upload="beforeAvatarUpload">
|
||||
<img v-if="licenseImage" :src="licenseImage" class="avatar" />
|
||||
<el-icon v-else class="avatar-uploader-icon">
|
||||
<Plus />
|
||||
</el-icon>
|
||||
<template #tip>
|
||||
<div class="upload-tip">请上传经营许可证</div>
|
||||
</template>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="经营许可证过期时间" prop="businessLicenseTime" label-width="150">
|
||||
<el-date-picker v-model="form.businessLicenseTime" date-format="YYYY/MM/DD" value-format="YYYY/MM/DD"
|
||||
type="date" placeholder="date" />
|
||||
</el-form-item>
|
||||
<el-form-item label="出版物许可证证照核实方式" prop="remark">
|
||||
<el-input type="textarea" :rows="3" v-model="form.remark" placeholder="请输入其他需要说明的信息"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="submitForm">提 交</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref } from 'vue'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { Plus } from '@element-plus/icons-vue'
|
||||
import { newUseApi } from '@/api/modules/newUser.js'
|
||||
import { ImageApi } from '@/api/modules/Image.js'
|
||||
|
||||
// 表单引用
|
||||
const settleForm = ref()
|
||||
|
||||
// 不再需要headers,因为axios会自动处理
|
||||
// 身份证正面
|
||||
const cardFronUrl = ref('')
|
||||
// 身份证反面
|
||||
const cartSideUrl = ref('')
|
||||
// 营业执照图片
|
||||
const imageUrlOld = ref('')
|
||||
const imageUrl = ref('')
|
||||
|
||||
const licenseImageOld = ref('')
|
||||
const licenseImage = ref('')
|
||||
|
||||
const cartUrl = ref([])
|
||||
|
||||
const cartInfo = ref('')
|
||||
|
||||
const licenseInfo = ref('')
|
||||
// 身份证正面上传成功处理
|
||||
const handleCartFrontSuccess = async (res, file) => {
|
||||
try {
|
||||
cartInfo.value = res.data?.message || '';
|
||||
form.value.contactPerson = res.data?.name || '';
|
||||
if (res.data?.url) {
|
||||
const oldUrl = res.data.url;
|
||||
const response = await imageApi.getImage(oldUrl);
|
||||
cardFronUrl.value = response.data;
|
||||
cartUrl.value[0] = oldUrl;
|
||||
}
|
||||
} catch (error) {
|
||||
ElMessage.error('身份证正面处理失败');
|
||||
console.error('身份证正面处理错误:', error);
|
||||
}
|
||||
}
|
||||
|
||||
// 身份证反面上传成功处理
|
||||
const handleCartSideSuccess = async (res, file) => {
|
||||
try {
|
||||
cartInfo.value = res.data?.message || '';
|
||||
if (res.data?.url) {
|
||||
const oldUrl = res.data.url;
|
||||
const response = await imageApi.getImage(oldUrl);
|
||||
cartSideUrl.value = response.data;
|
||||
cartUrl.value = [cartUrl.value[0] || '', oldUrl];
|
||||
}
|
||||
} catch (error) {
|
||||
ElMessage.error('身份证反面处理失败');
|
||||
console.error('身份证反面处理错误:', error);
|
||||
}
|
||||
}
|
||||
|
||||
// 营业执照上传成功处理
|
||||
const handleAvatarSuccess = async (res, file) => {
|
||||
try {
|
||||
imageUrlOld.value = res.data?.url || '';
|
||||
if (imageUrlOld.value) {
|
||||
const response = await imageApi.getImage(imageUrlOld.value);
|
||||
imageUrl.value = response.data;
|
||||
}
|
||||
form.value.companyName = res.data?.name || '';
|
||||
form.value.licenseNumber = res.data?.regNum || '';
|
||||
form.value.adress = res.data?.address || '';
|
||||
if (res.data?.period) {
|
||||
form.value.licenseTime = res.data.period;
|
||||
}
|
||||
licenseInfo.value = res.data?.message || '';
|
||||
} catch (error) {
|
||||
ElMessage.error('营业执照处理失败');
|
||||
console.error('营业执照处理错误:', error);
|
||||
}
|
||||
}
|
||||
|
||||
// 经营许可证上传成功处理
|
||||
const handleLicenseSuccess = async (res, file) => {
|
||||
try {
|
||||
licenseImageOld.value = res.data?.url || '';
|
||||
licenseImage.value = res.data?.url || '';
|
||||
} catch (error) {
|
||||
ElMessage.error('经营许可证处理失败');
|
||||
console.error('经营许可证处理错误:', error);
|
||||
}
|
||||
}
|
||||
|
||||
// 身份证正面文件选择处理
|
||||
const handleCartFrontChange = async (file) => {
|
||||
try {
|
||||
const response = await newUseApi.cardRedirect(file.raw);
|
||||
await handleCartFrontSuccess(response, file);
|
||||
} catch (error) {
|
||||
ElMessage.error('身份证正面上传失败');
|
||||
console.error('身份证正面上传错误:', error);
|
||||
}
|
||||
}
|
||||
|
||||
// 身份证反面文件选择处理
|
||||
const handleCartSideChange = async (file) => {
|
||||
try {
|
||||
const response = await newUseApi.cardRedirect(file.raw);
|
||||
await handleCartSideSuccess(response, file);
|
||||
} catch (error) {
|
||||
ElMessage.error('身份证反面上传失败');
|
||||
console.error('身份证反面上传错误:', error);
|
||||
}
|
||||
}
|
||||
|
||||
// 营业执照文件选择处理
|
||||
const handleLicenseChange = async (file) => {
|
||||
try {
|
||||
const response = await newUseApi.licenseRedirect(file.raw);
|
||||
await handleAvatarSuccess(response, file);
|
||||
} catch (error) {
|
||||
ElMessage.error('营业执照上传失败');
|
||||
console.error('营业执照上传错误:', error);
|
||||
}
|
||||
}
|
||||
|
||||
// 经营许可证文件选择处理
|
||||
const handleBusinessLicenseChange = async (file) => {
|
||||
try {
|
||||
const response = await ImageApi.userUpload(file.raw);
|
||||
await handleLicenseSuccess(response, file);
|
||||
} catch (error) {
|
||||
ElMessage.error('经营许可证上传失败');
|
||||
console.error('经营许可证上传错误:', error);
|
||||
}
|
||||
}
|
||||
|
||||
// 图片上传之前操作
|
||||
const beforeAvatarUpload = (rawFile) => {
|
||||
if (rawFile.type !== 'image/jpeg' && rawFile.type !== 'image/png') {
|
||||
ElMessage.error('上传图片只能是 JPG/PNG 格式!')
|
||||
return false
|
||||
} else if (rawFile.size / 1024 / 1024 > 2) {
|
||||
ElMessage.error('上传图片大小不能超过 2MB!')
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// 响应式数据
|
||||
const dialogVisible = ref(false);
|
||||
const form = ref({
|
||||
companyName: '',
|
||||
contactPerson: '',
|
||||
contactPhone: '',
|
||||
email: '',
|
||||
companyType: '',
|
||||
cardIdentity: '',
|
||||
licenseName: '',
|
||||
licenseNumber: '',
|
||||
license: '',
|
||||
remark: '',
|
||||
adress: '',
|
||||
businessLicense: '',
|
||||
licenseTime: '',
|
||||
businessLicenseTime: '',
|
||||
});
|
||||
|
||||
// 表单验证规则
|
||||
const rules = {
|
||||
companyName: [
|
||||
{ required: true, message: '请输入企业名称', trigger: 'blur' }
|
||||
],
|
||||
adress: [
|
||||
{ required: true, message: '请输入店铺地址', trigger: 'blur' }
|
||||
],
|
||||
contactPerson: [
|
||||
{ required: true, message: '请输入联系人姓名' },
|
||||
{ max: 8, message: '最长8位字符', trigger: 'blur' }
|
||||
],
|
||||
contactPhone: [
|
||||
{ required: true, message: '请输入联系电话', trigger: 'blur' },
|
||||
{ pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号码', trigger: 'blur' }
|
||||
],
|
||||
email: [
|
||||
{ required: true, message: '请输入邮箱地址', trigger: 'blur' },
|
||||
{ type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }
|
||||
],
|
||||
companyType: [
|
||||
{ required: true, message: '请选择企业类型', trigger: 'change' }
|
||||
],
|
||||
// licenseName:[
|
||||
// { required: true, message: '请输入营业执照名称', trigger: 'change' }
|
||||
// ],
|
||||
licenseNumber: [
|
||||
{ required: true, message: '请输入营业执照注册号', trigger: 'change' }
|
||||
],
|
||||
license: [
|
||||
{ required: true, message: '请上传营业执照', trigger: 'change' }
|
||||
],
|
||||
businessLicense: [
|
||||
{ required: true, message: '请上传经营许可证', trigger: 'change' }
|
||||
],
|
||||
cardIdentity: [
|
||||
{ required: true },
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (cartUrl.value[0] == null && cartUrl.value[1] == null) {
|
||||
callback(new Error('请上传身份证正反面照片'));
|
||||
} else if (cartUrl.value[0] == null) {
|
||||
callback(new Error('请上传身份证正面照片'));
|
||||
} else if (cartUrl.value[1] == null) {
|
||||
callback(new Error('请上传身份证反面照片'));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
},
|
||||
trigger: 'change'
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
// 关闭对话框前的确认
|
||||
const handleClose = (done) => {
|
||||
ElMessageBox.confirm('确认关闭?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
resetForm();
|
||||
done();
|
||||
}).catch(() => { });
|
||||
};
|
||||
|
||||
// 提交表单
|
||||
const submitForm = () => {
|
||||
if (!settleForm.value) return;
|
||||
|
||||
form.value.license = imageUrlOld.value;
|
||||
form.value.cardIdentity = JSON.stringify(cartUrl.value);
|
||||
form.value.businessLicense = licenseImageOld.value;
|
||||
|
||||
settleForm.value.validate(async (valid) => {
|
||||
if (valid) {
|
||||
try {
|
||||
await newUseApi.addNewUser(form.value);
|
||||
ElMessage.success('提交成功!');
|
||||
dialogVisible.value = false;
|
||||
resetForm();
|
||||
} catch (error) {
|
||||
ElMessage.error('提交失败,请重试');
|
||||
console.error('提交表单错误:', error);
|
||||
}
|
||||
} else {
|
||||
ElMessage.warning('请填写完整信息');
|
||||
return false;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// 重置表单
|
||||
const resetForm = () => {
|
||||
if (settleForm.value) {
|
||||
settleForm.value.resetFields();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<style scoped>
|
||||
.settle-in-container {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background-color: #f5f7fa;
|
||||
min-height: calc(100vh - 120px);
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.main-content {
|
||||
text-align: center;
|
||||
padding: 40px;
|
||||
background: white;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
|
||||
width: 80%;
|
||||
max-width: 600px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
.welcome-title {
|
||||
font-size: 28px;
|
||||
color: #303133;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.welcome-desc {
|
||||
font-size: 16px;
|
||||
color: #909399;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.apply-btn {
|
||||
padding: 12px 36px;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
/* 响应式调整 */
|
||||
@media (max-width: 768px) {
|
||||
.el-dialog {
|
||||
width: 90% !important;
|
||||
}
|
||||
|
||||
.main-content {
|
||||
width: 90%;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.welcome-title {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
.welcome-desc {
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
.avatar-uploader {
|
||||
border: 1px dashed var(--el-border-color);
|
||||
border-radius: 6px;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
transition: var(--el-transition-duration-fast);
|
||||
}
|
||||
|
||||
.avatar-uploader:hover {
|
||||
border-color: var(--el-color-primary);
|
||||
}
|
||||
|
||||
.avatar-uploader-icon {
|
||||
font-size: 28px;
|
||||
color: #8c939d;
|
||||
width: 140px;
|
||||
height: 120px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.upload-tip {
|
||||
margin-top: 8px;
|
||||
width: 100%;
|
||||
/* 与上传区域同宽 */
|
||||
text-align: center;
|
||||
/* 文字居中 */
|
||||
}
|
||||
</style>
|
||||
<style scoped>
|
||||
.avatar-uploader .avatar {
|
||||
width: 178px;
|
||||
height: 178px;
|
||||
display: block;
|
||||
}
|
||||
</style>
|
||||
982
src/views/PriceTemplate/index.vue
Normal file
982
src/views/PriceTemplate/index.vue
Normal file
@ -0,0 +1,982 @@
|
||||
<template>
|
||||
<div class="list-container">
|
||||
<div class="search-area">
|
||||
<el-form :model="queryParams" inline>
|
||||
<el-form-item label="模板名称">
|
||||
<el-input v-model="searchKeyword" placeholder="请输入价格模板名称" clearable @clear="loadPriceTemplateList"
|
||||
@keyup.enter="handleSearch" />
|
||||
</el-form-item>
|
||||
<el-form-item label="价格类型">
|
||||
<el-select v-model="queryParams.priceType" placeholder="请选择价格类型" clearable>
|
||||
<el-option v-for="dict in t_price_type" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态">
|
||||
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
|
||||
<el-option label="正常" value="0" />
|
||||
<el-option label="禁用" value="1" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="增加比例">
|
||||
<el-input v-model="queryParams.proportion" placeholder="请输入增加比例" clearable @clear="loadPriceTemplateList"
|
||||
@keyup.enter="handleSearch">
|
||||
<template #append>%</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="增加金额">
|
||||
<el-input v-model="queryParams.addAmount" placeholder="请输入增加金额" clearable @clear="loadPriceTemplateList"
|
||||
@keyup.enter="handleSearch">
|
||||
<template #append>元</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleSearch">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="handleReset">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<div class="action-bar">
|
||||
<div class="action-left">
|
||||
<el-button type="primary" @click="openPriceTemplateDialog()">新增</el-button>
|
||||
<el-button type="primary" @click="handleEdit">编辑</el-button>
|
||||
<el-button type="danger" @click="handleBatchDelete">删除</el-button>
|
||||
</div>
|
||||
<div class="action-right">
|
||||
<RefreshButton @refresh="loadPriceTemplateList" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<el-table v-loading="loading" :data="priceTemplateList" border style="width: 100%" row-key="id"
|
||||
@selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column prop="id" label="ID" width="80" />
|
||||
<el-table-column prop="templateName" label="价格模板名称" />
|
||||
<el-table-column prop="priceType" label="价格类型" width="150">
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="row.priceType === '0' ? 'primary' : 'success'">
|
||||
{{ getPriceTypeText(row.priceType) }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="status" label="状态" width="80">
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="row.status === '0' ? 'success' : 'danger'">
|
||||
{{ row.status === '0' ? '正常' : '禁用' }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="200" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button type="primary" link @click="handleUpdate(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button type="danger" link @click="handleDelete(row)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<div class="pagination-container">
|
||||
<el-pagination v-model:current-page="queryParams.pageNum" v-model:page-size="queryParams.pageSize"
|
||||
:page-sizes="[10, 20, 50, 100]" layout="total, sizes, prev, pager, next, jumper" :total="total"
|
||||
@size-change="handleSizeChange" @current-change="handleCurrentChange" />
|
||||
</div>
|
||||
|
||||
|
||||
<!-- 添加或修改价格模板对话框 -->
|
||||
<el-dialog v-if="dialog.visible" :title="dialog.title" v-model="dialog.visible" @close="resetFormData"
|
||||
width="1000px" append-to-body destroy-on-close class="price-template-dialog">
|
||||
<el-form ref="priceTemplateFormRef" :model="form" :rules="rules" label-width="80px" class="price-form">
|
||||
<!-- 模板名称 -->
|
||||
<el-form-item label="模板名称" prop="templateName" class="form-item-with-tip">
|
||||
<el-input v-model="form.templateName" placeholder="请输入模板名称" class="template-name-input" />
|
||||
<div class="form-tip">填写模板名称,之后将会在店铺设置中选择此处的价格模板</div>
|
||||
</el-form-item>
|
||||
|
||||
<!-- 价格类型 -->
|
||||
<el-form-item label="价格类型" prop="priceType" class="form-item-with-tip">
|
||||
<el-radio-group v-model="form.priceType" class="price-type-radio">
|
||||
<el-radio v-for="dict in t_price_type" :key="dict.value" :value="dict.value">{{ dict.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
<div class="form-tip">
|
||||
<div>书价就是库存里的商品价格</div>
|
||||
<div>总价就是书价+仓库运费模板设置的运费</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<!-- 价格区间 -->
|
||||
<el-form-item label="价格区间" class="form-item-with-tip">
|
||||
<div class="price-range-container">
|
||||
<el-input-number v-model="form.lowPrice" :min="0.01" :max="99999" :precision="2" controls-position="right"
|
||||
class="price-input" />
|
||||
<span class="range-separator">至</span>
|
||||
<el-input-number v-model="form.highPrice" :min="0.01" :max="99999" :precision="2" controls-position="right"
|
||||
class="price-input" />
|
||||
</div>
|
||||
<div class="form-tip">比如填写5和10,那么低于5和高于10直接过滤掉</div>
|
||||
</el-form-item>
|
||||
|
||||
<!-- 价格调整规则表格 -->
|
||||
<div class="price-adjustment-section">
|
||||
<div class="adjustment-header">
|
||||
<span class="header-item">价格区间下限(元)</span>
|
||||
<span class="header-item">价格区间上限(元)</span>
|
||||
<span class="header-item">加点(%)</span>
|
||||
<span class="header-item">加价(元)</span>
|
||||
<span class="header-item">操作</span>
|
||||
</div>
|
||||
|
||||
<div v-for="(item, index) in form.priceAdjustments" :key="index" class="adjustment-row">
|
||||
<el-input v-model="item.minPrice" placeholder="请输入百分比" class="adjustment-input" type="number">
|
||||
<template #append>元</template>
|
||||
</el-input>
|
||||
|
||||
<el-input v-model="item.maxPrice" placeholder="请输入固定金额" class="adjustment-input" type="number">
|
||||
<template #append>元</template>
|
||||
</el-input>
|
||||
|
||||
<el-input v-model="item.adjustPercent" placeholder="请输入百分比" class="adjustment-input" type="number">
|
||||
<template #append>%</template>
|
||||
</el-input>
|
||||
|
||||
<el-input v-model="item.adjustAmount" placeholder="请输入固定金额" class="adjustment-input" type="number">
|
||||
<template #append>元</template>
|
||||
</el-input>
|
||||
|
||||
<div class="adjustment-actions">
|
||||
<el-button v-if="index === form.priceAdjustments.length - 1 && form.priceAdjustments.length < 10"
|
||||
type="primary" link size="small" @click="addAdjustment" class="action-text-btn">
|
||||
增加条数
|
||||
</el-button>
|
||||
<el-button v-if="form.priceAdjustments.length > 1" type="danger" link size="small"
|
||||
@click="removeAdjustment(index)" class="action-text-btn">
|
||||
删除
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 提示信息 -->
|
||||
<div class="notice-section">
|
||||
<p class="notice-red">注意:只填一行则全部根据该区间走</p>
|
||||
<p class="notice-orange">示例:成本*加点(%)+成本+加价(元)</p>
|
||||
<p class="notice-orange">例如:5*10%+5+20=25.5(元)</p>
|
||||
</div>
|
||||
</el-form>
|
||||
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted, nextTick } from 'vue'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { Search, Plus } from '@element-plus/icons-vue'
|
||||
import { priceTemplateApi } from '@/api/modules/priceTemplate'
|
||||
import RefreshButton from '@/components/RefreshButton.vue'
|
||||
|
||||
// 模拟字典数据,你可以根据实际情况调整
|
||||
const t_price_type = ref([
|
||||
{ label: '书价', value: '0' },
|
||||
{ label: '总价(书价+运费)', value: '1' }
|
||||
])
|
||||
|
||||
|
||||
// 响应式数据
|
||||
const priceTemplateList = ref([])
|
||||
const buttonLoading = ref(false)
|
||||
const loading = ref(false)
|
||||
const showSearch = ref(true)
|
||||
const ids = ref([])
|
||||
const single = ref(true)
|
||||
const multiple = ref(true)
|
||||
const total = ref(0)
|
||||
const searchKeyword = ref('')
|
||||
|
||||
// 表单引用
|
||||
const queryFormRef = ref(null)
|
||||
const priceTemplateFormRef = ref(null)
|
||||
|
||||
// 对话框状态
|
||||
const dialog = reactive({
|
||||
visible: false,
|
||||
title: ''
|
||||
})
|
||||
|
||||
// 初始化表单数据
|
||||
const initFormData = {
|
||||
id: undefined,
|
||||
templateName: '',
|
||||
priceType: '0',
|
||||
proportion: 0,
|
||||
addAmount: 0,
|
||||
status: '0',
|
||||
highPrice: 99999,
|
||||
lowPrice: 0.01,
|
||||
priceAdjustments: [
|
||||
{
|
||||
minPrice: 0.01,
|
||||
maxPrice: 1,
|
||||
adjustPercent: '',
|
||||
adjustAmount: ''
|
||||
}
|
||||
],
|
||||
rangePrice: undefined
|
||||
}
|
||||
|
||||
// 查询参数
|
||||
const queryParams = ref({
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
templateName: '',
|
||||
priceType: '',
|
||||
proportion: '',
|
||||
addAmount: '',
|
||||
status: ''
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const form = ref({ ...initFormData })
|
||||
|
||||
// 验证最小值
|
||||
const validateLowPrice = (rule, value, callback) => {
|
||||
if (value === null || value === undefined) {
|
||||
callback(new Error('最小值不能为空'))
|
||||
} else if (form.value.highPrice !== null && form.value.highPrice !== undefined && value >= form.value.highPrice) {
|
||||
callback(new Error('最小值必须小于最大值'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
}
|
||||
|
||||
// 验证最大值
|
||||
const validateHighPrice = (rule, value, callback) => {
|
||||
if (value === null || value === undefined) {
|
||||
callback(new Error('最大值不能为空'))
|
||||
} else if (form.value.lowPrice !== null && form.value.lowPrice !== undefined && value <= form.value.lowPrice) {
|
||||
ElMessage.warning("价格区间最大值必须大于最小值")
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
}
|
||||
|
||||
// 表单验证规则
|
||||
const rules = ref({
|
||||
templateName: [{ required: true, message: '模板名称不能为空', trigger: 'blur' }],
|
||||
lowPrice: [
|
||||
{ required: true, message: '最小值不能为空', trigger: 'blur' },
|
||||
{ validator: validateLowPrice, trigger: 'blur' }
|
||||
],
|
||||
highPrice: [
|
||||
{ required: true, message: '最大值不能为空', trigger: 'blur' },
|
||||
{ validator: validateHighPrice, trigger: 'blur' }
|
||||
]
|
||||
})
|
||||
|
||||
|
||||
// 添加调整项
|
||||
const addAdjustment = () => {
|
||||
const lastItem = form.value.priceAdjustments[form.value.priceAdjustments.length - 1]
|
||||
form.value.priceAdjustments.push({
|
||||
minPrice: lastItem.maxPrice ? Number(lastItem.maxPrice) + 0.01 : 0.01,
|
||||
maxPrice: '',
|
||||
adjustPercent: '',
|
||||
adjustAmount: ''
|
||||
})
|
||||
}
|
||||
|
||||
// 移除调整项
|
||||
const removeAdjustment = (index) => {
|
||||
form.value.priceAdjustments.splice(index, 1)
|
||||
}
|
||||
|
||||
// 验证最小价格
|
||||
const validateMinPrice = (index) => {
|
||||
return (rule, value, callback) => {
|
||||
if (!value || value === '') {
|
||||
callback(new Error('请输入最小价格'))
|
||||
return
|
||||
}
|
||||
const numValue = Number(value)
|
||||
if (isNaN(numValue) || numValue < 0.01) {
|
||||
callback(new Error('价格区间下限不能小于0.01元'))
|
||||
return
|
||||
}
|
||||
if (index > 0 && form.value.priceAdjustments[index - 1] && numValue <= Number(form.value.priceAdjustments[index - 1].maxPrice)) {
|
||||
callback(new Error('区间不能重复'))
|
||||
return
|
||||
}
|
||||
callback()
|
||||
}
|
||||
}
|
||||
|
||||
// 验证最大价格
|
||||
const validateMaxPrice = (index) => {
|
||||
return (rule, value, callback) => {
|
||||
if (!value || value === '') {
|
||||
callback(new Error('请输入最大价格'))
|
||||
return
|
||||
}
|
||||
|
||||
const maxPrice = Number(value)
|
||||
if (isNaN(maxPrice)) {
|
||||
callback(new Error('请输入有效的数字'))
|
||||
return
|
||||
}
|
||||
|
||||
const currentRow = form.value.priceAdjustments[index]
|
||||
if (!currentRow) {
|
||||
callback()
|
||||
return
|
||||
}
|
||||
|
||||
const minPrice = Number(currentRow.minPrice)
|
||||
if (!isNaN(minPrice) && maxPrice <= minPrice) {
|
||||
callback(new Error('价格区间上限要大于价格下限'))
|
||||
return
|
||||
}
|
||||
|
||||
callback()
|
||||
}
|
||||
}
|
||||
// 验证加点百分比
|
||||
const validateAdjustPercent = (rule, value, callback) => {
|
||||
if (value === undefined || value === null || value === '') {
|
||||
callback(new Error('请输入加点百分比'))
|
||||
} else if (isNaN(value) || Number(value) < 0) {
|
||||
callback(new Error('请输入有效的正数百分比'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
}
|
||||
|
||||
// 验证加价金额
|
||||
const validateAdjustAmount = (rule, value, callback) => {
|
||||
if (value === undefined || value === null || value === '') {
|
||||
callback(new Error('请输入加价金额'))
|
||||
} else if (isNaN(value) || Number(value) < 0) {
|
||||
callback(new Error('请输入有效的正数金额'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
}
|
||||
|
||||
// const resetFormData = async () => {
|
||||
// form.value.priceAdjustments.length = 1;
|
||||
// this.form = {
|
||||
// templateName: '',
|
||||
// priceType: '',
|
||||
// lowPrice: 0,
|
||||
// highPrice: 0,
|
||||
// priceAdjustments: [
|
||||
// {
|
||||
// minPrice: 0,
|
||||
// maxPrice: 1,
|
||||
// adjustPercent: undefined,
|
||||
// adjustAmount: undefined
|
||||
// }
|
||||
// ]
|
||||
// };
|
||||
// };
|
||||
|
||||
// 重置表单数据
|
||||
const resetFormData = () => {
|
||||
form.value = { ...initFormData }
|
||||
form.value.priceAdjustments = [
|
||||
{
|
||||
minPrice: 0.01,
|
||||
maxPrice: 1,
|
||||
adjustPercent: '',
|
||||
adjustAmount: ''
|
||||
}
|
||||
]
|
||||
// 清除表单验证
|
||||
nextTick(() => {
|
||||
priceTemplateFormRef.value?.clearValidate()
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 加载价格模板列表
|
||||
const loadPriceTemplateList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
// 构建查询参数,过滤掉空值
|
||||
const params = {
|
||||
pageNum: queryParams.value.pageNum,
|
||||
pageSize: queryParams.value.pageSize
|
||||
}
|
||||
|
||||
// 只添加非空的查询参数
|
||||
if (searchKeyword.value && searchKeyword.value.trim()) {
|
||||
params.templateName = searchKeyword.value.trim()
|
||||
}
|
||||
if (queryParams.value.priceType && queryParams.value.priceType.trim()) {
|
||||
params.priceType = queryParams.value.priceType.trim()
|
||||
}
|
||||
if (queryParams.value.status && queryParams.value.status.trim()) {
|
||||
params.status = queryParams.value.status.trim()
|
||||
}
|
||||
if (queryParams.value.proportion && queryParams.value.proportion.trim()) {
|
||||
params.proportion = queryParams.value.proportion.trim()
|
||||
}
|
||||
if (queryParams.value.addAmount && queryParams.value.addAmount.trim()) {
|
||||
params.addAmount = queryParams.value.addAmount.trim()
|
||||
}
|
||||
|
||||
const res = await priceTemplateApi.getList(params)
|
||||
|
||||
console.log('API返回数据:', res)
|
||||
|
||||
// 确保数据结构正确,强制转换为数组
|
||||
if (res && res.data) {
|
||||
// 处理不同的数据结构
|
||||
let dataList = []
|
||||
let totalCount = 0
|
||||
|
||||
if (Array.isArray(res.data)) {
|
||||
// 如果 res.data 直接是数组
|
||||
dataList = res.data
|
||||
totalCount = res.total || res.data.length
|
||||
} else if (res.data.rows && Array.isArray(res.data.rows)) {
|
||||
// 如果 res.data.rows 是数组
|
||||
dataList = res.data.rows
|
||||
totalCount = res.data.total || res.data.rows.length
|
||||
} else if (res.data.list && Array.isArray(res.data.list)) {
|
||||
// 如果 res.data.list 是数组
|
||||
dataList = res.data.list
|
||||
totalCount = res.data.total || res.data.list.length
|
||||
} else {
|
||||
// 其他情况,确保是空数组
|
||||
dataList = []
|
||||
totalCount = 0
|
||||
}
|
||||
|
||||
priceTemplateList.value = dataList
|
||||
total.value = totalCount
|
||||
} else {
|
||||
priceTemplateList.value = []
|
||||
total.value = 0
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取价格模板列表失败:', error)
|
||||
priceTemplateList.value = []
|
||||
total.value = 0
|
||||
ElMessage.error('获取价格模板列表失败')
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
// 查询价格模板列表(兼容原有方法名)
|
||||
const getList = loadPriceTemplateList
|
||||
|
||||
// 搜索处理
|
||||
const handleSearch = () => {
|
||||
queryParams.value.pageNum = 1
|
||||
loadPriceTemplateList()
|
||||
}
|
||||
|
||||
// 重置搜索
|
||||
const handleReset = () => {
|
||||
searchKeyword.value = ''
|
||||
queryParams.value.priceType = ''
|
||||
queryParams.value.status = ''
|
||||
queryParams.value.proportion = ''
|
||||
queryParams.value.addAmount = ''
|
||||
queryParams.value.pageNum = 1
|
||||
loadPriceTemplateList()
|
||||
}
|
||||
|
||||
// 编辑按钮操作(从操作栏调用)
|
||||
const handleEdit = (row) => {
|
||||
if (row) {
|
||||
// 如果传递了行数据,则编辑该行
|
||||
handleUpdate(row)
|
||||
} else {
|
||||
// 否则检查是否有选中行
|
||||
if (ids.value.length !== 1) {
|
||||
ElMessage.warning('请选择一条记录进行修改')
|
||||
return
|
||||
}
|
||||
handleUpdate({ id: ids.value[0] })
|
||||
}
|
||||
}
|
||||
|
||||
// 批量删除按钮操作
|
||||
const handleBatchDelete = () => {
|
||||
if (ids.value.length === 0) {
|
||||
ElMessage.warning('请至少选择一条记录')
|
||||
return
|
||||
}
|
||||
|
||||
ElMessageBox.confirm(`确认删除选中的${ids.value.length}条价格模板记录吗?`, '警告', {
|
||||
type: 'warning'
|
||||
}).then(async () => {
|
||||
try {
|
||||
await priceTemplateApi.batchDelete(ids.value)
|
||||
ElMessage.success('批量删除成功')
|
||||
await getList()
|
||||
} catch (error) {
|
||||
console.error('批量删除失败:', error)
|
||||
ElMessage.error('批量删除失败')
|
||||
}
|
||||
}).catch(() => { })
|
||||
}
|
||||
/** 取消按钮 */
|
||||
const cancel = () => {
|
||||
reset();
|
||||
dialog.visible = false;
|
||||
};
|
||||
|
||||
/** 表单重置 */
|
||||
const reset = () => {
|
||||
form.value = { ...initFormData };
|
||||
priceTemplateFormRef.value?.resetFields();
|
||||
};
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
queryParams.value.pageNum = 1;
|
||||
getList();
|
||||
};
|
||||
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value?.resetFields();
|
||||
handleQuery();
|
||||
};
|
||||
|
||||
// 打开价格模板对话框
|
||||
const openPriceTemplateDialog = (row = null) => {
|
||||
reset()
|
||||
if (row) {
|
||||
handleUpdate(row)
|
||||
} else {
|
||||
dialog.visible = true
|
||||
dialog.title = '新增价格模板'
|
||||
}
|
||||
}
|
||||
|
||||
// 多选框选中数据
|
||||
const handleSelectionChange = (selection) => {
|
||||
ids.value = selection.map((item) => item.id)
|
||||
single.value = selection.length !== 1
|
||||
multiple.value = !selection.length
|
||||
}
|
||||
|
||||
// 新增按钮操作
|
||||
const handleAdd = () => {
|
||||
reset()
|
||||
dialog.visible = true
|
||||
dialog.title = '添加价格模板'
|
||||
}
|
||||
|
||||
// 修改按钮操作
|
||||
const handleUpdate = async (row) => {
|
||||
reset()
|
||||
const _id = row?.id || ids.value[0]
|
||||
|
||||
try {
|
||||
const res = await priceTemplateApi.getDetail(_id)
|
||||
console.log('获取价格模板详情:', res)
|
||||
|
||||
if (res.data && res.data.lowPrice != null && res.data.highPrice != null && res.data.rangePrice != null) {
|
||||
res.data.lowPrice /= 100
|
||||
res.data.highPrice /= 100
|
||||
|
||||
// 解析 JSON 字符串
|
||||
const rangePriceData = JSON.parse(res.data.rangePrice).map(item => ({
|
||||
...item,
|
||||
minPrice: item.minPrice / 100, // 分 → 元
|
||||
maxPrice: item.maxPrice / 100, // 分 → 元
|
||||
adjustAmount: item.adjustAmount / 100, // 分 → 元
|
||||
adjustPercent: item.adjustPercent ? Number(item.adjustPercent) : 0
|
||||
}))
|
||||
|
||||
// 转换为数组
|
||||
const priceAdjustments = Object.values(rangePriceData)
|
||||
res.data.priceAdjustments = priceAdjustments
|
||||
res.data.rangePrice = priceAdjustments
|
||||
}
|
||||
|
||||
Object.assign(form.value, res.data)
|
||||
console.log('表单数据:', form.value)
|
||||
dialog.visible = true
|
||||
dialog.title = '修改价格模板'
|
||||
} catch (error) {
|
||||
console.error('获取价格模板详情失败:', error)
|
||||
ElMessage.error('获取价格模板详情失败')
|
||||
}
|
||||
}
|
||||
|
||||
// 提交按钮
|
||||
const submitForm = () => {
|
||||
priceTemplateFormRef.value?.validate(async (valid) => {
|
||||
if (valid) {
|
||||
try {
|
||||
// 创建表单数据副本,避免修改原始数据
|
||||
const formData = { ...form.value }
|
||||
formData.lowPrice *= 100
|
||||
formData.highPrice *= 100
|
||||
|
||||
// 处理 priceAdjustments 数组
|
||||
formData.priceAdjustments = formData.priceAdjustments.map(item => ({
|
||||
...item,
|
||||
minPrice: item.minPrice * 100,
|
||||
maxPrice: item.maxPrice * 100,
|
||||
adjustAmount: item.adjustAmount * 100
|
||||
}))
|
||||
|
||||
formData.rangePrice = JSON.stringify(formData.priceAdjustments)
|
||||
buttonLoading.value = true
|
||||
|
||||
if (formData.id) {
|
||||
await priceTemplateApi.update(formData)
|
||||
} else {
|
||||
await priceTemplateApi.create(formData)
|
||||
}
|
||||
|
||||
ElMessage.success('操作成功')
|
||||
dialog.visible = false
|
||||
await getList()
|
||||
} catch (error) {
|
||||
console.error('提交失败:', error)
|
||||
ElMessage.error('操作失败')
|
||||
} finally {
|
||||
buttonLoading.value = false
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 删除按钮操作
|
||||
const handleDelete = async (row) => {
|
||||
const _ids = row?.id || ids.value
|
||||
|
||||
try {
|
||||
await ElMessageBox.confirm(
|
||||
`是否确认删除价格模板编号为"${_ids}"的数据项?`,
|
||||
'警告',
|
||||
{
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}
|
||||
)
|
||||
|
||||
await priceTemplateApi.delete(_ids)
|
||||
ElMessage.success('删除成功')
|
||||
await getList()
|
||||
} catch (error) {
|
||||
if (error !== 'cancel') {
|
||||
console.error('删除失败:', error)
|
||||
ElMessage.error('删除失败')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 导出按钮操作
|
||||
const handleExport = async () => {
|
||||
try {
|
||||
await priceTemplateApi.export(queryParams.value)
|
||||
ElMessage.success('导出成功')
|
||||
} catch (error) {
|
||||
console.error('导出失败:', error)
|
||||
ElMessage.error('导出失败')
|
||||
}
|
||||
}
|
||||
|
||||
// 获取价格类型文本
|
||||
const getPriceTypeText = (priceType) => {
|
||||
const typeMap = {
|
||||
'0': '书价',
|
||||
'1': '总价(书价+运费)'
|
||||
}
|
||||
return typeMap[priceType] || '未知'
|
||||
}
|
||||
|
||||
// 分页大小改变
|
||||
const handleSizeChange = (size) => {
|
||||
queryParams.value.pageSize = size
|
||||
queryParams.value.pageNum = 1
|
||||
loadPriceTemplateList()
|
||||
}
|
||||
|
||||
// 当前页改变
|
||||
const handleCurrentChange = (page) => {
|
||||
queryParams.value.pageNum = page
|
||||
loadPriceTemplateList()
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
// 延迟加载,确保组件完全挂载
|
||||
nextTick(() => {
|
||||
getList()
|
||||
})
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
<style scoped>
|
||||
.list-container {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.search-area {
|
||||
margin-bottom: 20px;
|
||||
padding: 18px;
|
||||
background-color: #fff;
|
||||
border-radius: 4px;
|
||||
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.search-area :deep(.el-form-item) {
|
||||
margin-right: 18px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.action-bar {
|
||||
margin-bottom: 20px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.action-left {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.action-right {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.pagination-container {
|
||||
margin-top: 20px;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.dialog-footer {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.el-input-number .el-input__inner {
|
||||
text-align: left !important;
|
||||
}
|
||||
|
||||
/* 表单内嵌表格样式调整 */
|
||||
.el-form .el-table {
|
||||
margin: 20px 0;
|
||||
}
|
||||
|
||||
.el-form .el-table .el-form-item {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/* 提示文字样式 */
|
||||
.el-form h3 {
|
||||
margin: 10px 0;
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
/* 价格模板对话框样式 */
|
||||
.price-template-dialog .el-dialog__header {
|
||||
padding: 20px 24px 16px;
|
||||
border-bottom: 1px solid #f0f0f0;
|
||||
}
|
||||
|
||||
.price-template-dialog .el-dialog__body {
|
||||
padding: 24px;
|
||||
}
|
||||
|
||||
/* 表单样式 */
|
||||
.price-form {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.form-item-with-tip {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.form-item-with-tip .el-form-item__content {
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.template-name-input {
|
||||
width: 400px;
|
||||
}
|
||||
|
||||
.form-tip {
|
||||
margin-top: 8px;
|
||||
font-size: 12px;
|
||||
color: #999;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.form-tip div {
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
/* 价格类型单选框样式 */
|
||||
.price-type-radio {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.price-type-radio .el-radio {
|
||||
margin-right: 24px;
|
||||
}
|
||||
|
||||
/* 价格区间样式 */
|
||||
.price-range-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.price-input {
|
||||
width: 150px;
|
||||
}
|
||||
|
||||
.range-separator {
|
||||
color: #666;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
/* 价格调整规则表格样式 */
|
||||
.price-adjustment-section {
|
||||
margin: 24px 0;
|
||||
border: 1px solid #e4e7ed;
|
||||
border-radius: 4px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.adjustment-header {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr 1fr 1fr 80px;
|
||||
background-color: #f5f7fa;
|
||||
border-bottom: 1px solid #e4e7ed;
|
||||
padding: 12px 16px;
|
||||
font-weight: 500;
|
||||
color: #606266;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.header-item {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.adjustment-row {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr 1fr 1fr 80px;
|
||||
align-items: center;
|
||||
padding: 12px 16px;
|
||||
border-bottom: 1px solid #f0f0f0;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.adjustment-row:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.adjustment-input {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.adjustment-input .el-input__inner {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.adjustment-actions {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.action-text-btn {
|
||||
font-size: 12px;
|
||||
padding: 4px 8px;
|
||||
height: auto;
|
||||
min-height: 24px;
|
||||
}
|
||||
|
||||
.action-text-btn:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* 提示信息样式 */
|
||||
.notice-section {
|
||||
margin-top: 24px;
|
||||
padding: 16px;
|
||||
background-color: #fafafa;
|
||||
border-radius: 4px;
|
||||
font-size: 12px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.notice-red {
|
||||
color: #f56c6c;
|
||||
margin: 0 0 8px 0;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.notice-orange {
|
||||
color: #e6a23c;
|
||||
margin: 4px 0;
|
||||
}
|
||||
|
||||
/* 对话框底部样式 */
|
||||
.dialog-footer {
|
||||
text-align: right;
|
||||
padding-top: 16px;
|
||||
border-top: 1px solid #f0f0f0;
|
||||
}
|
||||
|
||||
.dialog-footer .el-button {
|
||||
min-width: 80px;
|
||||
}
|
||||
|
||||
/* 响应式调整 */
|
||||
@media (max-width: 768px) {
|
||||
.template-name-input {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.price-range-container {
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.price-input {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.adjustment-header,
|
||||
.adjustment-row {
|
||||
grid-template-columns: 1fr;
|
||||
gap: 8px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.adjustment-input .el-input__inner {
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
1800
src/views/ShopGoodsAll/index.vue
Normal file
1800
src/views/ShopGoodsAll/index.vue
Normal file
File diff suppressed because it is too large
Load Diff
363
src/views/ShopGoodsPublished/index.vue
Normal file
363
src/views/ShopGoodsPublished/index.vue
Normal file
@ -0,0 +1,363 @@
|
||||
<template>
|
||||
<div class="p-2">
|
||||
<div v-show="showSearch" class="mb-[10px]">
|
||||
<el-card shadow="hover">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||
<el-form-item label="店铺" prop="shopId">
|
||||
<el-select v-model="queryParams.shopId" placeholder="请选择店铺" clearable>
|
||||
<el-option v-for="item in shopList" :key="item.value" :label="item.label" :value="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="商品条码" prop="isbn">
|
||||
<el-input v-model="queryParams.isbn" placeholder="请输入条码" clearable @keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="品相" prop="conditionCode">
|
||||
<el-select v-model="queryParams.conditionCode" placeholder="请选择品相" clearable :loading="loading">
|
||||
<el-option v-for="item in conditionCodeTypes" :key="item.value" :label="item.label" :value="item.value"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</div>
|
||||
|
||||
<el-card shadow="never">
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()">删除</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" icon="Search" @click="() => showSearch = !showSearch">
|
||||
{{ showSearch ? '隐藏搜索' : '显示搜索' }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<el-table v-loading="loading" :data="shopGoodsPublishedList" @selection-change="handleSelectionChange" style="font-size: 17px">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="主键" align="center" prop="id" v-if="false" />
|
||||
|
||||
<el-table-column label="商品对应关系" align="center">
|
||||
<el-tag type="primary" size="large" style="font-size: 20px">相同货号对应</el-tag>
|
||||
</el-table-column>
|
||||
<el-table-column label="店铺" align="center" prop="shopName" />
|
||||
|
||||
<el-table-column label="供应商" align="center" prop="supplier" />
|
||||
|
||||
<el-table-column label="商品信息" header-align="center" >
|
||||
<el-table-column label="图示" align="center" prop="bookPic" width="70" :show-overflow-tooltip="true" >
|
||||
<template #default="{ row }">
|
||||
<el-image
|
||||
style="width: 40px;height: 40px"
|
||||
:src="row.bookPic"
|
||||
fit="scale-down"
|
||||
:preview-src-list="[row.bookPic]"
|
||||
preview-teleported
|
||||
>
|
||||
<template #error>
|
||||
<div class="image-slot">
|
||||
暂无
|
||||
</div>
|
||||
</template>
|
||||
</el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="商品/规格编码" align="left" prop="itemNumber" />
|
||||
|
||||
<el-table-column label="商品/规格名称" align="left" prop="goodsName" width="270" :show-overflow-tooltip="true" >
|
||||
<template #default="{ row }">
|
||||
<div class="truncate-cell"> <!-- 文本截断容器 -->
|
||||
{{ row.goodsName || '暂无数据' }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="品相" align="left" prop="conditionCode" width="80">
|
||||
<template #default="{ row }">
|
||||
<span v-if="row.conditionCode==='A'">一品</span>
|
||||
<span v-else-if="row.conditionCode==='B'">二品</span>
|
||||
<span v-else-if="row.conditionCode==='C'">三品</span>
|
||||
<span v-else-if="row.conditionCode==='D'">四品</span>
|
||||
<span v-else-if="row.conditionCode==='E'">五品</span>
|
||||
<span v-else-if="row.conditionCode==='F'">六品</span>
|
||||
<span v-else-if="row.conditionCode==='G'">六五品</span>
|
||||
<span v-else-if="row.conditionCode==='H'">七品</span>
|
||||
<span v-else-if="row.conditionCode==='I'">七五品</span>
|
||||
<span v-else-if="row.conditionCode==='J'">八品</span>
|
||||
<span v-else-if="row.conditionCode==='K'">八五品</span>
|
||||
<span v-else-if="row.conditionCode==='L'">九品</span>
|
||||
<span v-else-if="row.conditionCode==='M'">九五品</span>
|
||||
<span v-else-if="row.conditionCode==='N'">全新</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="售价" align="left" prop="price" :show-overflow-tooltip="true" width="100">
|
||||
<template #default="{ row }">
|
||||
{{ ((row.price/100).toFixed(2))}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="商品条码" align="left" prop="isbn" width="150">
|
||||
<template #default="{ row }">
|
||||
<span v-if="!row.isbn || row.isbn.startsWith('678')"></span>
|
||||
<span v-else>{{ row.isbn }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
<el-table-column label="线上商品数量" align="center" prop="inventory" />
|
||||
<el-table-column label="线上商品" align="left" prop="onlineProducts" :show-overflow-tooltip="true">
|
||||
<template #default="{ row }">
|
||||
<div class="truncate-cell"> <!-- 文本截断容器 -->
|
||||
<el-link
|
||||
v-if="row.shopType === 1"
|
||||
type="primary"
|
||||
:href="`https://mobile.yangkeduo.com/goods.html?goods_id=${row.onlineId}`"
|
||||
target="_blank"
|
||||
:underline="false"
|
||||
>
|
||||
<span v-if="row.onlineId!=null">
|
||||
https://mobile.yangkeduo.com/goods.html?goods_id={{row.onlineId}}
|
||||
</span>
|
||||
</el-link>
|
||||
|
||||
<el-link
|
||||
v-else-if="row.shopType === 2"
|
||||
type="primary"
|
||||
:href="`https://book.kongfz.com/${row.mallId}/${row.onlineId}`"
|
||||
target="_blank"
|
||||
:underline="false"
|
||||
>
|
||||
<span v-if="row.mallId!=null&&row.onlineId!=null">
|
||||
https://book.kongfz.com/{{row.mallId}}/{{row.onlineId}}
|
||||
</span>
|
||||
</el-link>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="最后设置人" align="center" prop="createdBy">
|
||||
<template #default="{ row }">
|
||||
<span>{{ formatUserId(row.createdBy) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="最后设置时间" align="center" prop="updatedTime">
|
||||
<template #default="{ row }">
|
||||
<span>{{ formatDateTime(row.updatedTime) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<!-- <el-table-column label="发布时间" align="left" prop="updateTime" width="230"/>-->
|
||||
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-tooltip content="删除" placement="top">
|
||||
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"></el-button>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<el-pagination
|
||||
v-show="total > 0"
|
||||
:current-page="queryParams.pageNum"
|
||||
:page-size="queryParams.pageSize"
|
||||
:page-sizes="[10, 20, 50, 100]"
|
||||
:total="total"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
/>
|
||||
</el-card>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="ShopGoodsPublished">
|
||||
import { getShopGoodsPublishedList, deleteShopGoodsPublished } from '@/api/modules/shopGoodsPublished'
|
||||
import { getListShop } from '@/api/modules/shop'
|
||||
import { ref, reactive, onMounted } from 'vue'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
|
||||
// 响应式数据
|
||||
const shopGoodsPublishedList = ref([])
|
||||
const loading = ref(true)
|
||||
const showSearch = ref(true)
|
||||
const ids = ref([])
|
||||
const single = ref(true)
|
||||
const multiple = ref(true)
|
||||
const total = ref(0)
|
||||
const shopList = ref([])
|
||||
|
||||
// 表单引用
|
||||
const queryFormRef = ref()
|
||||
|
||||
// 查询参数
|
||||
const queryParams = reactive({
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
shopId: undefined,
|
||||
isbn: undefined,
|
||||
conditionCode: undefined,
|
||||
goodsName: undefined,
|
||||
shopName: undefined,
|
||||
platformId: undefined,
|
||||
status: undefined,
|
||||
itemNumber: undefined,
|
||||
price: undefined
|
||||
})
|
||||
|
||||
// 品相选项
|
||||
const conditionCodeTypes = [
|
||||
{ value: 'A', label: '一品' },
|
||||
{ value: 'B', label: '二品' },
|
||||
{ value: 'C', label: '三品' },
|
||||
{ value: 'D', label: '四品' },
|
||||
{ value: 'E', label: '五品' },
|
||||
{ value: 'F', label: '六品' },
|
||||
{ value: 'G', label: '六五品' },
|
||||
{ value: 'H', label: '七品' },
|
||||
{ value: 'I', label: '七五品' },
|
||||
{ value: 'J', label: '八品' },
|
||||
{ value: 'K', label: '八五品' },
|
||||
{ value: 'L', label: '九品' },
|
||||
{ value: 'M', label: '九五品' },
|
||||
{ value: 'N', label: '全新' }
|
||||
]
|
||||
|
||||
// 查询已发布商品列表
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const res = await getShopGoodsPublishedList(queryParams)
|
||||
shopGoodsPublishedList.value = res.data.list || []
|
||||
total.value = res.data.total || 0
|
||||
} catch (error) {
|
||||
console.error('获取列表失败:', error)
|
||||
ElMessage.error('获取列表失败')
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
// 搜索按钮操作
|
||||
const handleQuery = () => {
|
||||
queryParams.pageNum = 1
|
||||
getList()
|
||||
}
|
||||
|
||||
// 重置按钮操作
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value?.resetFields()
|
||||
handleQuery()
|
||||
}
|
||||
|
||||
// 多选框选中数据
|
||||
const handleSelectionChange = (selection) => {
|
||||
ids.value = selection.map(item => item.id)
|
||||
single.value = selection.length !== 1
|
||||
multiple.value = !selection.length
|
||||
}
|
||||
|
||||
// 删除按钮操作
|
||||
const handleDelete = async (row) => {
|
||||
const _ids = row?.id || ids.value
|
||||
try {
|
||||
await ElMessageBox.confirm(
|
||||
`是否确认删除记录发布数据编号为"${_ids}"的数据项?`,
|
||||
'警告',
|
||||
{
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}
|
||||
)
|
||||
|
||||
await deleteShopGoodsPublished(_ids)
|
||||
ElMessage.success('删除成功')
|
||||
await getList()
|
||||
} catch (error) {
|
||||
if (error !== 'cancel') {
|
||||
console.error('删除失败:', error)
|
||||
ElMessage.error('删除失败')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 获取店铺列表
|
||||
const getShopList = async () => {
|
||||
try {
|
||||
const res = await getListShop()
|
||||
shopList.value = res.map(item => ({
|
||||
value: item.id,
|
||||
label: item.shopName
|
||||
}))
|
||||
} catch (error) {
|
||||
console.error('获取店铺列表失败:', error)
|
||||
}
|
||||
}
|
||||
|
||||
// 分页大小改变
|
||||
const handleSizeChange = (val) => {
|
||||
queryParams.pageSize = val
|
||||
queryParams.pageNum = 1
|
||||
getList()
|
||||
}
|
||||
|
||||
// 当前页改变
|
||||
const handleCurrentChange = (val) => {
|
||||
queryParams.pageNum = val
|
||||
getList()
|
||||
}
|
||||
|
||||
// 格式化用户ID
|
||||
const formatUserId = (userId) => {
|
||||
if (!userId) return '-'
|
||||
return userId.toString()
|
||||
}
|
||||
|
||||
// 格式化日期时间
|
||||
const formatDateTime = (dateTime) => {
|
||||
if (!dateTime) return '-'
|
||||
|
||||
// 将数字格式转换为日期字符串
|
||||
const dateStr = dateTime.toString()
|
||||
if (dateStr.length !== 14) return dateTime
|
||||
|
||||
const year = dateStr.substring(0, 4)
|
||||
const month = dateStr.substring(4, 6)
|
||||
const day = dateStr.substring(6, 8)
|
||||
const hour = dateStr.substring(8, 10)
|
||||
const minute = dateStr.substring(10, 12)
|
||||
const second = dateStr.substring(12, 14)
|
||||
|
||||
return `${year}-${month}-${day} ${hour}:${minute}:${second}`
|
||||
}
|
||||
|
||||
// 页面挂载时执行
|
||||
onMounted(() => {
|
||||
getList()
|
||||
getShopList()
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
/* 调整表头字体大小 */
|
||||
:deep(.el-table__header) th .cell {
|
||||
font-size: 18px; /* 设置你需要的字体大小 */
|
||||
font-weight: bold; /* 可选:加粗字体 */
|
||||
}
|
||||
|
||||
/* 调整表格内容字体大小 */
|
||||
.el-table {
|
||||
font-size: 17px !important; /* 与你的行内样式一致 */
|
||||
}
|
||||
|
||||
/* 隐藏所有单元格边框 */
|
||||
:deep(.el-table td){
|
||||
border: none;
|
||||
}
|
||||
</style>
|
||||
|
||||
543
src/views/UserRecharge/index.vue
Normal file
543
src/views/UserRecharge/index.vue
Normal file
@ -0,0 +1,543 @@
|
||||
<template>
|
||||
<div class="p-2">
|
||||
<div v-show="showSearch" class="mb-[10px]">
|
||||
<el-card shadow="hover">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||
<el-form-item label="支付方式 " prop="rechargType">
|
||||
<el-select v-model="queryParams.rechargType" placeholder="请选择支付方式" clearable>
|
||||
<el-option v-for="dict in t_recharge_way" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="充值金额" prop="rechargPrice">
|
||||
<el-input v-model="queryParams.rechargPrice" placeholder="请输入充值金额" clearable @keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="创建时间" style="width: 308px">
|
||||
<el-date-picker v-model="dateRange" value-format="YYYY-MM-DD HH:mm:ss" type="daterange" range-separator="-"
|
||||
start-placeholder="开始日期" end-placeholder="结束日期"
|
||||
:default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</div>
|
||||
|
||||
<el-card shadow="never">
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<span style="font-size:20px">余额 : {{ Number(balance) / 100 }} 元</span>
|
||||
<el-button style="margin-left:10px" type="primary" plain icon="Upload" @click="handleAdd">充值</el-button>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="1.5">
|
||||
<el-button style="margin-left:10px" type="warning" plain icon="Download">提现</el-button>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="1.5">
|
||||
<el-button type="warning" plain icon="Download" @click="handleExport">导出</el-button>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="1.5">
|
||||
<el-button type="info" plain icon="Refresh" @click="getList">刷新</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<el-table v-loading="loading" :data="userRechargeList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="expand">
|
||||
<template #default="props">
|
||||
|
||||
|
||||
<div m="4">
|
||||
<p m="t-0 b-2">支付号:{{ props.row.allDataStr != undefined ? JSON.parse(props.row.allDataStr).out_trade_no :
|
||||
'' }} </p>
|
||||
</div>
|
||||
<div m="4">
|
||||
<p m="t-0 b-2">流水号:{{ props.row.allDataStr != undefined ? JSON.parse(props.row.allDataStr).transaction_id
|
||||
: '' }} </p>
|
||||
</div>
|
||||
<div m="4">
|
||||
<p m="t-0 b-2">商户号:{{ props.row.allDataStr != undefined ? JSON.parse(props.row.allDataStr).mchid : '' }}
|
||||
</p>
|
||||
</div>
|
||||
<div m="4">
|
||||
<p m="t-0 b-2">支付状态:{{ props.row.allDataStr != undefined ?
|
||||
JSON.parse(props.row.allDataStr).trade_state_desc : '' }} </p>
|
||||
</div>
|
||||
<div m="4">
|
||||
<p m="t-0 b-2">银行类型:{{ props.row.allDataStr != undefined ? JSON.parse(props.row.allDataStr).bank_type :
|
||||
'' }} </p>
|
||||
</div>
|
||||
<div m="4">
|
||||
<p m="t-0 b-2">支付时间:{{ props.row.allDataStr != undefined ?
|
||||
parseTime(JSON.parse(props.row.allDataStr).success_time, '{y}-{m}-{d} {h}:{i}:{s}') : '' }} </p>
|
||||
</div>
|
||||
<div m="4">
|
||||
<p m="t-0 b-2">支付人:{{ props.row.allDataStr != undefined ? JSON.parse(props.row.allDataStr).payer.openid :
|
||||
'' }} </p>
|
||||
</div>
|
||||
<div m="4">
|
||||
<p m="t-0 b-2">应支付金额:{{ props.row.allDataStr != undefined ?
|
||||
(Number(JSON.parse(props.row.allDataStr).amount.total) / 100) + ' ' +
|
||||
JSON.parse(props.row.allDataStr).amount.currency : '' }} </p>
|
||||
</div>
|
||||
<div m="4">
|
||||
<p m="t-0 b-2">实际支付金额:{{ props.row.allDataStr != undefined ?
|
||||
(Number(JSON.parse(props.row.allDataStr).amount.payer_total) / 100) + ' ' +
|
||||
JSON.parse(props.row.allDataStr).amount.payer_currency : '' }} </p>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="平台流水号" align="center" prop="id" v-if="true" />
|
||||
<el-table-column label="支付流水号" align="center" prop="wxId" v-if="true" />
|
||||
<el-table-column label="充值方式" align="center" prop="rechargType" width="150px">
|
||||
<template #default="scope">
|
||||
<template v-for="dict in t_recharge_way" :key="dict.value">
|
||||
<el-tag v-if="dict.value === scope.row.rechargType">
|
||||
{{ dict.label }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="充值金额" align="center" width="150px">
|
||||
<template #default="scope">
|
||||
{{ scope.row.rechargPrice / 100 }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="手续费" align="center" width="150px">
|
||||
<template #default="scope">
|
||||
{{ scope.row.commission / 100 }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="支付状态" align="center" prop="status" width="150px">
|
||||
<template #default="scope">
|
||||
<template v-for="dict in t_recharge_status" :key="dict.value">
|
||||
<el-tag v-if="dict.value === scope.row.status">
|
||||
{{ dict.label }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="支付时间" align="center" prop="successTime" width="180">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.successTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<el-pagination v-show="total > 0" :current-page="queryParams.pageNum" :page-size="queryParams.pageSize"
|
||||
:total="total" :page-sizes="[10, 20, 50, 100]" layout="total, sizes, prev, pager, next, jumper"
|
||||
@size-change="handleSizeChange" @current-change="handleCurrentChange" />
|
||||
</el-card>
|
||||
<!-- 添加或修改充值对话框 -->
|
||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
||||
<el-form ref="userRechargeFormRef" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="支付方式" prop="rechargType">
|
||||
<el-select v-model="form.rechargType" placeholder="请选择支付方式">
|
||||
<el-option v-for="dict in t_recharge_way" :key="dict.value" :label="dict.label"
|
||||
:value="dict.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :class="{ isHide: form.rechargType == undefined }" label="充值金额" prop="rechargPrice">
|
||||
<el-input v-model="form.rechargPrice" type="number" :min="minRecharge" @input="handleInput"
|
||||
placeholder="请输入充值金额" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog :title="dialog.titlePrcode" v-model="dialog.visiblePrcode" width="360px" append-to-body>
|
||||
<div>
|
||||
<img :src="qrCodeText" alt="Base64 图片" />
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="UserRecharge">
|
||||
import { ref, reactive, onMounted, getCurrentInstance, toRefs } from 'vue'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { userRechargeApi } from '@/api/modules/userRecharge.js'
|
||||
|
||||
|
||||
|
||||
const dateRange = ref(['', ''])
|
||||
|
||||
// 模拟字典数据
|
||||
const t_recharge_way = ref([
|
||||
{ label: '微信支付', value: '1' },
|
||||
{ label: '支付宝支付', value: '2' }
|
||||
])
|
||||
|
||||
const t_recharge_status = ref([
|
||||
{ label: '待支付', value: '0' },
|
||||
{ label: '支付完成', value: '1' },
|
||||
{ label: '支付过期', value: '2' }
|
||||
])
|
||||
|
||||
|
||||
|
||||
|
||||
const userRechargeList = ref([])
|
||||
const buttonLoading = ref(false)
|
||||
const loading = ref(true)
|
||||
const showSearch = ref(true)
|
||||
const ids = ref([])
|
||||
const single = ref(true)
|
||||
const multiple = ref(true)
|
||||
const total = ref(0)
|
||||
const minRecharge = ref()
|
||||
|
||||
const queryFormRef = ref()
|
||||
const userRechargeFormRef = ref()
|
||||
|
||||
const dialog = reactive({
|
||||
visible: false,
|
||||
visiblePrcode: false,
|
||||
title: '',
|
||||
titlePrcode: ''
|
||||
})
|
||||
|
||||
const initFormData = {
|
||||
id: undefined,
|
||||
wxId: undefined,
|
||||
userId: undefined,
|
||||
rechargType: undefined,
|
||||
rechargPrice: undefined,
|
||||
successTime: undefined,
|
||||
createTime: undefined,
|
||||
allDataStr: undefined,
|
||||
status: undefined,
|
||||
commission: undefined
|
||||
}
|
||||
|
||||
const data = reactive({
|
||||
form: { ...initFormData },
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
userId: undefined,
|
||||
rechargType: undefined,
|
||||
rechargPrice: undefined,
|
||||
successTime: undefined,
|
||||
allDataStr: undefined,
|
||||
status: undefined,
|
||||
commission: undefined,
|
||||
params: {}
|
||||
},
|
||||
rules: {
|
||||
id: [
|
||||
{ required: true, message: "主键不能为空", trigger: "blur" }
|
||||
]
|
||||
}
|
||||
})
|
||||
|
||||
const { queryParams, form, rules } = toRefs(data)
|
||||
const qrCodeText = ref('')
|
||||
const balance = ref('')
|
||||
const freeze = ref('')
|
||||
|
||||
// 时间格式化函数
|
||||
const parseTime = (time, pattern = '{y}-{m}-{d} {h}:{i}:{s}') => {
|
||||
if (!time) return ''
|
||||
|
||||
let date
|
||||
// 处理数字格式的时间戳(如:20250721105352)
|
||||
if (typeof time === 'number' || (typeof time === 'string' && /^\d{14}$/.test(time))) {
|
||||
const timeStr = time.toString()
|
||||
const year = parseInt(timeStr.substring(0, 4))
|
||||
const month = parseInt(timeStr.substring(4, 6)) - 1 // 月份从0开始
|
||||
const day = parseInt(timeStr.substring(6, 8))
|
||||
const hour = parseInt(timeStr.substring(8, 10))
|
||||
const minute = parseInt(timeStr.substring(10, 12))
|
||||
const second = parseInt(timeStr.substring(12, 14))
|
||||
date = new Date(year, month, day, hour, minute, second)
|
||||
} else {
|
||||
// 处理标准时间格式
|
||||
date = new Date(time)
|
||||
}
|
||||
|
||||
// 检查日期是否有效
|
||||
if (isNaN(date.getTime())) {
|
||||
return ''
|
||||
}
|
||||
|
||||
const formatObj = {
|
||||
y: date.getFullYear(),
|
||||
m: date.getMonth() + 1,
|
||||
d: date.getDate(),
|
||||
h: date.getHours(),
|
||||
i: date.getMinutes(),
|
||||
s: date.getSeconds()
|
||||
}
|
||||
return pattern.replace(/{([ymdhis])+}/g, (result, key) => {
|
||||
const value = formatObj[key]
|
||||
return value.toString().padStart(2, '0')
|
||||
})
|
||||
}
|
||||
|
||||
// 添加日期范围到查询参数
|
||||
const addDateRange = (params, dateRange) => {
|
||||
if (dateRange && dateRange[0] && dateRange[1]) {
|
||||
params.params = params.params || {}
|
||||
params.params.beginTime = dateRange[0]
|
||||
params.params.endTime = dateRange[1]
|
||||
}
|
||||
return params
|
||||
}
|
||||
|
||||
/** 查询充值列表 */
|
||||
const getList = async () => {
|
||||
try {
|
||||
loading.value = true
|
||||
const params = addDateRange({ ...queryParams.value }, dateRange.value)
|
||||
const res = await userRechargeApi.getUserRechargeList(params)
|
||||
console.log("res", res)
|
||||
|
||||
// 根据实际API响应结构处理数据
|
||||
if (res.code === 200 && res.data) {
|
||||
userRechargeList.value = res.data.list || []
|
||||
total.value = res.data.total || 0
|
||||
|
||||
// 处理微信流水号
|
||||
for (let i = 0; i < userRechargeList.value.length; i++) {
|
||||
if (userRechargeList.value[i].allDataStr) {
|
||||
try {
|
||||
const jsonObject = JSON.parse(userRechargeList.value[i].allDataStr)
|
||||
if (jsonObject && jsonObject.transaction_id) {
|
||||
userRechargeList.value[i].wxId = jsonObject.transaction_id
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('解析allDataStr失败:', e)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
userRechargeList.value = []
|
||||
total.value = 0
|
||||
ElMessage.error(res.message || '获取充值列表失败')
|
||||
}
|
||||
} catch (error) {
|
||||
ElMessage.error('获取充值列表失败')
|
||||
console.error('获取充值列表失败:', error)
|
||||
userRechargeList.value = []
|
||||
total.value = 0
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 取消按钮 */
|
||||
const cancel = () => {
|
||||
reset();
|
||||
dialog.visible = false;
|
||||
}
|
||||
|
||||
/** 表单重置 */
|
||||
const reset = () => {
|
||||
form.value = { ...initFormData };
|
||||
userRechargeFormRef.value?.resetFields();
|
||||
}
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
queryParams.value.pageNum = 1;
|
||||
getList();
|
||||
}
|
||||
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
dateRange.value = ['', ''];
|
||||
queryFormRef.value?.resetFields();
|
||||
handleQuery();
|
||||
}
|
||||
|
||||
/** 多选框选中数据 */
|
||||
const handleSelectionChange = (selection) => {
|
||||
ids.value = selection.map(item => item.id)
|
||||
single.value = selection.length != 1
|
||||
multiple.value = !selection.length
|
||||
}
|
||||
|
||||
/** 新增按钮操作 */
|
||||
const handleAdd = () => {
|
||||
reset()
|
||||
dialog.visible = true
|
||||
dialog.title = "充值"
|
||||
buttonLoading.value = false
|
||||
}
|
||||
|
||||
/** 提交按钮 */
|
||||
const submitForm = () => {
|
||||
if (form.value.rechargPrice == undefined) {
|
||||
ElMessage.error("请填写充值金额")
|
||||
return
|
||||
}
|
||||
userRechargeFormRef.value?.validate(async (valid) => {
|
||||
if (valid) {
|
||||
try {
|
||||
buttonLoading.value = true
|
||||
const res = await userRechargeApi.userRecharge(form.value)
|
||||
|
||||
if (res.code == 200) {
|
||||
qrCodeText.value = "data:image/png;base64," + res.data.img
|
||||
dialog.visiblePrcode = true
|
||||
dialog.titlePrcode = "支付"
|
||||
|
||||
// 定时器 2分钟持续获取支付单据状态
|
||||
let count = 0
|
||||
const maxCount = 40 // 两分钟内,每隔三秒检查一次,总共检查40次
|
||||
let intervalId = setInterval(async () => {
|
||||
if (count < maxCount) {
|
||||
try {
|
||||
const statusRes = await userRechargeApi.checkTask(res.data.id)
|
||||
if (statusRes == '1') {
|
||||
count = 80 // 支付成功,跳出循环
|
||||
}
|
||||
count++
|
||||
} catch (error) {
|
||||
console.error('检查支付状态失败:', error)
|
||||
count++
|
||||
}
|
||||
} else {
|
||||
if (count == 40) {
|
||||
// 超时,将状态改为错误
|
||||
try {
|
||||
await userRechargeApi.editRechargeToError(res.data.id)
|
||||
} catch (error) {
|
||||
console.error('修改充值状态失败:', error)
|
||||
}
|
||||
}
|
||||
dialog.visible = false
|
||||
dialog.visiblePrcode = false
|
||||
qrCodeText.value = undefined
|
||||
buttonLoading.value = false
|
||||
getList()
|
||||
getUser()
|
||||
clearInterval(intervalId) // 停止定时器
|
||||
}
|
||||
}, 3000)
|
||||
}
|
||||
} catch (error) {
|
||||
ElMessage.error('充值失败,请重试')
|
||||
console.error('充值失败:', error)
|
||||
buttonLoading.value = false
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
/** 导出按钮操作 */
|
||||
const handleExport = async () => {
|
||||
try {
|
||||
const res = await userRechargeApi.exportUserRecharge(queryParams.value)
|
||||
// 创建下载链接
|
||||
const url = window.URL.createObjectURL(new Blob([res]))
|
||||
const link = document.createElement('a')
|
||||
link.href = url
|
||||
link.setAttribute('download', `userRecharge_${new Date().getTime()}.xlsx`)
|
||||
document.body.appendChild(link)
|
||||
link.click()
|
||||
document.body.removeChild(link)
|
||||
window.URL.revokeObjectURL(url)
|
||||
} catch (error) {
|
||||
ElMessage.error('导出失败')
|
||||
console.error('导出失败:', error)
|
||||
}
|
||||
}
|
||||
|
||||
// 处理输入事件
|
||||
const handleInput = () => {
|
||||
let value = form.value.rechargPrice
|
||||
// 如果输入值小于最小值,直接设置为最小值
|
||||
if (value < Number(minRecharge.value)) {
|
||||
value = minRecharge.value
|
||||
}
|
||||
// 限制小数点后两位
|
||||
const regex = /^\d*\.?\d{0,2}$/
|
||||
if (!regex.test(value)) {
|
||||
// 如果不符合规则,截取前两位小数
|
||||
const parts = value.split('.')
|
||||
if (parts.length > 1) {
|
||||
value = `${parts[0]}.${parts[1].slice(0, 2)}`
|
||||
}
|
||||
}
|
||||
// 更新输入框的值
|
||||
form.value.rechargPrice = value
|
||||
}
|
||||
|
||||
// 获取最小充值金额配置
|
||||
const getMin = async () => {
|
||||
try {
|
||||
// 这里需要根据实际的配置接口进行调整
|
||||
// const res = await configApi.getConfigByKey('recharge.min')
|
||||
// minRecharge.value = res.data
|
||||
minRecharge.value = 1 // 临时设置最小充值金额为1元
|
||||
} catch (error) {
|
||||
console.error('获取最小充值金额失败:', error)
|
||||
minRecharge.value = 1 // 默认最小充值金额
|
||||
}
|
||||
}
|
||||
|
||||
// 获取用户信息
|
||||
const getUser = async () => {
|
||||
try {
|
||||
// 这里需要根据实际的用户信息接口进行调整
|
||||
// const res = await userApi.getUserInfo()
|
||||
// balance.value = res.data.balance
|
||||
// freeze.value = res.data.freeze
|
||||
balance.value = '0' // 临时设置
|
||||
freeze.value = '0' // 临时设置
|
||||
} catch (error) {
|
||||
console.error('获取用户信息失败:', error)
|
||||
balance.value = '0'
|
||||
freeze.value = '0'
|
||||
}
|
||||
}
|
||||
|
||||
// 分页大小改变
|
||||
const handleSizeChange = (val) => {
|
||||
queryParams.value.pageSize = val
|
||||
queryParams.value.pageNum = 1
|
||||
getList()
|
||||
}
|
||||
|
||||
// 当前页改变
|
||||
const handleCurrentChange = (val) => {
|
||||
queryParams.value.pageNum = val
|
||||
getList()
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getList();
|
||||
getMin();
|
||||
getUser();
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.isHide {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
670
src/views/filterSet/index.vue
Normal file
670
src/views/filterSet/index.vue
Normal file
@ -0,0 +1,670 @@
|
||||
<template>
|
||||
<div class="filter-set-container">
|
||||
<!-- 搜索区域 -->
|
||||
<div v-show="showSearch" class="search-section">
|
||||
<el-card shadow="hover">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||
<el-form-item label="过滤类型" prop="filterType">
|
||||
<el-select v-model="queryParams.filterType" placeholder="请选择过滤类型" clearable
|
||||
style="width: 180px">
|
||||
<el-option v-for="dict in filterTypeOptions" :key="dict.value" :label="dict.label"
|
||||
:value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="限制类型" prop="limitationType">
|
||||
<el-select v-model="queryParams.limitationType" placeholder="请选择限制类型" clearable
|
||||
style="width: 180px">
|
||||
<el-option v-for="dict in limitationTypeOptions" :key="dict.value" :label="dict.label"
|
||||
:value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="添加方式" prop="addWay">
|
||||
<el-select v-model="queryParams.addWay" placeholder="请选择添加方式" clearable style="width: 180px">
|
||||
<el-option v-for="dict in addWayOptions" :key="dict.value" :label="dict.label"
|
||||
:value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="内容文件" prop="addTxt">
|
||||
<el-input v-model="queryParams.addTxt" placeholder="请输入内容文件" clearable
|
||||
@keyup.enter="handleQuery" style="width: 200px" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleQuery">
|
||||
<el-icon>
|
||||
<Search />
|
||||
</el-icon>搜索
|
||||
</el-button>
|
||||
<el-button @click="resetQuery">
|
||||
<el-icon>
|
||||
<Refresh />
|
||||
</el-icon>重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</div>
|
||||
|
||||
<!-- 操作按钮区域 -->
|
||||
<div class="header-actions">
|
||||
<div class="action-buttons">
|
||||
<el-button type="primary" @click="handleAdd">
|
||||
<el-icon>
|
||||
<Plus />
|
||||
</el-icon>新增
|
||||
</el-button>
|
||||
<el-button type="success" :disabled="single" @click="handleUpdate()">
|
||||
<el-icon>
|
||||
<Edit />
|
||||
</el-icon>修改
|
||||
</el-button>
|
||||
<el-button type="danger" :disabled="multiple" @click="handleDelete()">
|
||||
<el-icon>
|
||||
<Delete />
|
||||
</el-icon>删除
|
||||
</el-button>
|
||||
<el-button type="warning" @click="handleExport">
|
||||
<el-icon>
|
||||
<Download />
|
||||
</el-icon>导出
|
||||
</el-button>
|
||||
</div>
|
||||
<div class="toolbar-actions">
|
||||
<el-button @click="showSearch = !showSearch" circle>
|
||||
<el-icon>
|
||||
<Search />
|
||||
</el-icon>
|
||||
</el-button>
|
||||
<el-button @click="getList" circle>
|
||||
<el-icon>
|
||||
<Refresh />
|
||||
</el-icon>
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 表格区域 -->
|
||||
<el-card shadow="never">
|
||||
<el-table v-loading="loading" :data="filterSetList" @selection-change="handleSelectionChange" border>
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="主键" align="center" prop="id" width="80" />
|
||||
<el-table-column label="过滤类型" align="center" prop="filterType">
|
||||
<template #default="{ row }">
|
||||
<el-tag>{{ getFilterTypeText(row.filterType) }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="限制类型" align="center" prop="limitationType">
|
||||
<template #default="{ row }">
|
||||
<el-tag type="success">{{ getLimitationTypeText(row.limitationType) }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="添加方式" align="center" prop="addWay">
|
||||
<template #default="{ row }">
|
||||
<el-tag type="warning">{{ getAddWayText(row.addWay) }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="内容文件" align="center" prop="addTxt" show-overflow-tooltip />
|
||||
<el-table-column label="操作" align="center" width="150" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button type="primary" link @click="handleUpdate(row)">
|
||||
<el-icon>
|
||||
<Edit />
|
||||
</el-icon>编辑
|
||||
</el-button>
|
||||
<el-button type="danger" link @click="handleDelete(row)">
|
||||
<el-icon>
|
||||
<Delete />
|
||||
</el-icon>删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页 -->
|
||||
<div class="pagination-container">
|
||||
<el-pagination v-show="total > 0" v-model:current-page="queryParams.pageNum"
|
||||
v-model:page-size="queryParams.pageSize" :page-sizes="[10, 20, 50, 100]"
|
||||
layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange" />
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<!-- 添加或修改过滤设置对话框 -->
|
||||
<el-dialog v-model="dialogVisible" :title="isEdit ? '编辑过滤设置' : '新增过滤设置'" width="500px" @closed="resetForm">
|
||||
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
|
||||
<el-form-item label="过滤类型" prop="filterType">
|
||||
<el-select v-model="form.filterType" placeholder="请选择过滤类型" style="width: 100%">
|
||||
<el-option v-for="dict in filterTypeOptions" :key="dict.value" :label="dict.label"
|
||||
:value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="限制类型" prop="limitationType">
|
||||
<el-select v-model="form.limitationType" placeholder="请选择限制类型" style="width: 100%">
|
||||
<el-option v-for="dict in limitationTypeOptions" :key="dict.value" :label="dict.label"
|
||||
:value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="添加方式" prop="addWay">
|
||||
<el-radio-group v-model="form.addWay" @change="changeAddWay">
|
||||
<el-radio v-for="dict in addWayOptions" :key="dict.value" :value="dict.value">{{ dict.label
|
||||
}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item v-show="form.addWay === '1'" label="文件选择" prop="fileUrl">
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="16">
|
||||
<el-upload ref="uploadRef" v-model:file-list="fileList" :action="uploadUrl" :limit="1"
|
||||
:headers="uploadHeaders" :on-success="handleUploadSuccess" :before-upload="beforeUpload"
|
||||
accept=".xlsx" :auto-upload="false">
|
||||
<template #trigger>
|
||||
<el-button type="primary">上传文件</el-button>
|
||||
</template>
|
||||
</el-upload>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-button @click="downloadTemplate">下载模板</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item v-show="form.addWay === '0'" label="内容文件" prop="addTxt">
|
||||
<el-input v-model="form.addTxt" type="textarea" :rows="6" placeholder="请输入限制内容,数据之间回车分割,每行一个数据" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" :loading="submitLoading" @click="submitForm">确定</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted } from 'vue'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { Search, Plus, Edit, Delete, Download, Refresh } from '@element-plus/icons-vue'
|
||||
import { filterSetApi } from '@/api/modules/filterSet'
|
||||
|
||||
// 表格数据
|
||||
const filterSetList = ref([])
|
||||
const loading = ref(false)
|
||||
const showSearch = ref(true)
|
||||
|
||||
// 分页参数
|
||||
const queryParams = reactive({
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
filterType: '',
|
||||
limitationType: '',
|
||||
addWay: '',
|
||||
addTxt: ''
|
||||
})
|
||||
const total = ref(0)
|
||||
|
||||
// 选择相关
|
||||
const selectedIds = ref([])
|
||||
const single = ref(true)
|
||||
const multiple = ref(true)
|
||||
|
||||
// 对话框相关
|
||||
const dialogVisible = ref(false)
|
||||
const isEdit = ref(false)
|
||||
const submitLoading = ref(false)
|
||||
|
||||
// 表单数据
|
||||
const form = reactive({
|
||||
id: null,
|
||||
filterType: '',
|
||||
limitationType: '',
|
||||
addWay: '0',
|
||||
addTxt: ''
|
||||
})
|
||||
|
||||
// 文件上传相关
|
||||
const fileList = ref([])
|
||||
const uploadRef = ref(null)
|
||||
const uploadUrl = '/zhishu/filterSet/upload'
|
||||
const uploadHeaders = ref({
|
||||
'Authorization': localStorage.getItem('token') || ''
|
||||
})
|
||||
|
||||
// 表单校验规则
|
||||
const rules = reactive({
|
||||
filterType: [
|
||||
{ required: true, message: '请选择过滤类型', trigger: 'change' }
|
||||
],
|
||||
limitationType: [
|
||||
{ required: true, message: '请选择限制类型', trigger: 'change' }
|
||||
],
|
||||
addWay: [
|
||||
{ required: true, message: '请选择添加方式', trigger: 'change' }
|
||||
],
|
||||
addTxt: [
|
||||
{ required: true, message: '请输入内容文件', trigger: 'blur' }
|
||||
]
|
||||
})
|
||||
|
||||
// 表单引用
|
||||
const formRef = ref(null)
|
||||
const queryFormRef = ref(null)
|
||||
|
||||
// 字典选项数据
|
||||
const filterTypeOptions = ref([
|
||||
{ value: '0', label: '黑名单' },
|
||||
{ value: '1', label: '白名单' }
|
||||
])
|
||||
|
||||
const limitationTypeOptions = ref([
|
||||
{ value: '0', label: '店铺限制' },
|
||||
{ value: '1', label: '商品限制' }
|
||||
])
|
||||
|
||||
const addWayOptions = ref([
|
||||
{ value: '0', label: '手动输入' },
|
||||
{ value: '1', label: '文件上传' }
|
||||
])
|
||||
|
||||
// 获取字典文本
|
||||
const getFilterTypeText = (value) => {
|
||||
const option = filterTypeOptions.value.find(item => item.value === value)
|
||||
return option ? option.label : value
|
||||
}
|
||||
|
||||
const getLimitationTypeText = (value) => {
|
||||
const option = limitationTypeOptions.value.find(item => item.value === value)
|
||||
return option ? option.label : value
|
||||
}
|
||||
|
||||
const getAddWayText = (value) => {
|
||||
const option = addWayOptions.value.find(item => item.value === value)
|
||||
return option ? option.label : value
|
||||
}
|
||||
|
||||
// 过滤空值参数
|
||||
const filterEmptyParams = (params) => {
|
||||
const filteredParams = {}
|
||||
Object.keys(params).forEach(key => {
|
||||
const value = params[key]
|
||||
// 保留 pageNum 和 pageSize,过滤其他空值
|
||||
if (key === 'pageNum' || key === 'pageSize') {
|
||||
filteredParams[key] = value
|
||||
} else if (value !== '' && value !== null && value !== undefined) {
|
||||
filteredParams[key] = value
|
||||
}
|
||||
})
|
||||
return filteredParams
|
||||
}
|
||||
|
||||
// 加载过滤设置列表
|
||||
const getList = async () => {
|
||||
try {
|
||||
loading.value = true
|
||||
const filteredParams = filterEmptyParams(queryParams)
|
||||
const res = await filterSetApi.getFilterSetList(filteredParams)
|
||||
|
||||
if (res.code === 200) {
|
||||
filterSetList.value = res.data?.list || []
|
||||
total.value = res.data?.total || 0
|
||||
} else {
|
||||
ElMessage.error(res.message || '获取过滤设置列表失败')
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取过滤设置列表出错:', error)
|
||||
ElMessage.error(error.message || '获取过滤设置列表失败')
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
// 搜索
|
||||
const handleQuery = () => {
|
||||
queryParams.pageNum = 1
|
||||
getList()
|
||||
}
|
||||
|
||||
// 重置搜索
|
||||
const resetQuery = () => {
|
||||
if (queryFormRef.value) {
|
||||
queryFormRef.value.resetFields()
|
||||
}
|
||||
Object.keys(queryParams).forEach(key => {
|
||||
if (key === 'pageNum') {
|
||||
queryParams[key] = 1
|
||||
} else if (key === 'pageSize') {
|
||||
queryParams[key] = 10
|
||||
} else {
|
||||
queryParams[key] = ''
|
||||
}
|
||||
})
|
||||
getList()
|
||||
}
|
||||
|
||||
// 多选框选中数据
|
||||
const handleSelectionChange = (selection) => {
|
||||
selectedIds.value = selection.map(item => item.id)
|
||||
single.value = selection.length !== 1
|
||||
multiple.value = !selection.length
|
||||
}
|
||||
|
||||
// 新增按钮操作
|
||||
const handleAdd = () => {
|
||||
resetForm()
|
||||
isEdit.value = false
|
||||
dialogVisible.value = true
|
||||
}
|
||||
|
||||
// 修改按钮操作
|
||||
const handleUpdate = async (row) => {
|
||||
resetForm()
|
||||
|
||||
if (row) {
|
||||
// 单行编辑
|
||||
isEdit.value = true
|
||||
await getFilterSetDetail(row.id)
|
||||
} else {
|
||||
// 批量编辑(选中的第一个)
|
||||
if (selectedIds.value.length > 0) {
|
||||
isEdit.value = true
|
||||
await getFilterSetDetail(selectedIds.value[0])
|
||||
}
|
||||
}
|
||||
|
||||
dialogVisible.value = true
|
||||
}
|
||||
|
||||
// 获取过滤设置详情
|
||||
const getFilterSetDetail = async (id) => {
|
||||
try {
|
||||
submitLoading.value = true
|
||||
const res = await filterSetApi.getFilterSetById(id)
|
||||
|
||||
if (res.code === 200 && res.data) {
|
||||
Object.keys(form).forEach(key => {
|
||||
if (res.data[key] !== undefined) {
|
||||
form[key] = res.data[key]
|
||||
}
|
||||
})
|
||||
} else {
|
||||
ElMessage.error(res.message || '获取过滤设置信息失败')
|
||||
dialogVisible.value = false
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取过滤设置信息出错:', error)
|
||||
ElMessage.error(error.message || '获取过滤设置信息失败')
|
||||
dialogVisible.value = false
|
||||
} finally {
|
||||
submitLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
// 提交表单
|
||||
const submitForm = async () => {
|
||||
if (!formRef.value) return
|
||||
|
||||
await formRef.value.validate(async (valid) => {
|
||||
if (valid) {
|
||||
if (form.addWay === '1') {
|
||||
// 文件上传方式
|
||||
submitUpload()
|
||||
} else {
|
||||
// 手动输入方式
|
||||
submitFormData()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 文件上传提交
|
||||
const submitUpload = () => {
|
||||
if (fileList.value.length === 0) {
|
||||
ElMessage.error('请上传文件')
|
||||
return
|
||||
}
|
||||
|
||||
// 临时设置addTxt用于验证
|
||||
form.addTxt = '1'
|
||||
formRef.value?.validate(async (valid) => {
|
||||
if (valid) {
|
||||
form.addTxt = '' // 重置
|
||||
uploadRef.value?.submit()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 表单数据提交
|
||||
const submitFormData = async () => {
|
||||
try {
|
||||
submitLoading.value = true
|
||||
|
||||
let res
|
||||
if (isEdit.value) {
|
||||
res = await filterSetApi.updateFilterSet(form)
|
||||
} else {
|
||||
res = await filterSetApi.addFilterSet(form)
|
||||
}
|
||||
|
||||
if (res.code === 200) {
|
||||
ElMessage.success(`${isEdit.value ? '更新' : '添加'}成功`)
|
||||
dialogVisible.value = false
|
||||
getList()
|
||||
} else {
|
||||
ElMessage.error(res.message || `${isEdit.value ? '更新' : '添加'}失败`)
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`${isEdit.value ? '更新' : '添加'}过滤设置出错:`, error)
|
||||
ElMessage.error(error.message || `${isEdit.value ? '更新' : '添加'}失败`)
|
||||
} finally {
|
||||
submitLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
// 删除操作
|
||||
const handleDelete = (row) => {
|
||||
const ids = row ? [row.id] : selectedIds.value
|
||||
const names = row ? [row.id] : selectedIds.value
|
||||
|
||||
ElMessageBox.confirm(
|
||||
`确定要删除过滤设置编号为"${names.join(',')}"的数据项吗?`,
|
||||
'删除确认',
|
||||
{
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}
|
||||
).then(async () => {
|
||||
try {
|
||||
const res = await filterSetApi.deleteFilterSet(ids)
|
||||
if (res.code === 200) {
|
||||
ElMessage.success('删除成功')
|
||||
getList()
|
||||
} else {
|
||||
ElMessage.error(res.message || '删除失败')
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('删除过滤设置出错:', error)
|
||||
ElMessage.error(error.message || '删除失败')
|
||||
}
|
||||
}).catch(() => {
|
||||
// 取消删除
|
||||
})
|
||||
}
|
||||
|
||||
// 导出操作
|
||||
const handleExport = async () => {
|
||||
try {
|
||||
const res = await filterSetApi.exportFilterSet(queryParams)
|
||||
|
||||
// 创建下载链接
|
||||
const blob = new Blob([res], {
|
||||
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
|
||||
})
|
||||
const url = window.URL.createObjectURL(blob)
|
||||
const link = document.createElement('a')
|
||||
link.href = url
|
||||
link.download = `filterSet_${new Date().getTime()}.xlsx`
|
||||
link.click()
|
||||
window.URL.revokeObjectURL(url)
|
||||
|
||||
ElMessage.success('导出成功')
|
||||
} catch (error) {
|
||||
console.error('导出过滤设置出错:', error)
|
||||
ElMessage.error(error.message || '导出失败')
|
||||
}
|
||||
}
|
||||
|
||||
// 下载模板
|
||||
const downloadTemplate = async () => {
|
||||
try {
|
||||
const res = await filterSetApi.getImportTemplate()
|
||||
|
||||
// 创建下载链接
|
||||
const blob = new Blob([res], {
|
||||
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
|
||||
})
|
||||
const url = window.URL.createObjectURL(blob)
|
||||
const link = document.createElement('a')
|
||||
link.href = url
|
||||
link.download = `filter_template_${new Date().getTime()}.xlsx`
|
||||
link.click()
|
||||
window.URL.revokeObjectURL(url)
|
||||
|
||||
ElMessage.success('模板下载成功')
|
||||
} catch (error) {
|
||||
console.error('下载模板出错:', error)
|
||||
ElMessage.error(error.message || '下载模板失败')
|
||||
}
|
||||
}
|
||||
|
||||
// 添加方式改变
|
||||
const changeAddWay = () => {
|
||||
if (uploadRef.value) {
|
||||
uploadRef.value.clearFiles()
|
||||
}
|
||||
fileList.value = []
|
||||
form.addTxt = ''
|
||||
}
|
||||
|
||||
// 文件上传前验证
|
||||
const beforeUpload = (file) => {
|
||||
const isExcel = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
|
||||
if (!isExcel) {
|
||||
ElMessage.error('只能上传 Excel 文件!')
|
||||
return false
|
||||
}
|
||||
|
||||
const isLt10M = file.size / 1024 / 1024 < 10
|
||||
if (!isLt10M) {
|
||||
ElMessage.error('文件大小不能超过 10MB!')
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
// 文件上传成功回调
|
||||
const handleUploadSuccess = async (response) => {
|
||||
if (response.code === 200) {
|
||||
const data = response.data
|
||||
let addTxt = ''
|
||||
|
||||
for (let i = 0; i < data.length; i++) {
|
||||
if (addTxt === '') {
|
||||
addTxt = data[i].addTxt
|
||||
} else {
|
||||
addTxt = addTxt + '\n' + data[i].addTxt
|
||||
}
|
||||
}
|
||||
|
||||
form.addTxt = addTxt
|
||||
submitFormData()
|
||||
} else {
|
||||
ElMessage.error(response.message || '文件上传失败')
|
||||
}
|
||||
}
|
||||
|
||||
// 重置表单
|
||||
const resetForm = () => {
|
||||
if (formRef.value) {
|
||||
formRef.value.resetFields()
|
||||
}
|
||||
|
||||
Object.keys(form).forEach(key => {
|
||||
if (key === 'id') {
|
||||
form[key] = null
|
||||
} else if (key === 'addWay') {
|
||||
form[key] = '0'
|
||||
} else {
|
||||
form[key] = ''
|
||||
}
|
||||
})
|
||||
|
||||
fileList.value = []
|
||||
if (uploadRef.value) {
|
||||
uploadRef.value.clearFiles()
|
||||
}
|
||||
}
|
||||
|
||||
// 分页大小变化
|
||||
const handleSizeChange = (val) => {
|
||||
queryParams.pageSize = val
|
||||
getList()
|
||||
}
|
||||
|
||||
// 页码变化
|
||||
const handleCurrentChange = (val) => {
|
||||
queryParams.pageNum = val
|
||||
getList()
|
||||
}
|
||||
|
||||
// 组件挂载时加载数据
|
||||
onMounted(() => {
|
||||
getList()
|
||||
})
|
||||
</script>
|
||||
<style scoped>
|
||||
.filter-set-container {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.search-section {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.header-actions {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.action-buttons {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.toolbar-actions {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.pagination-container {
|
||||
margin-top: 20px;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
:deep(.el-dialog__body) {
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
:deep(.el-form-item) {
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
:deep(.el-card__body) {
|
||||
padding: 20px;
|
||||
}
|
||||
</style>
|
||||
@ -250,11 +250,11 @@ import {
|
||||
updateLogistics,
|
||||
} from '@/api/modules/logistics'
|
||||
import {
|
||||
getCitiesByProvinceId,
|
||||
getDistrictsByCityId,
|
||||
// getCitiesByProvinceId,
|
||||
// getDistrictsByCityId,
|
||||
getFreInfo,
|
||||
getProvinces,
|
||||
UpdateTemplate
|
||||
// UpdateTemplate
|
||||
} from '@/api/modules/district'
|
||||
// import { depotNameList } from '@/api/modules/shelves'
|
||||
|
||||
|
||||
316
src/views/onlineProducts/index.vue
Normal file
316
src/views/onlineProducts/index.vue
Normal file
@ -0,0 +1,316 @@
|
||||
<template>
|
||||
<div class="p-2">
|
||||
<transition enter-active-class="animate__animated animate__fadeInDown" leave-active-class="animate__animated animate__fadeOutUp">
|
||||
<div v-show="showSearch" class="mb-[10px]">
|
||||
<el-card shadow="hover">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||
<el-form-item label="店铺" prop="shopId">
|
||||
<el-select v-model="queryParams.shopId" placeholder="请选择店铺">
|
||||
<el-option v-for="item in shopList" :key="item.value" :label="item.label" :value="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="商家编码" prop="itemNumber">
|
||||
<el-input v-model="queryParams.itemNumber" placeholder="请输入编码" clearable @keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</div>
|
||||
</transition>
|
||||
|
||||
<el-card shadow="never">
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['zhishu:shopGoodsPublished:remove']">删除</el-button>
|
||||
</el-col>
|
||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<el-table v-loading="loading" :data="shopGoodsPublishedList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="图示" align="center" prop="bookPic" :show-overflow-tooltip="true">
|
||||
<template #default="{ row }">
|
||||
<el-image
|
||||
style="width: 50px;height: 50px"
|
||||
:src="row.bookPic"
|
||||
fit="scale-down"
|
||||
:preview-src-list="[row.bookPic]"
|
||||
preview-teleported
|
||||
>
|
||||
<template #error>
|
||||
<div class="image-slot">
|
||||
暂无
|
||||
</div>
|
||||
</template>
|
||||
</el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="商家编码" align="left" prop="itemNumber"/>
|
||||
|
||||
<el-table-column label="线上商品名称" align="left" prop="goodsName" :show-overflow-tooltip="true">
|
||||
<template #default="{ row }">
|
||||
<div class="truncate-cell">
|
||||
<el-link
|
||||
v-if="row.shopType === 1"
|
||||
type="primary"
|
||||
:href="`https://mobile.yangkeduo.com/goods.html?goods_id=${row.onlineId}`"
|
||||
target="_blank"
|
||||
:underline="false"
|
||||
>
|
||||
{{ row.goodsName }}
|
||||
</el-link>
|
||||
|
||||
<el-link
|
||||
v-else-if="row.shopType === 2"
|
||||
type="primary"
|
||||
:href="`https://book.kongfz.com/${row.mallId}/${row.onlineId}`"
|
||||
target="_blank"
|
||||
:underline="false"
|
||||
>
|
||||
{{ row.goodsName }}
|
||||
</el-link>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="店铺" align="left" prop="shopName"/>
|
||||
|
||||
<el-table-column label="线上商品/规格ID" align="left" prop="onlineId"/>
|
||||
|
||||
<el-table-column label="状态" align="left" prop="status">
|
||||
<template #default="{ row }">
|
||||
<span v-if="row.status==0">在售</span>
|
||||
<span v-else>未售</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
|
||||
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
</el-card>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="ShopGoodsPublished">
|
||||
import { getShopGoodsPublishedList, deleteShopGoodsPublished } from '@/api/modules/shopGoodsPublished';
|
||||
import { getListShop } from '@/api/zhishu/shop';
|
||||
import { ref, reactive, toRefs, onMounted } from 'vue';
|
||||
import { depotNameList } from '@/api/zhishu/shelves';
|
||||
import { ElMessage, ElMessageBox } from 'element-plus';
|
||||
|
||||
// 响应式数据
|
||||
const shopGoodsPublishedList = ref([]);
|
||||
const loading = ref(true);
|
||||
const showSearch = ref(true);
|
||||
const ids = ref([]);
|
||||
const single = ref(true);
|
||||
const multiple = ref(true);
|
||||
const total = ref(0);
|
||||
|
||||
const queryFormRef = ref();
|
||||
|
||||
const initFormData = {
|
||||
id: undefined,
|
||||
shopGoodsId: undefined,
|
||||
shopId: undefined,
|
||||
goodsName: undefined,
|
||||
shopName: undefined,
|
||||
platformId: undefined,
|
||||
status: undefined,
|
||||
itemNumber: undefined,
|
||||
bookPic: undefined,
|
||||
isbn: undefined,
|
||||
conditionCode: undefined,
|
||||
price: undefined,
|
||||
createTime: undefined,
|
||||
updateTime: undefined
|
||||
}
|
||||
|
||||
const data = reactive({
|
||||
form: { ...initFormData },
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
shopGoodsId: undefined,
|
||||
shopId: undefined,
|
||||
goodsName: undefined,
|
||||
shopName: undefined,
|
||||
platformId: undefined,
|
||||
status: undefined,
|
||||
itemNumber: undefined,
|
||||
bookPic: undefined,
|
||||
isbn: undefined,
|
||||
conditionCode: undefined,
|
||||
price: undefined,
|
||||
createTime: undefined,
|
||||
updateTime: undefined,
|
||||
depotId: undefined,
|
||||
params: {}
|
||||
},
|
||||
rules: {
|
||||
id: [
|
||||
{ required: true, message: "主键不能为空", trigger: "blur" }
|
||||
],
|
||||
}
|
||||
});
|
||||
|
||||
const { queryParams, form, rules } = toRefs(data);
|
||||
|
||||
// 查询记录发布数据列表
|
||||
const getList = async () => {
|
||||
loading.value = true;
|
||||
try {
|
||||
const res = await getShopGoodsPublishedList(queryParams.value);
|
||||
shopGoodsPublishedList.value = res.data.rows || res.rows || [];
|
||||
total.value = res.data.total || res.total || 0;
|
||||
} catch (error) {
|
||||
console.error('获取列表失败:', error);
|
||||
ElMessage.error('获取列表失败');
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
}
|
||||
|
||||
const depotList = ref([]);
|
||||
const selectedId = ref(null);
|
||||
|
||||
const handleDepotChange = (val) => {
|
||||
queryParams.value.depotId = val?.id || null;
|
||||
}
|
||||
|
||||
const loadData = async () => {
|
||||
loading.value = true;
|
||||
try {
|
||||
const res = await depotNameList();
|
||||
depotList.value = res.rows || [];
|
||||
} catch (error) {
|
||||
console.error('加载数据失败:', error);
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
}
|
||||
|
||||
const conditionCodeTypes = [
|
||||
{ value: '1', label: '一品' },
|
||||
{ value: '2', label: '二品' },
|
||||
{ value: '3', label: '三品' },
|
||||
{ value: '4', label: '四品' },
|
||||
{ value: '5', label: '五品' },
|
||||
{ value: '6', label: '六品' },
|
||||
{ value: '6.5', label: '六五品' },
|
||||
{ value: '7', label: '七品' },
|
||||
{ value: '7.5', label: '七五品' },
|
||||
{ value: '8', label: '八品' },
|
||||
{ value: '8.5', label: '八五品' },
|
||||
{ value: '9', label: '九品' },
|
||||
{ value: '9.5', label: '九五品' },
|
||||
{ value: '10', label: '全新' }
|
||||
];
|
||||
|
||||
// 搜索按钮操作
|
||||
const handleQuery = () => {
|
||||
queryParams.value.pageNum = 1;
|
||||
getList();
|
||||
}
|
||||
|
||||
// 重置按钮操作
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value?.resetFields();
|
||||
handleQuery();
|
||||
}
|
||||
|
||||
// 多选框选中数据
|
||||
const handleSelectionChange = (selection) => {
|
||||
ids.value = selection.map(item => item.id);
|
||||
single.value = selection.length != 1;
|
||||
multiple.value = !selection.length;
|
||||
}
|
||||
|
||||
// 删除按钮操作
|
||||
const handleDelete = async (row) => {
|
||||
const _ids = row?.id || ids.value;
|
||||
try {
|
||||
await ElMessageBox.confirm('是否确认删除记录发布数据编号为"' + _ids + '"的数据项?', '警告', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
});
|
||||
|
||||
await deleteShopGoodsPublished(_ids);
|
||||
ElMessage.success("删除成功");
|
||||
await getList();
|
||||
} catch (error) {
|
||||
if (error !== 'cancel') {
|
||||
console.error('删除失败:', error);
|
||||
ElMessage.error('删除失败');
|
||||
}
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
}
|
||||
|
||||
// 店铺列表
|
||||
const shopList = ref([]);
|
||||
|
||||
const getShopList = async () => {
|
||||
try {
|
||||
const res = await getListShop();
|
||||
const data = res.data || res;
|
||||
|
||||
if (!data || data.length === 0) {
|
||||
shopList.value = [];
|
||||
} else {
|
||||
shopList.value = data.map(item => ({
|
||||
value: item.id,
|
||||
label: item.shopName
|
||||
}));
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取店铺列表失败:', error);
|
||||
ElMessage.error('获取店铺列表失败');
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getList();
|
||||
loadData();
|
||||
getShopList();
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
/* 调整表头字体大小 */
|
||||
:deep(.el-table__header) th .cell {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* 调整表格内容字体大小 */
|
||||
.el-table {
|
||||
font-size: 17px !important;
|
||||
}
|
||||
|
||||
.truncate-cell {
|
||||
max-width: 200px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.image-slot {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #f5f7fa;
|
||||
color: #909399;
|
||||
font-size: 12px;
|
||||
}
|
||||
</style>
|
||||
1800
src/views/shopGoods/index.vue
Normal file
1800
src/views/shopGoods/index.vue
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user