Browse Source

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

- 新增公共端获取全部员工列表接口
- 新增销售端资源共享分配员工接口
- 修改客户列表展示逻辑
- 添加员工选择器组件
- 实现资源分配操作流程
master
liutong 1 year 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; 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;
})
},

113
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) {},
@ -207,7 +221,11 @@ export default {
//初始化 //初始化
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