605 lines
22 KiB
JavaScript
605 lines
22 KiB
JavaScript
var example = null;
|
||
var pers = null;
|
||
var form = null;
|
||
let moreOptionsTimeout;
|
||
|
||
let currentMenu = null; // 当前打开的菜单
|
||
let currentBtn = null; // 当前打开菜单的按钮
|
||
layui.use(['layer', 'form'], function () {
|
||
var layer = layui.layer;
|
||
form = layui.form;
|
||
form.render();
|
||
form.verify();
|
||
pers = checkPermission();
|
||
init();
|
||
$("#searchBt").click(function () {
|
||
example.ajax.reload();
|
||
});
|
||
$(document).ready(function () {
|
||
getPro(); // 初始化时加载工程下拉列表
|
||
|
||
// 点击 .more-btn 显示/隐藏菜单
|
||
$(document).on('click', '.more-btn', function (e) {
|
||
e.stopPropagation(); // 阻止事件冒泡到 document
|
||
|
||
var $btn = $(this);
|
||
var id = $btn.data('id');
|
||
var proId = $btn.data('pro-id');
|
||
var contractStatus = $btn.data('contract-status');
|
||
|
||
// 如果点击的是当前已打开菜单的按钮,则关闭它
|
||
if (currentBtn && currentBtn.is($btn) && currentMenu) {
|
||
currentMenu.remove();
|
||
currentMenu = null;
|
||
currentBtn = null;
|
||
return;
|
||
}
|
||
|
||
// 移除旧菜单和样式
|
||
if (currentMenu) {
|
||
currentMenu.remove();
|
||
}
|
||
|
||
// 创建新的 moreOptions 菜单
|
||
var moreOptions = $("<div class='more-options'>");
|
||
|
||
if (contractStatus == 0) {
|
||
moreOptions.append(buttonScopeAdjustView(id, proId, "", pers));
|
||
moreOptions.append(buttonContentAdjustView(id, "", pers));
|
||
moreOptions.append(buttonPeriodAdjustView(id, "", pers));
|
||
moreOptions.append(buttonPriceAdjustView(id, "", pers));
|
||
moreOptions.append(buttonProtocolTerminateView(id, "", pers));
|
||
moreOptions.append(buttonDelView(id, "", pers));
|
||
}
|
||
moreOptions.append(buttonAdjustRecordView(id, "", pers));
|
||
|
||
|
||
$btn.after(moreOptions); // 插入到 .more-btn 后面
|
||
|
||
// 更新当前状态
|
||
currentMenu = moreOptions;
|
||
currentBtn = $btn;
|
||
});
|
||
|
||
// 点击文档空白处关闭菜单
|
||
$(document).on('click', function (e) {
|
||
if (!$(e.target).closest('.more-btn, .more-options').length && currentMenu) {
|
||
currentMenu.remove();
|
||
currentMenu = null;
|
||
currentBtn = null;
|
||
}
|
||
});
|
||
|
||
// 更多按钮悬停效果
|
||
/*$(document).on('mouseenter', '.more-btn', function () {
|
||
var $btn = $(this);
|
||
var id = $btn.data('id');
|
||
var proId = $btn.data('proId');
|
||
var contractStatus = $btn.data('contractStatus');
|
||
|
||
// 清除之前的定时器
|
||
if (moreOptionsTimeout) clearTimeout(moreOptionsTimeout);
|
||
// 如果已经存在就不重复创建
|
||
if ($btn.next('.more-options').length === 0) {
|
||
var moreOptions = $("<div class='more-options'>");
|
||
// 添加各个功能按钮
|
||
moreOptions.append(buttonScopeAdjustView(id,proId, "", pers));
|
||
moreOptions.append(buttonContentAdjustView(id, "", pers));
|
||
moreOptions.append(buttonPeriodAdjustView(id, "", pers));
|
||
moreOptions.append(buttonPriceAdjustView(id, "", pers));
|
||
moreOptions.append(buttonAdjustRecordView(id, "", pers));
|
||
if(contractStatus == 0){
|
||
moreOptions.append(buttonProtocolTerminateView(id, "", pers));
|
||
}
|
||
moreOptions.append(buttonDelView(id, "", pers));
|
||
|
||
$btn.after(moreOptions); // 插到 .more-btn 后面
|
||
}
|
||
});
|
||
|
||
$(document).on('mouseleave', '.more-btn', function () {
|
||
var $btn = $(this);
|
||
startHideTimer($btn.next('.more-options'));
|
||
});
|
||
|
||
// 鼠标进入 下拉菜单:不关闭
|
||
$(document).on('mouseenter', '.more-options', function () {
|
||
if (moreOptionsTimeout) clearTimeout(moreOptionsTimeout);
|
||
});
|
||
|
||
// 鼠标离开 下拉菜单:准备关闭
|
||
$(document).on('mouseleave', '.more-options', function () {
|
||
startHideTimer($(this));
|
||
});*/
|
||
|
||
// 开始计时器用于关闭菜单
|
||
function startHideTimer($menu) {
|
||
if (moreOptionsTimeout) clearTimeout(moreOptionsTimeout);
|
||
moreOptionsTimeout = setTimeout(function () {
|
||
$menu.remove();
|
||
}, 200);
|
||
}
|
||
|
||
});
|
||
});
|
||
|
||
//重置
|
||
$("#resetBt").click(function () {
|
||
$("#proId").val("");
|
||
$("#contractCode").val("");
|
||
$("#subName").val("");
|
||
$("#partyUser").val("");
|
||
$("#teamName").val("");
|
||
|
||
// 重新渲染 select 下拉框
|
||
layui.form.render("select");
|
||
example.ajax.reload();
|
||
});
|
||
|
||
//查询
|
||
function init() {
|
||
example =
|
||
$('#dt-table').DataTable({
|
||
"searching": false,
|
||
"processing": true, //加载数据时显示进度状态
|
||
"serverSide": true,
|
||
"pagingType": "full_numbers", //首页|尾页
|
||
"language": {
|
||
"url": ctxPath + "/js/plugin/datatables/Chinese.lang"
|
||
},
|
||
"ajax": {
|
||
"url": ctxPath + "/teamSmallBagDryTreaty/getList",
|
||
"type": "post",
|
||
"data": function (d) {
|
||
d.proId = $("#proId").val();
|
||
d.contractCode = $("#contractCode").val();
|
||
d.subName = $("#subName").val();
|
||
d.partyUser = $("#partyUser").val();
|
||
d.teamName = $("#teamName").val();
|
||
},
|
||
"error": function (xhr, textStatus, errorThrown) {
|
||
var msg = xhr.responseText;
|
||
console.log(msg);
|
||
var response = JSON.parse(msg);
|
||
var code = response.code;
|
||
var message = response.message;
|
||
if (code == 400) {
|
||
layer.msg(message);
|
||
} else if (code == 401) {
|
||
localStorage.removeItem("token");
|
||
layer.msg("token过期,请先登录", {shift: -1, time: 1000}, function () {
|
||
location.href = ctxPath + '/login.html';
|
||
});
|
||
} else if (code == 403) {
|
||
console.log("未授权:" + message);
|
||
layer.msg('未授权');
|
||
} else if (code == 500) {
|
||
console.log('系统错误:' + message);
|
||
}
|
||
}
|
||
},
|
||
"lengthMenu": [[10, 20, 50], [10, 20, 50]], // 设置每页显示数据量选项
|
||
"drawCallback": function () {
|
||
// alert( '表格重绘了' );
|
||
var thisDataTable = $('#dt-table').DataTable();
|
||
$(".pagination").append("<li>" +
|
||
"<a class='paginate_button' style='padding:4px;' href='#' tabindex='0'>到 <input style='margin:0px;width:40px;' id='changePage'> 页</a>" +
|
||
"<a class='paginate_button' style='margin-bottom:1px' href='#' tabindex='0' id='dataTable-btn'>确认</a></li>");
|
||
//点击按钮跳转指定页数
|
||
$('#dataTable-btn').click(function (e) {
|
||
if ($("#changePage").val() && $("#changePage").val() > 0) {
|
||
var redirectpage = $("#changePage").val() - 1;
|
||
} else {
|
||
var redirectpage = 0;
|
||
}
|
||
thisDataTable.page(redirectpage).draw('page');
|
||
});
|
||
//敲击回车键跳转指定页数
|
||
$("#changePage").keypress(function (e) {
|
||
if (event.keyCode == 13) {
|
||
if ($("#changePage").val() && $("#changePage").val() > 0) {
|
||
var redirectpage = $("#changePage").val() - 1;
|
||
} else {
|
||
var redirectpage = 0;
|
||
}
|
||
thisDataTable.page(redirectpage).draw('page');
|
||
}
|
||
});
|
||
},
|
||
"dom": "<'dt-toolbar'r>t<'dt-toolbar-footer'<'col-sm-4 col-xs-4 hidden-xs'i><'col-xs-8 col-sm-8' p v>><'dt-table-length'l>",
|
||
"columns": [
|
||
{
|
||
"width": "5%",
|
||
"orderable": false,
|
||
data: function (row, type, set, meta) {
|
||
var c = meta.settings._iDisplayStart + meta.row + 1;
|
||
return c;
|
||
}
|
||
},
|
||
{"data": "contractCode", "orderable": false, "defaultContent": ""},
|
||
{"data": "proName", "orderable": false, "defaultContent": ""},
|
||
{"data": "subName", "orderable": false, "defaultContent": ""},
|
||
{"data": "teamName", "orderable": false, "defaultContent": ""},
|
||
{"data": "partyUser", "orderable": false, "defaultContent": ""},
|
||
{
|
||
"data": "", "orderable": false, "defaultContent": "",
|
||
"render": function (data, type, row) {
|
||
var planStartTime = row['planStartTime'];
|
||
var planEndTime = row['planEndTime'];
|
||
return planStartTime + "~" + planEndTime;
|
||
}
|
||
},
|
||
{"data": "contractMoney", "orderable": false, "defaultContent": ""},
|
||
{"data": "contractDate", "orderable": false, "defaultContent": ""},
|
||
{
|
||
"data": "", "orderable": false, "defaultContent": "",
|
||
"render": function (data, type, row) {
|
||
var contractStatus = row['contractStatus'];
|
||
if (contractStatus == 1) {
|
||
return "已终止";
|
||
} else if (contractStatus == 0) {
|
||
return "生效中";
|
||
}
|
||
}
|
||
},
|
||
{
|
||
"data": "",
|
||
"defaultContent": "",
|
||
"orderable": false,
|
||
"width": "10%",
|
||
"render": function (data, type, row) {
|
||
var id = row['id'];
|
||
var proId = row['proId'];
|
||
var contractStatus = row['contractStatus'];
|
||
var html = '';
|
||
html += buttonDetailView(id, "", pers);
|
||
html += buttonMoreView(id,proId,contractStatus, "", pers);
|
||
return html;
|
||
}
|
||
},
|
||
|
||
],
|
||
"order": [] //在栏目列上显示排序功能
|
||
});
|
||
}
|
||
|
||
//添加数据
|
||
function insertTeamPackageload() {
|
||
let index = layer.open({
|
||
title: ['包干合同模版预览', 'color:#3B70A1;background-color:#E8ECEB;font-size:20px'],
|
||
type: 2,
|
||
content: 'teamPackageManageForm.html',
|
||
area: ['90%', '90%'],
|
||
maxmin: false,
|
||
});
|
||
}
|
||
|
||
// 详情按钮
|
||
function buttonDetailView(id, permission, pers) {
|
||
if (permission != "") {
|
||
if ($.inArray(permission, pers) < 0) {
|
||
return "";
|
||
}
|
||
}
|
||
var btn = $("<button class='layui-btn layui-btn-xs' title='详情' onclick='detailView(\"" + id + "\")'>详情</button>");
|
||
return btn.prop("outerHTML");
|
||
}
|
||
|
||
/**
|
||
* 详情
|
||
* */
|
||
function detailView(id) {
|
||
layer.open({
|
||
title: ['详情', 'color:#3B70A1;background-color:#E8ECEB;font-size:20px'],
|
||
type: 2,
|
||
content: 'teamPackageManageDetailForm.html',
|
||
area: ['90%', '90%'],
|
||
maxmin: false,
|
||
btn: ['关闭'],
|
||
success: function (layero, index) {
|
||
var myIframe = window[layero.find('iframe')[0]['name']];
|
||
myIframe.selectDetail(id); //aaa()为子页面的方法
|
||
},
|
||
});
|
||
}
|
||
|
||
// 更多按钮
|
||
function buttonMoreView(id,proId,contractStatus, permission, pers) {
|
||
if (permission != "") {
|
||
if ($.inArray(permission, pers) < 0) {
|
||
return "";
|
||
}
|
||
}
|
||
var btn = $("<button class='layui-btn layui-btn-xs more-btn' style='margin-left: 20px;' data-id='" + id + "' data-pro-id='" + proId + "' data-contract-Status='" + contractStatus + "'>更多</button>");
|
||
return btn.prop("outerHTML");
|
||
}
|
||
|
||
/**
|
||
* 删除工程
|
||
* */
|
||
function delView(id) {
|
||
closeView()
|
||
layer.confirm("确定删除吗?", function () {
|
||
$.ajax({
|
||
type: 'post',
|
||
url: ctxPath + '/teamSmallBagDryTreaty/delData',
|
||
data: {contractId: id},
|
||
dataType: 'json',
|
||
success: function (data) {
|
||
if (data.resMsg == "操作成功") {
|
||
layer.alert('删除成功', {icon: 1});
|
||
example.ajax.reload(); // 刷新页面
|
||
} else {
|
||
layer.msg(data.resMsg, {icon: 2});
|
||
example.ajax.reload(); // 刷新页面
|
||
}
|
||
}
|
||
})
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 获取工程
|
||
* */
|
||
function getPro() {
|
||
$("#proId").html("");
|
||
$.ajax({
|
||
type: 'post',
|
||
url: ctxPath + '/totalProWorkloadManage/getProName',
|
||
data: {},
|
||
async: false,
|
||
success: function (data) {
|
||
var html = '<option value="">请选择工程</option>';
|
||
for (var i = 0; i < data.data.length; i++) {
|
||
html += '<option value="' + data.data[i].proId + '">' + data.data[i].proName + '</option>';
|
||
}
|
||
$("#proId").html(html);
|
||
form.render(); //这里就是我们要渲染的地方了
|
||
}
|
||
})
|
||
}
|
||
|
||
|
||
//导出excel表格
|
||
function exportTeamPackage() {
|
||
var proId = $("#proId").val();
|
||
var contractCode = $("#contractCode").val();
|
||
var subName = $("#subName").val();
|
||
var partyUser = $("#partyUser").val();
|
||
var teamName = $("#teamName").val();
|
||
|
||
var token = localStorage.getItem("token");
|
||
var loadingMsg = layer.msg('下载中,请稍候...', {icon: 16, scrollbar: false, time: 0});
|
||
var url = ctxPath + "/teamSmallBagDryTreaty/downloadExcel?proId=" + proId + "&contractCode=" + contractCode + "&subName=" + subName + "&partyUser=" + partyUser + "&teamName=" + teamName + "&token=" + token;
|
||
var xhr = new XMLHttpRequest();
|
||
xhr.open("get", url, true);
|
||
xhr.responseType = "blob"; // 转换流
|
||
xhr.onload = function () {
|
||
layer.close(loadingMsg);
|
||
if (this.status === 200) {
|
||
var blob = this.response;
|
||
var a = document.createElement("a");
|
||
var url = window.URL.createObjectURL(blob);
|
||
a.href = url;
|
||
a.download = "班组小包干合作协议管理信息.xlsx"; // 文件名
|
||
} else {
|
||
layer.msg('发生异常,请稍后重试', {icon: 16, scrollbar: false, time: 2000});
|
||
}
|
||
a.click()
|
||
window.URL.revokeObjectURL(url)
|
||
};
|
||
xhr.send();
|
||
}
|
||
|
||
// 作业范围调整按钮
|
||
function buttonScopeAdjustView(id,proId, permission, pers) {
|
||
if (permission != "") {
|
||
if ($.inArray(permission, pers) < 0) {
|
||
return "";
|
||
}
|
||
}
|
||
var btn = $("<button class='layui-btn layui-btn-xs' style='margin: 5px 5px;' title='作业范围调整' onclick='scopeAdjustView(\"" + id + "\",\"" + proId + "\")'>作业范围调整</button>");
|
||
return btn.prop("outerHTML");
|
||
}
|
||
|
||
// 作业内容调整按钮
|
||
function buttonContentAdjustView(id, permission, pers) {
|
||
if (permission != "") {
|
||
if ($.inArray(permission, pers) < 0) {
|
||
return "";
|
||
}
|
||
}
|
||
var btn = $("<button class='layui-btn layui-btn-xs' style='margin: 5px 5px;' title='作业内容调整' onclick='contentAdjustView(\"" + id + "\")'>作业内容调整</button>");
|
||
return btn.prop("outerHTML");
|
||
}
|
||
|
||
// 作业期限调整按钮
|
||
function buttonPeriodAdjustView(id, permission, pers) {
|
||
if (permission != "") {
|
||
if ($.inArray(permission, pers) < 0) {
|
||
return "";
|
||
}
|
||
}
|
||
var btn = $("<button class='layui-btn layui-btn-xs' style='margin: 5px 5px;' title='作业期限调整' onclick='periodAdjustView(\"" + id + "\")'>作业期限调整</button>");
|
||
return btn.prop("outerHTML");
|
||
}
|
||
|
||
// 协议价调整按钮
|
||
function buttonPriceAdjustView(id, permission, pers) {
|
||
if (permission != "") {
|
||
if ($.inArray(permission, pers) < 0) {
|
||
return "";
|
||
}
|
||
}
|
||
var btn = $("<button class='layui-btn layui-btn-xs' style='margin: 5px 5px;' title='协议价调整' onclick='priceAdjustView(\"" + id + "\")'>协议价调整</button>");
|
||
return btn.prop("outerHTML");
|
||
}
|
||
|
||
// 调整记录按钮
|
||
function buttonAdjustRecordView(id, permission, pers) {
|
||
if (permission != "") {
|
||
if ($.inArray(permission, pers) < 0) {
|
||
return "";
|
||
}
|
||
}
|
||
var btn = $("<button class='layui-btn layui-btn-xs' style='margin: 5px 5px;' title='调整记录' onclick='adjustRecordView(\"" + id + "\")'>调整记录</button>");
|
||
return btn.prop("outerHTML");
|
||
}
|
||
|
||
// 协议终止按钮
|
||
function buttonProtocolTerminateView(id, permission, pers) {
|
||
if (permission != "") {
|
||
if ($.inArray(permission, pers) < 0) {
|
||
return "";
|
||
}
|
||
}
|
||
var btn = $("<button class='layui-btn layui-btn-xs' style='margin: 5px 5px;' title='协议终止' onclick='protocolTerminateView(\"" + id + "\")'>协议终止</button>");
|
||
return btn.prop("outerHTML");
|
||
}
|
||
|
||
// 删除按钮
|
||
function buttonDelView(id, permission, pers) {
|
||
|
||
if (permission != "") {
|
||
if ($.inArray(permission, pers) < 0) {
|
||
return "";
|
||
}
|
||
}
|
||
var btn = $("<button class='layui-btn layui-btn-xs' style='margin: 5px 5px;' title='删除' onclick='delView(\"" + id + "\")'>删除</button>");
|
||
return btn.prop("outerHTML");
|
||
}
|
||
|
||
|
||
// 作业范围调整
|
||
function scopeAdjustView(id,proId) {
|
||
closeView()
|
||
localStorage.setItem("lumpSumContractId", id)
|
||
localStorage.setItem("lumpSumProId", proId)
|
||
localStorage.setItem("lumpSumType", "2")
|
||
layer.open({
|
||
title: ['作业范围调整', 'color:#3B70A1;background-color:#E8ECEB;font-size:20px'],
|
||
type: 2,
|
||
content: 'lumpSumAddList.html',
|
||
area: ['90%', '90%'],
|
||
maxmin: false,
|
||
btn: ['确定','关闭'],
|
||
yes: function (index, layero) {
|
||
var formSubmit = layer.getChildFrame('form', index);
|
||
var submitBtn = formSubmit.find("button[lay-filter='formDemo']");
|
||
if (submitBtn.length === 0) {
|
||
console.error("未找到提交按钮");
|
||
return;
|
||
}
|
||
// 触发 click
|
||
submitBtn.click();
|
||
},
|
||
});
|
||
}
|
||
|
||
// 作业内容调整
|
||
function contentAdjustView(id) {
|
||
closeView()
|
||
layer.open({
|
||
title: ['作业内容调整', 'color:#3B70A1;background-color:#E8ECEB;font-size:20px'],
|
||
type: 2,
|
||
content: 'contentAdjustForm.html',
|
||
area: ['90%', '70%'],
|
||
maxmin: false,
|
||
btn: ['确定','关闭'],
|
||
success: function (layero, index) {
|
||
var myIframe = window[layero.find('iframe')[0]['name']];
|
||
myIframe.contentAdjustDetail(id); //aaa()为子页面的方法
|
||
},
|
||
yes: function (index, layero) {
|
||
var formSubmit = layer.getChildFrame('form', index);
|
||
var submited = formSubmit.find('button')[0];
|
||
submited.click();
|
||
},
|
||
});
|
||
}
|
||
|
||
// 作业期限调整
|
||
function periodAdjustView(id) {
|
||
closeView()
|
||
layer.open({
|
||
title: ['作业期限调整', 'color:#3B70A1;background-color:#E8ECEB;font-size:20px'],
|
||
type: 2,
|
||
content: 'periodAdjustForm.html',
|
||
area: ['50%', '60%'],
|
||
maxmin: false,
|
||
btn: ['确定','关闭'],
|
||
success: function (layero, index) {
|
||
var myIframe = window[layero.find('iframe')[0]['name']];
|
||
myIframe.periodAdjustDetail(id); //aaa()为子页面的方法
|
||
},
|
||
yes: function (index, layero) {
|
||
var formSubmit = layer.getChildFrame('form', index);
|
||
var submited = formSubmit.find('button')[0];
|
||
submited.click();
|
||
},
|
||
});
|
||
}
|
||
|
||
// 协议价调整
|
||
function priceAdjustView(id) {
|
||
closeView()
|
||
layer.open({
|
||
title: ['协议价调整', 'color:#3B70A1;background-color:#E8ECEB;font-size:20px'],
|
||
type: 2,
|
||
content: 'priceAdjustForm.html',
|
||
area: ['50%', '60%'],
|
||
maxmin: false,
|
||
btn: ['确定','关闭'],
|
||
success: function (layero, index) {
|
||
var myIframe = window[layero.find('iframe')[0]['name']];
|
||
myIframe.priceAdjustDetail(id); //aaa()为子页面的方法
|
||
},
|
||
yes: function (index, layero) {
|
||
var formSubmit = layer.getChildFrame('form', index);
|
||
var submited = formSubmit.find('button')[0];
|
||
submited.click();
|
||
},
|
||
});
|
||
}
|
||
|
||
// 调整记录
|
||
function adjustRecordView(id) {
|
||
closeView()
|
||
localStorage.setItem("adjustRecordId", id)
|
||
layer.open({
|
||
title: ['调整记录', 'color:#3B70A1;background-color:#E8ECEB;font-size:20px'],
|
||
type: 2,
|
||
content: 'adjustRecordForm.html',
|
||
area: ['90%', '90%'],
|
||
maxmin: false,
|
||
btn: ['关闭'],
|
||
});
|
||
}
|
||
|
||
// 协议终止
|
||
function protocolTerminateView(id) {
|
||
closeView()
|
||
layer.confirm("确定终止协议吗?", function () {
|
||
$.ajax({
|
||
type: 'post',
|
||
url: ctxPath + '/teamSmallBagDryTreaty/terminationData',
|
||
data: {contractId: id},
|
||
dataType: 'json',
|
||
success: function (data) {
|
||
if (data.resMsg == "操作成功") {
|
||
layer.alert('操作成功', {icon: 1});
|
||
example.ajax.reload(); // 刷新页面
|
||
} else {
|
||
layer.msg(data.resMsg, {icon: 2});
|
||
example.ajax.reload(); // 刷新页面
|
||
}
|
||
}
|
||
});
|
||
});
|
||
}
|
||
|
||
function closeView() {
|
||
$('.more-options').remove(); // 或者使用 currentMenu.remove();
|
||
currentMenu = null;
|
||
currentBtn = null;
|
||
} |