Browse Source

Merge branch 'master' of ssh://gitlab.frkj.cc:222/php/ZhiHuiJiaoWu_UniApp

master
王泽彦 10 months ago
parent
commit
679a45abff
  1. 75
      api/apiRoute.js
  2. 4
      pages/coach/class/list.vue
  3. 1043
      pages/coach/course/info_list.vue
  4. 1248
      pages/coach/course/list.vue
  5. 14
      pages/coach/my/index.vue
  6. 76
      pages/market/clue/add_clues.vue
  7. 4
      pages/market/clue/index.vue
  8. 506
      pages/market/data/index.vue
  9. 310
      pages/market/index/index.vue
  10. 52
      pages/market/my/index.vue
  11. 232
      pages/student/login/forgot.vue

75
api/apiRoute.js

@ -88,6 +88,13 @@ export default {
return res; return res;
}) })
}, },
//公共端-忘记密码-通过短信验证码进行密码重置(学生/员工通用)
common_forgetPassword(data = {}) {
let url = '/common/forgetPassword'
return http.post(url, data).then(res => {
return res;
})
},
@ -128,9 +135,46 @@ export default {
//获取添加学员列表
addStudentList(data = {}) {
let url = '/course/addStudentList'
return http.get(url, data).then(res => {
return res;
})
},
addStudent(data = {}) {
let url = '/course/addStudent'
return http.post(url, data).then(res => {
return res;
})
},
delStudentCourse(data = {}) {
let url = '/course/delStudentCourse'
return http.get(url, data).then(res => {
return res;
})
},
//获取班级列表
jlClassList(data = {}) {
let url = '/class/jlClassList'
return http.get(url, data).then(res => {
return res;
})
},
//获取课程列表
courseList(data = {}) {
let url = '/course/courseList'
return http.get(url, data).then(res => {
return res;
})
},
//获取课程详情
courseInfo(data = {}) {
let url = '/course/courseInfo'
return http.get(url, data).then(res => {
return res;
})
},
//教研管理文章列表 //教研管理文章列表
teachingResearchList(data = {}) { teachingResearchList(data = {}) {
let url = '/teachingResearch/list' let url = '/teachingResearch/list'
@ -204,6 +248,13 @@ export default {
return res; return res;
}) })
}, },
//销售端-查询客户资源全部列表
xs_getAllCustomerResources(data = {}) {
let url = '/customerResources/getAll'
return http.get(url, data).then(res => {
return res;
})
},
//销售端-客户资源-获取修改日志列表 //销售端-客户资源-获取修改日志列表
xs_customerResourcesGetEditLogList(data = {}) { xs_customerResourcesGetEditLogList(data = {}) {
let url = '/customerResources/getEditLogList' let url = '/customerResources/getEditLogList'
@ -270,6 +321,24 @@ export default {
}) })
}, },
//员工端统计(销售)-获取销售首页数据统计
xs_statisticsMarketHome(data = {}) {
let url = '/statistics/marketHome'
return http.get(url, data).then(res => {
return res;
})
},
//员工端统计(销售)-获取销售数据页统计
xs_statisticsMarketData(data = {}) {
let url = '/statistics/marketData'
return http.get(url, data).then(res => {
return res;
})
},

4
pages/coach/class/list.vue

