Files
zszq-trs/YLErpWeb/wwwroot/Scripts/app/client/entryexitEdit.js
T
2025-04-18 14:12:26 +08:00

281 lines
8.3 KiB
JavaScript

const cardInputMgr = (new function () {
var _inited = 0, _inputFlag = 0;
if (page.changeBeforeConfirm) {
_inputFlag = page.IsBankOnlyDropDown ? 1 : page.OpenBankCard && !page.OpenBankId ? 4 : 3;
}
var self = this;
function __init() {
if (_inputFlag) {
let $html = $('<div>').html($('#cardInputTpl').html());
let html = $html.children(_inputFlag === 4 ? '.input' : '.select').html();
$('.card-input-wrap').html(html.trim());
}
self.updateOptions();
}
this.init = function () {
__init();
_inited = 1;
};
this.updateOptions = function () {
if (!(_inputFlag & 1)) return;
let clientId = $("#ClientId").val();
let direction = $("#Direction").val();
$('#OpenBankId').html("");
clientId && main.post("/client/GetValidBankCard", { ClientId: clientId, Direction: direction }, { waitMe: false }).done(function (resp) {
let html = resp.obj.reduce((s, cur) => {
return s += `<option value="${cur.id}" data-bank="${cur.Bank}" data-Use="${cur.Use}">${cur.Card}</option>`;
}, "");
$('#OpenBankId').html(html).val(page.OpenBankId);
$('#OpenBankUser').html("");
});
};
this.onBankIdChange = function () {
if (_inited && _inputFlag && _inputFlag < 4) {
let $s = $("#OpenBankId").find(":selected");
$("#OpenBankCard").val($s.text() || '');
$("#OpenBank").val($s.data("bank") || '');
$("#OpenBankUser").html($s.data("use") || '');
}
};
this.changeInputType = function (forceSelect) {
if (!_inited || forceSelect && _inputFlag < 4) return;
if (_inputFlag === 4) {
_inputFlag = 3;
__init();
}
else if (_inputFlag === 3) {
_inputFlag = 4;
__init();
}
};
this.toggle = function (blShow) {
$('.card-input-wrap').closest('.form-group').toggle(blShow);
};
this.checkSubmit = function () {
if ($("#Direction").val() === "出金") {
if (_inputFlag === 4) {
return $("#OpenBankCard").val() || main.message("请填写银行卡号!");
} else if (_inputFlag) {
return $("#OpenBankId").val() || main.message("请选择银行卡号!");
}
}
return true;
};
});
const moneyInputMgr = (new function () {
var _moneyEle, _moneyStrEle;
//转换成财务计数
function cc(s) {
if (/[^0-9.]/.test(s)) {
main.message("金额不能小于0");
return "";
}
s = s.replace(/^(\d*)$/, "$1.");
s = (s + "00").replace(/(\d*\.\d\d)\d*/, "$1");
s = s.replace(".", ",");
var re = /(\d)(\d{3},)/;
while (re.test(s))
s = s.replace(re, "$1,$2");
s = s.replace(/,(\d\d)$/, ".$1");
return s.replace(/^\./, "0.")
};
//转换为大写金额
function toAmountMoney(n) {
var unit = "千百拾亿千百拾万千百拾元角分", str = "";
var p = n.indexOf('.');
if (p < 0) {
n += '00';
} else {
n = _.trimStart(n.substring(0, p) + n.substr(p + 1, 2).padEnd(2, '0'), '0')
}
unit = unit.substr(unit.length - n.length);
for (var i = 0; i < n.length; i++)
str += '零壹贰叁肆伍陆柒捌玖'.charAt(n.charAt(i)) + unit.charAt(i);
return str.replace(/零(千|百|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/零(万|亿|元)/g, "$1").replace(/(亿)万|壹(拾)/g, "$1$2").replace(/^元零?|零分/g, "").replace(/元$/g, "元");
}
function changeForm(s) {
let arr = s.split(",");
let newArr = toAmountMoney(arr.join(""));
$("#MoneyStr").next().html(newArr);
$("#MoneyStr").val(arr.join(""));
};
this.onInput = function () {
changeForm(_moneyEle.value = _moneyStrEle.value || '');
};
this.onChange = function () {
_moneyStrEle.value = cc(_moneyStrEle.value)
};
this.onFocus = function () {
var moneyStr = $("#MoneyStr").val().replace(/,/g, "");
$("#MoneyStr").val(moneyStr);
};
this.init = function () {
_moneyEle = document.getElementById('Money');
_moneyStrEle = document.getElementById('MoneyStr');
FastVue.numberInput(_moneyStrEle);
changeForm(_moneyEle.value);
};
});
const currencyInputMgr = (new function () {
this.updateOptions = function () {
let happenDate = $("#HappenDate").val();
main.post("/Currency/getCurrencyList?happenDate=" + happenDate).done(function (resp) {
let html = resp.obj.reduce((s, cur) => {
return s += `<option value="${cur.Value}">${cur.Text}</option>`;
}, "");
$('#CurrencyCode').html(html);
$('#CurrencyCode').val(page.currencyCode);
});
};
});
//------
function checkSubmitData() {
if (!$("#ClientId").val()) {
return main.message("请选择出入金客户!");
}
if (!$("#HappenDate").val()) {
return main.message("请设置出入金时间!");
}
if (!$("#Money").val()) {
return main.message("请设置出入金金额!");
}
else {
$("#Money").val($("#Money").val().replace(',', ''));
}
return cardInputMgr.checkSubmit();
}
function saveentryexit() {
if (!checkSubmitData()) return false;
//var openBankId= $("#OpenBankId").val();
//if (!openBankId) {
// $("#OpenBankCard").val("");
//}
var data = $("#entryexitEditForm").serialize();
var eventTarget = $(event.target).prop('disabled', true);
main.post("/entryexit/entryexitEditJson", data).done(function (res) {
window.location.href = "/entryexit/entryexitview?enid=" + res.obj.EncryptId;
layer.closeMe('reloadentryexit');
}).always(function () {
eventTarget.prop('disabled', false);
});
}
function setDirection(isInit) {
!isInit && cardInputMgr.changeInputType(true);
let direction = $("#Direction").val();
$(".changeInputBtn").toggleClass("hide", ["出金", "应付"].includes(direction));
if (direction === "出金") {
$("#cash_type_container").hide(); // 隐藏资金类型
} else {
$("#cash_type_container").show(); // 显示资金类型
}
cardInputMgr.toggle(["入金", "出金"].includes(direction));
cardInputMgr.updateOptions();
}
function setClientCash() {
var clientId = $("#ClientId").val();
if (!clientId) {
return;
}
main.post("/entryexit/GetClientCash?ClientId=" + clientId).done(function (res) {
if (res) {
$("#ClientCashCNY").val(res.CNY);
$("#ClientCashUSD").val(res.USD);
}
})
}
$(function () {
cardInputMgr.init();
currencyInputMgr.updateOptions();
var width = 152;
for (var i = 0; i < page.clients.length; i++) {
let ele = document.createElement('span')
ele.innerText = page.clients[i].Name;
ele.style.fontSize = '14px';
document.documentElement.append(ele);
var charLength = ele.offsetWidth + 28;//滚动条
document.documentElement.removeChild(ele);
if (charLength > width) {
width = charLength
}
}
if (page.changeBeforeConfirm) {
let autoClient = FastVue.autocomplete(document.getElementById('ClientId'), {
lookup: page.clients, nameField: 'Name', valueField: 'id', searchField: ['Name', 'PinYin'], width: width,
onSelect(data) {
cardInputMgr.updateOptions();
$('#ClientName').val(data.Name);
$('#ClientId_auto').attr('title', data.Name);
setClientCash();
}
});
autoClient.setData(page.client);
setClientCash();
}
const fp = flatpickr(".form_datetime", {
enableTime: true, dateFormat: "Y-m-d H:i",
allowInput: true, time_24hr: true,
onChange: function (dateObject, dateString) {
currencyInputMgr.updateOptions();
}
});
setDirection(1);
moneyInputMgr.init();
if (!page.changeBeforeConfirm) {
if (!page.isChangeAfterConfirm) {
$("#MoneyStr").prop("disabled", true);
}
$("#HappenDate").prop("disabled", true);
}
});