$(function () {
autoFlashHeight();
// 全选报表
$('#select_all_rpt_checkbox').click(function () {
$(this).prop('checked', false);
$('#rpt_table input[name="rptId[]"]').each(function () {
if (parseInt($(this).val()) !== -1) {
$(this).prop('checked', true);
}
});
});
$('#add_rpt_btn').click(function () {
const checkArray = [];
$('#rpt_table input[name="rptId[]"]:checked').each(function() {
checkArray.push({
id: parseInt($(this).val()),
name: $(this).attr('data-name'),
}); //向数组中添加元素
});
postData('/sp/' + spid + '/payment/' + tenderId + '/process/save', { type: 'add-rpt', rpt_list: checkArray }, function (result) {
const html = [];
for (const data of result) {
html.push(`
\n`);
html.push(`${data.rpt_name} | \n`);
html.push(`${data.user_name} | \n`);
html.push(`${data.uid ? _.find(accountList, { id: data.uid }).name : ''} | \n`);
html.push('
\n');
}
tenderRptList = result;
$('#tender_rpt_table').html(html.join(''));
if (result.length === 0) {
$('#process_set').hide();
} else {
fisrtSetProcess();
}
$('#add-rpt').modal('hide');
})
});
let timer = null;
let oldSearchVal = null;
$('#process_set').on('input propertychange', '.gr-search', function(e) {
oldSearchVal = e.target.value;
timer && clearTimeout(timer);
timer = setTimeout(() => {
const newVal = $(this).val();
const code = $(this).attr('data-trid');
let html = '';
if (newVal && newVal === oldSearchVal) {
accountList.filter(item => item && (!cur_uid || item.id !== cur_uid) && (item.name.indexOf(newVal) !== -1 || (item.mobile && item.mobile.indexOf(newVal) !== -1))).forEach(item => {
html += `
${item.name}${item.mobile || ''}
${item.role || ''}
`
});
$(this).parents('.dropdown-menu').children('.book-list').empty();
$(this).parents('.dropdown-menu').children('.book-list').append(html);
// $('#' + code + '_dropdownMenu .book-list').empty();
// $('#' + code + '_dropdownMenu .book-list').append(html);
} else {
if (!$('#' + code + '_dropdownMenu .acc-btn').length) {
accountGroup.forEach((group, idx) => {
if (!group) return;
html += `
${group.groupName}
`;
group.groupList.forEach(item => {
if (!cur_uid || item.id !== cur_uid) {
html += `
${item.name}${item.mobile || ''}
${item.role || ''}
`;
}
});
html += '
';
});
// $('#' + code + '_dropdownMenu .book-list').empty();
// $('#' + code + '_dropdownMenu .book-list').append(html);
$(this).parents('.dropdown-menu').children('.book-list').empty();
$(this).parents('.dropdown-menu').children('.book-list').append(html);
}
}
}, 400);
});
function setLcShowHtml(this_status, this_tr_id, data) {
if (this_status === sp_status.sqspr) {
$('#process_set').find('.lc-show').html('');
} else if (this_status === sp_status.gdspl) {
let addhtml = '\n';
if (data.length !== 0) {
for(const [i, audit] of data.entries()) {
addhtml += makeAudit(audit, transFormToChinese(i+1));
}
addhtml += '- 添加流程
';
} else {
addhtml += makeSelectAudit(this_tr_id, '一');
}
addhtml += '
\n';
$('#process_set').find('.lc-show').html(addhtml);
} else if (this_status === sp_status.gdzs) {
let addhtml = '\n' +
' - \n' +
' 授权审批人\n' +
' \n' +
' \n' +
' \n' +
'
\n';
addhtml += data ? makeAudit(data) : makeSelectAudit(this_tr_id);
addhtml += '
\n';
$('#process_set').find('.lc-show').html(addhtml);
}
}
function fisrtSetProcess() {
$('#tender_rpt_table tr').eq(0).addClass('table-warning');
const tr_id = parseInt($('#tender_rpt_table tr').eq(0).attr('data-id'));
$('#process_set').show();
makeProcess(tr_id);
}
// 初始化选中table
if ($('#tender_rpt_table tr').length > 0) {
fisrtSetProcess();
}
// 选中切换table
$('body').on('click', '#tender_rpt_table tr', function () {
if (!$(this).hasClass('table-warning')) {
$('#tender_rpt_table tr').removeClass('table-warning');
$(this).addClass('table-warning');
const tr_id = parseInt($(this).attr('data-id'));
makeProcess(tr_id);
}
});
// 初始化审批流程
function makeProcess(tr_id) {
const trInfo = _.find(tenderRptList, { id: tr_id });
$('#process_set').find('.card-title').text(trInfo.rpt_name);
cur_uid = trInfo.uid;
let html = '上报人*
';
let divhtml = '';
accountGroup.forEach((group, idx) => {
let didivhtml = '';
if(group) {
group.groupList.forEach(item => {
didivhtml += item.id !== cur_uid ? '\n' +
'' + item.name + '' + item.mobile + '
\n' +
' ' + item.role + '\n' +
' \n' : '';
});
divhtml += ' ' + group.groupName + '\n' +
' \n' + didivhtml +
'
\n';
}
});
if (trInfo.uid) {
const userInfo = _.find(accountList, { id: trInfo.uid });
html += ''+ userInfo.name +'
\n' +
'\n' +
' \n' +
' \n' +
' \n' +
'
\n' +
' \n' +
'
';;
} else {
html +='\n' +
' \n' +
' \n' +
' \n' +
'
\n' +
' \n' +
'
';
}
$('#rpt_user').html(html);
$('input[name="tender_process"][value="'+ trInfo.sp_status +'"]', '#process_set').prop('checked', true);
const spt = sp_status_list[trInfo.sp_status];
$('#process_set').find('.alert-warning').text(spt.name + ':' + spt.msg);
const prop = {
type: 'get-audits',
tr_id: trInfo.id,
status: trInfo.sp_status,
};
postData('/sp/' + spid + '/payment/' + tenderId + '/process/save', prop, function (data) {
setLcShowHtml(trInfo.sp_status, trInfo.id, data);
});
}
// 添加审批流程按钮逻辑
$('body').on('click', '.book-list dt', function () {
const idx = $(this).find('.acc-btn').attr('data-groupid');
const type = $(this).find('.acc-btn').attr('data-type');
if (type === 'hide') {
$(this).parent().find(`div[data-toggleid="${idx}"]`).show(() => {
$(this).children().find('i').removeClass('fa-plus-square').addClass('fa-minus-square-o');
$(this).find('.acc-btn').attr('data-type', 'show');
})
} else {
$(this).parent().find(`div[data-toggleid="${idx}"]`).hide(() => {
$(this).children().find('i').removeClass('fa-minus-square-o').addClass('fa-plus-square');
$(this).find('.acc-btn').attr('data-type', 'hide');
})
}
return false;
});
// 更改审批流程状态
$('#process_set').on('change', `.form-check input`, function () {
// 获取所有审批的checked值并更新
const this_status = parseInt($(this).val());
const this_tr_id = parseInt($('#tender_rpt_table').find('.table-warning').attr('data-id'));
const spt = sp_status_list[this_status];
$(this).parents('.form-group').siblings('.alert-warning').text(spt.name + ':' + spt.msg);
// 拼接post json
const prop = {
type: 'change-status',
tr_id: this_tr_id,
status: this_status
};
postData('/sp/' + spid + '/payment/' + tenderId + '/process/save', prop, function (data) {
const trInfo = _.find(tenderRptList, { id: this_tr_id });
trInfo.sp_status = this_status;
setLcShowHtml(this_status, this_tr_id, data);
});
});
// 选中审批流里的审批人
$('body').on('click', '#process_set .lc-show dl dd', function () {
const id = parseInt($(this).data('id'));
if (!id) return;
let this_tr_id = parseInt($('#tender_rpt_table').find('.table-warning').attr('data-id'));
if (!this_tr_id) this_tr_id = $(this).parents('.dropdown').attr('data-trid');
const user = _.find(accountList, function (item) {
return item.id === id;
});
const this_status = parseInt($(this).parents('.lc-show').siblings('.form-group').find('input:checked').val());
if (this_status === sp_status.gdspl) {
// 判断是否已存在审批人
const aid_num = $(this).parents('ul').find('.remove-audit').length;
for (let i = 0; i < aid_num; i++) {
const aid = parseInt($(this).parents('ul').find('.remove-audit').eq(i).data('id'));
if (aid === id) {
toastr.warning('该审核人已存在,请勿重复添加');
return;
}
}
}
const prop = {
status: this_status,
tr_id: this_tr_id,
audit_id: id,
type: 'add-audit',
};
const _self = $(this);
postData('/sp/' + spid + '/payment/' + tenderId + '/process/save', prop, function (data) {
if (this_status === sp_status.gdspl) {
_self.parents('ul').append(' 添加流程');
}
_self.parents('.spr-span').html('\n' +
''+ user.name +' \n' +
' \n' +
' \n' +
' ' +
' \n');
// ');
});
});
// 选中上报人
$('body').on('click', '#rpt_user dl dd', function () {
const id = parseInt($(this).data('id'));
if (!id) return;
console.log(id);
let this_tr_id = parseInt($('#tender_rpt_table').find('.table-warning').attr('data-id'));
if (!this_tr_id) this_tr_id = $(this).parents('.dropdown').attr('data-trid');
const user = _.find(accountList, function (item) {
return item.id === id;
});
if (!user) toastr.error('用户列表不存在此人');
const prop = {
tr_id: this_tr_id,
uid: id,
type: 'update-report',
};
postData('/sp/' + spid + '/payment/' + tenderId + '/process/save', prop, function (result) {
tenderRptList = result.list;
if (result.updateRows) {
toastr.warning('上报人不能同时作为审批人,审批流已移除 ' + user.name);
}
$('#tender_rpt_table tr[data-id="'+ this_tr_id +'"]').children('td').eq(2).html(user.name);
makeProcess(this_tr_id);
});
//
// const this_status = parseInt($(this).parents('.lc-show').siblings('.form-group').find('input:checked').val());
// if (this_status === sp_status.gdspl) {
// // 判断是否已存在审批人
// const aid_num = $(this).parents('ul').find('.remove-audit').length;
// for (let i = 0; i < aid_num; i++) {
// const aid = parseInt($(this).parents('ul').find('.remove-audit').eq(i).data('id'));
// if (aid === id) {
// toastr.warning('该审核人已存在,请勿重复添加');
// return;
// }
// }
//
// }
// const prop = {
// status: this_status,
// tr_id: this_tr_id,
// audit_id: id,
// type: 'add-audit',
// };
// const _self = $(this);
// postData('/sp/' + spid + '/payment/' + tenderId + '/process/save', prop, function (data) {
// if (this_status === sp_status.gdspl) {
// _self.parents('ul').append(' 添加流程');
// }
// _self.parents('.spr-span').html('\n' +
// ''+ user.name +' \n' +
// ' \n' +
// ' \n' +
// ' ' +
// ' \n');
// // ');
// });
});
// 移除审批人
$('body').on('click', '#process_set .remove-audit', function () {
const id = parseInt($(this).data('id'));
const this_status = parseInt($(this).parents('.lc-show').siblings('.form-group').find('input:checked').val());
const this_tr_id = parseInt($('#tender_rpt_table').find('.table-warning').attr('data-id'));
const prop = {
status: this_status,
tr_id: this_tr_id,
audit_id: id,
type: 'del-audit',
};
const _self = $(this);
postData('/sp/' + spid + '/payment/' + tenderId + '/process/save', prop, function (data) {
if (this_status === sp_status.gdspl) {
const _selflc = _self.parents('.lc-show');
_self.parents('li').remove();
const aid_num = parseInt(_selflc.children('ul').find('li.d-flex').length);
if (aid_num === 0) {
let addhtml = '\n';
addhtml += makeSelectAudit(this_tr_id, '一');
addhtml += '
\n';
_selflc.html(addhtml);
} else {
for (let i = 0; i < aid_num; i++) {
_selflc.find('li.d-flex').eq(i).find('.col-auto').text(transFormToChinese(i+1) + '审');
}
}
} else if (this_status === sp_status.gdzs) {
let addhtml = '\n' +
' - \n' +
' 授权审批人\n' +
' \n' +
' \n' +
' \n' +
'
\n';
addhtml += makeSelectAudit(this_tr_id);
addhtml += '
\n';
_self.parents('.lc-show').html(addhtml);
}
})
});
// 固定审批流-添加流程
$('body').on('click', '#process_set .add-audit', function () {
const num = $(this).parents('ul').children('li').length;
const this_tr_id = parseInt($('#tender_rpt_table').find('.table-warning').attr('data-id'));
const addhtml = makeSelectAudit(this_tr_id, transFormToChinese(num));
$(this).parents('ul').append(addhtml);
$(this).parents('li').remove();
});
// 审批流程-审批人html 生成
function makeAudit(audit, i = '终') {
return '\n' +
' '+ i +'审\n' +
' \n' +
' \n' +
' '+ audit.name +' \n' +
' \n' +
' \n' +
' ' +
// ' \n' +
' \n' +
' ';
}
// 审批流程-选择审批人html 生成
function makeSelectAudit(tr_id, i = '终') {
let divhtml = '';
accountGroup.forEach((group, idx) => {
let didivhtml = '';
if(group) {
group.groupList.forEach(item => {
didivhtml += item.id !== cur_uid ? '\n' +
'' + item.name + '' + item.mobile + '
\n' +
' ' + item.role + '\n' +
' \n' : '';
});
divhtml += ' ' + group.groupName + '\n' +
' \n' + didivhtml +
'
\n';
}
});
let html = '\n' +
' ' + i + '审\n' +
' \n' +
' \n' +
' \n' +
' \n' +
' \n' +
'
\n' +
' \n' +
' \n' +
' ';
return html;
};
$('#add-rpt').on('show.bs.modal', function () {
$('#rpt_table').find('input:checked:not(:disabled)').prop('checked', false);
$('#rpt_table').find('input:not(:disabled)').each(function () {
if (_.findIndex(tenderRptList, { rpt_id: parseInt($(this).val()) }) !== -1) {
$(this).prop('checked', true);
}
});
});
$('#rpt_table input').on('click', function () {
if ($(this).is(':checked') && parseInt($(this).val()) === -1) {
$(this).prop('checked', false);
const index = $("#rpt_table input").index(this);
// 循环选中当前子项值
checkedRptProjectList(rptProjectList[index].items);
}
});
function checkedRptProjectList(items) {
if (items && items.length > 0) {
for (const item of items) {
if (item.ID !== -1 && item.items === null) {
console.log(item);
$('#rpt_table input').eq(item.index).prop('checked', true);
} else {
checkedRptProjectList(item.items);
}
}
}
};
// 安全生产费 流程设置相关
class ProgressMaker {
constructor (setting) {
const self = this;
this.domId = setting.domId;
this.obj = $(setting.domId);
if (setting.rptInfo) this.loadRptInfo(setting.rptInfo);
// 选中上报人
$(setting.domId).on('click', '[name=user] dl dd', function () {
const uid = parseInt($(this).data('id'));
if (!uid) return;
let tr_id = self.rptInfo.id;
const user = _.find(accountList, function (item) { return item.id === uid; });
if (!user) {
toastr.error('用户列表不存在此人');
return;
}
const data = { tr_id, uid, type: 'update-report' };
postData('process/save', data, function (result) {
for (const prop in result.updateData) {
self.rptInfo[prop] = result.updateData[prop];
}
self.refreshUserHtml();
if (result.updateRows) {
toastr.warning('上报人不能同时作为审批人,审批流已移除 ' + user.name);
self.loadAuditList();
}
});
});
// 更改审批流程状态
$(setting.domId).on('change', '[name=detail_process]', function () {
// 获取所有审批的checked值并更新
const status = parseInt($(this).val());
let tr_id = self.rptInfo.id;
const spt = sp_status_list[status];
$(this).parents('.form-group').siblings('.alert-warning').text(spt.name + ':' + spt.msg);
// 拼接post json
const prop = { type: 'change-status', tr_id, status };
postData('/sp/' + spid + '/payment/' + tenderId + '/process/save', prop, function (data) {
self.rptInfo.sp_status = status;
self.rptInfo.auditData = data;
self.setLcShowHtml();
});
});
// 选中审批流里的审批人
$(setting.domId).on('click', '.lc-show dl dd', function () {
const tr_id = self.rptInfo.id;
const id = parseInt($(this).data('id'));
if (!id) return;
const user = _.find(accountList, function (item) {
return item.id === id;
});
const status = parseInt($(this).parents('.lc-show').siblings('.form-group').find('input:checked').val());
if (status === sp_status.gdspl) {
// 判断是否已存在审批人
const aid_num = $(this).parents('ul').find('.remove-audit').length;
for (let i = 0; i < aid_num; i++) {
const aid = parseInt($(this).parents('ul').find('.remove-audit').eq(i).data('id'));
if (aid === id) {
toastr.warning('该审核人已存在,请勿重复添加');
return;
}
}
}
const prop = { status, tr_id, audit_id: id, type: 'add-audit' };
const _self = $(this);
postData('/sp/' + spid + '/payment/' + tenderId + '/process/save', prop, function (data) {
if (status === sp_status.gdspl) {
_self.parents('ul').append(' 添加流程');
}
_self.parents('.spr-span').html('\n' +
''+ user.name +' \n' +
' \n' +
' \n' +
' ' +
' \n');
});
});
// 移除审批人
$(setting.domId).on('click', '.remove-audit', function () {
const id = parseInt($(this).data('id'));
const status = parseInt($(this).parents('.lc-show').siblings('.form-group').find('input:checked').val());
const tr_id = self.rptInfo.id;
const prop = { status, tr_id, audit_id: id, type: 'del-audit' };
const _self = $(this);
postData('process/save', prop, function (data) {
if (status === sp_status.gdspl) {
const _selflc = _self.parents('.lc-show');
_self.parents('li').remove();
const aid_num = parseInt(_selflc.children('ul').find('li.d-flex').length);
if (aid_num === 0) {
let addhtml = '\n';
addhtml += makeSelectAudit(tr_id, '一');
addhtml += '
\n';
_selflc.html(addhtml);
} else {
for (let i = 0; i < aid_num; i++) {
_selflc.find('li.d-flex').eq(i).find('.col-auto').text(transFormToChinese(i+1) + '审');
}
}
} else if (status === sp_status.gdzs) {
let addhtml = '\n' +
' - \n' +
' 授权审批人\n' +
' \n' +
' \n' +
' \n' +
'
\n';
addhtml += self.getAuditSelectHtml();
addhtml += '
\n';
_self.parents('.lc-show').html(addhtml);
}
})
});
// 固定审批流-添加流程
$(setting.domId).on('click', '.add-audit', function () {
const num = $(this).parents('ul').children('li').length;
const addhtml = self.getAuditSelectHtml(transFormToChinese(num));
$(this).parents('ul').append(addhtml);
$(this).parents('li').remove();
});
$(setting.domId).on('input propertychange', '.gr-search', function(e) {
oldSearchVal = e.target.value;
timer && clearTimeout(timer);
timer = setTimeout(() => {
const newVal = $(this).val();
const code = $(this).attr('data-trid');
let html = '';
if (newVal && newVal === oldSearchVal) {
accountList
.filter(item => item && (!self.rptInfo.uid || item.id !== self.rptInfo.uid) && (item.name.indexOf(newVal) !== -1 || (item.mobile && item.mobile.indexOf(newVal) !== -1)))
.forEach(item => {
html += `
${item.name}${item.mobile || ''}
${item.role || ''}
`
});
} else {
if (!$('#' + code + '_dropdownMenu .acc-btn').length) {
accountGroup.forEach((group, idx) => {
if (!group) return;
html += `
${group.groupName}
`;
group.groupList.forEach(item => {
if (!self.rptInfo.uid || item.id !== self.rptInfo.uid) {
html += `
${item.name}${item.mobile || ''}
${item.role || ''}
`;
}
});
html += '
';
});
}
}
$(this).parents('.dropdown-menu').children('.book-list').empty();
$(this).parents('.dropdown-menu').children('.book-list').append(html);
}, 400);
});
}
getAccountHtml(uid) {
const html = [];
accountGroup.forEach((group, idx) => {
if (!group) return;
const groupHtml = [];
group.groupList.forEach(item => {
if (item.id === uid) return;
groupHtml.push('\n' +
'' + item.name + '' + item.mobile + '
\n' +
' ' + item.role + '\n' +
' \n');
});
html.push(`${group.groupName}`,
`${groupHtml.join('')}
`);
});
return html.join('');
}
getSelectHtml(name) {
const tr_id = this.rptInfo.id;
return '\n' +
' \n' +
' \n' +
' \n' +
'
\n' +
' \n';
}
getAuditSelectHtml(i = '终') {
let html = '\n' +
' ' + i + '审\n' +
' \n' + this.getSelectHtml('选择审批人') +
' \n' +
' ';
return html;
}
refreshUserHtml() {
const html = ['上报人*
'];
if (this.rptInfo.uid) {
const userInfo = _.find(accountList, { id: this.rptInfo.uid });
if (userInfo) {
html.push(`${userInfo.name}
`, `${this.getSelectHtml('替换')}
`);
} else {
html.push(`上报人已失效
`, `${this.getSelectHtml('替换')}
`);
}
} else {
html.push(`${this.getSelectHtml('选择上报人')}
`);
}
$('[name=user]', this.domId).html(html.join(''));
}
setLcShowHtml() {
if (this.rptInfo.sp_status === sp_status.sqspr) {
$('.lc-show', this.domId).html('');
} else if (this.rptInfo.sp_status === sp_status.gdspl) {
let addhtml = '\n';
if (this.rptInfo.auditData.length !== 0) {
for(const [i, audit] of this.rptInfo.auditData.entries()) {
addhtml += makeAudit(audit, transFormToChinese(i+1));
}
addhtml += '- 添加流程
';
} else {
addhtml += this.getAuditSelectHtml('一');
}
addhtml += '
\n';
$('.lc-show', this.domId).html(addhtml);
} else if (this.rptInfo.sp_status === sp_status.gdzs) {
let addhtml = '\n' +
' - \n' +
' 授权审批人\n' +
' \n' +
' \n' +
' \n' +
'
\n';
addhtml += this.rptInfo.auditData ? makeAudit(this.rptInfo.auditData) : this.getAuditSelectHtml();
addhtml += '
\n';
$('.lc-show', this.domId).html(addhtml);
}
}
async loadAuditList() {
const prop = {
type: 'get-audits',
tr_id: this.rptInfo.id,
status: this.rptInfo.sp_status,
};
this.rptInfo.auditData = await postDataAsync('process/save', prop);
this.setLcShowHtml();
}
initProgress() {
this.obj.attr('data-trid', this.rptInfo.id);
$('.card-title', this.domId).find('.card-title').text(this.rptInfo.rpt_name);
this.refreshUserHtml();
$('input[name="detail_process"][value="'+ this.rptInfo.sp_status +'"]', this.obj).prop('checked', true).attr('data-trid', this.rptInfo.id);
const spt = sp_status_list[this.rptInfo.sp_status];
$('.alert-warning', this.domId).text(spt.name + ':' + spt.msg);
this.loadAuditList();
}
loadRptInfo(rptInfo) {
this.rptInfo = rptInfo;
this.initProgress();
}
}
const safeProgress = new ProgressMaker({ domId: '#safe', rptInfo: safeRpt });
});