$().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(""); }) $('#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(""); }) $('#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 }