/* * @description: 创建报销单业务处理 * @Author: CP * @Date: 2020-11-13 15:20:41 * @FilePath: \cld\global\vue\fee\receipt_create_fn.js */ // 验证费用表单 function checkReceipt(event, obj) { let flag = false; //1.选择办事处费用 if (obj.receiptTypeMenu[0].show) { if (obj.receiptTypeMenu[0].officeExplain[0].officeExplain == "") { obj.alertDia("请填写 办事处相关费用 报销说明"); flag = true; } } //2.选择办事处费用 if (obj.receiptTypeMenu[2].show) { if (obj.receiptTypeMenu[2].trainExplain[0].trainExplain == "") { obj.alertDia("请填写 内部培训费用 报销说明"); flag = true; } } //3.行程时间判定 if (obj.receiptTypeMenu[1].show) { // if (obj.receiptTypeMenu[1]['traveList'].length > 1) { let sortList = new Array(); // obj.receiptTypeMenu[1]['traveList'].forEach(element => { // let dateArray = element.tripTime.split(" - "); // if (dateArray.length != 2) { // obj.alertDia("差旅行程时间填写有误"); // event.preventDefault(); // return // } // let item = new Array(new Date(dateArray[0]).getTime() / 1000 - 28800, new Date(dateArray[1]).getTime() / 1000 - 28800); // sortList.push(item); // }); for (let i = 0; i < obj.receiptTypeMenu[1]['traveList'].length; i++) { let dateArray = obj.receiptTypeMenu[1]['traveList'][i].tripTime.split(" - "); if(ValidTraveDate(dateArray)){ obj.alertDia("差旅行程时间填写有误"); event.preventDefault(); return } let item = new Array(new Date(dateArray[0]).getTime() / 1000 - 28800, new Date(dateArray[1]).getTime() / 1000 - 28800); sortList.push(item); } let alertDia = obj.alertDia; $.ajax({ type: "GET", url: "/json/trave/date/all", dataType: "json", processData: false, contentType: false, }).success(function (data) { sortList.forEach(element => { data.push(element); }); let TraveStatus = isTraveDate(sortList); if (TraveStatus == 2) { alertDia("差旅日期格式不正确"); flag = true; } }).fail(function (msg) { alertDia("历史差旅时间获取失败"); flag = true; }); } // 选择费用类型 if (obj.receiptTypeMenu[0].show === false && obj.receiptTypeMenu[1].show === false && obj.receiptTypeMenu[2].show === false) { obj.alertDia("请选择 费用类型"); flag = true; } // 设置参数 // 1.办事处相关费用 let officeData_input_dom = obj.$refs.officeData_input; officeData_input_dom.value = ""; if (obj.receiptTypeMenu[0].show) { officeData_input_dom.value = JSON.stringify(obj.receiptTypeMenu[0]); } // 2.差旅相关费用 let traveData_input_dom = obj.$refs.traveData_input; traveData_input_dom.value = ""; if (obj.receiptTypeMenu[1].show) { traveData_input_dom.value = JSON.stringify(obj.receiptTypeMenu[1]); } // 3.差旅相关费用 let trainData_input_dom = obj.$refs.trainData_input; trainData_input_dom.value = ""; if (obj.receiptTypeMenu[2].show) { trainData_input_dom.value = JSON.stringify(obj.receiptTypeMenu[2]); } // 4.附件内容相关 let enclosurFiles_input_dom = obj.$refs.enclosurFiles_input; enclosurFiles_input_dom.value = ""; if (obj.enclosurFiles.length != 0) { enclosurFiles_input_dom.value = JSON.stringify(obj.enclosurFiles); } // 校验设置后的参数 if (obj.verifyId === "") { obj.alertDia("请选择 审批组"); flag = true; } if (flag) { event.preventDefault(); } // // 1-2日常费用 // let officeDailyData_input_dom = obj.$refs.officeDailyData_input; // // 1-2填写过金额 // let daily = []; // obj.receiptTypeMenu[0].daily.forEach(element => { // if (element.price != 0) { // daily.push(element); // } // }); // officeDailyData_input_dom.value = JSON.stringify(daily); // let officeOtherData_input_dom = obj.$refs.officeOtherData_input; // let other = []; // obj.receiptTypeMenu[0].other.forEach(element => { // if (element.price != 0) { // other.push(element); // } // }); // officeOtherData_input_dom.value = JSON.stringify(other); // let officeExplain_input_dom = obj.$refs.officeExplain_input; // officeExplain_input_dom.value = obj.receiptTypeMenu[0].officeExplain[0].officeExplain; } // 办事处相关费用合计 function officePrice(obj) { sum = 0; obj.daily.forEach(element => { sum += Number(element.price); }); obj.other.forEach(element => { sum += Number(element.price); }); return sum.toFixed(2); } // 差旅相关费用 function travePrice(obj) { let sum = 0; obj.forEach(element => { element.tripList.forEach(elementlv2 => { elementlv2.tripItem.forEach(elementlv3 => { sum += Number(elementlv3.price); }); }); }); return sum.toFixed(2); } // 内部培训费用 function trainPrice(obj) { let sum = 0; obj.forEach(element => { sum += Number(element.price); }); return sum.toFixed(2); } // function NewTraveItem() { let newTripItem = new Array(); accountItem.trave.forEach(element => { newTripItem.push({ "name": element.name, "price": 0.00, "remark": "", }); }); return newTripItem; } function toDecimal2(x) { var f = parseFloat(x); if (isNaN(f)) { return false; } var f = Math.round(x * 100) / 100; var s = f.toString(); var rs = s.indexOf('.'); if (rs < 0) { rs = s.length; s += '.'; } while (s.length <= rs + 2) { s += '0'; } return s; } function delEnclosurByKey(id) { var url = "/ajaxRemEnclousur"; $.ajax({ url: url, type: "post", cache: false, dataType: "json", data: { key: id }, global: true, success: function (data) { if (data.status == 1) { $('#' + id).remove(); } }, error: function (err) { } }); } function isTraveDate(sortList) { let flag = 0; let sortlength = sortList.length; for (var index = 0; index < sortlength; index++) { let start = sortList[index][0]; let end = sortList[index][1]; itemIndex = index + 1; if (sortList.length === itemIndex) { break; } let isRangeStartAndEnd = sortList.some((item, i) => { if (i != index) { return (item[0] <= start && item[1] >= start) || (item[0] <= end && item[1] >= end) } }) if (isRangeStartAndEnd) { // 有重复区间 //flag = true; flag = 2; break; } } return flag; } function ValidTraveDate(dateArray) { if (dateArray.length != 2) { return true; } let dateFormat = /^(\d{4})-(\d{2})-(\d{2})$/; if (!dateFormat.test(dateArray[0])) { return true; } if (!dateFormat.test(dateArray[1])) { return true; } return false }