Files
SIPAIIS_WMS_JSSW/bin/WebRoot/jsp/plan/taskOrderDayPlanAmountView.jsp
2026-01-16 14:13:44 +08:00

558 lines
22 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.sipai.tools.SessionManager"%>
<%
SessionManager sessionManager = new SessionManager();
%>
<%request.setAttribute("TO_Flag_ERPConfirm",com.sipai.entity.plan.Taskorder.TO_Flag_ERPConfirm);%>
<%request.setAttribute("TO_Flag_Issued",com.sipai.entity.plan.Taskorder.TO_Flag_Issued);%>
<%request.setAttribute("TO_Flag_Working",com.sipai.entity.plan.Taskorder.TO_Flag_Working);%>
<%request.setAttribute("TO_Flag_Closed",com.sipai.entity.plan.Taskorder.TO_Flag_Closed);%>
<%request.setAttribute("TO_Flag_Cancel",com.sipai.entity.plan.Taskorder.TO_Flag_Cancel);%>
<%request.setAttribute("TO_Flag_NoPlan",com.sipai.entity.plan.Taskorder.TO_Flag_NoPlan);%>
<%request.setAttribute("TO_Flag_ERPIssued",com.sipai.entity.plan.Taskorder.TO_Flag_ERPIssued);%>
<!DOCTYPE html>
<html>
<head>
<title></title>
<jsp:include page="/jsp/inc.jsp"></jsp:include>
<script type="text/javascript">
var idays = 15;
var dm = '${displaymodel}';
var distFun = function(tasklistcode,dt,prid) {
console.log("dm",dm)
var dialog = parent.ext.modalDialog({
width: 1200,
height:550,
title : '分配任务量',
url : ext.contextPath + '/plan/taskorder/showDistricWork.do?displaymodel='+dm+'&tasklistcode='+tasklistcode+'&stdt='+dt+'&prid='+prid,
buttons : [ {
text : '关闭',
handler : function() {
dialog.dialog('destroy');
}
}],
onDestroy:function(){
grid.datagrid('reload');
}
});
};
var viewDetailFun = function(stdt) {
var dialog = parent.ext.modalDialog({
title : '查看详细信息',
width:1250,
height:580,
url : ext.contextPath + '/plan/taskorder/viewTaskOrderDetailDayPlan.do?stdt=' + stdt
});
};
//当前日期前7天
var startdateFun = function(n){
var now = new Date;
now.setDate(now.getDate() - n);
return now;
};
var startdateOrder = function(){
var syear = startdateFun(7).getFullYear();
var smonth = startdateFun(7).getMonth()+1;
if(smonth<10)
{
smonth="0"+smonth;
}
var sdate = startdateFun(7).getDate();
if(sdate<10)
{
sdate="0"+sdate;
}
stD = dateToString(new Date(syear+"-"+smonth+"-"+sdate));
return stD;
};
//当前日期后7天
var enddateFun = function(n){
var now = new Date;
now.setDate(now.getDate() + n);
return now;
};
var enddateOrder = function(){
var syear = enddateFun(7).getFullYear();
var smonth = enddateFun(7).getMonth()+1;
if(smonth<10)
{
smonth="0"+smonth;
}
var sdate = enddateFun(7).getDate();
if(sdate<10)
{
sdate="0"+sdate;
}
stD = dateToString(new Date(syear+"-"+smonth+"-"+sdate));
return stD;
};
var clearFun= function(){
startDate1 = startdateOrder();
document.getElementById('startDate').value=startDate1;
endDate1 = enddateOrder();
document.getElementById('endDate').value= enddateOrder();
$('#search_proced').combobox('clear');
var search_days1 = DateDiff(new Date(endDate1), new Date(startDate1))+1;
//console.log("sd2",search_days1);
var daysArr = new Array(2 * search_days1);
window.MES = {
startDate: startDate1,
endDate: endDate1,
search_days: 15,
daysArr: new Array(30)
}
init(MES.search_days,MES.daysArr,MES.startDate,MES.endDate);
}
$(function() {
$('#search_proced').combobox({
url : ext.contextPath + '/process/taskprocedure/getprocedlist.do?random=' + Math.random(),
valueField:'procedurecode',
textField:'procedurename',
method:'get'
});
// 查询开始日期
var startDate1 = $('#startDate').val();
// 查询结束日期
var endDate1 = $('#endDate').val();
// 查询了多少天
if (startDate1 == "") {
startDate1 = startdateOrder();
document.getElementById('startDate').value=startDate1;
//console.log("sd",startDate1);
}
if (endDate1 == "") {
endDate1 = enddateOrder();
document.getElementById('endDate').value= enddateOrder();
//console.log("ed",endDate1);
}
var search_days1 = DateDiff(new Date(endDate1), new Date(startDate1))+1;
//console.log("sd2",search_days1);
var daysArr = new Array(2 * search_days1);
window.MES = {
startDate: startDate1,
endDate: endDate1,
search_days: 15,
daysArr: new Array(30)
}
init(MES.search_days,MES.daysArr,MES.startDate,MES.endDate);
});
var searchFun = function() {
$(function(){
var startDate1 = $('#startDate').val();
// 查询结束日期
var endDate1 = $('#endDate').val();
// 查询了多少天
if (startDate1 == "") {
startDate1 = dateToString(new Date(startdateFun));
}
if (endDate1 == "") {
endDate1 = dateFromToday(new Date(startDate1), 15);
}
var search_days1 = DateDiff(new Date(endDate1), new Date(startDate1))+1;
var daysArr = new Array(2 * search_days1);
window.MES = {
startDate: startDate1,
endDate: endDate1,
search_days: search_days1,
daysArr: daysArr
}
});
init(MES.search_days,MES.daysArr,MES.startDate,MES.endDate);
}
function init(search_days, daysArr,startDate,endDate){
//console.log("search_days", search_days);
$.getJSON(ext.contextPath +"/activiti/workflow/getLASTPDAmount.do?displaymodel="+dm+"&startDate=" + startDate +"&endDate=" + endDate + "&search_proced="+$('#search_proced').textbox('getValue'),callback);
function callback(data){
localStorage.setItem("urldata",JSON.stringify(data));
initTaskOrderData(search_days);
//组装后的数据
//console.log("dailyTA1:", initTaskOrderData(search_days));
fLoadTable(search_days, daysArr);
}
}
// 处理后台数据,处理没有任务量的那些日期
var initTaskOrderData = function(search_day) {
//console.log("weichuli",localStorage.getItem("urldata"));
var taskOrderData1 = cloneObj(JSON.parse(localStorage.getItem("urldata")));
//console.log("chulihou",taskOrderData1);
//localStorage.removeItem("urldata");
for(var i = 0;i < taskOrderData1.rows.length; i++){
var temArr = new Array(2*MES.search_days);
var tas = makeData(taskOrderData1.rows[i].dailytotalamount,temArr);
//console.log("tas",tas);
for(var j=0;j<tas.length;j++){
var fieldid="u"+j;
taskOrderData1.rows[i][fieldid] = tas[j].amount;
}
}
//console.log("tod",taskOrderData1);
return taskOrderData1;
}
var fLoadTable = function(search_days, daysArr) {
$("#grid").datagrid({
data: initTaskOrderData(search_days).rows,
title: '',
striped: true,
rownumbers: true,
//pagination: true,
singleSelect: true,
selectOnCheck: true,
checkOnSelect: false,
idField: 'id',
pageSize: 50,
pageList: [20, 50, 100],
columns: configColumns(search_days, daysArr),
toolbar : '#toolbar',
onHeaderContextMenu : function(e, field){
if(field.length>8&&field!="tasklistcode"&&field!="salesno"&&field!="processrealid"){
viewDetailFun(field);
}
},
onBeforeSortColumn:function(sort, order){
if(sort.length>8&&sort!="tasklistcode"&&sort!="salesno"&&sort!="processrealid"){
viewDetailFun(sort);
return false;
}
},
onDblClickCell: function(index,field,value){
if(dm!="TO")
{
<%if (sessionManager.havePermission(session,"plan/taskorder/editTaskorder.do")) {%>
if(value != ""){
var tasklistcode =$('#grid').datagrid('getRows')[index].id;//获取点击单元格任务单
//console.log("tasklistcode",tasklistcode);
var d = new Date(MES.startDate);
d.setDate(d.getDate()+parseInt(field.substring(1,field.length)/2));
var dt = d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate();
if(d.getDate()<10)
{
dt = d.getFullYear()+"-"+(d.getMonth()+1)+"-0"+d.getDate();
}
var prid = $('#grid').datagrid('getRows')[index].processrealid;//获取点击单元格工艺号
distFun(tasklistcode,dt,prid);
}
<%}%>
}
},
  onLoadSuccess: function(data){
    var mark=1; //这里涉及到简单的运算mark是计算每次需要合并的格子数
    for (var i=1; i <data.rows.length; i++) { //这里循环表格当前的数据
      if (data.rows[i]['tasklistcode'] == data.rows[i-1]['tasklistcode']) { //后一行的值与前一行的值做比较,相同就需要合并
        mark += 1;
        $(this).datagrid('mergeCells',{
          index: i+1-mark, //datagrid的index表示从第几行开始合并紫色的内容需是最精髓的就是记住最开始需要合并的位置
          field: 'tasklistcode', //合并单元格的区域就是clomun中的filed对应的列
          rowspan:mark //纵向合并的格数如果想要横向合并就使用colspanmark
        });
$(this).datagrid('mergeCells',{
          index: i+1-mark, //datagrid的index表示从第几行开始合并紫色的内容需是最精髓的就是记住最开始需要合并的位置
          field: 'salesno', //合并单元格的区域就是clomun中的filed对应的列
          rowspan:mark //纵向合并的格数如果想要横向合并就使用colspanmark
        });
$(this).datagrid('mergeCells',{
          index: i+1-mark, //datagrid的index表示从第几行开始合并紫色的内容需是最精髓的就是记住最开始需要合并的位置
          field: 'prodamount', //合并单元格的区域就是clomun中的filed对应的列
          rowspan:mark //纵向合并的格数如果想要横向合并就使用colspanmark
        });
      }else{
        mark=1; //一旦前后两行的值不一样了那么需要合并的格子数mark就需要重新计算
      }
    }
  }
});
}
// 组装表头的方法
var configColumns = function(search_days, daysArr) {
var columns = [];
// 配置固定列表头
columns.push([{
"title": "销售订单号",
"field": "salesno",
halign:'center',
rowspan: 3
}, {
"title": "任务单编号",
"field": "tasklistcode",
halign:'center',
rowspan: 3
},
{
"title": "工艺编号",
"field": "processrealid",
halign:'center',
rowspan: 3
},
{
"title": "运行状态",
"field": "billstatus",
halign:'center',
rowspan: 1,
rowspan: 3,
formatter:function(value,row){
switch (value) {
case '${TO_Flag_ERPConfirm}':
return '确认';
case '${TO_Flag_Issued}':
return '下发';
case '${TO_Flag_Working}':
return '开工';
case '${TO_Flag_Closed}':
return '结案';
case '${TO_Flag_Cancel}':
return '作废';
case '${TO_Flag_NoPlan}':
return '未排计划';
case '${TO_Flag_ERPIssued}':
return 'ERP下达';
default:
return '';
}
}
},
// {
// "title": "产品编号",
// "field": "productno",
// rowspan: 3
// },
{
"title": "计划产量",
"field": "prodamount",
halign:'center',
rowspan: 3
},
{
"title": "实际产量(周期内)",
"field": "totalactamount",
halign:'center',
rowspan: 3
},
//{
// "title": "计划开工日期",
// "field": "pstdate",
// rowspan: 3
// }, {
// "title": "计划完工日期",
// "field": "pendate",
// rowspan: 3
// },
{
"title": "产量(" + dateToString(MES.startDate) + " 至 " + dateFromToday(new Date(MES.startDate), search_days-1) + "",
colspan: search_days * 2
}
]);
// 配置日期表头
columns.push(configDaysAmount(search_days));
columns.push(configAPAmount(search_days, daysArr));
return columns;
}
// 配置日期表头的方法
var configDaysAmount = function(search_days) {
var daysAmount = [];
for (var i = 0; i < search_days; i++) {
var year = new Date(dateFromToday(new Date(MES.startDate), i)).getFullYear();
var month = new Date(dateFromToday(new Date(MES.startDate), i)).getMonth()+1;
if(month<10)
{
month="0"+month;
}
var date = new Date(dateFromToday(new Date(MES.startDate), i)).getDate();
if(date<10)
{
date="0"+date;
}
daysAmount.push({
title:month+"-"+date,
field: year+"-"+month+"-"+date,
colspan: 2,
halign:'center',
sortable:true
});
}
return daysAmount;
}
// 配置每日计划(包含实际和计划)表头的方法
var configAPAmount = function(search_days, daysArr) {
var APAmount = [];
var thisGGG = initTaskOrderData(search_days);
thisGGG.rows.map(function(ele){
var currentArr=[];
for (var j = 0; j < 2*search_days; j++) {
// console.log("sed:",search_days);
var amountobj = {
field: "u"+j,
rowspan: 1,
align: 'center',
title: '计划'
};
if(j%2 == 0){
amountobj.title = "计划";
amountobj.formatter=function(value,row,index){
if (value != undefined){
planvalue = value;
}
return value;
};
} else {
amountobj.title = "实际";
amountobj.styler= function(value,row,index){
//console.log("planvalue",planvalue);
if (value-planvalue<0){
return 'color:red;';
}
else if (value-planvalue>0){
return 'color:green;';
}
};
}
currentArr.push(amountobj);
}
APAmount = currentArr;
});
// 循环日期
return APAmount;
}
//对象的克隆函数
var cloneObj = function(obj) {
var str, newobj = obj.constructor === Array ? [] : {};
if (typeof obj !== 'object') {
return;
} else if (window.JSON) {
str = JSON.stringify(obj), //系列化对象
newobj = JSON.parse(str); //还原
} else {
for (var i in obj) {
newobj[i] = typeof obj[i] === 'object' ?
cloneObj(obj[i]) : obj[i];
}
}
return newobj;
};
var DateDiff = function(endDate, startDate) { //endDate和endDate是yyyy-MM-dd格式
var iDays = parseInt(Math.abs(endDate - startDate) / 1000 / 60 / 60 / 24); //把相差的毫秒数转换为天数
return Math.abs(iDays); //返回相差天数
}
//将日期转换为“YYYY-MM-DD”格式的日期
var dateToString = function(date) {
var today = new Date(date);
var year = today.getFullYear();
var month = today.getMonth() + 1;
var day = today.getDate();
return year + "-" + paddingZero(month) + "-" + paddingZero(day);
}
//空位补零
var paddingZero = function(n) {
//return n<10 ? "0" + n : "" + n;
return (Array(2).join('0') + n).slice(-2);
}
//距离某天多少天(n:正整数为多少天之后,负整数为多少天之前)返回“YYYY-MM-DD”格式的日期
var dateFromToday = function(date, n) {
return dateToString(new Date(date.getTime() + n * 24 * 60 * 60 * 1000));
}
var makeData = function(dailytotalamount,temArr){
// 查询开始日期
// var startDate = $('#startDate').val();
// if (startDate == "") {
// startDate = dateToString(new Date("2017-08-16"));
// }
// var endDate = $('#endDate').val();
// if (endDate == "") {
// endDate = dateToString(new Date(startDate),14);
// }
// var endDate = MES.endDate;
// console.log("endDate:",endDate);
// console.log("MES.endDate:",MES.endDate);
dailytotalamount.map( function(ele, index){
if(ele.stdt != "sss"){
var jj = (new Date(ele.stdt).getTime() - new Date(MES.startDate).getTime()) / 24 / 60 / 60 / 1000;
if (jj>=0){
temArr[2*jj] = {"amount":ele.preamount,"stdt":ele.stdt};
temArr[2*jj+1] = {"amount":ele.actamount,"stdt":ele.stdt};
}
}
})
for (var i = 0; i < temArr.length; i++) {
if (temArr[i] == undefined) {
temArr[i] = PlainAmount("sss");
}
}
return temArr;
}
var PlainAmount = function(stdt) {
return {
amount: '',
stdt: stdt,
}
}
</script>
</head>
<body>
<div id="cc" class="easyui-layout" data-options="fit:true,border:false">
<div class="easyui-layout" data-options="fit:true,border:false">
<div id="toolbar" style="display: none;">
<table>
<tr>
<td>开始时间</td>
<td><input id="startDate" name="startDate" class="Wdate" bind-value=" justep.Date.toString(new Date(),'yyyy-MM-dd')"
onfocus="WdatePicker({dateFmt:'yyyy-MM-dd'})" data-options="required:true,validType:'isBlank'" readonly/></td>
<td>结束时间</td>
<td><input id="endDate" name="endDate" class="Wdate"
onfocus="WdatePicker({dateFmt:'yyyy-MM-dd'})" data-options="required:true,validType:'isBlank'" readonly/></td>
<td><table class="tooltable">
<tr>
<td>工序</td>
<td><input id="search_proced" name="search_proced" class="easyui-combobox" /></td>
</tr>
</table></td>
<td><button id = "btns" onclick="searchFun()" class="easyui-linkbutton" data-options="iconCls:'ext-icon-search',plain:true" >搜索</button></td>
<td><a href="javascript:void(0);" class="easyui-linkbutton" data-options="iconCls:'icon-reload',plain:true"
onclick="clearFun();">重置</a>
</td>
</tr>
</table>
</div>
<div data-options="region:'center',fit:true,border:false">
<table id="grid" data-options="fit:true,border:false"></table>
</div>
</div>
</div>
</body>
</html>