| | |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="10"> |
| | | <el-col :span="7"> |
| | | <el-form-item label="大写金额" prop="bigstrmoney"> |
| | | <el-input |
| | | :disabled="true" |
| | |
| | | placeholder="报销大写金额" |
| | | /> |
| | | </el-form-item> </el-col |
| | | ><el-col :span="5"> |
| | | ><el-col :span="4"> |
| | | <el-form-item label="审核状态" prop="flowlevel"> |
| | | <el-select |
| | | v-model="form.recordstatus" |
| | |
| | | :label="dict.label" |
| | | :value="dict.value" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="5"> |
| | | <el-form-item label="预审状态" prop="infoid"> |
| | | <el-select |
| | | v-model="form.checkstatus" |
| | | filterable |
| | | placeholder="请选择预审状态" |
| | | > |
| | | <el-option |
| | | v-for="item in baselisttages" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | v-if="operationType == 'check'" |
| | | > |
| | | <el-col :span="7"> |
| | | <el-form-item label="预审状态" prop="infoid"> |
| | | <el-radio-group |
| | | v-model="form.checkstatus" |
| | | align="left" |
| | | :disabled="userprofile.nickName != '陈慕华'" |
| | | > |
| | | <el-radio label="1">待预审</el-radio> |
| | | <el-radio label="2">预审通过等待材料</el-radio> |
| | | <el-radio label="3">已收到报销材料</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-row |
| | | style="margin-top: 25px; margin-bottom: 5px" |
| | | v-if="operationType == 'check'" |
| | | > |
| | | <el-col :span="7"> |
| | | <el-form-item label="审核结果" align="left"> |
| | | <el-radio-group v-model="checkObj.flowlevelone" align="left"> |
| | | <el-radio label="1">通过</el-radio> |
| | |
| | | <el-button |
| | | type="primary" |
| | | @click="submitForm" |
| | | v-if="operationType == 'edit'" |
| | | v-if="operationType == 'edit' || beforehandType == '1'" |
| | | >保 存</el-button |
| | | > |
| | | <el-button |
| | | type="primary" |
| | | @click="checksubmit" |
| | | v-if="operationType == 'check'" |
| | | v-if="operationType == 'check' && beforehandType != '1'" |
| | | >提 交</el-button |
| | | > |
| | | <!--<el-button @click="cancel">退 出</el-button>--> |
| | |
| | | :visible.sync="pdfVisible" |
| | | width="60%" |
| | | > |
| | | <div> |
| | | <el-table :data="tableDatatop" style="width: 100%"> |
| | | <el-table-column prop="orderno" label="序号"> </el-table-column> |
| | | <el-table-column prop="personname" label="费用人员"> |
| | | </el-table-column> |
| | | <el-table-column prop="starttime" label="开始日期"> </el-table-column> |
| | | <el-table-column prop="endtime" label="结束日期"> </el-table-column> |
| | | <el-table-column prop="departure" label="出发地"> </el-table-column> |
| | | <el-table-column prop="destination" label="到达地"> </el-table-column> |
| | | <el-table-column prop="days" label="天数"> </el-table-column> |
| | | </el-table> |
| | | <el-table :data="tableDatatop" style="width: 100%"> |
| | | <el-table-column prop="traffictype" label="出发交通工具"> |
| | | </el-table-column> |
| | | <el-table-column prop="traffictype2" label="返回交通工具"> |
| | | </el-table-column> |
| | | <el-table-column prop="trafficexpense" label="交通费"> |
| | | </el-table-column> |
| | | <el-table-column prop="cityfee" label="市内交通费"> </el-table-column> |
| | | <el-table-column prop="hotelexpense" label="住宿费"> |
| | | </el-table-column> |
| | | <el-table-column prop="foodallowance" label="伙食补助"> |
| | | </el-table-column> |
| | | <el-table-column prop="otherexpense" label="公杂费补助"> |
| | | </el-table-column> |
| | | <el-table-column prop="otherfeeamount" label="其他费用"> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <div class="pdfimg"> |
| | | <div class="box-pdf"> |
| | | <div> |
| | |
| | | </div> |
| | | |
| | | <div v-if="this.previewpdf && pdfimgsrcList.length" class="pdfimgmin"> |
| | | <!-- <img :src="pdfimg" /> --> |
| | | <!-- <img :src="pdfimg" /> --> |
| | | <el-image |
| | | style="width: 95%; height: 90%" |
| | | :src="pdfimg" |
| | |
| | | import { |
| | | listReimbursementpayee, |
| | | addReimbursementpayee, |
| | | updateReimbursementpayee |
| | | updateReimbursementpayee, |
| | | delReimbursementpayee |
| | | } from "@/api/project/reimbursementpayee"; |
| | | import { |
| | | listReimbursement, |
| | |
| | | starttime: null, |
| | | endtime: null |
| | | }, |
| | | tableDatatop: [ |
| | | { |
| | | date: "2016-05-02", |
| | | name: "王小虎", |
| | | address: "上海市普陀区金沙江路 1518 弄" |
| | | } |
| | | ], |
| | | //查询付款 |
| | | queryParamsPayee: { |
| | | rbid: null |
| | | }, |
| | | // 当前用户信息 |
| | | userprofile: {}, |
| | | // 表单参数 |
| | | form: {}, |
| | | reimbursementList: [], |
| | |
| | | rbDetails: [], |
| | | rbPayees: [], |
| | | arrr2: [], |
| | | baselisttages: [ |
| | | { |
| | | id: 1, |
| | | name: "待预审" |
| | | }, |
| | | { |
| | | id: 2, |
| | | name: "预审通过等待材料" |
| | | }, |
| | | { |
| | | id: 3, |
| | | name: "已收到报销材料" |
| | | } |
| | | ], |
| | | baselist: [], |
| | | donatorList: [], |
| | | standardlevel: 0, |
| | |
| | | persontype: null, |
| | | //到达地 |
| | | arriveAddr: null, |
| | | |
| | | beforehandType: null, |
| | | headers: { |
| | | Authorization: "Bearer " + getToken() |
| | | }, |
| | |
| | | |
| | | //获取登录者信息 |
| | | getUserProfile().then(response => { |
| | | this.userprofile = response.data; |
| | | this.defaultperson = response.data; |
| | | this.standardlevel = response.data.standardlevel; |
| | | console.log("this.defaultperson", this.defaultperson); |
| | |
| | | }, |
| | | |
| | | mounted() { |
| | | window.addEventListener("beforeunload", e => this.beforeunloadHandler(e)); |
| | | |
| | | //选择业务类型:1、新增;2、修改;3、查看 |
| | | let curId = this.$route.query.id; |
| | | let pos = this.$route.query.pos; |
| | | this.defaultperson = this.$route.query.routerparam; |
| | | this.beforehandType = this.$route.query.beforehandType; |
| | | if (pos == 1) { |
| | | this.handleAdd(curId); |
| | | } else if (pos == 2) { |
| | |
| | | this.$refs["table"].doLayout(); |
| | | }); |
| | | }, |
| | | destroyed() { |
| | | window.removeEventListener("beforeunload", e => this.beforeunloadFn(e)); |
| | | }, //生命周期 - 销毁完成 |
| | | |
| | | methods: { |
| | | // 浏览器页面关闭或刷新提示 |
| | | beforeunloadHandler(e) { |
| | | if ( |
| | | (JSON.stringify(this.form) == sessionStorage.getItem("apiform") && |
| | | JSON.stringify(this.rbDetails) == |
| | | sessionStorage.getItem("apifunddetail")) || |
| | | !sessionStorage.getItem("apifunddetail") |
| | | ) { |
| | | } else { |
| | | this._beforeUnload_time = new Date().getTime(); |
| | | e = e || window.event; |
| | | if (e) { |
| | | e.returnValue = "关闭提示"; |
| | | } |
| | | return "关闭提示"; |
| | | } |
| | | }, |
| | | |
| | | handleUploadError() {}, |
| | | // 获取请求头 |
| | | Getnetworkheader() { |
| | |
| | | this.pdfimgsrcList.push( |
| | | this.Networkheader + "/prod-api" + response.fileName |
| | | ); |
| | | console.log(this.pdfimgsrcList); |
| | | this.pdftitle = "共" + this.pdfimgsrcList.length + "项"; |
| | | this.pdfimg = this.Networkheader + "/prod-api" + response.fileName; |
| | | |
| | | this.rbDetails[this.atpresent].annexfilesList = this.fileListto; |
| | | } else { |
| | | console.log(response.msg); |
| | |
| | | }, |
| | | // 点击票据 |
| | | Filepopup(index, rows, row) { |
| | | this.tableDatatop = []; |
| | | this.pdfimgsrcList = []; |
| | | this.tableDatatop.push(row); |
| | | // console.log(row); |
| | | this.atpresent = index; |
| | | this.pdfVisible = true; |
| | | console.log(this.rbDetails[index]); |
| | |
| | | this.fileListto = this.rbDetails[index].annexfilesList; |
| | | console.log(this.fileListto); |
| | | this.pdfimg = this.Networkheader + "/prod-api" + this.fileListto[0].url; |
| | | this.pdfimgsrcList = []; |
| | | this.fileListto.forEach(item => { |
| | | this.pdfimgsrcList.push(this.Networkheader + "/prod-api" + item.url); |
| | | }); |
| | | console.log(this.pdfimgsrcList); |
| | | console.log(this.pdfimg); |
| | | this.pdftitle = "共" + this.pdfimgsrcList.length + "项"; |
| | | } else { |
| | | this.fileListto = []; |
| | | this.pdfimg = ""; |
| | |
| | | // 点击已上传文件 |
| | | downFile(item) { |
| | | console.log(item, "点击文件拿item"); |
| | | this.pdftitle = item.name; |
| | | this.pdftitle = |
| | | "共" + this.pdfimgsrcList.length + "项,当前选中" + item.name; |
| | | let name = item.name.split("."); |
| | | if (name[1] == "pdf") { |
| | | this.$modal.msgWarning("当前文件暂不支持预览"); |
| | |
| | | //获取报销主信息 |
| | | getReimbursement(curId).then(response => { |
| | | this.form = response.data; |
| | | |
| | | this.fileListto = this.form.annexfiles |
| | | ? this.form.annexfiles |
| | | .split(",") |
| | | .map(item => ({ url: item, name: item })) |
| | | : []; |
| | | this.form.recordstatus = response.data.recordstatus + ""; |
| | | sessionStorage.removeItem("apiform"); |
| | | sessionStorage.setItem("apiform", JSON.stringify(this.form)); |
| | | |
| | | //获取报销明细信息 |
| | | getReimbursementdetaillist(curId).then(res => { |
| | |
| | | if (this.rbDetails.length == 0) { |
| | | this.addDetailRow(0); |
| | | } |
| | | |
| | | //实时合计金额 |
| | | //this.sumTotalFee(); |
| | | for (let i = 0; i < this.rbDetails.length; i++) { |
| | | this.sumRowFee(this.rbDetails[i]); |
| | | //解析出差地址 |
| | | /* |
| | | this.rbDetails[i].index = i; |
| | | this.rbDetails[i].searchAddress = { |
| | | sheng: this.rbDetails[i].travelprovincename, |
| | | shi: this.rbDetails[i].travelcityname, |
| | | qu: this.rbDetails[i].traveltownname, |
| | | }; */ |
| | | } |
| | | sessionStorage.removeItem("apifunddetail"); |
| | | sessionStorage.setItem( |
| | | "apifunddetail", |
| | | JSON.stringify(this.rbDetails) |
| | | ); |
| | | }); |
| | | |
| | | //获取报销打款信息 |
| | |
| | | this.addPayeeRow(0); |
| | | } |
| | | }); |
| | | sessionStorage.removeItem("apiform"); |
| | | sessionStorage.setItem("apiform", JSON.stringify(this.form)); |
| | | }); |
| | | }, |
| | | |
| | |
| | | |
| | | getReimbursement(id).then(response => { |
| | | this.form = response.data; |
| | | |
| | | //票据 |
| | | this.fileListto = this.form.annexfiles |
| | | ? this.form.annexfiles |
| | |
| | | this.addPayeeRow(0); |
| | | } |
| | | }); |
| | | sessionStorage.removeItem("apiform"); |
| | | sessionStorage.setItem("apiform", JSON.stringify(this.form)); |
| | | }); |
| | | }, |
| | | |
| | | //提交审核意见 |
| | | checksubmit() { |
| | | if (this.form.checkstatus != 3 && this.userprofile.nickName == "陈慕华") { |
| | | this.$modal.msgError("请确认收到材料后再提交审核!"); |
| | | return; |
| | | } |
| | | let checkfundobj = { |
| | | flowconclusion: this.checkObj.flowlevelone, |
| | | flowcontent: this.checkObj.flowconclusion, |
| | |
| | | submitForm: debounce(function(data) { |
| | | this.$refs["form"].validate(valid => { |
| | | if (valid) { |
| | | // idisabled=true; |
| | | /** |
| | | let indexErrTime = this.rbDetails.findIndex((item) => { |
| | | if (item.endtime && item.starttime) { |
| | | let d = this.$moment(item.endtime).diff(this.$moment(item.starttime), "d"); |
| | | if (d < 0) { |
| | | return true; |
| | | } else { |
| | | return false; |
| | | } |
| | | } else { |
| | | false; |
| | | } |
| | | }); |
| | | |
| | | if (indexErrTime > -1) { |
| | | this.$message({ |
| | | message: "第" + (indexErrTime + 1) + "行到达日期早于出发日期", |
| | | type: "warning", |
| | | }); |
| | | return; |
| | | } |
| | | |
| | | let emptyStartTimeindex = this.rbDetails.findIndex( |
| | | (item) => item.starttime == null || item.starttime == undefined || item.starttime == "" |
| | | ); |
| | | |
| | | if (emptyStartTimeindex > -1) { |
| | | this.$message({ |
| | | message: "第" + (emptyStartTimeindex + 1) + "行出发日期为空", |
| | | type: "warning", |
| | | }); |
| | | return; |
| | | } |
| | | |
| | | let emptyEndTimeindex = this.rbDetails.findIndex( |
| | | (item) => item.endtime == null || item.endtime == undefined || item.endtime == "" |
| | | ); |
| | | |
| | | if (emptyEndTimeindex > -1) { |
| | | this.$message({ |
| | | message: "第" + (emptyEndTimeindex + 1) + "行到达日期为空", |
| | | type: "warning", |
| | | }); |
| | | return; |
| | | } |
| | | |
| | | //费用归属 |
| | | let belongArr = this.dict.type.sys_travelexpensebelong; |
| | | let costtypeindex = belongArr.findIndex( |
| | | (item) => this.form.costtype == item.value |
| | | ); |
| | | if (costtypeindex > -1) { |
| | | this.form.costtypename = belongArr[costtypeindex].label; |
| | | } |
| | | */ |
| | | |
| | | //票据文件处理 |
| | | const addnumber = this.rbPayees.reduce( |
| | | (amount, item) => amount + Number(item.amount), |
| | | 0 |
| | | ); |
| | | let list = this.fileListto; |
| | | console.log(list); |
| | | |
| | | //校验请款金额合计是否等于报销单金额 |
| | | if ( |
| | | this.form.amountrequested != |
| | | this.rbPayees.reduce( |
| | | (amount, item) => amount + Number(item.amount), |
| | | 0.0 |
| | | ) |
| | | ) { |
| | | if (this.form.amountrequested != addnumber) { |
| | | this.$message({ |
| | | message: |
| | | "报销请款表中合计金额不等于报销单的报销金额,请更正后再保存!", |
| | |
| | | rbPayees[i].rbid = response.data; |
| | | addReimbursementpayee(rbPayees[i]); |
| | | } |
| | | sessionStorage.setItem( |
| | | "apifunddetail", |
| | | JSON.stringify(this.rbDetails) |
| | | ); |
| | | sessionStorage.setItem("apiform", JSON.stringify(this.form)); |
| | | |
| | | this.$modal.msgSuccess("新增报销单保存成功!"); |
| | | this.open = false; |
| | |
| | | this.Savereminder = false; |
| | | this.Reminderquantity = 0; |
| | | this.totalquantity = 0; |
| | | const addnumber = this.rbPayees.reduce( |
| | | (amount, item) => amount + Number(item.amount), |
| | | 0 |
| | | ); |
| | | console.log(addnumber, "addnumber"); |
| | | this.$refs["form"].validate(valid => { |
| | | if (valid) { |
| | | //票据文件处理 |
| | |
| | | console.log(list); |
| | | |
| | | //校验请款金额合计是否等于报销单金额 |
| | | if ( |
| | | this.form.amountrequested != |
| | | this.rbPayees.reduce( |
| | | (amount, item) => amount + Number(item.amount), |
| | | 0.0 |
| | | ) |
| | | ) { |
| | | if (this.form.amountrequested != addnumber) { |
| | | this.$message({ |
| | | message: |
| | | "报销请款表中合计金额不等于报销单的报销金额,请更正后再保存!", |
| | |
| | | |
| | | //新增一行 |
| | | addDetailRow(rowIndex) { |
| | | console.log(rowIndex); |
| | | |
| | | let rowData = { |
| | | //index: this.rbDetails.length, |
| | | searchAddress: { |
| | |
| | | endtime: null, |
| | | destination: null, |
| | | days: null, |
| | | persontype: null, |
| | | personname: null, |
| | | trafficexpense: 0, |
| | | traffictype: null, |
| | | traffictype2: null, |
| | |
| | | total: 0, |
| | | orderno: null, |
| | | personname2: null, |
| | | personname: null, |
| | | destination: null |
| | | }; |
| | | if (this.rbDetails.length) { |
| | | console.log(this.rbDetails[rowIndex].persontype); |
| | | console.log(this.rbDetails[rowIndex].personname); |
| | | rowData.persontype = this.rbDetails[rowIndex].persontype; |
| | | rowData.personname = this.rbDetails[rowIndex].personname; |
| | | } |
| | | // if (this.Reminderquantity >= 5) { |
| | | // this.Savereminder = true; |
| | | // return; |
| | |
| | | }) |
| | | .then(() => { |
| | | console.log(row); |
| | | let arrow = []; |
| | | arrow.push(row.id); |
| | | if (row.id !== null) { |
| | | delReimbursementdetail(row.id).then(res => { |
| | | delReimbursementpayee(arrow).then(res => { |
| | | this.$modal.msgSuccess("删除成功"); |
| | | rows.splice(index, 1); |
| | | this.recountOrderNo2(); |