var pageCurr;
var pageCount = 0;
var treeCond;
var admin;
var planNeedXmlSelData;
layui.config({
base: baseUrl + "/static/layui/lay/modules/"
}).extend({
steps: 'steps/steps',
cascader: 'cascader/cascader',
}).use(['table','laydate','layer','upload', 'form', 'admin', 'xmSelect', 'steps', 'element', 'cascader', 'tree', 'dropdown'], function(){
var table = layui.table;
var $ = layui.jquery;
var layer = layui.layer;
var layDate = layui.laydate;
var form = layui.form;
admin = layui.admin;
var upload = layui.upload;
var xmSelect = layui.xmSelect;
var steps = layui.steps;
var cascader = layui.cascader;
var tree = layui.tree;
var dropdown = layui.dropdown;
var element = layui.element;
$('#organization').html(localStorage.getItem('nickname') + ' ');
// 部门人员 筛选
dropdown.render({
elem: '#organization'
,content: ['
'].join('')
,style: 'width: 370px; height: 350px; padding: 0 15px; box-shadow: 1px 1px 30px rgb(0 0 0 / 12%);'
,ready: function(){
loadTree();
}
});
// 数据同步
dropdown.render({
elem: '#data-btn'
,align: 'right'
,style: 'border-radius: 5px;'
,className: 'site-dropdown-demo'
,data: [
{
title: '模板下载'
,templet: ' {{d.title}}'
,id: 1
},
{
title: '导入 Excel'
,templet: ' {{d.title}}'
,id: 2
},
{type: '-'}, //分割线
{
title: '导出 Excel'
,templet: ' {{d.title}}'
,id: 3
}
]
,click: async function(item){
switch (item.id) {
case 1:
// 模板下载
layer.load(1, {shade: [0.1,'#fff']});
location.href = baseUrl + "/mould/跟踪项目导入模板.xls";
layer.closeAll('loading');
break
case 2:
// 导入 Excel
$("#importExcel").trigger("click");
break
case 3:
// 导出 Excel
layer.msg("来不及做,等等", {icon: 6});
break
default:
break
}
}
});
// 树形图
var organizationTree;
window.loadTree = function(condition){
var loadIndex = layer.load(2);
$.ajax({
url: baseUrl+"/dept/user/tree/auth",
headers: {'token': localStorage.getItem('token')},
data: {
'condition': condition
},
method: 'POST',
success: function (res) {
layer.close(loadIndex);
if (res.code === 200){
organizationTree = tree.render({
elem: '#organizationTree',
id: 'organizationTree',
onlyIconControl: true,
data: res.data,
click: function (obj) {
treeCond = {
key: obj.data.key,
val: obj.data.id
}
$('#organization').html(obj.data.title + ' ');
$('#organizationTree').find('.ew-tree-click').removeClass('ew-tree-click');
$(obj.elem).children('.layui-tree-entry').addClass('ew-tree-click');
clearFormVal($('#search-box'));
tableIns.reload({
where: {[obj.data.key]: obj.data.id},
page: {curr: 1}
});
}
});
treeData = res.data;
} else if (res.code === 403){
top.location.href = baseUrl+"/";
} else {
layer.msg(res.msg)
}
}
})
}
// 数据渲染
tableIns = table.render({
elem: '#plan',
headers: {token: localStorage.getItem('token')},
url: baseUrl+'/plan/page/auth',
page: true,
limit: 15,
limits: [15, 30, 50, 100, 200, 500],
// cellMinWidth: 100,
height: 'full-148',
// size: 'sm',
skin: 'line',
cols: [[
{type: 'checkbox'}
// ,{field: 'id', align: 'center',title: 'ID'}
// ,{field: 'hostId$', align: 'center',title: '所属商户'}
,{field: 'userId$', align: 'left',title: '业务员',hide: false, width: 100}
,{field: 'planType$', align: 'left',title: '业务类型', width: 150,hide: false}
,{field: 'name', align: 'left',title: '售前规划申请单名称', width: 220, style: 'color: #1890ff;cursor:pointer', event: 'more',hide: false}
,{field: 'uuid', align: 'left',title: '规划单号', width: 100,hide: false}
,{field: 'planNeed$', align: 'left',title: '所需', templet:function(d){return emptyShow(d.planNeed$)},hide: false}
,{field: 'deptId$', align: 'left',title: '所属部门',hide: true}
,{field: 'planner$', align: 'left',title: '规划员',hide: false, width: 100}
// ,{field: 'nowHeadman$', align: 'left',title: '规划组长',hide: true}
,{field: 'orderId$', align: 'left',title: '跟踪项目', width: 220, style: 'color: #1890ff;cursor:pointer', event: 'orderMore',hide: false}
// ,{field: 'cstmrId$', align: 'left',title: '甲方单位', width: 220, style: 'color: #1890ff;cursor:pointer', event: 'cstmrMore',hide: true}
,{field: 'appleTime$', align: 'left',title: '申请日期', hide: true}
// ,{field: 'beItem$', align: 'center',title: '立项'}
// ,{field: 'planner', align: 'left',title: '规划员', templet:function(d){return emptyShow(d.planner)}}
// ,{field: 'finishTime$', align: 'center',title: '完成时间'}
// ,{field: 'form', align: 'center',title: '表单内容'}
// ,{field: 'change$', align: 'center',title: '更改方案'}
// ,{field: 'changeTime', align: 'center',title: '更改次数'}
// ,{field: 'changeReason', align: 'center',title: '更改方案原因'}
// ,{field: 'planBonus', align: 'center',title: '规格奖金'}
// ,{field: 'planLeaderBonus', align: 'center',title: '规格组长奖金'}
// ,{field: 'files', align: 'center',title: '附件'}
,{field: 'settle$', align: 'center',title: '进度', width: 150}
// ,{field: 'settleMsg', align: 'center',title: '审核进度'}
// ,{field: 'comment', align: 'center',title: '评论'}
// ,{field: 'status$', align: 'center',title: '状态'}
,{field: 'createTime$', align: 'left',title: '添加日期', width: 160, hide: false}
,{field: 'updateBy$', align: 'left',title: '修改人', width: 100}
,{field: 'updateTime$', align: 'left',title: '修改时间', hide: true}
,{field: 'memo', align: 'left',title: '注释', hide: true}
,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width: 280}
]],
request: {
pageName: 'curr',
pageSize: 'limit'
},
parseData: function (res) {
return {
'code': res.code,
'msg': res.msg,
'count': res.data.total,
'data': res.data.records
}
},
response: {
statusCode: 200
},
done: function(res, curr, count) {
if (res.code === 403) {
top.location.href = baseUrl+"/";
}
pageCurr=curr;pageCount=count;
limit();
}
});
//多文件列表
var uploadListIns = upload.render({
elem: '#data-btn-file2'
,elemList: $('#data-btn-file3') //列表元素对象
,url: '/plan/insert/file/auth'
,accept: 'file'
,multiple: true
,number: 10
,auto: false
,bindAction: '#testListAction'
,choose: function(obj){
// 赋值
this.data.planId=$('.layui-layer-title').text()
var that = this;
var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
//读取本地文件
obj.preview(function(index, file, result){
var tr = $([''
,''+ file.name +' '
,''+ (file.size/1014).toFixed(1) +'kb '
,' '
,''
,'重传 '
,'删除 '
,'下载 '
,' '
,' '].join(''));
//单个重传
tr.find('.demo-reload').on('click', function(){
obj.upload(index, file);
});
//删除
tr.find('.demo-delete').on('click', function(){
delete files[index]; //删除对应的文件
tr.remove();
uploadListIns.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选
});
that.elemList.append(tr);
element.render('progress'); //渲染新加的进度条组件
});
}
,done: function(res, index, upload){ //成功的回调
var that = this;
//if(res.code == 0){ //上传成功
var tr = that.elemList.find('tr#upload-'+ index)
,tds = tr.children();
tds.eq(3).html(''); //清空操作
delete this.files[index]; //删除文件队列已经上传成功的文件
return;
//}
this.error(index, upload);
}
,allDone: function(obj){ //多文件上传完毕后的状态回调
console.log(obj)
}
,error: function(index, upload){ //错误回调
var that = this;
var tr = that.elemList.find('tr#upload-'+ index)
,tds = tr.children();
tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传
}
,progress: function(n, elem, e, index){
element.progress('progress-demo-'+ index, n + '%'); //执行进度条。n 即为返回的进度百分比
}
});
// 添加
$("#planAddBtn").click(function () {
let loadIndex = layer.load(2);
$.ajax({
url: baseUrl+"/planType/list/radio/auth",
headers: {'token': localStorage.getItem('token')},
method: 'POST',
success: function (res) {
if (res.code === 200){
admin.open({
type: 1,
area: '300px',
title: '新建售前规划申请单',
content: $('#addDialogPre').html(),
success: function (layero, dIndex) {
let template = Handlebars.compile($('#planTypeTpl').html());
$('#planTypeBox').html(template({list: res.data.map(function (d) {
return {
id: d.id,
name: d.name,
checked: d.checked
}
})})
);
element.init();form.render();
layer.close(loadIndex);
// 确认规划单类型
form.on('submit(planTypeSubmit)', function (data) {
layer.close(dIndex);
let planTypeId = data.field.planType;
let loadIndex0 = layer.load(2);
$.ajax({
url: baseUrl + "/planType/" + planTypeId + "/plan/auth",
headers: {'token': localStorage.getItem('token')},
method: 'GET',
success: function (res0) {
let planType = res0.data.planType;
if (res0.code === 200) {
admin.open({
type: 1,
area: ["95%", "90%"],
offset: 'auto',
title: '添加售前规划申请单' + ' - ' + planType.name,
content: $('#editDialog').html(),
success: function (layero0, dIndex0) {
$('#customizeBox').html(planType.html)
layer.close(loadIndex0);
let orderSel = loadOrderSel();
let cstmrSel = loadCstmrSel();
let userSel = loadUserSel();
userSel.setValue([
{name: res0.data.nickName, value: Number(res0.data.userId)},
])
let planNeedSel = loadPlanNeedSel();
form.val('detail', {
planTypeName: planType.name
});
layDateRender();
form.on('submit(editSubmit)', function (data) {
data.field.planType = planType.id;
data.field.orderId = orderSel.getValue()[0] ? orderSel.getValue()[0].value : null;
data.field.cstmrId = cstmrSel.getValue()[0] ? cstmrSel.getValue()[0].value : null;
data.field.userId = userSel.getValue()[0] ? userSel.getValue()[0].value : null;
// data.field.planNeed = planNeedSel.getValue()[0] ? planNeedSel.getValue()[0].value : null;
var planNeedValue= planNeedSel.getValue()[0] ? planNeedSel.getValue()[0].value : null;
for (var i=1;i'
+ '' + (file.size / 1024).toFixed(1) + 'kb '
// + ' '
+ ''+'已完成'+' '
+ ''
+ '重传 '
// + '删除 '
+ '下载 '
+ ' ';
// 将tr元素添加到目标table中
targetTable.appendChild(tr);
});
}else {
console.log('Failed to get file list error.');
}
},
error: function() {
console.log('Failed to get file list.');
}
});
break;
}
});
// 点击下载按钮时触发文件下载
$('#data-btn-file3').on('click', 'a', function() {
// var downloadUrl = $(this).attr('href');
// console.log(downloadUrl)
// // console.log(baseUrl)
// // window.open("/\//"+downloadUrl);
// // return false;
// // var downloadUrl = $(this).attr('href');
// // console.log(downloadUrl)
// // // 发起 AJAX 请求,获取文件
// $.ajax({
// url: '/plan/download/file/auth',
// type: 'POST',
// data: { downloadUrl: downloadUrl }, // 传递下载链接作为参数
// success: function(response) {
// // console.log(response)
// // // window.open(baseUrl+response.msg)
// // // 创建一个Blob对象
// // var blob = new Blob([response]);
// // // 使用FileSaver保存文件
// // var fileName = downloadUrl.substring(downloadUrl.lastIndexOf('\\') + 1);
// // console.log(fileName)
// // saveAs(blob, fileName);
// return false;
// },
// error: function() {
// layer.msg('请求文件下载失败');
// }
// });
var downloadUrl = $(this).attr('href');
console.log(downloadUrl)
if (downloadUrl == "" || downloadUrl == null) {
layer.msg('请先上传app文件',{time:1000},() => {
parent.location.reload()
})
}else{
window.open(downloadUrl);
}
return false; // 阻止默认的链接跳转行为
});
function approval(planId, plannerId, dIdx) {
let loadIndex = layer.load(2);
$.ajax({
url: baseUrl+"/plan/approval/auth",
headers: {'token': localStorage.getItem('token')},
data: {
planId: planId,
plannerId: plannerId
},
method: 'POST',
success: function (res) {
if (dIdx) {
layer.close(dIdx);
}
layer.close(loadIndex);
if (res.code === 200){
layer.msg(res.msg, {icon: 1});
tableReload();
} else if (res.code === 403){
top.location.href = baseUrl+"/";
} else {
layer.msg(res.msg, {icon: 2});
}
}
})
}
/* 弹窗 - 新增、修改 */
function showEditModel(mData) {
let loadIndex = layer.load(2);
$.ajax({
url: baseUrl + "/plan/" + mData.id + "/auth",
headers: {'token': localStorage.getItem('token')},
method: 'GET',
success: function (res) {
layer.close(loadIndex);
if (res.code === 200){
let plan = res.data;
admin.open({
type: 1,
area: ["95%", "90%"],
offset: 'auto',
title: '编辑售前规划申请单 - ' + plan.planType$,
content: $('#editDialog').html(),
success: function (layero, dIndex) {
$('#customizeBox').html(plan.formHtml);
let orderSel = loadOrderSel();
let cstmrSel = loadCstmrSel();
let userSel = loadUserSel();
let planNeedSel = loadPlanNeedSel();
if (plan.orderId) { orderSel.setValue([{name: plan.orderId$, value: plan.orderId}]); }
if (plan.cstmrId) { cstmrSel.setValue([{name: plan.cstmrId$, value: plan.cstmrId}]); }
if (plan.userId) { userSel.setValue([{name: plan.userId$, value: plan.userId}]); }
let split = plan.planNeed.split("-");
if (plan.planNeed) {
var data = []
split.forEach((item,idx) => {
data.push(parseInt(item))
})
planNeedXmlSelData = data
}
layDateRender(plan);
plan['planTypeName'] = plan.planType$;
form.val('detail', plan);
form.on('submit(editSubmit)', function (data) {
data.field.orderId = orderSel.getValue()[0] ? orderSel.getValue()[0].value : null;
data.field.cstmrId = cstmrSel.getValue()[0] ? cstmrSel.getValue()[0].value : null;
data.field.userId = userSel.getValue()[0] ? userSel.getValue()[0].value : null;
// data.field.planNeed = planNeedSel.getValue()[0] ? planNeedSel.getValue()[0].value : null;
var planNeedValue= planNeedSel.getValue()[0] ? planNeedSel.getValue()[0].value : null;
for (var i=1;i