Squashed commit of the following:

commit 7993782b9b
Author: zcx <1078327420@qq.com>
Date:   Mon Jun 10 21:08:41 2024 +0800

    1

commit 5ee869116b
Author: zcx <1078327420@qq.com>
Date:   Thu May 16 17:05:58 2024 +0800

    1

commit 97f19cd357
Author: zcx <1078327420@qq.com>
Date:   Thu May 16 17:05:07 2024 +0800

    1

commit ee7d59566a
Author: zcx <1078327420@qq.com>
Date:   Wed May 15 10:18:52 2024 +0800

    修改上传文件结构

commit c143d66957
Author: zcx <1078327420@qq.com>
Date:   Wed May 15 10:12:58 2024 +0800

    1

commit d4b226f46c
Author: zcx <1078327420@qq.com>
Date:   Wed May 15 09:39:59 2024 +0800

    1

commit 18119839d9
Author: zcx <1078327420@qq.com>
Date:   Wed May 15 09:08:06 2024 +0800

    修改

commit 4ca319060a
Author: zcx <1078327420@qq.com>
Date:   Sun May 12 21:41:25 2024 +0800

    1

commit 420c9925aa
Author: zcx <1078327420@qq.com>
Date:   Sun May 12 21:00:08 2024 +0800

    修改文件结构

commit dece352494
Author: zcx <1078327420@qq.com>
Date:   Sun May 12 19:47:44 2024 +0800

    1

commit c4de9ccc45
Author: zcx <1078327420@qq.com>
Date:   Sun May 12 19:36:07 2024 +0800

    1

commit 05aefb2d55
Author: zcx <1078327420@qq.com>
Date:   Sun May 12 19:28:09 2024 +0800

    1

commit 2991a0288e
Author: zcx <1078327420@qq.com>
Date:   Sun May 12 19:24:16 2024 +0800

    1

commit f0a01dc52a
Author: zcx <1078327420@qq.com>
Date:   Sun May 12 19:14:07 2024 +0800

    1

commit 103b91481d
Merge: 3f241a6 d73c814
Author: zcx <1078327420@qq.com>
Date:   Sat May 11 16:10:15 2024 +0800

    Merge branch 'develop' of https://bdgit.educoder.net/mwxbgi697/softegg into 曾晨曦_branch

# Conflicts:
#	src/前端/walktofree/src/api/auth.js
#	src/前端/walktofree/src/components/NavigationBar.vue
#	src/前端/walktofree/src/components/return.vue
#	src/前端/walktofree/src/main.js
#	src/前端/walktofree/src/pages/DemandList.vue
#	src/前端/walktofree/src/pages/Evaluation.vue
#	src/前端/walktofree/src/pages/EvaluationEdit.vue
#	src/前端/walktofree/src/pages/EvaluationList.vue
#	src/前端/walktofree/src/pages/HomePage.vue
#	src/前端/walktofree/src/pages/Login.vue
#	src/前端/walktofree/src/pages/Register.vue
#	src/前端/walktofree/src/pages/addDemand.vue
#	src/前端/walktofree/src/pages/mine.vue
#	src/前端/walktofree/src/pages/test.vue
#	src/前端/walktofree/src/router/index.js
develop
zcx 1 year ago
parent 123fb36b7a
commit 26b60acc17

@ -0,0 +1,70 @@
<template>
<el-button plain class="addServe-button" @click="isGuide()">
我是导游
</el-button>
<el-dialog
v-model="dialogVisible"
width="500"
>
<span>您还不是导游是否申请平台导游资格</span>
<template #footer>
<div class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="gotoRegisterGuide">
申请
</el-button>
</div>
</template>
</el-dialog>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
import { useRouter } from 'vue-router';
import axios from 'axios';
const router = useRouter();
const dialogVisible = ref(false)
const gotoRegisterGuide = () => {
router.push('/registerGuide')
}
const isGuide = () => {
axios.get(`http://106.52.218.118:8081/users/isGuide?phone=${sessionStorage.getItem('phone')}`)
.then(response => {
if (response.data == true){
router.push('/addServe')
}
else{
dialogVisible.value = true;
}
})
.catch(error => {
console.error('Error fetching user:', error);
});
}
</script>
<style>
.addServe-button {
/* 定义返回按钮的样式 */
position: fixed; /* 使按钮位置固定 */
top: 10px;
right: 10px;
margin: 0;
padding: 10px 20px;
border: none;
border-radius: 5px;
background-color: #ccc;
color: #333;
cursor: pointer;
}
.addServe-button:hover {
background-color: #aaaaaa;
}
</style>

