Browse Source

feat(market): 实现资源分配功能

- 新增公共端获取全部员工列表接口
- 新增销售端资源共享分配员工接口
- 修改客户列表展示逻辑
- 添加员工选择器组件
- 实现资源分配操作流程
master
liutong 11 months ago
parent
commit
785c27f9ad
  1. 16
      api/apiRoute.js
  2. 115
      pages/market/clue/index.vue

16
api/apiRoute.js

@ -45,6 +45,13 @@ export default {
return res; return res;
}) })
}, },
//公共端-获取全部员工列表
common_getPersonnelAll(data = {}) {
let url = '/personnel/getPersonnelAll'
return http.get(url, data).then(res => {
return res;
})
},
@ -146,6 +153,15 @@ export default {
return res; return res;
}) })
}, },
//销售端-资源共享-分配员工
xs_resourceSharingAssign(data = {}) {
let url = '/resourceSharing/assign'
return http.post(url, data).then(res => {
return res;
})
},

115
pages/market/clue/index.vue

@ -74,14 +74,14 @@
<view> <view>
<image src="@/static/images/index/myk.png" class="card-image"></image> <image src="@/static/images/index/myk.png" class="card-image"></image>
</view> </view>
<view class="card-text">{{v.student_name}}</view> <view class="card-text">{{v.customerResource.name}}</view>
<view class="card-label">{{v.is_status == 1 ? '试听' : '成交'}}</view> <!-- <view class="card-label">{{v.is_status == 1 ? '试听' : '成交'}}</view>-->
</view> </view>
<view class="card-con"> <view class="card-con">
首联系{{v.contact_name}} <span class="card-con-span">{{v.decision_maker}}</span> 决策{{v.customerResource.name}} <span class="card-con-span">{{v.customerResource.decision_maker}}</span>
</view> </view>
<view class="card-date"> <view class="card-date">
<view class="card-con">{{ $util.formatToDateTime((v.follow && v.follow.follow_up_time || ''),'m-d H:i') }} 跟进</view> <view class="card-con">{{ $util.formatToDateTime((v.shared_at || ''),'m-d H:i') }} 跟进</view>
<view style="margin-left: 30rpx;"> <view style="margin-left: 30rpx;">
<view style="display: flex;align-items: center;"> <view style="display: flex;align-items: center;">
<view style="padding: 12rpx;"> <view style="padding: 12rpx;">
@ -101,7 +101,7 @@
class="drop-image-x" class="drop-image-x"
></image> ></image>
</view> </view>
<view class="title-x">意向{{ v.follow && v.follow.initial_customer_intent || '' }}</view> <view class="title-x">意向{{ v.customerResource && v.customerResource.initial_intent_name || '' }}</view>
</view> </view>
</view> </view>
</view> </view>
@ -109,12 +109,14 @@
<view style="width: 15%;"> <view style="width: 15%;">
<!-- <image src="@/static/images/index/message.png" class="image"></image>--> <!-- <image src="@/static/images/index/message.png" class="image"></image>-->
</view> </view>
<view style="width: 15%;" @click="getSales(v)"> <view style="width: 15%;" @click="openAssign(v)">
<view class="ling"></view> <view class="ling"></view>
</view> </view>
</view> </view>
</scroll-view> </scroll-view>
<fui-select :show="select_show" :options="select_options" title="请选择员工" @confirm="getSales" @close="closeAssign"></fui-select>
<view style="height: 170rpx;"></view> <view style="height: 170rpx;"></view>
<AQTabber/> <AQTabber/>
</view> </view>
@ -158,7 +160,6 @@ export default {
// name: '' // name: ''
// } // }
], ],
select_type: 1,//|1,2,3,4
segmented_type: 1,//Tab|1=,2= segmented_type: 1,//Tab|1=,2=
userInfo:{},// userInfo:{},//
@ -178,10 +179,23 @@ export default {
page:1,// page:1,//
limit:10,// limit:10,//
total:10,// total:10,//
shared_by:'0',//ID|0=
shared_at:[],//|[(Y-m-d),(Y-m-d)]
}, },
// //
tableList_2:[],// tableList_2:[],//
//select
select_show:false,//
select_item:{},//
select_options:[
// {
// text: '',
// value: '1',
// }
],//
} }
}, },
onLoad(options) {}, onLoad(options) {},
@ -205,9 +219,13 @@ export default {
}, },
methods: { methods: {
// //
async init(){ async init() {
await this.getUserInfo(); await this.getUserInfo();
// await this.getList(); if (this.segmented_type == 1) {
await this.getList_1();
} else {
await this.getList_2();
}
}, },
// //
@ -235,6 +253,8 @@ export default {
name: '资源分配' name: '资源分配'
} }
] ]
//,()
await this.getPersonnelAll();
}else{ }else{
this.values = [ this.values = [
{ {
@ -243,7 +263,32 @@ export default {
}, },
] ]
} }
console.log('用户',this.userInfo) },
//
async getPersonnelAll(){
let res = await apiRoute.common_getPersonnelAll({
personnel_id:this.userInfo.id,//id
account_type:'market',//|teacher=,market=
})
if (res.code != 1) {
uni.showToast({
title: res.msg,
icon: 'none'
})
return
}
let arr = []
res.data.forEach((v, k) => {
arr.push({
text: v.name,
value: v.id,
})
})
this.select_options = arr
console.log('员工',this.select_options)
}, },
//- //-
@ -294,10 +339,10 @@ export default {
return return
} }
this.tableList_1 = this.tableList_1.concat(res.data.list.data); // 使 concat this.tableList_1 = this.tableList_1.concat(res.data.data); // 使 concat
console.log('列表',this.tableList_1) console.log('列表',this.tableList_1)
this.filteredData_1.total = res.data.list.total this.filteredData_1.total = res.data.total
this.filteredData_1.page++ this.filteredData_1.page++
@ -340,7 +385,7 @@ export default {
this.tableList_2 = [] this.tableList_2 = []
} }
let res = await marketApi.myClient(data) let res = await apiRoute.xs_resourceSharingIndex(data)
this.loading = false this.loading = false
this.isReachedBottom = false; this.isReachedBottom = false;
if (res.code != 1){ if (res.code != 1){
@ -351,19 +396,19 @@ export default {
return return
} }
this.tableList_2 = this.tableList_2.concat(res.data.list.data); // 使 concat console.log(123123,res)
this.tableList_2 = this.tableList_2.concat(res.data.data); // 使 concat
console.log('列表',this.tableList_2) console.log('列表',this.tableList_2)
this.filteredData_2.total = res.data.list.total this.filteredData_2.total = res.data.total
this.filteredData_2.page++ this.filteredData_2.page++
}, },
//tag //tag
async segmented(index) { async segmented(param) {
this.select_type = 1 this.segmented_type = param.id//1=,2=
this.segmented_type = index.id//1=,2=
if(this.segmented_type == 1){ if(this.segmented_type == 1){
// //
// //
@ -425,12 +470,28 @@ export default {
}) })
}, },
//- //-
async getSales(item){ //
openAssign(item) {
this.select_item = item
this.select_show = true
},
//
closeAssign(item) {
this.select_item = {}
this.select_show = false
this.select_options = this.select_options.map(v => ({ ...v, checked: false }));
},
//-
async getSales(e){
let select_item = {...this.select_item}
console.log('选中',e,select_item)
this.closeAssign()//
let param = { let param = {
sales_id:item.id resource_sharing_id: select_item.id,//id
shared_by: e.options.value,//id
} }
let res = await marketApi.getSales(param) let res = await apiRoute.xs_resourceSharingAssign(param)
if(res.code != 1){ if(res.code != 1){
uni.showToast({ uni.showToast({
title: res.msg, title: res.msg,
@ -445,9 +506,9 @@ export default {
//1s //1s
setTimeout(() => { setTimeout(() => {
let param = { let param = {
index:{ id: 2,
id:2//2= index: 1,
} name: "资源分配",
} }
this.segmented(param) this.segmented(param)
}, 1000) }, 1000)
@ -498,7 +559,7 @@ export default {
height: 60rpx; height: 60rpx;
} }
.card-text{ .card-text{
font-size: 46rpx; font-size: 32rpx;
padding-left: 16rpx; padding-left: 16rpx;
color: #fff; color: #fff;
} }

Loading…
Cancel
Save