Files
liche/admin/views/receiver/customer/lists.php
T
2023-02-24 15:40:55 +08:00

616 lines
29 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<link rel="stylesheet" type="text/css" href="/static/css/font-awesome.min.css?v=1581252500">
<div class="bs-example bs-example-tabs" data-example-id="togglable-tabs" style="font-size:15px;">
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class="<?= !strlen($params['status']) ? 'active' : '' ?>">
<a href="javascript:void (0);" data-open="/receiver/customer">全部</a>
</li>
<? foreach ($status_arr as $key => $val) { ?>
<li role="presentation"
class="<?= strlen($params['status']) && $params['status'] == $key ? 'active' : '' ?>">
<a href="javascript:void (0);" data-open="/receiver/customer?status=<?= $key ?>">
<?= $val ?>
</a>
</li>
<? } ?>
</ul>
</div>
<div class="coms-table-wrap mt10">
<form id="vue-app" class="form-search coms-table-hd clearfix no-border" onsubmit="return false"
action="/receiver/customer">
<div class="am-form am-form-horizontal">
<div class="am-form-group fl">
<label class="am-para-label w80">客户搜索:</label>
<div class="am-para-inline w100">
<select name="search_tp" v-model="params.search_tp">
<option :value="i" v-for="(v,i) in searchTpAry">{{v}}</option>
</select>
</div>
</div>
<div class="am-form-group fl">
<div class="am-para-inline w220">
<input id="title" name="title" type="text" v-model="params.title"/>
</div>
</div>
<div class="am-form-group fl">
<label class="am-para-label w80">客户等级:</label>
<div class="am-para-inline w100">
<select name="level" v-model="params.level">
<option value=''>请选择</option>
<option :value="v" v-for="(v,i) in show_info.levelAry">{{v}}</option>
</select>
</div>
</div>
<div class="am-form-group fl">
<label class="am-para-label w80">渠道经理:</label>
<div class="am-para-inline w100">
<select name="qdjl_id" v-model="params.qdjl_id">
<option value=''>请选择</option>
<option :value="v.id" v-for="(v,i) in qdjl_lists">{{v.name}}</option>
</select>
</div>
</div>
<div class="am-form-group fl">
<label class="am-para-label w80">企微好友:</label>
<div class="am-para-inline w100">
<select name="wxqy" v-model="params.wxqy">
<option value=''>请选择</option>
<option :value="i" v-for="(v,i) in show_info.wxqyAry">{{v}}</option>
</select>
</div>
</div>
<div class="am-form-group fl">
<label class="am-para-label w80">加个微:</label>
<div class="am-para-inline w100">
<select name="wxgr" v-model="params.wxgr">
<option value=''>请选择</option>
<option :value="i" v-for="(v,i) in show_info.wxgrAry">{{v}}</option>
</select>
</div>
</div>
<div class="am-form-group fl">
<label class="am-para-label w80">是否改派:</label>
<div class="am-para-inline w100">
<select name="cs_biz_id" v-model="params.cs_biz_id">
<option value=''>请选择</option>
<option :value="i" v-for="(v,i) in show_info.csbizidAry">{{v}}</option>
</select>
</div>
</div>
<div class="am-form-group" style="margin-bottom: 0px;"></div>
<div class="am-form-group fl">
<label class="am-para-label w80">客户来源:</label>
<div class="am-form-group am-para-inline w120">
<select name="of_id" v-model="params.of_id">
<option value="">请选择</option>
<option :value="i" v-for="(v,i) in show_info.offlineSourcesAry">{{v.name}}</option>
</select>
</div>
<div class="am-form-group am-para-inline w120">
<select name="of2_id" v-model="params.of2_id">
<option value="">请选择</option>
<option :value="i" v-for="(v,i) in of2Ary">{{v}}</option>
</select>
</div>
</div>
<div class="am-form-group fl">
<label class="am-para-label w90">门店类型:</label>
<div class="am-para-inline w100">
<select name="biz_type" v-model="params.biz_type">
<option value="">请选择</option>
<option :value="v.id" v-for="(v,i) in bizTypeAry">{{v.name}}</option>
</select>
</div>
</div>
<div class="am-form-group fl">
<label class="am-para-label w80">销售员:</label>
<div class="am-para-inline w100">
<select title="城市" name="city_id_admin" v-model="params.city_id_admin">
<option value="">选择城市</option>
<option :value="v.id" v-for="(v,i) in admins.cityAry">{{v.name}}</option>
</select>
</div>
<div class="am-para-inline w100">
<select title="行政区" name="county_id_admin" v-model="params.county_id_admin">
<option value="">选择行政区</option>
<option :value="v.id" v-for="(v,i) in admins.countyAry">{{v.name}}</option>
</select>
</div>
<div class="am-para-inline w180">
<select name="biz_id_admin" v-model="params.biz_id_admin">
<option value="">门店</option>
<template v-for="(v,i) in admins.bizAry">
<option :value="v.id">{{v.title}}</option>
</template>
</select>
</div>
<div class="am-para-inline w100">
<select name="admin_id" v-model="params.admin_id">
<option value="">销售员</option>
<template v-for="(v,i) in admins.list">
<option :value="v.id">{{v.title}}</option>
</template>
</select>
</div>
</div>
<? foreach ($searchTimeAry as $key => $value) { ?>
<div id="show-<?= $key ?>" style="display:<?= $params[$key] ? 'block' : 'none' ?>">
<div class="am-form-group" style="margin-bottom: 0px;"></div>
<label class="am-para-label w100"><?= $value ?></label>
<div class="am-form-group fl">
<div class="am-para-inline w300">
<input id="id-<?= $key ?>" name="<?= $key ?>" type="text" value="<?= $params[$key] ?>"
placeholder="<?= $value ?>范围" autocomplete="off"/>
</div>
<div class="am-para-inline" style="padding-top: 5px;">
<a class="mr10 id-<?= $key ?>-btn" href="javascript:void (0);" data-date="today">今日</a>
<a class="mr10 id-<?= $key ?>-btn" href="javascript:void (0);" data-date="yesterday">昨日</a>
<a class="mr10 id-<?= $key ?>-btn" href="javascript:void (0);" data-date="weeks">本周</a>
<a class="mr10 id-<?= $key ?>-btn" href="javascript:void (0);" data-date="month">本月</a>
</div>
</div>
</div>
<? } ?>
<div class="am-form-group" style="margin-bottom: 0px;"></div>
<div class="am-form-group fl" style="margin-bottom: 0px;">
<div class="am-form-group fl ml10">
<button type="submit" class="am-btn am-btn-success am-btn-sm w100">搜索</button>
</div>
<div class="am-form-group fl ml10">
<input type="button" @click="btnTimes" value="选择筛选时间" class="am-btn am-btn-success am-btn-sm">
</div>
<div class="am-form-group fl ml10">
<input type="button" @click="btnTags" value="搜索客户画像" class="am-btn am-btn-success am-btn-sm">
</div>
<div class="am-form-group fl ml10">
<button type="button" class="am-btn am-btn-success am-btn-sm w100" @click="reset">重置</button>
</div>
<div class="am-form-group fl ml10" v-if="export_button==1">
<button type="button" class="am-btn am-btn-success am-btn-sm w100" @click="export_out">导出</button>
</div>
</div>
</div>
<input name="status" value="<?= $params['status'] ?>" type="hidden">
<input type="hidden" id="id_tags" name="tags" value="<?= $params['tags'] ?>">
</form>
<div class="coms-table-bd">
<div class="am-form-group fr mr10">
<span>共<?= intval($pager['totle']) ?>个客户</span>
</div>
<table class="am-table am-table-bordered">
<thead>
<tr>
<th width="3%">ID</th>
<th width="7%"><span>客户姓名</span></th>
<th width="5%"><span>客户电话</span></th>
<th width="5%"><span>客户等级</span></th>
<th width="10%"><span>客户来源</span></th>
<th width="10%"><span>所属门店</span></th>
<th width="5%"><span>状态</span></th>
<th width="5%"><span>是否改派</span></th>
<th width="5%"><span>销售员</span></th>
<th width="5%"><span>企微好友</span></th>
<th width="5%"><span>加个微</span></th>
<th width="6%"><span>最后联系时间</span></th>
</tr>
</thead>
<tbody>
<template v-for="(v,i) in lists">
<tr>
<td>{{v.id}}</td>
<td>{{v.name}}</td>
<td>{{v.mobile_sub}}</td>
<td>{{v.level}}</td>
<td>{{v.of_title}}</td>
<td>{{v.biz_name}}</td>
<td>{{v.status_name}}</td>
<td>{{v.to_send}}</td>
<td>{{v.admin_name}}</td>
<td>{{v.wxqy_name}}</td>
<td>{{v.wxgr_name}}</td>
<td>{{v.cont_time}}</td>
</tr>
<tr>
<td colspan="12">
<div class="row">
<div class="col-md-4 align-l">
</div>
<div class="col-md-8 align-r" style="padding-right: 30px;">
<template v-if="v.of2_id==37">
<a :data-modal="'/receiver/customer/edit_adviser?id='+v.id" data-title="改派"
href="javascript:void(0);" class="am-btn am-btn-primary am-btn-xs">改派</a>
<a href="javascript:void (0);" data-ajax="post"
data-action="/receiver/customer/del" :data-params-id="v.id"
href="javascript:void(0);" class="am-btn am-btn-primary am-btn-xs">取消派单</a>
</template>
<a :data-modal="'/common/bind_mobile?id='+v.id+'&type=customer'"
href="javascript:void(0);" class="am-btn am-btn-primary am-btn-xs"
data-title="获取手机号">拨打电话</a>
<a :data-modal="'/common/show_sms?id='+v.id+'&type=customer'"
href="javascript:void(0);" class="am-btn am-btn-primary am-btn-xs"
data-title="发送短信">短信</a>
<a href="javascript:void(0);" :data-open="'/receiver/customer/get?id='+v.id"
class="am-btn am-btn-primary am-btn-xs">查看详情</a>
</div>
</td>
</tr>
</template>
</table>
</div>
<div class="coms-table-ft clearfix">
<div class="hander am-form">
</div>
<div class="coms-pagination fr mr20">
<?php page_view($pager) ?>
</div>
</div>
<div id="times-modal" style="display: none;">
<div class="modal-body">
<label class="checkall" style="margin-left: 30px;">
<input id="times_checkbox" type="checkbox" data-check-target=".order-times"> 全选</label>
<div style="margin-left: 40px;">
<?php foreach ($searchTimeAry as $key => $value) { ?>
<label class="am-checkbox" style="padding-bottom: 8px;">
<input type="checkbox" class="order-times" <?= $params[$key] ? 'checked' : '' ?>
value='<?= $key ?>'><?= $value ?></label>
<? } ?>
</div>
</div>
</div>
<div id="tags-modal" style="display: none;">
<div class="modal-body">
<template v-for="(v,i) in show_info.tags">
<tr>
<td class="table-td" style="width: 80%">
<table>
<tr v-if="v.type=='checkbox'">
<td style="min-width: 80px">{{v.name}}:</td>
<td>
<template v-for="(v2,i2) in v.list">
<input type="checkbox" :value='v2.checked'
v-model="v2.checked"> {{v2.name}}&nbsp;
</template>
</td>
</tr>
<tr v-else>
<td style="min-width: 80px">{{v.name}}:</td>
<td>
<template v-for="(v2,i2) in v.list">
<input type="radio" :value='v2.id'
v-model="v.value"> {{v2.name}}&nbsp;
</template>
</td>
</tr>
</table>
</td>
</tr>
</template>
</div>
</div>
</div>
<script>
require(['laydate', 'autocomplete'], function (laydate) {
<? foreach ($searchTimeAry as $key => $value) { ?>
laydate.render({
elem: '#id-<?=$key?>', range: '~'
});
$('.id-<?=$key?>-btn').click(function () {
var type = $(this).data('date'), date = '', nowDate = new Date();
var beginDate = '', endDate = '';
switch (type) {
case 'today':
beginDate = endDate = nowDate.Format('yyyy-MM-dd');
break;
case 'yesterday':
beginDate = endDate = (new Date(nowDate.getTime() - 86400000)).Format('yyyy-MM-dd');
break;
case 'weeks':
nowDate.setDate(nowDate.getDate() - nowDate.getDay() + 1);
beginDate = nowDate.getFullYear() + "-" + (nowDate.getMonth() + 1) + "-" + nowDate.getDate();
nowDate.setDate(nowDate.getDate() + 6);
endDate = nowDate.getFullYear() + "-" + (nowDate.getMonth() + 1) + "-" + nowDate.getDate();
break;
case 'month':
beginDate = nowDate.getFullYear() + "-" + (nowDate.getMonth() + 1) + "-01";
var day = new Date(nowDate.getFullYear(), nowDate.getMonth() + 1, 0);
endDate = nowDate.getFullYear() + "-" + (nowDate.getMonth() + 1) + "-" + day.getDate();
break;
}
date = beginDate + ' ~ ' + endDate;
$('#id-<?=$key?>').val(date);
});
<?}?>
});
var vue_obj;
$(function () {
vue_obj = new Vue({
el: '.coms-table-wrap',
data: {
params: {'of_id': '', 'of2_id': ''},
searchTpAry: [],
lists: [],
qdjl_lists: [],
admins: {cityAry: [], countyAry: [], bizAry: [], list: []},
show_info: {levelAry: [], offlineSourcesAry: [], wxqyAry: [], wxgrAry: [], csbizidAry: [], tags: []},
of2Ary: [],
bizTypeAry: [],
export_button: 0,
},
mounted: function () {
var vm = this;
vm.params = <?=json_encode($params)?>;
vm.searchTpAry = <?=json_encode($searchTpAry)?>;
vm.lists = <?=json_encode($lists)?>;
vm.qdjl_lists = <?=json_encode($qdjl_lists)?>;
vm.show_info = <?=json_encode($show_info)?>;
vm.export_button = <?=$export_button?>;
vm.init_citys();
vm.initBizType();
},
methods: {
initBizType: function () {
var vm = this;
$.ajax({
type: 'get',
url: '/common/biz_type_ary',
dataType: 'json',
data: {},
success: function (response) {
if (response.code == 1) {
vm.bizTypeAry = response.data;
}
}
});
},
btnTimes: function () {
layer.open({
type: 1,
area: ['25%'], //宽高
content: $('#times-modal'),
title: '选择筛选时间',
shade: false,
btn: ['确定', '取消'],
yes: function (index) {
layer.close(index);
$(".order-times").map(function () {
var id = this.value;
if (this.checked) {
$('#show-' + id).show();
} else {
$('#id-' + id).val('');
$('#show-' + id).hide();
}
});
}
});
},
btnTags: function () {
var vm = this;
layer.open({
type: 1,
area: ['50%'], //宽高
content: $('#tags-modal'),
title: '搜索客户画像',
shade: false,
btn: ['点击搜索', '重置画像', '取消搜索'],
yes: function (index) {
var ids = '';
vm.show_info.tags.map(function (item1) {
for (var i in item1.list) {
var item2 = item1.list[i];
if (item1.type == 'checkbox') {
if (item2.checked) {
ids = ids ? ids + ',' + item2.id : item2.id;
}
} else {
if (item1.value == item2.id) {
ids = ids ? ids + ',' + item2.id : item2.id;
}
}
}
});
if (ids.length < 1) {
return $.msg.tips('请选择需要搜索的数据!');
}
$('#id_tags').val(ids);
$('#vue-app').submit();
layer.close(index);
},
btn2: function () {
vm.show_info.tags.map(function (item1) {
for (var i in item1.list) {
var item2 = item1.list[i];
if (item1.type == 'checkbox') {
item2.checked = false;
} else {
item1.value = '';
}
}
});
$('#id_tags').val('');
return false;
},
btn3: function (index) {
layer.close(index);
}
});
},
saveEdit: function () {
$("form").submit();
},
init_citys: function () {
var vm = this;
$.ajax({
type: 'get',
url: '/common/area',
dataType: 'json',
data: {
id: '350',
key: 'city',
type: 1
},
success: function (response) {
if (response.code == 1) {
//vm.cityAry = response.data;
vm.admins.cityAry = JSON.parse(JSON.stringify(response.data));
}
}
});
},
reset: function () {
var that = this;
that.params.search_tp = 'mobile';
that.params.title = '';
that.cfrom_id = 0;
that.cfrom_id2 = 0;
that.params.city_id_admin = '';
that.params.of_id = '';
that.params.of2_id = '';
$('#id_tags').val('');
$('#cf_time').val('');
$(".order-times").map(function () {
var id = this.value;
this.checked = false;
$('#id-' + id).val('');
$('#show-' + id).hide();
});
$("#times_checkbox").prop("checked", false);
},
export_out: function () {
var that = this;
if (that.export_button == 0){
layer.msg('无权限导出');
return false;
}
let count = <?=$pager['totle']?>;
if (count == 0) {
layer.msg('没有数据可导出');
return false;
}
let href = $.menu.parseUri(window.location.href);
href = href.replace("customer?", "customer/export?");
window.location.href = href;
},
},
watch: {
'params.of_id': function (nv, ov) {
var that = this;
if (nv == '') {
that.params.of2_id = '';
that.of2Ary = [];
} else {
that.of2Ary = that.show_info.offlineSourcesAry[nv]['list'];
}
},
'params.city_id_admin': function (nv, ov) {
var that = this;
if (nv == '') {
that.admins.countyAry = [];
that.params.county_id_admin = '';
} else {
if (nv.substring(0, 4) != that.params.county_id_admin.substring(0, 4)) {
that.params.county_id_admin = '';
}
$.ajax({
type: 'get',
url: '/common/area',
dataType: 'json',
data: {
id: nv,
key: 'county',
type: 1
},
success: function (response) {
if (response.code == 1) {
that.admins.countyAry = response.data;
}
}
});
}
},
'params.county_id_admin': function (nv, ov) {
var that = this;
if (nv == '') {
that.admins.bizAry = [];
that.params.biz_id_admin = '';
} else {
$.ajax({
type: 'post',
url: '/biz/store/store/json_lists',
dataType: 'json',
data: {
city_id: that.params.city_id_admin,
county_id: that.params.county_id_admin,
status: 1
},
success: function (response) {
if (response.code == 1) {
that.admins.bizAry = response.data.list;
if (that.params.biz_id_admin > 0) {
var biz_id = '';
for (var i in that.admins.bizAry) {
if (that.params.biz_id_admin == that.admins.bizAry[i].id) {
biz_id = that.params.biz_id_admin;
break;
}
}
that.params.biz_id_admin = biz_id;
}
}
}
});
}
},
'params.biz_id_admin': function (nv, ov) {
var that = this;
if (nv == '') {
that.admins.list = [];
that.params.admin_id = '';
} else {
$.ajax({
type: 'post',
url: '/app/licheb/member/json_lists',
dataType: 'json',
data: {
biz_id: nv,
status: 1
},
success: function (response) {
if (response.code == 1) {
that.admins.list = response.data.list;
if (that.params.admin_id > 0) {
var admin_id = '';
for (var i in that.admins.list) {
if (that.params.admin_id == that.admins.list[i].id) {
admin_id = that.params.admin_id;
break;
}
}
that.params.admin_id = admin_id;
}
}
}
});
}
}
}
});
<?php page_script($pager) ?>
});
</script>
<style type="text/css">
.table-td {
width: 20%;
padding-top: 10px;
line-height: 28px;
font-size: 1.4rem;
}
</style>