HnRealNameBmwWeb/js/work/smallSubManagement/teamPackageManageList.js

605 lines
22 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}