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