新增了微信网页登录功能与关联功能。
拆分前台与Express后端API接口,前端VUE代码负责接收Express后端发来的数据进行展示,Express后端复制处理敏感信息和接口访问。
|
|
@ -1,144 +0,0 @@
|
|||
<template>
|
||||
<div>
|
||||
<div class="header">
|
||||
<div class="left">
|
||||
<div class="leftBox">
|
||||
<div
|
||||
class="titleOne"
|
||||
@click="toggleDropdown"
|
||||
@mousemove="changeBackgroundColorMove1()"
|
||||
@mouseleave="changeBackgroundColorLeave1()"
|
||||
:style="backgroundColor1"
|
||||
>
|
||||
目录<el-icon style="padding-left: 5px;"><ArrowRight /></el-icon>
|
||||
</div>
|
||||
<div class="dropdown" v-if="showDropdown">
|
||||
<div
|
||||
class="titleTwo"
|
||||
@click="about()"
|
||||
@mousemove="changeBackgroundColorMove2()"
|
||||
@mouseleave="changeBackgroundColorLeave2()"
|
||||
:style="backgroundColor2"
|
||||
>
|
||||
关于
|
||||
</div>
|
||||
<div
|
||||
class="titleThree"
|
||||
@click="pickingDetails()"
|
||||
@mousemove="changeBackgroundColorMove3()"
|
||||
@mouseleave="changeBackgroundColorLeave3()"
|
||||
:style="backgroundColor3"
|
||||
>
|
||||
物料申请
|
||||
</div>
|
||||
<div
|
||||
class="titleFour"
|
||||
@click="finishedProduct()"
|
||||
@mousemove="changeBackgroundColorMove4()"
|
||||
@mouseleave="changeBackgroundColorLeave4()"
|
||||
:style="backgroundColor4"
|
||||
>
|
||||
成品入库
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="position: fixed; top: 6%; left: 50%; transform: translate(-50%, -50%);">
|
||||
<img src="../assets/logo.png" style="width: 80px; height: 80px;"/>
|
||||
</div>
|
||||
<div class="right" v-if="!this.token">
|
||||
<!-- 注册和登录 -->
|
||||
<el-icon color="white"><Coin /></el-icon>
|
||||
<div class="icon" @click="register">注册</div>
|
||||
<el-icon color="white"><Check /></el-icon>
|
||||
<div class="icon" @click="login">登录</div>
|
||||
</div>
|
||||
<div class="right" v-if="this.token">
|
||||
<!-- 注册和登录 -->
|
||||
<el-icon color="white"><User /></el-icon>
|
||||
<div class="icon">{{this.name}}</div>
|
||||
<el-icon color="white"><RemoveFilled /></el-icon>
|
||||
<div class="icon" @click="logout">退出登录</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {ref,reactive, onMounted} from 'vue'
|
||||
import router from "../router";
|
||||
|
||||
const clickNum = ref(0)
|
||||
let showDropdown = ref(false)
|
||||
const backgroundColor1 = ref('')
|
||||
const backgroundColor2 = ref('')
|
||||
const backgroundColor3 = ref('')
|
||||
const backgroundColor4 = ref('')
|
||||
const token = ref(false)
|
||||
const name = ref('')
|
||||
|
||||
function changeBackgroundColorMove1(){
|
||||
backgroundColor1.value = 'background-color: black;'
|
||||
}
|
||||
function changeBackgroundColorLeave1(){
|
||||
backgroundColor1.value = ''
|
||||
}
|
||||
function changeBackgroundColorMove2(){
|
||||
backgroundColor2.value = 'background-color:black;'
|
||||
}
|
||||
function changeBackgroundColorLeave2(){
|
||||
backgroundColor2.value = ''
|
||||
}
|
||||
function changeBackgroundColorMove3(){
|
||||
backgroundColor3.value = 'background-color: black;'
|
||||
}
|
||||
function changeBackgroundColorLeave3(){
|
||||
backgroundColor3.value = ''
|
||||
}
|
||||
function changeBackgroundColorMove4(){
|
||||
backgroundColor4.value = 'background-color: black;'
|
||||
}
|
||||
function changeBackgroundColorLeave4(){
|
||||
backgroundColor4.value = ''
|
||||
}
|
||||
function toggleDropdown() {
|
||||
console.log("showDropdown:",showDropdown.value)
|
||||
showDropdown.value = !showDropdown.value
|
||||
clickNum.value++
|
||||
|
||||
}
|
||||
//路由方法
|
||||
function pickingDetails(){
|
||||
router.push({name:'pickingDetails'})
|
||||
}
|
||||
function login(){
|
||||
router.push({name:'login'})
|
||||
}
|
||||
function register(){
|
||||
router.push({name:"register"})
|
||||
}
|
||||
function about(){
|
||||
router.push({name:'about'})
|
||||
}
|
||||
function finishedProduct(){
|
||||
router.push({name:'finishedProduct'})
|
||||
}
|
||||
|
||||
function logout(){
|
||||
localStorage.removeItem('contact');
|
||||
token.value = false
|
||||
name = null
|
||||
}
|
||||
|
||||
|
||||
onMounted(()=>{
|
||||
if(localStorage.getItem('contact') != null){
|
||||
token.value=true
|
||||
name.value = localStorage.getItem('contact');
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
@import "../assets/css/header.css";
|
||||
</style>
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
<template>
|
||||
<div>
|
||||
<img
|
||||
src="../assets/images/logo.png"
|
||||
class="zoomable"
|
||||
alt="Your Image"
|
||||
@mouseover="zoomIn"
|
||||
@mouseout="zoomOut"
|
||||
/>
|
||||
|
||||
<p
|
||||
class="zoomable"
|
||||
@mouseover="zoomIn"
|
||||
@mouseout="zoomOut"
|
||||
>
|
||||
Your Text Your Text Your Text Your Text Your Text Your Text Your Text Your Text Your Text Your Text
|
||||
</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
methods: {
|
||||
zoomIn(event) {
|
||||
event.target.style.transition = "transform 0.5s ease";
|
||||
event.target.style.transform = "scale(1.2)";
|
||||
},
|
||||
zoomOut(event) {
|
||||
event.target.style.transition = "transform 0.5s ease";
|
||||
event.target.style.transform = "scale(1)";
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.zoomable {
|
||||
transition: transform 0.5s ease; /* 添加过渡效果 */
|
||||
}
|
||||
|
||||
</style>
|
||||
|
|
@ -0,0 +1 @@
|
|||
PqBrC6N99go7Y02A
|
||||
|
|
@ -15,6 +15,7 @@
|
|||
"element-plus": "^2.4.4",
|
||||
"md5": "^2.3.0",
|
||||
"mitt": "^3.0.1",
|
||||
"pinia": "^2.1.7",
|
||||
"qrcode": "^1.5.3",
|
||||
"uuid": "^9.0.1",
|
||||
"v-viewer": "^3.0.13",
|
||||
|
|
@ -24,10 +25,7 @@
|
|||
},
|
||||
"devDependencies": {
|
||||
"@vitejs/plugin-vue": "^4.5.2",
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"copy-webpack-plugin": "^12.0.2",
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"vite": "^5.0.10"
|
||||
}
|
||||
},
|
||||
|
|
@ -448,8 +446,6 @@
|
|||
"resolved": "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.1.6.tgz",
|
||||
"integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/@jridgewell/gen-mapping": {
|
||||
"version": "0.3.3",
|
||||
"resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
|
||||
|
|
@ -496,14 +492,11 @@
|
|||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/@jridgewell/sourcemap-codec": {
|
||||
"version": "1.4.15",
|
||||
"resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
|
||||
"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/@jridgewell/trace-mapping": {
|
||||
"version": "0.3.22",
|
||||
"resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz",
|
||||
|
|
@ -550,7 +543,6 @@
|
|||
"node": ">= 8"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/@popperjs/core": {
|
||||
"name": "@sxzz/popperjs-es",
|
||||
"version": "2.11.7",
|
||||
|
|
@ -726,8 +718,6 @@
|
|||
"win32"
|
||||
]
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/@sindresorhus/merge-streams": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmmirror.com/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz",
|
||||
|
|
@ -772,7 +762,6 @@
|
|||
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
|
||||
"dev": true
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/@types/lodash": {
|
||||
"version": "4.14.202",
|
||||
"resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.202.tgz",
|
||||
|
|
@ -786,8 +775,6 @@
|
|||
"@types/lodash": "*"
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/@types/node": {
|
||||
"version": "20.11.20",
|
||||
"resolved": "https://registry.npmmirror.com/@types/node/-/node-20.11.20.tgz",
|
||||
|
|
@ -798,7 +785,6 @@
|
|||
"undici-types": "~5.26.4"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/@types/web-bluetooth": {
|
||||
"version": "0.0.16",
|
||||
"resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
|
||||
|
|
@ -992,8 +978,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/@webassemblyjs/ast": {
|
||||
"version": "1.11.6",
|
||||
"resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.11.6.tgz",
|
||||
|
|
@ -1233,7 +1217,6 @@
|
|||
"ajv": "^8.8.2"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/ansi-regex": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
||||
|
|
@ -1272,8 +1255,6 @@
|
|||
"form-data": "^4.0.0"
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/braces": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
|
||||
|
|
@ -1312,7 +1293,6 @@
|
|||
"dev": true,
|
||||
"peer": true
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/camelcase": {
|
||||
"version": "5.3.1",
|
||||
"resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
|
||||
|
|
@ -1321,8 +1301,6 @@
|
|||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/caniuse-lite": {
|
||||
"version": "1.0.30001589",
|
||||
"resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001589.tgz",
|
||||
|
|
@ -1330,7 +1308,6 @@
|
|||
"dev": true,
|
||||
"peer": true
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/charenc": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/charenc/-/charenc-0.0.2.tgz",
|
||||
|
|
@ -1339,8 +1316,6 @@
|
|||
"node": "*"
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/chrome-trace-event": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
|
||||
|
|
@ -1351,7 +1326,6 @@
|
|||
"node": ">=6.0"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/cliui": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
|
||||
|
|
@ -1389,8 +1363,6 @@
|
|||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/commander": {
|
||||
"version": "2.20.3",
|
||||
"resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
|
||||
|
|
@ -1418,7 +1390,6 @@
|
|||
"webpack": "^5.1.0"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/crypt": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/crypt/-/crypt-0.0.2.tgz",
|
||||
|
|
@ -1463,8 +1434,6 @@
|
|||
"resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
|
||||
"integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/electron-to-chromium": {
|
||||
"version": "1.4.680",
|
||||
"resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.680.tgz",
|
||||
|
|
@ -1472,7 +1441,6 @@
|
|||
"dev": true,
|
||||
"peer": true
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/element-plus": {
|
||||
"version": "2.4.4",
|
||||
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.4.4.tgz",
|
||||
|
|
@ -1508,8 +1476,6 @@
|
|||
"resolved": "https://registry.npmmirror.com/encode-utf8/-/encode-utf8-1.0.3.tgz",
|
||||
"integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/enhanced-resolve": {
|
||||
"version": "5.15.0",
|
||||
"resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz",
|
||||
|
|
@ -1531,7 +1497,6 @@
|
|||
"dev": true,
|
||||
"peer": true
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/esbuild": {
|
||||
"version": "0.19.10",
|
||||
"resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.19.10.tgz",
|
||||
|
|
@ -1570,8 +1535,6 @@
|
|||
"@esbuild/win32-x64": "0.19.10"
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/escalade": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.2.tgz",
|
||||
|
|
@ -1582,14 +1545,11 @@
|
|||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/escape-html": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz",
|
||||
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/eslint-scope": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz",
|
||||
|
|
@ -1637,14 +1597,11 @@
|
|||
"node": ">=4.0"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/estree-walker": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
|
||||
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/events": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz",
|
||||
|
|
@ -1717,7 +1674,6 @@
|
|||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/find-up": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
|
||||
|
|
@ -1778,8 +1734,6 @@
|
|||
"node": "6.* || 8.* || >= 10.*"
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/glob-parent": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz",
|
||||
|
|
@ -1842,14 +1796,11 @@
|
|||
"node": ">= 4"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/is-buffer": {
|
||||
"version": "1.1.6",
|
||||
"resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz",
|
||||
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/is-extglob": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
|
||||
|
|
@ -1859,7 +1810,6 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/is-fullwidth-code-point": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
||||
|
|
@ -1868,8 +1818,6 @@
|
|||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/is-glob": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
|
||||
|
|
@ -1929,7 +1877,6 @@
|
|||
"node": ">=6.11.5"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/locate-path": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
|
||||
|
|
@ -1987,8 +1934,6 @@
|
|||
"resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz",
|
||||
"integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/merge-stream": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
|
||||
|
|
@ -2018,7 +1963,6 @@
|
|||
"node": ">=8.6"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/mime-db": {
|
||||
"version": "1.52.0",
|
||||
"resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
|
||||
|
|
@ -2054,8 +1998,6 @@
|
|||
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/neo-async": {
|
||||
"version": "2.6.2",
|
||||
"resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz",
|
||||
|
|
@ -2079,7 +2021,6 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/normalize-wheel-es": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
|
||||
|
|
@ -2123,8 +2064,6 @@
|
|||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/path-type": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/path-type/-/path-type-5.0.0.tgz",
|
||||
|
|
@ -2134,14 +2073,11 @@
|
|||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/picocolors": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
|
||||
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/picomatch": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
|
||||
|
|
@ -2151,7 +2087,56 @@
|
|||
"node": ">=8.6"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/pinia": {
|
||||
"version": "2.1.7",
|
||||
"resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz",
|
||||
"integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==",
|
||||
"dependencies": {
|
||||
"@vue/devtools-api": "^6.5.0",
|
||||
"vue-demi": ">=0.14.5"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/posva"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@vue/composition-api": "^1.4.0",
|
||||
"typescript": ">=4.4.4",
|
||||
"vue": "^2.6.14 || ^3.3.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@vue/composition-api": {
|
||||
"optional": true
|
||||
},
|
||||
"typescript": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/pinia/node_modules/vue-demi": {
|
||||
"version": "0.14.7",
|
||||
"resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz",
|
||||
"integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
|
||||
"hasInstallScript": true,
|
||||
"bin": {
|
||||
"vue-demi-fix": "bin/vue-demi-fix.js",
|
||||
"vue-demi-switch": "bin/vue-demi-switch.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/antfu"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@vue/composition-api": "^1.0.0-rc.1",
|
||||
"vue": "^3.0.0-0 || ^2.6.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@vue/composition-api": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/pngjs": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
|
||||
|
|
@ -2173,8 +2158,6 @@
|
|||
"node": "^10 || ^12 || >=14"
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/punycode": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz",
|
||||
|
|
@ -2184,7 +2167,6 @@
|
|||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/qrcode": {
|
||||
"version": "1.5.3",
|
||||
"resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.3.tgz",
|
||||
|
|
@ -2202,8 +2184,6 @@
|
|||
"node": ">=10.13.0"
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/queue-microtask": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
|
||||
|
|
@ -2219,7 +2199,6 @@
|
|||
"safe-buffer": "^5.1.0"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/require-directory": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
|
||||
|
|
@ -2228,8 +2207,6 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/require-from-string": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz",
|
||||
|
|
@ -2239,14 +2216,11 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/require-main-filename": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
|
||||
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/reusify": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz",
|
||||
|
|
@ -2257,7 +2231,6 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/rollup": {
|
||||
"version": "4.9.1",
|
||||
"resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.9.1.tgz",
|
||||
|
|
@ -2287,8 +2260,6 @@
|
|||
"fsevents": "~2.3.2"
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/run-parallel": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
|
||||
|
|
@ -2328,14 +2299,11 @@
|
|||
"randombytes": "^2.1.0"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/set-blocking": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
|
||||
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/slash": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/slash/-/slash-5.1.0.tgz",
|
||||
|
|
@ -2355,7 +2323,6 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/source-map-js": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz",
|
||||
|
|
@ -2364,8 +2331,6 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/source-map-support": {
|
||||
"version": "0.5.21",
|
||||
"resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz",
|
||||
|
|
@ -2377,7 +2342,6 @@
|
|||
"source-map": "^0.6.0"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/string-width": {
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
|
||||
|
|
@ -2402,8 +2366,6 @@
|
|||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/supports-color": {
|
||||
"version": "8.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz",
|
||||
|
|
@ -2576,7 +2538,6 @@
|
|||
"punycode": "^2.1.0"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/uuid": {
|
||||
"version": "9.0.1",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
|
||||
|
|
@ -2695,8 +2656,6 @@
|
|||
"resolved": "https://registry.npmjs.org/vue-viewer/-/vue-viewer-1.0.4.tgz",
|
||||
"integrity": "sha512-wXNqcHR6BhoESCmSdQcNAwzNeOquZVxqphQRZlcZRr01xhso6pj5jtAknLNbBNWYOYnl8b8SpOsi5ob8agvrlw=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"node_modules/watchpack": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.0.tgz",
|
||||
|
|
@ -2810,7 +2769,6 @@
|
|||
"node": ">= 10.13.0"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"node_modules/which-module": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz",
|
||||
|
|
@ -3068,8 +3026,6 @@
|
|||
"resolved": "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.1.6.tgz",
|
||||
"integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"@jridgewell/gen-mapping": {
|
||||
"version": "0.3.3",
|
||||
"resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
|
||||
|
|
@ -3107,14 +3063,11 @@
|
|||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"@jridgewell/sourcemap-codec": {
|
||||
"version": "1.4.15",
|
||||
"resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
|
||||
"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"@jridgewell/trace-mapping": {
|
||||
"version": "0.3.22",
|
||||
"resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz",
|
||||
|
|
@ -3152,7 +3105,6 @@
|
|||
"fastq": "^1.6.0"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"@popperjs/core": {
|
||||
"version": "npm:@sxzz/popperjs-es@2.11.7",
|
||||
"resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
|
||||
|
|
@ -3249,8 +3201,6 @@
|
|||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"@sindresorhus/merge-streams": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmmirror.com/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz",
|
||||
|
|
@ -3292,7 +3242,6 @@
|
|||
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
|
||||
"dev": true
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"@types/lodash": {
|
||||
"version": "4.14.202",
|
||||
"resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.202.tgz",
|
||||
|
|
@ -3306,8 +3255,6 @@
|
|||
"@types/lodash": "*"
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"@types/node": {
|
||||
"version": "20.11.20",
|
||||
"resolved": "https://registry.npmmirror.com/@types/node/-/node-20.11.20.tgz",
|
||||
|
|
@ -3318,7 +3265,6 @@
|
|||
"undici-types": "~5.26.4"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"@types/web-bluetooth": {
|
||||
"version": "0.0.16",
|
||||
"resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
|
||||
|
|
@ -3475,8 +3421,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"@webassemblyjs/ast": {
|
||||
"version": "1.11.6",
|
||||
"resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.11.6.tgz",
|
||||
|
|
@ -3697,7 +3641,6 @@
|
|||
"fast-deep-equal": "^3.1.3"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"ansi-regex": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
||||
|
|
@ -3730,8 +3673,6 @@
|
|||
"form-data": "^4.0.0"
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"braces": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
|
||||
|
|
@ -3761,14 +3702,11 @@
|
|||
"dev": true,
|
||||
"peer": true
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"camelcase": {
|
||||
"version": "5.3.1",
|
||||
"resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
|
||||
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"caniuse-lite": {
|
||||
"version": "1.0.30001589",
|
||||
"resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001589.tgz",
|
||||
|
|
@ -3776,14 +3714,11 @@
|
|||
"dev": true,
|
||||
"peer": true
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"charenc": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/charenc/-/charenc-0.0.2.tgz",
|
||||
"integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"chrome-trace-event": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
|
||||
|
|
@ -3791,7 +3726,6 @@
|
|||
"dev": true,
|
||||
"peer": true
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"cliui": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
|
||||
|
|
@ -3823,8 +3757,6 @@
|
|||
"delayed-stream": "~1.0.0"
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"commander": {
|
||||
"version": "2.20.3",
|
||||
"resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
|
||||
|
|
@ -3846,7 +3778,6 @@
|
|||
"serialize-javascript": "^6.0.2"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"crypt": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/crypt/-/crypt-0.0.2.tgz",
|
||||
|
|
@ -3882,8 +3813,6 @@
|
|||
"resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
|
||||
"integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"electron-to-chromium": {
|
||||
"version": "1.4.680",
|
||||
"resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.680.tgz",
|
||||
|
|
@ -3891,7 +3820,6 @@
|
|||
"dev": true,
|
||||
"peer": true
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"element-plus": {
|
||||
"version": "2.4.4",
|
||||
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.4.4.tgz",
|
||||
|
|
@ -3924,8 +3852,6 @@
|
|||
"resolved": "https://registry.npmmirror.com/encode-utf8/-/encode-utf8-1.0.3.tgz",
|
||||
"integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"enhanced-resolve": {
|
||||
"version": "5.15.0",
|
||||
"resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz",
|
||||
|
|
@ -3944,7 +3870,6 @@
|
|||
"dev": true,
|
||||
"peer": true
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"esbuild": {
|
||||
"version": "0.19.10",
|
||||
"resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.19.10.tgz",
|
||||
|
|
@ -3976,8 +3901,6 @@
|
|||
"@esbuild/win32-x64": "0.19.10"
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"escalade": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.2.tgz",
|
||||
|
|
@ -3985,14 +3908,11 @@
|
|||
"dev": true,
|
||||
"peer": true
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"escape-html": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz",
|
||||
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"eslint-scope": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz",
|
||||
|
|
@ -4030,14 +3950,11 @@
|
|||
"dev": true,
|
||||
"peer": true
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"estree-walker": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
|
||||
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"events": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz",
|
||||
|
|
@ -4100,7 +4017,6 @@
|
|||
"to-regex-range": "^5.0.1"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"find-up": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
|
||||
|
|
@ -4137,8 +4053,6 @@
|
|||
"resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
|
||||
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"glob-parent": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz",
|
||||
|
|
@ -4189,28 +4103,22 @@
|
|||
"integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
|
||||
"dev": true
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"is-buffer": {
|
||||
"version": "1.1.6",
|
||||
"resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz",
|
||||
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"is-extglob": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
|
||||
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
|
||||
"dev": true
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"is-fullwidth-code-point": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
||||
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"is-glob": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
|
||||
|
|
@ -4258,7 +4166,6 @@
|
|||
"dev": true,
|
||||
"peer": true
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"locate-path": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
|
||||
|
|
@ -4306,8 +4213,6 @@
|
|||
"resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz",
|
||||
"integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"merge-stream": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
|
||||
|
|
@ -4331,7 +4236,6 @@
|
|||
"picomatch": "^2.3.1"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"mime-db": {
|
||||
"version": "1.52.0",
|
||||
"resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
|
||||
|
|
@ -4355,8 +4259,6 @@
|
|||
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz",
|
||||
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"neo-async": {
|
||||
"version": "2.6.2",
|
||||
"resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz",
|
||||
|
|
@ -4377,7 +4279,6 @@
|
|||
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
|
||||
"dev": true
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"normalize-wheel-es": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
|
||||
|
|
@ -4409,29 +4310,40 @@
|
|||
"resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
|
||||
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"path-type": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/path-type/-/path-type-5.0.0.tgz",
|
||||
"integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==",
|
||||
"dev": true
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"picocolors": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
|
||||
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"picomatch": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
|
||||
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
|
||||
"dev": true
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"pinia": {
|
||||
"version": "2.1.7",
|
||||
"resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz",
|
||||
"integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==",
|
||||
"requires": {
|
||||
"@vue/devtools-api": "^6.5.0",
|
||||
"vue-demi": ">=0.14.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"vue-demi": {
|
||||
"version": "0.14.7",
|
||||
"resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz",
|
||||
"integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
|
||||
"requires": {}
|
||||
}
|
||||
}
|
||||
},
|
||||
"pngjs": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
|
||||
|
|
@ -4447,15 +4359,12 @@
|
|||
"source-map-js": "^1.0.2"
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"punycode": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz",
|
||||
"integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
|
||||
"dev": true
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"qrcode": {
|
||||
"version": "1.5.3",
|
||||
"resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.3.tgz",
|
||||
|
|
@ -4467,8 +4376,6 @@
|
|||
"yargs": "^15.3.1"
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"queue-microtask": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
|
||||
|
|
@ -4484,35 +4391,28 @@
|
|||
"safe-buffer": "^5.1.0"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"require-directory": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
|
||||
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"require-from-string": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz",
|
||||
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
|
||||
"dev": true
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"require-main-filename": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
|
||||
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"reusify": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz",
|
||||
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
|
||||
"dev": true
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"rollup": {
|
||||
"version": "4.9.1",
|
||||
"resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.9.1.tgz",
|
||||
|
|
@ -4535,8 +4435,6 @@
|
|||
"fsevents": "~2.3.2"
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"run-parallel": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
|
||||
|
|
@ -4573,14 +4471,11 @@
|
|||
"randombytes": "^2.1.0"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"set-blocking": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
|
||||
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"slash": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/slash/-/slash-5.1.0.tgz",
|
||||
|
|
@ -4594,14 +4489,11 @@
|
|||
"dev": true,
|
||||
"peer": true
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"source-map-js": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz",
|
||||
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"source-map-support": {
|
||||
"version": "0.5.21",
|
||||
"resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz",
|
||||
|
|
@ -4613,7 +4505,6 @@
|
|||
"source-map": "^0.6.0"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"string-width": {
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
|
||||
|
|
@ -4632,8 +4523,6 @@
|
|||
"ansi-regex": "^5.0.1"
|
||||
}
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"supports-color": {
|
||||
"version": "8.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz",
|
||||
|
|
@ -4762,7 +4651,6 @@
|
|||
"punycode": "^2.1.0"
|
||||
}
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"uuid": {
|
||||
"version": "9.0.1",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
|
||||
|
|
@ -4819,8 +4707,6 @@
|
|||
"resolved": "https://registry.npmjs.org/vue-viewer/-/vue-viewer-1.0.4.tgz",
|
||||
"integrity": "sha512-wXNqcHR6BhoESCmSdQcNAwzNeOquZVxqphQRZlcZRr01xhso6pj5jtAknLNbBNWYOYnl8b8SpOsi5ob8agvrlw=="
|
||||
},
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
"watchpack": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.0.tgz",
|
||||
|
|
@ -4914,7 +4800,6 @@
|
|||
"dev": true,
|
||||
"peer": true
|
||||
},
|
||||
>>>>>>> 29d3e42 (提交,小鸿)
|
||||
"which-module": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz",
|
||||
|
|
@ -6,7 +6,8 @@
|
|||
"scripts": {
|
||||
"dev": "vite",
|
||||
"build": "vite build",
|
||||
"preview": "vite preview"
|
||||
"preview": "vite preview",
|
||||
"devs": "vite --host 10.168.101.50 --port 80"
|
||||
},
|
||||
"dependencies": {
|
||||
"@element-plus/icons-vue": "^2.3.1",
|
||||
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 162 KiB After Width: | Height: | Size: 162 KiB |
|
Before Width: | Height: | Size: 332 KiB After Width: | Height: | Size: 332 KiB |
|
Before Width: | Height: | Size: 342 KiB After Width: | Height: | Size: 342 KiB |
|
Before Width: | Height: | Size: 769 KiB After Width: | Height: | Size: 769 KiB |
|
Before Width: | Height: | Size: 765 KiB After Width: | Height: | Size: 765 KiB |
|
Before Width: | Height: | Size: 1003 KiB After Width: | Height: | Size: 1003 KiB |
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 567 KiB After Width: | Height: | Size: 567 KiB |
|
Before Width: | Height: | Size: 97 KiB After Width: | Height: | Size: 97 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 297 KiB After Width: | Height: | Size: 297 KiB |
|
Before Width: | Height: | Size: 313 KiB After Width: | Height: | Size: 313 KiB |
|
Before Width: | Height: | Size: 257 KiB After Width: | Height: | Size: 257 KiB |
|
Before Width: | Height: | Size: 449 KiB After Width: | Height: | Size: 449 KiB |
|
Before Width: | Height: | Size: 458 KiB After Width: | Height: | Size: 458 KiB |
|
Before Width: | Height: | Size: 253 KiB After Width: | Height: | Size: 253 KiB |
|
Before Width: | Height: | Size: 2.1 MiB After Width: | Height: | Size: 2.1 MiB |
|
Before Width: | Height: | Size: 321 KiB After Width: | Height: | Size: 321 KiB |
|
Before Width: | Height: | Size: 391 KiB After Width: | Height: | Size: 391 KiB |
|
Before Width: | Height: | Size: 287 KiB After Width: | Height: | Size: 287 KiB |
|
Before Width: | Height: | Size: 332 KiB After Width: | Height: | Size: 332 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 162 KiB After Width: | Height: | Size: 162 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.4 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 276 B After Width: | Height: | Size: 276 B |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
|
@ -16,7 +16,7 @@
|
|||
<br />
|
||||
<el-image
|
||||
class="grid-text-title-img-wenyang"
|
||||
:src="dialogImgUrl_xiaoguo"
|
||||
:src="dialogImgUrl_xiaoguo.split(',')[0]"
|
||||
fit="contain"
|
||||
/>
|
||||
<!-- <el-image style="width: 300px; height: 300px" :src="dialogImgUrl_xiaoguo" fit="contain" />-->
|
||||
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
<el-image
|
||||
class="grid-text-title-img"
|
||||
:src="dialogImgUrl_xiaoguo"
|
||||
:src="dialogImgUrl_xiaoguo.split(',')[0]"
|
||||
fit="contain"
|
||||
/>
|
||||
<!-- <el-image style="width: 300px; height: 300px" :src="dialogImgUrl_xiaoguo" fit="contain" />-->
|
||||
|
|
@ -36,7 +36,7 @@
|
|||
<div class="grid-text-title">纹样图</div>
|
||||
<el-image
|
||||
style="width: 300px; height: 300px"
|
||||
:src="dialogImgUrl_wenyang"
|
||||
:src="dialogImgUrl_wenyang.split(',')[0]"
|
||||
fit="contain"
|
||||
/>
|
||||
<!--<el-image style="width: 300px; height: 300px" :src="dialogImgUrl_wenyang" fit="contain" />-->
|
||||
|
|
@ -0,0 +1,258 @@
|
|||
<template>
|
||||
<div>
|
||||
<div class="header">
|
||||
<div class="left">
|
||||
<div class="leftBox">
|
||||
<div
|
||||
class="titleOne"
|
||||
@click="toggleDropdown"
|
||||
@mousemove="changeBackgroundColorMove1()"
|
||||
@mouseleave="changeBackgroundColorLeave1()"
|
||||
:style="backgroundColor1"
|
||||
>
|
||||
目录<el-icon style="padding-left: 5px;"><ArrowRight /></el-icon>
|
||||
</div>
|
||||
<div class="dropdown" v-if="showDropdown">
|
||||
<div
|
||||
class="titleTwo"
|
||||
@click="about()"
|
||||
@mousemove="changeBackgroundColorMove2()"
|
||||
@mouseleave="changeBackgroundColorLeave2()"
|
||||
:style="backgroundColor2"
|
||||
>
|
||||
关于
|
||||
</div>
|
||||
<div
|
||||
class="titleThree"
|
||||
@click="pickingDetails()"
|
||||
@mousemove="changeBackgroundColorMove3()"
|
||||
@mouseleave="changeBackgroundColorLeave3()"
|
||||
:style="backgroundColor3"
|
||||
>
|
||||
物料申请
|
||||
</div>
|
||||
<div
|
||||
class="titleFour"
|
||||
@click="finishedProduct()"
|
||||
@mousemove="changeBackgroundColorMove4()"
|
||||
@mouseleave="changeBackgroundColorLeave4()"
|
||||
:style="backgroundColor4"
|
||||
>
|
||||
成品入库
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="position: fixed; top: 6%; left: 50%; transform: translate(-50%, -50%);">
|
||||
<img src="../assets/logo.png" style="width: 80px; height: 80px;"/>
|
||||
</div>
|
||||
|
||||
<div class="right" v-if="isWechat">
|
||||
<!-- 在微信中显示的内容 -->
|
||||
<div style="display: grid; grid-template-columns: 1fr;gap: 0px;color: #ffffff;font-size: 12px;">
|
||||
<img v-if="access_token==null" src="@/assets/images/微信.png" @click="wechatlogin" style="width: 50px; height: 50px;" />
|
||||
<img v-else :src=headimgurl style="width: 50px; height: 50px;" />
|
||||
|
||||
<div v-if="access_token==null">微信登录</div>
|
||||
<div v-else>{{name}}</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div v-else >
|
||||
<!-- 非微信环境中的内容 -->
|
||||
|
||||
</div>
|
||||
<div class="right" v-if="!token&&!isWechat">
|
||||
|
||||
<!-- 注册和登录 -->
|
||||
<el-icon color="white"><Coin /></el-icon>
|
||||
<div class="icon" @click="register">注册</div>
|
||||
<el-icon color="white"><Check /></el-icon>
|
||||
<div class="icon" @click="login">登录</div>
|
||||
</div>
|
||||
<div class="right" v-if="token">
|
||||
<!-- 注册和登录 -->
|
||||
<el-icon color="white"><User /></el-icon>
|
||||
<div class="icon">{{name}}</div>
|
||||
<el-icon color="white"><RemoveFilled /></el-icon>
|
||||
<div class="icon" @click="logout">退出登录</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {ref,reactive, onMounted} from 'vue'
|
||||
import router from "../router";
|
||||
import {wechatLogin} from "@/util/indexApi";
|
||||
import axios from 'axios';
|
||||
import { ElNotification } from 'element-plus';
|
||||
import { expressUrl } from '@/util/Resource';
|
||||
const clickNum = ref(0)
|
||||
let showDropdown = ref(false)
|
||||
const backgroundColor1 = ref('')
|
||||
const backgroundColor2 = ref('')
|
||||
const backgroundColor3 = ref('')
|
||||
const backgroundColor4 = ref('')
|
||||
let token = ref(false)
|
||||
let access_token = ref(null)
|
||||
let name = ref(null)
|
||||
let isWechat = ref(false)
|
||||
let headimgurl = ref(null)
|
||||
|
||||
function changeBackgroundColorMove1(){
|
||||
backgroundColor1.value = 'background-color: black;'
|
||||
}
|
||||
function changeBackgroundColorLeave1(){
|
||||
backgroundColor1.value = ''
|
||||
}
|
||||
function changeBackgroundColorMove2(){
|
||||
backgroundColor2.value = 'background-color:black;'
|
||||
}
|
||||
function changeBackgroundColorLeave2(){
|
||||
backgroundColor2.value = ''
|
||||
}
|
||||
function changeBackgroundColorMove3(){
|
||||
backgroundColor3.value = 'background-color: black;'
|
||||
}
|
||||
function changeBackgroundColorLeave3(){
|
||||
backgroundColor3.value = ''
|
||||
}
|
||||
function changeBackgroundColorMove4(){
|
||||
backgroundColor4.value = 'background-color: black;'
|
||||
}
|
||||
function changeBackgroundColorLeave4(){
|
||||
backgroundColor4.value = ''
|
||||
}
|
||||
function toggleDropdown() {
|
||||
console.log("showDropdown:",showDropdown.value)
|
||||
showDropdown.value = !showDropdown.value
|
||||
clickNum.value++
|
||||
|
||||
}
|
||||
//路由方法
|
||||
function pickingDetails(){
|
||||
router.push({name:'pickingDetails'})
|
||||
}
|
||||
function login(){
|
||||
router.push({name:'login'})
|
||||
}
|
||||
function register(){
|
||||
router.push({name:"register"})
|
||||
}
|
||||
function about(){
|
||||
router.push({name:'about'})
|
||||
}
|
||||
function finishedProduct(){
|
||||
router.push({name:'finishedProduct'})
|
||||
}
|
||||
|
||||
function logout(){
|
||||
localStorage.removeItem('contact');
|
||||
token.value = false
|
||||
name.value = null
|
||||
}
|
||||
|
||||
function wechatlogin(){
|
||||
wechatLogin()
|
||||
}
|
||||
function isWeixin() {
|
||||
const ua = window.navigator.userAgent.toLowerCase();
|
||||
return /micromessenger/i.test(ua);
|
||||
}
|
||||
const open1 = () => {
|
||||
ElNotification({
|
||||
title: '微信登录成功',
|
||||
message: '请填写本站账户和密码、名称进行绑定',
|
||||
type: 'success',
|
||||
})}
|
||||
function showNotification (title,message,type = 'success'){
|
||||
ElNotification({
|
||||
title,
|
||||
message,
|
||||
type,
|
||||
});
|
||||
}
|
||||
onMounted(()=>{
|
||||
isWechat.value = isWeixin();
|
||||
if(localStorage.getItem('contact') != null&& !isWechat.value ){
|
||||
|
||||
token.value=true
|
||||
name.value = localStorage.getItem('contact');
|
||||
}
|
||||
|
||||
if(isWechat.value&&localStorage.getItem('access_token')==null)
|
||||
{
|
||||
|
||||
// 获取当前页面URL
|
||||
const url = window.location.href;
|
||||
// 解析URL查询参数,获取code
|
||||
function getQueryString(name) {
|
||||
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
|
||||
var r = url.substr(url.indexOf('?')+1).match(reg);
|
||||
if (r != null) return unescape(r[2]); return null;
|
||||
}
|
||||
// 获取code
|
||||
const code = getQueryString('code');
|
||||
// 如果code存在,则发起一个GET请求,将code传递给后端Express服务器
|
||||
wechatlogintoken(code);
|
||||
|
||||
}
|
||||
else if(isWechat.value){
|
||||
access_token.value=localStorage.getItem('access_token');
|
||||
name.value=localStorage.getItem('nickname');
|
||||
headimgurl.value=localStorage.getItem('headimgurl');
|
||||
}
|
||||
})
|
||||
|
||||
async function wechatlogintoken(code){
|
||||
if (code !== null) {
|
||||
try {
|
||||
const response = await axios.get(`${expressUrl}/wechatlogin?code=${code}`);
|
||||
console.log(response.data)
|
||||
if (response.data.status === 200) {
|
||||
// openid.value = response.data.nickname;
|
||||
localStorage.setItem('openid', response.data.openid);
|
||||
localStorage.setItem('nickname', response.data.nickname);
|
||||
localStorage.setItem('headimgurl', response.data.headimgurl);
|
||||
localStorage.setItem('access_token', response.data.accesstoken);
|
||||
localStorage.setItem('cellPhoneNumber',response.data.cellPhoneNumber);
|
||||
// 直接在这里设置值
|
||||
access_token.value = localStorage.getItem('access_token');
|
||||
name.value = localStorage.getItem('nickname');
|
||||
headimgurl.value = localStorage.getItem('headimgurl');
|
||||
if(localStorage.getItem('cellPhoneNumber')=='')
|
||||
{
|
||||
showNotification('微信登录成功', '请填写本站账户和密码、名称进行绑定');
|
||||
router.push({name:'linkedmobile'});
|
||||
}
|
||||
}else if(response.data.status === 201)
|
||||
{
|
||||
|
||||
localStorage.setItem('openid', response.data.openid);
|
||||
localStorage.setItem('nickname', response.data.nickname);
|
||||
localStorage.setItem('headimgurl', response.data.headimgurl);
|
||||
localStorage.setItem('access_token', response.data.accesstoken);
|
||||
localStorage.setItem('cellPhoneNumber', '');
|
||||
// 直接在这里设置值
|
||||
access_token.value = localStorage.getItem('access_token');
|
||||
name.value = localStorage.getItem('nickname');
|
||||
headimgurl.value = localStorage.getItem('headimgurl');
|
||||
open1();
|
||||
router.push({name:response.data.route});
|
||||
|
||||
}
|
||||
} catch (error) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
@import "../assets/css/header.css";
|
||||
</style>
|
||||
|
|
@ -3,7 +3,6 @@ import './assets/main.css'
|
|||
import { createApp } from 'vue'
|
||||
import App from './App.vue'
|
||||
import router from './router'
|
||||
|
||||
import ElementPlus from 'element-plus'
|
||||
import 'element-plus/dist/index.css'
|
||||
|
||||
|
|
@ -13,7 +12,6 @@ import * as ElementPlusIconsVue from '@element-plus/icons-vue'
|
|||
import axios from 'axios'
|
||||
|
||||
|
||||
|
||||
const app = createApp(App)
|
||||
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
|
||||
app.component(key, component)
|
||||
|
|
@ -24,5 +22,4 @@ app.use(ElementPlus)
|
|||
app.config.globalProperties.axios = axios;
|
||||
|
||||
app.use(router)
|
||||
|
||||
app.mount('#app')
|
||||
|
|
@ -14,6 +14,7 @@ const router = createRouter({
|
|||
{ path: '/register', name: 'register', component: () => import('../views/register.vue')},
|
||||
{ path: '/pickingDetails', name: 'pickingDetails', component: () => import('../views/pickingDetails.vue')},
|
||||
{ path: '/finishedProduct', name: 'finishedProduct', component: () => import('../views/finishedProduct.vue')},
|
||||
{ path: '/linkedmobile', name: 'linkedmobile', component: () => import('../views/linkedmobile.vue')},
|
||||
{ path: '/test', name: 'test', component: () => import('../views/test.vue')},
|
||||
]
|
||||
})
|
||||
|
|
@ -16,7 +16,8 @@ export const filiServiceUrl="http://cop.qdniiot.com/service/";
|
|||
export const FfiliServiceUrl="https://apaas.seeyonv8.com/service/";
|
||||
//文件下载url
|
||||
export const filiStorageKeyUrl="api/wushuiyuntai3071243142359302596/FileAppService/generateShareUrl";
|
||||
|
||||
//Express后端地址
|
||||
export const expressUrl="/express";
|
||||
// 请求头
|
||||
export const headers = {
|
||||
'Content-Type': 'application/json',
|
||||
|
|
@ -70,4 +71,10 @@ export const Enums=['wuliaoguanli','xiuniangzhichengjibie','minzu','jifa','xiuni
|
|||
//[id,name]
|
||||
export const EnumCodeMap=reactive(new Map<string, any>());
|
||||
export const EnumCodeoPtionsMap=reactive(new Map<string, any>());
|
||||
export const EnumCodeoPtionsMapS=reactive(new Map<string, any>());
|
||||
export const EnumCodeoPtionsMapS=reactive(new Map<string, any>());
|
||||
|
||||
//微信相关
|
||||
export const weixinAppId="wxf5c654b43f104000";
|
||||
export const weixinAppSecret="64fb551a04edb118580983e965df2591";
|
||||
export const weixinredirect_uri="https://wsyt.guizhoujc.com";
|
||||
//export const weixinredirect_uri="http://10.168.101.50";
|
||||
|
|
@ -1,12 +1,13 @@
|
|||
//欧政铭
|
||||
import { ref } from 'vue';
|
||||
import axios from 'axios';
|
||||
import axios , { AxiosResponse }from 'axios';
|
||||
import { v4 as uuidv4 } from 'uuid';//需要安装npm install uuid
|
||||
import { calculateSignature } from '@/util/md5Util'; // 修改为实际的路径
|
||||
import {headers,appSecret, Enums, isEnvironment, renyuanApiUrl} from '@/util/Resource';
|
||||
import {filiStorageKeyUrl,serviceUrl,FserviceUrl,
|
||||
wazpApiUpdateUrl,filiServiceUrl,FfiliServiceUrl,EnumApiUrl,
|
||||
import {headers,appSecret, isEnvironment, renyuanApiUrl} from '@/util/Resource';
|
||||
import {filiStorageKeyUrl,serviceUrl,expressUrl,
|
||||
wazpApiUpdateUrl,filiServiceUrl,FfiliServiceUrl,
|
||||
EnumCodeMap,EnumCodeoPtionsMap,EnumCodeoPtionsMapS,GetUserByApiUrl,userApiUpdateUrl
|
||||
,weixinAppId,weixinredirect_uri
|
||||
} from '@/util/Resource';
|
||||
|
||||
|
||||
|
|
@ -109,89 +110,44 @@ export async function selectApi(leixing,pageNumber,pageSize,apiurl){
|
|||
}
|
||||
}
|
||||
|
||||
//枚举查询接口
|
||||
/**
|
||||
*
|
||||
* @param codes 枚举code
|
||||
* @param apiurl 枚举查询接口url
|
||||
* @param isEnvironment 区分开发环境与正式环境,正式环境为true
|
||||
* 枚举查询接口
|
||||
* @returns
|
||||
*/
|
||||
export async function selectEnumApi(codes,apiurl){
|
||||
|
||||
//随机32位请求流水号
|
||||
const randomUUID = uuidv4();
|
||||
let randomNum = randomUUID.substr(0, 32);
|
||||
// 请求头headers,在Resource.ts文件里面
|
||||
// 请求体部分参数
|
||||
let requestBody =null;
|
||||
requestBody = {
|
||||
requestId: randomNum,
|
||||
timestamp: Date.now(),
|
||||
//异步回调URL
|
||||
"notifyUrl": "",
|
||||
//排序
|
||||
"sort": {
|
||||
"orders": [
|
||||
{
|
||||
"property": "createTime",
|
||||
"direction": "ASC"
|
||||
}
|
||||
]
|
||||
},
|
||||
// 条件
|
||||
"params":{"enumCodes": [codes]}
|
||||
};
|
||||
// 计算 MD5 签名
|
||||
const signature = calculateSignature(requestBody, appSecret);
|
||||
headers['sign'] = signature;
|
||||
try {
|
||||
|
||||
// 发送 POST 请求api/wushuiyuntai9146708742788827704/Renyuandangan11AppServiceImpl/selectById
|
||||
//调用本地+serviceUrl
|
||||
let response =null;
|
||||
if(isEnvironment){
|
||||
response = await axios.post(serviceUrl+apiurl, requestBody, { headers });
|
||||
}else{
|
||||
response = await axios.post(apiurl, requestBody, { headers });
|
||||
}
|
||||
// 处理返回的数据
|
||||
if(response.status === 200){
|
||||
const responseData = response.data;
|
||||
const temp1 =ref([])
|
||||
const temp2 =ref([])
|
||||
for (const key in responseData['data']['content']) {
|
||||
//把得到的枚举存到map里面
|
||||
EnumCodeMap.set(responseData['data']['content'][key]['id'],responseData['data']['content'][key]['name']);
|
||||
//存给下拉选项用
|
||||
if(responseData['data']['content'][key]['enumCode']=='minzu')
|
||||
{
|
||||
temp1.value.push(responseData['data']['content'][key]['name']);
|
||||
EnumCodeoPtionsMapS.set(responseData['data']['content'][key]['name'],responseData['data']['content'][key]['id'])
|
||||
|
||||
}
|
||||
if(responseData['data']['content'][key]['enumCode']=='jifa')
|
||||
{
|
||||
temp2.value.push(responseData['data']['content'][key]['name']);
|
||||
EnumCodeoPtionsMapS.set(responseData['data']['content'][key]['name'],responseData['data']['content'][key]['id'])
|
||||
}
|
||||
}
|
||||
|
||||
if(codes=='minzu')
|
||||
EnumCodeoPtionsMap.set('民族',temp1.value);
|
||||
if(codes=='jifa')
|
||||
EnumCodeoPtionsMap.set('技法',temp2.value);
|
||||
|
||||
//return parseJson( responseData['data']['content']);
|
||||
return responseData;
|
||||
}else{console.log('枚举',EnumCodeMap);}
|
||||
|
||||
|
||||
} catch (error) {
|
||||
console.error('调用枚举接口发生错误:', error);
|
||||
}
|
||||
|
||||
export async function selectEnumApi(): Promise<void> {
|
||||
try {
|
||||
// 发送GET请求获取枚举数据
|
||||
const response: AxiosResponse<any> = await axios.get(`${expressUrl}/enum`);
|
||||
|
||||
if (response.status === 200) {
|
||||
const responseData = response.data;
|
||||
|
||||
// 遍历并处理枚举数据
|
||||
for (const key in responseData) {
|
||||
const content = responseData[key]['data']['content'];
|
||||
for (const item of content) {
|
||||
// 存储到全局枚举名称与ID映射
|
||||
EnumCodeMap.set(item['id'], item['name']);
|
||||
// 存储下拉选项的映射
|
||||
// EnumCodeoPtionsMapS.set(item['name'], item['id']);
|
||||
|
||||
// 根据枚举类型分别存储到对应的下拉选项列表
|
||||
if (item['enumCode'] === 'minzu') {
|
||||
EnumCodeoPtionsMap.get('民族')?.push(item['name']) || EnumCodeoPtionsMap.set('民族', [item['name']]);
|
||||
} else if (item['enumCode'] === 'jifa') {
|
||||
EnumCodeoPtionsMap.get('技法')?.push(item['name']) || EnumCodeoPtionsMap.set('技法', [item['name']]);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.error(`获取枚举信息失败,状态码:${response.status}`);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('调用枚举查询接口发生错误:', error);
|
||||
}
|
||||
}
|
||||
|
||||
/** 根据id查询人员档案
|
||||
* @param uid 绣娘或者设计师id
|
||||
*/
|
||||
|
|
@ -428,6 +384,14 @@ export async function UP_User_Api(){
|
|||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
export function wechatLogin(){
|
||||
window.location.href ='https://open.weixin.qq.com/connect/oauth2/authorize?appid='+weixinAppId+'&redirect_uri='+weixinredirect_uri+'&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect';
|
||||
// window.location.href ='https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx4ba9c65aa31c50db&redirect_uri=http://10.168.101.50/wechatlogin/&response_type=code&scope=snsapi_base&state=STATE&connect_redirect=1#wechat_redirect';
|
||||
|
||||
}
|
||||
//解析JSON接口
|
||||
|
||||
/**
|
||||
|
|
@ -67,14 +67,14 @@
|
|||
<div slot="header" class="card-header">
|
||||
<img
|
||||
v-if="item.danganleixing == zuopinleixing.作品"
|
||||
:src="item.xiaoguotu"
|
||||
:src="item.xiaoguotu.split(',')[0]"
|
||||
alt="作品图片"
|
||||
class="card-image"
|
||||
@click="dialogV(item.id)"
|
||||
/>
|
||||
<img
|
||||
v-else-if="item.danganleixing == zuopinleixing.纹样"
|
||||
:src="item.yuanshitupian"
|
||||
:src="item.yuanshitupian.split(',')[0]"
|
||||
alt="作品图片"
|
||||
class="card-image"
|
||||
@click="dialogV(item.id)"
|
||||
|
|
@ -159,15 +159,10 @@
|
|||
import { onMounted, ref } from "vue";
|
||||
import {
|
||||
zuopinleixing,
|
||||
wazpApiUrl,
|
||||
EnumApiUrl,
|
||||
Enums,
|
||||
sousuoUrl,
|
||||
EnumCodeoPtionsMapS,
|
||||
EnumCodeMap,
|
||||
expressUrl,
|
||||
} from "@/util/Resource";
|
||||
import {
|
||||
selectApi,
|
||||
getFiliUrl,
|
||||
selectEnumApi,
|
||||
selectUserApi,
|
||||
UP_WAZP_Api,
|
||||
|
|
@ -177,21 +172,15 @@ import el_dialog from "../components/dialog.vue";
|
|||
import input_select from "@/components/input_select.vue";
|
||||
import emitter from "@/util/emitter";
|
||||
import Viewer from "@/components/Viewer.vue";
|
||||
|
||||
import axios from 'axios';
|
||||
// 在函数外部声明一个变量
|
||||
//let zuopingDataArray:zuopingData = {} as zuopingData;
|
||||
// 使用 ref 初始化作品数据数组
|
||||
let zuopingDataArray = ref([]);
|
||||
let wenyangDataArray = ref([]);
|
||||
//组件显示的数据
|
||||
let handleFilterDataArray = ref([]);
|
||||
//存储的全部数据
|
||||
let DataArray = ref([]);
|
||||
let num = ref(8);
|
||||
let onM = ref("全部");
|
||||
let yenum = ref(1);
|
||||
let Tsousuo = ref("");
|
||||
let Txiala = ref("");
|
||||
//二维码
|
||||
|
||||
let srcList = ref([
|
||||
|
|
@ -225,13 +214,16 @@ function dialogV(id) {
|
|||
//初始加载
|
||||
onMounted(async () => {
|
||||
//获取初始枚举
|
||||
for (const key in Enums) {
|
||||
await selectEnumApi(Enums[key], EnumApiUrl);
|
||||
}
|
||||
//for (const key in Enums) {
|
||||
await selectEnumApi();
|
||||
//}
|
||||
|
||||
//{"danganleixing": "WENYANG"}
|
||||
//await getSelectApi({"and_like_mingcheng": "玉"},1,10,sousuoUrl);
|
||||
await getSelectApi({ danganleixing: "ZUOPIN" }, 1, 10, wazpApiUrl);
|
||||
await getSelectApi({ danganleixing: "WENYANG" }, 1, 10, wazpApiUrl);
|
||||
//let tt = await axios.get(`http://10.168.101.50:3000/zuopin?danganleixing=${'ZUOPIN'}&pageNumber=${1}&pageSize=${10}`)
|
||||
// await axios.get(`http://10.168.101.50:3000/wenyang?danganleixing=${'WENYANG'}&pageNumber=${1}&pageSize=${10}`)
|
||||
await getSelectApi("/zuopin","ZUOPIN", 1, 10);
|
||||
await getSelectApi("/wenyang","WENYANG", 1, 10);
|
||||
});
|
||||
|
||||
/**
|
||||
|
|
@ -241,14 +233,13 @@ onMounted(async () => {
|
|||
* @param pageSize 每页的数量
|
||||
* @param wazpApiUrl 纹案与作品分页查询接口url
|
||||
*/
|
||||
async function getSelectApi(str, pageNumber, pageSize, wazpApiUrl) {
|
||||
async function getSelectApi(luyou,str, pageNumber, pageSize) {
|
||||
try {
|
||||
//设置分页查询的查询数据需求
|
||||
|
||||
console.log(str);
|
||||
//let str =ref({"danganleixing": "WENYANG"});
|
||||
const result = await selectApi(str, pageNumber, pageSize, wazpApiUrl);
|
||||
console.log(result.data);
|
||||
//初始化的时候赋值
|
||||
const result =await axios.get(`${expressUrl}${luyou}?danganleixing=${str}&pageNumber=${pageNumber}&pageSize=${pageSize}`)
|
||||
//初始化的时候赋值
|
||||
if (DataArray.value == "") {
|
||||
// 将结果数据存储DataArray
|
||||
DataArray.value = result.data.content;
|
||||
|
|
@ -275,26 +266,11 @@ function startsWithHttpOrHttps(url) {
|
|||
}
|
||||
//对纹案与作品数据进行分类获取图片与设计师绣娘名称
|
||||
async function wazpfenlei(result) {
|
||||
const getFiliUrlPromise = (url) =>
|
||||
getFiliUrl(url).then((res) => res.split(",")[0]);
|
||||
|
||||
for (const item of result) {
|
||||
const dataIndex = DataArray.value.findIndex((data) => data.id === item.id);
|
||||
|
||||
if (dataIndex !== -1) {
|
||||
// 更新 xiaoguotu 字段
|
||||
if (!startsWithHttpOrHttps(DataArray.value[dataIndex]["xiaoguotu"])) {
|
||||
DataArray.value[dataIndex]["xiaoguotu"] = item.xiaoguotu
|
||||
? await getFiliUrlPromise(item.xiaoguotu)
|
||||
: "";
|
||||
}
|
||||
|
||||
// 更新 wenyangtupian 字段
|
||||
if (!startsWithHttpOrHttps(DataArray.value[dataIndex]["wenyangtupian"])) {
|
||||
DataArray.value[dataIndex]["wenyangtupian"] = item.wenyangtupian
|
||||
? await getFiliUrlPromise(item.wenyangtupian)
|
||||
: "";
|
||||
}
|
||||
|
||||
|
||||
// 用户信息处理部分保持不变
|
||||
if (
|
||||
|
|
@ -316,16 +292,7 @@ async function wazpfenlei(result) {
|
|||
DataArray.value[dataIndex]["shejishiCode"] =
|
||||
user.data.content["xingming"];
|
||||
}
|
||||
// 更新 yuanshitupian 字段
|
||||
if (item.danganleixing === zuopinleixing.纹样 && item.yuanshitupian) {
|
||||
if (
|
||||
!startsWithHttpOrHttps(DataArray.value[dataIndex]["yuanshitupian"])
|
||||
) {
|
||||
DataArray.value[dataIndex]["yuanshitupian"] = item.yuanshitupian
|
||||
? await getFiliUrlPromise(item.yuanshitupian)
|
||||
: "";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -340,7 +307,6 @@ function wenyangcon() {
|
|||
temp.value.push(DataArray.value[key]);
|
||||
}
|
||||
}
|
||||
console.log("纹样:", temp.value);
|
||||
handleFilterDataArray.value = temp.value.slice(0, num.value);
|
||||
}
|
||||
function zuopincon() {
|
||||
|
|
@ -410,7 +376,9 @@ function addcon() {
|
|||
//接收搜索传过来的值
|
||||
emitter.on("sousuo", async (value) => {
|
||||
try {
|
||||
await getSelectApi({ and_like_mingcheng: Tsousuo.value }, 1, 8, sousuoUrl);
|
||||
console.log(value)
|
||||
//await getSelectApi({ and_like_mingcheng: Tsousuo.value }, 1, 8, sousuoUrl);
|
||||
await getSelectApi("/sousuo",value[0], 1, 8);
|
||||
handleFilterDataArray.value = DataArray.value
|
||||
.filter((item) => item.mingcheng.includes(value[0]))
|
||||
.slice(0, num.value);
|
||||
|
|
@ -426,32 +394,84 @@ emitter.on("sousuo", async (value) => {
|
|||
|
||||
emitter.on("xiala", async (value) => {
|
||||
try {
|
||||
await filterAndSetData(value, sousuoUrl);
|
||||
filterAndSetData(value);
|
||||
} catch (error) {
|
||||
console.error("筛选数据时发生错误:", error);
|
||||
}
|
||||
});
|
||||
|
||||
async function filterAndSetData(value, sousuoUrl) {
|
||||
async function filterAndSetData(value) {
|
||||
let conditionKey;
|
||||
let enumValue = EnumCodeoPtionsMapS.get(value[0]);
|
||||
|
||||
|
||||
if (value[1] === "民族") {
|
||||
conditionKey = "minzu";
|
||||
await getSelectApi({ [conditionKey]: enumValue }, 1, 8, sousuoUrl);
|
||||
let foundKey = getKeyByValue(EnumCodeMap, value[0]);
|
||||
const temp = await axios.get(`${expressUrl}/shaixuan?leixing=${conditionKey}&foundKey=${foundKey}&pageNumber=${1}&pageSize=${8}`)
|
||||
let filteredData = ref([]);
|
||||
// 创建一个临时 Map 存储已存在的 id
|
||||
const existingIds = new Map(DataArray.value.map(item => [item.id, true]));
|
||||
// 使用新数组收集未重复的项
|
||||
const newData = [];
|
||||
for (const item of temp.data.content) {
|
||||
if (!existingIds.has(item.id)) {
|
||||
newData.push(item);
|
||||
existingIds.set(item.id, true);
|
||||
}
|
||||
}
|
||||
// 一次性将新的非重复项添加到 DataArray
|
||||
DataArray.value.push(...newData);
|
||||
|
||||
for (const item of DataArray.value) {
|
||||
if (item[conditionKey] === getKeyByValue(EnumCodeMap, value[0])) {
|
||||
filteredData.value.push(item);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//wazpfenlei(temp.data.content)
|
||||
handleFilterDataArray.value = filteredData.value.slice(0, num.value);
|
||||
//await getSelectApi("/shaixuan",{ [conditionKey]: enumValue }, 1, 8);
|
||||
} else if (value[1] === "技法") {
|
||||
conditionKey = "jifa";
|
||||
await getSelectApi({ [conditionKey]: enumValue }, 1, 8, sousuoUrl);
|
||||
let foundKey = getKeyByValue(EnumCodeMap, value[0]);
|
||||
const temp = await axios.get(`${expressUrl}/shaixuan?leixing=${conditionKey}&foundKey=${foundKey}&pageNumber=${1}&pageSize=${8}`)
|
||||
let filteredData = ref([]);
|
||||
|
||||
// 创建一个临时 Map 存储已存在的 id
|
||||
const existingIds = new Map(DataArray.value.map(item => [item.id, true]));
|
||||
// 使用新数组收集未重复的项
|
||||
const newData = [];
|
||||
for (const item of temp.data.content) {
|
||||
if (!existingIds.has(item.id)) {
|
||||
newData.push(item);
|
||||
existingIds.set(item.id, true);
|
||||
}
|
||||
}
|
||||
// 一次性将新的非重复项添加到 DataArray
|
||||
DataArray.value.push(...newData);
|
||||
for (const item of DataArray.value) {
|
||||
if (item[conditionKey] === getKeyByValue(EnumCodeMap, value[0])) {
|
||||
filteredData.value.push(item);
|
||||
}
|
||||
}
|
||||
|
||||
//wazpfenlei(temp.data.content)
|
||||
handleFilterDataArray.value = filteredData.value.slice(0, num.value);
|
||||
//await getSelectApi("/shaixuan",{ [conditionKey]: enumValue }, 1, 8);
|
||||
}
|
||||
|
||||
const filteredData = [];
|
||||
for (const key in DataArray.value) {
|
||||
if (DataArray.value[key][conditionKey] === enumValue) {
|
||||
filteredData.push(DataArray.value[key]);
|
||||
function getKeyByValue(map, value) {
|
||||
for (const [key, mapValue] of map.entries()) {
|
||||
if (mapValue === value) {
|
||||
return key;
|
||||
}
|
||||
}
|
||||
return undefined; // 如果没有找到匹配的值,则返回undefined
|
||||
}
|
||||
|
||||
handleFilterDataArray.value = filteredData.slice(0, num.value);
|
||||
|
||||
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
|
|
@ -0,0 +1,224 @@
|
|||
<template>
|
||||
<div>
|
||||
<!--头部标签 -->
|
||||
<div class="header">
|
||||
<div style="position: fixed; top: 6%; left: 50%; transform: translate(-50%, -50%);">
|
||||
<img src="/src/assets/logo.png" style="width: 80px; height: 80px;cursor: pointer;" @click="enterHomePage"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 注册表单的外层包裹容器 -->
|
||||
<div class="register-wrap">
|
||||
<!-- 注册表单 -->
|
||||
<el-form class="register-container" label-position="top" status-icon>
|
||||
<!-- 标题 -->
|
||||
<h2>用户注册</h2><br>
|
||||
|
||||
|
||||
<el-form-item label="联系方式:">
|
||||
<el-input v-model="contact" placeholder="手机号" autocomplete="off" minlength="11" maxlength="11" show-word-limit
|
||||
:rules="[{ required: true, message: '手机号不能为空', trigger: 'change' }, { validator: validateMobile, trigger: 'change' }]"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="密码:" class="left-top-label">
|
||||
<el-input type="password" v-model="password" placeholder="设置密码" autocomplete="off" show-password
|
||||
:rules="[{ required: true, message: '密码不能为空', trigger: 'change' }, { validator: validatePassword, trigger: 'change' }]"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="确认密码:">
|
||||
<el-input type="password" v-model="confirmPassword" placeholder="确认密码" autocomplete="off" show-password
|
||||
:rules="[{ required: true, message: '确认密码不能为空', trigger: 'blur' }, { validator: validateConfirmPassword, trigger: 'blur' }]"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="姓名:">
|
||||
<el-input v-model="name" placeholder="姓名" autocomplete="off"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<!-- 注册按钮 -->
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="callApi" style="width: 100%;">注册</el-button>
|
||||
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import headerComponent from '../components/promotionalPageComponents/header.vue'
|
||||
import FooterCompoent from '../components/footer.vue'
|
||||
import router from '../router'
|
||||
import { expressUrl } from '@/util/Resource'
|
||||
import { ref } from 'vue';
|
||||
import axios from 'axios';
|
||||
import { ElNotification } from 'element-plus'
|
||||
/*components: {
|
||||
// 在父组件中注册子组件
|
||||
Plus,FooterCompoent
|
||||
}*/
|
||||
|
||||
const password= ref('');
|
||||
const confirmPassword= ref('');
|
||||
const name= ref('');
|
||||
const contact= ref('');
|
||||
const userType= 'YOUKE';
|
||||
|
||||
|
||||
|
||||
const open1 = () => {
|
||||
ElNotification({
|
||||
title: '关联成功',
|
||||
message: '微信已与本站存在的账号关联绑定成功',
|
||||
type: 'success',
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
const showNotification = (title, message, type = 'success') => {
|
||||
ElNotification({
|
||||
title,
|
||||
message,
|
||||
type,
|
||||
});
|
||||
};
|
||||
function enterHomePage(){
|
||||
router.push({name:'home'})
|
||||
}
|
||||
|
||||
function gotoLogin() {
|
||||
// 处理用户登录链接的点击事件
|
||||
// 使用 Vue Router 跳转至登录页面
|
||||
router.push({ name: 'login' });
|
||||
}
|
||||
// 验证密码格式为8-16位数字和字母的组合
|
||||
function validatePassword(rule, value, callback) {
|
||||
const passwordReg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/;
|
||||
if (!passwordReg.test(value)) {
|
||||
callback(new Error('密码格式不正确,需为8-16位数字和字母的组合'));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
}
|
||||
// 验证确认密码与密码是否一致
|
||||
function validateConfirmPassword(rule, value, callback) {
|
||||
if (value !== this.password) {
|
||||
callback(new Error('两次输入的密码不一致'));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
}
|
||||
|
||||
// 验证手机号为11位标准手机号码
|
||||
function validateMobile(rule, value, callback) {
|
||||
const mobileReg = /^1[3-9]\d{9}$/;
|
||||
if (!mobileReg.test(value)) {
|
||||
callback(new Error('手机号格式不正确'));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
}
|
||||
|
||||
async function callApi(){
|
||||
if(localStorage.getItem('openid')!=null&&name.value!=''&&contact.value!=''&&password.value!='')
|
||||
{
|
||||
const openid = localStorage.getItem('openid');
|
||||
const response = await axios.post(`${expressUrl}/linkedmobile?openid=${openid}&name=${name.value}&Mobile=${contact.value}&password=${password.value}&userType=${userType}`);
|
||||
if(response.data.message=="SUCCESS")
|
||||
//关联成功
|
||||
console.log(response.data)
|
||||
localStorage.setItem('cellPhoneNumber', response.data.cellPhoneNumber);
|
||||
open1();
|
||||
router.push({name:'home'})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="css">
|
||||
|
||||
.header {
|
||||
width: 100%;
|
||||
height: 100px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
padding: 10px;
|
||||
/*border-bottom: 1px solid #ddd; /* 根据实际情况设置头部底边框 */
|
||||
transition: background-color 0.3s ease; /* 添加过渡效果 */
|
||||
color: #000000; /* 文字颜色 */
|
||||
background-image:url(../assets/headerBackgroungImg.png);
|
||||
background-color: #8a2924;
|
||||
z-index: 99;
|
||||
}
|
||||
/* .register-wrap {
|
||||
padding-left: 60%;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding-top: 6%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center right;
|
||||
background-size: 100%;
|
||||
width: 100%;
|
||||
height: 730px;
|
||||
background-image: url("/src/assets/pj.jpg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: center right;
|
||||
background-size: cover;
|
||||
|
||||
} */
|
||||
.register-wrap {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
padding-top: 10%;
|
||||
|
||||
/* background-repeat: no-repeat; */
|
||||
background-position: center right;
|
||||
background-image: url("/src/assets/mainBackgroundPic.png");
|
||||
/* background-repeat: no-repeat;
|
||||
background-position: center right;
|
||||
background-size: cover; */
|
||||
}
|
||||
|
||||
.register-container {
|
||||
border-radius: 10px;
|
||||
margin: 0 auto;
|
||||
width: 400px ;
|
||||
padding: 30px 35px 15px 35px;
|
||||
background: #fff;
|
||||
border: 1px solid #eaeaea;
|
||||
text-align: left;
|
||||
box-shadow: 0 0 20px 2px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.title {
|
||||
margin: 0px auto 40px auto;
|
||||
text-align: center;
|
||||
color: #505458;
|
||||
}
|
||||
|
||||
/* 样式 */
|
||||
.avatar-uploader {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
border: 1px dashed #D9D9D9;
|
||||
border-radius: 6px;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
.avatar-uploader-icon {
|
||||
font-size: 28px;
|
||||
color: #8c939d;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
<template>
|
||||
<el-button @click="openDialog" type="primary">按钮</el-button>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
function openDialog(){
|
||||
localStorage.setItem('openid', "response.data.openid");
|
||||
localStorage.setItem('nickname', "你哈");
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.zoomable {
|
||||
transition: transform 0.5s ease; /* 添加过渡效果 */
|
||||
}
|
||||
|
||||
</style>
|
||||
|
|
@ -18,11 +18,17 @@ export default defineConfig({
|
|||
// host: true,
|
||||
// open: true,
|
||||
proxy: {
|
||||
// https://cn.vitejs.dev/config/#server-proxy
|
||||
// https://openapi-apaas.seeyonv8.com
|
||||
'/api': {
|
||||
target: 'https://openapi-apaas.seeyonv8.com',
|
||||
changeOrigin: true,
|
||||
rewrite: (p) => p.replace(/^\/api/, '')
|
||||
},
|
||||
'/express':{
|
||||
target: 'http://172.24.12.71:3000',
|
||||
changeOrigin: true,
|
||||
rewrite: (p) => p.replace(/^\/express/, '')
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
import createError from 'http-errors';
|
||||
import express from 'express';
|
||||
import path from 'path';
|
||||
import cookieParser from 'cookie-parser';
|
||||
import logger from 'morgan';
|
||||
import indexRouter from './routes/index';
|
||||
import usersRouter from './routes/users';
|
||||
import parser from 'body-parser';
|
||||
|
||||
const cors =require('cors')
|
||||
const app = express();
|
||||
app.use(cors())
|
||||
// view engine setup
|
||||
app.set('views', path.join(__dirname, 'views'));
|
||||
app.set('view engine', 'jade');
|
||||
|
||||
//app.use(parser.urlencoded({ extended: false }))
|
||||
app.use(logger('dev'));
|
||||
app.use(express.json());
|
||||
app.use(express.urlencoded({ extended: false }));
|
||||
//app.use(parser.json());
|
||||
app.use(cookieParser());
|
||||
app.use(express.static(path.join(__dirname, 'public')));
|
||||
|
||||
app.use('/', indexRouter);
|
||||
app.use('/users', usersRouter);
|
||||
|
||||
// catch 404 and forward to error handler
|
||||
app.use(function(req, res, next) {
|
||||
next(createError(404));
|
||||
});
|
||||
|
||||
// error handler
|
||||
app.use(function(err, req, res, next) {
|
||||
// set locals, only providing error in development
|
||||
res.locals.message = err.message;
|
||||
res.locals.error = req.app.get('env') === 'development' ? err : {};
|
||||
|
||||
// render the error page
|
||||
res.status(err.status || 500);
|
||||
res.render('error');
|
||||
} as express.ErrorRequestHandler);
|
||||
|
||||
export default app;
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
import app from "../app";
|
||||
import http from "http";
|
||||
import debug from "debug";
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get port from environment and store in Express.
|
||||
*/
|
||||
|
||||
const port = normalizePort(process.env.PORT || '3000');
|
||||
app.set('port', port);
|
||||
|
||||
/**
|
||||
* Create HTTP server.
|
||||
*/
|
||||
|
||||
const server = http.createServer(app);
|
||||
|
||||
/**
|
||||
* Listen on provided port, on all network interfaces.
|
||||
*/
|
||||
|
||||
server.listen(port);
|
||||
server.on('error', onError);
|
||||
server.on('listening', onListening);
|
||||
|
||||
/**
|
||||
* Normalize a port into a number, string, or false.
|
||||
*/
|
||||
|
||||
function normalizePort(val:any) {
|
||||
const port = parseInt(val, 10);
|
||||
|
||||
if (isNaN(port)) {
|
||||
// named pipe
|
||||
return val;
|
||||
}
|
||||
|
||||
if (port >= 0) {
|
||||
// port number
|
||||
return port;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Event listener for HTTP server "error" event.
|
||||
*/
|
||||
|
||||
function onError(error:any) {
|
||||
if (error.syscall !== 'listen') {
|
||||
throw error;
|
||||
}
|
||||
|
||||
const bind = typeof port === 'string'
|
||||
? 'Pipe ' + port
|
||||
: 'Port ' + port;
|
||||
|
||||
// handle specific listen errors with friendly messages
|
||||
switch (error.code) {
|
||||
case 'EACCES':
|
||||
console.error(bind + ' requires elevated privileges');
|
||||
process.exit(1);
|
||||
break;
|
||||
case 'EADDRINUSE':
|
||||
console.error(bind + ' is already in use');
|
||||
process.exit(1);
|
||||
break;
|
||||
default:
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Event listener for HTTP server "listening" event.
|
||||
*/
|
||||
|
||||
function onListening() {
|
||||
const addr = server.address();
|
||||
const bind = typeof addr === 'string'
|
||||
? 'pipe ' + addr
|
||||
: 'port ' + addr!.port;
|
||||
debug('Listening on ' + bind);
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
import { Request, Response,NextFunction } from 'express';
|
||||
import {Enums,EnumApiUrl} from './../util/Resource';
|
||||
import { selectEnumApi } from '../util/curd';
|
||||
class EnumController {
|
||||
// 枚举查询
|
||||
selectEnum = async (req: Request, res: Response, next: NextFunction) => {
|
||||
try {
|
||||
const promises:any[] = [];
|
||||
for (const key in Enums) {
|
||||
promises.push(selectEnumApi(Enums[key], EnumApiUrl));
|
||||
}
|
||||
|
||||
const results = await Promise.all(promises);
|
||||
res.send(results);
|
||||
} catch (error) {
|
||||
next(error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 创建一个上述类的一个实例,将其导出
|
||||
export const enumController = new EnumController();
|
||||
export default enumController;
|
||||
|
|
@ -0,0 +1,174 @@
|
|||
import { Request, Response,NextFunction } from 'express';
|
||||
import axios from 'axios';
|
||||
import { selectApi,getFiliUrl,createUserApi } from '../util/curd';
|
||||
import { wazpApiUrl,sousuoUrl,createuserUrl } from '../util/Resource';
|
||||
|
||||
class IndexController {
|
||||
zuopinGet = async (req: Request, res: Response, next: NextFunction) => {
|
||||
const danganleixing = req.query.danganleixing;
|
||||
const pageNumber = req.query.pageNumber;
|
||||
const pageSize = req.query.pageSize;
|
||||
//在TypeScript中,当你在对象字面量属性名和变量名相同时,可以省略冒号后面的变量名。所以danganleixing:danganleixing可以简写为danganleixing。
|
||||
const temp = selectApi({ danganleixing }, pageNumber, pageSize, wazpApiUrl);
|
||||
|
||||
temp.then(async (response) => {
|
||||
const promises = [];
|
||||
for (const key in response.data.content) {
|
||||
promises.push(getFiliUrl(response.data.content[key]['xiaoguotu']).then((url) => {
|
||||
response.data.content[key]['xiaoguotu'] = url;
|
||||
}));
|
||||
promises.push(getFiliUrl(response.data.content[key]['wenyangtupian']).then((url) => {
|
||||
response.data.content[key]['wenyangtupian'] = url;
|
||||
}));
|
||||
}
|
||||
|
||||
await Promise.all(promises);
|
||||
res.send(response.data);
|
||||
})
|
||||
.catch(next); // 如果有错误,传递给后续的错误处理中间件
|
||||
};
|
||||
|
||||
|
||||
|
||||
// 纹样查询
|
||||
wenyangGet = async (req: Request, res: Response, next: NextFunction) => {
|
||||
const danganleixing = req.query.danganleixing;
|
||||
const pageNumber = req.query.pageNumber;
|
||||
const pageSize = req.query.pageSize;
|
||||
|
||||
const temp = selectApi({ danganleixing }, pageNumber, pageSize, wazpApiUrl);
|
||||
|
||||
temp.then(async (response) => {
|
||||
const promises = [];
|
||||
for (const key in response.data.content) {
|
||||
promises.push(getFiliUrl(response.data.content[key]['yuanshitupian']).then((url) => {
|
||||
response.data.content[key]['yuanshitupian'] = url;
|
||||
}));
|
||||
}
|
||||
|
||||
await Promise.all(promises);
|
||||
res.send(response.data);
|
||||
})
|
||||
.catch(next); // 如果有错误,传递给后续的错误处理中间件
|
||||
};
|
||||
|
||||
// 搜索查询
|
||||
sousuoGet = async (req: Request, res: Response, next: NextFunction) => {
|
||||
const danganleixing = req.query.danganleixing;
|
||||
const pageNumber = req.query.pageNumber;
|
||||
const pageSize = req.query.pageSize;
|
||||
console.log(danganleixing)
|
||||
const temp = selectApi({ and_like_mingcheng:danganleixing }, pageNumber, pageSize, sousuoUrl);
|
||||
|
||||
temp.then(async (response) => {
|
||||
const promises = [];
|
||||
for (const key in response.data.content) {
|
||||
promises.push(getFiliUrl(response.data.content[key]['yuanshitupian']).then((url) => {
|
||||
response.data.content[key]['yuanshitupian'] = url;
|
||||
|
||||
} ) );
|
||||
promises.push(getFiliUrl(response.data.content[key]['xiaoguotu']).then((url) => {
|
||||
response.data.content[key]['xiaoguotu'] = url;
|
||||
|
||||
} ) );
|
||||
promises.push(getFiliUrl(response.data.content[key]['wenyangtupian']).then((url) => {
|
||||
response.data.content[key]['wenyangtupian'] = url;
|
||||
|
||||
} ) );
|
||||
}
|
||||
|
||||
await Promise.all(promises);
|
||||
res.send(response.data);
|
||||
})
|
||||
.catch(next); // 如果有错误,传递给后续的错误处理中间件
|
||||
};
|
||||
|
||||
//筛选查询
|
||||
shaixuanGet = async (req: Request, res: Response, next: NextFunction) => {
|
||||
const leixing = req.query.leixing;
|
||||
const foundKey = req.query.foundKey;
|
||||
const pageNumber = req.query.pageNumber;
|
||||
const pageSize = req.query.pageSize;
|
||||
if(leixing=="minzu"){
|
||||
const temp = selectApi({"minzu":foundKey}, pageNumber, pageSize, sousuoUrl);
|
||||
temp.then(async(response)=>{
|
||||
const promises = [];
|
||||
for (const key in response.data.content) {
|
||||
|
||||
if(response.data.content[key]['yuanshitupian']!=''){
|
||||
|
||||
promises.push(getFiliUrl(response.data.content[key]['yuanshitupian']).then((url) => {
|
||||
response.data.content[key]['yuanshitupian'] = url;
|
||||
}))
|
||||
}else if(response.data.content[key]['xiaoguotu']!=''){
|
||||
promises.push(getFiliUrl(response.data.content[key]['xiaoguotu']).then((url) => {
|
||||
response.data.content[key]['xiaoguotu'] = url;
|
||||
}))
|
||||
}else if(response.data.content[key]['wenyangtupian']!=''){
|
||||
promises.push(getFiliUrl(response.data.content[key]['wenyangtupian']).then((url) => {
|
||||
response.data.content[key]['wenyangtupian'] = url;
|
||||
|
||||
}))
|
||||
}else{
|
||||
|
||||
}
|
||||
}
|
||||
await Promise.all(promises);
|
||||
res.send(response.data);
|
||||
})
|
||||
|
||||
}else{
|
||||
const temp = selectApi({"jifa":foundKey}, pageNumber, pageSize, sousuoUrl);
|
||||
temp.then(async(response)=>{
|
||||
const promises = [];
|
||||
for (const key in response.data.content) {
|
||||
|
||||
if(response.data.content[key]['yuanshitupian']!=''){
|
||||
|
||||
promises.push(getFiliUrl(response.data.content[key]['yuanshitupian']).then((url) => {
|
||||
response.data.content[key]['yuanshitupian'] = url;
|
||||
}))
|
||||
}else if(response.data.content[key]['xiaoguotu']!=''){
|
||||
promises.push(getFiliUrl(response.data.content[key]['xiaoguotu']).then((url) => {
|
||||
response.data.content[key]['xiaoguotu'] = url;
|
||||
}))
|
||||
}else if(response.data.content[key]['wenyangtupian']!=''){
|
||||
promises.push(getFiliUrl(response.data.content[key]['wenyangtupian']).then((url) => {
|
||||
response.data.content[key]['wenyangtupian'] = url;
|
||||
|
||||
}))
|
||||
}else{
|
||||
|
||||
}
|
||||
}
|
||||
await Promise.all(promises);
|
||||
res.send(response.data);
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
// 注册
|
||||
register = async (req: Request, res: Response,next: NextFunction) => {
|
||||
// ...内部的具体注册逻辑
|
||||
const name = req.query.name;
|
||||
const password = req.query.password;
|
||||
const Mobile = req.query.Mobile;
|
||||
const userType = req.query.userType;
|
||||
const temp = createUserApi(name,password,Mobile,userType,createuserUrl);
|
||||
temp.then((response) => {
|
||||
if(response.message=="SUCCESS"){
|
||||
res.send(response.message);
|
||||
}
|
||||
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 创建一个上述类的一个实例,将其导出
|
||||
export const indexController = new IndexController();
|
||||
export default indexController;
|
||||
|
|
@ -0,0 +1,200 @@
|
|||
import e, { Request, Response } from 'express';
|
||||
import axios from 'axios';
|
||||
import {localUrl,wechatloginUrl,createwechatUrl,UserSelectUrl,updatewechatUrl,
|
||||
weixinAppId,weixinAppSecret} from '../../util/Resource';
|
||||
import { selectWXUserApi ,createWXUserApi,selectUserApi,updateWXUserApi } from '../../util/curd';
|
||||
class UserController {
|
||||
// 注册
|
||||
register = async (req: Request, res: Response) => {
|
||||
// ...内部的具体注册逻辑
|
||||
};
|
||||
// 更新
|
||||
updatewechat = async (req: Request, res: Response) => {
|
||||
// ...内部的具体注册逻辑
|
||||
const openid = req.query.openid;
|
||||
const cellPhoneNumber = req.query.cellPhoneNumber;
|
||||
const id=req.query.WXuserid;
|
||||
await updateWXUserApi(id,openid,cellPhoneNumber,updatewechatUrl).then((response)=>{
|
||||
|
||||
if(response.message=="SUCCESS")
|
||||
{
|
||||
//返回绑定成功消息
|
||||
res.send({message:"SUCCESS"});
|
||||
}else{
|
||||
res.send({message:"绑定失败,请重新绑定ERROR"});
|
||||
}
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
// 登录
|
||||
wechatlogin = async (req: Request, res: Response) => {
|
||||
// ... 内部的具体登录逻辑
|
||||
const code = req.query.code;
|
||||
// 使用code向微信API发起请求获取access_token和openid
|
||||
await axios.get(`https://api.weixin.qq.com/sns/oauth2/access_token`, {
|
||||
params: {
|
||||
appid: weixinAppId, // 替换为你的公众号APPID
|
||||
secret: weixinAppSecret, // 替换为你的公众号SECRET
|
||||
code: code,
|
||||
grant_type: 'authorization_code'
|
||||
}
|
||||
}).then(async function(response) {
|
||||
if(response.status===200){
|
||||
const data = response.data;
|
||||
|
||||
// ...在此处处理数据并进行后续操作,例如存储用户信息等...
|
||||
await axios.get('https://api.weixin.qq.com/sns/userinfo',{
|
||||
params:{
|
||||
access_token: data.access_token,
|
||||
openid: data.openid,
|
||||
lang: 'zh_CN'
|
||||
}
|
||||
}
|
||||
) .then(async(response2)=>{
|
||||
|
||||
//先查询是否存在微信用户,不存在就创建微信用户
|
||||
|
||||
await selectWXUserApi(response2.data.openid,wechatloginUrl).then(async(response3)=>{
|
||||
|
||||
const openid = response2.data.openid;
|
||||
|
||||
//判断用户是否存在0为不存在
|
||||
if(response3.data.content.length==0)
|
||||
{
|
||||
//console.log("用户不存在")
|
||||
//await axios.get('/wechatcreate?openid=${response2.data.openid}&nickname=${response2.data.nickname}&headimgurl=${response2.data.headimgurl}&accesstoken=${data.access_token}&refreshtoken=${data.refresh_token}')
|
||||
//创建完成后进行手机号关联,在createWXUser类
|
||||
|
||||
await axios.get(`${localUrl}/wechatcreate?openid=${response2.data.openid}&nickname=${response2.data.nickname}&headimgurl=${response2.data.headimgurl}&accesstoken=${data.access_token}&refreshtoken=${data.refresh_token}`)
|
||||
.then((response)=>{
|
||||
//判断微信是否创建成功
|
||||
if(response.data.status==200)
|
||||
{
|
||||
res.send({
|
||||
'status':201,
|
||||
'route':'linkedmobile',
|
||||
'openid':openid,
|
||||
'nickname':response2.data.nickname,
|
||||
'headimgurl':response2.data.headimgurl,
|
||||
'accesstoken':data.access_token
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
}else{
|
||||
|
||||
|
||||
//电话号
|
||||
const cellPhoneNumber = response3.data.content[0].cellPhoneNumber;
|
||||
//把数据穿给前端
|
||||
res.send({
|
||||
'status':200,
|
||||
'openid':openid,
|
||||
'cellPhoneNumber':cellPhoneNumber,
|
||||
'nickname':response2.data.nickname,
|
||||
'headimgurl':response2.data.headimgurl,
|
||||
'accesstoken':data.access_token,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
})
|
||||
//selectApi({"openid":data.openid},wechatloginUrl)
|
||||
})
|
||||
|
||||
}})
|
||||
|
||||
|
||||
};
|
||||
|
||||
createWXUser =async (req: Request, res: Response) => {
|
||||
// ...内部的具体注册逻辑
|
||||
const openid = req.query.openid
|
||||
const nickname = req.query.nickname;
|
||||
const headimgurl = req.query.headimgurl;
|
||||
const accesstoken = req.query.accesstoken;
|
||||
const refreshtoken = req.query.refreshtoken;
|
||||
await createWXUserApi(openid,nickname,headimgurl,accesstoken,refreshtoken,createwechatUrl).then((response)=>{
|
||||
|
||||
//创建完成后关联手机
|
||||
res.send({status:200,message:"创建微信账户成功"})
|
||||
})
|
||||
};
|
||||
// 关联手机
|
||||
linkedmobile = async (req: Request, res: Response) => {
|
||||
// ...内部的具体注册逻辑
|
||||
const openid = req.query.openid;
|
||||
const name = req.query.name;
|
||||
const password = req.query.password;
|
||||
const Mobile = req.query.Mobile;
|
||||
const userType = req.query.userType;
|
||||
let isMobile=false;
|
||||
let isPassword=false;
|
||||
let WXuserid='';
|
||||
if(openid!=null||openid!=''){
|
||||
//先查询openid是否存在
|
||||
let isopenid = false;
|
||||
//1.先查询微信用户是否存在
|
||||
await selectWXUserApi(openid,wechatloginUrl).then(async(response:any)=>{
|
||||
//1.不存在微信用户就创建微信用户
|
||||
if(response.data.content.length>0){
|
||||
isopenid = true;
|
||||
WXuserid=response.data.content[0].id;
|
||||
}else{
|
||||
isopenid = true;
|
||||
}})
|
||||
//2.查询人员档案,手机是否存在
|
||||
await selectUserApi(Mobile,UserSelectUrl).then(async(response2:any)=>{
|
||||
//存在就关联更新
|
||||
if(response2.data.content.length>0){
|
||||
isMobile=true;
|
||||
//判断密码是否一致
|
||||
if(password==response2.data.content[0].mima)
|
||||
{
|
||||
isPassword=true;
|
||||
console.log("密码一致")
|
||||
}else{
|
||||
console.log("密码不一致")
|
||||
res.send('输入的密码与人员档案的密码不一致')
|
||||
}
|
||||
}else{
|
||||
//不存在就创建
|
||||
await axios.post(`${localUrl}/register?name=${name}&password=${password}&Mobile=${Mobile}&userType=${userType}`)
|
||||
.then(async(response)=>{
|
||||
|
||||
if(response.data=="SUCCESS"){
|
||||
|
||||
await axios.get(`${localUrl}/wechatupdate?openid=${openid}&cellPhoneNumber=${Mobile}&WXuserid=${WXuserid}`)
|
||||
.then((response)=>{
|
||||
|
||||
if(response.data.message=="SUCCESS"){
|
||||
res.send({message:"SUCCESS",cellPhoneNumber:Mobile})
|
||||
}})
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
});
|
||||
//两个都存在就关联更新
|
||||
if(isopenid&&isMobile&&isPassword){
|
||||
await axios.get(`${localUrl}/wechatupdate?openid=${openid}&cellPhoneNumber=${Mobile}&WXuserid=${WXuserid}`)
|
||||
.then((response)=>{
|
||||
|
||||
if(response.data.message=="SUCCESS"){
|
||||
res.send({message:"SUCCESS",cellPhoneNumber:Mobile})
|
||||
}})
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
// 创建一个上述类的一个实例,将其导出
|
||||
export const userController = new UserController();
|
||||
export default userController;
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
import * as shelljs from "shelljs";
|
||||
|
||||
shelljs.cp("-R" , "public" , "dist");
|
||||
shelljs.cp("-R" , "views" , "dist");
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
body {
|
||||
padding: 50px;
|
||||
font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #00B7FF;
|
||||
}
|
||||