427 lines
15 KiB
JavaScript
427 lines
15 KiB
JavaScript
|
layui.use(['laytpl', 'table', 'jquery', 'form', 'miniTab', 'xmSelect', 'laydate'], function () {
|
|||
|
let $ = layui.jquery,
|
|||
|
form = layui.form,
|
|||
|
table = layui.table,
|
|||
|
layer = layui.layer,
|
|||
|
laydate = layui.laydate,
|
|||
|
xmSelect = layui.xmSelect,
|
|||
|
miniTab = layui.miniTab;
|
|||
|
|
|||
|
/**** index begin ***/
|
|||
|
//index页面
|
|||
|
if ($('.location-index-page').length > 0) {
|
|||
|
miniTab.listen();
|
|||
|
|
|||
|
laydate.render({
|
|||
|
elem: '#publish-date',
|
|||
|
});
|
|||
|
|
|||
|
// 渲染表格
|
|||
|
let listUrl = $('#table-container').data('url');
|
|||
|
let insTb = table.render({
|
|||
|
elem: '#table-container',
|
|||
|
toolbar: '#toolbar-tpl',
|
|||
|
defaultToolbar: ['filter', 'exports', { //自定义头部工具栏右侧图标。如无需自定义,去除该参数即可
|
|||
|
title: '搜索'
|
|||
|
, layEvent: 'search'
|
|||
|
, icon: 'layui-icon-search'
|
|||
|
}],
|
|||
|
url: listUrl,
|
|||
|
method: 'post',
|
|||
|
even: true,
|
|||
|
limits: [10, 20, 50, 100, 200, 500, 1000, 2000],
|
|||
|
request: {
|
|||
|
pageName: 'page',
|
|||
|
limitName: 'size',
|
|||
|
},
|
|||
|
parseData: function (res) {
|
|||
|
return {
|
|||
|
"code": res.code, //解析接口状态
|
|||
|
"msg": res.msg, //解析提示文本
|
|||
|
"count": res.data.total, //解析数据长度
|
|||
|
"data": res.data.list //解析数据列表
|
|||
|
};
|
|||
|
},
|
|||
|
page: true,
|
|||
|
cols: [[
|
|||
|
{type: 'checkbox'},
|
|||
|
{field: 'id', minWidth: 50, title: '编号'},
|
|||
|
{field: 'nickname', minWidth: 150, title: '昵称'},
|
|||
|
{field: 'real_name', minWidth: 150, title: '真实姓名'},
|
|||
|
{field: 'mobile', minWidth: 150, title: '电话'},
|
|||
|
{field: 'channel_text', minWidth: 150, title: '客户来源'},
|
|||
|
{field: 'source_detail', minWidth: 200, title: '详细来源'},
|
|||
|
{field: 'service_name', minWidth: 150, title: '所属客服'},
|
|||
|
{field: 'tag', minWidth: 150, title: '客户标签'},
|
|||
|
{field: 'created_at', minWidth: 200, title: '注册时间'},
|
|||
|
{field: 'is_sign_text', minWidth: 100, title: '是否到店'},
|
|||
|
{field: 'score', minWidth: 100, title: '积分'},
|
|||
|
{field: 'coin', minWidth: 100, title: '孔雀币'},
|
|||
|
{field: 'gender_text', minWidth: 100, title: '性别'},
|
|||
|
{templet: '#row-operate', fixed: "right", minWidth: 250, title: '操作'},
|
|||
|
]],
|
|||
|
done: function () {
|
|||
|
Tools.setInsTb(insTb);
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
//监听工具条 注意区别toolbar和tool toolbar是表头上的工具条 tool是行中的工具条
|
|||
|
table.on('toolbar(table-container)', function (obj) {
|
|||
|
let layEvent = obj.event;
|
|||
|
let insTb = Tools.getInsTb();
|
|||
|
let url = $($(this).context).data('href')
|
|||
|
let title = $($(this).context).data('title')
|
|||
|
let width = $($(this).context).data('width') ? $($(this).context).data('width') : '100%';
|
|||
|
let height = $($(this).context).data('height') ? $($(this).context).data('height') : '100%';
|
|||
|
|
|||
|
// debugger;
|
|||
|
switch (layEvent) {
|
|||
|
// toolbar 分配指定员工 分配客户标签 到店设置 来源设置
|
|||
|
case 'staff':
|
|||
|
case 'tag':
|
|||
|
case 'sign':
|
|||
|
case 'recharge-coin':
|
|||
|
case 'source':
|
|||
|
let checkStatus = table.checkStatus('table-container');
|
|||
|
if (checkStatus.data.length <= 0) {
|
|||
|
layer.msg('请先选择数据');
|
|||
|
return false;
|
|||
|
}
|
|||
|
let selected = checkStatus.data;
|
|||
|
let ids = [];
|
|||
|
|
|||
|
$.each(selected, function (index, val) {
|
|||
|
ids.push(val.id);
|
|||
|
})
|
|||
|
|
|||
|
if (ids.length > 500) {
|
|||
|
layer.msg('一次操作请不要超过500条');
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
url += '?id=' + ids;
|
|||
|
openLayer(url, title, width, height);
|
|||
|
return false;
|
|||
|
// toolbar 刷新
|
|||
|
case 'refresh':
|
|||
|
refreshTab(insTb);
|
|||
|
return false;
|
|||
|
// toolbar 搜索
|
|||
|
case 'search':
|
|||
|
let search = $('.table-search-fieldset');
|
|||
|
if (search.hasClass('div-show')) {
|
|||
|
search.css('display', 'none').removeClass('div-show');
|
|||
|
} else {
|
|||
|
search.css('display', 'block').addClass('div-show');
|
|||
|
}
|
|||
|
return false;
|
|||
|
// 其他 默认为打开弹出层
|
|||
|
default:
|
|||
|
if (layEvent !== 'LAYTABLE_COLS' && layEvent !== 'LAYTABLE_EXPORT') {
|
|||
|
openLayer(url, title, width, height);
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
// 监听搜索操作
|
|||
|
form.on('submit(data-search-btn)', function (data) {
|
|||
|
//执行搜索重载
|
|||
|
table.reload('table-container', {
|
|||
|
page: {curr: 1}
|
|||
|
, where: {searchParams: data.field}
|
|||
|
}, 'data');
|
|||
|
|
|||
|
return false;
|
|||
|
});
|
|||
|
}
|
|||
|
/*** index end ***/
|
|||
|
|
|||
|
if ($('.location-staff-page').length > 0) {
|
|||
|
let staffList = $('#staff-list');
|
|||
|
let dataOne = staffList.data('data') ? staffList.data('data') : [];
|
|||
|
xmSelect.render({
|
|||
|
el: '#staff-list',
|
|||
|
paging: true,
|
|||
|
autoRow: true,
|
|||
|
radio: true,
|
|||
|
clickClose: true,
|
|||
|
name: 'staff_id',
|
|||
|
tips: '请选择员工',
|
|||
|
direction: 'auto',
|
|||
|
height: 'auto',
|
|||
|
prop: {
|
|||
|
name: 'name',
|
|||
|
value: 'id',
|
|||
|
},
|
|||
|
model: {
|
|||
|
icon: 'hidden',
|
|||
|
},
|
|||
|
theme: {
|
|||
|
color: '#1e84ff',
|
|||
|
},
|
|||
|
data: dataOne
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
if ($('.location-source-page').length > 0) {
|
|||
|
form.on('select(channel-select)', function (data) {
|
|||
|
//切换
|
|||
|
$('.channel-div').hide();//全部隐藏
|
|||
|
$('.current-channel-' + data.value).show();
|
|||
|
})
|
|||
|
|
|||
|
xmSelect.render({
|
|||
|
el: '#staff-list',
|
|||
|
autoRow: true,
|
|||
|
radio: true,
|
|||
|
clickClose: true,
|
|||
|
page: true,
|
|||
|
name: 'type_staff',
|
|||
|
tips: '请选择员工',
|
|||
|
direction: 'auto',
|
|||
|
height: 'auto',
|
|||
|
model: {
|
|||
|
icon: 'hidden',
|
|||
|
},
|
|||
|
prop: {
|
|||
|
name: 'name',
|
|||
|
value: 'account_id',
|
|||
|
},
|
|||
|
filterable: true,
|
|||
|
toolbar: {show: true},
|
|||
|
remoteSearch: true,
|
|||
|
remoteMethod: function (val, cb, show) {
|
|||
|
$.post('/manager/account/get-staff-list', {keyword: val}, function (res) {
|
|||
|
if (res.code === 0) {
|
|||
|
cb(res.data.list);
|
|||
|
}
|
|||
|
});
|
|||
|
},
|
|||
|
theme: {
|
|||
|
color: '#1e84ff',
|
|||
|
},
|
|||
|
});
|
|||
|
|
|||
|
xmSelect.render({
|
|||
|
el: '#customer-list',
|
|||
|
autoRow: true,
|
|||
|
radio: true,
|
|||
|
clickClose: true,
|
|||
|
name: 'type_customer',
|
|||
|
tips: '请选择客户',
|
|||
|
direction: 'auto',
|
|||
|
height: 'auto',
|
|||
|
model: {
|
|||
|
icon: 'hidden',
|
|||
|
},
|
|||
|
template({ item, sels, name, value }){
|
|||
|
return item.nickname + '<span style="position: absolute; right: 10px; color: #8799a3">真实姓名:'+item.real_name +
|
|||
|
'手机号:'+item.mobile+
|
|||
|
'</span>'
|
|||
|
},
|
|||
|
prop: {
|
|||
|
name: 'nickname',
|
|||
|
value: 'id',
|
|||
|
},
|
|||
|
filterable: true,
|
|||
|
toolbar: {show: true},
|
|||
|
remoteSearch: true,
|
|||
|
remoteMethod: function (val, cb, show) {
|
|||
|
$.post('/manager/account/get-account-list', {keyword: val}, function (res) {
|
|||
|
if (res.code === 0) {
|
|||
|
cb(res.data.list);
|
|||
|
}
|
|||
|
});
|
|||
|
},
|
|||
|
theme: {
|
|||
|
color: '#1e84ff',
|
|||
|
},
|
|||
|
});
|
|||
|
|
|||
|
xmSelect.render({
|
|||
|
el: '#activity-list',
|
|||
|
autoRow: true,
|
|||
|
radio: true,
|
|||
|
clickClose: true,
|
|||
|
name: 'type_activity',
|
|||
|
tips: '请选择活动',
|
|||
|
direction: 'auto',
|
|||
|
height: 'auto',
|
|||
|
model: {
|
|||
|
icon: 'hidden',
|
|||
|
},
|
|||
|
prop: {
|
|||
|
name: 'name',
|
|||
|
value: 'code',
|
|||
|
},
|
|||
|
filterable: true,
|
|||
|
toolbar: {show: true},
|
|||
|
remoteSearch: true,
|
|||
|
remoteMethod: function (val, cb, show) {
|
|||
|
$.post('/manager/activity/get-activity-list', {keyword: val}, function (res) {
|
|||
|
if (res.code === 0) {
|
|||
|
cb(res.data.list);
|
|||
|
}
|
|||
|
});
|
|||
|
},
|
|||
|
theme: {
|
|||
|
color: '#1e84ff',
|
|||
|
},
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
if ($('.location-tag-page').length > 0) {
|
|||
|
let tagList = $('#tag-list');
|
|||
|
let dataOne = tagList.data('data') ? tagList.data('data') : [];
|
|||
|
var xmSelectObj = xmSelect.render({
|
|||
|
el: '#tag-list',
|
|||
|
paging: true,
|
|||
|
autoRow: true,
|
|||
|
name: 'tag_id',
|
|||
|
tips: '请选择客户标签',
|
|||
|
direction: 'auto',
|
|||
|
height: 'auto',
|
|||
|
prop: {
|
|||
|
name: 'name',
|
|||
|
value: 'id',
|
|||
|
},
|
|||
|
model: {
|
|||
|
icon: 'hidden',
|
|||
|
},
|
|||
|
theme: {
|
|||
|
color: '#1e84ff',
|
|||
|
},
|
|||
|
on: function(data){
|
|||
|
//可以return一个数组, 代表想选中的数据
|
|||
|
|
|||
|
//arr: 当前多选已选中的数据
|
|||
|
var arr = data.arr;
|
|||
|
//change, 此次选择变化的数据,数组
|
|||
|
var change = data.change;
|
|||
|
//isAdd, 此次操作是新增还是删除
|
|||
|
var isAdd = data.isAdd;
|
|||
|
|
|||
|
if(isAdd){
|
|||
|
for(j = 0,len=change.length; j < len; j++) {
|
|||
|
if(change[j].add != undefined && change[j].add==true){
|
|||
|
console.log( change[j].name);
|
|||
|
|
|||
|
$.ajax('/manager/account-tag/add', {
|
|||
|
data: {name: change[j].name},
|
|||
|
async: false,
|
|||
|
dataType: 'json',//服务器返回json格式数据
|
|||
|
type: 'post',//HTTP请求类型
|
|||
|
timeout: 10000,//超时时间设置为10秒;
|
|||
|
success: function (res) {
|
|||
|
console.log(res)
|
|||
|
if (res.code == 0) {
|
|||
|
|
|||
|
let id = res.data.id;
|
|||
|
var name = change[j].name
|
|||
|
var value = change[j].value
|
|||
|
arr.find(function(item){
|
|||
|
if(item.name == name){
|
|||
|
item.id = id;
|
|||
|
item.value = value;
|
|||
|
}
|
|||
|
});
|
|||
|
layer.msg("创建新标签成功");
|
|||
|
//返回一个创建成功的对象, val是搜索的数据, arr是搜索后的当前页面数据
|
|||
|
|
|||
|
}else{
|
|||
|
layer.msg("创建新标签失败");
|
|||
|
}
|
|||
|
},
|
|||
|
error: function (xhr, type, errorThrown) {
|
|||
|
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
console.log(arr);
|
|||
|
xmSelectObj.setValue(arr)
|
|||
|
},
|
|||
|
filterable: true,
|
|||
|
create: function(val, arr){
|
|||
|
|
|||
|
if(arr.length === 0){
|
|||
|
return {
|
|||
|
name: "新增_" + val,
|
|||
|
id: val,
|
|||
|
value:val,
|
|||
|
add:true
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
},
|
|||
|
data: dataOne
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
if ($('.location-detail-page').length > 0) {
|
|||
|
miniTab.listen();
|
|||
|
|
|||
|
laydate.render({
|
|||
|
elem: '#publish-date',
|
|||
|
});
|
|||
|
|
|||
|
// 渲染表格
|
|||
|
let listUrl = $('#table-container-detail').data('url');
|
|||
|
let insTb = table.render({
|
|||
|
elem: '#table-container-detail',
|
|||
|
toolbar: '#toolbar-tpl-detail',
|
|||
|
defaultToolbar: ['filter', 'exports', { //自定义头部工具栏右侧图标。如无需自定义,去除该参数即可
|
|||
|
title: '搜索'
|
|||
|
, layEvent: 'search'
|
|||
|
, icon: 'layui-icon-search'
|
|||
|
}],
|
|||
|
url: listUrl,
|
|||
|
method: 'post',
|
|||
|
even: true,
|
|||
|
limits: [10, 20, 50, 100, 200, 500, 1000, 2000],
|
|||
|
request: {
|
|||
|
pageName: 'page',
|
|||
|
limitName: 'size',
|
|||
|
},
|
|||
|
parseData: function (res) {
|
|||
|
return {
|
|||
|
"code": res.code, //解析接口状态
|
|||
|
"msg": res.msg, //解析提示文本
|
|||
|
"count": res.data.total, //解析数据长度
|
|||
|
"data": res.data.list //解析数据列表
|
|||
|
};
|
|||
|
},
|
|||
|
page: true,
|
|||
|
cols: [[
|
|||
|
{type: 'checkbox'},
|
|||
|
{field: 'id', minWidth: 50, title: '编号'},
|
|||
|
{field: 'created_at', minWidth: 200, title: '时间'},
|
|||
|
{field: 'nickname', minWidth: 150, title: '用户'},
|
|||
|
{field: 'real_name', minWidth: 150, title: '真实姓名'},
|
|||
|
{field: 'mobile', minWidth: 150, title: '电话'},
|
|||
|
{templet: '#row-action', minWidth: 200, title: '浏览'},
|
|||
|
{field: 'event', minWidth: 80, title: '操作触发'},
|
|||
|
]],
|
|||
|
done: function () {
|
|||
|
Tools.setInsTb(insTb);
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
// 监听搜索操作
|
|||
|
form.on('submit(data-search-btn)', function (data) {
|
|||
|
// 打开新的窗口
|
|||
|
//执行搜索重载
|
|||
|
table.reload('table-container-detail', {
|
|||
|
page: {curr: 1}
|
|||
|
, where: {searchParams: data.field}
|
|||
|
}, 'data');
|
|||
|
|
|||
|
return false;
|
|||
|
});
|
|||
|
}
|
|||
|
});
|