Просмотр исходного кода

1. 账号设置,设置账号至其他项目
2. 中间计量,计算式说明调整

MaiXinRong 3 недель назад
Родитель
Сommit
4cf952b3d6

+ 8 - 4
app/lib/stage_im.js

@@ -995,8 +995,10 @@ class StageIm {
                             }
                         }
                     });
-                    qc_expr = qc_expr ? pp.qc_qty + '=' + qc_expr : (pp.qc_qty || 0);
-                    minus_qc_expr = minus_qc_expr ? pp.qc_minus_qty + '=' + minus_qc_expr : (pp.qc_minus_qty || 0);
+                    const qc_qty = pp.qc_qty ? pp.qc_qty + '' : '0';
+                    const qc_minus_qty = pp.qc_minus_qty ? pp.qc_minus_qty + '' : '0';
+                    qc_expr = qc_expr && qc_expr !== qc_qty ? qc_qty + '=' + qc_expr : qc_qty;
+                    minus_qc_expr = minus_qc_expr && minus_qc_expr !== qc_minus_qty ? qc_minus_qty + '=' + minus_qc_expr : qc_minus_qty;
                     calc_memo.push(`其中合同计量:${contract_expr};变更计量:${qc_expr};变更不计价:${minus_qc_expr}`);
                     im.calc_memo = calc_memo.join('\n');
                 }
@@ -1049,8 +1051,10 @@ class StageIm {
                         }
                     }
                 });
-                qc_expr = qc_expr ? p.qc_qty + '=' + qc_expr : (p.qc_qty || 0);
-                minus_qc_expr = minus_qc_expr ? p.qc_minus_qty + '=' + minus_qc_expr : (p.qc_minus_qty || 0);
+                const qc_qty = p.qc_qty ? p.qc_qty + '' : '0';
+                const qc_minus_qty = p.qc_minus_qty ? p.qc_minus_qty + '' : '0';
+                qc_expr = qc_expr && qc_expr !== qc_qty ? qc_qty + '=' + qc_expr : qc_qty;
+                minus_qc_expr = minus_qc_expr && minus_qc_expr !== qc_minus_qty ? qc_minus_qty + '=' + minus_qc_expr : qc_minus_qty;
                 calc_memo.push(`其中合同计量:${contract_expr};变更计量:${qc_expr};变更不计价:${minus_qc_expr}`);
                 im.calc_memo = calc_memo.join('\n');
             }

+ 8 - 4
app/public/js/stage_im.js

@@ -937,8 +937,10 @@ const stageIm = (function () {
                             }
                         }
                     });
-                    qc_expr = qc_expr ? pp.qc_qty + '=' + qc_expr : (pp.qc_qty || 0);
-                    minus_qc_expr = minus_qc_expr ? pp.qc_minus_qty + '=' + minus_qc_expr : (pp.qc_minus_qty || 0);
+                    const qc_qty = pp.qc_qty ? pp.qc_qty + '' : '0';
+                    const qc_minus_qty = pp.qc_minus_qty ? pp.qc_minus_qty + '' : '0';
+                    qc_expr = qc_expr && qc_expr !== qc_qty ? qc_qty + '=' + qc_expr : qc_qty;
+                    minus_qc_expr = minus_qc_expr && minus_qc_expr !== qc_minus_qty ? qc_minus_qty + '=' + minus_qc_expr : qc_minus_qty;
                     calc_memo.push(`其中合同计量:${contract_expr};变更计量:${qc_expr};变更不计价:${minus_qc_expr}`);
                     im.calc_memo =  calc_memo.join('\n');
                 }
@@ -988,8 +990,10 @@ const stageIm = (function () {
                         }
                     }
                 });
