Lee-1203 2022-03-04 20:26:45 +08:00
commit 44c6613af2
9 changed files with 988 additions and 614 deletions

59
package-lock.json generated
View File

@ -10,6 +10,7 @@
"dependencies": { "dependencies": {
"axios": "^0.26.0", "axios": "^0.26.0",
"core-js": "^3.6.5", "core-js": "^3.6.5",
"echarts": "^5.3.0",
"vue": "^2.6.11", "vue": "^2.6.11",
"vue-axios": "^3.4.1", "vue-axios": "^3.4.1",
"vue-router": "^3.2.0" "vue-router": "^3.2.0"
@ -5588,6 +5589,20 @@
"safer-buffer": "^2.1.0" "safer-buffer": "^2.1.0"
} }
}, },
"node_modules/echarts": {
"version": "5.3.0",
"resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.3.0.tgz",
"integrity": "sha512-zENufmwFE6WjM+24tW3xQq4ICqQtI0CGj4bDVDNd3BK3LtaA/5wBp+64ykIyKy3QElz0cieKqSYP4FX9Lv9MwQ==",
"dependencies": {
"tslib": "2.3.0",
"zrender": "5.3.0"
}
},
"node_modules/echarts/node_modules/tslib": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
},
"node_modules/ee-first": { "node_modules/ee-first": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz",
@ -14918,6 +14933,19 @@
"resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz",
"integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
"dev": true "dev": true
},
"node_modules/zrender": {
"version": "5.3.0",
"resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.3.0.tgz",
"integrity": "sha512-Ln2QB5uqI1ftNYMtCRxd+XDq6MOttLgam2tmhKAVA+j0ko47UT+VNlDvKTkqe4K2sJhBvB0EhYNLebqlCTjatQ==",
"dependencies": {
"tslib": "2.3.0"
}
},
"node_modules/zrender/node_modules/tslib": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
} }
}, },
"dependencies": { "dependencies": {
@ -19387,6 +19415,22 @@
"safer-buffer": "^2.1.0" "safer-buffer": "^2.1.0"
} }
}, },
"echarts": {
"version": "5.3.0",
"resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.3.0.tgz",
"integrity": "sha512-zENufmwFE6WjM+24tW3xQq4ICqQtI0CGj4bDVDNd3BK3LtaA/5wBp+64ykIyKy3QElz0cieKqSYP4FX9Lv9MwQ==",
"requires": {
"tslib": "2.3.0",
"zrender": "5.3.0"
},
"dependencies": {
"tslib": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
}
}
},
"ee-first": { "ee-first": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz",
@ -27130,6 +27174,21 @@
"dev": true "dev": true
} }
} }
},
"zrender": {
"version": "5.3.0",
"resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.3.0.tgz",
"integrity": "sha512-Ln2QB5uqI1ftNYMtCRxd+XDq6MOttLgam2tmhKAVA+j0ko47UT+VNlDvKTkqe4K2sJhBvB0EhYNLebqlCTjatQ==",
"requires": {
"tslib": "2.3.0"
},
"dependencies": {
"tslib": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
}
}
} }
} }
} }

View File

