Browse Source

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

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

16
api/apiRoute.js

@ -45,6 +45,13 @@ export default {
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;
})
},
//销售端-资源共享-分配员工
xs_resourceSharingAssign(data = {}) {
let url = '/resourceSharing/assign'
return http.post(url, data).then(res => {
return res;
})
},

113
pages/market/clue/index.vue

@ -74,14 +74,14 @@
<view>
<image src="@/static/images/index/myk.png" class="card-image"></image>
</view>
<view class="card-text">{{v.student_name}}</view>
<view class="card-label">{{v.is_status == 1 ? '试听' : '成交'}}</view>
<view class="card-text">{{v.customerResource.name}}</view>
<!-- <view class="card-label">{{v.is_status == 1 ? '试听' : '成交'}}</view>-->
</view>
<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 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="display: flex;align-items: center;">
<view style="padding: 12rpx;">
@ -101,7 +101,7 @@
class="drop-image-x"
></image>
</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>
@ -109,12 +109,14 @@
<view style="width: 15%;">
<!-- <image src="@/static/images/index/message.png" class="image"></image>-->
</view>
<view style="width: 15%;" @click="getSales(v)">
<view style="width: 15%;" @click="openAssign(v)">
<view class="ling"></view>
</view>
</view>
</scroll-view>
<fui-select :show="select_show" :options="select_options" title="请选择员工" @confirm="getSales" @close="closeAssign"></fui-select>
<view style="height: 170rpx;"></view>
<AQTabber/>
</view>
@ -158,7 +160,6 @@ export default {
// name: ''
// }
],
select_type: 1,//|1,2,3,4
segmented_type: 1,//Tab|1=,2=
userInfo:{},//
@ -178,10 +179,23 @@ export default {
page:1,//
limit:10,//
total:10,//
shared_by:'0',//ID|0=
shared_at:[],//|[(Y-m-d),(Y-m-d)]
},
//
tableList_2:[],//
//select
select_show:false,//
select_item:{},//
select_options:[
// {
// text: '',
// value: '1',
// }
],//
}
},
onLoad(options) {},
@ -207,7 +221,11 @@ export default {
//
async init() {
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: '资源分配'
}
]
//,()
await this.getPersonnelAll();
}else{
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
}
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)
this.filteredData_1.total = res.data.list.total
this.filteredData_1.total = res.data.total
this.filteredData_1.page++
@ -340,7 +385,7 @@ export default {
this.tableList_2 = []
}
let res = await marketApi.myClient(data)
let res = await apiRoute.xs_resourceSharingIndex(data)
this.loading = false
this.isReachedBottom = false;
if (res.code != 1){
@ -351,19 +396,19 @@ export default {
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)
this.filteredData_2.total = res.data.list.total
this.filteredData_2.total = res.data.total
this.filteredData_2.page++
},
//tag
async segmented(index) {
this.select_type = 1
this.segmented_type = index.id//1=,2=
async segmented(param) {
this.segmented_type = param.id//1=,2=
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 = {
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){
uni.showToast({
title: res.msg,
@ -445,9 +506,9 @@ export default {
//1s
setTimeout(() => {
let param = {
index:{
id:2//2=
}
id: 2,
index: 1,
name: "资源分配",
}
this.segmented(param)
}, 1000)
@ -498,7 +559,7 @@ export default {
height: 60rpx;
}
.card-text{
font-size: 46rpx;
font-size: 32rpx;
padding-left: 16rpx;
color: #fff;
}

Loading…
Cancel
Save