| | |
| | | <el-form ref="form" :model="form" :rules="rules" label-width="120px"> |
| | | <el-row |
| | | ><el-col :span="5"> |
| | | <el-form-item label="申请日期" prop="createTime"> |
| | | <el-form-item label="申请日期" prop="applyTime"> |
| | | <el-date-picker |
| | | style="width: 100%" |
| | | v-model="form.createTime" |
| | | v-model="form.applyTime" |
| | | type="date" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | placeholder="申请日期" |
| | | :disabled="true" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | |
| | | /> |
| | | </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" |
| | |
| | | </el-col> |
| | | </el-row> |
| | | --> |
| | | <!-- |
| | | <!-- |
| | | <el-row type="flex" :gutter="10" align="right" class="mb8"> |
| | | <el-col :span="6"> |
| | | <el-button |
| | |
| | | </el-col> |
| | | </el-row> |
| | | --> |
| | | <el-row v-if="jurisdiction"> |
| | | <!-- <el-alert title="当前为查看状态,不支持修改存储。" type="warning"> |
| | | </el-alert> --> |
| | | <el-alert |
| | | title="当前为查看状态,不支持修改存储。" |
| | | type="warning" |
| | | show-icon |
| | | > |
| | | </el-alert> |
| | | </el-row> |
| | | <el-row style="margin-top: 25px; margin-bottom: 5px"> |
| | | <el-col :span="20">报销明细</el-col> |
| | | </el-row> |
| | |
| | | :data="rbDetails" |
| | | ref="table" |
| | | border |
| | | max-height="800" |
| | | highlight-current-row |
| | | :summary-method="getSummaries" |
| | | show-summary |
| | |
| | | label="序号" |
| | | align="center" |
| | | fixed |
| | | width="65" |
| | | width="88" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input v-model="scope.row.orderno" placeholder="序号" /> |
| | |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="days" label="天数" width="65" align="center"> |
| | | <el-table-column |
| | | prop="days" |
| | | label="天数" |
| | | width="100" |
| | | align="center" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input |
| | | v-model="scope.row.days" |
| | |
| | | prop="trafficexpense" |
| | | label="交通费" |
| | | align="center" |
| | | width="80" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input |
| | |
| | | prop="cityfee" |
| | | label="市内交通费" |
| | | align="center" |
| | | width="100" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input |
| | |
| | | prop="hotelexpense" |
| | | label="住宿费" |
| | | align="center" |
| | | width="80" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input |
| | |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | <!-- <el-table-column |
| | | prop="foodexpenses" |
| | | label="餐费报销" |
| | | align="center" |
| | | width="80" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input |
| | |
| | | " |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table-column> --> |
| | | <el-table-column |
| | | prop="foodallowance" |
| | | label="伙食补助" |
| | | align="center" |
| | | width="80" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input |
| | |
| | | prop="otherexpense" |
| | | label="公杂费补助" |
| | | align="center" |
| | | width="80" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input |
| | |
| | | prop="otherfeeamount" |
| | | label="其他费用" |
| | | align="center" |
| | | width="90" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input |
| | |
| | | <el-table |
| | | :data="rbPayees" |
| | | border |
| | | max-height="400" |
| | | highlight-current-row |
| | | :summary-method="getSummaries" |
| | | show-summary |
| | |
| | | <el-table-column |
| | | prop="persontype" |
| | | slot="" |
| | | label="人员类别" |
| | | label="收款人类别" |
| | | align="center" |
| | | fixed |
| | | width="130" |
| | | width="150" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-select |
| | | v-model="scope.row.persontype" |
| | | value-key="value" |
| | | placeholder="人员类别" |
| | | placeholder="收款人类别" |
| | | @change="getPersons(scope.row)" |
| | | > |
| | | <el-option |
| | |
| | | label="收款人" |
| | | align="center" |
| | | fixed |
| | | width="110" |
| | | width="200" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-select |
| | |
| | | <el-table-column |
| | | prop="bankname" |
| | | slot="" |
| | | label="银行名称" |
| | | label="收款银行" |
| | | align="center" |
| | | fixed |
| | | width="200" |
| | | width="250" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-input v-model="scope.row.bankname" placeholder="银行名称" /> |
| | | <el-input v-model="scope.row.bankname" placeholder="收款银行" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="bankcardno" |
| | | slot="" |
| | | label="银行卡号" |
| | | label="银行账号" |
| | | align="center" |
| | | fixed |
| | | width="200" |
| | |
| | | <template slot-scope="scope"> |
| | | <el-input |
| | | v-model="scope.row.bankcardno" |
| | | placeholder="银行卡号" |
| | | placeholder="银行账号" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | </el-row> |
| | | <el-row |
| | | style="margin-top: 25px; margin-bottom: 5px" |
| | | v-if="operationType == 'check' && userprofile.nickName == '陈慕华'" |
| | | > |
| | | <el-col :span="12"> |
| | | <el-form-item label="预审材料" prop="infoid"> |
| | | <el-radio-group v-model="form.checkstatus" align="left"> |
| | | <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-col :span="12"> |
| | | <el-form-item label="算税状态" prop="infoid"> |
| | | <el-radio-group v-model="form.istax" align="left"> |
| | | <el-radio :label="-1">审核中</el-radio> |
| | | <el-radio :label="0">允许算税</el-radio> |
| | | <el-radio :label="1">已算税</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-button |
| | | type="primary" |
| | | @click="submitForm" |
| | | v-if="operationType == 'edit'" |
| | | v-if="operationType == 'edit' || userprofile.nickName == '陈慕华'" |
| | | >保 存</el-button |
| | | > |
| | | <el-button |
| | | type="primary" |
| | | @click="checksubmit" |
| | | v-if="operationType == 'check'" |
| | | >提 交</el-button |
| | | >提交审核</el-button |
| | | > |
| | | <!--<el-button @click="cancel">退 出</el-button>--> |
| | | </div> |
| | | </div> |
| | | |
| | | <el-dialog :title="pdftitle" :visible.sync="pdfVisible" width="50%"> |
| | | <div class="pdfimg"> |
| | | <div class="box-pdf"> |
| | | <div> |
| | | <el-upload |
| | | size="mini" |
| | | class="upload-demo" |
| | | :action="uploadFileUrl" |
| | | :file-list="fileListto" |
| | | multiple |
| | | :limit="20" |
| | | :headers="headers" |
| | | :on-success=" |
| | | (response, file, fileList) => |
| | | uploadSccess(response, file, fileList) |
| | | " |
| | | :on-preview="downFile" |
| | | :disabled="operationType == 'detail'" |
| | | :on-error="handleUploadError" |
| | | :on-exceed="handleExceed" |
| | | :on-remove="remove" |
| | | accept="image/*,.pdf" |
| | | > |
| | | <el-button |
| | | :disabled="operationType == 'detail'" |
| | | size="small" |
| | | type="primary" |
| | | >上传</el-button |
| | | > |
| | | </el-upload> |
| | | </div> |
| | | <!-- <div |
| | | class="pdftit" |
| | | @click="pdffn(item)" |
| | | v-for="item in fileList" |
| | | :key="item.name" |
| | | > |
| | | {{ item.name }} |
| | | </div> --> |
| | | </div> |
| | | <el-dialog |
| | | v-dialogDrags |
| | | :modal="false" |
| | | :close-on-click-modal="false" |
| | | :title="pdftitle" |
| | | :visible.sync="pdfVisible" |
| | | width="60%" |
| | | > |
| | | <div style="margin-bottom: 10px;"> |
| | | <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> |
| | | <el-alert |
| | | title="新上传文件需在提交保存后才可进行案例关联,否则视为放弃" |
| | | type="error" |
| | | show-icon |
| | | close-text="知道了" |
| | | > |
| | | </el-alert> |
| | | <el-tabs |
| | | style="margin-top: 20px;" |
| | | v-model="activeName" |
| | | type="border-card" |
| | | @tab-click="handleClick" |
| | | > |
| | | <el-tab-pane label="普通附件" :name="1"> |
| | | <div class="pdfimg"> |
| | | <div class="box-pdf"> |
| | | <div> |
| | | <el-upload |
| | | size="mini" |
| | | class="upload-demo" |
| | | :action="uploadFileUrl" |
| | | :file-list="fileListto" |
| | | :show-file-list="false" |
| | | multiple |
| | | drag |
| | | :headers="headers" |
| | | :on-success=" |
| | | (response, file, fileList) => |
| | | uploadSccess(response, file, fileList) |
| | | " |
| | | :on-preview="downFile" |
| | | :disabled="operationType == 'detail'" |
| | | :on-error="handleUploadError" |
| | | :on-remove="remove" |
| | | accept="image/*,.pdf" |
| | | > |
| | | <i class="el-icon-upload"></i> |
| | | <div class="el-upload__text"> |
| | | 将票据拖到此处,或 |
| | | <em |
| | | ><el-button |
| | | :disabled="operationType == 'detail'" |
| | | size="small" |
| | | type="primary" |
| | | >点击上传</el-button |
| | | ></em |
| | | > |
| | | </div> |
| | | </el-upload> |
| | | <el-table |
| | | :data="fileListto" |
| | | @row-click="downFile" |
| | | style="width: 100%" |
| | | height="400" |
| | | > |
| | | <el-table-column |
| | | prop="name" |
| | | :show-overflow-tooltip="true" |
| | | label="名称" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <i style="color:#409EFF" class=" el-icon-s-order" />{{ |
| | | scope.row.name |
| | | }} |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <div v-if="this.previewpdf" class="pdfimgmin"> |
| | | <!-- <img :src="pdfimg" /> --> |
| | | <el-image |
| | | style="width: 95%; height: 90%" |
| | | :src="pdfimg" |
| | | :preview-src-list="pdfimgsrcList" |
| | | > |
| | | <!-- <div slot="error" class="image-slot"> |
| | | <el-table-column |
| | | prop="name" |
| | | width="180" |
| | | :show-overflow-tooltip="true" |
| | | label="功能" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | type="danger" |
| | | size="mini" |
| | | @click.native.prevent.stop="deletedowfile(scope.row)" |
| | | >删除</el-button |
| | | > |
| | | <el-button |
| | | type="primary" |
| | | size="mini" |
| | | @click.native.prevent.stop="moveupdowfile(scope.row)" |
| | | >上移</el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | |
| | | <div |
| | | v-if="this.previewpdf && pdfimgsrcList.length" |
| | | class="pdfimgmin" |
| | | > |
| | | <!-- <img :src="pdfimg" /> --> |
| | | <el-image |
| | | style="width: 95%; height: 90%" |
| | | :src="pdfimg" |
| | | :preview-src-list="pdfimgsrcList" |
| | | > |
| | | <!-- <div slot="error" class="image-slot"> |
| | | <i class="el-icon-picture-outline"></i> |
| | | </div> --> |
| | | </el-image> |
| | | </div> |
| | | <div v-else class="pdfimgmins">{{ hintitle }}</div> |
| | | </div> |
| | | </el-image> |
| | | </div> |
| | | <div v-else class="pdfimgmins">{{ hintitle }}</div> |
| | | </div> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="发票文件" :name="2"> |
| | | <div class="pdfimg"> |
| | | <div class="box-pdf"> |
| | | <div> |
| | | <el-upload |
| | | size="mini" |
| | | class="upload-demo" |
| | | :action="uploadFileUrl" |
| | | :file-list="invoicefileList" |
| | | :show-file-list="false" |
| | | multiple |
| | | drag |
| | | :headers="headers" |
| | | :on-success=" |
| | | (response, file, fileList) => |
| | | uploadSccess(response, file, fileList) |
| | | " |
| | | :on-preview="downFile" |
| | | :disabled="operationType == 'detail'" |
| | | :on-error="handleUploadError" |
| | | :on-remove="remove" |
| | | accept="image/*,.pdf" |
| | | > |
| | | <i class="el-icon-upload"></i> |
| | | <div class="el-upload__text"> |
| | | 将发票文件拖到此处,或 |
| | | <em |
| | | ><el-button |
| | | :disabled="operationType == 'detail'" |
| | | size="small" |
| | | type="primary" |
| | | >点击上传</el-button |
| | | ></em |
| | | > |
| | | </div> |
| | | </el-upload> |
| | | <el-table |
| | | :data="invoicefileListto" |
| | | @row-click="downFile" |
| | | style="width: 100%" |
| | | height="400" |
| | | > |
| | | <el-table-column |
| | | prop="name" |
| | | :show-overflow-tooltip="true" |
| | | label="名称" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <i style="color:#409EFF" class=" el-icon-s-order" />{{ |
| | | scope.row.name |
| | | }} |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | prop="name" |
| | | width="180" |
| | | :show-overflow-tooltip="true" |
| | | label="功能" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | type="primary" |
| | | size="mini" |
| | | @click.native.prevent.stop="deletedowfile(scope.row)" |
| | | >删除</el-button |
| | | > |
| | | <el-button |
| | | type="primary" |
| | | size="mini" |
| | | @click.native.prevent.stop="moveupdowfile(scope.row)" |
| | | >上移</el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | |
| | | <div |
| | | v-if="this.previewpdf && invoicepdfimgsrcList.length" |
| | | class="pdfimgmin" |
| | | > |
| | | <!-- <img :src="pdfimg" /> --> |
| | | <el-image |
| | | style="width: 95%; height: 90%" |
| | | :src="invoicepdfimg" |
| | | :preview-src-list="invoicepdfimgsrcList" |
| | | > |
| | | <!-- <div slot="error" class="image-slot"> |
| | | <i class="el-icon-picture-outline"></i> |
| | | </div> --> |
| | | </el-image> |
| | | </div> |
| | | <div v-else class="pdfimgmins">{{ hintitle }}</div> |
| | | </div> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </el-dialog> |
| | | <el-dialog title="提示" :visible.sync="Savereminder" width="30%"> |
| | | <el-alert |
| | |
| | | import { |
| | | listReimbursementpayee, |
| | | addReimbursementpayee, |
| | | updateReimbursementpayee |
| | | updateReimbursementpayee, |
| | | delReimbursementpayee |
| | | } from "@/api/project/reimbursementpayee"; |
| | | import { |
| | | listReimbursement, |
| | |
| | | import { getSubsidy } from "@/api/project/travelcity"; |
| | | import { listReportname, listUser } from "@/api/project/organization"; |
| | | import { getToken } from "@/utils/auth"; |
| | | import debounce from "lodash/debounce"; |
| | | export default { |
| | | components: { |
| | | Treeselect, |
| | |
| | | personsList: [], |
| | | //下拉可以选择人员列表 |
| | | personsSel: [], |
| | | activeName: 1, //文件类型 |
| | | // 部门树选项 |
| | | |
| | | deptOptions: undefined, |
| | |
| | | value: 0, |
| | | label: "" |
| | | }, |
| | | ICDtoken: getToken(), |
| | | pdfimgsrcList: [], |
| | | Savereminder: false, //提醒保存弹框 |
| | | Reminderquantity: 0, //提醒数量 |
| | |
| | | starttime: null, |
| | | endtime: null |
| | | }, |
| | | tableDatatop: [ |
| | | { |
| | | date: "2016-05-02", |
| | | name: "王小虎", |
| | | address: "上海市普陀区金沙江路 1518 弄" |
| | | } |
| | | ], |
| | | //查询付款 |
| | | queryParamsPayee: { |
| | | rbid: null |
| | | }, |
| | | // 当前用户信息 |
| | | userprofile: {}, |
| | | // 表单参数 |
| | | form: {}, |
| | | reimbursementList: [], |
| | | |
| | | // 表单校验 |
| | | rules: { |
| | | createTime: [ |
| | | { required: true, message: "请输入填报日期", trigger: "blur" } |
| | | ], |
| | | reason: [ |
| | | { required: true, message: "请输入出差事由", trigger: "blur" } |
| | | ], |
| | |
| | | rbDetails: [], |
| | | rbPayees: [], |
| | | arrr2: [], |
| | | baselisttages: [ |
| | | { |
| | | id: 1, |
| | | name: "待申请材料" |
| | | }, |
| | | { |
| | | id: 2, |
| | | name: "审核通过等待邮寄纸质材料" |
| | | }, |
| | | { |
| | | id: 3, |
| | | name: "已收到报销材料" |
| | | } |
| | | ], |
| | | baselist: [], |
| | | donatorList: [], |
| | | standardlevel: 0, |
| | |
| | | //文件列表 |
| | | fileList: [], |
| | | fileListto: [], |
| | | invoicefileList: [], |
| | | invoicefileListto: [], |
| | | invoicepdfimg: "", |
| | | invoicepdfimgsrcList: [], |
| | | //人员类别 |
| | | persontype: null, |
| | | //到达地 |
| | | arriveAddr: null, |
| | | |
| | | headers: { |
| | | Authorization: "Bearer " + getToken() |
| | | }, |
| | |
| | | flowconclusion: null, |
| | | fundid: null |
| | | }, |
| | | jurisdiction: false, |
| | | |
| | | //保存按钮控制 |
| | | idisabled: false |
| | |
| | | |
| | | //获取登录者信息 |
| | | 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.$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() { |
| | |
| | | console.log(this.Networkheader); |
| | | } |
| | | }, |
| | | // 发票切换 |
| | | handleClick(tab, event) { |
| | | if (this.activeName == 1) { |
| | | this.pdftitle = "共" + this.pdfimgsrcList.length + "项"; |
| | | } else { |
| | | this.pdftitle = "共" + this.invoicepdfimgsrcList.length + "项"; |
| | | } |
| | | }, |
| | | remove(file, fileList) { |
| | | const rbDetails = [...this.rbDetails]; |
| | | this.fileListto.splice(this.fileListto.indexOf(file), 1); |
| | | rbDetails[this.atpresent].annexfilesList = this.fileListto; |
| | | if (this.activeName == 1) { |
| | | this.fileListto.splice(this.fileListto.indexOf(file), 1); |
| | | rbDetails[this.atpresent].annexfilesList = this.fileListto; |
| | | } else { |
| | | this.invoicefileListto.splice(this.invoicefileListto.indexOf(file), 1); |
| | | rbDetails[this.atpresent].invoicefilesList = this.invoicefileListto; |
| | | } |
| | | }, |
| | | |
| | | handleExceed() { |
| | |
| | | //文件上传成功回调 |
| | | uploadSccess(response, file, fileList) { |
| | | this.rbDetails; |
| | | const config = { |
| | | headers: { Authorization: "Bearer " + this.ICDtoken } |
| | | }; |
| | | const pdfimg = this.Networkheader + "/prod-api" + response.fileName; |
| | | //获取票据信息位置 |
| | | if (response.code == 200) { |
| | | this.form.filename = file.raw.name; |
| | | if (this.activeName == 1) { |
| | | if (response.code == 200) { |
| | | this.previewpdf = true; |
| | | |
| | | this.$modal.msgSuccess(response.msg); |
| | | this.fileListto.push({ |
| | | name: file.name, |
| | | url: response.fileName |
| | | }); |
| | | // this.fileListto.push({ |
| | | // name: file.name, |
| | | // url: response.url |
| | | // }); |
| | | this.rbDetails[this.atpresent].annexfilesList = this.fileListto; |
| | | fetch(pdfimg, config) |
| | | .then(response => response.blob()) |
| | | .then(blob => { |
| | | // 将获取的数据流转换为URL |
| | | this.pdfimg = URL.createObjectURL(blob); |
| | | this.pdfimgsrcList.push(URL.createObjectURL(blob)); |
| | | this.fileListto.push({ |
| | | name: file.name, |
| | | url: URL.createObjectURL(blob) |
| | | }); |
| | | }) |
| | | .catch(error => { |
| | | console.error("Error loading image", error); |
| | | return; |
| | | }); |
| | | |
| | | this.$modal.msgSuccess(response.msg); |
| | | |
| | | console.log(this.fileListto, "新增后"); |
| | | if (!this.rbDetails[this.atpresent].annexfilesList) { |
| | | this.rbDetails[this.atpresent].annexfilesList = []; |
| | | } |
| | | this.rbDetails[this.atpresent].annexfilesList.push({ |
| | | name: file.name, |
| | | url: response.fileName |
| | | }); |
| | | this.pdftitle = "共" + this.pdfimgsrcList.length + "项"; |
| | | } else { |
| | | console.log(response.msg); |
| | | } |
| | | } else { |
| | | console.log(response.msg); |
| | | if (response.code == 200) { |
| | | this.previewpdf = true; |
| | | fetch(pdfimg, config) |
| | | .then(response => response.blob()) |
| | | .then(blob => { |
| | | // 将获取的数据流转换为URL |
| | | this.invoicepdfimg = URL.createObjectURL(blob); |
| | | this.invoicepdfimgsrcList.push(URL.createObjectURL(blob)); |
| | | this.invoicefileListto.push({ |
| | | name: file.name, |
| | | url: URL.createObjectURL(blob) |
| | | }); |
| | | }) |
| | | .catch(error => { |
| | | console.error("Error loading image", error); |
| | | return; |
| | | }); |
| | | |
| | | this.$modal.msgSuccess(response.msg); |
| | | |
| | | console.log(this.invoicefileListto, "新增后"); |
| | | if (!this.rbDetails[this.atpresent].invoicefilesList) { |
| | | this.rbDetails[this.atpresent].invoicefilesList = []; |
| | | } |
| | | this.rbDetails[this.atpresent].invoicefilesList.push({ |
| | | name: file.name, |
| | | url: response.fileName |
| | | }); |
| | | this.pdftitle = "共" + this.invoicepdfimgsrcList.length + "项"; |
| | | } |
| | | } |
| | | }, |
| | | // 点击票据 |
| | | Filepopup(index, rows, row) { |
| | | const config = { |
| | | headers: { Authorization: "Bearer " + this.ICDtoken } |
| | | }; |
| | | |
| | | this.tableDatatop = []; |
| | | this.fileListto = []; |
| | | this.invoicefileListto = []; |
| | | this.pdfimg = ""; |
| | | this.invoicepdfimg = []; |
| | | this.pdfimgsrcList = []; |
| | | this.invoicepdfimgsrcList = []; |
| | | this.tableDatatop.push(row); |
| | | this.atpresent = index; |
| | | this.pdfVisible = true; |
| | | console.log(this.rbDetails[index]); |
| | | |
| | | if (this.rbDetails[index].annexfilesList) { |
| | | this.fileListto = this.rbDetails[index].annexfilesList; |
| | | console.log(this.fileListto); |
| | | this.pdfimg = this.Networkheader + "/prod-api" + this.fileListto[0].url; |
| | | console.log(this.pdfimg); |
| | | this.pdfimgsrcList = []; |
| | | this.pdfimgsrcList.push(this.pdfimg); |
| | | const fetchPromises = this.rbDetails[index].annexfilesList.map( |
| | | (value, indexson) => { |
| | | const pdfimg = this.Networkheader + "/prod-api" + value.url; |
| | | return fetch(pdfimg, config) |
| | | .then(response => response.blob()) |
| | | .then(blob => { |
| | | return { |
| | | name: value.name, |
| | | url: URL.createObjectURL(blob) |
| | | }; |
| | | }) |
| | | .catch(error => { |
| | | console.error("Error loading image", error); |
| | | return null; |
| | | }); |
| | | } |
| | | ); |
| | | |
| | | Promise.all(fetchPromises).then(fileListto => { |
| | | this.fileListto = fileListto.filter(item => item !== null); |
| | | this.pdfimg = this.fileListto[0].url; |
| | | console.log(this.pdfimg, "pdfimg"); |
| | | this.pdfimgsrcList = this.fileListto.map(item => item.url); |
| | | }); |
| | | |
| | | this.previewpdf = true; |
| | | } else { |
| | | this.fileListto = []; |
| | | this.pdfimg = ""; |
| | | this.pdftitle = ""; |
| | | } |
| | | //发票 |
| | | if (this.rbDetails[index].invoicefilesList) { |
| | | const fetchPromises = this.rbDetails[index].invoicefilesList.map( |
| | | (value, indexson) => { |
| | | const pdfimg = this.Networkheader + "/prod-api" + value.url; |
| | | return fetch(pdfimg, config) |
| | | .then(response => response.blob()) |
| | | .then(blob => { |
| | | return { |
| | | name: value.name, |
| | | url: URL.createObjectURL(blob) |
| | | }; |
| | | }) |
| | | .catch(error => { |
| | | console.error("Error loading image", error); |
| | | return null; |
| | | }); |
| | | } |
| | | ); |
| | | |
| | | Promise.all(fetchPromises).then(invoicefileListto => { |
| | | this.invoicefileListto = invoicefileListto.filter( |
| | | item => item !== null |
| | | ); |
| | | this.invoicepdfimg = this.invoicefileListto[0].url; |
| | | console.log(this.invoicepdfimg, "invoicepdfimg"); |
| | | this.invoicepdfimgsrcList = this.invoicefileListto.map( |
| | | item => item.url |
| | | ); |
| | | }); |
| | | |
| | | this.previewpdf = true; |
| | | } else { |
| | | this.invoicefileListto = []; |
| | | this.invoicepdfimg = ""; |
| | | this.pdftitle = ""; |
| | | } |
| | | |
| | | if (this.activeName == "common") { |
| | | this.pdftitle = "共" + this.pdfimgsrcList.length + "项"; |
| | | } else { |
| | | this.pdftitle = "共" + this.invoicepdfimgsrcList.length + "项"; |
| | | } |
| | | console.log(this.fileListto, "this.fileListto"); |
| | | console.log(this.rbDetails[index].annexfilesList, "annexfilesList"); |
| | | }, |
| | | |
| | | // 点击已上传文件 |
| | | downFile(item) { |
| | | console.log(item); |
| | | this.pdftitle = item.name; |
| | | let name = item.name.split("."); |
| | | if (name[1] == "pdf") { |
| | | this.$modal.msgWarning("当前文件暂不支持预览"); |
| | | this.previewpdf = false; |
| | | this.hintitle = "当前文件暂不支持预览"; |
| | | } else if (name[1] == "jpg" || "png") { |
| | | this.previewpdf = true; |
| | | if (item.url) { |
| | | this.pdfimg = this.Networkheader + "/prod-api" + item.url; |
| | | this.pdfimgsrcList = []; |
| | | this.pdfimgsrcList.push(this.pdfimg); |
| | | console.log(this.pdfimg); |
| | | if (this.activeName == 1) { |
| | | this.pdftitle = |
| | | "共" + this.pdfimgsrcList.length + "项,当前选中" + item.name; |
| | | let name = item.name.split("."); |
| | | if (name[1] == "pdf") { |
| | | this.$modal.msgWarning("当前文件暂不支持预览"); |
| | | this.previewpdf = false; |
| | | this.hintitle = "当前文件暂不支持预览"; |
| | | } else if (name[1] == "jpg" || "png") { |
| | | console.log(item, "展示"); |
| | | this.previewpdf = true; |
| | | if (item.url) { |
| | | this.pdfimg = item.url; |
| | | } else { |
| | | this.pdfimg = ""; |
| | | } |
| | | } else { |
| | | this.pdfimg = this.Networkheader + "/prod-api" + item.response.url; |
| | | this.hintitle = "当前文件暂不支持预览"; |
| | | this.$modal.msgWarning("当前文件暂不支持预览"); |
| | | this.previewpdf = false; |
| | | } |
| | | } else { |
| | | this.hintitle = "当前文件暂不支持预览"; |
| | | this.$modal.msgWarning("当前文件暂不支持预览"); |
| | | this.previewpdf = false; |
| | | this.pdftitle = |
| | | "共" + this.invoicepdfimgsrcList.length + "项,当前选中" + item.name; |
| | | let name = item.name.split("."); |
| | | if (name[1] == "pdf") { |
| | | this.$modal.msgWarning("当前文件暂不支持预览"); |
| | | this.previewpdf = false; |
| | | this.hintitle = "当前文件暂不支持预览"; |
| | | } else if (name[1] == "jpg" || "png") { |
| | | this.previewpdf = true; |
| | | if (item.url) { |
| | | this.invoicepdfimg = item.url; |
| | | } else { |
| | | this.invoicepdfimg = ""; |
| | | } |
| | | } else { |
| | | this.hintitle = "当前文件暂不支持预览"; |
| | | this.$modal.msgWarning("当前文件暂不支持预览"); |
| | | this.previewpdf = false; |
| | | } |
| | | } |
| | | }, |
| | | getIndexInArray(arr, obj) { |
| | | return arr.indexOf(obj); |
| | | }, |
| | | // 点击删除 |
| | | deletedowfile(row) { |
| | | console.log(row); |
| | | let indexvalue = ""; |
| | | if (this.activeName == 1) { |
| | | const indexlist = this.getIndexInArray(this.pdfimgsrcList, row.url); |
| | | this.pdfimgsrcList.splice(indexlist, 1); |
| | | const index = this.getIndexInArray(this.fileListto, row); |
| | | this.fileListto.splice(index, 1); |
| | | console.log(this.rbDetails[this.atpresent].annexfilesList); |
| | | indexvalue = this.rbDetails[this.atpresent].annexfilesList.find( |
| | | (item, index) => { |
| | | return item.name == row.name; |
| | | } |
| | | ); |
| | | console.log(indexvalue, "删除索引"); |
| | | this.rbDetails[this.atpresent].annexfilesList.splice(indexvalue, 1); |
| | | } else { |
| | | const indexlist = this.getIndexInArray( |
| | | this.invoicepdfimgsrcList, |
| | | row.url |
| | | ); |
| | | this.invoicepdfimgsrcList.splice(indexlist, 1); |
| | | const index = this.getIndexInArray(this.invoicefileListto, row); |
| | | this.invoicefileListto.splice(index, 1); |
| | | console.log(this.rbDetails[this.atpresent].invoicefilesList); |
| | | indexvalue = this.rbDetails[this.atpresent].invoicefilesList.find( |
| | | (item, index) => { |
| | | return item.name == row.name; |
| | | } |
| | | ); |
| | | console.log(indexvalue, "删除索引"); |
| | | this.rbDetails[this.atpresent].invoicefilesList.splice(indexvalue, 1); |
| | | } |
| | | }, |
| | | // 点击上移 |
| | | moveupdowfile(row) { |
| | | if (this.activeName == 1) { |
| | | const index = this.getIndexInArray(this.fileListto, row); |
| | | const item = this.fileListto.splice(index, 1)[0]; // 移除指定索引处的元素,并保存到item变量中 |
| | | this.fileListto.splice(index - 1, 0, item); // 将item插入到索引位置的前一位 |
| | | |
| | | const indexann = this.rbDetails[ |
| | | this.atpresent |
| | | ].annexfilesList.findIndex(item => item.name == row.name); |
| | | const itemann = this.rbDetails[this.atpresent].annexfilesList.splice( |
| | | indexann, |
| | | 1 |
| | | )[0]; // 移除指定索引处的元素,并保存到item变量中 |
| | | this.rbDetails[this.atpresent].annexfilesList.splice( |
| | | indexann - 1, |
| | | 0, |
| | | itemann |
| | | ); // 将itemann插入到索引位置的前一位 |
| | | } else { |
| | | const index = this.getIndexInArray(this.invoicefileListto, row); |
| | | const item = this.invoicefileListto.splice(index, 1)[0]; // 移除指定索引处的元素,并保存到item变量中 |
| | | this.invoicefileListto.splice(index - 1, 0, item); // 将item插入到索引位置的前一位 |
| | | |
| | | const indexinvo = this.rbDetails[ |
| | | this.atpresent |
| | | ].invoicefilesList.findIndex(item => item.name == row.name); |
| | | const iteminvo = this.rbDetails[this.atpresent].invoicefilesList.splice( |
| | | indexinvo, |
| | | 1 |
| | | )[0]; // 移除指定索引处的元素,并保存到item变量中 |
| | | this.rbDetails[this.atpresent].invoicefilesList.splice( |
| | | indexinvo - 1, |
| | | 0, |
| | | iteminvo |
| | | ); // 将iteminvo插入到索引位置的前一位 |
| | | } |
| | | }, |
| | | |
| | |
| | | var aEle = document.createElement("a"); |
| | | aEle.href = |
| | | curWWWPath.substring(0, pos) + urlBase + fileUrl["downloadUrl"]; |
| | | aEle.click(); |
| | | console.log(aEle.href); |
| | | // 添加Authorization头部 |
| | | fetch(aEle.href, { |
| | | headers: this.headers |
| | | }) |
| | | .then(response => { |
| | | // 将文件下载链接作为blob对象进行下载 |
| | | return response.blob(); |
| | | }) |
| | | .then(blob => { |
| | | const url = window.URL.createObjectURL(new Blob([blob])); |
| | | console.log(url); |
| | | const link = document.createElement("a"); |
| | | link.href = url; |
| | | const name = fileUrl["downloadName"]; |
| | | link.setAttribute("download", name); // 替换file.pdf为实际的文件名 |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | link.parentNode.removeChild(link); |
| | | }); |
| | | }); |
| | | |
| | | // downloadconfirmationinfo(id).then((response) => { |
| | | // var fileUrl = response; |
| | | // //获取当前网址 |
| | | // var urlBase = process.env.VUE_APP_BASE_API; |
| | | // var curWWWPath = window.document.location.href; |
| | | // var pos = curWWWPath.indexOf(window.document.location.pathname); |
| | | // // 创建a标签 |
| | | // var aEle = document.createElement("a"); |
| | | // aEle.href = |
| | | // curWWWPath.substring(0, pos) + urlBase + fileUrl["downloadUrl"]; |
| | | // aEle.click(); |
| | | // }); |
| | | }, |
| | | |
| | | /** 查询报销申请列表 */ |
| | |
| | | //获取报销主信息 |
| | | getReimbursement(curId).then(response => { |
| | | this.form = response.data; |
| | | |
| | | this.fileListto = this.form.annexfiles |
| | | ? this.form.annexfiles |
| | | .split(",") |
| | | .map(item => ({ url: item, name: item })) |
| | | : []; |
| | | this.invoicefileListto = this.form.invoicefilesList |
| | | ? this.form.invoicefilesList |
| | | .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) |
| | | ); |
| | | }); |
| | | |
| | | //获取报销打款信息 |
| | |
| | | handleDetail(ids) { |
| | | this.operationType = "detail"; |
| | | this.title = "报销申请详情"; |
| | | |
| | | this.jurisdiction = true; |
| | | this.reset(); |
| | | this.open = true; |
| | | const id = ids || this.ids; |
| | | |
| | | getReimbursement(id).then(response => { |
| | | this.form = response.data; |
| | | //票据 |
| | |
| | | .split(",") |
| | | .map(item => ({ url: item, name: item })) |
| | | : []; |
| | | |
| | | this.invoicefileListto = this.form.invoicefilesList |
| | | ? this.form.invoicefilesList |
| | | .split(",") |
| | | .map(item => ({ url: item, name: item })) |
| | | : []; |
| | | //审核状态 |
| | | this.form.recordstatus = response.data.recordstatus + ""; |
| | | let ids = response.data.id; |
| | |
| | | //报销明细 |
| | | getReimbursementdetaillist(ids).then(res => { |
| | | this.rbDetails = res.data; |
| | | /* |
| | | for (let i = 0; i < this.rbDetails.length; 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, |
| | | }; |
| | | } |
| | | */ |
| | | //合计费用 |
| | | // if (this.rbDetails.length > 0) this.sumTotalFee(); |
| | | for (let i = 0; i < this.rbDetails.length; i++) { |
| | |
| | | this.addPayeeRow(0); |
| | | } |
| | | }); |
| | | sessionStorage.removeItem("apiform"); |
| | | sessionStorage.setItem("apiform", JSON.stringify(this.form)); |
| | | }); |
| | | }, |
| | | |
| | |
| | | |
| | | getReimbursement(id).then(response => { |
| | | this.form = response.data; |
| | | console.log(this.form.checkstatus, "checkstatus"); |
| | | this.form.checkstatus = this.form.checkstatus.toString(); |
| | | |
| | | //票据 |
| | | this.fileListto = this.form.annexfiles |
| | | ? this.form.annexfiles |
| | | .split(",") |
| | | .map(item => ({ url: item, name: item })) |
| | | : []; |
| | | this.invoicefileListto = this.form.invoicefilesList |
| | | ? this.form.invoicefilesList |
| | | .split(",") |
| | | .map(item => ({ url: item, name: item })) |
| | | : []; |
| | |
| | | getReimbursementdetaillist(ids).then(res => { |
| | | this.rbDetails = res.data; |
| | | console.log(this.rbDetails); |
| | | /* |
| | | for (let i = 0; i < this.rbDetails.length; 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, |
| | | }; |
| | | } |
| | | */ |
| | | |
| | | //合计费用 |
| | | // if (this.rbDetails.length > 0) this.sumTotalFee(); |
| | |
| | | this.addPayeeRow(0); |
| | | } |
| | | }); |
| | | sessionStorage.removeItem("apiform"); |
| | | sessionStorage.setItem("apiform", JSON.stringify(this.form)); |
| | | }); |
| | | }, |
| | | |
| | | //提交审核意见 |
| | | checksubmit() { |
| | | if ( |
| | | this.form.checkstatus != 3 && |
| | | this.userprofile.nickName == "陈慕华" && |
| | | this.checkObj.flowlevelone == 1 |
| | | ) { |
| | | this.$modal.msgError("请选确认材料状态已收到!"); |
| | | return; |
| | | } |
| | | let checkfundobj = { |
| | | flowconclusion: this.checkObj.flowlevelone, |
| | | flowcontent: this.checkObj.flowconclusion, |
| | |
| | | this.$modal.msgError("请选择审核结论后再提交审批结果!"); |
| | | return; |
| | | } |
| | | if (this.userprofile.nickName == "陈慕华") { |
| | | this.Savenow(); |
| | | console.log("保存"); |
| | | } |
| | | this.$modal.loading("正在提交审核,请稍候!"); |
| | | |
| | | checkfund(checkfundobj).then(res => { |
| | | this.reset(); |
| | | this.open = false; |
| | | this.$modal.msgSuccess("提交审核成功!"); |
| | | // 关闭窗口 |
| | | this.$store.dispatch("tagsView/delView", this.$route); |
| | | this.$router.go(-1); |
| | | if (res.code == 200) { |
| | | this.$modal.closeLoading(); |
| | | this.$modal.msgSuccess("提交审核成功!"); |
| | | // 关闭窗口 |
| | | this.$store.dispatch("tagsView/delView", this.$route); |
| | | this.$router.go(-1); |
| | | } else { |
| | | this.$modal.closeLoading(); |
| | | if (res.msg) { |
| | | this.$modal.msgError("操作失误"); |
| | | } else { |
| | | this.$modal.msgError(res.msg); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | /** 提交保存按钮 */ |
| | | submitForm() { |
| | | 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; |
| | | } |
| | | */ |
| | | |
| | | //票据文件处理 |
| | | let list = this.fileListto; |
| | | console.log(list); |
| | | const addnumber = this.rbPayees.reduce( |
| | | (amount, item) => amount + Number(item.amount), |
| | | 0 |
| | | ); |
| | | |
| | | //校验请款金额合计是否等于报销单金额 |
| | | if ( |
| | | this.form.amountrequested != |
| | | this.rbPayees.reduce( |
| | | (amount, item) => amount + Number(item.amount), |
| | | 0.0 |
| | | ) |
| | | ) { |
| | | if (this.form.amountrequested != addnumber) { |
| | | this.$message({ |
| | | message: |
| | | "报销请款表中合计金额不等于报销单的报销金额,请更正后再保存!", |
| | |
| | | |
| | | const rbDetails = [...this.rbDetails]; |
| | | const rbPayees = [...this.rbPayees]; |
| | | //保存前校验数据 |
| | | for (let k = 0; k < rbDetails.length; k++) { |
| | | let tempDetail = rbDetails[k]; |
| | | console.log(tempDetail, "tem"); |
| | | if (!tempDetail.persontype) { |
| | | this.$modal.msgWarning( |
| | | "明细表中,第" + |
| | | (k + 1).toString() + |
| | | "行的人员类别未选择,请先选择人员类别后再提交保存!" |
| | | ); |
| | | return; |
| | | } |
| | | |
| | | if (!tempDetail.personname) { |
| | | this.$modal.msgWarning( |
| | | "明细表中,第" + |
| | | (k + 1).toString() + |
| | | "行的费用人员未选择,请选择费用人员后再提交保存!" |
| | | ); |
| | | return; |
| | | } |
| | | |
| | | if (!tempDetail.starttime) { |
| | | this.$modal.msgWarning( |
| | | "明细表中,第" + |
| | | (k + 1).toString() + |
| | | "行的开始日期未选择,请选择开始日期后再提交保存!" |
| | | ); |
| | | return; |
| | | } |
| | | |
| | | if (!tempDetail.endtime) { |
| | | this.$modal.msgWarning( |
| | | "明细表中,第" + |
| | | (k + 1).toString() + |
| | | "行的结束日期姓名为选择,请选择结束日期后再提交保存!" |
| | | ); |
| | | return; |
| | | } |
| | | } |
| | | |
| | | if (this.form.id != null) { |
| | | console.log(this.form); |
| | | updateReimbursement(this.form); |
| | |
| | | //保存明细 |
| | | for (let i = 0; i < rbDetails.length; i++) { |
| | | if (rbDetails[i].rbid != null) { |
| | | updateReimbursementdetail(rbDetails[i]); |
| | | if (rbDetails[i].persontype == "家属") { |
| | | if (this.form.infoid) { |
| | | updateReimbursementdetail(rbDetails[i]); |
| | | } else { |
| | | return this.$message.error( |
| | | `因家属分配要求,请选择捐献者信息` |
| | | ); |
| | | } |
| | | } else { |
| | | updateReimbursementdetail(rbDetails[i]); |
| | | } |
| | | } else { |
| | | //rbid关联主表Id |
| | | rbDetails[i].rbid = this.form.id; |
| | | addReimbursementdetail(rbDetails[i]); |
| | | if (rbDetails[i].persontype == "家属") { |
| | | if (this.form.infoid) { |
| | | //rbid关联主表Id |
| | | rbDetails[i].rbid = this.form.id; |
| | | addReimbursementdetail(rbDetails[i]); |
| | | } else { |
| | | return this.$message.error( |
| | | `因家属分配要求,请选择捐献者信息` |
| | | ); |
| | | } |
| | | } else { |
| | | //rbid关联主表Id |
| | | rbDetails[i].rbid = this.form.id; |
| | | addReimbursementdetail(rbDetails[i]); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | addReimbursementpayee(rbPayees[i]); |
| | | } |
| | | } |
| | | |
| | | this.$modal.msgSuccess("修改报销单保存成功!"); |
| | | if (this.userprofile.nickName != "陈慕华") { |
| | | this.$modal.msgSuccess("修改报销单保存成功!"); |
| | | } |
| | | this.open = false; |
| | | |
| | | // 关闭窗口 |
| | | this.$store.dispatch("tagsView/delView", this.$route); |
| | | this.$router.go(-1); |
| | | |
| | | // this.getList(); |
| | | // }) |
| | | // .catch(err => { |
| | | // this.$modal.msgError("修改报销单保存失败!"); |
| | | // }); |
| | | } else { |
| | | this.form.recordstatus = -1; |
| | | // 申请时间 |
| | | var currenttime = new Date(); |
| | | this.form.applyTime = |
| | | currenttime.getFullYear() + |
| | | "-" + |
| | | (currenttime.getMonth() + 1) + |
| | | "-" + |
| | | currenttime.getDate() + |
| | | " " + |
| | | currenttime.getHours() + |
| | | ":" + |
| | | currenttime.getMinutes() + |
| | | ":" + |
| | | currenttime.getSeconds(); |
| | | |
| | | addReimbursement(this.form) |
| | | .then(response => { |
| | | //保存明细 |
| | |
| | | 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.$router.go(-1); |
| | | }) |
| | | .catch(err => { |
| | | this.$modal.msgError("新增报销单保存失败!"); |
| | | this.$modal.msgError("新增报销单保存失败!" + res); |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | }, 500), |
| | | |
| | | /** 删除按钮操作 */ |
| | | handleDelete(row) { |
| | |
| | | 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) { |
| | | //票据文件处理 |
| | | 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: |
| | | "报销请款表中合计金额不等于报销单的报销金额,请更正后再保存!", |
| | |
| | | } |
| | | |
| | | this.$modal.msgSuccess("修改报销单保存成功!"); |
| | | |
| | | // this.getList(); |
| | | // }) |
| | | // .catch(err => { |
| | | // this.$modal.msgError("修改报销单保存失败!"); |
| | | // }); |
| | | } else { |
| | | this.form.recordstatus = -1; |
| | | addReimbursement(this.form) |
| | |
| | | |
| | | //新增一行 |
| | | 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.Reminderquantity >= 5) { |
| | | this.Savereminder = true; |
| | | return; |
| | | 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; |
| | | // } |
| | | if (rowIndex == undefined || rowIndex == null || rowIndex < 0) { |
| | | this.rbDetails.push(rowData); |
| | | } else { |
| | |
| | | personname: null, |
| | | amount: null |
| | | }; |
| | | if (this.Reminderquantity >= 5) { |
| | | this.Savereminder = true; |
| | | return; |
| | | } |
| | | // if (this.Reminderquantity >= 5) { |
| | | // this.Savereminder = true; |
| | | // return; |
| | | // } |
| | | if (rowIndex == undefined || rowIndex == null || rowIndex <= 0) { |
| | | this.rbPayees.push(rowData); |
| | | } else { |
| | |
| | | }) |
| | | .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(); |
| | |
| | | if (!isNaN(parseFloat(row.otherfeeamount))) { |
| | | totalFee += parseFloat(row.otherfeeamount); |
| | | } |
| | | row.total = totalFee; |
| | | row.total = totalFee.toFixed(2); |
| | | |
| | | /* |
| | | if (!isNaN(parseFloat(this.rbDetails[rowIndex].trafficexpense))) { |
| | |
| | | "departure", |
| | | "destination", |
| | | "traffictype", |
| | | "traffictype2", |
| | | "departure" |
| | | "traffictype2" |
| | | ]; |
| | | columns.forEach((column, index) => { |
| | | if (index === 0) { |
| | | sums[index] = "合计"; |
| | | return; |
| | | } |
| | | if (index === 18) { |
| | | sums[index] = this.form.amountrequested; |
| | | return; |
| | | } |
| | | //去除部分字段计算 |
| | |
| | | return prev; |
| | | } |
| | | }, 0); |
| | | sums[index] += ""; |
| | | sums[index] = sums[index].toFixed(2); // 保留2位小数,解决小数合计列; |
| | | } else { |
| | | sums[index] = ""; |
| | | } |
| | |
| | | height: 600px; |
| | | |
| | | .box-pdf { |
| | | width: 200px; |
| | | width: 400px; |
| | | padding-top: 20px; |
| | | margin-right: 30px; |
| | | border: 1px solid #dcdfe6; |
| | |
| | | line-height: 36px; |
| | | text-align: center; |
| | | } |
| | | |
| | | ::v-deep .el-alert__title { |
| | | font-size: 20px; |
| | | line-height: 20px; |
| | | } |
| | | </style> |