7 changed files with 1217 additions and 167 deletions
@ -0,0 +1,569 @@ |
|||||
|
<template> |
||||
|
<view class="bg"> |
||||
|
<!-- <view class="header-tip">请填写您的信息,稍后平台工作人员会电话联系您~</view> --> |
||||
|
<view style="height: 20rpx;"></view> |
||||
|
<view class="user-other-info"> |
||||
|
<view class="info-title">·基础信息</view> |
||||
|
<div class="info-avatar-top"> |
||||
|
<span>头像</span> |
||||
|
<view @click="uploadAvator()"> |
||||
|
<image v-if="info.avatar" :src="info.avatar" mode="aspectFill" |
||||
|
style="width: 80rpx;height: 80rpx;border-radius: 50%;"></image> |
||||
|
<div v-else style="width: 80rpx;height: 80rpx;border-radius: 50%;background: #0B898E;"></div> |
||||
|
</view> |
||||
|
</div> |
||||
|
<view class="userinfo-item" > |
||||
|
<span>姓名</span> |
||||
|
<view class="text-overflow" v-if="info.nickname">{{info.nickname}}</view> |
||||
|
<view v-else class="empty-value" >请填写</view> |
||||
|
</view> |
||||
|
<view class="userinfo-item" > |
||||
|
<span>性别</span> |
||||
|
<view class="text-overflow" v-if="info.genderStr">{{info.genderStr}}</view> |
||||
|
<view v-else class="empty-value" >请选择</view> |
||||
|
</view> |
||||
|
<view class="userinfo-item" > |
||||
|
<span>手机号</span> |
||||
|
<view v-if="info.mobile">{{info.mobile}}</view> |
||||
|
<view v-else class="empty-value" >请填写</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="info-title" style="margin-top: 46rpx;">·工作相关</view> |
||||
|
<view class="userinfo-item" @click="selectRank"> |
||||
|
<span>导游等级</span> |
||||
|
<view v-if="info.group_idStr">{{info.group_idStr}}</view> |
||||
|
<view v-else class="empty-value">请选择</view> |
||||
|
</view> |
||||
|
<view class="userinfo-item" > |
||||
|
<span>导游证号</span> |
||||
|
<view class="text-overflow" v-if="info.certificate_number">{{info.certificate_number}}</view> |
||||
|
<view v-else class="empty-value">请填写</view> |
||||
|
</view> |
||||
|
<view class="userinfo-item" @click="changeValue('duration')"> |
||||
|
<span>工作年限</span> |
||||
|
<view class="text-overflow" v-if="info.duration">{{info.duration}}</view> |
||||
|
<view v-else class="empty-value">请填写</view> |
||||
|
</view> |
||||
|
<view class="userinfo-item" @click="changeValue('lingo_ids')"> |
||||
|
<span>语言能力</span> |
||||
|
<view class="text-overflow" v-if="info.lingo_idsStr">{{info.lingo_idsStr}}</view> |
||||
|
<view v-else class="empty-value">请选择</view> |
||||
|
</view> |
||||
|
<view class="userinfo-item" @click="changeValue('scenic_ids')"> |
||||
|
<span>擅长景区</span> |
||||
|
<view class="text-overflow" v-if="info.scenic_idsStr">{{info.scenic_idsStr}}</view> |
||||
|
<view v-else class="empty-value">请选择</view> |
||||
|
</view> |
||||
|
<view class="userinfo-item" @click="changeValue('bio')"> |
||||
|
<span>个性签名</span> |
||||
|
<view class="text-overflowRows" v-if="info.bio">{{info.bio}}</view> |
||||
|
<view v-else class="empty-value">请填写</view> |
||||
|
</view> |
||||
|
<view class="userinfo-item" @click="changeValue('sparkle_text')"> |
||||
|
<span>核心亮点</span> |
||||
|
<view class="text-overflow" v-if="info.sparkle_textStr">{{info.sparkle_textStr}}</view> |
||||
|
<view v-else class="empty-value">请填写</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="info-title" style="margin-top: 46rpx;">·讲解视频</view> |
||||
|
<view class="userinfo-item" @click="changeValue('video_list')"> |
||||
|
<span>讲解视频</span> |
||||
|
<view class="text-overflow" v-if="info.video_list.length>0">{{info.video_list.length}}</view> |
||||
|
<view v-else class="empty-value">请选择</view> |
||||
|
</view> |
||||
|
|
||||
|
<view class="btn-tao" @click="submit">保存修改</view> |
||||
|
</view> |
||||
|
|
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import {pathToBase64} from "@/static/js/mmmm-image-tools/index.js" |
||||
|
export default { |
||||
|
data() { |
||||
|
|
||||
|
return { |
||||
|
info: { |
||||
|
nickname: '',mobile:'',avatar: '', |
||||
|
gender: null, genderStr: '', |
||||
|
group_id: null,group_idStr: '', |
||||
|
certificate_number: '',duration:'', |
||||
|
lingo_ids: null, lingo_idsStr:'',lingo_idsFileList: [], |
||||
|
scenic_ids: null, scenic_idsStr:'', |
||||
|
bio:'', video_list: [], |
||||
|
sparkle_text: [], |
||||
|
sparkle_textStr: '', |
||||
|
}, |
||||
|
|
||||
|
groupIds: [], // 导游等级 |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
uni.$on("updateInfo",this.updateInfo) |
||||
|
}, |
||||
|
beforeUnmount () { |
||||
|
console.log('触发off') |
||||
|
uni.$off("updateInfo",this.updateInfo) |
||||
|
}, |
||||
|
beforeDestroy () { |
||||
|
console.log('触发off') |
||||
|
uni.$off("updateInfo",this.updateInfo) |
||||
|
}, |
||||
|
|
||||
|
onLoad () { |
||||
|
this.getUserInfo() |
||||
|
this.initSelect() |
||||
|
}, |
||||
|
methods: { |
||||
|
//获取导游信息 |
||||
|
getUserInfo () { |
||||
|
this.Post({}, '/api/Merchants/get_login_details').then(res => { |
||||
|
let resData = res.data |
||||
|
let lingo_idsFileList = [] |
||||
|
let video_list = [] |
||||
|
try { |
||||
|
lingo_idsFileList = (resData.lingo_image_list || '').split(',').filter(v=>v) |
||||
|
video_list = (resData.video_list || '').split(',').filter(v=>v) |
||||
|
} catch(e){} |
||||
|
|
||||
|
this.info = { |
||||
|
id: resData.id,avatar: resData.avatar, |
||||
|
nickname: resData.nickname, mobile: resData.mobile, |
||||
|
certificate_number: resData.certificate_number, |
||||
|
duration:resData.duration,bio:resData.bio, |
||||
|
gender: resData.gender, genderStr: resData.gender == 1?'男':'女', |
||||
|
group_id: resData.group_id,group_idStr: resData.group_data.name, |
||||
|
|
||||
|
lingo_ids: resData.lingo_data.lingo_id, |
||||
|
lingo_idsStr:resData.lingo_data.name, |
||||
|
lingo_idsFileList: lingo_idsFileList, |
||||
|
|
||||
|
scenic_ids: resData.scenic_data.scenic_id, |
||||
|
scenic_idsStr:resData.scenic_data.name, |
||||
|
|
||||
|
sparkle_text: (resData.sparkle_text || []), |
||||
|
sparkle_textStr:(resData.sparkle_text || []).map(v=>v.text).join(','), |
||||
|
|
||||
|
video_list: video_list, |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
initSelect () { |
||||
|
// 获取导游等级 |
||||
|
this.Post({}, '/api/guide/getGuideGroupList').then(res => { |
||||
|
this.groupIds = res.data |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
// 上传头像 |
||||
|
uploadAvator () { |
||||
|
let _this = this |
||||
|
let url = this.NEWAPIURL |
||||
|
// #ifdef H5 |
||||
|
url = '/api' |
||||
|
// #endif |
||||
|
url+='/api/Common/upload' |
||||
|
uni.chooseImage({ |
||||
|
count:1, |
||||
|
success: (res) => { |
||||
|
const tempFilePaths = res.tempFilePaths; |
||||
|
const uploadTask = uni.uploadFile({ |
||||
|
url: url, |
||||
|
filePath: tempFilePaths[0], |
||||
|
name: 'file', |
||||
|
header: {"token": '7e4bd097-8298-4cbe-8c75-535874a5c0e0'}, |
||||
|
success: (uploadFileRes) => { |
||||
|
try { |
||||
|
let res = JSON.parse(uploadFileRes.data) |
||||
|
if (res.code == 1) { |
||||
|
_this.info.avatar = res.data.fullurl |
||||
|
} |
||||
|
} catch(e) {} |
||||
|
|
||||
|
|
||||
|
}, |
||||
|
fail:()=> { |
||||
|
uni.showToast({ |
||||
|
title:'上传失败', |
||||
|
icon:'none' |
||||
|
}) |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
}, |
||||
|
fail:()=> { |
||||
|
uni.showToast({ |
||||
|
title:'上传失败', |
||||
|
icon:'none' |
||||
|
}) |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
selectSex () { |
||||
|
let _this = this |
||||
|
let itemList = ['男','女'] |
||||
|
let valueList = ['1','2'] |
||||
|
uni.showActionSheet({ |
||||
|
itemList: itemList, |
||||
|
success: function (res) { |
||||
|
let index = res.tapIndex; |
||||
|
_this.info.genderStr = itemList[index] |
||||
|
_this.info.gender = valueList[index] |
||||
|
|
||||
|
}, |
||||
|
fail: function (res) { |
||||
|
console.log(res.errMsg); |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
selectRank () { |
||||
|
let _this = this |
||||
|
let itemList = this.groupIds.map(v=>v.name) |
||||
|
let valueList = this.groupIds.map(v=>v.id) |
||||
|
uni.showActionSheet({ |
||||
|
itemList: itemList, |
||||
|
success: function (res) { |
||||
|
let index = res.tapIndex; |
||||
|
_this.info.group_idStr = itemList[index] |
||||
|
_this.info.group_id = valueList[index] |
||||
|
|
||||
|
}, |
||||
|
fail: function (res) { |
||||
|
console.log(res.errMsg); |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
// 跳转修改数据 |
||||
|
changeValue(valueType) { |
||||
|
let inputValue = this.info[valueType] |
||||
|
if (valueType == "lingo_ids") { |
||||
|
uni.setStorageSync("userfileList",JSON.stringify(this.info.lingo_idsFileList)) |
||||
|
} |
||||
|
if (valueType == 'video_list') { |
||||
|
uni.setStorageSync("userVideofileList",JSON.stringify(this.info.video_list)) |
||||
|
} |
||||
|
if (valueType == 'sparkle_text') { |
||||
|
inputValue = this.info.sparkle_textStr |
||||
|
} |
||||
|
|
||||
|
uni.navigateTo({ |
||||
|
url: `/subPackages/user/infoFilling?valueType=${valueType}&inputValue=${inputValue}` |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
// 接受回调 |
||||
|
updateInfo(data) { |
||||
|
if (data.msgType == 'registerInfo') { |
||||
|
console.log(data.data) |
||||
|
let valueType = data.data.valueType |
||||
|
let valueTypeStr = valueType + 'Str' |
||||
|
let fileListStr = valueType+'FileList' |
||||
|
let inputValue = data.data.inputValue |
||||
|
let inputValueStr = data.data.inputValueStr |
||||
|
let fileList = data.data.fileList |
||||
|
this.info[valueType] = inputValue |
||||
|
if (this.info[valueTypeStr] !== undefined && inputValueStr) { |
||||
|
this.info[valueTypeStr] = inputValueStr |
||||
|
} |
||||
|
if (this.info[fileListStr] && fileList) { |
||||
|
this.info[fileListStr] = fileList |
||||
|
} |
||||
|
|
||||
|
console.log(this.info) |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
|
||||
|
submit() { |
||||
|
// 校验 |
||||
|
// if (!this.info.nickname) { |
||||
|
// uni.showToast({title:"请输入姓名",icon:"none"}) |
||||
|
// return |
||||
|
// } |
||||
|
if(!this.info.avatar) { |
||||
|
uni.showToast({title:"请上传头像",icon:"none"}) |
||||
|
return |
||||
|
} |
||||
|
// if (!this.info.gender) { |
||||
|
// uni.showToast({title:"请选择性别",icon:"none"}) |
||||
|
// return |
||||
|
// } |
||||
|
// if (!this.info.mobile || !this.IsTel(this.info.mobile)) { |
||||
|
// uni.showToast({title: "请输入正确的手机号码",icon: 'none'}) |
||||
|
// return; |
||||
|
// } |
||||
|
if (!this.info.group_id) { |
||||
|
uni.showToast({title: "请选择导游等级",icon: 'none'}) |
||||
|
return; |
||||
|
} |
||||
|
// if (!this.info.certificate_number) { |
||||
|
// uni.showToast({title: "请输入导游证号",icon: 'none'}) |
||||
|
// return; |
||||
|
// } |
||||
|
if (!this.info.duration) { |
||||
|
uni.showToast({title: "请输入工作年限",icon: 'none'}) |
||||
|
return; |
||||
|
} |
||||
|
if (!this.info.lingo_ids || this.info.lingo_idsFileList.length<=0) { |
||||
|
uni.showToast({title: "请选择语言能力并上传证明材料",icon: 'none'}) |
||||
|
return; |
||||
|
} |
||||
|
if (!this.info.scenic_ids) { |
||||
|
uni.showToast({title: "请选择擅长景区",icon: 'none'}) |
||||
|
return; |
||||
|
} |
||||
|
if (!this.info.bio) { |
||||
|
uni.showToast({title: "请输入个性签名",icon: 'none'}) |
||||
|
return; |
||||
|
} |
||||
|
if (this.info.sparkle_text.length<=0) { |
||||
|
uni.showToast({title: "请输入核心亮点",icon: 'none'}) |
||||
|
return; |
||||
|
} |
||||
|
console.log(this.info) |
||||
|
|
||||
|
let param = { |
||||
|
method: "POST", |
||||
|
...this.info, |
||||
|
lingo_image_list: this.info.lingo_idsFileList.join(','), |
||||
|
video_list: this.info.video_list.join(','), |
||||
|
sparkle_text: JSON.stringify(this.info.sparkle_text) |
||||
|
} |
||||
|
delete param.nickname |
||||
|
delete param.gender |
||||
|
delete param.mobile |
||||
|
delete param.certificate_number |
||||
|
|
||||
|
|
||||
|
|
||||
|
uni.showModal({ |
||||
|
title: '提示', |
||||
|
content: '确认修改您的信息?', |
||||
|
success: res => { |
||||
|
if (res.confirm) { |
||||
|
this.Post(param, '/api/Merchants/update_guide_details').then(res => { |
||||
|
console.log(res) |
||||
|
if (res.code == 1) { |
||||
|
uni.showModal({ |
||||
|
title: '提示', |
||||
|
content: res.msg, |
||||
|
showCancel: false, |
||||
|
success: res => { |
||||
|
if (res.confirm) { |
||||
|
this.getUserInfo() |
||||
|
} |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style scoped lang="scss"> |
||||
|
view { |
||||
|
box-sizing: content-box; |
||||
|
} |
||||
|
.bg{ |
||||
|
min-height: 100vh; |
||||
|
overflow-x: hidden; |
||||
|
background: white; |
||||
|
padding-bottom: 50rpx; |
||||
|
} |
||||
|
.header-tip{ |
||||
|
font-weight: 400; |
||||
|
font-size: 27rpx; |
||||
|
color: #585858; |
||||
|
padding: 33rpx 0; |
||||
|
text-align: center; |
||||
|
} |
||||
|
.empty-value{ |
||||
|
font-weight: 500; |
||||
|
font-size: 28rpx; |
||||
|
color: #999999; |
||||
|
} |
||||
|
|
||||
|
.info-avatar-top { |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
font-size: 28rpx; |
||||
|
border-bottom: 1rpx solid #D8D8D8; |
||||
|
padding: 40rpx 0; |
||||
|
height: 48rpx; |
||||
|
color: #333; |
||||
|
align-items: center; |
||||
|
} |
||||
|
.info-avatar-top view{ |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
} |
||||
|
.info-avatar-top view:after{ |
||||
|
content: ""; |
||||
|
width: 20rpx; |
||||
|
height: 20rpx; |
||||
|
margin-left: 6rpx; |
||||
|
background-image: url('https://static.ticket.sz-trip.com/tongli/images/user/rightIcon-gray.png'); |
||||
|
background-size: 100% 100%; |
||||
|
} |
||||
|
.info-avatar-top img { |
||||
|
width: 80rpx; |
||||
|
height: 80rpx; |
||||
|
border-radius: 50%; |
||||
|
margin-right: 10rpx; |
||||
|
} |
||||
|
|
||||
|
.change-avatar-btn { |
||||
|
color: #FFF; |
||||
|
width: 220rpx; |
||||
|
margin: 0 auto; |
||||
|
line-height: 70rpx; |
||||
|
border-radius: 20rpx; |
||||
|
background: #4C93FF; |
||||
|
position: relative; |
||||
|
font-size: 34rpx; |
||||
|
} |
||||
|
|
||||
|
.change-avatar-btn input { |
||||
|
position: absolute; |
||||
|
left: 0; |
||||
|
right: 0; |
||||
|
top: 0; |
||||
|
bottom: 0; |
||||
|
opacity: 0; |
||||
|
} |
||||
|
|
||||
|
.user-other-info { |
||||
|
margin:0 30rpx; |
||||
|
.info-title{ |
||||
|
font-weight: bold; |
||||
|
font-size: 32rpx; |
||||
|
color: #000000; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.userinfo-item { |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
align-items: center; |
||||
|
font-size: 28rpx; |
||||
|
border-bottom: 1rpx solid #D8D8D8; |
||||
|
padding: 40rpx 30rpx 40rpx 0; |
||||
|
height: 48rpx; |
||||
|
color: #333; |
||||
|
position: relative; |
||||
|
} |
||||
|
|
||||
|
.info-avatar-top span { |
||||
|
font-weight: 500; |
||||
|
font-size: 31rpx; |
||||
|
flex-shrink: 0; |
||||
|
} |
||||
|
|
||||
|
.userinfo-item span { |
||||
|
font-weight: 500; |
||||
|
font-size: 31rpx; |
||||
|
flex-shrink: 0; |
||||
|
color: #000; |
||||
|
width: 200rpx; |
||||
|
} |
||||
|
|
||||
|
.userinfo-item i { |
||||
|
font-weight: 500; |
||||
|
font-size: 24rpx; |
||||
|
color: #999999; |
||||
|
} |
||||
|
|
||||
|
.userinfo-item { |
||||
|
& view::after { |
||||
|
content: ""; |
||||
|
width: 20rpx; |
||||
|
height: 20rpx; |
||||
|
margin-left: 6rpx; |
||||
|
background-image: url('https://static.ticket.sz-trip.com/tongli/images/user/rightIcon-gray.png'); |
||||
|
background-size: 100% 100%; |
||||
|
position: absolute; |
||||
|
right: 0; |
||||
|
margin: auto; |
||||
|
top: 0; |
||||
|
bottom: 0; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.birthday-box { |
||||
|
text-align: right; |
||||
|
} |
||||
|
|
||||
|
.cropper { |
||||
|
width: auto; |
||||
|
height: 100%; |
||||
|
} |
||||
|
|
||||
|
.cropper-content { |
||||
|
position: fixed; |
||||
|
left: 0; |
||||
|
right: 0; |
||||
|
top: 0; |
||||
|
bottom: 0; |
||||
|
z-index: 1000; |
||||
|
} |
||||
|
|
||||
|
.dialog-footer .change-avatar-btn { |
||||
|
position: fixed; |
||||
|
text-align: center; |
||||
|
bottom: 80rpx; |
||||
|
left: 50%; |
||||
|
margin-left: -110rpx; |
||||
|
} |
||||
|
|
||||
|
.btn-tao { |
||||
|
text-align: center; |
||||
|
font-size: 30rpx; |
||||
|
width: 697rpx; |
||||
|
height: 80rpx; |
||||
|
background: #96684F; |
||||
|
border-radius: 40rpx; |
||||
|
line-height: 80rpx; |
||||
|
color: #FFFFFF; |
||||
|
margin-top: 55rpx; |
||||
|
} |
||||
|
|
||||
|
.popup-box { |
||||
|
border-radius: 20rpx 20rpx 0rpx 0rpx; |
||||
|
background: #fff; |
||||
|
overflow: hidden; |
||||
|
|
||||
|
.popup-item { |
||||
|
width: 697rpx; |
||||
|
height: 99rpx; |
||||
|
font-weight: 500; |
||||
|
font-size: 31rpx; |
||||
|
color: #12293C; |
||||
|
margin: auto; |
||||
|
} |
||||
|
.popup-item:nth-child(2) { |
||||
|
border: none; |
||||
|
border-bottom: 1rpx solid #D8D8D8; |
||||
|
border-top: 1rpx solid #D8D8D8; |
||||
|
} |
||||
|
|
||||
|
.popup-items { |
||||
|
width: 100%; |
||||
|
height: 99rpx; |
||||
|
font-weight: 500; |
||||
|
font-size: 31rpx; |
||||
|
color: #12293C; |
||||
|
border-top: 13rpx solid #F2F2F2; |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,41 @@ |
|||||
|
<template> |
||||
|
<view class="bg"> |
||||
|
<video class="video" v-if="url" :src="url" preload="metadata" ></video> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
data() { |
||||
|
return { |
||||
|
url: '' |
||||
|
} |
||||
|
}, |
||||
|
onLoad(option) { |
||||
|
console.log(option); |
||||
|
if (option.url) { |
||||
|
this.url = decodeURIComponent(option.url) |
||||
|
}else{ |
||||
|
this.goBack() |
||||
|
} |
||||
|
console.log(this.url) |
||||
|
// 传入需要跳转的链接 使用web-view标签进行跳转 |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.bg{ |
||||
|
width: 100%; |
||||
|
height: calc(100vh - 44px); |
||||
|
background: black; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: center; |
||||
|
overflow: hidden; |
||||
|
.video{ |
||||
|
width: 100%; |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
|
|
Loading…
Reference in new issue