-                qc_expr = qc_expr ? p.qc_qty + '=' + qc_expr : (p.qc_qty || 0);
-                minus_qc_expr = minus_qc_expr ? p.qc_minus_qty + '=' + minus_qc_expr : (p.qc_minus_qty || 0);
+                const qc_qty = p.qc_qty ? p.qc_qty + '' : '0';
+                const qc_minus_qty = p.qc_minus_qty ? p.qc_minus_qty + '' : '0';
+                qc_expr = qc_expr && qc_expr !== qc_qty ? qc_qty + '=' + qc_expr : qc_qty;
+                minus_qc_expr = minus_qc_expr && minus_qc_expr !== qc_minus_qty ? qc_minus_qty + '=' + minus_qc_expr : qc_minus_qty;
                 calc_memo.push(`其中合同计量:${contract_expr};变更计量:${qc_expr};变更不计价:${minus_qc_expr}`);
                 im.calc_memo = calc_memo.join('\n');
             }

+ 1 - 1
app/service/stage_bills.js

@@ -189,7 +189,7 @@ module.exports = app => {
                 end_contract_qty = this.ctx.helper.add(end_contract_qty, preStageBills.contract_qty);
             }
             const end_contract_tp = this.ctx.helper.mul(end_contract_qty, bills.unit_price, decimal.tp);
-            return activeQty === end_contract_qty ? this.ctx.helper.sub(end_contract_tp, preStageBills.contract_tp) : this.ctx.helper.mul(stageBills.contract_qty, bills.unit_price, decimal.tp);
+            return activeQty === end_contract_qty ? this.ctx.helper.sub(end_contract_tp, preStageBills ? preStageBills.contract_tp : 0) : this.ctx.helper.mul(stageBills.contract_qty, bills.unit_price, decimal.tp);
         }
         async calcContractTp(info, stage, bills, stageBills) {
             const correct = this.ctx.subProject.page_show.correctCalcContractTp;

+ 1 - 0
app/view/sp_setting/user.ejs

@@ -5,6 +5,7 @@
             <h2>账号管理
                 <a href="#sel-batch" data-toggle="modal" data-target="#sel-batch" class="btn btn-primary btn-sm pull-right mr-1">选择账号</a>
                 <a href="/setting/user" class="btn btn-primary btn-sm pull-right mr-1">新增账号</a>
+                <a href="#copy-user-batch" data-toggle="modal" data-target="#copy-user-batch" class="btn btn-primary btn-sm pull-right mr-1">设置账号至其他项目</a>
             </h2>
         </div>
     </div>

+ 39 - 0
app/view/sp_setting/user_modal.ejs

@@ -136,3 +136,42 @@
         </div>
     </div>
 </div>
+<div class="modal fade" id="copy-user-batch" data-backdorp="static" style="display: none" aria-hidden="true">
+    <div class="modal-dialog modal-lg" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title">拷贝权限</h5>
+            </div>
+            <div class="modal-body">
+                <div class="row">
+                    <div class="col-4">
+                        <div class="modal-height-500 scroll-y">
+                            <table class="table table-bordered">
+                                <tr class="text-center"><th width="15%"><input type="checkbox" id="cub-sp-all"></th><th>项目名称</th></tr>
+                                <% for (const sp of subProjects) { %>
+                                <% if (sp.id === ctx.subProject.id) continue; %>
+                                <tr><td class="text-center"><input type="checkbox" name="cub-sp-check" spid="<%- sp.id %>"></td><td><%- sp.name %></td></tr>
+                                <% } %>
+                            </table>
+                        </div>
+                    </div>
+                    <div class="col">
+                        <div class="modal-height-500 scroll-y">
+                            <table class="table table-bordered scroll-y">
+                                <tr class="text-center"><th width="15%"><input type="checkbox" id="cub-user-all"></th><th width="20%">用户</th><th width="30%">职位</th><th>单位</th></tr>
+                                <% for (const u of subProjectAllAccountList) { %>
+                                <tr><td class="text-center"><input type="checkbox" name="cub-user-check" uid="<%- u.id %>"></td><td><%- u.name %></td><td><%- u.role %></td><td><%- u.company %></td></tr>
+                                <% } %>
+                            </table>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="modal-footer">
+                <input type="hidden" id="source-permission">
+                <button type="button" class="btn btn-sm btn-secondary" data-dismiss="modal">关闭</button>
+                <button type="button" class="btn btn-sm btn-sm btn-primary" id="copy-user-batch-ok">确定</button>
+            </div>
+        </div>
+    </div>
+</div>