zycp-demo/src/views/consultant/edit.vue

788 lines
23 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div class="content my-content">
<!-- 头部 -->
<div :class="{ header: true, 'scroll white': isScrollTop, white: true }">
<div class="back" @click="$router.go(-1)">
<img src="../../assets/images/home/expert/back.png" alt="" />
</div>
<div class="header-title">修改个人信息</div>
</div>
<div class="edit pull-content">
<div class="edit-list">
<div class="personal-item">
<p>
姓名<span>{{ name }}</span>
</p>
<p>
等级<span>{{ tags_text }}</span>
</p>
</div>
<!-- 形象照 -->
<div class="personal-item">
<p>形象照</p>
<div class="personal-txt">
<div class="personal-photo">
<img v-if="myAvatar" :src="host + myAvatar" />
<img v-else-if="handImg" :src="host + handImg" />
<span v-else
>上传图片的区域照片必须使用固定的宽高比16:17比如宽400像素高425像素或其它同等比例</span
>
</div>
<div class="edit-btn">
<input class="inputB" @change="imgIny($event)" type="file" />
上传
</div>
</div>
</div>
<!-- 关键特征 -->
<div class="personal-item">
<p>关键特征1</p>
<div class="left">
<div class="personal-txt">
<!-- 文本显示 -->
<!-- <span>硕士</span> -->
<!-- 输入框 -->
<input v-model="Characteristics[0]" class="personal-input" />
</div>
<!-- 按钮事件 -->
<div @click="CharacteristicsFun()" class="edit-btn">确认</div>
</div>
</div>
<div class="personal-item">
<p>关键特征2</p>
<div class="left">
<div class="personal-txt">
<!-- 文本显示 -->
<!-- <span>硕士</span> -->
<!-- 输入框 -->
<input v-model="Characteristics[1]" class="personal-input" />
</div>
<!-- 按钮事件 -->
<div @click="CharacteristicsFun()" class="edit-btn">确认</div>
</div>
</div>
<div class="personal-item">
<p>关键特征3</p>
<div class="left">
<div class="personal-txt">
<!-- 文本显示 -->
<!-- <span>硕士</span> -->
<!-- 输入框 -->
<input v-model="Characteristics[2]" class="personal-input" />
</div>
<!-- 按钮事件 -->
<div @click="CharacteristicsFun()" class="edit-btn">确认</div>
</div>
</div>
<div class="personal-item">
<p>关键特征4</p>
<div class="left">
<div class="personal-txt">
<!-- 文本显示 -->
<!-- <span>硕士</span> -->
<!-- 输入框 -->
<input v-model="Characteristics[3]" class="personal-input" />
</div>
<!-- 按钮事件 -->
<div @click="CharacteristicsFun()" class="edit-btn">确认</div>
</div>
</div>
<!-- 服务口号 -->
<div class="personal-item">
<p>服务口号</p>
<div class="personal-txt">
<div class="personal-top">
<textarea
class="kh-input"
v-model="sloganData"
placeholder="请输入服务口号"
></textarea>
</div>
<div @click="sloganDataFun()" class="edit-btn">确认</div>
</div>
</div>
<!-- 个人简介 start -->
<div class="personal-item">
<p>个人简介</p>
<div class="personal-txt">
<div class="personal-top">
<textarea
v-model="bodyData"
placeholder="介绍您最闪光点不要少于200字不要多于300字"
></textarea>
</div>
<div @click="bodyDataFun()" class="edit-btn">确认</div>
</div>
</div>
<!-- 服务范围补充说明 -->
<div class="personal-item">
<p>服务范围补充说明</p>
<div class="personal-txt">
<div class="personal-top">
<textarea
v-model="explainData"
placeholder="请填写补充说明"
></textarea>
</div>
<div @click="explainDataFun()" class="edit-btn">确认</div>
</div>
</div>
<!-- 请择3个重点服务省域 -->
<div class="personal-item">
<p>请择3个重点服务省域</p>
<div class="personal-txt">
<div class="city-item">
<div>重点服务省域1</div>
<input
type="text"
v-model="addRess[0].name"
readonly="readonly"
@click="openCity1()"
/>
</div>
<div class="city-item">
<div>重点服务省域2</div>
<input
type="text"
v-model="addRess[1].name"
readonly="readonly"
@click="openCity2()"
/>
</div>
<div class="city-item">
<div>重点服务省域3</div>
<input
type="text"
v-model="addRess[2].name"
readonly="readonly"
@click="openCity3()"
/>
</div>
</div>
</div>
<!-- 服务价格(您是专家级咨询师可自由定价) -->
<div class="personal-item bottom-box">
<p>服务价格(您是专家级咨询师可自由定价)</p>
<div class="personal-txt">
<div class="price-item">
<div>北京、上海</div>
<input
type="text"
v-model="priceDataLstARR[0]"
readonly="readonly"
@click="openPrice1()"
/>
</div>
<div class="price-item">
<div>天津、重庆、江苏、浙江、广东、福建</div>
<input
type="text"
v-model="priceDataLstARR[1]"
readonly="readonly"
@click="openPrice2()"
/>
</div>
<div class="price-item">
<div>辽宁、河北、山东、海南、湖北、湖南</div>
<input
type="text"
v-model="priceDataLstARR[2]"
readonly="readonly"
@click="openPrice3()"
/>
</div>
<div class="price-item">
<div>其他省域(老高考)</div>
<input
type="text"
v-model="priceDataLstARR[3]"
readonly="readonly"
@click="openPrice4()"
/>
</div>
<div @click="priceDataLstFun()" class="edit-btn">确认</div>
</div>
</div>
</div>
</div>
<div class="preview-btns">
<span @click="navdetailLst()">预览列表页效果</span>
<span @click="navdetail()">预览详情页效果</span>
</div>
<!-- 地址弹出框1 -->
<div
class="addr-select-bg"
v-show="isCity1"
@click="isCity1 = !isCity1"
></div>
<div class="addr-select-item" v-show="isCity1">
<div class="addr-btns">
<span>请选择城市</span>
<span @click="isCity1 = !isCity1">取消</span>
</div>
<ul>
<li
:class="{ checked: addRess[0].name == item.name }"
@click="getCityValue1(index, item)"
v-for="(item, index) in provinceData"
:key="index"
>
{{ item.name
}}<img
v-show=" addRess[0].name == item.name "
src="../../assets/images/home/expert/yes.png"
/>
</li>
</ul>
</div>
<!-- 地址弹出框2 -->
<div
class="addr-select-bg"
v-show="isCity2"
@click="isCity2 = !isCity2"
></div>
<div class="addr-select-item" v-show="isCity2">
<div class="addr-btns">
<span>请选择城市</span>
<span @click="isCity2 = !isCity2">取消</span>
</div>
<ul>
<li
:class="{ checked: addRess[1].name == item.name }"
@click="getCityValue2(index, item)"
v-for="(item, index) in provinceData"
:key="index"
>
{{ item.name
}}<img
v-show="addRess[1].name == item.name"
src="../../assets/images/home/expert/yes.png"
/>
</li>
</ul>
</div>
<!-- 地址弹出框3 -->
<div
class="addr-select-bg"
v-show="isCity3"
@click="isCity3 = !isCity3"
></div>
<div class="addr-select-item" v-show="isCity3">
<div class="addr-btns">
<span>请选择城市</span>
<span @click="isCity3 = !isCity3">取消</span>
</div>
<ul>
<li
:class="{ checked: addRess[2].name == item.name }"
@click="getCityValue3(index, item)"
v-for="(item, index) in provinceData"
:key="index"
>
{{ item.name
}}<img
v-show=" addRess[2].name == item.name "
src="../../assets/images/home/expert/yes.png"
/>
</li>
</ul>
</div>
<!-- 价格弹出框1 -->
<div
class="addr-select-bg"
v-show="isPrice1"
@click="isPrice1 = !isPrice1"
></div>
<div class="addr-select-item" v-show="isPrice1">
<div class="addr-btns">
<span>请选择价格</span>
<span @click="isPrice1 = !isPrice1">取消</span>
</div>
<ul>
<li
:class="{ checked: priceDataLstARR[0] == item }"
@click="getPriceValue1(index, item)"
v-for="(item, index) in priceDataLst"
:key="index"
>
{{ item
}}<img
v-show="priceDataLstARR[0] == item"
src="../../assets/images/home/expert/yes.png"
/>
</li>
</ul>
</div>
<!-- 价格弹出框2 -->
<div
class="addr-select-bg"
v-show="isPrice2"
@click="isPrice2 = !isPrice2"
></div>
<div class="addr-select-item" v-show="isPrice2">
<div class="addr-btns">
<span>请选择价格</span>
<span @click="isPrice2 = !isPrice2">取消</span>
</div>
<ul>
<li
:class="{ checked:priceDataLstARR[1] == item }"
@click="getPriceValue2(index, item)"
v-for="(item, index) in priceDataLst"
:key="index"
>
{{ item
}}<img
v-show="priceDataLstARR[1] == item"
src="../../assets/images/home/expert/yes.png"
/>
</li>
</ul>
</div>
<!-- 价格弹出框3 -->
<div
class="addr-select-bg"
v-show="isPrice3"
@click="isPrice3 = !isPrice3"
></div>
<div class="addr-select-item" v-show="isPrice3">
<div class="addr-btns">
<span>请选择价格</span>
<span @click="isPrice3 = !isPrice3">取消</span>
</div>
<ul>
<li
:class="{ checked: priceDataLstARR[2] == item }"
@click="getPriceValue3(index, item)"
v-for="(item, index) in priceDataLst"
:key="index"
>
{{ item
}}<img
v-show=" priceDataLstARR[2] == item"
src="../../assets/images/home/expert/yes.png"
/>
</li>
</ul>
</div>
<!-- 价格弹出框4 -->
<div
class="addr-select-bg"
v-show="isPrice4"
@click="isPrice4 = !isPrice4"
></div>
<div class="addr-select-item" v-show="isPrice4">
<div class="addr-btns">
<span>请选择价格</span>
<span @click="isPrice4 = !isPrice4"></span>
</div>
<ul>
<li
:class="{ checked: priceDataLstARR[3] == item }"
@click="getPriceValue4(index, item)"
v-for="(item, index) in priceDataLst"
:key="index"
>
{{ item
}}<img
v-show=" priceDataLstARR[3] == item"
src="../../assets/images/home/expert/yes.png"
/>
</li>
</ul>
</div>
</div>
</template>
<script>
export default {
name: "edit",
data() {
return {
isScrollTop: false,
name: "",
tags_text: "",
sloganData: "",
Characteristics: [],
bodyData: "",
explainData: "",
priceDataLstARR:[],
editData: {
avatar: "",
keywords: "",
slogan: "",
summary: "",
service_area_text: "",
service_area_main: "",
tel: "",
ding_code: "",
price_area_a: "",
price_area_b: "",
price_area_c: "",
price_area_other: "",
},
isCity1: false, //城市列表是否显示
provinceData: [],
cityIndex1: 0,
cityValue1: "", //选择城市编号
isCity2: false, //城市列表是否显示
cityIndex2: 0,
cityValue2: "", //选择城市编号
isCity3: false, //城市列表是否显示
cityIndex3: 0,
cityValue3: "", //选择城市编号
addRess: [],
// 价格区间
priceDataLst: [],
priceData: [
{ title: "3980" },
{ title: "4980" },
{ title: "5980" },
{ title: "6980" },
{ title: "8980" },
{ title: "8980" },
{ title: "9980" },
{ title: "10980" },
{ title: "11980" },
{ title: "12980" },
{ title: "13980" },
{ title: "14980" },
{ title: "15980" },
{ title: "16980" },
{ title: "17980" },
{ title: "18980" },
{ title: "19980" },
{ title: "20980" },
],
isPrice1: false, //价格列表是否显示
priceIndex1: 0,
priceValue1: "", //选择价格值
isPrice2: false, //价格列表是否显示
priceIndex2: 0,
priceValue2: "", //选择价格值
isPrice3: false, //价格列表是否显示
priceIndex3: 0,
priceValue3: "", //选择价格值
isPrice4: false, //价格列表是否显示
priceIndex4: 0,
priceValue4: "", //选择价格值
handImg: "", //头像
myAvatar: "",
};
},
created() {
this.isScroll = true;
window.addEventListener("scroll", this.eventScrollTop);
},
mounted() {
this.checkExperInfo();
this.getAddrData();
this.getPricerData();
},
methods: {
navdetail() {
this.$router.push({
path: "/edit/detail",
query: {
id: this.id,
},
});
},
navdetailLst() {
this.$router.push({
path: "/edit/list",
query: {
id: this.id,
},
});
},
priceDataLstFun() {
this.editData.service_area_main = "";
for (let index = 0; index < this.addRess.length; index++) {
if (this.addRess[index].code) {
this.editData.service_area_main += this.addRess[index].code + ",";
}
}
console.log( this.editData.service_area_main )
this.editData.price_area_a = this.priceDataLstARR[0];
this.editData.price_area_b = this.priceDataLstARR[1];
this.editData.price_area_c = this.priceDataLstARR[2];
this.editData.price_area_other = this.priceDataLstARR[3];
this.editExpertInfo();
},
explainDataFun() {
this.editData.service_area_text = this.explainData;
this.editExpertInfo();
},
bodyDataFun() {
this.editData.summary = this.bodyData;
this.editExpertInfo();
},
sloganDataFun() {
this.editData.slogan = this.sloganData;
this.editExpertInfo();
},
CharacteristicsFun() {
console.log(this.Characteristics);
this.editData.keywords = "";
for (let index = 0; index < this.Characteristics.length; index++) {
this.editData.keywords += this.Characteristics[index] + ",";
}
this.editExpertInfo();
console.log(this.editData.keywords, "123");
},
ModifyData() {
this.axios
.post(this.HOME + "/api/expert/edit-expert-info")
.then(function () {})
.catch(function (error) {
console.log(error);
});
},
getPricerData() {
let that = this;
this.axios
.post(this.HOME + "/api/expert/service-price-list", {
pcode: 86,
})
.then(function (res) {
console.log(res.data.data, "------");
that.priceDataLst = res.data.data;
});
},
getAddrData() {
let that = this;
this.axios
.post(this.HOME + "/api/area/index", {
pcode: 86,
})
.then(function (res) {
console.log(res);
that.provinceData = res.data.data;
console.log(that.provinceData);
let list = res.data.data;
let newArray = [];
let newObj = [];
list.forEach((item) => {
let obj = {
code: item.code,
name: item.name,
};
newArray.push(obj.name);
newObj.push(obj);
});
});
},
// 上传形象照
imgIny(e) {
let that = this;
const files = e.target.files;
console.log(files[0]);
console.log({
image: files[0],
});
var fromdata = new FormData();
fromdata.append("image", files[0]);
this.axios
.post(this.HOME + "/api/file/upload/image", fromdata, {
headers: {
"Content-Type": "multipart/form-data",
},
})
.then(function (res) {
that.editData.avatar = res.data.data.src;
that.myAvatar = res.data.data.src;
that.editExpertInfo();
})
.catch(function (error) {
console.log(error);
});
},
// 城市选择
openCity1() {
this.isCity1 = !this.isCity1;
},
getCityValue1(index, item) {
console.log(item);
this.addRess[0].code = item.code;
this.addRess[0].name = item.name;
this.cityValue1 = item.title;
this.cityIndex1 = index;
this.isCity1 = false;
},
openCity2() {
console.log(this.provinceData);
this.isCity2 = !this.isCity2;
},
getCityValue2(index, item) {
this.addRess[1].code = item.code;
this.addRess[1].name = item.name;
this.cityValue2 = item.title;
this.cityIndex2 = index;
this.isCity2 = false;
},
openCity3() {
this.isCity3 = !this.isCity3;
},
getCityValue3(index, item) {
this.addRess[2].code = item.code;
this.addRess[2].name = item.name;
this.cityValue3 = item.title;
this.cityIndex3 = index;
this.isCity3 = false;
},
// 价格选择
openPrice1() {
this.isPrice1 = !this.isPrice1;
},
getPriceValue1(index, item) {
console.log(this.priceDataLst);
this.priceDataLstARR[0] = item;
this.priceValue1 = item.title;
this.priceIndex1 = index;
this.isPrice1 = false;
},
openPrice2() {
this.isPrice2 = !this.isPrice2;
},
getPriceValue2(index, item) {
this.priceDataLstARR[1] = item;
this.priceValue2 = item.title;
this.priceIndex2 = index;
this.isPrice2 = false;
},
openPrice3() {
this.isPrice3 = !this.isPrice3;
},
getPriceValue3(index, item) {
this.priceDataLstARR[2] = item;
this.priceValue3 = item.title;
this.priceIndex3 = index;
this.isPrice3 = false;
},
openPrice4() {
this.isPrice4 = !this.isPrice4;
},
getPriceValue4(index, item) {
this.priceDataLstARR[3] = item;
console.log(this.priceDataLst);
this.priceValue4 = item.title;
this.priceIndex4 = index;
this.isPrice4 = false;
},
// 查询咨询师信息
checkExperInfo() {
let that = this;
this.axios
.post(this.HOME + "/api/user/center-info", {})
.then(function (res) {
console.log(res.data.data.expert);
let newArray = res.data.data.expert;
that.id = newArray.id;
(that.editData = {
avatar: newArray.avatar,
keywords: newArray.keywords,
slogan: newArray.slogan,
summary: newArray.summary,
service_area_text: newArray.service_area_text,
service_area_main: newArray.service_area_main,
tel: newArray.tel,
ding_code: newArray.ding_code,
price_area_a: newArray.price_area_a,
price_area_b: newArray.price_area_b,
price_area_c: newArray.price_area_c,
price_area_other: newArray.price_area_other,
}),
(that.handImg = newArray.avatar);
that.name = newArray.name;
that.tags_text = newArray.tags_text;
that.sloganData = newArray.slogan;
that.bodyData = newArray.summary;
that.explainData = newArray.service_area_text;
that.Characteristics = res.data.data.expert.keywords.split(",");
that.addressData = res.data.data.expert.service_area_main.split(",");
that.priceDataLstARR[0]=newArray.price_area_a,
that.priceDataLstARR[1]=newArray.price_area_b,
that.priceDataLstARR[2]=newArray.price_area_c,
that.priceDataLstARR[3]=newArray.price_area_other,
that.addRess = res.data.data.expert.service_area_main_list;
if (that.addRess.length < 3) {
for (let index = 0; index < 3; index++) {
that.addRess.push({
code: "",
name: "未填写",
});
}
}
console.log(that.addRess);
});
},
// 页面跳转
goPage(path) {
this.$router.push(path);
},
editExpertInfo() {
let that = this;
this.axios
.post(this.HOME + "/api/expert/edit-expert-info", this.editData)
.then(function (res) {
console.log(res);
that.checkExperInfo();
})
.catch(function (error) {
console.log(error);
});
},
// 滚动改变样式
eventScrollTop() {
let scrollTop =
document.body.scrollTop || document.documentElement.scrollTop;
if (scrollTop >= 5) {
if (this.isScroll) {
this.isScroll = false;
this.isScrollTop = true;
}
} else {
if (!this.isScroll) {
this.isScroll = true;
this.isScrollTop = false;
}
}
},
},
destroyed() {
window.removeEventListener("scroll", this.eventScrollTop);
},
//keep-alive进入时触发
activated() {
this.isScroll = true;
window.addEventListener("scroll", this.eventScrollTop);
},
//keep-alive离开时触发
deactivated() {
window.removeEventListener("scroll", this.eventScrollTop);
},
};
</script>
<style scoped>
</style>