|
|
@@ -1810,11 +1810,24 @@ $(document).ready(function() {
|
|
|
$('#cons-addpay input[name="pay_price"]').val(cpInfo ? cpInfo.pay_price : '');
|
|
|
$('#cons-addpay input[name="debit_price"]').val(cpInfo ? cpInfo.debit_price : '');
|
|
|
$('#cons-addpay input[name="yf_price"]').val(cpInfo ? cpInfo.yf_price : '');
|
|
|
- $('#cons-addpay input[name="sf_price"]').val(cpInfo ? cpInfo.sf_price : '');
|
|
|
+ // $('#cons-addpay input[name="sf_price"]').val(cpInfo ? cpInfo.sf_price : '');
|
|
|
$('#cons-addpay select[name="pay_type"]').val(cpInfo ? cpInfo.pay_type : $('#cons-addpay select[name="pay_type"] option:first').text());
|
|
|
$('#cons-addpay textarea[name="remark"]').val(cpInfo ? cpInfo.remark : '');
|
|
|
$('#cons-addpay .yf-tips').text('');
|
|
|
$('#cons-addpay .sf-tips').text('');
|
|
|
+ let items = null;
|
|
|
+ if (cpInfo) {
|
|
|
+ try { items = cpInfo.sf_json ? JSON.parse(cpInfo.sf_json) : null; } catch (e) {}
|
|
|
+ // 旧数据没有 sf_json 时,用整笔 sf_price 填入首行
|
|
|
+ if (!items || !items.length) items = [{ desc: '', amount: cpInfo.sf_price }];
|
|
|
+ }
|
|
|
+ $('#sf-rows').empty().append(
|
|
|
+ items ? items.map(function (i) { return sfMakeRow(i.desc, i.amount); }) : sfMakeRow()
|
|
|
+ );
|
|
|
+ sfSyncDelBtns();
|
|
|
+ $('#sf-over-warn').hide();
|
|
|
+ $('#sf-sum-display').removeClass('text-danger');
|
|
|
+ sfRecalc();
|
|
|
|
|
|
}
|
|
|
|
|
|
@@ -2205,6 +2218,76 @@ $(document).ready(function() {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ function sfMakeRow(desc, amt) {
|
|
|
+ const $r = $(
|
|
|
+ '<div class="sf-row row no-gutters mb-2 align-items-center">' +
|
|
|
+ '<div class="col-6 pr-2">' +
|
|
|
+ '<input type="text" class="form-control form-control-sm sf-desc" placeholder="说明(如:工程款)">' +
|
|
|
+ '</div>' +
|
|
|
+ '<div class="col-5 pr-2">' +
|
|
|
+ '<input type="number" class="form-control form-control-sm sf-amt" placeholder="金额" min="0">' +
|
|
|
+ '</div>' +
|
|
|
+ '<div class="col-1 text-center">' +
|
|
|
+ '<button type="button" class="btn btn-sm btn-outline-secondary sf-del" style="font-size:16px;border: 1px solid #ced4da;" title="删除"><i class="fa fa-trash"></i></button>' +
|
|
|
+ '</div>' +
|
|
|
+ '</div>'
|
|
|
+ );
|
|
|
+ if (desc != null) $r.find('.sf-desc').val(desc);
|
|
|
+ if (amt != null) $r.find('.sf-amt').val(amt);
|
|
|
+ return $r;
|
|
|
+ }
|
|
|
+
|
|
|
+ function sfSyncDelBtns() {
|
|
|
+ const $rows = $('#sf-rows .sf-row');
|
|
|
+ $rows.find('.sf-del').toggle($rows.length > 1);
|
|
|
+ }
|
|
|
+
|
|
|
+// 汇总明细 → 写入 hidden sf_price / sf_json,校验不超应付
|
|
|
+ function sfRecalc() {
|
|
|
+ let sfSum = 0;
|
|
|
+ const items = [];
|
|
|
+ $('#sf-rows .sf-row').each(function () {
|
|
|
+ const amt = parseFloat($(this).find('.sf-amt').val()) || 0;
|
|
|
+ const desc = $(this).find('.sf-desc').val();
|
|
|
+ sfSum = ZhCalc.add(sfSum, amt);
|
|
|
+ if ($(this).find('.sf-amt').val() !== '') items.push({ desc: desc, amount: amt });
|
|
|
+ });
|
|
|
+
|
|
|
+ $('[name="sf_price"]').val(sfSum || '');
|
|
|
+ $('[name="sf_json"]').val(JSON.stringify(items));
|
|
|
+ $('#sf-sum-display').text(
|
|
|
+ '¥\u00a0' + sfSum
|
|
|
+ );
|
|
|
+
|
|
|
+ const yfPrice = parseFloat($('#cons-addpay [name="yf_price"]').val()) || 0;
|
|
|
+ if (yfPrice > 0 && sfSum > yfPrice) {
|
|
|
+ $('#sf-over-warn').show();
|
|
|
+ $('#sf-yf-hint').text(
|
|
|
+ '¥\u00a0' + yfPrice
|
|
|
+ );
|
|
|
+ $('#sf-sum-display').addClass('text-danger');
|
|
|
+ $('#cons-addpay .sf-tips').text(' ≤ ' + yfPrice);
|
|
|
+ } else {
|
|
|
+ $('#sf-over-warn').hide();
|
|
|
+ $('#sf-sum-display').removeClass('text-danger');
|
|
|
+ // sf-tips 由原 change 回调管理,这里只在超限时覆盖,不超时不清(让原逻辑自己清)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 事件:明细金额变化
|
|
|
+ $('#sf-rows').on('input change', '.sf-amt', sfRecalc);
|
|
|
+ $('#sf-rows').on('input change', '.sf-desc', sfRecalc);
|
|
|
+
|
|
|
+ $('#sf-add-row').on('click', function () {
|
|
|
+ $('#sf-rows').append(sfMakeRow());
|
|
|
+ sfSyncDelBtns();
|
|
|
+ $('#sf-rows .sf-row:last .sf-desc').focus();
|
|
|
+ });
|
|
|
+
|
|
|
+ $('#sf-rows').on('click', '.sf-del', function () {
|
|
|
+ $(this).closest('.sf-row').remove();
|
|
|
+ sfSyncDelBtns();
|
|
|
+ sfRecalc();
|
|
|
+ });
|
|
|
$('#cons-addpay input[type="number"]').change(function () {
|
|
|
const name = $(this).attr('name');
|
|
|
const node = SpreadJsObj.getSelectObject(contractSheet);
|
|
|
@@ -2259,6 +2342,7 @@ $(document).ready(function() {
|
|
|
}
|
|
|
if (name === 'pay_price' || name === 'debit_price') {
|
|
|
$('#cons-addpay input[name="yf_price"]').val(yf_price);
|
|
|
+ setTimeout(sfRecalc, 0); // ← 唯一新增:yf_price 更新后重新校验实付超限
|
|
|
}
|
|
|
});
|
|
|
|
|
|
@@ -2286,6 +2370,7 @@ $(document).ready(function() {
|
|
|
debit_price: $('#cons-addpay input[name="debit_price"]').val() || 0,
|
|
|
yf_price: $('#cons-addpay input[name="yf_price"]').val() || 0,
|
|
|
sf_price: $('#cons-addpay input[name="sf_price"]').val() || 0,
|
|
|
+ sf_json: $('#cons-addpay input[name="sf_json"]').val() || '',
|
|
|
pay_type: $('#cons-addpay select[name="pay_type"]').val(),
|
|
|
remark: $('#cons-addpay textarea[name="remark"]').val(),
|
|
|
}
|
|
|
@@ -2334,6 +2419,7 @@ $(document).ready(function() {
|
|
|
debit_price: $('#cons-addpay input[name="debit_price"]').val() || 0,
|
|
|
yf_price: $('#cons-addpay input[name="yf_price"]').val() || 0,
|
|
|
sf_price: $('#cons-addpay input[name="sf_price"]').val() || 0,
|
|
|
+ sf_json: $('#cons-addpay input[name="sf_json"]').val() || '',
|
|
|
pay_type: $('#cons-addpay select[name="pay_type"]').val(),
|
|
|
remark: $('#cons-addpay textarea[name="remark"]').val(),
|
|
|
}
|
|
|
@@ -2378,7 +2464,7 @@ $(document).ready(function() {
|
|
|
return false;
|
|
|
}
|
|
|
if (data.sf_price && !/^\d+(\.\d+)?$/.test(data.sf_price)) {
|
|
|
- toastr.error('实'+ name +'金额只能输入数字');
|
|
|
+ toastr.error('实'+ name +'金额汇总需要大于等于0');
|
|
|
return false;
|
|
|
}
|
|
|
if (cpInfo) {
|