hls_crm/pages/index/groupCompany/groupCompany.vue

666 lines
15 KiB
Vue

<template>
<view class="group_company">
<view class="group_head">
<view class="client">
{{(info.name) ? info.name : '--'}}
</view>
<view class="nickname" v-if="info.contacts">
{{(info.contacts) ? info.contacts.name : '--'}}<text>
|</text>{{(info.contacts) ? info.contacts.mobile : '--'}}
</view>
<view class="state" v-if="info.follow">
{{info.follow ? info.follow : '--'}}<text style="padding: 0 30rpx;"> |</text>
<u-rate :count="5" v-model="info.level" disabled active-color="#FFD049" inactive-color="#b2b2b2" :size="34" :gutter="10"></u-rate>
</view>
<view class="time" v-if="info.next_time">
下次跟进时间:{{info.next_time ? info.next_time : '--'}}
</view>
<view class="site" v-if="info.address">
{{(info.address) ? info.address : '--'}}
</view>
<view class="roll">
<scroll-view scroll-x="true" class="scrollView" lower-threshold="50" enable-flex>
<view class="scrolllist">
<view class="scrollView_item" @click="toTeam">
<view class="scroll_top">
{{info.teamCount?info.teamCount:0}}
</view>
<view class="scroll_foot">
团队
</view>
</view>
<view class="scrollView_item" @click="toBusiness">
<view class="scroll_top">
{{info.bussinessCount?info.bussinessCount:0}}
</view>
<view class="scroll_foot">
商机
</view>
</view>
<view class="scrollView_item" @click="contact(info.id)">
<view class="scroll_top">
{{info.contactsCount?info.contactsCount:0}}
</view>
<view class="scroll_foot">
联系人
</view>
</view>
<view class="scrollView_item" @click="subord(info.id)">
<view class="scroll_top">
{{info.companyCount?info.companyCount:0}}
</view>
<view class="scroll_foot">
子公司
</view>
</view>
<view class="scrollView_item" @click="signList(info.id)">
<view class="scroll_top">
{{info.signCount?info.signCount:0}}
</view>
<view class="scroll_foot">
签到记录
</view>
</view>
<view class="scrollView_item" @click="Contract(info.id)">
<view class="scroll_top">
{{info.contractCount?info.contractCount:0}}
</view>
<view class="scroll_foot">
合同
</view>
</view>
<view class="scrollView_item" @click="cost(info.id)">
<view class="scroll_top">
{{info.consumeCount?info.consumeCount:0}}
</view>
<view class="scroll_foot">
费用
</view>
</view>
<view class="scrollView_item" @click="payment(info.id)">
<view class="scroll_top">
{{info.receivalbleCount?info.receivalbleCount:0}}
</view>
<view class="scroll_foot">
回款记录
</view>
</view>
<view class="scrollView_item" @click="accessory(info.id)">
<view class="scroll_top">
{{info.fileCount?info.fileCount:0}}
</view>
<view class="scroll_foot">
附件
</view>
</view>
<view class="scrollView_item" @click="operation(info.id)">
<view class="scroll_top">
{{info.operateCount?info.operateCount:0}}
</view>
<view class="scroll_foot">
操作记录
</view>
</view>
</view>
</scroll-view>
</view>
</view>
<!-- 标签栏 -->
<view class="group_tab">
<u-tabs name="cate_name" :list="list" :is-scroll="false" active-color="#008EFF" :current="current"
@change="change"></u-tabs>
<view class="processing_title" v-if="current == 0">
<customer-dynamic v-if="info && info.id" :isSeas="Number(type)" :kehuid="info.id" :type="1"></customer-dynamic>
</view>
<view class="processing_title" v-if="current == 1">
<info-detail v-if="info && info.id" :info="info"></info-detail>
</view>
</view>
<view style="height:100rpx"></view>
<!-- 底部导航栏 -->
<view class="bottom_nav" v-if="type == 1 && info.operation == 'update'">
<view class="bottom_item" @click="followClick">
<image :src="BASE_IMG_URL+'tj.png'" class="botimg"></image>
<view>跟进</view>
</view>
<view class="bottom_item" @click="telClick">
<image :src="BASE_IMG_URL+'dh.png'" class="botimg"></image>
<view>拨打电话</view>
</view>
<view class="bottom_item" @click="moreClick">
<image :src="BASE_IMG_URL+'morebtn.png'" class="botimg"></image>
<view>更多操作</view>
</view>
</view>
<u-popup v-model="show" mode="bottom" border-radius="20">
<view class="pull_head">更多操作</view>
<view class="pull_con">
<view class="pull_item" @click="transferClueClick(info.id)">
<view style="padding: 5rpx 12rpx;border: 1px solid #ededed;">转移客户</view>
</view>
<view class="pull_item" @click="removeSeas">
<view style="padding: 5rpx 12rpx;border: 1px solid #ededed;">移入公海</view>
</view>
<view class="pull_item" v-if="info && info.is_collect == 0" @click="Tofocus">
<view style="padding: 5rpx 12rpx;border: 1px solid #ededed;">重点关注</view>
</view>
<view class="pull_item" v-if="info && info.is_collect == 1" @click="ToRemovefocus">
<view style="padding: 5rpx 12rpx;border: 1px solid #ededed;">取消关注</view>
</view>
<view class="pull_item" @click="mapLocation">
<view style="padding: 5rpx 12rpx;border: 1px solid #ededed;">地图定位</view>
</view>
<view class="pull_item" @click="editClueClick(info.id)">
<view style="padding: 5rpx 12rpx;border: 1px solid #ededed;">编辑客户</view>
</view>
<view class="pull_item" @click="toSigntrip(info.id)">
<view style="padding: 5rpx 12rpx;border: 1px solid #ededed;">出差签到</view>
</view>
</view>
</u-popup>
<u-action-sheet
:list="telActions"
v-model="telShow"
:cancel-btn = "true"
@click="selectPhone"
></u-action-sheet>
</view>
</template>
<script>
import customerDynamic from 'components/content/customerDynamic/customerDynamic.vue';
import infoDetail from 'components/content/infoDetail/infoDetail.vue';
import {
moreCompany
} from 'components/content/data/data.js';
import {
pageJumps
} from "./group_page_jumps.js";
import {
BASE_IMG_URL
} from '@/util/api.js'
import {
netKehuDetail,
netRemoveSeas,
netReceiveKehu,
netKeyCollect,
netRemoveColect,
} from '@/api/kehu.js'
import {
netRelationBusiness
} from '@/api/index.js'
export default {
mixins: [pageJumps],
data() {
return {
BASE_IMG_URL: BASE_IMG_URL,
show: false,
taskShow: true,
statusShow: false,
// overShow: false,
moreCompany: [],
telShow: false,
telActions: [],
telname: '',
id: '', //客户id
info: {},
type: 1, //1普通客户 2公海客户
customer_id: '',
relation_id: '',
current: 0,
list: [{
name: '跟进记录',
status: 0
},
{
name: '基本信息',
status: 1
},
],
}
},
onLoad(options) {
this.id = options.id
this.moreCompany = moreCompany
this.type = options.type
},
onShow() {
this.getInfo()
},
components: {
customerDynamic,
infoDetail,
},
methods: {
//添加跟进
followClick() {
uni.navigateTo({
url: '/pagesA/crm/customerManagement/newFllow/newFllow?id='+this.id+'&type=1'
})
},
change(index) {
this.current = index;
},
tabs_change(e) {
this.current = e;
this.mescroll.resetUpScroll();
},
//附件跳转
accessory(id) {
uni.navigateTo({
url: '/pages/index/groupCompany/attachment/attachment?id=' + id + '&types=2' + '&type=' + this.type
})
},
//点击 附件 查看
lookDetail(item) {
if (item.types.indexOf('image') != -1) {
uni.previewImage({
urls: [item.file_path]
})
} else {
uni.downloadFile({
url: item.file_path,
success: (res) => {
uni.openDocument({
filePath: res.tempFilePath,
success: (res) => console.log('成功打开文档')
})
},
fail: (err) => {
console.log(err, 'shibai')
}
})
}
},
//新增合同
addContract(id) {
uni.navigateTo({
url: '/pagesA/crm/contract/contract?id=' + id
})
},
//团队
toTeam() {
uni.navigateTo({
url:'/pagesA/circulate/index?id='+this.info.id
})
},
//联系人
contact(id) {
uni.navigateTo({
url: '/pagesA/crm/linkman/linkman?id=' + this.id + '&type=' + this.type
})
},
//子公司
subord(id) {
uni.navigateTo({
url: '/pages/index/groupCompany/subsidiary/subsidiary?id=' + id + '&type=' + this.type
})
},
//签到记录
signList(id) {
uni.navigateTo({
url: '/pagesA/signin/record/record?id=' + id + '&type=' + this.type
})
},
//合同
Contract(id) {
uni.navigateTo({
url: '/pages/index/groupCompany/pact/pact?id=' + id + '&type=' + this.type
})
},
//费用
cost(id) {
uni.navigateTo({
url: '/pages/index/groupCompany/chargelist/chargelist?id=' + id + '&type=' + this.type
})
},
//回款记录
payment(id) {
uni.navigateTo({
url: '/pages/index/groupCompany/payment/payment?id=' + id + '&type=' + this.type
})
},
//操作记录
operation(id) {
uni.navigateTo({
url: '/pagesB/contract/operation?id=' + id + '&relation_type=1'
})
},
//获取客户信息
getInfo() {
this.info = {}
netKehuDetail({
id: this.id
}).then(res => {
this.info = res.data
uni.setNavigationBarTitle({
title: res.data.name
})
if (res.data.contacts) {
this.telname = res.data.contacts.name
this.telActions = [
{
text:res.data.contacts.name+res.data.contacts.mobile,
color:'#008EFF',
mobile:res.data.contacts.mobile
}
]
}
})
},
moreClick() {
this.show = true
},
//移入公海
removeSeas() {
this.show = false
uni.showModal({
title: '提示',
content: '确认要将当前客户移到公海吗?',
success: (res) => {
if (res.confirm) {
let params = {
id: this.info.id
}
netRemoveSeas(params).then(res => {
uni.showToast({
title: res.msg,
icon: 'none'
})
setTimeout(() => {
uni.setStorageSync('isJamp',true)
uni.navigateBack({
delta: 1
})
}, 1000)
})
}
}
})
},
//重点关注
Tofocus() {
let params = {
customer_id: this.info.id
}
netKeyCollect(params).then(res => {
uni.showToast({
title: res.msg,
icon: 'none'
})
this.show = false
setTimeout(() => {
this.getInfo()
}, 1000)
})
},
//取消重点关注
ToRemovefocus() {
let params = {
customer_id: this.info.id
}
netRemoveColect(params).then(res => {
uni.showToast({
title: res.msg,
icon: 'none'
})
this.show = false
setTimeout(() => {
this.getInfo()
}, 1000)
})
},
//拨打电话
selectPhone(e) {
// #ifdef MP-ALIPAY
dd.showCallMenu({
phoneNumber: this.telActions[e].mobile,
code: '+86'
})
// #endif
// #ifndef APP-PLUS || MP-ALIPAY
uni.makePhoneCall({
phoneNumber: this.telActions[e].mobile
})
// #endif
// #ifdef APP-PLUS
plus.device.dial(this.telActions[e].mobile, true);
// #endif
},
//地图定位
mapLocation() {
uni.openLocation({
latitude: Number(this.info.lat),
longitude: Number(this.info.lng),
name: this.info.address,
address: this.info.address_detail,
success: (res) => {
console.log(res, this.info.lat, this.info.lng)
},
fail: (err) => {
console.log(err)
}
})
},
// 任务
taskClick() {
this.taskShow = true;
this.show = false;
},
// 取消底部弹出框
onCancel() {
this.taskShow = false;
this.statusShow = false;
this.telShow = false;
this.show = false;
},
// 变更状态
statusClick() {
this.statusShow = true;
this.show = false;
},
// 电话
telClick() {
this.telShow = true;
this.show = false;
},
// 领取线索
getCluesClick(id) {
this.show = false;
uni.showModal({
title: '是否确定领取客户',
content: '领取后长时间未跟进,客户将自动转为公共客户',
cancelColor: "#9abcfb",
confirmColor: "#9abcfb",
success: function(ress) {
if (ress.confirm) {
netReceiveKehu({
customer_id: id
}).then(res => {
uni.showToast({
title: res.msg,
icon: 'none'
})
setTimeout(() => {
uni.navigateTo({
url: '/pages/index/groupCompany/groupCompany?id=' +
res.data.id
})
}, 1000)
})
} else if (ress.cancel) {
console.log('用户点击取消');
}
}
})
},
// 删除线索
deleteClueClick() {
uni.showModal({
title: '删除线索',
content: '确定删除该条记录吗?',
cancelColor: "#9abcfb",
confirmColor: "#9abcfb",
success: function(res) {
if (res.confirm) {
console.log('用户点击确定');
} else if (res.cancel) {
console.log('用户点击取消');
}
}
})
},
// 隐藏遮罩层
onClickHide() {
this.overShow = false;
},
//添加 出差 签到
toSigntrip(id) {
uni.navigateTo({
url: '/pagesA/signin/busSign?customerid=' + id
})
},
//商机
toBusiness() {
uni.navigateTo({
url:'/pagesA/business/customer_business?id='+this.id
})
}
}
}
</script>
<style lang="scss">
.pull_head {
font-size: 34rpx;
color: #999;
padding: 30rpx 0;
text-align: center;
}
::-webkit-scrollbar {
width: 0;
height: 0;
color: transparent;
}
.group_head {
padding: 20rpx 42rpx;
background-color: $uni-text-color;
text-align: left;
color: #fff;
font-size: 30rpx;
.client {
font-size: 36rpx;
margin-bottom: 20rpx;
}
.nickname {
margin-bottom: 20rpx;
text {
padding: 0 30rpx;
}
}
.state {
margin-bottom: 20rpx;
text {
}
}
.time {
margin-bottom: 20rpx;
text {
padding: 0 30rpx;
}
}
.site {
margin-bottom: 20rpx;
}
.principal {
margin-bottom: 20rpx;
}
}
.group_tab {
margin: 20rpx 0;
}
.bottom_nav {
position: fixed;
bottom: 0;
left: 0;
right: 0;
padding: 20rpx 0;
background-color: #fff;
text-align: center;
color: #999;
z-index: 2;
display: flex;
justify-content: space-around;
align-items: center;
border-top:1rpx solid #f5f5f5;
.bottom_item{
font-size:24rpx;
.botimg{
width:40rpx;
height:40rpx;
}
}
}
.pull_con {
padding: 20rpx;
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
text-align: center;
color: #999;
box-sizing: border-box;
margin-bottom:calc(env(safe-area-inset-bottom) / 2);
.pull_item {
width: 22%;
margin-bottom: 90rpx;
margin-right: 20rpx;
:first-child {
padding-bottom: 10rpx;
}
:last-child {
padding-bottom: 50rpx;
}
}
}
.scrollView {
margin:25rpx 0;
.scrolllist{
display: flex;
justify-content: flex-start;
align-items: center;
.scrollView_item {
flex-shrink: 0;
width:145rpx;
padding:15rpx 0;
background: #fff;
border-radius: 20rpx;
text-align: center;
margin-right: 15rpx;
.scroll_top{
color: $uni-text-color;
font-size: 32rpx;
font-weight: bold;
}
.scroll_foot{
font-size: 26rpx;
color: #333;
}
}
}
}
</style>