@ -10,6 +10,7 @@
"dependencies": { "dependencies": {
"axios": "^0.26.0", "axios": "^0.26.0",
"core-js": "^3.6.5", "core-js": "^3.6.5",
"echarts": "^5.3.0",
"vue": "^2.6.11", "vue": "^2.6.11",
"vue-axios": "^3.4.1", "vue-axios": "^3.4.1",
"vue-router": "^3.2.0" "vue-router": "^3.2.0"
@ -37,10 +38,10 @@
"parser": "babel-eslint" "parser": "babel-eslint"
}, },
"rules": { "rules": {
"no-console": "off", "no-console": "off",
"no-debugger": "off", "no-debugger": "off",
"no-mixed-spaces-and-tabs": "off" "no-mixed-spaces-and-tabs": "off"
} }
}, },
"browserslist": [ "browserslist": [
"> 1%", "> 1%",

View File

@ -3,6 +3,7 @@ import axios from 'axios'
import VueAxios from 'vue-axios' import VueAxios from 'vue-axios'
import App from './App.vue' import App from './App.vue'
import router from './router' import router from './router'
// Vue.config.productionTip = false // Vue.config.productionTip = false
Vue.prototype.host = 'https://ypzy.emingren.com' Vue.prototype.host = 'https://ypzy.emingren.com'
Vue.prototype.HOME = '/api' Vue.prototype.HOME = '/api'
@ -11,9 +12,8 @@ Vue.prototype.HOME = '/api'
axios.interceptors.request.use(config => { axios.interceptors.request.use(config => {
if (config.url!="/api/api/user/login-by-Phone"&&config.url!="/api/api/common/send-sms-captcha") { if (config.url!="/api/api/user/login-by-Phone"&&config.url!="/api/api/common/send-sms-captcha") {
if (!localStorage.userData) { if (!localStorage.userData) {
window.alert("请登陆") router.replace('/login');
router.replace('/'); return config
return config
}else{ }else{
config.headers.Authorization = "Bearer "+JSON.parse(localStorage.userData).token config.headers.Authorization = "Bearer "+JSON.parse(localStorage.userData).token
} }

View File

@ -33,6 +33,11 @@ Vue.use(VueRouter)
const routes = [ const routes = [
{ {
path: '/', path: '/',
name: 'start',
component: start
},
{
path: '/login',
name: 'login', name: 'login',
component: login component: login
}, },
@ -46,11 +51,7 @@ const routes = [
name: 'verification', name: 'verification',
component: verification component: verification
}, },
{
path: '/start',
name: 'start',
component: start
},
{ {
path: '/expert', path: '/expert',
name: 'expert', name: 'expert',

View File

@ -39,6 +39,7 @@ export default {
return { return {
isScrollTop: false, isScrollTop: false,
lastquestions: [], lastquestions: [],
stateBtn: true,
num: 0, num: 0,
optionsData: [], optionsData: [],
}; };
@ -92,20 +93,24 @@ export default {
}, },
setQuestionEV(key) { setQuestionEV(key) {
let that = this; let that = this;
this.axios if (this.stateBtn) {
.post(this.HOME + "/api/evaluation/answer-question", { this.stateBtn = false;
id: this.lastquestions.list[this.num].id, this.axios
option_key: key, .post(this.HOME + "/api/evaluation/answer-question", {
}) id: this.lastquestions.list[this.num].id,
.then(function () { option_key: key,
that.num++; })
if (that.num >= 117) { .then(function () {
console.log(that.num) that.num++;
that.$router.push({ that.stateBtn = true;
path: "/ucenter", if (that.num >= 117) {
}); console.log(that.num);
} that.$router.push({
}); path: "/ucenter",
});
}
});
}
}, },
destroyed() { destroyed() {
window.removeEventListener("scroll", this.eventScrollTop); window.removeEventListener("scroll", this.eventScrollTop);

View File

@ -1,69 +1,84 @@
<template> <template>
<div class="content bind-content"> <div class="content bind-content">
<!-- 头部 --> <!-- 头部 -->
<div :class="{'header':true,'scroll white':isScrollTop,'white':true}"> <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="back" @click="$router.go(-1)">
<div class="header-title">意见与反馈</div> <img src="../../../assets/images/home/expert/back.png" alt="" />
</div> </div>
<div class="info-bg pull-content"> <div class="header-title">意见与反馈</div>
<div class="feedback-msg"> </div>
<textarea rows="" cols="" placeholder="请输入您反馈的内容"></textarea> <div class="info-bg pull-content">
</div> <div class="feedback-msg">
</div> <textarea v-model="content" rows="" cols="" placeholder="请输入您反馈的内容"></textarea>
<div class="bind-btn">提交</div> </div>
</div> </div>
<div @click="btnFeedback()" class="bind-btn">提交</div>
</div>
</template> </template>
<script> <script>
export default { export default {
name: "feedback", name: "feedback",
data() { data() {
return { return {
isScrollTop: false, isScrollTop: false,
} content: "",
}, };
created() { },
this.isScroll = true; created() {
window.addEventListener("scroll", this.eventScrollTop); this.isScroll = true;
}, window.addEventListener("scroll", this.eventScrollTop);
mounted() { },
mounted() {},
}, computed: {},
computed: { methods: {
btnFeedback() {
}, if (this.content == "") {
methods: { return;
// }
eventScrollTop() { this.axios
let scrollTop = document.body.scrollTop || document.documentElement.scrollTop; .post(
if (scrollTop >= 5) { this.HOME + "/api/consumer/submit-feedback",
if (this.isScroll) { { content: this.content },
this.isScroll = false; )
this.isScrollTop = true; .then(function (res) {
} window.alert(res.data.msg)
} else { })
if (!this.isScroll) { .catch(function (error) {
this.isScroll = true; console.log(error);
this.isScrollTop = false; });
} },
} //
} eventScrollTop() {
}, let scrollTop =
destroyed() { document.body.scrollTop || document.documentElement.scrollTop;
window.removeEventListener("scroll", this.eventScrollTop); if (scrollTop >= 5) {
}, if (this.isScroll) {
//keep-alive this.isScroll = false;
activated() { this.isScrollTop = true;
this.isScroll = true; }
window.addEventListener("scroll", this.eventScrollTop) } else {
}, if (!this.isScroll) {
//keep-alive this.isScroll = true;
deactivated() { this.isScrollTop = false;
window.removeEventListener("scroll", this.eventScrollTop); }
} }
} },
},
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> </script>
<style scoped> <style scoped>
</style> </style>

View File

@ -1,70 +1,96 @@
<template> <template>
<div class="content bind-content"> <div class="content bind-content">
<!-- 头部 --> <!-- 头部 -->
<div :class="{'header':true,'scroll white':isScrollTop,'white':true}"> <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="back" @click="$router.go(-1)">
<div class="header-title">个人信息</div> <img src="../../../assets/images/home/expert/back.png" alt="" />
</div> </div>
<div class="info-bg pull-content"> <div class="header-title">个人信息</div>
<ul class="phone-info"> </div>
<li><span>头像</span><p><img src="../../../assets/images/user/photo.png"></p></li> <div class="info-bg pull-content">
<li><span>昵称</span><input type="text" value="" placeholder="请输入昵称"/></li> <ul class="phone-info">
</ul> <li>
</div> <span>头像</span>
<div class="bind-btn">提交</div> <p class="ps">
</div> <input class="inputB" @change="imgIny($event)" type="file" />
<img src="../../../assets/images/user/photo.png" />
</p>
</li>
<li>
<span>昵称</span
><input type="text" value="" placeholder="请输入昵称" />
</li>
</ul>
</div>
<div class="bind-btn">提交</div>
</div>
</template> </template>
<script> <script>
export default { export default {
name: "info", name: "info",
data() { data() {
return { return {
isScrollTop: false, isScrollTop: false,
} };
}, },
created() { created() {
this.isScroll = true; this.isScroll = true;
window.addEventListener("scroll", this.eventScrollTop); window.addEventListener("scroll", this.eventScrollTop);
}, },
mounted() { mounted() {},
computed: {},
}, methods: {
computed: { imgIny(e) {
const files = e.target.files;
}, console.log(files[0]);
methods: { console.log({ image: files[0] });
// var fromdata = new FormData();
eventScrollTop() { fromdata.append("image", files[0]);
let scrollTop = document.body.scrollTop || document.documentElement.scrollTop; this.axios
if (scrollTop >= 5) { .post(this.HOME + "/api/file/upload/image", fromdata, {
if (this.isScroll) { headers: {
this.isScroll = false; "Content-Type": "multipart/form-data",
this.isScrollTop = true; },
} })
} else { .then(function (res) {
if (!this.isScroll) { console.log(res);
this.isScroll = true; })
this.isScrollTop = false; .catch(function (error) {
} console.log(error);
} });
} },
}, //
destroyed() { eventScrollTop() {
window.removeEventListener("scroll", this.eventScrollTop); let scrollTop =
}, document.body.scrollTop || document.documentElement.scrollTop;
//keep-alive if (scrollTop >= 5) {
activated() { if (this.isScroll) {
this.isScroll = true; this.isScroll = false;
window.addEventListener("scroll", this.eventScrollTop) this.isScrollTop = true;
}, }
//keep-alive } else {
deactivated() { if (!this.isScroll) {
window.removeEventListener("scroll", this.eventScrollTop); this.isScroll = true;
} this.isScrollTop = false;
} }
}
},
},
};
</script> </script>
<style scoped> <style scoped>
.inputB {
width: 1.1rem;
height: 1.1rem;
position: absolute;
left: 0px;
z-index: 5;
top: 0px;
opacity: 0;
}
.ps {
position: relative;
}
</style> </style>

File diff suppressed because it is too large Load Diff

View File

@ -11,9 +11,9 @@
<div class="my-photo"> <div class="my-photo">
<span> <span>
<img v-if="userData.avatar" :src="userData.avatar" /> <img v-if="userData.avatar" :src="userData.avatar" />
<img v-else src="../../../assets/images/user/photo.png" /> <img v-else src="../../../assets/images/user/photo.png" />
</span> </span>
<p v-if="userData.nick_name">{{userData.nick_name}}</p> <p v-if="userData.nick_name">{{ userData.nick_name }}</p>
<p v-else></p> <p v-else></p>
</div> </div>
</div> </div>
@ -28,17 +28,21 @@
</div> </div>
<div class="line" v-if="isReceive == 1"></div> <div class="line" v-if="isReceive == 1"></div>
<ul class="student-information"> <ul class="student-information">
<li v-if="userData.mobile" > <li v-if="userData.mobile">
<span <span
><img src="../../../assets/images/user/icon-phone.png" alt="" ><img src="../../../assets/images/user/icon-phone.png" alt=""
/></span> /></span>
<p>手机号<em>{{userData.mobile}}</em></p> <p>
手机号<em>{{ userData.mobile }}</em>
</p>
</li> </li>
<li @click="goPage('/bind')" v-else > <li @click="goPage('/bind')" v-else>
<span <span
><img src="../../../assets/images/user/icon-phone.png" alt="" ><img src="../../../assets/images/user/icon-phone.png" alt=""
/></span> /></span>
<p>手机号<em>{{userData.mobile}}</em></p> <p>
手机号<em>{{ userData.mobile }}</em>
</p>
<img src="../../../assets/images/home/expert/arrow-right.png" alt="" /> <img src="../../../assets/images/home/expert/arrow-right.png" alt="" />
</li> </li>
<li @click="goPage('/info')"> <li @click="goPage('/info')">
@ -64,93 +68,76 @@
<img src="../../../assets/images/home/expert/arrow-right.png" alt="" /> <img src="../../../assets/images/home/expert/arrow-right.png" alt="" />
</div> </div>
<ul :class="{ 'report-list': true, open: isOpen }"> <ul :class="{ 'report-list': true, open: isOpen }">
<li @click="goPage('/report')"> <li v-for="(item,index) in dataList" :key="index" @click="goPage(item.id)">
<p>职业与专业定位整合测试融合版</p> <p>{{item.title}}</p>
<span>2022-05-12 13:28</span> <span>{{item.done_at}}</span>
</li>
<li @click="goPage('/report')">
<p>职业与专业定位整合测试融合版</p>
<span>2022-05-12 13:28</span>
</li>
<li @click="goPage('/report')">
<p>霍兰德职业兴趣测评完整版</p>
<span>2022-05-12 13:28</span>
</li>
<li @click="goPage('/report')">
<p>DISC性格测评</p>
<span>2022-05-12 13:28</span>
</li>
<li @click="goPage('/report')">
<p>职业与专业定位整合测试融合版</p>
<span>2022-05-12 13:28</span>
</li>
<li @click="goPage('/report')">
<p>职业与专业定位整合测试融合版</p>
<span>2022-05-12 13:28</span>
</li>
<li @click="goPage('/report')">
<p>霍兰德职业兴趣测评完整版</p>
<span>2022-05-12 13:28</span>
</li>
<li @click="goPage('/report')">
<p>DISC性格测评</p>
<span>2022-05-12 13:28</span>
</li> </li>
</ul> </ul>
<div class="feedback-btn">退出登录</div> <div class="feedback-btn">退出登录</div>
<tabbar :current="4"></tabbar> <tabbar :current="4"></tabbar>
</div> </div>
</template> </template>
<script> <script>
import tabbar from '../../../components/tabbar.vue' import tabbar from "../../../components/tabbar.vue";
export default { export default {
name: "expert", name: "expert",
components: { components: {
tabbar tabbar,
}, },
data() { data() {
return { return {
centerUserData:{ centerUserData: {
mobile:"" mobile: "",
}, },
dataList:[],
isScrollTop: false, isScrollTop: false,
isReceive: 1, // isReceive: 1, //
isUse: 0, //使 isUse: 0, //使
isOpen: false, isOpen: false,
userData:{ userData: {
avatar: "" , avatar: "",
consult_amount: 0, consult_amount: 0,
create_time: "", create_time: "",
ding_code: "", ding_code: "",
expert_id: 0, expert_id: 0,
gender: 0, gender: 0,
id: 31, id: 31,
im_uid: "", im_uid: "",
lat: "", lat: "",
lng: "", lng: "",
login_time: "", login_time: "",
mobile: "", mobile: "",
nick_name: "", nick_name: "",
open_id: "", open_id: "",
real_name: "", real_name: "",
tags: "", tags: "",
tel: "", tel: "",
type: 0, type: 0,
unionid: "", unionid: "",
update_time: "", update_time: "",
user_code: "" user_code: "",
}, },
}; };
}, },
created() { created() {
this.isScroll = true; this.isScroll = true;
window.addEventListener("scroll", this.eventScrollTop); window.addEventListener("scroll", this.eventScrollTop);
this.getUserData(); this.getUserData();
this.getevaluationList()
}, },
methods: { methods: {
getevaluationList(){
let that=this
this.axios.post(this.HOME + "/api/evaluation/evaluation-list",{
page:"1",
size:"100",
status:""
}).then(function (res) {
that.dataList=res.data.data.list
});
},
// //
toPage() { toPage() {
if (this.isReceive == 1) { if (this.isReceive == 1) {
@ -162,15 +149,20 @@
} }
}, },
// //
goPage(path) { goPage(id) {
this.$router.push(path); this.$router.push({
path: "/report",
query: {
id:id
},
});
}, },
// //
getUserData() { getUserData() {
let that = this; let that = this;
this.axios.post(this.HOME + "/api/user/center-info").then(function (res) { this.axios.post(this.HOME + "/api/user/center-info").then(function (res) {
that.userData = res.data.data; that.userData = res.data.data;
location.centerUserData=JSON.stringify( that.userData ) location.centerUserData = JSON.stringify(that.userData);
}); });
}, },
// //
@ -206,8 +198,8 @@
</script> </script>
<style scoped> <style scoped>
.banner, .banner,
.banner img { .banner img {
width: 100%; width: 100%;
} }
</style> </style>