TalentService-mobile/pages/home/component/message.vue
2024-10-31 21:24:54 +08:00

227 lines
5.3 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- 人才留言版 -->
<template>
<view class="message">
<form @submit="submit">
<view class="blocks">
<view class="block_input">
<view><text>*</text>姓名</view>
<input type="text" name="name" v-model="form.name" placeholder="请输入您的姓名"/>
<view class="tip" v-show="tip.name">请输入您的姓名</view>
</view>
<view class="block_input">
<view><text>*</text>联系方式:</view>
<input type="tel" name="phone" v-model="form.phone" placeholder="请输入您的联系方式"/>
<view class="tip" v-show="tip.phone">请输入您的联系方式</view>
</view>
<view class="block_input">
<view><text>*</text>类型:</view>
<picker @change="bindTypeChange" :value="messageType" :range="typeList">
<view>
<input disabled type="text" name="type" :value="typeList[messageType]" placeholder="请选择类型"/>
<u-icon class="type-icon" name="arrow-down" color="#CCCCCC" size="40"></u-icon>
</view>
</picker>
</view>
<view class="block_input">
<view><text>*</text>留言:</view>
<view class="message-textarea">
<textarea name="message" v-model="form.message" placeholder="请输入留言内容" :maxlength="messageMaxlength"></textarea>
<view class="mt-tip">
{{ form.message.length }} / {{ messageMaxlength }}
</view>
</view>
<view class="tip" v-show="tip.message">请输入留言内容</view>
</view>
<button class="messageSubmit" form-type="submit">提交</button>
</view>
</form>
<u-toast ref="uToast"></u-toast>
<Loading :show="loading" />
</view>
</template>
<script>
export default {
data(){
return{
form:{
name: '',// 姓名
phone: '',// 联系方式
type: '',// 类别
message: ''// 留言
},
tip: {
name: false,
phone: false,
message: false
},
loading: false,
messageType: 0, //类型
typeList: [
"场地咨询",
"政策咨询",
"人才服务",
"赛事咨询",
"其他"
],
messageMaxlength: 300// 留言最长字数
}
},
methods:{
// 提交申请
async submit(e){
try{
this.loading = true;
const { name, phone, type, message } = this.form;
this.tip = {
name: name==='',
phone: (phone==='') || (!(/^1[345789]\d{9}$/.test(phone))),
message:message===''
}
if(name===''){
this.$refs.uToast.show({type:'warning',title: "请输入姓名!"});
return;
}else if(!(/^1[345789]\d{9}$/.test(phone))){
this.$refs.uToast.show({type:'warning',title: "联系方式不正确!"});
return;
}else if(message===''){
this.$refs.uToast.show({type:'warning',title: "请输入留言内容!"});
return;
}
let res = await this.$api.addMessage(e.detail.value);
if(res.success){
this.$refs.uToast.show({type:'success',title: "提交成功!"});
this.clear();
}else{
this.$refs.uToast.show({type:'error',title: "提交失败!"});
}
}catch(e){
this.$refs.uToast.show({type:'error',title: "处理失败!"});
}finally{
this.loading = false;
}
},
// 清空
clear(){
this.form= {
name: '',// 姓名
phone: '',// 联系方式
type: '',// 类别
message: ''// 留言
};
this.messageType = 0;
this.tip={
name: false,
phone: false,
message: false
};
},
// 选择类型
bindTypeChange(e) {
this.messageType = e.detail.value
},
}
}
</script>
<style scoped lang="scss">
.message{
padding:0 32rpx;
}
.blocks{
margin-top: 30rpx;
display: flex;
flex-direction: column;
margin-bottom: 60rpx;
.block_title{
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 36rpx;
color: #000000;
line-height: 40rpx;
margin-bottom: 32rpx;
}
.block_input{
border-radius: 4rpx;
margin-bottom: 32rpx;
.tip{
color: #FE020E;
margin-top: 4rpx;
font-size: small;
}
view{
font-family: PingFang SC, PingFang SC;
font-size: 32rpx;
color: #000000;
line-height: 40rpx;
margin-bottom: 16rpx;
text{
vertical-align: middle;
color: #FE020E;
font-weight: bold;
margin-right: 8rpx;
}
}
input{
height: 92rpx;
background: #F8F9FB;
border-radius: 4rpx;
color: rgba(0,0,0,0.8);
padding:0 32rpx;
font-size: 32rpx;
}
.message-textarea{
width: 100%;
position: relative;
textarea{
padding: 32rpx;
width: 100%;
height: 400rpx;
background: #F8F9FB;
border-radius: 4rpx;
color: rgba(0,0,0,0.8);
font-size: 32rpx;
}
.mt-tip{
position: absolute;
font-size: 28rpx;
right: 32rpx;
bottom: 10rpx;
z-index: 2;
background-color: #f8f9fb;
padding: 5rpx;
border-radius: 8rpx;
}
}
}
}
.messageSubmit{
width: 100%;
background: -webkit-linear-gradient( 80deg, #4BACFF 0%, rgba(75, 174, 255,0.5) 100%);
background: linear-gradient( 80deg, #4BACFF 0%, rgba(75, 174, 255,0.5) 100%);
height: 100rpx;
font-size: 30rpx;
font-weight: bold;
color: #fff;
border-radius: 56rpx;
margin-top: 40rpx;
margin-bottom: 60rpx;
display: flex;
align-items: center;
justify-content: center;
&::after{
display: none;
}
}
.type-icon{
z-index:90;
position: absolute;
right: 50rpx;
margin-top: -60rpx;
}
</style>