123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459 |
- var locat = (window.location+'').split('/');
- $(function(){if('fhsms'== locat[3]){locat = locat[0]+'//'+locat[2];}else{locat = locat[0]+'//'+locat[2]+'/'+locat[3];};});
- $(getTop(globalThis).hangge());
- var paramOption = {
- tabletype : '',
- category : '', //用title值
- scale : '', //用title值
- hasScale : 0, //0不根据规模分组 1根据
- datatype : 1, //1计划 2完成情况
- startYear : '',
- endYear : '',
- companys : ''
- };
- var titleOption = {
- //可重置
- tabletype : ['日常养护','预防养护','修复养护','专项养护','应急养护','试验检测项目','科研项目','设备大修','预备费'],
- category : ['路基','路面','桥梁','桥涵','涵洞通道','桥隧','隧道','交安设施','沿线设施','绿化','其他','清扫保洁','巡查检查','养护车辆设备','应急保通'],
- scale : ['大修','中修','小修'],
- //不可重置
- daily_category : ['路基','路面','桥梁','涵洞通道','隧道','交安设施','沿线设施','绿化','清扫保洁','巡查检查','养护车辆设备','应急保通'],
- prevention_category : ['路基','路面','桥涵','隧道'],
- repair_category : ['路基','路面','桥涵','隧道','交安设施','沿线设施','绿化','其他'],
- special_category : ['路基','路面','桥涵','隧道','交安设施','沿线设施','绿化','其他'],
- emergency_category : ['路基','路面','桥涵','隧道','交安设施','沿线设施','绿化','其他'],
- test_category : ['路基','路面','桥涵','隧道','交安设施','沿线设施','其他'],
- scientific_category : ['路基','路面','桥隧','其他'],
- equipment_category : [],
- reserve_category : []
- };
- var valueOption = {
- //可重置
- tabletype : ['daily','prevention','repair','special','emergency','test','scientific','equipment','reserve'],
- category : ['subgrade','pavement','bridge','bridgeAndCulvert','culvert','bridgeAndTunnel','tunnel','safe','line','green','other','clean','patrol','car','emergency'],
- scale : ['max','mid','min'],
- //不可重置
- daily_category : ['subgrade','pavement','bridge','culvert','tunnel','safe','line','green','clean','patrol','car','emergency'],
- prevention_category : ['subgrade','pavement','bridgeAndCulvert','tunnel'],
- repair_category : ['subgrade','pavement','bridgeAndCulvert','tunnel','safe','line','green','other'],
- special_category : ['subgrade','pavement','bridgeAndCulvert','tunnel','safe','line','green','other'],
- emergency_category : ['subgrade','pavement','bridgeAndCulvert','tunnel','safe','line','green','other'],
- test_category : ['subgrade','pavement','bridgeAndCulvert','tunnel','safe','line','other'],
- scientific_category : ['subgrade','pavement','bridgeAndTunnel','other'],
- //无类别
- equipment_category : ['noCategory'],
- reserve_category : ['noCategory']
- };
- var tableOption = {};
- //重置表格参数
- function resetTableOption(){
- tableOption = {
- title : [],
- colspan : [],
- value : ['index','company','road'],
- daily_category_title : [],
- prevention_category_title : [],
- repair_category_title : [],
- special_category_title : [],
- emergency_category_title : [],
- test_category_title : [],
- scientific_category_title : [],
- equipment_category_title : [],
- reserve_category_title : [],
- daily_category_val : [],
- prevention_category_val : [],
- repair_category_val : [],
- special_category_val : [],
- emergency_category_val : [],
- test_category_val : [],
- scientific_category_val : [],
- equipment_category_val : [],
- reserve_category_val : []
- };
- }
- //项目类型包含'预防养护','修复养护'以外的类型是,规模禁止选择
- function setScaleDisabledInit(){
- $('.tabletype[type="checkbox"]').change(function(){
- //tabletype titleOption
- valueOption.tabletype = [];
- $.each($('.tabletype[type="checkbox"]:checked'),function(){
- valueOption.tabletype.push($(this).val());
- });
- if(valueOption.tabletype.indexOf('daily')>-1 || valueOption.tabletype.indexOf('special')>-1
- || valueOption.tabletype.indexOf('emergency')>-1 || valueOption.tabletype.indexOf('test')>-1
- || valueOption.tabletype.indexOf('scientific')>-1 || valueOption.tabletype.indexOf('equipment')>-1
- || valueOption.tabletype.indexOf('reserve')>-1){
- $('.scale').prop('disabled',true);
- }else{
- $('.scale').prop('disabled',false);
- }
- })
- }
- //设置参数
- function setParam(){
- //tabletype titleOption
- //如果没选项目类型 默认全选
- valueOption.tabletype = [];
- titleOption.tabletype = [];
- if($('.tabletype[type="checkbox"]:checked').length > 0){
- $.each($('.tabletype[type="checkbox"]:checked'),function(){
- valueOption.tabletype.push($(this).val());
- titleOption.tabletype.push($(this).parent().text());
- });
- }else{
- $.each($('.tabletype[type="checkbox"]'),function(){
- valueOption.tabletype.push($(this).val());
- titleOption.tabletype.push($(this).parent().text());
- });
- }
- //category valueOption titleOption
- valueOption.category = [];
- titleOption.category = [];
- if($('.category[type="checkbox"]:checked').length > 0){
- $.each($('.category[type="checkbox"]:checked'),function(){
- valueOption.category.push($(this).val());
- titleOption.category.push($(this).parent().text());
- });
- }else{
- $.each($('.category[type="checkbox"]'),function(){
- valueOption.category.push($(this).val());
- titleOption.category.push($(this).parent().text());
- });
- }
- //scale valueOption titleOption
- valueOption.scale = [];
- titleOption.scale = [];
- if(!$('.scale').prop('disabled')){
- $.each($('.scale:checked'),function(){
- valueOption.scale.push($(this).val());
- titleOption.scale.push($(this).parent().text());
- });
- };
- //设置查询所需参数
- paramOption.tabletype = valueOption.tabletype?valueOption.tabletype.join(','):'';
- paramOption.category = titleOption.category?titleOption.category.join(','):'';
- paramOption.scale = titleOption.scale?titleOption.scale.join(','):'';
- if(paramOption.scale.length > 0) paramOption.hasScale = 1;
- else paramOption.hasScale = 0;
- paramOption.datatype = $('#datatype option:selected').val();
- paramOption.startYear = $('#startYear').val();
- paramOption.endYear = $('#endYear').val();
- paramOption.companys = $('#companys').val()?$('#companys').val().join(','):'';
- }
- //设置表格所需参数
- function setTableOption(d){
- var curr_tabletype,allCategory_val,allCategory_title;
- resetTableOption(); //重置表格参数
- tableOption.title = [];
- tableOption.colspan = [];
- tableOption.value = ['index','COMPANY','ROAD'];
- //各项目类型的类别不同,找出选中类别中,各项目类型中存在的类别
- for(var i=0; i<valueOption.tabletype.length; i++) {
- curr_tabletype = valueOption.tabletype[i]; //当前项目类型value值
- allCategory_val = valueOption[curr_tabletype+'_category']; //当前项目类型的所有类别value值
- allCategory_title = titleOption[curr_tabletype+'_category']; //当前项目类型的所有类别
- if(allCategory_val.indexOf('noCategory') > -1){
- //无类别项目直接加入'noCategory'值
- tableOption[curr_tabletype+'_category_val'].push('noCategory');
- }else{
- for(var j=0; j<allCategory_val.length; j++){
- if(valueOption.category.indexOf(allCategory_val[j]) > -1){
- tableOption[curr_tabletype+'_category_val'].push(allCategory_val[j]);
- tableOption[curr_tabletype+'_category_title'].push(allCategory_title[j]);
- }
- }
- }
- }
- //根据各项目类别设置th、td、colspan等相关参数
- var th1 = [],th2 = [],th3 = [],thcol1 = [],thcol2 = [];
- for(var i=0; i<valueOption.tabletype.length; i++){
- curr_tabletype = valueOption.tabletype[i]; //当前项目类型value值
- allCategory_val = tableOption[curr_tabletype+'_category_val']; //当前项目类型展示的类别value值
- allCategory_title = tableOption[curr_tabletype+'_category_title']; //当前项目类型展示的类别
- //如果当前项目类型有需要展示的类别
- if(allCategory_val.length > 0){
- //第一行加项目类型
- th1.push(titleOption.tabletype[i]);
- if(paramOption.hasScale == 0){
- //不需要根据规模统计,无第二行
- //项目类型colspan为 类别数
- thcol1.push(allCategory_val.length);
- //在第三行放入类别
- th3 = th3.concat(allCategory_title);
- //数据行 项目_类别
- for(var lb=0; lb<allCategory_val.length; lb++){
- tableOption.value.push(curr_tabletype + '_' + allCategory_val[lb]);
- }
- }else if(paramOption.hasScale == 1){
- //需要根据规模统计
- var scaleNum = titleOption.scale.length;
- //第二行放规模
- th2 = th2.concat(titleOption.scale);
- //项目类型colspan为 规模数*类别数
- thcol1.push(scaleNum*allCategory_val.length);
- /*
- * 规模colspan为类别个数,第二行放入colspan个数为规模个数
- * 根据规模个数在第三行放入类别
- */
- for(var num=0; num<scaleNum; num++){
- thcol2.push(allCategory_val.length);
- th3 = th3.concat(allCategory_title);
- }
- //数据行 项目_规模_类别
- for(var gm=0; gm<valueOption.scale.length; gm++){
- for(var lb=0; lb<allCategory_val.length; lb++){
- tableOption.value.push(curr_tabletype + '_' + valueOption.scale[gm] + '_' + allCategory_val[lb]);
- }
- }
- }
- }
- }
- //合计列
- //第一行加项目类型
- th1.push('合计');
- if(paramOption.hasScale == 0){
- //不需要根据规模统计,无第二行
- //项目类型colspan为 总类别数+1
- thcol1.push(titleOption.category.length + 1);
- //在第三行放入类别 + 小计
- th3 = th3.concat(titleOption.category);
- th3.push('小计');
- //数据行 类别 total
- for(var lb=0; lb<titleOption.category.length; lb++){
- //应急保通 与 应急 重命名 应急保通改为 emergencyC
- if(valueOption.category[lb] == 'emergency'){
- tableOption.value.push('emergencyC');
- }else{
- tableOption.value.push(valueOption.category[lb]);
- }
- }
- tableOption.value.push('total');
- }else if(paramOption.hasScale == 1){
- //需要根据规模统计
- var scaleNum = titleOption.scale.length;
- //第二行放规模 + 小计
- th2 = th2.concat(titleOption.scale);
- th2.push('小计');
- //项目类型colspan为 (规模数+1)*(总类别数+1)
- thcol1.push((scaleNum+1)*(titleOption.category.length+1));
- /*
- * 规模colspan为类别个数+1,第二行放入colspan个数为规模个数+1
- * 根据规模个数在第三行放入类别
- */
- for(var num=0; num<scaleNum+1; num++){
- thcol2.push(titleOption.category.length+1);
- th3 = th3.concat(titleOption.category);
- th3.push('小计');
- }
- //数据行 规模_类别 规模
- for(var gm=0; gm<valueOption.scale.length; gm++){
- for(var lb=0; lb<titleOption.category.length; lb++){
- tableOption.value.push(valueOption.scale[gm] + '_' + valueOption.category[lb]);
- }
- tableOption.value.push(valueOption.scale[gm]);
- }
- //数据行 合计列 类别 total
- for(var lb=0; lb<titleOption.category.length; lb++){
- //应急保通 与 应急 重命名 应急保通改为 emergencyC
- if(valueOption.category[lb] == 'emergency'){
- tableOption.value.push('emergencyC');
- }else{
- tableOption.value.push(valueOption.category[lb]);
- }
- }
- tableOption.value.push('total');
- }
- //设置表格title,colspan参数
- tableOption.title.push(th1);
- tableOption.title.push(th2);
- tableOption.title.push(th3);
- tableOption.colspan.push(thcol1);
- tableOption.colspan.push(thcol2);
- tableOption.colspan.push([]);
- //清空表
- $('#dataTable>thead').html('');
- $('#dataTable>tbody').html('');
- //根据表格参数出th行
- var thRowspan = 3;
- if(paramOption.hasScale == 0) thRowspan = 2;
- for(var i=0; i<tableOption.title.length;i++){
- if(tableOption.title[i].length > 0){
- var eachtr = '<tr>';
- if(i==0) eachtr = '<tr><th class="center" rowspan="'+thRowspan+'">序号</th>'
- + '<th class="center" colspan="2" rowspan="'+thRowspan+'">道路名称 </th>';
- for(var j=0; j<tableOption.title[i].length;j++){
- eachtr += '<th class="center"'
- if(tableOption.title[i][j] == '设备大修' || tableOption.title[i][j] == '预备费') eachtr += ' rowspan="2"';
- if(tableOption.colspan[i].length > 0) eachtr += ' colspan="'+ tableOption.colspan[i][j] +'"';
- eachtr += '>' + tableOption.title[i][j] + '</th>';
- }
- eachtr += '</tr>';
- $('#dataTable>thead').append(eachtr);
- }
- }
- //根据表格参数出td行
-
- /*******test*******/
- /*var eachtdtr = '<tr>';
- for(var j=0; j<tableOption.value.length;j++){
- eachtdtr += '<td class="center">' + tableOption.value[j] + '</td>';
- }
- eachtdtr += '</tr>';
- $('#dataTable>tbody').append(eachtdtr);*/
- /*******test*******/
-
- var data = d.data;
- var companyData = d.companyData;
- var totalData = d.totalData;
- var indexno = 1;
- var currowspan = 0; //相同公司记录数,index 有合计行的要加1
- var hasCompanySum = false;
- for(var i=0; i<data.length;i++){
- //判断是否有公司合计行
- if(data[i].num == 1 && data[i].flag == 1) hasCompanySum = false;
- else hasCompanySum = true;
-
- var eachtdtr = '<tr>';
- for(var j=0; j<tableOption.value.length;j++){
- if(tableOption.value[j] == 'index'){
- if(data[i].num == '1'){
- for(var x=0; x<data.length;x++){
- if(data[x].flag == 1 && data[x].COMPANY == data[i].COMPANY){
- currowspan = data[x].num;
- }
- }
- if(data[i].flag == 1) eachtdtr += '<td class="center" rowspan="'+ currowspan +'">';
- else eachtdtr += '<td class="center" rowspan="'+ (currowspan+1) +'">';
- eachtdtr += indexno;
- eachtdtr += '</td>';
- indexno++;
- }
- }else if(tableOption.value[j] == 'COMPANY'){
- if(data[i].num == '1'){
- if(data[i].flag == 1) eachtdtr += '<td class="center" rowspan="'+ currowspan +'">';
- else eachtdtr += '<td class="center" rowspan="'+ (currowspan+1) +'">';
- eachtdtr += data[i].COMPANY;
- eachtdtr += '</td>';
- }
- }else{
- eachtdtr += '<td class="center">';
- if(data[i][tableOption.value[j]]) eachtdtr += data[i][tableOption.value[j]];
- eachtdtr += '</td>';
- }
- }
- eachtdtr += '</tr>';
- $('#dataTable>tbody').append(eachtdtr);
- //公司合计行
- if(data[i].flag == 1 && hasCompanySum){
- var conpanySumTr = '<tr><td class="center">小计</td>';
- for(var j=3; j<tableOption.value.length;j++){
- conpanySumTr += '<td class="center">';
- if(companyData[indexno-2][tableOption.value[j]]) conpanySumTr += companyData[indexno-2][tableOption.value[j]];
- conpanySumTr += '</td>';
- }
- conpanySumTr += '</tr>';
- $('#dataTable>tbody').append(conpanySumTr);
- }
- }
- //总计行
- if(data.length > 0){
- var totalSumTr = '<tr><td class="center" colspan="3">累计</td>';
- for(var j=3; j<tableOption.value.length;j++){
- totalSumTr += '<td class="center">';
- if(totalData[0] && totalData[0][tableOption.value[j]]) totalSumTr += totalData[0][tableOption.value[j]];
- totalSumTr += '</td>';
- }
- totalSumTr += '</tr>';
- $('#dataTable>tbody').append(totalSumTr);
- }
- }
-
- function toSearch(){
- var tabletypeNum = $('.tabletype[type="checkbox"]:checked').length;
- var categoryNum = $('.category[type="checkbox"]:checked').length;
- if(tabletypeNum == 0){
- bootbox.dialog({
- message: "<span class='bigger-110'>请选择项目类型!</span>",
- buttons:
- {
- "button" :
- {
- "label" : "确定",
- "className" : "btn-sm btn-success"
- }
- }
- });
- }else if(categoryNum == 0){
- bootbox.dialog({
- message: "<span class='bigger-110'>请选择类别!</span>",
- buttons:
- {
- "button" :
- {
- "label" : "确定",
- "className" : "btn-sm btn-success"
- }
- }
- });
- }else{
- setParam();
- $('#dataTable').html('<thead></thead><tbody></tbody>');
- $.ajax({
- type : "get",
- url : locat + '/compStats/getData.do',
- data: paramOption,
- dataType : 'json',
- success : function(data){
- setTableOption(data);
- }
- });
- }
- }
- //时间控件初始化
- function datepickerInit(){
- $('.date-picker').datepicker({
- autoclose: true,
- format: 'yyyy',
- startView: 'years',
- maxViewMode:'years',
- minViewMode:'years'
- });
- $('#startYear').datepicker({
- endDate : new Date()
- }).on('changeDate',function(e){
- var startTime = e.date;
- $('#endYear').datepicker('setStartDate',startTime);
- });
- $('#endYear').datepicker({
- endDate : new Date()
- }).on('changeDate',function(e){
- var endTime = e.date;
- $('#startYear').datepicker('setEndDate',endTime);
- });
- }
- function selectAll(e){
- $('.'+e.classList[3]+'[type="checkbox"]').prop('checked',true);
- if(e.classList[3] == 'tabletype') $('.scale').prop('disabled',true);
- }
- function selectNone(e){
- $('.'+e.classList[3]+'[type="checkbox"]').prop('checked',false);
- if(e.classList[3] == 'tabletype') $('.scale').prop('disabled',true);
- }
- $(function() {
- $('#dataContainer').height($('html').height()-140);
- $('.tabletype[type="checkbox"]').prop('checked',true);
- $('.category[type="checkbox"]').prop('checked',true);
- $('.scale').prop('disabled',true);
- datepickerInit();
- setScaleDisabledInit();
- toSearch();
- })
|