20260512173244
This commit is contained in:
1 parent
e98740192d
commit
c81f78880e
6 files changed
+2799
-1155
No files matched your search
@@ -42,7 +42,7 @@
|
||||
<dependency>
|
||||
<groupId>com.microsoft.sqlserver</groupId>
|
||||
<artifactId>mssql-jdbc</artifactId>
|
||||
<version>13.4.0.jre8</version>
|
||||
<version>6.2.2.jre8</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
||||
+21
-22
@@ -81,6 +81,7 @@ public class DataSourceManager extends AbstractRoutingDataSource {
|
||||
}
|
||||
|
||||
private static DataSource createDataSource(String orgCode) throws Exception {
|
||||
|
||||
String file = CONFIG_PATH + orgCode + ".properties";
|
||||
|
||||
try (InputStream in = DataSourceManager.class
|
||||
@@ -93,6 +94,7 @@ public class DataSourceManager extends AbstractRoutingDataSource {
|
||||
|
||||
Properties p = new Properties();
|
||||
p.load(in);
|
||||
|
||||
requireProperty(p, "url", file);
|
||||
requireProperty(p, "username", file);
|
||||
requireProperty(p, "password", file);
|
||||
@@ -101,44 +103,41 @@ public class DataSourceManager extends AbstractRoutingDataSource {
|
||||
DruidDataSource ds = new DruidDataSource();
|
||||
|
||||
ds.setName(orgCode);
|
||||
|
||||
ds.setUrl(p.getProperty("url"));
|
||||
ds.setUsername(p.getProperty("username"));
|
||||
ds.setPassword(p.getProperty("password"));
|
||||
ds.setDriverClassName(p.getProperty("driver"));
|
||||
|
||||
ds.setInitialSize(1);
|
||||
ds.setMinIdle(1);
|
||||
ds.setMaxActive(10);
|
||||
ds.setMaxWait(3000);
|
||||
// 连接池大小
|
||||
ds.setInitialSize(2);
|
||||
ds.setMinIdle(2);
|
||||
ds.setMaxActive(50);
|
||||
|
||||
ds.setBreakAfterAcquireFailure(true);
|
||||
ds.setConnectionErrorRetryAttempts(0);
|
||||
ds.setFailFast(true);
|
||||
// 获取连接超时时间
|
||||
ds.setMaxWait(60000);
|
||||
|
||||
ds.setValidationQuery(VALIDATION_QUERY);
|
||||
|
||||
ds.setTestOnBorrow(false);
|
||||
ds.setTestOnReturn(false);
|
||||
// 连接检测
|
||||
ds.setValidationQuery("SELECT 1");
|
||||
ds.setTestOnBorrow(true);
|
||||
ds.setTestWhileIdle(true);
|
||||
|
||||
// 空闲检测
|
||||
ds.setTimeBetweenEvictionRunsMillis(60000);
|
||||
ds.setMinEvictableIdleTimeMillis(300000);
|
||||
|
||||
ds.setKeepAlive(false);
|
||||
// 保活
|
||||
ds.setKeepAlive(true);
|
||||
|
||||
ds.setPoolPreparedStatements(false);
|
||||
// 防止连接失败卡死
|
||||
ds.setBreakAfterAcquireFailure(true);
|
||||
ds.setConnectionErrorRetryAttempts(1);
|
||||
|
||||
ds.setFilters("stat,slf4j");
|
||||
ds.setUseGlobalDataSourceStat(true);
|
||||
ds.setConnectionProperties(
|
||||
"druid.stat.mergeSql=true;" +
|
||||
"druid.stat.slowSqlMillis=3000;" +
|
||||
"druid.stat.logSlowSql=true"
|
||||
);
|
||||
|
||||
ds.setRemoveAbandoned(false);
|
||||
// 关闭慢SQL日志
|
||||
ds.setFilters("stat");
|
||||
|
||||
ds.init();
|
||||
|
||||
return ds;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#url=jdbc:sqlserver://118.89.70.199:1433;databaseName=G3BoxOCR;encrypt=false
|
||||
#url=jdbc:sqlserver://118.89.70.199:1433;databaseName=G3BoxOCR
|
||||
#username=sa
|
||||
#password=zhang520..
|
||||
#driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
|
||||
|
||||
url=jdbc:sqlserver://127.0.0.1:1433;databaseName=G3ContainerOCR;encrypt=false
|
||||
url=jdbc:sqlserver://127.0.0.1:1433;databaseName=G3ContainerOCR
|
||||
username=sa
|
||||
password=123456@aaa
|
||||
driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
|
||||
|
||||
+219
-251
@@ -180,7 +180,7 @@
|
||||
<div style="height: calc(100% - 5px);">
|
||||
<table id="feegrid" style="margin-bottom: 2px;"></table>
|
||||
</div>
|
||||
<div id='tb_con' style="margin-bottom: 2px;height: 24px;width: 100%; display: none;">
|
||||
<div id='tb_con' style="margin-bottom: 2px;height: 24px;width: 100%;display: none">
|
||||
<div style="float:left;">
|
||||
<input type="button" tag='3' id='btn_xzfy' onclick="selectysfee()" value="选择费用"
|
||||
class="g3-grid-Btn g3-btn-blue">
|
||||
@@ -230,6 +230,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="feegrid_pager" class="easyui-pagination"
|
||||
style="margin: 6px 0px;background:#efefef;border:1px solid #ccc;"></div>
|
||||
|
||||
|
||||
<div class="g3-form-row" style="height: 30px; width: 99%; display: flex; align-items: center; gap: 20px;">
|
||||
@@ -281,7 +283,9 @@
|
||||
|
||||
let subSummary = {
|
||||
moneyTypes: [],
|
||||
totalAmount: 0
|
||||
notMoneyTypes: [],
|
||||
totalAmount: 0,
|
||||
notAmount: 0
|
||||
};
|
||||
|
||||
// DataGrid 管理器实例
|
||||
@@ -473,22 +477,39 @@
|
||||
// 创建 DataGridManager(自动初始化 datagrid 和分页器)
|
||||
gridManager = createDataGridManager({
|
||||
gridId: 'feegrid',
|
||||
pagerId: 'feegrid_pager',
|
||||
keyField: 'subid',
|
||||
pageSize: 50,
|
||||
viewName: subviewtable,
|
||||
orderField: 'father ASC, mx_xh ASC, b_id ASC',
|
||||
orderField: 'father ASC, mx_xh ASC',
|
||||
baseSearchCondition: "mx_zdorderid='" + strid + "'",
|
||||
selectAllBtn: '#btn_select_all',
|
||||
selectAllText: '全部选中',
|
||||
unselectAllText: '全部反选',
|
||||
userid: '',
|
||||
onLoadSuccess: function (rows) {
|
||||
calcw_selfee();
|
||||
// 添加 toolbar 配置
|
||||
customDatagridOptions: {
|
||||
toolbar: '#tb_con',
|
||||
idField: 'subid',
|
||||
fit: true,
|
||||
remoteSort: false,
|
||||
multiSort: true,
|
||||
//multiSort :true,
|
||||
singleSelect: true,
|
||||
//ctrlSelect:true,
|
||||
selectOnCheck: false,
|
||||
checkOnSelect: false,
|
||||
rownumbers: true,
|
||||
autoRowHeight: false,
|
||||
},
|
||||
onLoadSuccess: function (rows, isFirstLoad) {
|
||||
// if (isFirstLoad) {
|
||||
// calcw_selfee();
|
||||
// }
|
||||
},
|
||||
onAfterEdit: function (rowIndex, row, changes) {
|
||||
calcw_fee();
|
||||
},
|
||||
onSelectionChange: function () {
|
||||
console.log("===change===")
|
||||
calcw_selfee();
|
||||
}
|
||||
});
|
||||
@@ -517,148 +538,130 @@
|
||||
|
||||
//////////-------feegrid-----------
|
||||
// 单行对「按币别汇总」的贡献,与 calcw_fee SQL 中 CASE 应收/应付 一致
|
||||
function applyFeeRowToMoneyTypeGroups(groupMap, row, sign) {
|
||||
function buildGroupMap(data, prefix) {
|
||||
var groupMap = {};
|
||||
var prefixLen = prefix.length;
|
||||
for (var key in data) {
|
||||
if (key.startsWith(prefix)) {
|
||||
var currency = key.substring(prefixLen).toUpperCase();
|
||||
var amount = Number(data[key] || 0);
|
||||
if (!groupMap[currency]) {
|
||||
groupMap[currency] = { mx_moneytype_id: currency, mx_amount: 0 };
|
||||
}
|
||||
groupMap[currency].mx_amount += amount;
|
||||
}
|
||||
}
|
||||
return groupMap;
|
||||
}
|
||||
|
||||
function applyFeeRowToGroup(groupMap, row, sign) {
|
||||
var mt = row.mx_moneytype_id;
|
||||
if (mt === undefined || mt === null || mt === '') {
|
||||
return;
|
||||
}
|
||||
var rootNet = 0;
|
||||
if (row.mx_type_id == '应收') {
|
||||
rootNet = Number(row.mx_amount_root || 0);
|
||||
} else if (row.mx_type_id == '应付') {
|
||||
rootNet = -Number(row.mx_amount_root || 0);
|
||||
}
|
||||
if (!mt) return;
|
||||
var amt = Number(row.mx_amount || 0);
|
||||
if (row.mx_type_id == '应付') {
|
||||
amt = -amt;
|
||||
}
|
||||
if (!groupMap[mt]) {
|
||||
groupMap[mt] = { mx_moneytype_id: mt, mx_amount_root: 0, mx_amount: 0 };
|
||||
groupMap[mt] = { mx_moneytype_id: mt, mx_amount: 0 };
|
||||
}
|
||||
groupMap[mt].mx_amount_root += sign * rootNet;
|
||||
groupMap[mt].mx_amount += sign * amt;
|
||||
}
|
||||
|
||||
function groupMapToArray(groupMap) {
|
||||
var arr = [];
|
||||
for (var mk in groupMap) {
|
||||
var g = groupMap[mk];
|
||||
g.mx_amount = Math.round(g.mx_amount * 100) / 100;
|
||||
arr.push(g);
|
||||
}
|
||||
return arr.sort(function (a, b) {
|
||||
return String(a.mx_moneytype_id).localeCompare(String(b.mx_moneytype_id));
|
||||
});
|
||||
}
|
||||
|
||||
function calcTotal(arr) {
|
||||
var total = 0;
|
||||
for (var i = 0; i < arr.length; i++) {
|
||||
total += Number(arr[i].mx_amount || 0);
|
||||
}
|
||||
return Math.round(total * 100) / 100;
|
||||
}
|
||||
|
||||
function buildDisplayText(arr) {
|
||||
var txtArr = [];
|
||||
for (var i = 0; i < arr.length; i++) {
|
||||
var row = arr[i];
|
||||
if (row.mx_amount !== 0) {
|
||||
txtArr.push(row.mx_moneytype_id + " " + row.mx_amount);
|
||||
}
|
||||
}
|
||||
return txtArr.join(";");
|
||||
}
|
||||
|
||||
function calcw_fee() {
|
||||
if (!strid) {
|
||||
$("#div_total").text('0.00');
|
||||
$('#b_amount').val('0.00');
|
||||
subSummary.moneyTypes = [];
|
||||
subSummary.notMoneyTypes = [];
|
||||
subSummary.totalAmount = 0;
|
||||
subSummary.notAmount = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
var data = mainData;
|
||||
var amountGroupMap = buildGroupMap(mainData, 'v_amount_');
|
||||
var notAmountGroupMap = buildGroupMap(mainData, 'v_notamount_');
|
||||
|
||||
// 提取币种金额(v_amount_ 开头的字段)放入 groupMap
|
||||
var groupMap = {};
|
||||
for (var key in data) {
|
||||
if (key.startsWith('v_amount_')) {
|
||||
var currency = key.replace('v_amount_', '').toUpperCase();
|
||||
var amount = Number(data[key] || 0);
|
||||
groupMap[currency] = {
|
||||
mx_moneytype_id: currency,
|
||||
mx_amount_root: amount,
|
||||
mx_amount: amount
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// 草稿:已保存行标记删除 → 仍计入 DB 汇总,需扣回;本地新增 insertRows → 尚未进 DB,需加上
|
||||
var dIdx;
|
||||
var deleteRows = gridManager.getDeleteRows();
|
||||
var insertRows = gridManager.getInsertRows();
|
||||
for (dIdx = 0; dIdx < deleteRows.length; dIdx++) {
|
||||
applyFeeRowToMoneyTypeGroups(groupMap, deleteRows[dIdx], -1);
|
||||
|
||||
for (var i = 0; i < deleteRows.length; i++) {
|
||||
applyFeeRowToGroup(amountGroupMap, deleteRows[i], -1);
|
||||
applyFeeRowToGroup(notAmountGroupMap, deleteRows[i], -1);
|
||||
}
|
||||
for (dIdx = 0; dIdx < insertRows.length; dIdx++) {
|
||||
var insRow = insertRows[dIdx];
|
||||
if (insRow._rowState === 'delete') {
|
||||
continue;
|
||||
for (var i = 0; i < insertRows.length; i++) {
|
||||
if (insertRows[i]._rowState !== 'delete') {
|
||||
applyFeeRowToGroup(amountGroupMap, insertRows[i], 1);
|
||||
applyFeeRowToGroup(notAmountGroupMap, insertRows[i], 1);
|
||||
}
|
||||
applyFeeRowToMoneyTypeGroups(groupMap, insRow, 1);
|
||||
}
|
||||
|
||||
// 构建合并后的 moneyTypes
|
||||
var mergedDatas = [];
|
||||
var mk;
|
||||
for (mk in groupMap) {
|
||||
var g = groupMap[mk];
|
||||
g.mx_amount_root = Math.round(g.mx_amount_root * 1000) / 1000;
|
||||
g.mx_amount = Math.round(g.mx_amount * 100) / 100;
|
||||
mergedDatas.push(g);
|
||||
}
|
||||
mergedDatas.sort(function (a, b) {
|
||||
return String(a.mx_moneytype_id).localeCompare(String(b.mx_moneytype_id));
|
||||
var moneyTypes = groupMapToArray(amountGroupMap);
|
||||
var notMoneyTypes = groupMapToArray(notAmountGroupMap);
|
||||
|
||||
subSummary.moneyTypes = moneyTypes.filter(function (r) {
|
||||
return r.mx_amount !== 0;
|
||||
});
|
||||
|
||||
// 计算总金额
|
||||
var totalamount = 0;
|
||||
for (var mi = 0; mi < mergedDatas.length; mi++) {
|
||||
totalamount += Number(mergedDatas[mi].mx_amount || 0);
|
||||
}
|
||||
totalamount = Math.round(totalamount * 100) / 100;
|
||||
|
||||
// 更新 subSummary
|
||||
subSummary.moneyTypes = mergedDatas.filter(function (r) {
|
||||
return r.mx_amount_root !== 0 || r.mx_amount !== 0;
|
||||
subSummary.notMoneyTypes = notMoneyTypes.filter(function (r) {
|
||||
return r.mx_amount !== 0;
|
||||
});
|
||||
subSummary.totalAmount = totalamount;
|
||||
subSummary.totalAmount = calcTotal(moneyTypes);
|
||||
subSummary.notAmount = calcTotal(notMoneyTypes);
|
||||
|
||||
// 构建显示文本
|
||||
var txtArr = [];
|
||||
for (var mi = 0; mi < mergedDatas.length; mi++) {
|
||||
var row = mergedDatas[mi];
|
||||
if (row.mx_amount_root === 0 && row.mx_amount === 0) {
|
||||
continue;
|
||||
}
|
||||
txtArr.push(row.mx_moneytype_id + " " + row.mx_amount_root);
|
||||
}
|
||||
var totaltxt = txtArr.join(";");
|
||||
|
||||
if (totalamount !== 0) {
|
||||
totaltxt += " 折合金额:" + totalamount;
|
||||
var totaltxt = buildDisplayText(moneyTypes);
|
||||
if (subSummary.totalAmount !== 0) {
|
||||
totaltxt += " 折合金额:" + subSummary.totalAmount;
|
||||
}
|
||||
|
||||
$("#div_total").text(totaltxt);
|
||||
$("#b_amount").val(totalamount);
|
||||
$("#b_amount").val(subSummary.totalAmount);
|
||||
|
||||
console.log(subSummary);
|
||||
calcDeleteFee();
|
||||
}
|
||||
|
||||
function calcDeleteFee() {
|
||||
var deleteRows = gridManager.getDeleteRows();
|
||||
var deleteGroupMap = {};
|
||||
var deleteRows = gridManager.getDeleteRows();
|
||||
|
||||
for (var i = 0; i < deleteRows.length; i++) {
|
||||
var row = deleteRows[i];
|
||||
var mt = row.mx_moneytype_id;
|
||||
if (mt === undefined || mt === null || mt === '') {
|
||||
continue;
|
||||
}
|
||||
var rootNet = 0;
|
||||
if (row.mx_type_id == '应收') {
|
||||
rootNet = Number(row.mx_amount_root || 0);
|
||||
} else if (row.mx_type_id == '应付') {
|
||||
rootNet = -Number(row.mx_amount_root || 0);
|
||||
}
|
||||
var amt = Number(row.mx_amount || 0);
|
||||
if (!deleteGroupMap[mt]) {
|
||||
deleteGroupMap[mt] = { mx_moneytype_id: mt, mx_amount_root: 0, mx_amount: 0 };
|
||||
}
|
||||
deleteGroupMap[mt].mx_amount_root += rootNet;
|
||||
deleteGroupMap[mt].mx_amount += amt;
|
||||
applyFeeRowToGroup(deleteGroupMap, deleteRows[i], 1);
|
||||
}
|
||||
|
||||
var deleteTxtArr = [];
|
||||
var deleteTotal = 0;
|
||||
for (var mk in deleteGroupMap) {
|
||||
var g = deleteGroupMap[mk];
|
||||
g.mx_amount_root = Math.round(g.mx_amount_root * 1000) / 1000;
|
||||
g.mx_amount = Math.round(g.mx_amount * 100) / 100;
|
||||
deleteTxtArr.push(g.mx_moneytype_id + " " + g.mx_amount_root);
|
||||
deleteTotal += g.mx_amount;
|
||||
}
|
||||
var deleteArr = groupMapToArray(deleteGroupMap);
|
||||
var deleteTotal = calcTotal(deleteArr);
|
||||
var deleteTxt = buildDisplayText(deleteArr);
|
||||
|
||||
deleteTotal = Math.round(deleteTotal * 100) / 100;
|
||||
var deleteTxt = deleteTxtArr.join(";");
|
||||
if (deleteTotal !== 0) {
|
||||
deleteTxt += " 折合金额:" + deleteTotal;
|
||||
}
|
||||
@@ -668,59 +671,115 @@
|
||||
|
||||
// 计算选中行的金额(仅业务有效行)
|
||||
function calcw_selfee() {
|
||||
console.log(gridManager)
|
||||
|
||||
if (gridManager.isAllChecked()) {
|
||||
calcSelfeeAllChecked();
|
||||
} else {
|
||||
calcSelfeeNormal();
|
||||
}
|
||||
}
|
||||
|
||||
function calcSelfeeNormal() {
|
||||
var rows = gridManager.getValidSelectedRows();
|
||||
|
||||
var irow = rows.length;
|
||||
|
||||
var moneyArray = [];
|
||||
var canadd;
|
||||
|
||||
for (var i = 0; i < irow; i++) {
|
||||
//console.log(rows[i]);
|
||||
var moneytype = rows[i].mx_moneytype_id;
|
||||
var skamount = 0;
|
||||
var fkamount = 0;
|
||||
for (var i = 0; i < rows.length; i++) {
|
||||
var row = rows[i];
|
||||
var moneytype = row.mx_moneytype_id;
|
||||
if (!moneytype) continue;
|
||||
|
||||
var alreadyamount = 0;
|
||||
var notamount = 0;
|
||||
if (rows[i].mx_type_id == '应收') {
|
||||
skamount = rows[i].mx_amount_root;
|
||||
alreadyamount = Number(rows[i].mx_amount_root);
|
||||
notamount = Number(rows[i].notamount);
|
||||
if (row.mx_type_id == '应收') {
|
||||
alreadyamount = Number(row.mx_amount || 0);
|
||||
notamount = Number(row.notamount || 0);
|
||||
} else if (row.mx_type_id == '应付') {
|
||||
alreadyamount = -Number(row.mx_amount || 0);
|
||||
notamount = -Number(row.notamount || 0);
|
||||
}
|
||||
if (rows[i].mx_type_id == '应付') {
|
||||
fkamount = rows[i].mx_amount_root;
|
||||
alreadyamount = 0 - Number(rows[i].mx_amount_root);
|
||||
notamount = 0 - Number(rows[i].notamount);
|
||||
}
|
||||
var amount = Number(skamount) - Number(fkamount);
|
||||
|
||||
//if(rows[i].mx_type_id=='应收'){
|
||||
// alreadyamount=Number(alreadyamount);
|
||||
//}
|
||||
canadd = true;
|
||||
for (var k in moneyArray) {
|
||||
if (moneyArray[k].moneyid == moneytype) {
|
||||
moneyArray[k].totalamount = moneyArray[k].totalamount + amount;
|
||||
moneyArray[k].totalalreadyamount = moneyArray[k].totalalreadyamount + alreadyamount;
|
||||
moneyArray[k].totalnotamount = moneyArray[k].totalnotamount + notamount;
|
||||
canadd = false;
|
||||
}
|
||||
}
|
||||
if (canadd) {
|
||||
moneyArray.push({ moneyid: moneytype, totalamount: amount, totalalreadyamount: alreadyamount, totalnotamount: notamount });
|
||||
var existing = moneyArray.find(function (m) {
|
||||
return m.moneyid == moneytype;
|
||||
});
|
||||
if (existing) {
|
||||
existing.totalalreadyamount += alreadyamount;
|
||||
existing.totalnotamount += notamount;
|
||||
} else {
|
||||
moneyArray.push({ moneyid: moneytype, totalalreadyamount: alreadyamount, totalnotamount: notamount });
|
||||
}
|
||||
}
|
||||
var totaltxt = "";
|
||||
|
||||
updateSelfeeDisplay(moneyArray);
|
||||
}
|
||||
|
||||
function calcSelfeeAllChecked() {
|
||||
var excludedRows = gridManager.getExcludedRows();
|
||||
|
||||
console.log(excludedRows)
|
||||
|
||||
var moneyArray = [];
|
||||
var tempAmountMap = {};
|
||||
var tempNotAmountMap = {};
|
||||
|
||||
for (var i = 0; i < subSummary.moneyTypes.length; i++) {
|
||||
var mt = subSummary.moneyTypes[i];
|
||||
tempAmountMap[mt.mx_moneytype_id] = mt.mx_amount;
|
||||
}
|
||||
for (var i = 0; i < subSummary.notMoneyTypes.length; i++) {
|
||||
var mt = subSummary.notMoneyTypes[i];
|
||||
tempNotAmountMap[mt.mx_moneytype_id] = mt.mx_amount;
|
||||
}
|
||||
|
||||
for (var i = 0; i < excludedRows.length; i++) {
|
||||
var row = excludedRows[i];
|
||||
var mt = row.mx_moneytype_id;
|
||||
if (!mt) continue;
|
||||
|
||||
var amt = Number(row.mx_amount || 0);
|
||||
if (row.mx_type_id == '应付') amt = -amt;
|
||||
if (tempAmountMap[mt] !== undefined) {
|
||||
tempAmountMap[mt] -= amt;
|
||||
}
|
||||
|
||||
var notAmt = Number(row.notamount || 0);
|
||||
if (row.mx_type_id == '应付') notAmt = -notAmt;
|
||||
if (tempNotAmountMap[mt] !== undefined) {
|
||||
tempNotAmountMap[mt] -= notAmt;
|
||||
}
|
||||
}
|
||||
|
||||
var allCurrencies = {};
|
||||
for (var mt in tempAmountMap) allCurrencies[mt] = true;
|
||||
for (var mt in tempNotAmountMap) allCurrencies[mt] = true;
|
||||
|
||||
for (var mt in allCurrencies) {
|
||||
moneyArray.push({
|
||||
moneyid: mt,
|
||||
totalalreadyamount: tempAmountMap[mt] || 0,
|
||||
totalnotamount: tempNotAmountMap[mt] || 0
|
||||
});
|
||||
}
|
||||
|
||||
moneyArray.sort(function (a, b) {
|
||||
return String(a.moneyid).localeCompare(String(b.moneyid));
|
||||
});
|
||||
|
||||
updateSelfeeDisplay(moneyArray);
|
||||
}
|
||||
|
||||
function updateSelfeeDisplay(moneyArray) {
|
||||
var total_select = "";
|
||||
var total_selectnotxz = "";
|
||||
for (var j = 0; j < moneyArray.length; j++) {
|
||||
//totaltxt=totaltxt+moneyArray[j].moneyid+':'+Math.round((moneyArray[j].totalamount)*100)/100+';';
|
||||
total_select = total_select + moneyArray[j].moneyid + ':' + Math.round((moneyArray[j].totalalreadyamount) * 100) / 100 + ';';
|
||||
total_selectnotxz = total_selectnotxz + moneyArray[j].moneyid + ':' + Math.round((moneyArray[j].totalnotamount) * 100) / 100 + ';';
|
||||
var item = moneyArray[j];
|
||||
if (item.totalalreadyamount !== 0) {
|
||||
total_select += item.moneyid + ':' + Math.round(item.totalalreadyamount * 100) / 100 + ';';
|
||||
}
|
||||
if (item.totalnotamount !== 0) {
|
||||
total_selectnotxz += item.moneyid + ':' + Math.round(item.totalnotamount * 100) / 100 + ';';
|
||||
}
|
||||
}
|
||||
//alert(total_select);
|
||||
//alert(total_selectnotxz);
|
||||
//$("#div_total").text(totaltxt);
|
||||
$("#total_select").text(total_select);
|
||||
$("#total_selectnotxz").text(total_selectnotxz);
|
||||
}
|
||||
@@ -1392,7 +1451,6 @@
|
||||
calcw_fee();
|
||||
}
|
||||
|
||||
// 子表草稿:弹窗选费用 → 写入 insertRows(去重)并刷新当前分页视图
|
||||
function handleSelectedFee(rows) {
|
||||
if (rows.length == undefined) {
|
||||
rows = [rows];
|
||||
@@ -1403,20 +1461,7 @@
|
||||
$('#v_dwname').val(rows[0].v_mx_dw_name);
|
||||
}
|
||||
|
||||
for (var i = 0; i < rows.length; i++) {
|
||||
var r = rows[i];
|
||||
var rk = gridManager.getDraftManager().getRowKey(r);
|
||||
var dup = gridManager.getInsertRows().some(function (x) {
|
||||
return gridManager.getDraftManager().getRowKey(x) === rk;
|
||||
});
|
||||
if (!dup) {
|
||||
if (!r._rowState) {
|
||||
r._rowState = 'insert';
|
||||
}
|
||||
gridManager.addInsertRows(r);
|
||||
}
|
||||
}
|
||||
|
||||
gridManager.addInsertRows(rows);
|
||||
gridManager.refreshCurrentPage();
|
||||
calcw_fee();
|
||||
}
|
||||
@@ -1428,105 +1473,28 @@
|
||||
$.messager.confirm("操作提示", '您确定要删除勾选的费用吗?', function (r) {
|
||||
if (r) {
|
||||
endEditing_con();
|
||||
var selectedRows = gridManager.getValidSelectedRows();
|
||||
|
||||
if (selectedRows.length === 0) {
|
||||
$.messager.alert('提示', '请选择要删除的行(已标记删除的行请使用「撤销删除」)', 'warning');
|
||||
return;
|
||||
}
|
||||
|
||||
for (var i = selectedRows.length - 1; i >= 0; i--) {
|
||||
var row = selectedRows[i];
|
||||
var result = gridManager.deleteSelectedRows(function (row) {
|
||||
var invoiceno = row.mx_invoiceid;
|
||||
var kp = invoiceno && invoiceno !== '' && invoiceno !== null ? '1' : '0';
|
||||
|
||||
if ((row.alreadyamount != 0) || (kp == '1')) {
|
||||
$.messager.alert('提示', '已经销账或开票的费用不能删除!', 'warning');
|
||||
return;
|
||||
return '已经销账或开票的费用不能删除!';
|
||||
}
|
||||
}
|
||||
|
||||
var hasInsertDelete = false;
|
||||
|
||||
var dm = gridManager.getDraftManager();
|
||||
for (var i = selectedRows.length - 1; i >= 0; i--) {
|
||||
var row = selectedRows[i];
|
||||
|
||||
if (dm.isInsertRow(row) || dm.isInInsertRows(row)) {
|
||||
gridManager.removeInsertRow(row);
|
||||
hasInsertDelete = true;
|
||||
} else {
|
||||
var delKey = dm.getRowKey(row);
|
||||
var wasUpdate = gridManager.getUpdateRows().some(function (rr) {
|
||||
return dm.getRowKey(rr) === delKey;
|
||||
});
|
||||
row._undoRowState = wasUpdate ? 'update' : '';
|
||||
row._rowState = 'delete';
|
||||
gridManager.addDeleteRow(row);
|
||||
}
|
||||
}
|
||||
|
||||
calcw_fee();
|
||||
|
||||
if (hasInsertDelete) {
|
||||
gridManager.refreshAfterDelete();
|
||||
} else {
|
||||
gridManager.refreshDisplay();
|
||||
return true;
|
||||
});
|
||||
if (result) {
|
||||
calcw_fee();
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 子表草稿:撤销删除(逻辑依赖 selectedRows / getDeletedSelectedRows)
|
||||
// 子表草稿:撤销删除
|
||||
function undoRemoveFee() {
|
||||
endEditing_con();
|
||||
var pageRows = $('#feegrid').datagrid('getRows');
|
||||
var targets = [];
|
||||
var selKeys = {};
|
||||
var dm = gridManager.getDraftManager();
|
||||
var selectedRows = gridManager.getSelectedRows();
|
||||
for (var sk = 0; sk < selectedRows.length; sk++) {
|
||||
selKeys[dm.getRowKey(selectedRows[sk])] = true;
|
||||
var result = gridManager.undoDeleteSelectedRows();
|
||||
if (result) {
|
||||
calcw_fee();
|
||||
}
|
||||
var hasSelectionOnPage = false;
|
||||
for (var hp = 0; hp < pageRows.length; hp++) {
|
||||
if (selKeys[dm.getRowKey(pageRows[hp])]) {
|
||||
hasSelectionOnPage = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!hasSelectionOnPage) {
|
||||
for (var u = 0; u < pageRows.length; u++) {
|
||||
if (pageRows[u]._rowState === 'delete') {
|
||||
targets.push(pageRows[u]);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
var delSel = dm.getDeletedSelectedRows();
|
||||
var delKeys = {};
|
||||
for (var dv = 0; dv < delSel.length; dv++) {
|
||||
delKeys[dm.getRowKey(delSel[dv])] = true;
|
||||
}
|
||||
for (var v = 0; v < pageRows.length; v++) {
|
||||
var pr = pageRows[v];
|
||||
if (pr._rowState === 'delete' && delKeys[dm.getRowKey(pr)]) {
|
||||
targets.push(pr);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (targets.length === 0) {
|
||||
$.messager.alert('提示', '当前页没有可撤销的删除行', 'warning');
|
||||
return;
|
||||
}
|
||||
for (var w = 0; w < targets.length; w++) {
|
||||
var row = targets[w];
|
||||
if (row._rowState !== 'delete') {
|
||||
continue;
|
||||
}
|
||||
gridManager.removeDeleteRow(row);
|
||||
}
|
||||
calcw_fee();
|
||||
gridManager.refreshAfterUndo();
|
||||
}
|
||||
|
||||
// 批量删除
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
+1249
-879
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user