@ -59,7 +59,7 @@
<script> <script>
import memberApi from '@/api/member.js'; import memberApi from '@/api/member.js';
import AQTabber from "@/components/AQ/AQTabber.vue" import AQTabber from "@/components/AQ/AQTabber.vue"
import apiRoute from '@/api/apiRoute.js';
export default { export default {
components: { components: {
@ -129,7 +129,7 @@ export default {
this.tableList = [] this.tableList = []
} }
let res = await memberApi.jlClassList(data) let res = await apiRoute.jlClassList(data)
this.loading = false this.loading = false
this.isReachedBottom = false; this.isReachedBottom = false;
if (res.code != 1){ if (res.code != 1){

1043
pages/coach/course/info_list.vue

File diff suppressed because it is too large

1248
pages/coach/course/list.vue

File diff suppressed because it is too large

14
pages/coach/my/index.vue

@ -11,7 +11,7 @@
<view class="user_section"> <view class="user_section">
<view class="box"> <view class="box">
<view class="left" @click="openViewMyInfo()"> <view class="left" @click="openViewMyInfo()">
<image class="pic" :src="$util.img(memberInfo.headimg)"></image> <image class="pic" :src="$util.img(memberInfo.head_img)"></image>
<view class="name">{{memberInfo.name}}</view> <view class="name">{{memberInfo.name}}</view>
</view> </view>
<view class="right"> <view class="right">
@ -96,10 +96,10 @@
</view> </view>
<view class="section_box"> <view class="section_box">
<view class="item" @click="openViewFeedback()"> <!-- <view class="item" @click="openViewFeedback()">
<view>意见反馈</view> <view>意见反馈</view>
<view></view> <view></view>
</view> </view> -->
<view class="item" @click="openViewSetUp()"> <view class="item" @click="openViewSetUp()">
<view>设置</view> <view>设置</view>
@ -114,9 +114,9 @@
</template> </template>
<script> <script>
import memberApi from '@/api/member.js'; // import memberApi from '@/api/member.js';
import AQTabber from "@/components/AQ/AQTabber.vue" import AQTabber from "@/components/AQ/AQTabber.vue"
import apiRoute from '@/api/apiRoute.js';
export default { export default {
components: { components: {
@ -130,7 +130,7 @@ export default {
onLoad() { onLoad() {
}, },
onShow() { onShow() {
// this.init(); this.init();
}, },
methods: { methods: {
async init(){ async init(){
@ -139,7 +139,7 @@ export default {
//() //()
async getMemberInfo(){ async getMemberInfo(){
let res = await memberApi.member({}) let res = await apiRoute.getPersonnelInfo({})
if (res.code != 1) { if (res.code != 1) {
uni.showToast({ uni.showToast({
title: res.msg, title: res.msg,

76
pages/market/clue/add_clues.vue

@ -14,12 +14,12 @@
<!-- 添加客户--> <!-- 添加客户-->
<view style="margin-top: 20rpx;" v-if="optionTableId == 0"> <view style="margin-top: 20rpx;" v-if="optionTableId == 0">
<!-- <view class="search_box">--> <view class="search_box">
<!-- <view class="input_box">--> <view class="input_box">
<!-- <input type="text" v-model="student_name" placeholder="请输入客户名称">--> <input type="text" v-model="student_name" placeholder="请输入客户名称">
<!-- </view>--> </view>
<!-- <view class="btn" @click="clientList()">查重</view>--> <view class="btn" @click="clientList()">查重</view>
<!-- </view>--> </view>
<view class="form-style"> <view class="form-style">
<fui-form ref="form" top="0" :model="formData" :show="false"> <fui-form ref="form" top="0" :model="formData" :show="false">
@ -454,28 +454,34 @@
<image <image
class="img" class="img"
src="@/static/images/index/myk.png"></image> src="@/static/images/index/myk.png"></image>
<view class="name">{{v.student_name}}</view> <view class="name">{{v.name}}</view>
<view class="tag">{{ v.is_status == 1 ? '试听' : '成交' }}</view> <!-- <view class="tag">{{ v.is_status == 1 ? '试听' : '成交' }}</view>-->
</view> </view>
<view class="box_2"> <view class="box_2">
<view class="left"> <view class="left">
<view class="name">首选联系人{{v.contact_name}}</view> <view class="name">首选联系人{{v.decision_maker}}</view>
<!-- <view class="call">妈妈</view>--> <!-- <view class="call">妈妈</view>-->
</view> </view>
</view> </view>
<view class="box_2">
<view class="left">
<view class="name">联系电话{{v.phone_number || ''}}</view>
</view>
</view>
<view class="box_3"> <view class="box_3">
<view class="left"> <view class="left">
{{ $util.formatToDateTime((v.follow && v.follow.follow_up_time || ''), 'm-d H:i') }} 跟进 {{ $util.formatToDateTime((v.updated_at || ''), 'm-d H:i') }} 跟进
</view> </view>
<view class="right"> <view class="right">
<image <image
v-if="['A+','A','A-'].includes(v.follow && v.follow.initial_customer_intent || '')" v-if="v.initial_intent == 'high'"
src="@/static/images/index/intention3.png" src="@/static/images/index/intention3.png"
class="img" class="img"
></image> ></image>
<image <image
v-else-if="['B+','B','B-'].includes(v.follow && v.follow.initial_customer_intent || '')" v-else-if="v.initial_intent == 'medium'"
src="@/static/images/index/intention2.png" src="@/static/images/index/intention2.png"
class="img" class="img"
></image> ></image>
@ -485,13 +491,13 @@
class="img" class="img"
></image> ></image>
<view>意向{{ v.follow && v.follow.initial_customer_intent || '' }}</view> <view>意向{{ v.initial_intent_name || '' }}</view>
</view> </view>
</view> </view>
</view> </view>
<view class="right_box"> <view class="right_box">
<image class="img" src="@/static/images/index/message.png" @click="openViewMyMessage(v)"></image> <image v-if="v.member_id" class="img" src="@/static/images/index/message.png" @click="openViewMyMessage(v)"></image>
<image class="img" src="@/static/images/index/phone.png" @click="dialTel(v)"></image> <image v-if="v.phone_number" class="img" src="@/static/images/index/phone.png" @click="dialTel(v)"></image>
</view> </view>
</view> </view>
</view> </view>
@ -907,9 +913,9 @@ export default {
this.clientUserList = [] this.clientUserList = []
let param = { let param = {
student_name:this.student_name name:this.student_name
} }
let res = await marketApi.clientList(param) let res = await apiRoute.xs_getAllCustomerResources(param)
if(res.code != 1){ if(res.code != 1){
uni.showToast({ uni.showToast({
title: res.msg, title: res.msg,
@ -933,23 +939,37 @@ export default {
//- //-
openViewClueInfo(item) { openViewClueInfo(item) {
let id = item.id let resource_sharing_id = '';
if (item.resourceSharingHasMany && item.resourceSharingHasMany.length > 0) {
resource_sharing_id = item.resourceSharingHasMany[0].id; // id
}
if (!resource_sharing_id) {
uni.showToast({
title: '暂时无法查看',
icon: 'none'
});
return;
}
uni.navigateTo({ uni.navigateTo({
url: `/pages/market/clue/clue_info?id=${id}` url: `/pages/market/clue/clue_info?resource_sharing_id=${resource_sharing_id}`
}) })
}, },
//- //-
openViewMyMessage(item) { openViewMyMessage(item) {
let hair_staff_id = item.hair_staff_id let from_id = this.userInfo.id//id
let to_id = item.customerResource.id//ID
uni.navigateTo({ uni.navigateTo({
url: `/pages/common/im_chat_info?hair_staff_id=${hair_staff_id}` url: `/pages/common/im_chat_info?from_id=${from_id}&to_id=${to_id}`
}) })
}, },
// //
async dialTel(item) { async dialTel(item) {
let tel = item.student_phone
let tel = item.phone_number
if (!tel) { if (!tel) {
uni.showToast({ uni.showToast({
@ -959,10 +979,18 @@ export default {
return; return;
} }
let param = { let param = {
sales_id: item.id//线id staff_id: this.userInfo.id,//id
resource_id: item.id,//ID
resource_type: '',//
communication_type: 'phone',//: phone-, email-, meeting-, other-
communication_result: 'success',//: success-, failure-, pending-
remarks: null,//
tag: null,//
} }
let res = await marketApi.setCallUp(param)//
let res = await apiRoute.xs_communicationRecordsAdd(param)//
if (res.code != 1) { if (res.code != 1) {
uni.showToast({ uni.showToast({
title: res.msg, title: res.msg,

4
pages/market/clue/index.vue

@ -267,8 +267,8 @@ export default {
this.filteredData_1.shared_by = this.userInfo.id//ID this.filteredData_1.shared_by = this.userInfo.id//ID
//,"" //,""
if(this.userInfo.role_key_arr.includes('manager')){ if(this.userInfo.role_key_arr.includes('market_manager')){
this.values = [ this.values = [
{ {
id: 1, id: 1,

506
pages/market/data/index.vue

@ -6,116 +6,217 @@
<view class="title">数据</view> <view class="title">数据</view>
</view> </view>
<view class="count_section"> <!-- 市场人员展示-->
<view class="title_box">业绩目标</view> <view v-if="infoData.role_type == 'market_type'">
<view class="box_1"> <view class="count_section">
<view class="left"> <view class="title_box">业绩统计</view>
<view class="charts-box"> <view class="box_1">
<qiun-data-charts <view class="left">
type="ring" <view class="charts-box">
:opts="opts" <qiun-data-charts
:chartData="chartData" type="ring"
/> :opts="opts"
:chartData="chartData"
/>
</view>
</view>
<view class="right">
<view class="title">本周已分配</view>
<view class="content">
<text class="strong">{{infoData.num_1}}</text>
</view>
<view class="title">本周未分配</view>
<view class="content">
<text class="strong">{{infoData.num_2}}</text>
<!-- <text>较上月</text>-->
</view>
<view class="legeng">
<view class="item">
<view class="piece" style="background-color: #45c59f;"></view>
<view class="lable">已分配</view>
<view class="item">
<view class="piece" style="background-color:#02a7f0;"></view>
<view class="lable">未分配</view>
</view>
</view>
</view>
</view> </view>
</view> </view>
<view class="right">
<view class="title">目标金额</view> <view class="title_box" v-show="box_2_show">新客签到</view>
<view class="content"> <view class="box_2" v-show="box_2_show">
<text class="strong">{{infoData.goal}}</text> <view class="progress-container">
<view :style="{ width: progress + '%' }" class="progress-bar">
</view>
<view class="dian" :style="{ left: (progress - 2) + '%' }"></view>
</view> </view>
<view class="title">完成金额</view> <view class="progress-text">
<view class="content"> <text>0</text>
<text class="strong">{{infoData.wx_performance}}</text> <text>50</text>
<text>较上月</text> <text>100</text>
</view> </view>
</view>
</view>
<view class="main_section">
<view class="tag_section">
<view :class="['left',tagType=='1'?'select':'']" @click="changeTag('1')">统计分析</view>
<view :class="['right',tagType=='2'?'select':'']" @click="changeTag('2')">统计排名</view>
</view>
<!-- 销售分析-->
<view class="section_box_1" v-if="tagType=='1'">
<view class="left">
<qiun-data-charts
type="funnel"
:opts="opts_2"
:chartData="chartData_2"
/>
</view>
<view class="right">
<view class="item">
<view class="title" style="color: #12E7E8;">
已分配<text>({{infoData.num_1_rate}}%)</text>
</view>
<view class="title" style="color: #12E7E8;">
{{infoData.num_1}}<text></text>
</view>
</view>
<view class="legeng">
<view class="item"> <view class="item">
<view class="piece" style="background-color: #45c59f;"></view> <view class="title" style="color: #4DA3FF;">
<view class="lable">新签</view> 未分配<text>({{infoData.num_2_rate}}%)</text>
</view>
<view class="title" style="color: #4DA3FF;">
{{infoData.num_2}}<text></text>
</view>
</view>
<view class="item"> <view class="item">
<view class="piece" style="background-color:#02a7f0;"></view> <view class="title" style="color: #FFCB31;">
<view class="lable">续费</view> 本周拉新<text>({{infoData.num_3_rate}}%)</text>
</view>
<view class="title" style="color: #FFCB31;">
{{infoData.total_1}}<text></text>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</view>
<view class="title_box" v-show="box_2_show">新客签到</view> <!-- 销售排名-->
<view class="box_2" v-show="box_2_show"> <view class="section_box_2" v-else>
<view class="progress-container"> <view class="itme" v-for="(v,k) in infoData.staff_list" :key="k">
<view :style="{ width: progress + '%' }" class="progress-bar"> <view class="title">{{k+1}} {{v.name}}</view>
<view class="money">{{v.goal}}</view>
<view class="plan">
<fui-progress :percent="getPercent(v.wx_yj,v.goal)" height="15" radius="100" background="#e4e4e4" activeColor="#4bced0"></fui-progress>
</view>
</view> </view>
<view class="dian" :style="{ left: (progress - 2) + '%' }"></view>
</view>
<view class="progress-text">
<text>0</text>
<text>50</text>
<text>100</text>
</view> </view>
</view> </view>
</view> </view>
<!-- 销售人员展示-->
<view v-else>
<view class="count_section">
<view class="title_box">业绩统计</view>
<view class="box_1">
<view class="left">
<view class="charts-box">
<qiun-data-charts
type="ring"
:opts="opts"
:chartData="chartData"
/>
</view>
</view>
<view class="right">
<view class="title">已成交</view>
<view class="content">
<text class="strong">{{infoData.num_1}}</text>
</view>
<view class="title">未成交</view>
<view class="content">
<text class="strong">{{infoData.num_2}}</text>
<!-- <text>较上月</text>-->
</view>
<view class="main_section"> <view class="legeng">
<view class="tag_section"> <view class="item">
<view :class="['left',tagType=='1'?'select':'']" @click="changeTag('1')">销售分析</view> <view class="piece" style="background-color: #45c59f;"></view>
<view :class="['right',tagType=='2'?'select':'']" @click="changeTag('2')">销售排名</view> <view class="lable">已成交</view>
</view>
<!-- 销售分析--> <view class="item">
<view class="section_box_1" v-if="tagType=='1'"> <view class="piece" style="background-color:#02a7f0;"></view>
<view class="left"> <view class="lable">未成交</view>
<qiun-data-charts </view>
type="funnel" </view>
:opts="opts_2"
:chartData="chartData_2"
/>
</view>
<view class="right">
<view class="item">
<view class="title" style="color: #12E7E8;">
成交率<text>({{infoData.cj_lv}}%)</text>
</view>
<view class="title" style="color: #12E7E8;">
{{infoData.cj_count}}<text></text>
</view> </view>
</view> </view>
</view>
</view>
<view class="item"> <view class="main_section">
<view class="title" style="color: #4DA3FF;"> <view class="tag_section">
试听率<text>({{infoData.st_lv}}%)</text> <view :class="['left',tagType=='1'?'select':'']" @click="changeTag('1')">统计分析</view>
</view> <view :class="['right',tagType=='2'?'select':'']" @click="changeTag('2')">统计排名</view>
<view class="title" style="color: #4DA3FF;"> </view>
{{infoData.st_count}}<text></text>
</view> <!-- 销售分析-->
<view class="section_box_1" v-if="tagType=='1'">
<view class="left">
<qiun-data-charts
type="funnel"
:opts="opts_2"
:chartData="chartData_2"
/>
</view> </view>
<view class="right">
<view class="item">
<view class="title" style="color: #12E7E8;">
已成交<text>({{infoData.num_1_rate}}%)</text>
</view>
<view class="title" style="color: #12E7E8;">
{{infoData.num_1}}<text></text>
</view>
</view>
<view class="item"> <view class="item">
<view class="title" style="color: #FFCB31;"> <view class="title" style="color: #4DA3FF;">
跟进率<text>({{infoData.gj_count}}%)</text> 未成交<text>({{infoData.num_2_rate}}%)</text>
</view>
<view class="title" style="color: #4DA3FF;">
{{infoData.num_2}}<text></text>
</view>
</view> </view>
<view class="title" style="color: #FFCB31;">
{{infoData.gj_count}}<text></text> <view class="item">
<view class="title" style="color: #FFCB31;">
本周分配<text>({{infoData.num_3_rate}}%)</text>
</view>
<view class="title" style="color: #FFCB31;">
{{infoData.total_1}}<text></text>
</view>
</view> </view>
</view> </view>
</view> </view>
</view>
<!-- 销售排名--> <!-- 销售排名-->
<view class="section_box_2" v-else> <view class="section_box_2" v-else>
<view class="itme" v-for="(v,k) in infoData.staff_list" :key="k"> <view class="itme" v-for="(v,k) in infoData.staff_list" :key="k">
<view class="title">{{k+1}} {{v.name}}</view> <view class="title">{{k+1}} {{v.name}}</view>
<view class="money">{{v.goal}}</view> <view class="money">{{v.goal}}</view>
<view class="plan"> <view class="plan">
<fui-progress :percent="getPercent(v.wx_yj,v.goal)" height="15" radius="100" background="#e4e4e4" activeColor="#4bced0"></fui-progress> <fui-progress :percent="getPercent(v.wx_yj,v.goal)" height="15" radius="100" background="#e4e4e4" activeColor="#4bced0"></fui-progress>
</view>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<!-- 底部导航--> <!-- 底部导航-->
<AQTabber/> <AQTabber/>
</view> </view>
@ -124,7 +225,8 @@
<script> <script>
import marketApi from '@/api/market.js'; import apiRoute from '@/api/apiRoute.js';
// import marketApi from '@/api/market.js';
import AQTabber from "@/components/AQ/AQTabber.vue" import AQTabber from "@/components/AQ/AQTabber.vue"
@ -158,7 +260,7 @@ export default {
// lineHeight: 25 // // lineHeight: 25 //
}, },
title: { title: {
name: "完成度", // name: "本周分析", //
fontSize: 16, // fontSize: 16, //
color: "#666666" // color: "#666666" //
}, },
@ -222,7 +324,9 @@ export default {
type: "pyramid" type: "pyramid"
} }
} }
} },
userInfo: {},//
} }
}, },
onLoad() {}, onLoad() {},
@ -231,12 +335,32 @@ export default {
}, },
methods: { methods: {
async init(){ async init(){
this.getPerformance() await this.getUserInfo()
await this.getPerformance()
},
//
async getUserInfo(){
let res = await apiRoute.getPersonnelInfo({})
if (res.code != 1) {
uni.showToast({
title: res.msg,
icon: 'none'
})
return
}
this.userInfo = res.data
}, },
// //
async getPerformance(){ async getPerformance(){
let res= await marketApi.performance({}) let role_key_arr = this.userInfo.role_key_arr.join(',')
let params = {
personnel_id:this.userInfo.id,//id
role_key_arr: role_key_arr, // key
}
let res= await apiRoute.xs_statisticsMarketData(params)
if (res.code != 1) { if (res.code != 1) {
uni.showToast({ uni.showToast({
title: res.msg, title: res.msg,
@ -247,90 +371,144 @@ export default {
// console.log('xx',res) // console.log('xx',res)
this.infoData = res.data this.infoData = res.data
// if(this.infoData.role_type == 'market_type'){
let mb = this.infoData.wx_performance// //
let xp =this.infoData.new_performance// //
let xf =this.infoData.renew_performance// let chartData_1 = {
series: [
// 000 {
let xp_percent = mb != 0 ? parseInt((xp / mb) * 100) : 0; data: [
let xf_percent = mb != 0 ? parseInt((xf / mb) * 100) : 0; {
let wwc_percent = 100 - xp_percent - xf_percent >= 0 ? '0' : 100 - xp_percent - xf_percent// "name": "已分配",
wwc_percent = parseInt(wwc_percent) "value": this.infoData.num_1_rate,
"labelShow": false
let w_c_d = ((xp + xf) - mb) * -1 * 100 // },
w_c_d = w_c_d <= 0 ? 0 : w_c_d {
w_c_d = 100 - w_c_d "name": "未分配",
let w_c_d_rounded = Math.round(w_c_d * 10) / 10; "value": this.infoData.num_2_rate,
// console.log('zzz',[xp_percent,xf_percent,wwc_percent,w_c_d_rounded]) "labelShow": false
},
{
"name": "总人数",
// "value": this.infoData.num_3_rate,
let chartData_1 = { "labelShow": false
series: [ },
{ ]
data: [ }
{ ]
"name": "未完成", };
"value": wwc_percent, this.chartData = JSON.parse(JSON.stringify(chartData_1));
"labelShow": false this.opts.subtitle = {
}, name: `${this.infoData.num_4_rate}%`, //
{ fontSize: 18, //
"name": "续费", color: "#7cb5ec" //
"value": xf_percent, }
"labelShow": false
}, //
{ let chartDataB = {
"name": "新签", series: [
"value": xp_percent, {
"labelShow": false data: [
}, {
] "name": "本周拉新", //
} "centerText": this.infoData.total_1, //
] "value": this.infoData.num_3_rate, // 50
}; // "labelText":''
this.chartData = JSON.parse(JSON.stringify(chartData_1)); "labelShow":false,
this.opts.subtitle = { "color": "#FFCB31", //
name: `${w_c_d_rounded}%`, // },
fontSize: 18, // {
color: "#7cb5ec" // "name": "未分配",
"centerText": this.infoData.num_2,
"value": this.infoData.num_2_rate,
// "labelText":""
"labelShow":false,
"color": "#4DA3FF", //
},
{
"name": "已分配",
"centerText": this.infoData.num_1,
"value": this.infoData.num_1_rate,
// "labelText":""
"labelShow":false,
"color": "#12E7E8", //
}
]
}
]
};
this.chartData_2 = JSON.parse(JSON.stringify(chartDataB));
}else{
//
let chartData_1 = {
series: [
{
data: [
{
"name": "已成交",
"value": this.infoData.num_1_rate,
"labelShow": false
},
{
"name": "未成交",
"value": this.infoData.num_2_rate,
"labelShow": false
},
{
"name": "总人数",
"value": this.infoData.num_3_rate,
"labelShow": false
},
]
}
]
};
this.chartData = JSON.parse(JSON.stringify(chartData_1));
this.opts.subtitle = {
name: `${this.infoData.num_4_rate}%`, //
fontSize: 18, //
color: "#7cb5ec" //
}
//
let chartDataB = {
series: [
{
data: [
{
"name": "本周成交", //
"centerText": this.infoData.total_1, //
"value": this.infoData.num_3_rate, // 50
// "labelText":''
"labelShow":false,
"color": "#FFCB31", //
},
{
"name": "未成交",
"centerText": this.infoData.num_2,
"value": this.infoData.num_2_rate,
// "labelText":""
"labelShow":false,
"color": "#4DA3FF", //
},
{
"name": "已成交",
"centerText": this.infoData.num_1,
"value": this.infoData.num_1_rate,
// "labelText":""
"labelShow":false,
"color": "#12E7E8", //
}
]
}
]
};
this.chartData_2 = JSON.parse(JSON.stringify(chartDataB));
} }
//
let chartDataB = {
series: [
{
data: [
{
"name": "跟进中", //
"centerText": this.infoData.gj_count, //
"value": this.infoData.gj_lv, // 50
// "labelText":''
"labelShow":false,
"color": "#FFCB31", //
},
{
"name": "试听",
"centerText": this.infoData.st_count,
"value": this.infoData.st_lv,
// "labelText":""
"labelShow":false,
"color": "#4DA3FF", //
},
{
"name": "已成交",
"centerText": this.infoData.cj_count,
"value": this.infoData.cj_lv,
// "labelText":""
"labelShow":false,
"color": "#12E7E8", //
}
]
}
]
};
this.chartData_2 = JSON.parse(JSON.stringify(chartDataB));
}, },
@ -416,7 +594,7 @@ export default {
.main_box{ .main_box{
background: #292929; background: #292929;
min-height: 28vh; min-height: 100%;
} }
// //

310
pages/market/index/index.vue

@ -7,7 +7,9 @@
</view> </view>
<view style="height: 20rpx;"></view> <view style="height: 20rpx;"></view>
<view class="div-style">
<!-- 市场人员展示-->
<view class="div-style" v-if="infoData.role_type == 'market_type'">
<view style="height: 38vh;"> <view style="height: 38vh;">
<view style="display: flex;align-items: center;padding: 20rpx 0 0 20rpx;"> <view style="display: flex;align-items: center;padding: 20rpx 0 0 20rpx;">
<view> <view>
@ -22,65 +24,68 @@
<view style="padding: 12rpx;"> <view style="padding: 12rpx;">
<image src="@/static/images/index/huang.png" class="drop-image-x"></image> <image src="@/static/images/index/huang.png" class="drop-image-x"></image>
</view> </view>
<view class="title-x">目标</view> <view class="title-x">拉新总数</view>
</view> </view>
<view class="title-x1">{{infoData.goal}}</view> <view class="title-x1">{{infoData.month.new_total}}</view>
</view> </view>
<view> <view>
<view style="display: flex;align-items: center;"> <view style="display: flex;align-items: center;">
<view style="padding: 12rpx;"> <view style="padding: 12rpx;">
<image src="@/static/images/index/lvs.png" class="drop-image-x"></image> <image src="@/static/images/index/lvs.png" class="drop-image-x"></image>
</view> </view>
<view class="title-x">预测</view> <view class="title-x">已分配</view>
</view> </view>
<view class="title-x1">{{infoData.yc_yj}}</view> <view class="title-x1">{{infoData.month.new_total}}</view>
</view> </view>
<view> <view>
<view style="display: flex;align-items: center;"> <view style="display: flex;align-items: center;">
<view style="padding: 12rpx;"> <view style="padding: 12rpx;">
<image src="@/static/images/index/shenlan.png" class="drop-image-x"></image> <image src="@/static/images/index/shenlan.png" class="drop-image-x"></image>
</view> </view>
<view class="title-x">成交</view> <view class="title-x">昨日拉新</view>
</view>
<view class="title-x1">{{infoData.month.yesterday_new}}</view>
</view>
<view>
<view style="display: flex;align-items: center;">
<view style="padding: 12rpx;">
<image src="@/static/images/index/lan.png" class="drop-image-x"></image>
</view>
<view class="title-x">今日拉新</view>
</view> </view>
<view class="title-x1">{{infoData.cj_yj}}</view> <view class="title-x1">{{infoData.month.today_new}}</view>
</view> </view>
<!-- <view>-->
<!-- <view style="display: flex;align-items: center;">-->
<!-- <view style="padding: 12rpx;">-->
<!-- <image src="@/static/images/index/lan.png" class="drop-image-x"></image>-->
<!-- </view>-->
<!-- <view class="title-x">定金</view>-->
<!-- </view>-->
<!-- <view class="title-x1">50.000</view>-->
<!-- </view>-->
</view> </view>
<!-- 目标--> <!-- 统计图-->
<view class="right1"> <view class="right1">
<view style="text-align: center;">{{infoData.date}}</view> <view style="text-align: center;">{{infoData.date_range}}</view>
<view class="statistics_box"> <view class="statistics_box">
<!--目标-->
<view class="item"> <view class="item">
<view class="box"> <view class="box">
<view class="progress-bar" :style="{ height: `${infoData.goal_percent}%`, background: '#f59a23' }"></view> <view class="progress-bar" :style="{ height: `${infoData.month.yesterday_new_rate}%`, background: '#f59a23' }"></view>
<view class="ratio" :style="{ color: infoData.goal_percent <= 0 ? '#333333' : '#fff' }">{{ infoData.goal_percent }}%</view> <view class="ratio" :style="{ color: infoData.month.yesterday_new_rate <= 0 ? '#333333' : '#000' }">{{ infoData.month.yesterday_new_rate }}%</view>
</view> </view>
<view class="title">目标</view> <view class="title">昨日</view>
</view> </view>
<!--预测-->
<view class="item"> <view class="item">
<view class="box"> <view class="box">
<view class="progress-bar" :style="{ height: `${infoData.yc_yj_percent}%`, background: '#039f64' }"></view> <view class="progress-bar" :style="{ height: `${infoData.month.assigned_sales_rate}%`, background: '#039f64' }"></view>
<view class="ratio" :style="{ color: infoData.yc_yj_percent <= 0 ? '#333333' : '#fff' }">{{ infoData.yc_yj_percent }}%</view> <view class="ratio" :style="{ color: infoData.month.assigned_sales_rate <= 0 ? '#333333' : '#000' }">{{ infoData.month.assigned_sales_rate }}%</view>
</view> </view>
<view class="title">预测</view> <view class="title">分配</view>
</view> </view>
<!--成交-->
<view class="item"> <view class="item">
<view class="box"> <view class="box">
<view class="progress-bar" :style="{ height: `${infoData.cj_yj_percent}%`, background: '#4066f2' }"></view> <view class="progress-bar" :style="{ height: `${infoData.month.today_new_rate}%`, background: '#4066f2' }"></view>
<view class="ratio" :style="{ color: infoData.cj_yj_percent <= 0 ? '#333333' : '#fff' }">{{ infoData.cj_yj_percent }}%</view> <view class="ratio" :style="{ color: infoData.month.today_new_rate <= 0 ? '#333333' : '#000' }">{{ infoData.month.today_new_rate }}%</view>
</view> </view>
<view class="title">成交</view> <view class="title">今日</view>
</view> </view>
</view> </view>
@ -88,13 +93,15 @@
</view> </view>
</view> </view>
<view style="width: 90%;background: #EFF3F8;height: 4rpx;margin: auto;"></view> <view style="width: 90%;background: #EFF3F8;height: 4rpx;margin: auto;"></view>
<view style="height: 38vh;"> <view style="height: 38vh;">
<view style="display: flex;align-items: center;padding: 20rpx 0 0 20rpx;"> <view style="display: flex;align-items: center;padding: 20rpx 0 0 20rpx;">
<view> <view>
<image src="@/static/images/index/danlv.png" class="drop-image"></image> <image src="@/static/images/index/danlv.png" class="drop-image"></image>
</view> </view>
<view class="title">月业绩</view> <view class="title">月业绩</view>
</view> </view>
<view class="coach-message"> <view class="coach-message">
@ -105,73 +112,224 @@
<view style="padding: 12rpx;"> <view style="padding: 12rpx;">
<image src="@/static/images/index/danlv.png" class="drop-image-x"></image> <image src="@/static/images/index/danlv.png" class="drop-image-x"></image>
</view> </view>
<view class="title-x">待联系</view> <view class="title-x">拉新总数</view>
</view> </view>
<view class="title-x1">50</view> <view class="title-x1">{{infoData.last_month.new_total}}</view>
</view> </view>
<view style="width: 48%;"> <view style="width: 48%;">
<view style="display: flex;align-items: center;"> <view style="display: flex;align-items: center;">
<view style="padding: 12rpx;"> <view style="padding: 12rpx;">
<image src="@/static/images/index/danlv.png" class="drop-image-x"></image> <image src="@/static/images/index/danlv.png" class="drop-image-x"></image>
</view> </view>
<view class="title-x">待领取</view> <view class="title-x">已分配</view>
</view> </view>
<view class="title-x1">{{infoData.dlq}}</view> <view class="title-x1">{{infoData.last_month.assigned_sales}}</view>
</view> </view>
</view> </view>
<view style="padding: 20rpx 0;display: flex;justify-content: space-between;"> <view style="padding: 20rpx 0;display: flex;justify-content: space-between;">
<view style="width: 48%;"> <view style="width: 48%;">
<view style="display: flex;align-items: center;"> <view style="display: flex;align-items: center;">
<view style="padding: 12rpx;"> <view style="padding: 12rpx;">
<image src="@/static/images/index/danlv.png" class="drop-image-x"></image> <image src="@/static/images/index/danlv.png" class="drop-image-x"></image>
</view> </view>
<view class="title-x">待释放</view> <view class="title-x">昨日拉新</view>
</view> </view>
<view class="title-x1">{{infoData.dsf}}</view> <view class="title-x1">{{infoData.last_month.yesterday_new}}</view>
</view> </view>
<!-- <view style="width: 48%;">-->
<!-- <view style="display: flex;align-items: center;">-->
<!-- <view style="padding: 12rpx;">-->
<!-- <image src="@/static/images/index/danlv.png" class="drop-image-x"></image>-->
<!-- </view>-->
<!-- <view class="title-x">合同审核中</view>-->
<!-- </view>-->
<!-- <view class="title-x1">50</view>-->
<!-- </view>-->
<view style="width: 48%;"> <view style="width: 48%;">
<view style="display: flex;align-items: center;"> <view style="display: flex;align-items: center;">
<view style="padding: 12rpx;"> <view style="padding: 12rpx;">
<image src="@/static/images/index/danlv.png" class="drop-image-x"></image> <image src="@/static/images/index/danlv.png" class="drop-image-x"></image>
</view> </view>
<view class="title-x">待协作</view> <view class="title-x">今日拉新</view>
</view> </view>
<view class="title-x1">{{infoData.dxz}}</view> <view class="title-x1">{{infoData.last_month.today_new}}</view>
</view> </view>
</view> </view>
<view style="padding: 20rpx 0;display: flex;justify-content: space-between;">
<view style="width: 48%;">
<view style="display: flex;align-items: center;">
<view style="padding: 12rpx;">
<image src="@/static/images/index/danlv.png" class="drop-image-x"></image>
</view>
<view class="title-x">消息</view>
</view>
<view class="title-x1">{{infoData.xx}}</view>
</view>
</view>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<!-- 销售人员展示-->
<view class="div-style" v-if="infoData.role_type == 'sale_type'">
<view style="height: 38vh;">
<view style="display: flex;align-items: center;padding: 20rpx 0 0 20rpx;">
<view>
<image src="@/static/images/index/danlan.png" class="drop-image"></image>
</view>
<view class="title">本月业绩</view>
</view>
<view class="coach-message">
<view class="left1">
<view style="padding: 20rpx 0;">
<view style="display: flex;align-items: center;">
<view style="padding: 12rpx;">
<image src="@/static/images/index/huang.png" class="drop-image-x"></image>
</view>
<view class="title-x">已分配</view>
</view>
<view class="title-x1">{{infoData.month.assigned_clients}}</view>
</view>
<view>
<view style="display: flex;align-items: center;">
<view style="padding: 12rpx;">
<image src="@/static/images/index/lvs.png" class="drop-image-x"></image>
</view>
<view class="title-x">已沟通</view>
</view>
<view class="title-x1">{{infoData.month.contacted_clients}}</view>
</view>
<view>
<view style="display: flex;align-items: center;">
<view style="padding: 12rpx;">
<image src="@/static/images/index/shenlan.png" class="drop-image-x"></image>
</view>
<view class="title-x">未成交</view>
</view>
<view class="title-x1">{{infoData.month.unconverted_clients}}</view>
</view>
<view>
<view style="display: flex;align-items: center;">
<view style="padding: 12rpx;">
<image src="@/static/images/index/lan.png" class="drop-image-x"></image>
</view>
<view class="title-x">待续费</view>
</view>
<view class="title-x1">{{infoData.month.renewal_clients}}</view>
</view>
<view>
<view style="display: flex;align-items: center;">
<view style="padding: 12rpx;">
<image src="@/static/images/index/lan.png" class="drop-image-x"></image>
</view>
<view class="title-x">已关单</view>
</view>
<view class="title-x1">{{infoData.month.closed_clients}}</view>
</view>
</view>
<!--统计图-->
<view class="right1">
<view style="text-align: center;">{{infoData.date}}</view>
<view class="statistics_box">
<!--未成交-->
<view class="item">
<view class="box">
<view class="progress-bar" :style="{ height: `${infoData.month.unconverted_rate}%`, background: '#f59a23' }"></view>
<view class="ratio" :style="{ color: infoData.month.unconverted_rate <= 0 ? '#333333' : '#fff' }">{{ infoData.month.unconverted_rate }}%</view>
</view>
<view class="title">未成交</view>
</view>
<!--待续费-->
<view class="item">
<view class="box">
<view class="progress-bar" :style="{ height: `${infoData.month.renewal_rate}%`, background: '#039f64' }"></view>
<view class="ratio" :style="{ color: infoData.month.renewal_rate <= 0 ? '#333333' : '#fff' }">{{ infoData.month.renewal_rate }}%</view>
</view>
<view class="title">待续费</view>
</view>
<!--已关单-->
<view class="item">
<view class="box">
<view class="progress-bar" :style="{ height: `${infoData.month.closed_rate}%`, background: '#4066f2' }"></view>
<view class="ratio" :style="{ color: infoData.month.closed_rate <= 0 ? '#333333' : '#fff' }">{{ infoData.month.closed_rate }}%</view>
</view>
<view class="title">已关单</view>
</view>
</view>
</view>
</view>
</view>
<view style="width: 90%;background: #EFF3F8;height: 4rpx;margin: auto;"></view>
<view style="height: 38vh;">
<view style="display: flex;align-items: center;padding: 20rpx 0 0 20rpx;">
<view>
<image src="@/static/images/index/danlv.png" class="drop-image"></image>
</view>
<view class="title">上月业绩</view>
</view>
<view class="coach-message">
<view class="this_month">
<view style="padding: 20rpx 0;display: flex;justify-content: space-between;">
<view style="width: 48%;">
<view style="display: flex;align-items: center;">
<view style="padding: 12rpx;">
<image src="@/static/images/index/danlv.png" class="drop-image-x"></image>
</view>
<view class="title-x">已分配</view>
</view>
<view class="title-x1">{{infoData.last_month.assigned_clients}}</view>
</view>
<view style="width: 48%;">
<view style="display: flex;align-items: center;">
<view style="padding: 12rpx;">
<image src="@/static/images/index/danlv.png" class="drop-image-x"></image>
</view>
<view class="title-x">已沟通</view>
</view>
<view class="title-x1">{{infoData.last_month.contacted_clients}}</view>
</view>
</view>
<view style="padding: 20rpx 0;display: flex;justify-content: space-between;">
<view style="width: 48%;">
<view style="display: flex;align-items: center;">
<view style="padding: 12rpx;">
<image src="@/static/images/index/danlv.png" class="drop-image-x"></image>
</view>
<view class="title-x">未成交</view>
</view>
<view class="title-x1">{{infoData.last_month.unconverted_clients}}</view>
</view>
<view style="width: 48%;">
<view style="display: flex;align-items: center;">
<view style="padding: 12rpx;">
<image src="@/static/images/index/danlv.png" class="drop-image-x"></image>
</view>
<view class="title-x">待续费</view>
</view>
<view class="title-x1">{{infoData.last_month.renewal_clients}}</view>
</view>
</view>
<view style="padding: 20rpx 0;display: flex;justify-content: space-between;">
<view style="width: 48%;">
<view style="display: flex;align-items: center;">
<view style="padding: 12rpx;">
<image src="@/static/images/index/danlv.png" class="drop-image-x"></image>
</view>
<view class="title-x">已关单</view>
</view>
<view class="title-x1">{{infoData.last_month.closed_clients}}</view>
</view>
</view>
</view>
</view>
</view>
</view>
<AQTabber /> <AQTabber />
</view> </view>
</template> </template>
<script> <script>
import marketApi from '@/api/market.js'; import apiRoute from '@/api/apiRoute.js';
import AQTabber from "@/components/AQ/AQTabber.vue" import AQTabber from "@/components/AQ/AQTabber.vue"
@ -182,6 +340,8 @@ export default {
data() { data() {
return { return {
infoData:{},// infoData:{},//
userInfo: {},//
} }
}, },
onShow() { onShow() {
@ -189,12 +349,32 @@ export default {
}, },
methods: { methods: {
async init() { async init() {
this.getXsIndex() await this.getUserInfo()
await this.getXsIndex()
},
//
async getUserInfo(){
let res = await apiRoute.getPersonnelInfo({})
if (res.code != 1) {
uni.showToast({
title: res.msg,
icon: 'none'
})
return
}
this.userInfo = res.data
}, },
// //
async getXsIndex() { async getXsIndex() {
let res = await marketApi.xsIndex({}) let role_key_arr = this.userInfo.role_key_arr.join(',')
let params = {
personnel_id:this.userInfo.id,//id
role_key_arr: role_key_arr, // key
}
let res = await apiRoute.xs_statisticsMarketHome(params)
if (res.code != 1) { if (res.code != 1) {
uni.showToast({ uni.showToast({
title: res.msg, title: res.msg,
@ -203,7 +383,7 @@ export default {
return return
} }
this.infoData = res.data this.infoData = res.data
console.log('统计',this.infoData)
}, },
} }
} }

52
pages/market/my/index.vue

@ -34,32 +34,32 @@
</view> </view>
<!--统计信息--> <!--统计信息-->
<view class="count_section"> <!-- <view class="count_section">-->
<view class="main"> <!-- <view class="main">-->
<view class="course_box"> <!-- <view class="course_box">-->
<view class="top"> <!-- <view class="top">-->
<view class="item"> <!-- <view class="item">-->
<view class="num">{{userInfo.yjds}}</view> <!-- <view class="num">{{userInfo.yjds}}</view>-->
<view class="intro">业绩单数/</view> <!-- <view class="intro">业绩单数/</view>-->
</view> <!-- </view>-->
<view class="item"> <!-- <view class="item">-->
<view class="num">{{userInfo.yqds}}</view> <!-- <view class="num">{{userInfo.yqds}}</view>-->
<view class="intro">已签单数/</view> <!-- <view class="intro">已签单数/</view>-->
</view> <!-- </view>-->
<view class="item"> <!-- <view class="item">-->
<view class="num">1234</view> <!-- <view class="num">1234</view>-->
<view class="intro">新课签到数/</view> <!-- <view class="intro">新课签到数/</view>-->
</view> <!-- </view>-->
</view> <!-- </view>-->
<view class="bottom"> <!-- <view class="bottom">-->
较上月 <!-- 较上月-->
<text class="reduce">-5</text> <!-- <text class="reduce">-5</text>-->
</view> <!-- </view>-->
</view> <!-- </view>-->
</view> <!-- </view>-->
<view class="bg_box bg_top"></view> <!-- <view class="bg_box bg_top"></view>-->
<view class="bg_box bg_bottom"></view> <!-- <view class="bg_box bg_bottom"></view>-->
</view> <!-- </view>-->
</view> </view>

232
pages/student/login/forgot.vue

@ -1,55 +1,99 @@
<template> <template>
<view> <view>
<view class="title"> <view class="title">
<view :class="{'green-text': tset_style === 1}">1.验证手机号码</view> <view :class="{'green-text': titleIndex === 1}" @click="changeTitle(1)">1.验证手机号码</view>
<view :class="{'green-text': tset_style === 2}">2.设置新密码</view> <view :class="{'green-text': titleIndex === 2}" @click="changeTitle(2)">2.设置新密码</view>
</view> </view>
<view :style="{'background-color':'#fff','width':'100%','height':'100vh' }"> <view :style="{'background-color':'#fff','width':'100%','height':'100vh' }">
<view style="width: 95%;height: 30rpx;"></view> <view style="width: 95%;height: 30rpx;"></view>
<view v-if="tset_style == 1"> <view v-if="titleIndex == 1">
<view style="width: 95%;margin:30rpx auto;"> <view style="width: 95%;margin:30rpx auto;">
<fui-input borderTop placeholder="请输入手机号" v-model="user" @input="input" <fui-input borderTop placeholder="请输入手机号" v-model="formData.phone" @input="input"
backgroundColor="#f2f2f2"></fui-input> backgroundColor="#f2f2f2"></fui-input>
</view> </view>
<view style="width: 95%;margin: auto;"> <view style="width: 95%;margin: auto;">
<fui-input borderTop :padding="['20rpx','32rpx']" v-model="code" placeholder="请输入短信验证码" @input="input" <fui-input borderTop :padding="['20rpx','32rpx']" v-model="formData.code" placeholder="请输入短信验证码" @input="input"
backgroundColor="#f2f2f2"> backgroundColor="#f2f2f2">
<fui-countdown-verify ref="fui_cdv" @send="sendCode"></fui-countdown-verify> <fui-countdown-verify ref="fui_cdv" @send="sendCode"></fui-countdown-verify>
</fui-input> </fui-input>
</view> </view>
</view> <view style="width: 95%;margin: auto; margin-top: 30rpx;" @click="openPicker()">
<view v-if="tset_style == 2"> <fui-form-item label="" arrow highlight background="#f2f2f2">
<view style="width: 95%;margin:30rpx auto;"> <input class="fui-page__input" v-model="formData.user_type_name" placeholder="请选择用户类型" placeholder-style="color:#ccc;" disabled/>
<fui-input borderTop placeholder="请设置6-20位新的登录密码" v-model="user" @input="input" </fui-form-item>
backgroundColor="#f2f2f2"></fui-input> </view>
</view> </view>
<view style="width: 95%;margin: auto;">
<fui-input borderTop :padding="['20rpx','32rpx']" v-model="code" placeholder="请再次输入新的登录密码" @input="input" <view v-if="titleIndex == 2">
backgroundColor="#f2f2f2"> <view style="width: 95%;margin:30rpx auto;">
</fui-input> <fui-input borderTop placeholder="请设置6-20位新的登录密码" v-model="formData.password" @input="input"
</view> backgroundColor="#f2f2f2"></fui-input>
</view> </view>
<view style="width: 95%;margin:60rpx auto;"> <view style="width: 95%;margin: auto;">
<fui-button background="#00be8c" radius="5rpx" @click="nextStep" v-if="tset_style == 1">下一步</fui-button> <fui-input borderTop :padding="['20rpx','32rpx']" v-model="formData.password_2" placeholder="请再次输入新的登录密码" @input="input"
<fui-button background="#00be8c" radius="5rpx" @click="submit" v-if="tset_style == 2">提交</fui-button> backgroundColor="#f2f2f2">
</view> </fui-input>
</view>
</view>
<view style="width: 95%;margin:60rpx auto;">
<fui-button background="#00be8c" radius="5rpx" @click="nextStep" v-if="titleIndex == 1">下一步</fui-button>
<fui-button background="#00be8c" radius="5rpx" @click="submit" v-if="titleIndex == 2">提交</fui-button>
</view>
</view> </view>
<!-- 选择器 -->
<fui-picker
:linkage="true"
:options="picker_options"
:layer="1"
:show="picker_show"
@change="changeCicker"
@cancel="cancelCicker">
</fui-picker>
</view> </view>
</template> </template>
<script> <script>
import apiRoute from '@/api/apiRoute.js';
export default { export default {
data() { data() {
return { return {
code: '', //
user: '', picker_show:false,//
tset_style: 1, picker_options:[
} {
}, text:'学员',
onLoad() { value:'customer',
},
{
text:'员工',
value:'personnel',
}
],//
//-
formData: {
phone: '',//
code: '',//
code_type: 'editPassword',//(/ )|=editPassword
password: '',//
password_2: '',//
user_type: '',//|customer=|personnel=(/)
user_type_name: '',//|customer=|personnel=(/)
},
titleIndex:1,//|1=|2=
}
}, },
onLoad() {},
methods: { methods: {
//
sendCode() { sendCode() {
// //
setTimeout(() => { setTimeout(() => {
@ -59,9 +103,119 @@
this.$refs.fui_cdv && this.$refs.fui_cdv.success() this.$refs.fui_cdv && this.$refs.fui_cdv.success()
}, 800) }, 800)
}, },
nextStep(){
this.tset_style = 2 //--
} changeCicker(e){
this.formData.user_type = e.value
this.formData.user_type_name = e.text
this.cancelCicker()
},
//
openPicker(){
this.picker_show = true
},
//
cancelCicker(){
this.picker_show = false
},
//
async nextStep(){
//
if(!this.formData.code){
uni.showToast({
title: '请输入短信验证码',
icon: 'none'
})
return
}
if(!this.formData.phone){
uni.showToast({
title: '请输入手机号',
icon: 'none'
})
return
}
if(!this.formData.user_type){
uni.showToast({
title: '请选择用户类型',
icon: 'none'
})
return
}
this.titleIndex = 2
},
//
async validateForm(formData) {
//
if(!formData.phone){
uni.showToast({
title: `请填写手机号`,
icon: 'none'
});
this.changeTitle(1)
return false
}
if(!formData.user_type){
uni.showToast({
title: `请选择用户类型`,
icon: 'none'
});
this.changeTitle(1)
return false
}
if(!formData.code){
uni.showToast({
title: `请填写短信验证码`,
icon: 'none'
});
this.changeTitle(1)
return false
}
if(!formData.password || formData.password != formData.password_2){
uni.showToast({
title: `两次密码不一致`,
icon: 'none'
});
this.changeTitle(2)
return false
}
return true;
},
//
async submit(){
let params = {...this.formData}
let res_validateForm = await this.validateForm(params);//
if(!res_validateForm){
return
}
let res = await apiRoute.common_forgetPassword(params);//
if(res.code != 1){
uni.showToast({
title: res.msg,
icon: 'none'
})
return
}
uni.showToast({
title: res.msg,
icon: 'success'
})
//1s
setTimeout(() => {
//-
uni.navigateTo({
url: `/pages/student/login/login`
})
}, 1000)
},
//
changeTitle(index){
this.titleIndex = index
},
} }
} }
</script> </script>

Loading…
Cancel
Save