فهرست منبع

1.月信息价年月排版调整
2.调差附件左边栏展开收起

laiguoran 4 سال پیش
والد
کامیت
2ff36a1c99

+ 1 - 0
app/controller/material_controller.js

@@ -248,6 +248,7 @@ module.exports = app => {
             const monthsList = [];
             if (ctx.material.months) {
                 const material_month = ctx.material.months.split(',');
+                material_month.sort();
                 const materialMonthList = await ctx.service.materialMonth.getListByMid(ctx.material.id);
                 for (const mbd of materialBillsData) {
                     const one_mb = {

+ 62 - 22
app/public/js/material.js

@@ -112,6 +112,41 @@ function setMonthHtml() {
     $('#show_month').html(html);
     $('#qi-month').html(qihtml);
 }
+
+function monthSpreadHeaderReset() {
+    const newMonths = [];
+    for (const m of months) {
+        const year = m.split('-')[0];
+        const month = parseInt(m.split('-')[1]);
+        let one = _.find(newMonths, { 'year': year });
+        let oneIndex = _.findIndex(newMonths, { 'year': year });
+        if (one) {
+            one.month.push(month);
+            newMonths.splice(oneIndex, 1, one);
+        } else {
+            one = {
+                year: year,
+                month: [ month ],
+            };
+            newMonths.push(one);
+        }
+    }
+    const pushMonth = [];
+    for(const mo of newMonths) {
+        for (let i in mo.month) {
+            i = parseInt(i);
+            const newCols = {
+                title: (i === 0 ? mo.year: '') + '|' + mo.month[i] + '月',
+                colSpan: (i === 0 && mo.month.length === 1 ? '0' : '') + '|1',
+                rowSpan: i === 0 || i === mo.month.length-1 ? '1|1' : '|1',
+                field: mo.year + '-' + (mo.month[i] < 10 ? '0' + mo.month[i] : mo.month[i]),
+                hAlign: 2, width: 60, type: '@', readOnly: 'readOnly.isEdit'};
+            pushMonth.push(newCols);
+        }
+    }
+    return pushMonth;
+}
+
 $(document).ready(() => {
     autoFlashHeight();
     const materialSpread = SpreadJsObj.createNewSpread($('#material-spread')[0]);
@@ -128,7 +163,7 @@ $(document).ready(() => {
             {title: '基准时间', colSpan: '1', rowSpan: '2', field: 'basic_times', hAlign: 0, width: 80, formatter: '@', readOnly: 'readOnly.isEdit'},
             {title: '本期信息价|单价', colSpan: '3|1', rowSpan: '1|1', field: 'msg_tp', hAlign: 2, width: 60, type: 'Number', readOnly: 'readOnly.msg_tp'},
             {title: '|时间', colSpan: '|1', rowSpan: '|1', field: 'msg_times', hAlign: 0, width: 80, formatter: '@', readOnly: 'readOnly.remark'},
-            {title: '|价差', colSpan: '1', rowSpan: '1|1', field: 'msg_spread', hAlign: 2, width: 60, type: 'Number', readOnly: true, getValue: 'getValue.msg_spread'},
+            {title: '|价差', colSpan: '|1', rowSpan: '1|1', field: 'msg_spread', hAlign: 2, width: 60, type: 'Number', readOnly: true, getValue: 'getValue.msg_spread'},
             {title: '本期材料调差|上涨幅度(%)', colSpan: '4|1', rowSpan: '1|1', field: 'm_up_risk', hAlign: 2, width: 100, type: 'Number', readOnly: 'readOnly.isEdit'},
             {title: '|下跌幅度(%)', colSpan: '|1', rowSpan: '|1', field: 'm_down_risk', hAlign: 2, width: 100, type: 'Number', readOnly: 'readOnly.isEdit'},
             {title: '|有效价差', colSpan: '|1', rowSpan: '|1', field: 'm_spread', hAlign: 2, width: 80, type: 'Number', readOnly: true, getValue: 'getValue.m_spread'},
@@ -544,15 +579,15 @@ $(document).ready(() => {
     // msg_range.cellType(new DatePickerCellType());
     // msg_range.formatter("yyyy-MM-dd");
     sheet.resumePaint();
-
+    const static_cols = [
+        {title: '编号', colSpan: '1', rowSpan: '2', field: 'code', hAlign: 0, width: 60, formatter: '@', readOnly: true},
+        {title: '名称', colSpan: '1', rowSpan: '2', field: 'name', hAlign: 0, width: 180, formatter: '@', readOnly: true},
+        {title: '单位', colSpan: '1', rowSpan: '2', field: 'unit', hAlign: 1, width: 60, formatter: '@', readOnly: true},
+        {title: '平均单价', colSpan: '1', rowSpan: '2', field: 'average_msg_tp', hAlign: 2, width: 60, type: 'Number', readOnly: true, getValue:'getValue.average_msg_tp'},
+    ];
     const materialMonthSpread = SpreadJsObj.createNewSpread($('#material-month-spread')[0]);
     const materialMonthSpreadSetting = {
-        cols: [
-            {title: '编号', colSpan: '1', rowSpan: '2', field: 'code', hAlign: 0, width: 60, formatter: '@', readOnly: true},
-            {title: '名称', colSpan: '1', rowSpan: '2', field: 'name', hAlign: 0, width: 180, formatter: '@', readOnly: true},
-            {title: '单位', colSpan: '1', rowSpan: '2', field: 'unit', hAlign: 1, width: 60, formatter: '@', readOnly: true},
-            {title: '平均单价', colSpan: '1', rowSpan: '2', field: 'average_msg_tp', hAlign: 2, width: 60, type: 'Number', readOnly: true, getValue:'getValue.average_msg_tp'},
-        ],
+        cols: static_cols,
         emptyRows: 0,
         headRows: 2,
         headRowHeight: [25, 25],
@@ -562,12 +597,11 @@ $(document).ready(() => {
         readOnly: readOnly,
     };
     if (months.length > 0) {
-        for (const m of months) {
-            const month = parseInt(m.split('-')[1]);
-            const newCols = {title: month + '月|单价', colSpan: '1|1', rowSpan: '1|1', field: m, hAlign: 2, width: 60, type: '@', readOnly: 'readOnly.isEdit'};
-            materialMonthSpreadSetting.cols.push(newCols);
-        }
+        const monthCols = monthSpreadHeaderReset();
+        const monthSpreadHeaderCols = static_cols.concat(monthCols);
+        materialMonthSpreadSetting.cols = monthSpreadHeaderCols;
     }
+    console.log(materialMonthSpreadSetting);
 
     const materialMonthCol = {
         getValue: {
@@ -941,14 +975,16 @@ $(document).ready(() => {
                 return false;
             }
             postData(window.location.pathname + '/month/save', { type: 'add', updateData: { yearmonth: yearmonth } }, function (data) {
-                const month = parseInt(yearmonth.split('-')[1]);
-                const newCols = {title: month + '月|单价', colSpan: '1|1', rowSpan: '1|1', field: yearmonth, hAlign: 2, width: 60, type: '@', readOnly: 'readOnly.isEdit'};
-                materialMonthSpreadSetting.cols.push(newCols);
                 months.push(yearmonth);
+                months.sort();
+                const monthCols = monthSpreadHeaderReset();
+                const newMonthSpreadHeaderCols = static_cols.concat(monthCols);
+                materialMonthSpreadSetting.cols = newMonthSpreadHeaderCols;
                 monthsList = data.monthsList;
-                SpreadJsObj.reinitSheetHeader(materialMonthSpread.getActiveSheet(), materialMonthSpreadSetting);
                 SpreadJsObj.initSpreadSettingEvents(materialMonthSpreadSetting, materialMonthCol);
-                // SpreadJsObj.reLoadSheetData(materialMonthSpread.getActiveSheet());
+                console.log(materialMonthSpreadSetting);
+                // SpreadJsObj.initSheet(materialMonthSpread.getActiveSheet(), materialMonthSpreadSetting);
+                SpreadJsObj.reinitSheetHeader(materialMonthSpread.getActiveSheet());
                 SpreadJsObj.loadSheetData(materialMonthSpread.getActiveSheet(), SpreadJsObj.DataType.Data, monthsList);
                 setMonthHtml();
 
@@ -972,16 +1008,20 @@ $(document).ready(() => {
             }
             postData(window.location.pathname + '/month/save', { type: 'del', updateData: { del_yearmonth: del_month_array } }, function (data) {
                 for (const dm of del_month_array) {
-                    _.remove(materialMonthSpreadSetting.cols, function (n) {
-                        return n.field === dm;
-                    });
+                    // _.remove(materialMonthSpreadSetting.cols, function (n) {
+                    //     return n.field === dm;
+                    // });
                     _.remove(months, function (n) {
                         return n === dm;
                     });
                 }
+                const monthCols = monthSpreadHeaderReset();
+                const newMonthSpreadHeaderCols = static_cols.concat(monthCols);
+                materialMonthSpreadSetting.cols = newMonthSpreadHeaderCols;
                 monthsList = data.monthsList;
-                SpreadJsObj.reinitSheetHeader(materialMonthSpread.getActiveSheet(), materialMonthSpreadSetting);
                 SpreadJsObj.initSpreadSettingEvents(materialMonthSpreadSetting, materialMonthCol);
+                console.log(materialMonthSpreadSetting);
+                SpreadJsObj.reinitSheetHeader(materialMonthSpread.getActiveSheet());
                 SpreadJsObj.loadSheetData(materialMonthSpread.getActiveSheet(), SpreadJsObj.DataType.Data, monthsList);
                 setMonthHtml();
 

+ 17 - 0
app/public/js/material_file.js

@@ -234,6 +234,23 @@ $(document).ready(function () {
         }
         return total
     }
+
+    $.subMenu({
+        menu: '#sub-menu', miniMenu: '#sub-mini-menu', miniMenuList: '#mini-menu-list',
+        toMenu: '#to-menu', toMiniMenu: '#to-mini-menu',
+        key: 'menu.1.0.0',
+        miniHint: '#sub-mini-hint', hintKey: 'menu.hint.1.0.1',
+        callback: function (info) {
+            if (info.mini) {
+                $('.panel-title').addClass('fluid');
+                $('#sub-menu').removeClass('panel-sidebar');
+            } else {
+                $('.panel-title').removeClass('fluid');
+                $('#sub-menu').addClass('panel-sidebar');
+            }
+            autoFlashHeight();
+        }
+    });
 });
 
 /**

+ 1 - 0
app/service/material_month.js

@@ -45,6 +45,7 @@ module.exports = app => {
             try {
                 const material_month = this.ctx.material.months ? this.ctx.material.months.split(',') : [];
                 material_month.push(data.yearmonth);
+                material_month.sort();
                 if (mbList.length !== 0) {
                     const insertArray = [];
                     const updateArray = [];

+ 14 - 3
app/view/material/file.ejs

@@ -1,15 +1,26 @@
 <% include ./material_sub_menu.ejs %>
 <div class="panel-content">
   <div class="panel-title">
-    <div class="title-main d-flex justify-content-between">
-      <div class="d-flex justify-content-start align-items-center">
+    <div class="title-main d-flex">
+      <% include ./material_sub_mini_menu.ejs %>
+      <div>
+        <div class="d-inline-block">
           <a href="#addfujian" data-toggle="modal" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="添加清单"><i class="fa fa-cloud-upload" aria-hidden="true"></i> 上传附件</a>
+        </div>
+        <div class="d-inline-block">
           <span class="d-flex align-items-center" style="margin-left: 5px;">
             <input type="checkbox" id="file-checkbox">
             <span class="text-primary" style="margin-left: 5px;">所有期</span>
-
           </span>
         </div>
+      </div>
+      <!--<div class="d-flex justify-content-start align-items-center">-->
+          <!--<a href="#addfujian" data-toggle="modal" class="btn btn-sm btn-light text-primary" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="添加清单"><i class="fa fa-cloud-upload" aria-hidden="true"></i> 上传附件</a>-->
+          <!--<span class="d-flex align-items-center" style="margin-left: 5px;">-->
+            <!--<input type="checkbox" id="file-checkbox">-->
+            <!--<span class="text-primary" style="margin-left: 5px;">所有期</span>-->
+          <!--</span>-->
+        <!--</div>-->
     </div>
   </div>
   <div class="content-wrap">

+ 7 - 0
app/view/material/material_sub_mini_menu.ejs

@@ -23,6 +23,13 @@
                 </li>
             </ul>
         </div>
+        <div class="nav-box">
+            <ul class="nav-list list-unstyled">
+                <li class="<% if (ctx.url === '/tender/' + ctx.tender.id + '/measure/material/' + ctx.material.order + '/file') { %>active<% } %>">
+                    <a href="/tender/<%- ctx.tender.id %>/measure/material/<%- material.order %>/file"><span class="ml-3">附件</span></a>
+                </li>
+            </ul>
+        </div>
         <% include ./audit_btn.ejs %>
         <div class="side-fold"><a href="javascript: void(0);" data-toggle="tooltip" data-placement="top" data-original-title="展开侧栏" id="to-menu"><i class="fa fa-thumb-tack"></i></a></div>
     </div>