Selaa lähdekoodia

1. 报表,新增安全生产、临时占地指标
2. 计量台账,中间计量,附件页面

MaiXinRong 3 vuotta sitten
vanhempi
commit
bd825c9dbf

+ 8 - 0
app/service/report.js

@@ -132,6 +132,14 @@ module.exports = app => {
                             runnableRst.push(service.reportMemory.getStageOther(params.tender_id, params.stage_id, memFieldKeys[filter]));
                             runnableKey.push(filter);
                             break;
+                        case 'mem_stage_safe_prod':
+                            runnableRst.push(service.reportMemory.getStageTempLand(params.tender_id, params.stage_id, memFieldKeys[filter]));
+                            runnableKey.push(filter);
+                            break;
+                        case 'mem_stage_temp_land':
+                            runnableRst.push(service.reportMemory.getStageTempLand(params.tender_id, params.stage_id, memFieldKeys[filter]));
+                            runnableKey.push(filter);
+                            break;
                         case 'mem_gather_stage_bills':
                             runnableRst.push(service.rptGatherMemory.getGatherStageBills(memFieldKeys[filter],
                                 customDefine.gather_select, customSelect ? customSelect.gather_select : null));

+ 40 - 0
app/service/report_memory.js

@@ -866,6 +866,46 @@ module.exports = app => {
             }
         }
 
+        async getStageSafeProd(tid, sid, fields) {
+            try {
+                await this.ctx.service.tender.checkTender(tid);
+                await this.ctx.service.stage.checkStage(sid);
+
+                const data = await this.ctx.service.stageSafeProd.getStageData(this.ctx.stage);
+                const preData = await this.ctx.service.stageSafeProd.getPreStageData(this.ctx.stage.order);
+                for (const d of data) {
+                    const pd = this.ctx.helper._.find(preData, {uuid: d.uuid});
+                    if (pd) {
+                        d.pre_qty = pd.qty;
+                        d.pre_tp = pd.tp;
+                    }
+                }
+                return data;
+            } catch (err) {
+                return [];
+            }
+        }
+
+        async getStageTempLand(tid, sid, fields) {
+            try {
+                await this.ctx.service.tender.checkTender(tid);
+                await this.ctx.service.stage.checkStage(sid);
+
+                const data = await this.ctx.service.stageTempLand.getStageData(this.ctx.stage);
+                const preData = await this.ctx.service.stageTempLand.getPreStageData(this.ctx.stage.order);
+                for (const d of data) {
+                    const pd = this.ctx.helper._.find(preData, {uuid: d.uuid});
+                    if (pd) {
+                        d.pre_qty = pd.qty;
+                        d.pre_tp = pd.tp;
+                    }
+                }
+                return data;
+            } catch (err) {
+                return [];
+            }
+        }
+
         async getMaterial(tender_id, material_order, fields) {
             return await this.ctx.service.material.getValidMaterials(tender_id);
         }

+ 5 - 1
app/service/stage_safe_prod.js

@@ -137,10 +137,14 @@ module.exports = app => {
                     if (od.pre_used) throw '往期已使用,不可修改数量';
                     nd.quantity = this.ctx.helper.round(d.quantity, precision.value);
                     nd.total_price = this.ctx.helper.mul(nd.unit_price, nd.quantity, tpDecimal);
+                } else if(d.unit_price !== undefined) {
+                    nd.tp = this.ctx.helper.mul(nd.unit_price, od.quantity, tpDecimal);
                 }
                 if (d.qty !== undefined) {
                     nd.qty = this.ctx.helper.round(d.qty, precision.value);
                     nd.tp = this.ctx.helper.mul(nd.unit_price, nd.qty, tpDecimal);
+                } else if(d.unit_price !== undefined) {
+                    nd.tp = this.ctx.helper.mul(nd.unit_price, od.qty, tpDecimal);
                 }
                 if (d.memo !== undefined) nd.memo = d.memo;
                 uDatas.push(nd);
