master
Phoenix 7 months ago
parent 648764acf5
commit c97d55b77a

@ -0,0 +1 @@
VITE_APP_API_BASE_URL=http://172.16.100.93:8004/

146
package-lock.json generated

@ -10,6 +10,7 @@
"dependencies": { "dependencies": {
"@vant/area-data": "^1.5.1", "@vant/area-data": "^1.5.1",
"@varlet/ui": "^2.22.2", "@varlet/ui": "^2.22.2",
"axios": "^1.6.7",
"normalize.css": "^8.0.1", "normalize.css": "^8.0.1",
"vant": "^4.8.4", "vant": "^4.8.4",
"vue": "^3.3.11", "vue": "^3.3.11",
@ -847,6 +848,21 @@
"node": ">= 8" "node": ">= 8"
} }
}, },
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"node_modules/axios": {
"version": "1.6.7",
"resolved": "https://registry.npmmirror.com/axios/-/axios-1.6.7.tgz",
"integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==",
"dependencies": {
"follow-redirects": "^1.15.4",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
}
},
"node_modules/balanced-match": { "node_modules/balanced-match": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
@ -904,6 +920,17 @@
"fsevents": "~2.3.2" "fsevents": "~2.3.2"
} }
}, },
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"dependencies": {
"delayed-stream": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/csstype": { "node_modules/csstype": {
"version": "3.1.3", "version": "3.1.3",
"resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz",
@ -936,6 +963,14 @@
"resolved": "https://registry.npmmirror.com/decimal.js/-/decimal.js-10.4.3.tgz", "resolved": "https://registry.npmmirror.com/decimal.js/-/decimal.js-10.4.3.tgz",
"integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA=="
}, },
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/entities": { "node_modules/entities": {
"version": "4.5.0", "version": "4.5.0",
"resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz", "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
@ -1033,6 +1068,32 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/follow-redirects": {
"version": "1.15.5",
"resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.5.tgz",
"integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
"engines": {
"node": ">=4.0"
},
"peerDependenciesMeta": {
"debug": {
"optional": true
}
}
},
"node_modules/form-data": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz",
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/fsevents": { "node_modules/fsevents": {
"version": "2.3.3", "version": "2.3.3",
"resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
@ -1182,6 +1243,25 @@
"node": ">=8.6" "node": ">=8.6"
} }
}, },
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
"version": "2.1.35",
"resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"dependencies": {
"mime-db": "1.52.0"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/minimatch": { "node_modules/minimatch": {
"version": "9.0.3", "version": "9.0.3",
"resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.3.tgz", "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.3.tgz",
@ -1306,6 +1386,11 @@
"postcss": ">=5.0.2" "postcss": ">=5.0.2"
} }
}, },
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
},
"node_modules/queue-microtask": { "node_modules/queue-microtask": {
"version": "1.2.3", "version": "1.2.3",
"resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
@ -2186,6 +2271,21 @@
"picomatch": "^2.0.4" "picomatch": "^2.0.4"
} }
}, },
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"axios": {
"version": "1.6.7",
"resolved": "https://registry.npmmirror.com/axios/-/axios-1.6.7.tgz",
"integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==",
"requires": {
"follow-redirects": "^1.15.4",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
}
},
"balanced-match": { "balanced-match": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
@ -2232,6 +2332,14 @@
"readdirp": "~3.6.0" "readdirp": "~3.6.0"
} }
}, },
"combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"requires": {
"delayed-stream": "~1.0.0"
}
},
"csstype": { "csstype": {
"version": "3.1.3", "version": "3.1.3",
"resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz",
@ -2256,6 +2364,11 @@
"resolved": "https://registry.npmmirror.com/decimal.js/-/decimal.js-10.4.3.tgz", "resolved": "https://registry.npmmirror.com/decimal.js/-/decimal.js-10.4.3.tgz",
"integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA=="
}, },
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
},
"entities": { "entities": {
"version": "4.5.0", "version": "4.5.0",
"resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz", "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
@ -2334,6 +2447,21 @@
"to-regex-range": "^5.0.1" "to-regex-range": "^5.0.1"
} }
}, },
"follow-redirects": {
"version": "1.15.5",
"resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.5.tgz",
"integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw=="
},
"form-data": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz",
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
}
},
"fsevents": { "fsevents": {
"version": "2.3.3", "version": "2.3.3",
"resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
@ -2446,6 +2574,19 @@
"picomatch": "^2.3.1" "picomatch": "^2.3.1"
} }
}, },
"mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
},
"mime-types": {
"version": "2.1.35",
"resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"requires": {
"mime-db": "1.52.0"
}
},
"minimatch": { "minimatch": {
"version": "9.0.3", "version": "9.0.3",
"resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.3.tgz", "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.3.tgz",
@ -2549,6 +2690,11 @@
"postcss": ">=5.0.2" "postcss": ">=5.0.2"
} }
}, },
"proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
},
"queue-microtask": { "queue-microtask": {
"version": "1.2.3", "version": "1.2.3",
"resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",

@ -11,6 +11,7 @@
"dependencies": { "dependencies": {
"@vant/area-data": "^1.5.1", "@vant/area-data": "^1.5.1",
"@varlet/ui": "^2.22.2", "@varlet/ui": "^2.22.2",
"axios": "^1.6.7",
"normalize.css": "^8.0.1", "normalize.css": "^8.0.1",
"vant": "^4.8.4", "vant": "^4.8.4",
"vue": "^3.3.11", "vue": "^3.3.11",

@ -13,4 +13,7 @@
box-sizing: border-box; box-sizing: border-box;
} }
.particulars-detail-popup {
background: rgba(0, 0, 0, 0.7) !important;
}
</style> </style>

@ -0,0 +1,25 @@
import request from "@/request/index.js";
export const send_code = (data) => {
return request({
url: '/account/send_code',
method: 'post',
data
})
}
export const check_code = (data) => {
return request({
url: '/account/check_code',
method: 'post',
data
})
}
export const upload_img = (data) => {
return request({
headers: {
'Content-Type': 'multipart/form-data'
},
url: '/upload/img',
method: 'post',
data
})
}

@ -8,5 +8,16 @@ import 'vant/lib/index.css';
const app = createApp(App); const app = createApp(App);
app.use(router); app.use(router);
app.directive('no-space', {
mounted(el) {
el.addEventListener('input', (e) => {
const originalValue = e.target.value;
const newValue = originalValue.replace(/\s/g, '');
if (originalValue !== newValue) {
e.target.value = newValue;
e.target.dispatchEvent(new Event('input'));
}
});
}
})
app.mount('#app'); app.mount('#app');

@ -0,0 +1,31 @@
import {showLoadingToast, closeToast, showToast} from 'vant';
import axios from "axios";
import storage from '@/utils/storage.js';
const request = axios.create({
baseURL:import.meta.env.VITE_APP_API_BASE_URL,
timeout:5000
});
request.interceptors.request.use((config)=>{
config.headers.Authorization =storage.getItem('token')
showLoadingToast({
duration:5000,
message: '加载中...',
forbidClick: true,
className:'particulars-detail-popup'
});
return config;
});
request.interceptors.response.use((res)=>{
closeToast()
if (res.data.status!==0){
console.log(res.data.msg)
showToast({
message:res.data.msg,
className: 'particulars-detail-popup'
});
}
return res.data;
},()=>{
});
export default request;

@ -1,16 +1,33 @@
<script setup> <script setup>
import { useRouter } from 'vue-router'; import { useRouter } from 'vue-router';
const router = useRouter(); import { showToast } from 'vant';
import storage from '@/utils/storage.js'; import storage from '@/utils/storage.js';
import {ref,onBeforeUnmount} from "vue"; import {ref,onBeforeUnmount} from "vue";
import {check_code, send_code} from "@/apis/index.js";
const router = useRouter();
const isCountingDown = ref(false); const isCountingDown = ref(false);
const timeLeft = ref(60); const timeLeft = ref(60);
const countdownInterval = ref(null); const countdownInterval = ref(null);
const sendCodeApi=()=>{ const telNum=ref('')
const code=ref('')
const sendCodeApi=async ()=>{
const data={
TelNum:telNum.value
}
const res=await send_code(data)
if (res.status===0){
}
} }
const sendCode = async () => { const sendCode = async () => {
if (!isCountingDown.value){ if (!isCountingDown.value){
if(!/^1[3-9]\d{9}$/.test(telNum.value)){
showToast({
message:'请输入合规的手机号码',
className:'particulars-detail-popup'
});
return
}
await sendCodeApi()
} }
isCountingDown.value = true; isCountingDown.value = true;
@ -24,7 +41,15 @@ const sendCode = async () => {
} }
}, 1000); }, 1000);
}; };
const goRouter=()=>{ const goRouter=async ()=>{
const data={
telNum:telNum.value,
code:code.value
}
const res=await check_code(data)
if (res.status===0){
}
router.push(`/title-forward/upload-id-card/${0}`) router.push(`/title-forward/upload-id-card/${0}`)
} }
onBeforeUnmount(() => { onBeforeUnmount(() => {
@ -38,13 +63,13 @@ onBeforeUnmount(() => {
<div class="wrap1"> <div class="wrap1">
<div class="wrap1_1">手机号 <span class="wrap1_1_1">(+86)</span> </div> <div class="wrap1_1">手机号 <span class="wrap1_1_1">(+86)</span> </div>
<div class="wrap1_2"> <div class="wrap1_2">
<input placeholder="在此输入报名人手机号"> <input placeholder="在此输入报名人手机号" v-model="telNum" v-no-space>
</div> </div>
</div> </div>
<div class="wrap2"> <div class="wrap2">
<div class="wrap2_1">验证码 </div> <div class="wrap2_1">验证码 </div>
<div class="wrap2_2" > <div class="wrap2_2" >
<input placeholder="在此输入"> <input placeholder="在此输入" v-model="code" v-no-space>
</div> </div>
<div class="wrap2_3" @click="sendCode"> {{ isCountingDown ? `(${timeLeft})` : '' }}</div> <div class="wrap2_3" @click="sendCode"> {{ isCountingDown ? `(${timeLeft})` : '' }}</div>
</div> </div>

@ -1,11 +1,20 @@
<script setup> <script setup>
import {upload_img} from "@/apis/index.js";
const afterRead=async (file)=>{
const res=await upload_img( {
file: file.file,
source: "artwork",
type: 'image'
})
console.log(file,'file')
}
</script> </script>
<template> <template>
<div class="one-content"> <div class="one-content">
<div class="content2"> <div class="content2">
<van-uploader> <van-uploader :after-read="afterRead">
<div class="wrap1"> <div class="wrap1">
<div class="wrap1_1"> <div class="wrap1_1">
<div class="wrap1_1_1"> <div class="wrap1_1_1">

Loading…
Cancel
Save