曾晨曦_branch
zcx 1 year ago
parent 5ee869116b
commit 7993782b9b

@ -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>

@ -24,5 +24,9 @@ export default {
border-radius: 5px; border-radius: 5px;
background-color: #ccc; background-color: #ccc;
color: #333; color: #333;
cursor: pointer; cursor: pointer;
.return-button:hover {
background-color: #aaaaaa;
}
} </style> } </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;

@ -1,9 +1,14 @@
<template> <template>
<div> <div class="orders-container">
<h1>任务列表</h1> <div v-if="orders.length > 0">
<div v-for="task in tasks" :key="task.id" class="task-item"> <div class="order" v-for="order in orders" :key="order.id">
<div>{{ task.title }}</div> <div>Order ID: {{ order.id }}</div>
<div>{{ task.description }}</div> <div>Customer Name: {{ order.customerName }}</div>
<div>Total Amount: {{ order.totalAmount }}</div>
</div>
</div>
<div v-else>
<div>No orders available</div>
</div> </div>
</div> </div>
</template> </template>
@ -12,20 +17,20 @@
export default { export default {
data() { data() {
return { return {
tasks: [] orders: []
}; };
}, },
mounted() { // Fetch orders data from backend when the component is created
this.fetchTasks(); created() {
this.fetchOrders();
}, },
methods: { methods: {
async fetchTasks() { async fetchOrders() {
try { try {
const response = await fetch('http://localhost:3000/tasks'); const response = await fetch('http://your-backend-api/orders');
const data = await response.json(); this.orders = await response.json();
this.tasks = data;
} catch (error) { } catch (error) {
console.error(error); console.error('Error fetching data:', error);
} }
} }
} }
@ -33,9 +38,14 @@ export default {
</script> </script>
<style> <style>
.task-item { .orders-container {
border: 1px solid #ccc; height: 400px; /* Set height for scrolling */
overflow-y: auto; /* Enable vertical scrolling */
}
.order {
border: 1px solid #003f3f;
padding: 10px; padding: 10px;
margin: 10px 0; margin: 10px;
} }
</style> </style>

@ -29,7 +29,7 @@ export default {
data() { data() {
return { return {
user: {}, user: {},
eid: '', eid: 2,
ebody: '', ebody: '',
satisfaction:'', satisfaction:'',
}; };
@ -37,7 +37,7 @@ export default {
methods: { methods: {
send() { send() {
axios.post('http://106.52.218.118:8081/evaluate/addEvaluation', { axios.post('http://106.52.218.118:8081/evaluate/addEvaluation', {
eid : 1, eid : 2,
satisfaction :this.satisfaction, satisfaction :this.satisfaction,
ebody :this.ebody, ebody :this.ebody,
}, { }, {

@ -31,7 +31,7 @@ export default {
ebody: '', ebody: '',
satisfaction:'', satisfaction:'',
ct:'', ct:'',
eid: 1, // eid eid: 2, // eid
evaluation: {}, // evaluation: {}, //
}; };
}, },

@ -1,47 +1,51 @@
<template> <template>
<el-button @click="add">Add Item</el-button> <div class="orders-container">
<el-button @click="onDelete">Delete Item</el-button> <div v-if="orders.length > 0">
<el-scrollbar max-height="800px"> <div class="order" v-for="order in orders" :key="order.id">
<p v-for="item in count" :key="item" class="scrollbar-demo-item"> <div>Order ID: {{ order.id }}</div>
{{ item }} <div>Customer Name: {{ order.customerName }}</div>
</p> <div>Total Amount: {{ order.totalAmount }}</div>
<p v-for="review in reviews" :key="review.id" class="scrollbar-demo-item"> </div>
{{ review.content }} </div>
</p> <div v-else>
</el-scrollbar> <div>No orders available</div>
</div>
</div>
</template> </template>
<script lang="ts" setup> <script>
import { ref } from 'vue' export default {
data() {
return {
const count = ref(3) orders: []
const reviews = ref([ };
{ id: 1, content: 'Great product!' }, },
{ id: 2, content: 'Fast shipping!' }, // Fetch orders data from backend when the component is created
{ id: 3, content: 'Excellent customer service!' } created() {
]) this.fetchOrders();
},
const add = () => { methods: {
count.value++ async fetchOrders() {
} try {
const onDelete = () => { const response = await fetch('http://106.52.218.118:8081');
if (count.value > 0) { this.orders = await response.json();
count.value-- } catch (error) {
console.error('Error fetching data:', error);
}
}
} }
} };
</script> </script>
<style scoped> <style>
.scrollbar-demo-item { .orders-container {
display: flex; height: 400px; /* Set height for scrolling */
align-items: center; overflow-y: auto; /* Enable vertical scrolling */
justify-content: center; }
height: 50px;
.order {
border: 1px solid #003f3f;
padding: 10px;
margin: 10px; margin: 10px;
text-align: center;
border-radius: 4px;
background: var(--el-color-primary-light-9);
color: var(--el-color-primary);
} }
</style> </style>

@ -1,7 +1,8 @@
<template> <template>
<div class="home-container"> <div class="home-container">
<div class="return"> <div class="return">
<button class="addDemand-button" @click="gotoAddDemandPage()">+</button> <button class="addDemand-button" @click="gotoAddDemandPage()"></button>
<isRegisterGuide />
</div> </div>
<h1>首页</h1> <h1>首页</h1>
@ -80,15 +81,22 @@
background-color: #ccc; background-color: #ccc;
color: #333; color: #333;
cursor: pointer; cursor: pointer;
} }
.addDemand-button:hover {
background-color: #aaaaaa;
}
</style> </style>
<script> <script>
import NavigationBar from '../components/NavigationBar.vue'; import NavigationBar from '../components/NavigationBar.vue';
import isRegisterGuide from '../components/isRegisterGuide.vue';
export default { export default {
name: 'Home', name: 'Home',
components: { components: {
NavigationBar NavigationBar,
isRegisterGuide
}, },
methods: { methods: {
gotomessage() { gotomessage() {
@ -101,8 +109,23 @@ export default {
this.$router.push('/searchPage'); this.$router.push('/searchPage');
}, },
gotoAddDemandPage() { gotoAddDemandPage() {
this.$router.push('/addDemandPage'); this.$router.push('/addDemandPage');
}, },
gotoAddServePage() {
axios.get(`http://106.52.218.118:8081/users/getByPhone?phone=${phone}`)
.then(response => {
if(response.data){
this.$router.push('/addServe');
}
else{
this.$router.push('/registerGuide');
}
})
.catch(error => {
console.error('服务器错误:', error);
});
}
} }
} }
</script> </script>

@ -77,7 +77,7 @@ export default {
'Content-Type': 'application/json' 'Content-Type': 'application/json'
} }
}) })
.then(response => { .then(response => {
if (response.data == 1) { if (response.data == 1) {
sessionStorage.setItem('phone', this.phone); sessionStorage.setItem('phone', this.phone);
// //

@ -8,24 +8,24 @@
<label for="password">密码</label> <label for="password">密码</label>
<input type="password" id="password" v-model="password" class="input-field"> <input type="password" id="password" v-model="password" class="input-field">
<br> <br>
<label for="name">姓名</label> <label for="name">姓名</label>
<input type="name" id="name" v-model="name" class="input-field"> <input type="name" id="name" v-model="name" class="input-field">
<br> <br>
<label for="IDcard">身份证号</label> <label for="IDcard">身份证号</label>
<input type="IDcard" id="IDcard" v-model="IDcard" class="input-field"> <input type="IDcard" id="IDcard" v-model="IDcard" class="input-field">
<br> <br>
<label for="nickname">昵称</label> <label for="nickname">昵称</label>
<input type="nickname" id="nickname" v-model="nickname" class="input-field"> <input type="nickname" id="nickname" v-model="nickname" class="input-field">
<br> <br>
<button type="submit" class="submit-button">注册</button> <button type="submit" @click="gotoSecurityVerification()" class="submit-button">注册</button>
<button class="return-button" @click="gotoLogin()"></button> <button class="returnLogin-button" @click="gotoLogin()"></button>
</form> </form>
</div> </div>
</template> </template>
<style scoped> <style scoped>
.register-container { .register-container {
@ -51,7 +51,7 @@
border-radius: 5px; border-radius: 5px;
cursor: pointer; cursor: pointer;
} }
.return-button { .returnLogin-button {
padding: 10px 20px; padding: 10px 20px;
background-color: #ff6347; /* 例如,设置为红色 */ background-color: #ff6347; /* 例如,设置为红色 */
color: white; color: white;
@ -63,34 +63,32 @@
</style> </style>
<script> <script>
import { register } from '../api/auth'
import axios from "axios"; import axios from "axios";
export default { export default {
data() { data() {
return { return {
phone: '', phone: '',
password: '', password: '',
name:'', name:'',
nickname:'', nickname:'',
IDcard:'' IDcard:''
} }
}, },
methods: { methods: {
register() { register() {
console.log("", this.phone); console.log("", this.phone);
console.log("密码:", this.password); console.log("密码:", this.password);
console.log("姓名:",this.name); console.log("姓名:",this.name);
console.log("身份证号:",this.IDcard); console.log("身份证号:",this.IDcard);
console.log("昵称:",this.nickname); console.log("昵称:",this.nickname);
axios.post('http://106.52.218.118:8081/Login/register', { axios.post('http://106.52.218.118:8081/Login/register', {
// //
phone: this.phone, phone: this.phone,
password: this.password, password: this.password,
name:this.name, name:this.name,
IDCard:this.IDcard, IDCard:this.IDcard,
nickname:this.nickname nickname:this.nickname
}, { }, {
// cookie // cookie
withCredentials: true, withCredentials: true,
@ -99,10 +97,10 @@ export default {
'Content-Type': 'application/json' 'Content-Type': 'application/json'
} }
}) })
.then(response => { .then(response => {if(response.data == 14){alert("注册失败")}
console.log(response.data)
// //
alert("注册成功"); else{alert("注册成功");console.log(response.data)}
this.$router.push('/login');
}) })
.catch(error => { .catch(error => {
console.error(error) console.error(error)
@ -113,6 +111,9 @@ export default {
gotoLogin(){ gotoLogin(){
this.$router.push('/login'); this.$router.push('/login');
}, },
gotoSecurityVerification(){
this.$router.push('/SecurityVerification');
}
} }
} }
</script> </script>

@ -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>

@ -19,15 +19,15 @@ const rangeValue = ref<string[]>([format(new Date(), 'yyyy-MM-dd'), format(addDa
// JSON // JSON
const getProvinceList = async () => { const getProvinceList = async () => {
const res = await axios.get<AreaList[]>('https://yjy-oss-files.oss-cn-zhangjiakou.aliyuncs.com/tuxian/area.json') const res = await axios.get<AreaList[]>('https://yjy-oss-files.oss-cn-zhangjiakou.aliyuncs.com/tuxian/area.json')
provinceList.value = res.data; provinceList.value = res.data
console.log(provinceList.value); console.log(provinceList.value)
} }
const publish = () => { const publish = () => {
// //
if(city.value!=''){ if(city.value!=''){
axios.post(`http://106.52.218.118:8081/users/pupdate`,{city:city.value,time:rangeValue.value,remark:remark.value}) axios.post(`http://106.52.218.118:8081/SendDemand/register`,{phone:sessionStorage.getItem('phone') || '',city:city.value,time:rangeValue.value,remark:remark.value})
.then(response => { .then(response => {
alert("发布成功"); alert("发布成功")
}) })
.catch(error => { .catch(error => {
console.error('发布失败', error); console.error('发布失败', error);
@ -37,7 +37,7 @@ const publish = () => {
} }
}; };
onBeforeMount(async()=>{ onBeforeMount(async()=>{
getProvinceList(); getProvinceList()
}) })
watchEffect(() => { watchEffect(() => {
@ -68,8 +68,9 @@ watch(city, (newValue, oldValue) => {
<Return></Return> <Return></Return>
</div> </div>
<div><h2>发布需求</h2></div> <div><h1>发布出行规划</h1></div>
<div class="addDemand-container"> <div class="addDemand-container">
<div><h3>选择出行城市</h3></div>
<div style="display: flex;"> <div style="display: flex;">
<p style="color: red;">*</p> <p style="color: red;">*</p>
<el-select v-model="province" clearable placeholder="省份"> <el-select v-model="province" clearable placeholder="省份">
@ -78,11 +79,8 @@ watch(city, (newValue, oldValue) => {
<el-select v-model="city" clearable placeholder="城市"> <el-select v-model="city" clearable placeholder="城市">
<el-option v-for="item in cityList" :key="item.code" :label="item.name" :value="item.name" /> <el-option v-for="item in cityList" :key="item.code" :label="item.name" :value="item.name" />
</el-select> </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> </div>
<div><h3>选择出行时间</h3></div>
<div> <div>
<VueDatePicker <VueDatePicker
placeholder="请选择出行时间" placeholder="请选择出行时间"
@ -93,6 +91,8 @@ watch(city, (newValue, oldValue) => {
v-model="rangeValue" /> v-model="rangeValue" />
</div> </div>
<div><h3>填写备注信息</h3></div>
<div> <div>
<label for="user-input">备注信息:</label> <label for="user-input">备注信息:</label>
<input type="text" id="remark" v-model="remark" placeholder=""> <input type="text" id="remark" v-model="remark" placeholder="">
@ -107,7 +107,7 @@ watch(city, (newValue, oldValue) => {
max-width: 400px; max-width: 400px;
margin: 0 auto; margin: 0 auto;
padding: 30px; padding: 30px;
border: 1px solid #00ff00; border: 1px solid #000000;
border-radius: 5px; border-radius: 5px;
text-align: center; text-align: center;
} }

@ -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>

@ -33,6 +33,8 @@
<button @click="togglePhoneInput"></button> <button @click="togglePhoneInput"></button>
</div> </div>
<div><button @click="gotoLogin">退</button></div>
<div><NavigationBar /></div> <div><NavigationBar /></div>
</div> </div>
@ -78,15 +80,16 @@ export default {
showEmailInput: false, showEmailInput: false,
phone:sessionStorage.getItem('phone') || '', phone:sessionStorage.getItem('phone') || '',
showPhoneInput: false, showPhoneInput: false,
IDCard: '', idcard: '',
createtime: '', createtime: '',
status: 0, status: 0,
reputation:60,
}; };
}, },
components: { components: {
NavigationBar NavigationBar
}, },
created() { mounted() {
this.fetchUser(this.phone); this.fetchUser(this.phone);
}, },
methods: { methods: {
@ -94,7 +97,7 @@ export default {
// API // API
axios.get(`http://106.52.218.118:8081/users/getByPhone?phone=${phone}`) axios.get(`http://106.52.218.118:8081/users/getByPhone?phone=${phone}`)
.then(response => { .then(response => {
this.user = response.data; this.user = response.data
}) })
.catch(error => { .catch(error => {
console.error('Error fetching user:', error); console.error('Error fetching user:', error);
@ -107,7 +110,7 @@ export default {
}, },
updateNickname(){ updateNickname(){
this.user.nickname = this.nickname; this.user.nickname = this.nickname;
axios.post(`http://106.52.218.118:8081/users/pupdate`,{user:this.user}) axios.post(`http://106.52.218.118:8081/users/Pupdate`,{user:this.user})
.then(response => { .then(response => {
this.user.nickname = this.nickname; this.user.nickname = this.nickname;
this.toggleNicknameInput(); // this.toggleNicknameInput(); //
@ -123,7 +126,7 @@ export default {
updateEmail() { updateEmail() {
// //
this.user.email = this.email; this.user.email = this.email;
axios.post(`http://106.52.218.118:8081/users/pupdate`,{user:this.user}) axios.post(`http://106.52.218.118:8081/users/Pupdate`,{user:this.user})
.then(response => { .then(response => {
this.user.email = this.email; this.user.email = this.email;
this.toggleEmailInput(); // this.toggleEmailInput(); //
@ -138,7 +141,7 @@ export default {
}, },
updatePhone(){ updatePhone(){
this.user.phone = this.phone; this.user.phone = this.phone;
axios.post(`http://106.52.218.118:8081/users/pupdate`,{user:this.user}) axios.post(`http://106.52.218.118:8081/users/Pupdate`,{user:this.user})
.then(response => { .then(response => {
sessionStorage.setItem('phone', this.phone); sessionStorage.setItem('phone', this.phone);
this.user.phone = this.phone; this.user.phone = this.phone;
@ -148,12 +151,17 @@ export default {
console.error('Error updating phone:', error); console.error('Error updating phone:', error);
}); });
}, },
// gotohome() { gotohome() {
// this.$router.push('/home'); this.$router.push('/home');
// }, },
// gotomessage() { gotomessage() {
// this.$router.push('/message'); this.$router.push('/message');
// }, },
gotoLogin() {
this.$router.push('/login');
sessionStorage.setItem('phone', '');
},
} }
}; };
</script> </script>

@ -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>

@ -1,7 +1,49 @@
<template> <template>
<el-transfer
v-model="value"
filterable
:filter-method="filterMethod"
filter-placeholder="State Abbreviations"
:data="data"
/>
</template> </template>
<script lang="ts" setup>
import { ref } from 'vue'
<script> interface Option {
key: number
label: string
initial: string
}
const generateData = () => {
const data: Option[] = []
const states = [
'California',
'Illinois',
'Maryland',
'Texas',
'Florida',
'Colorado',
'Connecticut ',
]
const initials = ['CA', 'IL', 'MD', 'TX', 'FL', 'CO', 'CT']
states.forEach((city, index) => {
data.push({
label: city,
key: index,
initial: initials[index],
})
})
return data
}
const data = ref<Option[]>(generateData())
const value = ref([])
const filterMethod = (query, item) => {
return item.initial.toLowerCase().includes(query.toLowerCase())
}
</script> </script>
<style> <style>

@ -29,7 +29,7 @@ const routes = [
{ path: '/evaluation', component:Evaluation}, { path: '/evaluation', component:Evaluation},
{ path: '/SecurityVerification', component:SecurityVerification}, { path: '/SecurityVerification', component:SecurityVerification},
{ path: '/EvaluationEdit', component:EvaluationEdit}, { path: '/EvaluationEdit', component:EvaluationEdit},
{ path: '/EvaluationList', component:EvaluationList} { path: '/EvaluationList', component:EvaluationList},
]; ];
const router = createRouter({ const router = createRouter({

Loading…
Cancel
Save