@@ -245,7 +249,7 @@ module.exports = app => {
                 throw '标段数据有误';
             }
             const preDatas = await this.getAllDataByCondition({
-                columns: ['tid', 'uuid', 'add_uid', 'add_sid', 'add_time', 'name', 'quantity', 'total_price', 'qty', 'order', 'memo', 'pre_used'],
+                columns: ['tid', 'uuid', 'add_uid', 'add_sid', 'add_time', 'name', 'unit', 'unit_price', 'quantity', 'total_price', 'qty', 'order', 'memo', 'pre_used'],
                 where: { sid: preStage.id }
             });
             if (preDatas.length > 0) {

+ 3 - 1
app/service/stage_temp_land.js

@@ -132,6 +132,8 @@ module.exports = app => {
                 if (d.qty !== undefined) {
                     nd.qty = this.ctx.helper.round(d.qty, precision.value);
                     nd.tp = this.ctx.helper.mul(nd.unit_price, nd.qty, tpDecimal);
+                } else if(d.unit_price !== undefined) {
+                    nd.tp = this.ctx.helper.mul(nd.unit_price, od.qty, tpDecimal);
                 }
                 if (d.memo !== undefined) nd.memo = d.memo;
                 uDatas.push(nd);
@@ -220,7 +222,7 @@ module.exports = app => {
                 throw '标段数据有误';
             }
             const preDatas = await this.getAllDataByCondition({
-                columns: ['tid', 'uuid', 'add_uid', 'add_sid', 'add_time', 'name', 'qty', 'order', 'memo', 'pre_used'],
+                columns: ['tid', 'uuid', 'add_uid', 'add_sid', 'add_time', 'name', 'unit', 'unit_price', 'qty', 'order', 'memo', 'pre_used'],
                 where: { sid: preStage.id }
             });
             if (preDatas.length > 0) {

+ 4 - 0
app/view/stage/index.ejs

@@ -614,6 +614,10 @@
         <img src="/public/images/file_clip.png" id="rela-file-icon">
         <img src="/public/images/file_clip_hover.png" id="rela-file-hover">
     </div>
+    <div style="display: none">
+        <img src="/public/images/file_clip.png" id="rela-file-icon" />
+        <img src="/public/images/file_clip_hover.png" id="rela-file-hover" />
+    </div>
 </div>
 <script src="/public/js/moment/moment.min.js"></script>
 <script>

+ 28 - 0
app/view/stage/modal.ejs

@@ -591,6 +591,34 @@
         </div>
     </div>
 </div>
+<!--中间计量 附件-->
+<div class="modal fade" id="im-file" data-backdrop="static">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title">附件</h5>
+            </div>
+            <div class="modal-body">
+                <div class="form-group">
+                    <label for="formGroupExampleInput">大小限制:30MB,支持<span data-toggle="tooltip" data-placement="bottom" title="doc,docx,xls,xlsx,ppt,pptx,pdf">office等文档格式</span>、<span data-toggle="tooltip" data-placement="bottom" title="jpg,png,bmp">图片格式</span>、<span data-toggle="tooltip" data-placement="bottom" title="rar,zip">压缩包格式</span></label>
+                    <input type="file" class="" id="upload-im-file" multiple>
+                </div>
+                <div class="modal-height-500" style="overflow:auto;">
+                    <table class="table table-sm table-bordered" style="word-break:break-all; table-layout: fixed">
+                        <thead>
+                        <tr><th width="240">文件名</th><th>上传人</th><th>上传时间</th><th width="40">操作</th></tr>
+                        </thead>
+                        <tbody id="im-attList">
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+            <div class="modal-footer">
+                <button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal">关闭</button>
+            </div>
+        </div>
+    </div>
+</div>
 <% include ./audit_modal.ejs %>
 <% include ../shares/merge_peg_modal.ejs %>
 <% include ../shares/check_modal2.ejs %>

+ 1 - 1
app/view/stage_extra/safe_prod.ejs

@@ -4,7 +4,7 @@
         <div class="title-main d-flex">
             <% include ./sub_mini_menu.ejs %>
             <div>
-                其他
+                安全生产
             </div>
             <% if (ctx.app.config.is_debug) { %>
             <div class="d-inline-block ml-3">

+ 1 - 1
app/view/stage_extra/temp_land.ejs

@@ -4,7 +4,7 @@
         <div class="title-main d-flex">
             <% include ./sub_mini_menu.ejs %>
             <div>
-                其他
+                临时占地
             </div>
             <% if (ctx.app.config.is_debug) { %>
             <div class="d-inline-block ml-3">

+ 63 - 1
builder_report_index_define.js

@@ -147,6 +147,68 @@ const stage_other = {
         { name: '类型', field: 'o_type', type: dataType.str },
     ],
 };
+const stage_safe_prod = {
+    name: '期-安全生产(mem_stage_safe_prod)',
+    remark: '',
+    id: 69,
+    key: 'mem_stage_safe_prod',
+    prefix: '期-安全生产',
+    cols: [
+        { name: 'id', field: 'id', type: dataType.int },
+        { name: 'uuid', field: 'uuid', type: dataType.str },
+        { name: '所属标段id', field: 'tid', type: dataType.int },
+        { name: '所属期id', field: 'sid', type: dataType.int },
+        { name: '所属第几期', field: 'sorder', type: dataType.int },
+        { name: '新增人id', field: 'add_uid', type: dataType.int },
+        { name: '新增期id', field: 'add_sid', type: dataType.int },
+        { name: '创建时间', field: 'add_time', type: dataType.time },
+        { name: '名称', field: 'name', type: dataType.str },
+        { name: '单位', field: 'unit', type: dataType.str },
+        { name: '单价', field: 'unit_price', type: dataType.currency },
+        { name: '数量', field: 'quantity', type: dataType.currency },
+        { name: '金额', field: 'total_price', type: dataType.currency },
+        { name: '本期数量', field: 'qty', type: dataType.currency },
+        { name: '本期金额', field: 'tp', type: dataType.currency },
+        { name: '备注', field: 'memo', type: dataType.str },
+        { name: '期历史记录', field: 'shistory', type: dataType.str },
+        { name: '排序', field: 'order', type: dataType.int },
+        { name: '往期是否已用', field: 'pre_used', type: dataType.int },
+        { name: '截止上期-数量', field: 'pre_qty', type: dataType.currency },
+        { name: '截止上期-金额', field: 'pre_tp', type: dataType.currency },
+        { name: '截止本期-数量', field: 'end_qty', type: dataType.currency },
+        { name: '截止本期-金额', field: 'end_tp', type: dataType.currency },
+    ],
+};
+const stage_temp_land = {
+    name: '期-临时占地(mem_stage_temp_land)',
+    remark: '',
+    id: 70,
+    key: 'mem_stage_temp_land',
+    prefix: '期-临时占地',
+    cols: [
+        { name: 'id', field: 'id', type: dataType.int },
+        { name: 'uuid', field: 'uuid', type: dataType.str },
+        { name: '所属标段id', field: 'tid', type: dataType.int },
+        { name: '所属期id', field: 'sid', type: dataType.int },
+        { name: '所属第几期', field: 'sorder', type: dataType.int },
+        { name: '新增人id', field: 'add_uid', type: dataType.int },
+        { name: '新增期id', field: 'add_sid', type: dataType.int },
+        { name: '创建时间', field: 'add_time', type: dataType.time },
+        { name: '名称', field: 'name', type: dataType.str },
+        { name: '单位', field: 'unit', type: dataType.str },
+        { name: '单价', field: 'unit_price', type: dataType.currency},
+        { name: '本期数量', field: 'qty', type: dataType.currency },
+        { name: '本期金额', field: 'tp', type: dataType.currency },
+        { name: '备注', field: 'memo', type: dataType.str },
+        { name: '期历史记录', field: 'shistory', type: dataType.str },
+        { name: '排序', field: 'order', type: dataType.int },
+        { name: '往期是否已用', field: 'pre_used', type: dataType.int },
+        { name: '截止上期-数量', field: 'pre_qty', type: dataType.currency },
+        { name: '截止上期-金额', field: 'pre_tp', type: dataType.currency },
+        { name: '截止本期-数量', field: 'end_qty', type: dataType.currency },
+        { name: '截止本期-金额', field: 'end_tp', type: dataType.currency },
+    ],
+};
 // 变更令
 const change = {
     name: '变更令(mem_change)',
@@ -2067,7 +2129,7 @@ const defines = [
     union_data,
     month_progress,
     stage_bills, stage_bills_compare,
-    stage_jgcl, stage_bonus, stage_other,
+    stage_jgcl, stage_bonus, stage_other, stage_safe_prod, stage_temp_land,
     change, change_bills,
     stage_pos, stage_pos_compare,
     stage_pay,