You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
364 lines
12 KiB
364 lines
12 KiB
/***************************************************************
|
|
* <p>ProName:EdorSMInput.js</p>
|
|
* <p>Title:定期结算维护</p>
|
|
* <p>Description:定期结算维护</p>
|
|
* <p>Copyright:Copyright (c) 2012</p>
|
|
* <p>Company:Sinosoft</p>
|
|
* @author : 蔡云聪
|
|
* @version : 8.0
|
|
* @date : 2014-06-19
|
|
****************************************************************/
|
|
var showInfo;
|
|
var turnPage = new turnPageClass();
|
|
var turnPage1 = new turnPageClass();
|
|
var turnPage2 = new turnPageClass();
|
|
var tSQLInfo = new SqlClass();
|
|
|
|
function balanceSubmit(){
|
|
|
|
if(fm.BalanceOnState.value==''||fm.BalanceOnState.value==null){
|
|
i18nAlert("请录入结算方式!", "LIS-03318");
|
|
return false;
|
|
}
|
|
if(fm.BalanceOnState.value=='0'){
|
|
if(!verifyForm("fm")){
|
|
return false;
|
|
}
|
|
}
|
|
if (fm.BalanceMoney.value!="" || fm.BalanceMoney.value != null) {
|
|
var tBalanceMoney = fm.BalanceMoney.value;
|
|
if (!checkDecimalFormat(tBalanceMoney, 10, 2)) {
|
|
i18nAlert("结算金额整数位不应超过10位,小数位不应超过2位!", "");
|
|
return false;
|
|
}
|
|
}
|
|
if(fm.BalanceOnState.value=='0') {
|
|
|
|
var tCvaliDate = document.all('CValiDate').value;
|
|
var ContEndDate = document.all('ContEndDate').value;
|
|
var tStartDate = document.all('ValDate').value;
|
|
var tEndDate = document.all('EndDate').value;
|
|
|
|
if (tStartDate < tCvaliDate || tStartDate > ContEndDate) {
|
|
i18nAlert("输入的【定期结算起期】需在保单的有效期内,请核实!", "");
|
|
return false;
|
|
}
|
|
if (tEndDate > ContEndDate || tEndDate < tCvaliDate) {
|
|
i18nAlert("输入的【定期结算止期】需在保单的有效期内,请核实!", "");
|
|
return false;
|
|
}
|
|
if (tStartDate >= tEndDate ) {
|
|
i18nAlert("输入的【定期结算起期】不得晚于【定期结算止期】,请核实!", "");
|
|
return false;
|
|
}
|
|
|
|
var checkEndDate = addDateByCode(tStartDate,document.all("BalancePeriod").value);
|
|
|
|
if (checkEndDate > tEndDate) {
|
|
i18nAlert("输入的【定期结算起期】+【定期结算频率】不得晚于【定期结算止期】,请核实!", "");
|
|
return false;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
fm.action="../API/grp_pa/g_pos/EdorSMSave/ADD?Operate=INSERT&EdorType="+tEdorType+"&EdorNo="+tEdorNo+"&GrpContNo="+tGrpContNo+"&MissionID="+tMissionID+"&SubMissionID="+tSubMissionID+"&ActivityID="+tActivityID;
|
|
submitForm(fm,"INSERT");
|
|
}
|
|
|
|
function submitFunc(){
|
|
var showStr=i18nMessage("正在保存数据,请您稍候并且不要修改屏幕上的值或链接其他页面", "LIS-04525");
|
|
var urlStr="../common/jsp/MessagePage.jsp?picture=C&content=" + encodeURIComponent(showStr);
|
|
//showInfo=window.showModelessDialog(urlStr,window,"status:no;help:0;close:0;dialogWidth:550px;dialogHeight:250px");
|
|
var name='提示'; //网页名称,可为空;
|
|
var iWidth=550; //弹出窗口的宽度;
|
|
var iHeight=250; //弹出窗口的高度;
|
|
var iTop = (window.screen.availHeight - iHeight) / 2; //获得窗口的垂直位置
|
|
var iLeft = (window.screen.availWidth - iWidth) / 2; //获得窗口的水平位置
|
|
showInfo = window.open (urlStr,name, "status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=0,titlebar=no,height="+ iHeight+",width="+iWidth+",innerHeight="+iHeight+",innerWidth=" +iWidth+",left="+iLeft+",top="+iTop,false);
|
|
|
|
showInfo.focus();
|
|
}
|
|
|
|
/**
|
|
* 提交数据后返回操作
|
|
*/
|
|
function afterSubmit(FlagStr, content) {
|
|
|
|
if (typeof(showInfo)=="object" && typeof(showInfo)!="unknown") {
|
|
showInfo.close();
|
|
}
|
|
|
|
if (FlagStr=="Fail") {
|
|
var urlStr = "../common/jsp/MessagePage.jsp?picture=C&content="+ encodeURIComponent(content);
|
|
//showModalDialog(urlStr,window,"status:no;help:0;close:0;dialogWidth:550px;dialogHeight:250px");
|
|
var name='提示'; //网页名称,可为空;
|
|
var iWidth=550; //弹出窗口的宽度;
|
|
var iHeight=250; //弹出窗口的高度;
|
|
var iTop = (window.screen.availHeight - iHeight) / 2; //获得窗口的垂直位置
|
|
var iLeft = (window.screen.availWidth - iWidth) / 2; //获得窗口的水平位置
|
|
showInfo = window.open (urlStr,name, "status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=0,titlebar=no,height="+ iHeight+",width="+iWidth+",innerHeight="+iHeight+",innerWidth=" +iWidth+",left="+iLeft+",top="+iTop,false);
|
|
|
|
showInfo.focus();
|
|
} else {
|
|
var urlStr = "../common/jsp/MessagePage.jsp?picture=S&content="+ encodeURIComponent(content);
|
|
//showModalDialog(urlStr,window,"status:no;help:0;close:0;dialogWidth:550px;dialogHeight:250px");
|
|
var name='提示'; //网页名称,可为空;
|
|
var iWidth=550; //弹出窗口的宽度;
|
|
var iHeight=250; //弹出窗口的高度;
|
|
var iTop = (window.screen.availHeight - iHeight) / 2; //获得窗口的垂直位置
|
|
var iLeft = (window.screen.availWidth - iWidth) / 2; //获得窗口的水平位置
|
|
showInfo = window.open (urlStr,name, "status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=0,titlebar=no,height="+ iHeight+",width="+iWidth+",innerHeight="+iHeight+",innerWidth=" +iWidth+",left="+iLeft+",top="+iTop,false);
|
|
|
|
showInfo.focus();
|
|
}
|
|
}
|
|
function submitForm(obj, tOperate) {
|
|
|
|
submitFunc();
|
|
mOperate = tOperate;
|
|
//obj.submit(); //提交
|
|
ajaxSubmit2(obj);
|
|
}
|
|
function afterCodeSelect(o, p){
|
|
if(o=='balanceonstate'){
|
|
if(p.value=='0'){
|
|
td1.style.display='';
|
|
td2.style.display='';
|
|
// td3.style.display='';
|
|
// td4.style.display='';
|
|
td9.style.display='';
|
|
td10.style.display='';
|
|
td11.style.display='';
|
|
td12.style.display='';
|
|
td13.style.display='';
|
|
td14.style.display='';
|
|
}else if(p.value=='1'){
|
|
td1.style.display='none';
|
|
td2.style.display='none';
|
|
td9.style.display='none';
|
|
td10.style.display='none';
|
|
td11.style.display='none';
|
|
td12.style.display='none';
|
|
td13.style.display='none';
|
|
td14.style.display='none';
|
|
// td3.style.display='none';
|
|
// td4.style.display='none';
|
|
td5.style.display='';
|
|
td6.style.display='';
|
|
td7.style.display='';
|
|
td8.style.display='';
|
|
fm.BalancePeriod.value='';
|
|
fm.BalancePeriodName.value='';
|
|
// fm.GracePeriod.value='';
|
|
fm.BalanceMoney.value='';
|
|
fm.ValDate.value='';
|
|
fm.EndDate.value='';
|
|
}
|
|
}
|
|
}
|
|
|
|
// 查询定期结算数据
|
|
function queryBalanceInfo() {
|
|
|
|
//查询保单的生效日期和终止日期
|
|
tSQLInfo = new SqlClass();
|
|
tSQLInfo.setResourceName("g_pos.EdorSMSql");
|
|
tSQLInfo.setModule("grp_pa");
|
|
tSQLInfo.setSqlId("EdorSMSql3");
|
|
tSQLInfo.addSubPara(tGrpContNo);
|
|
var upArrResul = easyExecSql(tSQLInfo.getString());
|
|
if (upArrResul != null) {
|
|
document.all('CValiDate').value = upArrResul[0][0];
|
|
document.all('ContEndDate').value = upArrResul[0][1];
|
|
// document.all('EndDate').value = upArrResul[0][1];
|
|
}
|
|
|
|
|
|
tSQLInfo = new SqlClass();
|
|
tSQLInfo.setModule("grp_pa");
|
|
tSQLInfo.setResourceName("g_pos.EdorSMSql");
|
|
tSQLInfo.setSqlId("EdorSMSql1");
|
|
tSQLInfo.addSubPara(tEdorNo);
|
|
tSQLInfo.addSubPara(tEdorType);
|
|
tSQLInfo.addSubPara(tGrpContNo);
|
|
|
|
var arrRuselt = easyExecSql(tSQLInfo.getString(), 1, 0, 1);
|
|
|
|
if (arrRuselt == null) {
|
|
tSQLInfo = new SqlClass();
|
|
tSQLInfo.setModule("grp_pa");
|
|
tSQLInfo.setResourceName("g_pos.EdorSMSql");
|
|
tSQLInfo.setSqlId("EdorSMSql2");
|
|
tSQLInfo.addSubPara(tGrpContNo);
|
|
|
|
var arrRuselt = easyExecSql(tSQLInfo.getString(), 1, 0, 1);
|
|
|
|
if (arrRuselt != null) {
|
|
fm.BalanceOnState.value = arrRuselt[0][4];
|
|
fm.BalanceOnStateName.value = arrRuselt[0][5];
|
|
fm.BalancePeriod.value = arrRuselt[0][6];
|
|
fm.BalancePeriodName.value = arrRuselt[0][7];
|
|
// fm.GracePeriod.value=arrRuselt[0][8];
|
|
fm.ValDate.value = arrRuselt[0][9];
|
|
fm.EndDate.value = arrRuselt[0][10];
|
|
fm.BalanceMoney.value = arrRuselt[0][11];
|
|
}else{
|
|
fm.EndDate.value = document.all('ContEndDate').value
|
|
}
|
|
} else {
|
|
|
|
fm.BalanceOnState.value = arrRuselt[0][0];
|
|
fm.BalanceOnStateName.value = arrRuselt[0][1];
|
|
fm.BalancePeriod.value = arrRuselt[0][2];
|
|
fm.BalancePeriodName.value = arrRuselt[0][3];
|
|
// fm.GracePeriod.value=arrRuselt[0][4];
|
|
fm.ValDate.value = arrRuselt[0][5];
|
|
fm.EndDate.value = arrRuselt[0][6];
|
|
fm.BalanceMoney.value = arrRuselt[0][7];
|
|
}
|
|
}
|
|
|
|
function showBalanceOnState(){
|
|
if(fm.BalanceOnState.value=="0"){
|
|
td1.style.display='';
|
|
td2.style.display='';
|
|
// td3.style.display='';
|
|
// td4.style.display='';
|
|
td9.style.display='';
|
|
td10.style.display='';
|
|
td11.style.display='';
|
|
td12.style.display='';
|
|
td13.style.display='';
|
|
td14.style.display='';
|
|
}
|
|
if(fm.BalanceOnState.value=="1"){
|
|
td1.style.display='none';
|
|
td2.style.display='none';
|
|
td9.style.display='none';
|
|
td10.style.display='none';
|
|
td11.style.display='none';
|
|
td12.style.display='none';
|
|
td13.style.display='none';
|
|
td14.style.display='none';
|
|
td5.style.display='';
|
|
td6.style.display='';
|
|
td7.style.display='';
|
|
td8.style.display='';
|
|
fm.BalancePeriod.value='';
|
|
fm.BalancePeriodName.value='';
|
|
// fm.GracePeriod.value='';
|
|
fm.BalanceMoney.value='';
|
|
fm.ValDate.value='';
|
|
fm.EndDate.value='';
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 校验数据整数位于小数位长度
|
|
*/
|
|
function checkDecimalFormat(cValue, cLen1, cLen2) {
|
|
|
|
if (cValue=='' || cValue==null) {//为空,
|
|
return true;
|
|
}
|
|
|
|
var tLen = (""+cValue+"").length;
|
|
var tLen1 = (""+cValue+"").indexOf(".");
|
|
var tLen2 = 0;
|
|
if (tLen1==-1) {
|
|
tLen1 = tLen;
|
|
} else {
|
|
tLen2 = tLen - tLen1 - 1;
|
|
}
|
|
|
|
if (Number(tLen1)>Number(cLen1)) {
|
|
return false;
|
|
}
|
|
|
|
if (Number(tLen2)>Number(cLen2)) {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
function returnbak() {
|
|
top.opener.initForm();
|
|
top.close();
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* 校验并执行日期加法操作
|
|
* @param {string} dateStr - 日期字符串,格式:yyyy-MM-dd
|
|
* @param {string} unitCode - 单位码值:'01'(月), '03'(季), '06'(半年), '12'(年)
|
|
* @returns {Object} 包含 success、result、message 的结果对象
|
|
*/
|
|
function addDateByCode(dateStr, unitCode) {
|
|
// 1. 定义码值映射和校验规则
|
|
const validCodes = {
|
|
'01': { type: 'month', amount: 1, label: '月' },
|
|
'03': { type: 'month', amount: 3, label: '季' },
|
|
'06': { type: 'month', amount: 6, label: '半年' },
|
|
'12': { type: 'year', amount: 1, label: '年' }
|
|
};
|
|
|
|
// 2. 校验码值
|
|
if (!validCodes.hasOwnProperty(unitCode)) {
|
|
i18nAlert("无效的单位码值:"+unitCode+"。支持的码值为:'01'(月)、'03'(季)、'06'(半年)、'12'(年)", "");
|
|
return false;
|
|
}
|
|
|
|
const { type, amount, label } = validCodes[unitCode];
|
|
|
|
// 3. 校验日期格式(基本正则校验)
|
|
const dateRegex = /^\d{4}-\d{2}-\d{2}$/;
|
|
if (!dateRegex.test(dateStr)) {
|
|
i18nAlert("日期格式不正确:"+unitCode+",请使用 yyyy-MM-dd 格式", "");
|
|
return false;
|
|
}
|
|
|
|
// 4. 解析日期并校验有效性(防止如 2025-02-30 这类非法日期)
|
|
const [yearStr, monthStr, dayStr] = dateStr.split('-');
|
|
const year = parseInt(yearStr, 10);
|
|
const month = parseInt(monthStr, 10); // 1-12
|
|
const day = parseInt(dayStr, 10);
|
|
|
|
// 构造 Date 对象(注意 JS 中月份从 0 开始)
|
|
const date = new Date(year, month - 1, day);
|
|
|
|
// 校验是否为有效日期
|
|
if (
|
|
date.getFullYear() !== year ||
|
|
date.getMonth() !== month - 1 ||
|
|
date.getDate() !== day
|
|
) {
|
|
|
|
i18nAlert("无效的日期:"+unitCode+",请使用 yyyy-MM-dd 格式", "");
|
|
return false;
|
|
}
|
|
|
|
// 5. 执行日期加法
|
|
let resultDate = new Date(date); // 复制原日期,避免修改
|
|
|
|
if (type === 'month') {
|
|
resultDate.setMonth(resultDate.getMonth() + amount);
|
|
} else if (type === 'year') {
|
|
resultDate.setFullYear(resultDate.getFullYear() + amount);
|
|
}
|
|
// 6. 统一减去一天
|
|
resultDate.setDate(resultDate.getDate() - 1);
|
|
|
|
// 7. 格式化结果日期
|
|
const formatDate = (d) => {
|
|
const y = d.getFullYear();
|
|
const m = String(d.getMonth() + 1).padStart(2, '0');
|
|
const dDay = String(d.getDate()).padStart(2, '0');
|
|
return `${y}-${m}-${dDay}`;
|
|
};
|
|
|
|
// 8. 返回成功结果
|
|
return formatDate(resultDate);
|
|
} |