layui.define(['tool'], function (exports) {
const layer = layui.layer, tool = layui.tool,form=layui.form, table=layui.table, upload = layui.upload;
// 查找指定的元素在数组中的位置
Array.prototype.indexOf = function (val) {
for (var i = 0; i < this.length; i++) {
if (this[i] == val) {
return i;
}
}
return -1;
};
// 通过索引删除数组元素
Array.prototype.remove = function (val) {
var index = this.indexOf(val);
if (index > -1) {
this.splice(index, 1);
}
};
const obj = {
addFile: function (options) {
let that = this;
let settings = {
type:0,
btn: 'uploadBtn',
box: 'fileBox',
url: "/api/index/upload",
accept: 'file', //普通文件
exts: 'png|jpg|gif|jpeg|doc|docx|ppt|pptx|xls|xlsx|pdf|zip|rar|7z', //只允许上传文件格式
colmd:4,
isSave:false,
ajaxSave:function(val){},
ajaxDelete:function(val){}
};
let opts = $.extend({}, settings, options);
if(opts.type==0){
//虚拟删除
$('#'+opts.box).on('click', '.btn-delete', function () {
let file_id = $(this).data('id');
let idsStr = $('#'+opts.box+'Input').val(),idsArray = [];
if (idsStr != '') {
idsArray = idsStr.split(",");
}
idsArray.remove(file_id);
$('#'+opts.box+'Input').val(idsArray.join(','));
$('#fileItem' + file_id).remove();
})
//ajax删除
$('#'+opts.box).on('click', '.ajax-delete', function () {
let file_id = $(this).data('id');
let idsStr = $('#'+opts.box+'Input').val(),idsArray = [];
if (idsStr != '') {
idsArray = idsStr.split(",");
}
idsArray.remove(file_id);
layer.confirm('确定删除该附件吗?', {
icon: 3,
title: '提示'
}, function(index) {
if (typeof (opts.ajaxSave) == "function") {
opts.ajaxSave(idsArray.join(','));
}
layer.close(index);
});
})
}
if(opts.type==1){
//ajax删除
$('#'+opts.box).on('click', '.ajax-delete', function () {
let file_id = $(this).data('id');
layer.confirm('确定删除该附件吗?', {
icon: 3,
title: '提示'
}, function(index) {
if (typeof (opts.ajaxSave) == "function") {
opts.ajaxDelete(file_id);
}
layer.close(index);
});
})
}
//多附件上传
upload.render({
elem: '#'+opts.btn,
url: opts.url,
accept: opts.accept,
exts: opts.exts,
multiple: true,
done: function(res){
layer.msg(res.msg);
if (res.code == 0) {
//上传成功
if(opts.type==0){
let idsStr = $('#'+opts.box+'Input').val(),idsArray = [];
if (idsStr != '') {
idsArray = idsStr.split(",");
}
idsArray.push(res.data.id);
$('#'+opts.box+'Input').val(idsArray.join(','));
let temp = `
`;
$('#'+opts.box).append(temp);
if (typeof (opts.ajaxSave) == "function" && opts.isSave ==true) {
opts.ajaxSave(idsArray.join(','));
}
}
if(opts.type==1){
if (typeof (opts.ajaxSave) == "function" && opts.isSave ==true) {
opts.ajaxSave(res);
}
}
}
}
});
},
//选择部门
departmentPicker:function(type,callback){
let select_type = type==1?'radio':'checkbox',departmentTable;
layer.open({
type:1,
title:'选择部门',
area:['500px','536px'],
content:``,
success:function(){
departmentTable=table.render({
elem: '#departmentBox'
,url: "/api/index/get_department"
,page: false //开启分页
,cols: [[
{type:select_type,title: '选择'}
,{field:'id', width:80, title: '编号', align:'center'}
,{field:'title',title: '部门名称'}
]]
});
},
btn: ['确定'],
btnAlign:'c',
yes: function(){
var checkStatus = table.checkStatus(departmentTable.config.id);
var data = checkStatus.data;
if(data.length>0){
callback(data);
layer.closeAll();
}else{
layer.msg('请选择部门');
return;
}
}
})
},
//选择岗位
positionPicker:function(type,callback){
let select_type = type==1?'radio':'checkbox',positionTable;
layer.open({
title:'选择岗位',
type:1,
area:['390px','436px'],
content:'',
success:function(){
positionTable=table.render({
elem: '#positionBox'
,url: "/api/index/get_position"
,page: false //开启分页
,cols: [[
{type:select_type,title: '选择'}
,{field:'id', width:80, title: '编号', align:'center'}
,{field:'name',title: '岗位名称'}
]]
});
},
btn: ['确定'],
btnAlign:'c',
yes: function(){
var checkStatus = table.checkStatus(positionTable.config.id);
var data = checkStatus.data;
if(data.length>0){
callback(data);
layer.closeAll();
}else{
layer.msg('请选择岗位');
return;
}
}
})
},
//选择客户
customerPicker:function(callback){
var customeTable;
layer.open({
title: '选择客户',
area: ['600px', '580px'],
type: 1,
content: '',
success: function () {
customeTable = table.render({
elem: '#customerTable'
, url: '/contract/api/get_customer'
, page: true //开启分页
, limit: 10
, cols: [[
{ type: 'radio', title: '选择' }
, { field: 'id', width: 100, title: '编号', align: 'center' }
, { field: 'name', title: '客户名称' }
]]
});
//客户搜索提交
form.on('submit(search_customer)', function (data) {
customeTable.reload({ where: { keywords: data.field.keywords }, page: { curr: 1 } });
return false;
});
},
btn: ['确定'],
btnAlign: 'c',
yes: function () {
var checkStatus = table.checkStatus(customeTable.config.id);
var data = checkStatus.data;
if (data.length > 0) {
callback(data[0]);
layer.closeAll();
}
else {
layer.msg('请先选择客户');
return false;
}
}
})
},
//选择合同
contractPicker:function(callback){
var contractTable;
layer.open({
title: '选择合同',
area: ['600px', '580px'],
type: 1,
content: '',
success: function () {
contractTable = table.render({
elem: '#contractTable'
, url: '/contract/api/get_contract'
, page: true //开启分页
, limit: 10
, cols: [[
{ type: 'radio', title: '选择' }
, { field: 'id', width: 100, title: '编号', align: 'center' }
, { field: 'name', title: '合同名称' }
]]
});
//项目搜索提交
form.on('submit(search_contract)', function (data) {
contractTable.reload({ where: { keywords: data.field.keywords }, page: { curr: 1 } });
return false;
});
},
btn: ['确定'],
btnAlign: 'c',
yes: function () {
var checkStatus = table.checkStatus(contractTable.config.id);
var data = checkStatus.data;
if (data.length > 0) {
callback(data[0]);
layer.closeAll();
}
else {
layer.msg('请先选择合同');
return false;
}
}
})
}
};
//选择部门
$('body').on('click','.picker-depament',function () {
let that = $(this);
let callback = function(data){
that.val(data[0].title);
that.next().val(data[0].id);
}
obj.departmentPicker(1,callback);
});
$('body').on('click','.picker-depaments',function () {
let that = $(this),ids = [],names=[];
let callback = function(data){
for ( var i = 0; i