czl-web/pages/project/rollbackProgress.html

499 lines
24 KiB
HTML

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head>
<meta charset="UTF-8">
<title>更新进度表单</title>
<link rel="stylesheet" href="../../layui-v2.8.18/layui/css/layui.css" media="all"/>
</head>
<style>
.layui-this {
background: #17BAAA;
color: white !important;
}
.square {
width: 90px;
height: 30px;
margin: 5px;
color: #afadad;
border-radius: 5px;
font-weight: 500;
font-size: 15px;
border: 2px solid #dedede;
justify-content: center;
text-align: center;
display: flex;
cursor: pointer;
flex-direction: row;
align-items: center;
}
#title {
display: flex;
flex-direction: row;
}
.layui-table {
width: 58%;
margin: 10px 0;
background-color: #fff;
color: #5f5f5f;
margin-left: 14.5%;
}
.layui-form-item .layui-input-inline {
float: left;
width: 250px;
margin-right: 10px;
}
.layui-form-label {
position: relative;
float: left;
display: block;
padding: 9px 15px;
width: 130px;
font-weight: 400;
line-height: 20px;
text-align: right;
}
.layui-input-wrap .layui-input {
padding-right: 0px !important;
}
#commit {
position: fixed;
bottom: 20px;
right: 20px;
}
</style>
<body style="margin-left: 15px">
<form class="layui-form" action="" onsubmit="return false">
<div class="layui-tab" lay-filter="test-hash">
<ul class="layui-tab-title">
<li class="layui-this" lay-id="1">基础工序</li>
<li lay-id="2">组塔工序</li>
<li lay-id="3">架线长度</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<div class="layui-container">
已完成: <span id="basicFinishNum" style="color:#299943">0</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
未完成:<span id="basicNotFinishNum" style="color:#9e1827">0</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
可回退:<span id="basicBackNum" style="color:#17BAAA">0</span>
<span style="color:#e71010">(如果基础工序没有回退杆塔,请先将相应杆塔的组塔工序进行回退,然后再处理基础工序。)</span>
</div>
<div class="layui-container">
<div class="layui-row" id="container"></div>
</div>
<div class="layui-container">
<textarea name="basicRemark" id="basicRemark" cols="145" rows="6"
style="border: 1px solid #dedede; border-radius: 10px;"></textarea>
</div>
</div>
<div class="layui-tab-item">
<div class="layui-container">
已完成: <span id="towerFinishNum" style="color:#299943">0</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
未完成:<span id="towerNotFinishNum" style="color:#9e1827">0</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
可回退:<span id="towerBackNum" style="color:#17BAAA">0</span>
</div>
<div class="layui-container">
<div class="layui-row" id="container1"></div>
</div>
<div class="layui-container">
<textarea name="towerRemark" id="towerRemark" cols="145" rows="6"
style="border: 1px solid #dedede; border-radius: 10px;"></textarea>
</div>
</div>
<div class="layui-tab-item">
<div class="layui-form-item"
style="float:left;margin-left: 31.5%;margin-top: 2%;font-size:18px;font-weight:bold">
线路长度: <span id="line_length"></span>
&nbsp;&nbsp;&nbsp;&nbsp;已完成: <span id="line_finish_length" style="color:#17BAAA"></span>
&nbsp;&nbsp;&nbsp;未完成: <span id="line_not_finish_length" style="color:#b02f3e"></span><br>
</div>
<div class="layui-form-item" style="margin-left: 32%;">
<label class="layui-form-label" style="font-size: 18px;font-weight: bold">回退完成长度:</label>
<div class="layui-input-inline layui-input-wrap">
<input type="number" id="changeLength" name="changeLength" placeholder="请输入" step="0.01" min="0" oninput="validity.valid||(value='');"
autocomplete="off" class="layui-input">
</div>
<div class="layui-form-mid layui-text-em">km</div>
</div>
<div class="layui-container">
<textarea name="lineRemark" id="lineRemark" placeholder="输入内容" cols="60" rows="6" maxlength="360"
style="border: 1px solid #dedede; border-radius: 10px;margin-left: 30%;"></textarea>
</div>
</div>
</div>
</div>
<button style="display:none" type="submit" class="layui-btn subBtn" id="commit" lay-submit lay-filter="formDemo">提交</button>
</form>
</body>
</html>
<script src="../../js/jquery/jquery-3.6.0.js"></script>
<script src="../../layui-v2.8.18/layui/layui.js"></script>
<script type="text/javascript" src="../../js/jq.js"></script>
<script src="../../js/common_methon.js"></script>
<script type="text/javascript" src="../../js/publicJs.js"></script>
<script type="text/javascript" src="../../js/select.js"></script>
<script type="text/javascript" src="../../js/my/permission.js"></script>
<!--<script src="../../js/project/proScheduleManagementList.js"></script>-->
<script>
layui.config({
base: '../../js/layuiModules/', // 第三方模块所在目录
version: 'v1.6.4' // 插件版本号
}).extend({
soulTable: 'notice,layNotify', // 模块
});
var code = "tabid=1";
var basicData = "";
var towerData = "";
var basicDataId = [];
var towerDataId = [];
var proId = localStorage.getItem("proId");
var orgId = localStorage.getItem("orgId");
var form;
layui.use(['table', 'form', 'notice', 'layNotify', 'element'], function () {
var element = layui.element;
form = layui.form;
getTowerData();
code = "tabid=2";
getTowerData();
code = "tabid=3";
getTowerData();
code = "tabid=1";
// hash 地址定位
var hashName = 'tabid'; // hash 名称
var layid = location.hash.replace(new RegExp('^#' + hashName + '='), ''); // 获取 lay-id 值
// 初始切换
element.tabChange('test-hash', layid);
// 切换事件
element.on('tab(test-hash)', function (obj) {
code = hashName + '=' + this.getAttribute('lay-id');
location.hash = code;
getTowerData();
});
// 验证成功后才会执行下面的操作
form.on('submit(formDemo)', function (data) {
if (parseFloat($("#changeLength").val()) > parseFloat($("#line_finish_length").text())) {
reloadTip('架线长度修改', '架线长度修改值应该小于完成架线长度的值', 'error');
} else {
addInfo();
}
});
});
/**
* 数据更新
* @param d
*/
function addInfo() {
if (basicDataId.length == 0 && towerDataId.length == 0 && isEmpty($("#changeLength").val())) {
reloadTip('更新项目', '此次未更新任何项目,请核对相关信息,如无需修改,请点击右上角返回!', 'error');
return;
}
var rateProgress = 0.00;
var basicProgress = 0.00;
var towerProgress = 0.00;
var lineProgress = 0.00;
if (basicDataId.length > 0) {
var finishNum = parseFloat($("#basicFinishNum").text() - parseFloat(basicDataId.length) )
var allNum = parseFloat($("#basicFinishNum").text()) + parseFloat($("#basicNotFinishNum").text())
basicProgress = finishNum / allNum;
}else {
var finishNum = parseFloat($("#basicFinishNum").text())
var allNum = parseFloat($("#basicFinishNum").text()) + parseFloat($("#basicNotFinishNum").text())
if (allNum == 0){
basicProgress = 0;
}else {
basicProgress = finishNum / allNum;
}
}
if (towerDataId.length > 0) {
var finishNum = parseFloat($("#towerFinishNum").text() - parseFloat(towerDataId.length))
var allNum = parseFloat($("#basicFinishNum").text()) + parseFloat($("#basicNotFinishNum").text())
towerProgress = finishNum / allNum;
}else {
var finishNum = parseFloat($("#towerFinishNum").text())
var allNum = parseFloat($("#basicFinishNum").text()) + parseFloat($("#basicNotFinishNum").text())
if (allNum == 0){
towerProgress = 0;
}else {
towerProgress = finishNum / allNum;
}
}
if (!isEmpty($("#changeLength").val())) {
var finishNum = parseFloat($("#changeLength").val())
var allNum = parseFloat($("#line_length").text())
lineProgress = finishNum / allNum;
}else {
var finishNum = parseFloat($("#line_finish_length").text())
var allNum = parseFloat($("#line_length").text())
if (allNum == 0){
lineProgress = 0;
}else {
lineProgress = finishNum / allNum;
}
}
var data = {
basicDataId: basicDataId.length > 0 ? basicDataId.join(",") : '',
towerDataId: towerDataId.length > 0 ? towerDataId.join(",") : '',
changeLength: parseFloat($("#changeLength").val()),
basicRemark: $("#basicRemark").val(),
towerRemark: $("#towerRemark").val(),
lineRemark: $("#lineRemark").val(),
proId: proId,
progress: ((parseFloat(basicProgress) + parseFloat(towerProgress)+ parseFloat(lineProgress)) / 3.00) * 100,
basicProgress: parseFloat(basicProgress) * 100,
towerProgress: parseFloat(towerProgress) * 100,
lineProgress:parseFloat(lineProgress) * 100
}
var tip = "保存";
var formUrl = ctxPath + "/proProgress/updateBackspaceProProgress";
// 加载提示
var addLoadingMsg = top.layer.msg('数据上传中,请稍候...', {
icon: 16,
scrollbar: false,
time: 0,
shade: [0.8, '#393D49']
});
$.ajax({
type: 'post',
async: false, // 默认异步true,false表示同步
url: formUrl, // 请求地址
contentType: "application/json; charset=utf-8",
dataType: 'json', // 服务器返回数据类型
data: JSON.stringify(data), //获取提交的表单字段
success: function (data) {
if (data.resMsg == "发起成功") {
top.layer.close(addLoadingMsg); //再执行关闭
reloadTip(tip, tip + "成功", "success");
setTimeout(function () {
parent.layer.closeAll();
// window.parent.location.reload();
}, 2000);
} else {
top.layer.close(addLoadingMsg); //再执行关闭
reloadTip(tip, tip + "失败", "error");
}
},
error: function (XMLHttpRequest, textStatus, e) {
layer.msg('数据请求发生异常,请稍后重试', {icon: 16, scrollbar: false});
top.layer.close(addLoadingMsg); //再执行关闭
}
});
}
/**
* 获取杆塔数据并赋值
*/
function getTowerData() {
$.ajax({
type: 'post',
url: ctxPath + '/proProgress/getBackspaceTowerData',
dataType: 'json', // 服务器返回数据类型
async: false,
data: {
proId: proId,
orgId: orgId,
type: code
},
success: function (data) {
var resMsg = data.resMsg;
if ("数据获取成功" == resMsg) {
if (code == "tabid=1") {
$("#basicFinishNum").text(data.obj.numInfo.basicFinishNum);
$("#basicNotFinishNum").text(data.obj.numInfo.basicNotFinishNum);
$("#basicBackNum").text(data.obj.numInfo.towerNotFinishNum);
var numRows = divideAndRoundUp(data.obj.basicData.length) // 总行数,可根据需要调整
var numPerRow = 10; // 每行显示的小方块数,可根据需要调整
var remainder = data.obj.basicData.length % 10;
var arrBasic = basicData.split(",")
if (basicData.length == 0) {
arrBasic = [];
}
$("#container").empty();
if(data.obj.basicData.length == 0) {
var html = '<div style="display: flex; flex-direction: column; align-items: center;margin-top: 2%;margin-left: -7%;margin-bottom: 2%">\n' +
' <img src="../../img/notData.png" width="120"/>\n' +
' <div style="font-size: 20px; color: #a19a9a;">\n' +
' 暂无基础工序\n' +
' </div>\n' +
' </div>';
$("#container").append(html);
}else {
for (var i = 1; i <= numRows; i++) {
var $row = $('<div class="layui-col-md12" style="display: flex;"></div>');
if (i == numRows && remainder > 0) {
numPerRow = remainder;
}
for (var j = 0; j < numPerRow; j++) {
var $square = $('<div class="square"></div>').text(data.obj.basicData[(i - 1) * 10 + j].towerName);
var $square1 = $('<div class="square1" style="display:none"></div>').text(data.obj.basicData[(i - 1) * 10 + j].towerId);
for (let k = 0; k < arrBasic.length; k++) {
var code1 = arrBasic[k];
if (code1.split("-")[0] == data.obj.basicData[(i - 1) * 10 + j].towerName) {
$square = $('<div class="square" style="color:#409Eff;border:2px solid #409Eff"></div>').text(data.obj.basicData[(i - 1) * 10 + j].towerName);
}
}
$square.appendTo($row);
$square1.appendTo($row);
$square.on('click', function () {
if (basicData.length > 0) {
var arr = basicData.split(",")
if (arr.includes($(this).text() + "-基础回退")) {
$(this).css("color", "#afadad")
$(this).css("border", "2px solid #dedede ")
for (var i = 0; i < arr.length; i++) {
if (arr[i] == ($(this).text() + "-基础回退")) {
arr.splice(i, 1);
basicDataId.splice(i, 1);
}
}
} else {
$(this).css("color", "#409Eff")
$(this).css("border", "2px solid #409Eff")
arr.push($(this).text() + "-基础回退")
basicDataId.push($(this).next().text())
}
basicData = arr.join(",")
$("#basicRemark").val(basicData);
} else {
$(this).css("color", "#409Eff")
$(this).css("border", "2px solid #409Eff")
basicData = $(this).text() + "-基础回退";
basicDataId.push($(this).next().text())
$("#basicRemark").val(basicData);
}
});
}
$row.appendTo('#container');
}
}
}
if (code == "tabid=2") {
$("#towerFinishNum").text(data.obj.numInfo.towerFinishNum);
$("#towerNotFinishNum").text(data.obj.numInfo.towerNotFinishNum);
$("#towerBackNum").text(data.obj.numInfo.towerFinishNum);
var numRows = divideAndRoundUp(data.obj.towerData.length) // 总行数,可根据需要调整
var remainder = data.obj.towerData.length % 10;
var numPerRow = 10; // 每行显示的小方块数,可根据需要调整
var arrBasic = towerData.split(",")
if (towerData.length == 0) {
arrBasic = [];
}
$("#container1").empty();
if(data.obj.towerData.length == 0) {
var html = '<div style="display: flex; flex-direction: column; align-items: center;margin-top: 2%;margin-left: -7%;margin-bottom: 2%">\n' +
' <img src="../../img/notData.png" width="120"/>\n' +
' <div style="font-size: 20px; color: #a19a9a;">\n' +
' 暂无组塔工序\n' +
' </div>\n' +
' </div>';
$("#container1").append(html);
}else {
for (var i = 1; i <= numRows; i++) {
var $row = $('<div class="layui-col-md12" style="display: flex;"></div>');
if (i == numRows && remainder > 0) {
numPerRow = remainder;
}
for (var j = 0; j < numPerRow; j++) {
var $square = $('<div class="square"></div>').text(data.obj.towerData[(i - 1) * 10 + j].towerName);
console.log("name:"+data.obj.towerData[(i - 1) * numPerRow + j].towerName)
console.log("id:"+ i +'-'+ numPerRow+'-' + j)
var $square1 = $('<div class="square1" style="display:none"></div>').text(data.obj.towerData[(i - 1) * 10 + j].towerId);
for (let k = 0; k < arrBasic.length; k++) {
var code1 = arrBasic[k];
if (code1.split("-")[0] == data.obj.towerData[(i - 1) * 10 + j].towerName) {
$square = $('<div class="square" style="color:#409Eff;border:2px solid #409Eff"></div>').text(data.obj.towerData[(i - 1) * 10 + j].towerName);
}
}
$square.appendTo($row);
$square1.appendTo($row);
$square.on('click', function () {
if (towerData.length > 0) {
var arr = towerData.split(",")
if (arr.includes($(this).text() + "-组塔回退")) {
$(this).css("color", "#afadad")
$(this).css("border", "2px solid #dedede ")
for (var i = 0; i < arr.length; i++) {
if (arr[i] == ($(this).text() + "-组塔回退")) {
arr.splice(i, 1);
towerDataId.splice(i, 1);
}
}
} else {
$(this).css("color", "#409Eff")
$(this).css("border", "2px solid #409Eff")
arr.push($(this).text() + "-组塔回退")
towerDataId.push($(this).next().text())
}
towerData = arr.join(",")
$("#towerRemark").val(towerData);
} else {
$(this).css("color", "#409Eff")
$(this).css("border", "2px solid #409Eff")
towerData = $(this).text() + "-组塔回退";
towerDataId.push($(this).next().text())
$("#towerRemark").val(towerData);
}
});
}
$row.appendTo('#container1');
}
}
}
if (code == "tabid=3") {
$("#line_length").text(data.obj.lineData.lineLength + "km")
$("#line_finish_length").text(data.obj.lineData.lineFinishNum + "km")
$("#line_not_finish_length").text(data.obj.lineData.lineLength - data.obj.lineData.lineFinishNum + "km")
// 获取input元素
var inputElement = document.getElementById('changeLength'); // 请将 'yourInputElementId' 替换为实际的input元素ID
// 设置placeholder属性
inputElement.placeholder = '输入0.00~' + (data.obj.lineData.lineFinishNum) + '之间的数字';
inputElement.maxValue = data.obj.lineData.lineLength - data.obj.lineData.lineFinishNum
}
}
},
error: function (err) {
console.log("获取杆塔数据出错:", err);
}
});
}
/**
* 给定一个数除以十得出商,余数大于0则商加一
* @param number
* @returns {number}
*/
function divideAndRoundUp(number) {
var quotient = Math.floor(number / 10);
var remainder = number % 10;
if (remainder > 0) {
quotient += 1;
}
return quotient;
}
function reloadTip(tip, message, type) {
parent.layNotify.notice({
title: tip + "提示",
type: type,
message: message
});
}
</script>