@ -75,7 +75,7 @@ export default {
} }
.chat { .chat {
border: 2px solid #ccc; border: 2px solid #28a7a3;
border-radius: 10px; border-radius: 10px;
padding: 20px; padding: 20px;
display: flex; display: flex;
@ -105,7 +105,7 @@ export default {
.input input { .input input {
flex: 1; flex: 1;
padding: 8px; padding: 8px;
border: 1px solid #ccc; border: 1px solid #003f3f;
border-radius: 5px; border-radius: 5px;
font-size: 16px; font-size: 16px;
} }
@ -115,7 +115,7 @@ export default {
border: none; border: none;
border-radius: 5px; border-radius: 5px;
background-color: #007bff; background-color: #007bff;
color: #fff; color: #a6b2ee;
font-size: 16px; font-size: 16px;
cursor: pointer; cursor: pointer;
margin-left: 10px; margin-left: 10px;

@ -4,37 +4,37 @@
<!-- 身份证号验证 --> <!-- 身份证号验证 -->
<div class="verification-item"> <div class="verification-item">
<label for="idCard">身份证号</label> <label for="idCard">身份证号</label>
<input type="text" id="idCard" v-model.trim="idCard" placeholder="请输入身份证号"> <input type="text" id="idCard" v-model.trim="IDcard" placeholder="请输入身份证号">
<button @click="verifyIdCard" :disabled="loading">验证</button> <p v-if="IDcard !== ''" class="invalid-message"></p>
<p v-if="idCardValid" class="valid-message"></p>
<p v-else-if="idCard !== ''" class="invalid-message">请输入有效的身份证号</p>
</div> </div>
<!-- 银行卡号验证 -->
<div class="verification-item"> <div class="verification-item">
<label for="bankCard">银行卡号</label> <label for="name">姓名</label>
<input type="text" id="bankCard" v-model.trim="bankCard" placeholder="请输入银行卡号"> <input type="text" id="name" v-model.trim="name" placeholder="请输入姓名">
<button @click="verifyBankCard" :disabled="loading">验证</button> <p v-if="name !== ''" class="invalid-message"></p>
<p v-if="bankCardValid" class="valid-message"></p>
<p v-else-if="bankCard !== ''" class="invalid-message">请输入有效的银行卡号</p>
</div> </div>
<p v-if="error" class="error-message">{{ error }}</p> <p v-if="error" class="error-message">{{ error }}</p>
</div> </div>
<button @click="verify" :disabled="loading">验证</button>
<p v-if="idCardValid && nameValid" class="valid-message"></p>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return { return {
idCard: '', IDcard: '',
idCardValid: false, IDcardValid: false,
bankCard: '', name: '',
bankCardValid: false, nameValid: false,
loading: false, loading: false,
error: '' error: ''
}; };
}, },
methods: { methods: {
verifyIdCard() {
verify() {
this.loading = true; this.loading = true;
// //
setTimeout(() => { setTimeout(() => {
@ -48,20 +48,7 @@ export default {
this.loading = false; this.loading = false;
}, 1000); // 1 }, 1000); // 1
}, },
verifyBankCard() {
this.loading = true;
//
setTimeout(() => {
if (/^\d{16,19}$/.test(this.bankCard)) {
this.bankCardValid = true;
this.error = '';
} else {
this.bankCardValid = false;
this.error = '请输入有效的银行卡号!';
}
this.loading = false;
}, 1000); // 1
}
} }
}; };
</script> </script>

@ -0,0 +1,119 @@
<script lang="ts" setup>
import { ref, onBeforeMount, watch, watchEffect } from 'vue'
import axios from 'axios'
import { ElSelect, ElOption } from 'element-plus'
import { AreaList } from '../components/types'
import { format, addDays } from 'date-fns'
import Return from '../components/return.vue'
const province = ref('')
const city = ref('')
const area = ref('')
const remark = ref('')
const provinceList = ref<AreaList[]>([])
const cityList = ref<AreaList[]>([])
const areaList = ref<AreaList[]>([])
const rangeValue = ref<string[]>([format(new Date(), 'yyyy-MM-dd'), format(addDays(new Date(), 1), 'yyyy-MM-dd')])
// JSON
const getProvinceList = async () => {
const res = await axios.get<AreaList[]>('https://yjy-oss-files.oss-cn-zhangjiakou.aliyuncs.com/tuxian/area.json')
provinceList.value = res.data
console.log(provinceList.value)
}
const publish = () => {
//
if(city.value!=''){
axios.post(`http://106.52.218.118:8081/SendGuideService/register`,{phone:sessionStorage.getItem('phone') || '',city:city.value,time:rangeValue.value,remark:remark.value})
.then(response => {
alert("发布成功")
})
.catch(error => {
console.error('发布失败', error);
});}
else{
alert("请输入目的地")
}
};
onBeforeMount(async()=>{
getProvinceList()
})
watchEffect(() => {
console.log('rangeValue:', rangeValue.value)
})
//
watch(province, (newValue, oldValue) => {
const matchedProvince = provinceList.value.find(item => item.name === newValue)
if (matchedProvince) {
cityList.value = matchedProvince.areaList
city.value = '' //
areaList.value = [] //
console.log(cityList.value)
}
})
//
watch(city, (newValue, oldValue) => {
const matchedCity = cityList.value.find(item => item.name === newValue)
if (matchedCity) {
areaList.value = matchedCity.areaList
area.value = '' //
console.log(areaList.value)
}
})
</script>
<template>
<div>
<Return></Return>
</div>
<div><h1>导游服务</h1></div>
<div class="addServe-container">
<h3>选择导游城市</h3>
<div style="display: flex;">
<p style="color: red;">*</p>
<el-select v-model="province" clearable placeholder="省份">
<el-option v-for="item in provinceList" :key="item.code" :label="item.name" :value="item.name" />
</el-select>
<el-select v-model="city" clearable placeholder="城市">
<el-option v-for="item in cityList" :key="item.code" :label="item.name" :value="item.name" />
</el-select>
<!--<el-select v-model="area" clearable placeholder="Select">
<el-option v-for="item in areaList" :key="item.code" :label="item.name" :value="item.name" />
</el-select>-->
</div>
<h3>选择导游时间</h3>
<div>
<VueDatePicker
placeholder="请选择出行时间"
range
:min-date="new Date()"
format="yyyy-MM-dd"
:width="280"
v-model="rangeValue" />
</div>
<h3>添加备注信息</h3>
<div>
<label for="user-input">备注信息:</label>
<input type="text" id="remark" v-model="remark" placeholder="">
</div>
<el-button type="primary" @click="publish"style="margin-top: 20px;">发布</el-button>
</div>
</template>
<style>
.addServe-container {
max-width: 400px;
margin: 0 auto;
padding: 30px;
border: 1px solid #000000;
border-radius: 5px;
text-align: center;
}
</style>

@ -0,0 +1,79 @@
<template>
<div>
<Return></Return>
</div>
<div>
<h1>平台导游资格申请</h1>
<form @submit.prevent="submitForm">
<div>
<label for="experience">有无相关经历:</label>
<input type="radio" id="has-experience-yes" value="true" v-model="registerToGuide.re" required>
<label for="has-experience-yes"></label>
<input type="radio" id="has-experience-no" value="false" v-model="registerToGuide.re">
<label for="has-experience-no"></label>
</div>
<div>
<label for="rsd">居住地区:</label>
<input type="text" id="rsd" v-model="registerToGuide.rsd">
</div>
<div>
<label for="familiar-area">熟悉区域:</label>
<textarea id="familiar-area" v-model="registerToGuide.fa"></textarea>
</div>
<div>
<label for="syns">个人简介:</label>
<textarea id="syns" v-model="registerToGuide.syns"></textarea>
</div>
<button @click="Submit()"></button>
</form>
</div>
</template>
<script>
import axios from 'axios';
import Return from '../components/return.vue'
export default {
data() {
return{
registerToGuide:{
uid:0,
re: '', // 'yes''no'
rsd: '',
fa: '',
syns: '',
},
};
},
methods:{
Submit(){
axios.get(`http://106.52.218.118:8081/users/getUid?phone=${sessionStorage.getItem('phone')}`)
.then(response => {
this.registerToGuide.uid = response.data
axios.post(`http://106.52.218.118:8081/users/registerToGuide`,{registerToGuide:this.registerToGuide})
.then(response => {
if(response.data == 1){
alert("申请成功!")
this.$router.push('/addServe')
}else{
alert("申请未通过!")
}
})
.catch(error => {
console.error('Error fetching user:', error);
});
})
.catch(error => {
console.error('Error fetching user:', error);
});
}
},
components:{
Return,
},
};
</script>
<style scoped>
/* 添加你的样式 */
</style>
Loading…
Cancel
Save