|
@@ -17,24 +17,24 @@
|
|
<div class="card mb-2 p-2 border-success" id="check-empty-code">
|
|
<div class="card mb-2 p-2 border-success" id="check-empty-code">
|
|
<div class="d-flex justify-content-between">
|
|
<div class="d-flex justify-content-between">
|
|
项目节、清单编号同时为空
|
|
项目节、清单编号同时为空
|
|
- <!-- <span class="text-muted">待检查</span> -->
|
|
|
|
- <!-- <span class="text-muted" title="检查中"><i class="fa fa-spinner fa-spin"></i></span> -->
|
|
|
|
<span class="text-success" title="完成" name="check-status"><i class="fa fa-check"></i></span>
|
|
<span class="text-success" title="完成" name="check-status"><i class="fa fa-check"></i></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="card mb-2 p-2 border-success" id="check-calc">
|
|
<div class="card mb-2 p-2 border-success" id="check-calc">
|
|
<div class="d-flex justify-content-between">
|
|
<div class="d-flex justify-content-between">
|
|
清单数量不等于计量单元之和
|
|
清单数量不等于计量单元之和
|
|
- <!-- <span class="text-muted">待检查</span> -->
|
|
|
|
- <!-- <span class="text-muted" title="检查中"><i class="fa fa-spinner fa-spin"></i></span> -->
|
|
|
|
<span class="text-success" title="完成" name="check-status"><i class="fa fa-check"></i></span>
|
|
<span class="text-success" title="完成" name="check-status"><i class="fa fa-check"></i></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="card mb-2 p-2 border-success" id="check-zero">
|
|
<div class="card mb-2 p-2 border-success" id="check-zero">
|
|
<div class="d-flex justify-content-between">
|
|
<div class="d-flex justify-content-between">
|
|
清单数量或单价为0
|
|
清单数量或单价为0
|
|
- <!-- <span class="text-muted">待检查</span> -->
|
|
|
|
- <!-- <span class="text-muted" title="检查中"><i class="fa fa-spinner fa-spin"></i></span> -->
|
|
|
|
|
|
+ <span class="text-success" title="完成" name="check-status"><i class="fa fa-check"></i></span>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="card mb-2 p-2 border-success" id="check-tp">
|
|
|
|
+ <div class="d-flex justify-content-between">
|
|
|
|
+ 清单金额≠数量×单价
|
|
<span class="text-success" title="完成" name="check-status"><i class="fa fa-check"></i></span>
|
|
<span class="text-success" title="完成" name="check-status"><i class="fa fa-check"></i></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -56,9 +56,10 @@
|
|
empty_code: {value: 2, text: '项目节、清单编号同时为空'},
|
|
empty_code: {value: 2, text: '项目节、清单编号同时为空'},
|
|
calc: {value: 3, text: '清单数量不等于计量单元之和'},
|
|
calc: {value: 3, text: '清单数量不等于计量单元之和'},
|
|
zero: {value: 4, text: '清单数量或单价为0'},
|
|
zero: {value: 4, text: '清单数量或单价为0'},
|
|
|
|
+ tp: {value: 5, text: '清单金额≠数量×单价'},
|
|
};
|
|
};
|
|
const LedgerChecker = function (setting) {
|
|
const LedgerChecker = function (setting) {
|
|
- const ledger = setting.ledgerTree, ledgerPos = setting.ledgerPos;
|
|
|
|
|
|
+ const ledger = setting.ledgerTree, ledgerPos = setting.ledgerPos, decimal = setting.decimal;
|
|
|
|
|
|
const initWaitingModal = function () {
|
|
const initWaitingModal = function () {
|
|
$('.card', '#ledger-check-modal').removeClass('border-success');
|
|
$('.card', '#ledger-check-modal').removeClass('border-success');
|
|
@@ -147,6 +148,26 @@
|
|
}
|
|
}
|
|
return error;
|
|
return error;
|
|
},
|
|
},
|
|
|
|
+ checkTp: function (ledgerTree) {
|
|
|
|
+ const error = [];
|
|
|
|
+ for (const node of ledgerTree.nodes) {
|
|
|
|
+ if (node.children && node.children.length > 0) continue;
|
|
|
|
+
|
|
|
|
+ const checkData = {
|
|
|
|
+ sgfh_tp: node.sgfh_tp || 0, qtcl_tp: node.qtcl_tp || 0, sjcl_tp: node.sjcl_tp || 0,
|
|
|
|
+ total_price: node.total_price || 0, deal_tp: node.deal_tp || 0,
|
|
|
|
+ };
|
|
|
|
+ const calcData = {
|
|
|
|
+ sgfh_tp: ZhCalc.mul(node.unit_price, node.sgfh_qty, decimal.tp) || 0,
|
|
|
|
+ qtcl_tp: ZhCalc.mul(node.unit_price, node.qtcl_qty, decimal.tp) || 0,
|
|
|
|
+ sjcl_tp: ZhCalc.mul(node.unit_price, node.sjcl_qty, decimal.tp) || 0,
|
|
|
|
+ total_price: ZhCalc.mul(node.unit_price, node.quantity, decimal.tp) || 0,
|
|
|
|
+ deal_tp: ZhCalc.mul(node.unit_price, node.deal_qty, decimal.tp) || 0,
|
|
|
|
+ };
|
|
|
|
+ if (!_.isMatch(checkData, calcData)) error.push(node);
|
|
|
|
+ }
|
|
|
|
+ return error;
|
|
|
|
+ }
|
|
};
|
|
};
|
|
|
|
|
|
const assignWarningData = function (nodes, checkType, warningData) {
|
|
const assignWarningData = function (nodes, checkType, warningData) {
|
|
@@ -177,6 +198,8 @@
|
|
assignWarningData(calc, ledgerCheckType.calc.value, checkData.warning_data);
|
|
assignWarningData(calc, ledgerCheckType.calc.value, checkData.warning_data);
|
|
const zero = doSomeCheck('#check-zero', ledgerCheckUtil.checkZero) || [];
|
|
const zero = doSomeCheck('#check-zero', ledgerCheckUtil.checkZero) || [];
|
|
assignWarningData(zero, ledgerCheckType.zero.value, checkData.warning_data);
|
|
assignWarningData(zero, ledgerCheckType.zero.value, checkData.warning_data);
|
|
|
|
+ const tp = doSomeCheck('#check-tp', ledgerCheckUtil.checkTp) || [];
|
|
|
|
+ assignWarningData(tp, ledgerCheckType.tp.value, checkData.warning_data);
|
|
|
|
|
|
$('#ledger-check-waiting').hide();
|
|
$('#ledger-check-waiting').hide();
|
|
setting.checkList.clearCheckData();
|
|
setting.checkList.clearCheckData();
|