Commit 11f5af05 by 肖康

Merge branch 'XK_会员中心新增页面20210125'

# Conflicts:
#	view/21.js
#	view/33.js
#	view/34.js
#	view/35.js
#	view/36.js
#	view/37.js
#	view/38.js
#	view/39.js
#	view/4.js
#	view/40.js
#	view/41.js
#	view/42.js
#	view/43.js
#	view/44.js
#	view/45.js
#	view/46.js
#	view/47.js
#	view/48.js
#	view/49.js
#	view/50.js
#	view/51.js
#	view/52.js
#	view/53.js
#	view/54.js
#	view/55.js
#	view/56.js
#	view/57.js
#	view/58.js
#	view/59.js
#	view/60.js
#	view/61.js
#	view/62.js
#	view/63.js
#	view/64.js
#	view/app.js
#	view/index.html
parents 77c5e6b6 7cad050e
Showing with 992 additions and 25 deletions
<template>
<div id="app">
<keep-alive exclude="samplespecial,newsDetail,pointchange,wallet,walletRetrieve,walletDetail,walletRecord,walletStatus,walletWithdraw,walletRecharge,xianhuo,lxshop,brand,brandList,sampleapply,samplecominfo,samplebasinfo,risk,risksuccess,sample,addressp,orderDetail,shipping">
<keep-alive exclude="samplespecial,newsDetail,pointchange,wallet,walletRetrieve,walletDetail,walletRecord,walletStatus,walletWithdraw,walletRecharge,xianhuo,lxshop,brand,brandList,sampleapply,samplecominfo,samplebasinfo,risk,risksuccess,sample,addressp,orderDetail,shipping,helpDetail">
<router-view class="router-view"></router-view>
</keep-alive>
</div>
......
......@@ -58,6 +58,10 @@ export const apis = {
* 首页
*/
index: productionUrl + 'index',
/***获取帮助中心列表***/
getHelpCenterCatList: productionUrl + 'help/getHelpCenterCatList',
/***获取帮助中心指定文章***/
getQuestionInfo: productionUrl + 'help/getQuestionInfo',
/**
* 获取登录状态
*/
......@@ -66,9 +70,9 @@ export const apis = {
* 获取购物车内赠品
*/
getCartMZInfo: productionUrlApi + 'cart/getCartMZInfo',
/**
* 获取购物车数量
*/
/**
* 获取购物车数量
*/
cartCount: productionUrlApi + 'cart/count',
/**
* 去结算行为统计
......@@ -158,6 +162,8 @@ export const apis = {
* *
*/
feedback: productionUrlApi + 'help/help/feedback',
/**
* *
* 获取当前积分api
......@@ -389,7 +395,7 @@ export const apis = {
* 会员中心接口
*
* **/
/**获取个人信息**/
getUserType: productionUrlApi + '/user/getUserType',
/**获取个人订单数量**/
......@@ -410,13 +416,13 @@ export const apis = {
ucouponLists: productionUrlApi + '/ucoupon/lists',
/***订单列表**/
orderLists: productionUrlApi + 'order/lists',
/***消息列表**/
getMessageListsByUserId: productionUrlApi + 'msg/getMessageListsByUserId',
/***改变消息状态**/
changeMessageStatus: productionUrlApi + 'msg/changeMessageStatus',
/***消息列表**/
getMessageListsByUserId: productionUrlApi + 'msg/getMessageListsByUserId',
/***改变消息状态**/
changeMessageStatus: productionUrlApi + 'msg/changeMessageStatus',
/***删除消息**/
changeMessageStatusByH5: productionUrlApi + 'msg/changeMessageStatusByH5',
/***订单物流**/
shipping: productionUrlApi + '/order/shipping',
/***最新物流**/
......@@ -432,15 +438,15 @@ export const apis = {
sureSend: productionUrlApi + '/order/recive',
/***取消订单**/
orderCancel: productionUrlApi + '/order/cancel',
/***历史浏览**/
getHistory: productionUrlApi + 'home/behavior/get_view_goods_history',
/***询价单记录**/
getInqueryList: productionUrlApi + 'help/help/feedback_list',
/**品牌分类**/
brandList: productionUrl + 'api/brandList',
/**品牌详细**/
......@@ -509,7 +515,7 @@ export const apis = {
* 留言信息
*/
addMessage: urlApi + '/help/help/add_message'
}
......@@ -552,7 +558,7 @@ export const services = {
getCartMZInfo(params) {
return axios.post(apis.getCartMZInfo, params)
},
customsrService(params) {
return axios.get(apis.customsrService, {
params: {
......@@ -756,18 +762,18 @@ export const services = {
changeMessageStatusByH5(params) {
return axios.post(apis.changeMessageStatusByH5, params)
},
shipping(params) {
return axios.post(apis.shipping, params)
},
lastshipping(params) {
return axios.post(apis.lastshipping, params)
},
rebuy(params) {
return axios.post(apis.rebuy, params)
},
checkPdf(params) {
return axios.post(apis.checkPdf, params)
},
......@@ -780,8 +786,8 @@ export const services = {
orderCancel(params) {
return axios.post(apis.orderCancel, params)
},
unbindPhone(params) {
return axios.post(apis.unbindPhone, params)
},
......@@ -794,14 +800,14 @@ export const services = {
changeUserInfo(params) {
return axios.post(apis.changeUserInfo, params)
},
getHistory(params) {
return axios.post(apis.getHistory, params)
},
getInqueryList(params) {
return axios.post(apis.getInqueryList, params)
},
brandList(params) {
return axios.post(apis.brandList, params)
},
......@@ -888,6 +894,12 @@ export const services = {
yaoHaoYouJP(params) {
return axios.post(apis.yaoHaoYouJP, params)
},
getQuestionInfo(params) {
return axios.post(apis.getQuestionInfo, params)
},
getHelpCenterCatList(params) {
return axios.post(apis.getHelpCenterCatList, params)
},
getYaoHaoYouGoodId(params) {
return axios.get(apis.getYaoHaoYouGoodId, {
params: {
......
.back{
padding-top: 40px;
.head{
height:40px;
padding:0 0.45rem;
color:#333;
line-height: 40px;
a{color:#333;margin-right: 30px;}
i{
font-size: 20px;
}
position: fixed;
top:0px;
left:0px;
right:0px;
box-sizing: border-box;
}
.qus-type{
padding:0.45rem;
background: #fff;
padding-right: 0px;
h3{color:#333;font-size: 14px;margin-bottom: 0.36rem;}
.fl{
width: 2.13rem;
height: 0.8rem;
background: #F4F4F4;
border-radius: 0.05rem;
color:#333;
font-size: 13px;
text-align: center;
line-height: 0.8rem;
margin-right: 0.27rem;
border:1px solid #f4f4f4;
box-sizing: border-box;
&.mr0{margin-right: 0px;}
&.act{
border:1px solid #1969F9;
color:#1969F9;
background: #fff;
}
}
}
.from{
background: #fff;
width:9.6rem;
margin:0 auto;
padding:0.27rem;
box-sizing: border-box;
margin-top: 0.31rem;
h3{color:#6f6f6f;font-size: 12px;margin-bottom: 0.15rem;height:0.64rem;line-height: 0.64rem;}
textarea{
display: block;
height: 4.21rem;
background: #F9F9F9;
width:100%;
border: 0.01rem solid #E5E5E5;
box-sizing: border-box;
padding:0.15rem;
margin-bottom: 0.2rem;
}
.login-box{h3{margin-bottom: 0.4rem;}}
dl {
height: 0.99rem; background: #fff; border-top: none;
margin-bottom: 0.33rem;
dt { font-size: 12px; width:60px; text-align: right; float: left; height:0.99rem; line-height:0.99rem; color: #333;margin-right: 20px; }
dd {
font-size: 14px; float: left; height: 0.99rem; line-height: 0.99rem;
width: 6.4rem;
input{
width: 6.2rem;
height: 0.99rem;
padding-left: 0.2rem;
line-height: 0.99rem;
border-radius: 0.05rem;
border: 0.01rem solid #D2D5D7;
color: #333333;
font-size: 14px;
}
}
}
.updateCodeImg{
.code-text{width:55%!important;}
.code{
position: relative;
top:1px;
width:45%!important;
height:100%;
img{width:100%;height:100%;}
}
}
.inp-wrap {
margin-bottom: 0.33rem;
label {
width: 60px;
height:0.99rem;
line-height: 0.99rem;
font-size: 12px;
color: #333;
text-align: right;
margin-right: 20px;
em{
color: red;
margin-right: 0.1rem;
}
}
input.inp {
width: 6.2rem;
height: 0.99rem;
padding-left: 0.2rem;
line-height: 0.99rem;
border-radius: 0.05rem;
border: 0.01rem solid #D2D5D7;
color: #333333;
font-size: 14px;
&.w1 {
width: 3.75rem;
margin-right: 0.27rem;
}
}
.code-text{
width: 2.16rem;
height: 0.99rem;
background: #FFFFFF;
border-radius: 0.05rem;
border: 0.01rem solid #1969F9;
color:#1969F9;
text-align: center;
line-height: 0.99rem;
&.code-text-disabled {
color: #fff;
background: #ccc;
border: 0.01rem solid #ccc;
}
}
}
}
.submit-btn{
width: 2.99rem;
height: 0.91rem;
line-height: 0.91rem;
background: #1969F9;
border-radius: 0.03rem;
text-align: center;
font-size: 14px;
color:#fff;
margin: 0 auto;
margin-top: 0.47rem;
}
input,textarea{
transition: all 0.6s;
&:focus{
background: #fff;
border: 0.01rem solid #1969F9!important;
caret-color:#1969F9;
}
}
.icon-liedanbiao{
font-size: 14px;
color:#333;
position: relative;
top:-1px;
left:-10px;
}
}
\ No newline at end of file
.back{padding-top:40px}.back .head{height:40px;padding:0 .45rem;color:#333;line-height:40px;position:fixed;top:0px;left:0px;right:0px;box-sizing:border-box}.back .head a{color:#333;margin-right:30px}.back .head i{font-size:20px}.back .qus-type{padding:.45rem;background:#fff;padding-right:0px}.back .qus-type h3{color:#333;font-size:14px;margin-bottom:.36rem}.back .qus-type .fl{width:2.13rem;height:.8rem;background:#F4F4F4;border-radius:.05rem;color:#333;font-size:13px;text-align:center;line-height:.8rem;margin-right:.27rem;border:1px solid #f4f4f4;box-sizing:border-box}.back .qus-type .fl.mr0{margin-right:0px}.back .qus-type .fl.act{border:1px solid #1969F9;color:#1969F9;background:#fff}.back .from{background:#fff;width:9.6rem;margin:0 auto;padding:.27rem;box-sizing:border-box;margin-top:.31rem}.back .from h3{color:#6f6f6f;font-size:12px;margin-bottom:.15rem;height:.64rem;line-height:.64rem}.back .from textarea{display:block;height:4.21rem;background:#F9F9F9;width:100%;border:.01rem solid #E5E5E5;box-sizing:border-box;padding:.15rem;margin-bottom:.2rem}.back .from .login-box h3{margin-bottom:.4rem}.back .from dl{height:.99rem;background:#fff;border-top:none;margin-bottom:.33rem}.back .from dl dt{font-size:12px;width:60px;text-align:right;float:left;height:.99rem;line-height:.99rem;color:#333;margin-right:20px}.back .from dl dd{font-size:14px;float:left;height:.99rem;line-height:.99rem;width:6.4rem}.back .from dl dd input{width:6.2rem;height:.99rem;padding-left:.2rem;line-height:.99rem;border-radius:.05rem;border:.01rem solid #D2D5D7;color:#333333;font-size:14px}.back .from .updateCodeImg .code-text{width:55%!important}.back .from .updateCodeImg .code{position:relative;top:1px;width:45%!important;height:100%}.back .from .updateCodeImg .code img{width:100%;height:100%}.back .from .inp-wrap{margin-bottom:.33rem}.back .from .inp-wrap label{width:60px;height:.99rem;line-height:.99rem;font-size:12px;color:#333;text-align:right;margin-right:20px}.back .from .inp-wrap label em{color:red;margin-right:.1rem}.back .from .inp-wrap input.inp{width:6.2rem;height:.99rem;padding-left:.2rem;line-height:.99rem;border-radius:.05rem;border:.01rem solid #D2D5D7;color:#333333;font-size:14px}.back .from .inp-wrap input.inp.w1{width:3.75rem;margin-right:.27rem}.back .from .inp-wrap .code-text{width:2.16rem;height:.99rem;background:#FFFFFF;border-radius:.05rem;border:.01rem solid #1969F9;color:#1969F9;text-align:center;line-height:.99rem}.back .from .inp-wrap .code-text.code-text-disabled{color:#fff;background:#ccc;border:.01rem solid #ccc}.back .submit-btn{width:2.99rem;height:.91rem;line-height:.91rem;background:#1969F9;border-radius:.03rem;text-align:center;font-size:14px;color:#fff;margin:0 auto;margin-top:.47rem}.back input,.back textarea{transition:all .6s}.back input:focus,.back textarea:focus{background:#fff;border:.01rem solid #1969F9 !important;caret-color:#1969F9}.back .icon-liedanbiao{font-size:14px;color:#333;position:relative;top:-1px;left:-10px}
\ No newline at end of file
.help{
padding-top: 40px;
.head{
height:40px;
padding:0 0.45rem;
color:#333;
line-height: 40px;
a{color:#333;margin-right: 30px;}
i{
font-size: 20px;
}
position: fixed;
top:0px;
left:0px;
right:0px;
box-sizing: border-box;
}
.con{
.group{
width:2.35rem;
height:1rem;
line-height:1rem;
padding-left: 0.45rem;
border-top:1px solid #f8f8f8;
border-bottom:1px solid #f8f8f8;
h3{
font-size: 13px;
color:#333;
position: relative;
height:100%;
left:1px;
}
.gro-c{
display: none;
position: fixed;top:40px;left:2.8rem;
right:0px;bottom: 0px;background: #fff;
box-sizing: border-box;
border:1px solid #E9E8E8;
border-right: 0px;
}
.gro-c{
a{
display: block;
padding-left: 0.45rem;
}
.title{
color:#333;
font-size:15px;
}
.text{
font-size: 14px;
color:#6f6f6f;
}
}
&.act{
background: #fff;
border-top:1px solid #E9E8E8;
border-bottom:1px solid #E9E8E8;
h3{z-index: 1;background: #fff;}
.gro-c{display: block;}
}
}
}
.detail{
background: #fff;
padding:0.45rem;
box-sizing: border-box;
height:calc(100vh - 40px);
.title{
font-size: 20px;
color:#333;
margin-bottom: 0.4rem;
}
.text{
color:#333;
font-size: 14px;
line-height: 28px;
}
}
.icon-liedanbiao{
font-size: 14px;
color:#333;
position: relative;
top:-1px;
left:-10px;
}
}
\ No newline at end of file
.help{padding-top:40px}.help .head{height:40px;padding:0 .45rem;color:#333;line-height:40px;position:fixed;top:0px;left:0px;right:0px;box-sizing:border-box}.help .head a{color:#333;margin-right:30px}.help .head i{font-size:20px}.help .con .group{width:2.35rem;height:1rem;line-height:1rem;padding-left:.45rem;border-top:1px solid #f8f8f8;border-bottom:1px solid #f8f8f8}.help .con .group h3{font-size:13px;color:#333;position:relative;height:100%;left:1px}.help .con .group .gro-c{display:none;position:fixed;top:40px;left:2.8rem;right:0px;bottom:0px;background:#fff;box-sizing:border-box;border:1px solid #E9E8E8;border-right:0px}.help .con .group .gro-c a{display:block;padding-left:.45rem}.help .con .group .gro-c .title{color:#333;font-size:15px}.help .con .group .gro-c .text{font-size:14px;color:#6f6f6f}.help .con .group.act{background:#fff;border-top:1px solid #E9E8E8;border-bottom:1px solid #E9E8E8}.help .con .group.act h3{z-index:1;background:#fff}.help .con .group.act .gro-c{display:block}.help .detail{background:#fff;padding:.45rem;box-sizing:border-box;height:calc(100vh - 40px)}.help .detail .title{font-size:20px;color:#333;margin-bottom:.4rem}.help .detail .text{color:#333;font-size:14px;line-height:28px}.help .icon-liedanbiao{font-size:14px;color:#333;position:relative;top:-1px;left:-10px}
\ No newline at end of file
......@@ -67,6 +67,11 @@ const inquiry = resolve => require(['@/views/user/inquiry'], resolve);
const settings = resolve => require(['@/views/user/settings'], resolve);
const message = resolve => require(['@/views/user/message'], resolve);
const Help = resolve => require(['@/views/help/help'], resolve);
const HelpDetail = resolve => require(['@/views/help/helpDetail'], resolve);
const Back = resolve => require(['@/views/back/back'], resolve);
Vue.use(Router);
const routes = [
......@@ -510,6 +515,30 @@ const routes = [
}
},
{
path: '/help',
name: "help",
component: Help,
meta: {
title: '帮助中心',
}
},
{
path: '/helpDetail',
name: "helpDetail",
component: HelpDetail,
meta: {
title: '帮助中心',
}
},
{
path: '/back',
name: "back",
component: Back,
meta: {
title: '意见反馈',
}
},
{
path: '*',
redirect: '/'
}
......
import Vue from 'vue'
import { Toast } from 'vant';
import { services as Services } from '../../../api/index'
Vue.use(Toast);
var qs = require('qs');
const state = {
loading: false,
formCodeStatus: false,//短信是否发送成功
formImgShow: false,//图片验证码是否显示
isRegLogin:false//是否登录注册成功 进行下一步
}
const mutations = {
}
const actions = {
backSmsVerify({ commit }, payload) {
state.loading = true;
state.formCodeStatus = false;
var params = {
channel: 1,
type: 10,
verify: payload.verify,
mobile: payload.mobile
}
Services.smsVerify(qs.stringify(params)).then((res) => {
let data = res.data;
state.loading = false;
if (data.err_code == 0) {
state.formCodeStatus = true;
Toast({
message: data.err_msg,
duration: 2000
});
} else if (data.err_code == 10001 || data.err_code == 10002) {
Toast({
message: data.err_msg,
duration: 2000
});
state['formImgShow'] = false;
state['formImgShow'] = true;
} else {
Toast({
message: data.err_msg,
duration: 3000
});
}
}).catch(function (err) {
state.loading = false;
});
},
actionLoginback({commit}, payload) {
state.loading = true;
state.isRegLogin=false;
var params = {
account: payload.account,
sms_verify: payload.sms_verify
}
Services.actionLogin(qs.stringify(params)).then((res) => {
let data = res.data;
state.loading = false;
if (data.err_code == 0) {
state.isRegLogin=true;
}else {
Toast({
message: data.err_msg,
duration: 3000
});
}
}).catch(function (err) {
state.loading = false;
});
},
feedback666({commit}, payload) {
state.loading = true;
var params = {
type: payload.types,
content: payload.content,
mobile: payload.mobile,
source:window.location.href
}
Services.feedback(qs.stringify(params)).then((res) => {
let data = res.data;
state.loading = false;
if (data.err_code == 0) {
Toast({
message: "意见反馈已提交成功,客服人员会尽快与您联系",
duration: 3000
});
setTimeout(function(){
history.go(0)
},3000)
}else {
Toast({
message: data.err_msg,
duration: 3000
});
}
}).catch(function (err) {
state.loading = false;
});
}
}
const getters = {}
export default {
state,
mutations,
actions,
getters
}
import Vue from 'vue'
import {Toast} from 'vant';
import {services as Services} from '../../../api/index'
import Util from '../../../util/index'
var qs = require('qs');
Vue.use(Toast);
const state = {
loading:false,
list_:[],
info:""
}
const mutations = {
}
const actions = {
getQuestionInfo({commit}, payload) {
state.loading = true;
var params = {
id:payload.id
}
params = Util.getParams(params)
Services.getQuestionInfo(params).then((res) => {
state.loading = false;
let data = res.data;
if (data.err_code == 0) {
state.info=data.data.question
}
}).catch(function (err) {
});
},
getHelpCenterCatList({commit}, payload) {
state.loading = true;
var hccat_id=payload.hccat_id;
var params = {
}
params = Util.getParams(params)
Services.getHelpCenterCatList(params).then((res) => {
state.loading = false;
let data = res.data;
if (data.err_code == 0) {
state.list_=data.data.commonquestion||[]
state.list_.forEach((item)=>{
if(item.hccat_id==hccat_id){
item.check=true
}else{
item.check=false
}
})
}
}).catch(function (err) {
});
}
}
const getters = {}
export default {
state,
mutations,
actions,
getters
}
......@@ -41,7 +41,8 @@ import sampleapply from './modules/sample/sampleapply'
import special from './modules/special/index'
import oscilloscope from './modules/oscilloscope/index'
import inquiry from './modules/user/inquiry'
import help from './modules/help/help'
import back from './modules/back/back'
Vue.use(Vuex);
......@@ -85,6 +86,8 @@ export default new Vuex.Store({
sampleapply,
special,
oscilloscope,
inquiry
inquiry,
help,
back
}
})
<template>
<div class="back">
<div class="head">
<i class="icon iconfont fl" v-backGo>&#xe642;</i>
<a :href="phpParams.kfqq_xk" class="fr"> <i class="icon iconfont ">&#xe640;</i></a>
</div>
<div class="qus-type">
<h3>问题类型</h3>
<div class="clr">
<div class="fl" :class="{'act':qustype==1}" @click="tab(1)">购物流程</div>
<div class="fl" :class="{'act':qustype==2}" @click="tab(2)">购物问题</div>
<div class="fl" :class="{'act':qustype==3}" @click="tab(3)">售后服务</div>
<div class="fl mr0" :class="{'act':qustype==4}" @click="tab(4)">其它</div>
</div>
</div>
<div class="from">
<h3>请留下您的宝贵建议:</h3>
<textarea v-model="content" maxlength="200"></textarea>
<div class="login-box" v-if="isLogin!=1">
<h3>留下您的联系方式:</h3>
<div class="inp-wrap boxsiz">
<label class="lineBlock va-m"><em>*</em>联系电话</label>
<input type="number" placeholder="" v-model="mobile" class="inp va-m">
</div>
<dl class="updateCodeImg " v-show="imgcodestatus">
<dt>图片验证</dt>
<dd>
<p class="code-text fl"><input type="text" id="imgCode" v-model="imgcodeval"></p>
<a href="javascript:void(0);" class="code fr"><img v-imgCode></a>
</dd>
</dl>
<div class="inp-wrap boxsiz" v-show="verifyCodeFlag">
<label class="lineBlock va-m">短信验证</label>
<input type="text" placeholder="" v-model="verifyCode" class="inp w1 va-m">
<input type="button" @click="getCode()" name="codeButton" class="lineBlock va-m code-text"
:value="codetext" :class="{'code-text-disabled':codeactive}" :disabled="disabled">
</div>
</div>
</div>
<div class="submit-btn" @click="submit">提交</div>
<Menu></Menu>
<van-loading type="spinner" color="#000" class="loading-background" v-if="loading" />
</div>
</template>
<script>
import Vue from 'vue';
import {
mapState
} from "vuex";
import {
Loading,
Toast
} from 'vant';
import Menu from "@/views/common/Menu.vue";
import Util from "../../util";
Vue.use(Loading).use(Toast);
export default {
name: "back",
data() {
return {
qustype: "",
content: "",
mobile: "",
verifyCodeFlag: false,
verifyCode: "",
codetext: '获取验证码',
disabled: false,
codeactive: false,
imgcodestatus: false,
imgcodeval: "",
isLogin: Util.isLogin()
};
},
watch: {
formCodeStatus(val) {
if (val) {
this.timeNum();
}
},
formImgShow(val) {
this.imgcodestatus = val;
},
mobile(val) {
var r = /^1[3456789]\d{9}$/;
if (r.test(val)) {
this.verifyCodeFlag = true;
} else {
this.verifyCodeFlag = false;
this.imgcodestatus = false;
}
},
isRegLogin(val){
if(val){
//登录成功调用反馈接口
this.$store.dispatch({
type: 'feedback666',
types:this.qustype,
mobile: this.mobile,
content:this.content
})
}
}
},
created() {
this.$store.dispatch({
type: "getCommonParams"
});
},
computed: {
...mapState({
loading: state => state.back.loading,
formImgShow: state => state.back.formImgShow,
formCodeStatus: state => state.back.formCodeStatus,
isRegLogin:state=> state.back.isRegLogin,
phpParams: state => state.common.phpParams,
})
},
methods: {
tab(t) {
this.qustype = t;
},
getCode() {
var tel_reg = /^1[3456789]\d{9}$/;
if (!this.mobile) {
Toast({
message: "亲,请输入手机",
duration: 3000
});
return;
}
if (!tel_reg.test(this.mobile)) {
Toast({
message: "亲,手机格式不正确",
duration: 3000
});
return;
}
if (this['imgcodestatus']) {
if (!this['imgcodeval']) {
Toast({
message: "请确认图片验证码",
duration: 3000
});
return;
}
}
if (this.codeactive) {
return
}
this.$store.dispatch({
type: 'backSmsVerify',
mobile: this.mobile,
verify: this['imgcodeval']
})
},
timeNum() {
var me = this;
var wait = 60;
me.disabled = true;
me.codeactive = true;
me.codetext = wait + '秒后获取';
var clock = setInterval(doLoop, 1000);
function doLoop() {
wait--;
if (wait > 0) {
me.codetext = wait + '秒后获取';
me.codeactive = true;
} else {
clearInterval(clock);
me.disabled = false;
me.codeactive = false;
me.codetext = '获取验证码';
wait = 60;
}
}
},
submit() {
if (!this.qustype) {
Toast({
message: "亲,请选择问题类型",
duration: 3000
});
return;
}
if (!this.content) {
Toast({
message: "亲,请选输入宝贵意见",
duration: 3000
});
return;
}
if (this.isLogin != 1) {
var tel_reg = /^1[3456789]\d{9}$/;
if (!this.mobile) {
Toast({
message: "亲,请输入手机",
duration: 3000
});
return;
}
if (!tel_reg.test(this.mobile)) {
Toast({
message: "亲,手机格式不正确",
duration: 3000
});
return;
}
if (!this.verifyCode) {
Toast({
message: "亲,请输入验证码",
duration: 3000
});
return;
}
}
if (this.isLogin != 1) {
this.$store.dispatch({
type: 'actionLoginback',
account: this['mobile'],
sms_verify:this['verifyCode']
})
}else{
this.$store.dispatch({
type: 'feedback666',
types:this.qustype,
mobile: this.mobile,
content:this.content
})
}
},
},
components: {
Menu
}
};
</script>
<style scoped>
@import "../../assets/css/back/back.min.css";
</style>
\ No newline at end of file
<template>
<div class="help">
<div class="head">
<i class="icon iconfont fl" v-backGo>&#xe642;</i>
<a :href="phpParams.kfqq_xk" class="fr"> <i class="icon iconfont ">&#xe640;</i></a>
</div>
<div class="con" v-if="list.length>0">
<div class="group " :class="{'act':item.check}" v-for="item in list">
<h3 @click="tab(item.hccat_id)">{{item.hccat_name}}</h3>
<div class="gro-c" >
<div class="gc">
<a v-for="it in item.list" :href="'/h5/view/#/helpDetail?hccat_id='+it.hccat_id" class="text">{{it.hccat_name}}</a>
</div>
</div>
</div>
</div>
<Menu></Menu>
<van-loading type="spinner" color="#000" class="loading-background" v-if="loading" />
</div>
</template>
<script>
import Vue from 'vue';
import {
mapState
} from "vuex";
import {
Loading
} from 'vant';
import Menu from "@/views/common/Menu.vue";
Vue.use(Loading);
export default {
name: "help",
data() {
return {
list:[],
hccat_id:1
};
},
watch:{
list_(val){
this.list=val
console.log(this.list)
}
},
created() {
this.getList();
this.$store.dispatch({
type: "getCommonParams"
});
},
computed: {
...mapState({
loading: state => state.help.loading,
list_: state => state.help.list_,
phpParams: state => state.common.phpParams,
})
},
methods: {
getList(cid) {
this.$store.dispatch({
type: "getHelpCenterCatList",
hccat_id:cid||1
});
},
tab(id){
this.$forceUpdate();
this.list.forEach((item)=>{
if(item.hccat_id==id){
item.check=true
}else{
item.check=false
}
})
}
},
components: {
Menu
}
};
</script>
<style scoped>
@import "../../assets/css/help/help.min.css";
</style>
\ No newline at end of file
<template>
<div class="help">
<div class="head">
<i class="icon iconfont fl" v-backGo>&#xe642;</i>
<a :href="phpParams.kfqq_xk" class="fr"> <i class="icon iconfont ">&#xe640;</i></a>
</div>
<div class="detail">
<div class="title">{{info.title}}</div>
<div class="text">{{info.content}}</div>
</div>
<Menu></Menu>
<van-loading type="spinner" color="#000" class="loading-background" v-if="loading" />
</div>
</template>
<script>
import Vue from 'vue';
import {
mapState
} from "vuex";
import {
Loading
} from 'vant';
import Menu from "@/views/common/Menu.vue";
Vue.use(Loading);
export default {
name: "helpDetail",
data() {
return {
};
},
watch:{
},
created() {
this.$store.dispatch({
type: "getQuestionInfo",
id:this.$route.query.hccat_id
});
this.$store.dispatch({
type: "getCommonParams"
});
},
computed: {
...mapState({
loading: state => state.help.loading,
info:state=>state.help.info,
phpParams: state => state.common.phpParams,
})
},
methods: {
},
components: {
Menu
}
};
</script>
<style scoped>
@import "../../assets/css/help/help.min.css";
</style>
\ No newline at end of file
......@@ -48,6 +48,18 @@
</a>
</template>
</li>
<li>
<a class="row bothSide verCenter" href="/h5/view/#/help">
<span>帮助中心</span>
<i class="iconfont iconxiangyoubeifen"></i>
</a>
</li>
<li>
<a class="row bothSide verCenter" href="/h5/view/#/back">
<span>意见反馈</span>
<i class="iconfont iconxiangyoubeifen"></i>
</a>
</li>
</ul>
<a href="javascript:;" class="exit" @click="goOut" v-if="ismini">退出登录</a>
</section>
......
{"h":"a71b1741c2cd7c417207","c":{"33":true}}
\ No newline at end of file
{"h":"1e012e88343a5fb067fe","c":{"app":true}}
\ No newline at end of file
{"h":"86b16f9b6bfba0b4ca10","c":{"33":true}}
\ No newline at end of file
{"h":"180c7a017ae2fb72fad6","c":{"33":true}}
\ No newline at end of file
{"h":"91ec763a37ba072826e4","c":{}}
\ No newline at end of file
{"h":"af1c5e4f1317b432b85c","c":{"app":true}}
\ No newline at end of file
{"h":"e73883c7907ae7b059a7","c":{"app":true}}
\ No newline at end of file
{"h":"9b24bcaf83b42b7e3684","c":{"33":true}}
\ No newline at end of file
{"h":"4b79bb8f9de3334fe06a","c":{"app":true}}
\ No newline at end of file
{"h":"1cf0fa782af732d271cc","c":{"33":true}}
\ No newline at end of file
{"h":"e1b3ef77dcd37b67828e","c":{"33":true}}
\ No newline at end of file
{"h":"d78090216fcd6667b463","c":{}}
\ No newline at end of file
{"h":"ab5fa814e093d107270b","c":{}}
\ No newline at end of file
{"h":"f14cd31f6e382a75087b","c":{"33":true}}
\ No newline at end of file
{"h":"12defce278165c3e12af","c":{"33":true}}
\ No newline at end of file
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
{"h":"effee262041f0bbfb597","c":{}}
\ No newline at end of file
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
{"h":"0715a1cb6c04abe9b8b9","c":{"33":true}}
\ No newline at end of file
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
{"h":"bb62d64d2f671ef67a98","c":{}}
\ No newline at end of file
This diff is collapsed. Click to expand it.
{"h":"fd10ff0f095232bf4c6c","c":{"33":true}}
\ No newline at end of file
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
{"h":"b067cb7e728d25c5d631","c":{"app":true}}
\ No newline at end of file
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
{"h":"68fb197ee3942b15bd2b","c":{"33":true}}
\ No newline at end of file
{"h":"0c989f7182f0f2d01437","c":{"33":true}}
\ No newline at end of file
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
{"h":"803cc461b70847743c7c","c":{"app":true}}
\ No newline at end of file
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment