旧版报表、仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

624 lines
22 KiB

$().ready(function () {
Daterangeini();
//QueryddlStatus();
QueryddlWorkshop();
QueryProvider();
//$('.input-daterange').datepicker({
// language: 'zh-CN',//显示中文
// format: 'yyyy-mm-dd',
//});
//使用datarangepickrer控件 modify by xue lei on 2018-8-2
//$('#txtEndtime').val(moment().format("YYYY-MM-DD"));
//$('#txtBegintime').val(moment().subtract(1, 'days').format("YYYY-MM-DD"));
var oTable = new TableInit();
oTable.Init();
})
var wotoquantity = [{
field: 'workorder',
title: '工单',
rowspan: 2,
align: 'center',
valign: 'middle'
}, {
field: 'PY',
title: '片源',
rowspan: 2,
align: 'center',
valign: 'middle'
}, {
field: 'EDGL',
title: '额定功率',
rowspan: 2,
align: 'center',
valign: 'middle'
}, {
field: 'PJGL',
title: '平均功率',
rowspan: 2,
align: 'center',
valign: 'middle'
}, {
field: 'CTM',
title: 'CTM',
rowspan: 2,
align: 'center',
valign: 'middle'
}, {
field: 'ZJSL',
title: '数量',
rowspan: 2,
align: 'center',
valign: 'middle'
}, {
title: '功率范围',
colspan: 4,
align: 'center',
valign: 'middle'
}, {
title: '功率占比',
colspan: 4,
align: 'center',
valign: 'middle'
}]
var powertopropor = [
{
field: "0W",
title: "0W",
align: 'center',
valign: 'middle'
}, {
field: "",
title: "200W",
align: 'center',
valign: 'middle'
}, {
field: "",
title: "300W",
align: 'center',
valign: 'middle'
}, {
field: "",
title: "400W",
align: 'center',
valign: 'middle'
}, {
field: "",
title: "0W",
align: 'center',
valign: 'middle'
}, {
field: "",
title: "200W",
align: 'center',
valign: 'middle'
}, {
field: "",
title: "300W",
align: 'center',
valign: 'middle'
}, {
field: "",
title: "400W",
align: 'center',
valign: 'middle'
}
]
function QueryProvider() {
var promiseweld = $.ajax({
url: '/api/Orders/QueryProvider', //'/api/QC/QueryStatus'
type: 'post',
cache: true,
async: true,
});
promiseweld.done(function (r) {
console.log(r);
var info = r.info;
console.log(info);
var arr = new Array();
for (var i = 0; i < info.length; i++) {
arr[i] = {};
for (var item in info[i]) {
if (item == 'descriptions') {
arr[i][item] = info[i][item].split('_').slice(1, 6).join('_');
} else {
arr[i][item] = info[i][item];
}
}
}
console.log(arr);
$.each(arr, function (index, value) {
console.log(index);
$("#provider").append("<option value='" + value.bom_part_nbr + "'>" + value.descriptions + "</option>");
})
$('#provider').val('');
$('#provider').select2({
placeholder: "供应商",
allowClear: true
});
});
promiseweld.fail(function (error) {
console.log(error)
alert(error);
});
}
//车间
function QueryddlWorkshop() {
var promiseweld = $.ajax({
url: '/api/Orders/QueryWorkshop', //'/api/QC/QueryStatus'
type: 'post',
cache: true,
async: true,
});
promiseweld.done(function (r) {
console.log(r);
$.each(r.info, function (index, value) {
console.log(index);
$("#ddlWorkshop").append("<option value='" + value.area_code + "'>" + value.descriptions + "</option>");
})
$('#ddlWorkshop').val('');
$('#ddlWorkshop').select2({
placeholder: "车间",
allowClear: true
});
});
promiseweld.fail(function (error) {
console.log(error)
alert(error);
});
}
/*显示daterangepicker*/
function Daterangeini() {
$('#rangetime').val(moment().subtract('hours', 0).format('YYYY-MM-DD') + ' 07:20:00' + ' - ' + moment().format('YYYY-MM-DD') + ' 19:20:00');
$('#rangetime').daterangepicker(
{
//autoUpdateInput: false,
timePicker: true,
timePicker24Hour: true,
"opens": "center",
'locale': {
"format": 'YYYY-MM-DD HH:mm:ss',
"separator": " - ",
"applyLabel": "确定",
"cancelLabel": "取消",
"fromLabel": "起始时间",
"toLabel": "结束时间'",
"customRangeLabel": "自定义",
"weekLabel": "W",
"daysOfWeek": ["日", "一", "二", "三", "四", "五", "六"],
"monthNames": ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
"firstDay": 1,
//"cancelLabel": '清除'
}
});
//$('#rangetime').val('');
$('#rangetime').on('cancel.daterangepicker', function (ev, picker) {
$(this).val('');
});
}
//$('#rangetime').daterangepicker({
// timePicker: true, //显示时间
// timePicker24Hour: true, //时间制
// timePickerSeconds: true, //时间显示到秒
// startDate: moment().hours(0).minutes(0).seconds(0), //设置开始日期
// endDate: moment(new Date()), //设置结束器日期
// maxDate: moment(new Date()), //设置最大日期
// "opens": "center",
// showWeekNumbers: true,
// locale: {
// format: "YYYY-MM-DD HH:mm:ss", //设置显示格式
// applyLabel: '确定', //确定按钮文本
// cancelLabel: '取消', //取消按钮文本
// customRangeLabel: '自定义',
// daysOfWeek: ['日', '一', '二', '三', '四', '五', '六'],
// monthNames: ['一月', '二月', '三月', '四月', '五月', '六月',
// '七月', '八月', '九月', '十月', '十一月', '十二月'
// ],
// firstDay: 1
// },
//}, function (start, end, label) {
// timeRangeChange = [start.format('YYYY-MM-DD HH:mm:ss'), end.format('YYYY-MM-DD HH:mm:ss')];
// console.log(timeRangeChange);
//});
$('#btnQuery').click(function () {
$begintime = $('#rangetime').val().substr(0, 19);//$('#txtBegintime').val(),
$endtime = $('#rangetime').val().split(' - ')[1];
$workshop = $('#ddlWorkshop').val();
$workorder = $('#txtWO').val();
//$provider = $('#provider option:selected').text();
//$monopower = $('#monopower').val();
if ($begintime == '' && $workshop == null && $workorder == '') { //&& $provider == '' && $monopower == ''
alert('请输入查询条件');
return;
}
if ($workorder == '') {
alert('请输入工单号');
return;
}
dataline($workshop, $begintime, $endtime, $workorder); //, $provider, $monopower
})
//获取结果
function dataline() {
$.ajax({
url: '/api/FinalTestRoomDatas/FinalTestRoomDatas', //API地址
dataType: "json",
type: "post",
contentType: "application/json",
data: JSON.stringify({ "workshop": $workshop, "bt": $begintime, "et": $endtime, "workorder": $workorder }), //, "provider": $provider, "monopower": $monopower
async: false,
success: function (data) {
console.log(typeof (data));
if (data.length != 0) {
//获取工单 - 数量属性名数组
var attributes = []; //所有对象名
var fix = []; //存放功率之前的固定字段
for (var i = 0; i < data.length; i++) {
var attribute = []; //放一组对象名
var j = 0;
for (attribute[j++] in data[i]) { }
attributes.push(attribute);
}
console.log(attributes);
var nbr = attributes[0].indexOf('0W'); //获取固定位置索引
fix = attributes[0].slice(0, nbr);
console.log(fix); //工单-数量属性名数组
//处理data去除0值
var newdata = []; //工单-数量对象组
var powerdata = []; //功率对象组
var newalldata = []; //对以上两个对象进行整合
var powerdata2 = []; //排序以后的功率对象组
powerdata.length = data.length;
for (var z = 0; z < powerdata.length; z++) {
powerdata[z] = {};
newdata[z] = {};
newalldata[z] = {};
powerdata2[z] = {};
}
for (var i = 0; i < data.length; i++) {
for (var item in data[i]) {
if (item != 'workorder' && item != 'PY' && item != 'EDGL' && item != 'PJGL' && item != 'ZJSL' && item != 'CTM') {
if (data[i][item] != '0' && data[0][item] != '0.00%') {
powerdata[i][item] = data[i][item];
}
} else {
newdata[i][item] = data[i][item];
}
}
}
console.log(powerdata);
console.log(newdata);
for (var d = 0; d < newdata.length; d++) {
newalldata[d] = Object.assign(newdata[d], powerdata[d]); //将两个对象拼接为一个对象
}
console.log(newalldata); //所有有值的新data
//对数组对象进行排序,保障所有的值都可以显示出来
var array = new Array();
for (var i = 0; i < newalldata.length; i++) {
array[i] = Object.keys(newalldata[i]);
newalldata[i].length = array[i].length;
}
console.log(array);
function sortRule(a, b) {
return b.length - a.length;
}
newalldata.sort(sortRule);
console.log(newalldata);
for (var i = 0; i < newalldata.length; i++) {
for (var item in newalldata[i]) {
if (item != 'workorder' && item != 'PY' && item != 'EDGL' && item != 'PJGL' && item != 'ZJSL' && item != 'CTM' && item != 'length') {
powerdata2[i][item] = newalldata[i][item];
} else {
newdata[i][item] = data[i][item];
}
}
}
console.log(powerdata2);
//获取功率及占比数组
var power = []; //存放功率
var propor = []; //存放占比
var powernames = Object.keys(powerdata2[0]); //功率、占比属性名
console.log(powernames);
var regex = /^[0-9]+W$/;
var result = null;
for (var i = 0; i < powernames.length; i++) {
console.log(powernames[i]);
result = regex.test(powernames[i]);
console.log(result);
if (result == true) {
power.push(powernames[i]);
}
//power[i] = powernames[i];
//propor[i] = powernames[i + 4];
}
console.log(power + '--' + propor);
wotoquantity[6].colspan = power.length;
wotoquantity[7].colspan = power.length;
powertopropor.length = power.length * 2;
console.log(powertopropor.length);
for (var i = 0; i < powertopropor.length; i++) {
powertopropor[i] = {};
powertopropor[i].align = "center";
powertopropor[i].valign = "middle";
if (i < power.length) {
powertopropor[i].title = power[i];
powertopropor[i].field = power[i];
} else {
powertopropor[i].title = power[i - power.length];
powertopropor[i].field = "RATIO" + power[i - power.length];
}
}
console.log(wotoquantity);
console.log(powertopropor);
$("#tbtestdata").bootstrapTable('destroy');
var oTable = new TableInit();
oTable.Init();
console.log(newalldata);
for (var i = 0; i < data.length; i++) {
$("#tbtestdata").bootstrapTable('refresh');
$('#tbtestdata').bootstrapTable('insertRow', { index: i, row: newalldata[i] });
}
} else {
$("#tbtestdata").bootstrapTable('removeAll');
var oTable = new TableInit();
oTable.Init();
alert('未查询到信息');
return;
}
}
})
};
var TableInit = function () {
var oTableInit = new Object();
oTableInit.Init = function () {
$('#tbtestdata').bootstrapTable({
striped: true,
pageSize: 10, //每页的记录行数(*)
pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
search: true, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
strictSearch: true,
showColumns: true, //是否显示所有的列
showRefresh: true, //是否显示刷新按钮
minimumCountColumns: 2, //最少允许的列数
clickToSelect: true, //是否启用点击选中行
columns: [wotoquantity, powertopropor]
});
};
return oTableInit;
}
//var TableInit = function () {
// var oTableInit = new Object();
// //初始化Table
// oTableInit.Init = function () {
// $('#tbtestdata').bootstrapTable({
// url: '/api/FinalTestRoomDatas/FinalTestRoomDatas', //请求后台的URL(*)
// method: 'post', //请求方式(*)
// toolbar: '#toolbar', //工具按钮用哪个容器
// striped: true, //是否显示行间隔色
// cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
// pagination: true, //是否显示分页(*)
// sortable: false, //是否启用排序
// sortOrder: "asc", //排序方式
// queryParams: oTableInit.queryParams,//传递参数(*)
// sidePagination: "client", //分页方式:client客户端分页,server服务端分页(*)
// contentType: 'application/json',
// pageNumber: 1, //初始化加载第一页,默认第一页
// pageSize: 10, //每页的记录行数(*)
// pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
// search: true, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
// strictSearch: true,
// showColumns: true, //是否显示所有的列
// showRefresh: true, //是否显示刷新按钮
// minimumCountColumns: 2, //最少允许的列数
// clickToSelect: true, //是否启用点击选中行
// //height: 500, //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度
// //uniqueId: "aiid", //每一行的唯一标识,一般为主键列
// showToggle: true, //是否显示详细视图和列表视图的切换按钮
// cardView: false, //是否显示详细视图
// detailView: false, //是否显示父子表
// showExport: true, //是否显示导出
// exportDataType: "all", //basic', 'all', 'selected'.
// exportTypes: ['json', 'xml', 'csv', 'txt', 'sql', 'excel'],
// exportHiddenCells: true,
// //onLoadSuccess: function (data) {
// // var data = $('#tbqc').bootstrapTable('getData', true);
// // //合并单元格
// // mergeCells(data, "serial_nbr", 1, $('#tbqc'));
// // mergeCells(data, "schedule_nbr", 1, $('#tbqc'));
// //},
// columns: [
// {
// checkbox: true ,
// halign: "center",
// align:"left"
// },
// //{
// // field: '序号',
// // title: '序号',
// // width: 5,
// // align: 'center',
// // switchable: false,
// // formatter: function (value,row,index) {
// // return index + 1;//这样的话每翻一页都会重新从1开始,
// // }
// //},
// {
// field: 'product_code',
// title: '工单'
// }, {
// field: 'power_grade',
// title: '片源'
// }, {
// field: 'wks_visit_date',
// title: '额定功率'
// }, {
// field: 'wks_id',
// title: '平均功率'
// }, {
// field: 'containerno',
// title: 'CTM'
// }, {
// field: 'pallet_nbr',
// title: '数量'
// }, {
// field: 'serial_nbr',
// title: '375W'
// }, {
// field: "voc",
// title: "380"
// }, {
// field: "isc",
// title: "405W"
// },
// {
// field: 'serial_nbr',
// title: '375W'
// },
// {
// field: "voc",
// title: "380"
// },
// {
// field: "isc",
// title: "405W"
// }
// ]
// });
// };
// //得到查询的参数
// oTableInit.queryParams = function (params) {
// var temp = { //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的
// limit: params.limit, //页面大小
// offset: params.offset, //页码
// //departmentname: $("#txt_search_departmentname").val(),
// //statu: $("#txt_search_statu").val()
// begintime: $('#rangetime').val().substr(0, 19),//$('#txtBegintime').val(),
// endtime: $('#rangetime').val().split(' - ')[1],
// workshop: $('#ddlWorkshop').val(),
// workorder: $('#txtWO').val(),
// serialno: $('#LotID').val(),
// pallet_nbr: $('#pallet_nbr').val()
// };
// return temp;
// };
// return oTableInit;
//};
/**
* 合并单元格
* @param data 原始数据(在服务端完成排序)
* @param fieldName 合并属性名称
* @param colspan 合并列
* @param target 目标表格对象
*/
function mergeCells(data, fieldName, colspan, target) {
//声明一个map计算相同属性值在data对象出现的次数和
var sortMap = {};
for (var i = 0; i < data.length; i++) {
for (var prop in data[i]) {
if (prop == fieldName) {
var key = data[i][prop]
if (sortMap.hasOwnProperty(key)) {
sortMap[key] = sortMap[key] * 1 + 1;
} else {
sortMap[key] = 1;
}
break;
}
}
}
for (var prop in sortMap) {
console.log(prop, sortMap[prop])
}
var index = 0;
for (var prop in sortMap) {
var count = sortMap[prop] * 1;
$(target).bootstrapTable('mergeCells', { index: index, field: fieldName, colspan: colspan, rowspan: count });
index += count;
}
}
//导出excel
$('#btnExportExcel').on('click', function () {
$begintime = $('#rangetime').val().substr(0, 19);//$('#txtBegintime').val(),
$endtime = $('#rangetime').val().split(' - ')[1];
$workshop = $('#ddlWorkshop').val();
$workorder = $('#txtWO').val();
//$provider = $('#provider option:selected').text();
//$monopower = $('#monopower').val();
if ($begintime == '' && $workshop == null && $workorder == '') { //&& $provider == '' && $monopower == ''
alert('请输入查询条件');
return;
}
if ($workshop == null) {
$workshop = '';
} else {
$workshop = $('#ddlWorkshop').val()
}
if ($('#rangetime').val() == '') {
bt = '';
et = '';
} else {
bt = $('#rangetime').val().substr(0, 19);
et = $('#rangetime').val().split(' - ')[1];
}
doPost('/Report/FinalTestRoomDataExcel', [bt = bt,
et = et,
workshop = $workshop,
workorder = $('#txtWO').val()])
})
function doPost(to, p) { // to:提交动作(action),p:参数
var myForm = document.createElement("form");
myForm.method = "post";
myForm.action = to;
for (var i in p) {
var myInput = document.createElement("input");
myInput.setAttribute("name", "para"); // 为input对象设置name
myInput.setAttribute("value", p[i]); // 为input对象设置value
myForm.appendChild(myInput);
}
document.body.appendChild(myForm);
myForm.submit();
document.body.removeChild(myForm); // 提交后移除创建的form
}