|  |  |  | 
|---|
|  |  |  | <div class="boxdiv"> | 
|---|
|  |  |  | <div class="top-text">{{ title }}</div> | 
|---|
|  |  |  | <el-form ref="form" :model="form" :rules="rules" label-width="120px"> | 
|---|
|  |  |  | <el-row><el-col :span="5"> | 
|---|
|  |  |  | <el-form-item label="申请日期" prop="createTime"> | 
|---|
|  |  |  | <el-date-picker style="width: 100%" v-model="form.createTime" type="date" value-format="yyyy-MM-dd HH:mm:ss" | 
|---|
|  |  |  | placeholder="申请日期"> | 
|---|
|  |  |  | <el-row | 
|---|
|  |  |  | ><el-col :span="5"> | 
|---|
|  |  |  | <el-form-item label="申请日期" prop="applyTime"> | 
|---|
|  |  |  | <el-date-picker | 
|---|
|  |  |  | style="width: 100%" | 
|---|
|  |  |  | v-model="form.applyTime" | 
|---|
|  |  |  | type="date" | 
|---|
|  |  |  | value-format="yyyy-MM-dd HH:mm:ss" | 
|---|
|  |  |  | placeholder="申请日期" | 
|---|
|  |  |  | :disabled="true" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | </el-date-picker> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | <el-col :span="5"> | 
|---|
|  |  |  | <el-form-item label="经办人" prop="username"> | 
|---|
|  |  |  | <el-select v-model="form.username" clearable filterable allow-create ref="getReportname" | 
|---|
|  |  |  | default-first-option placeholder="请选择"> | 
|---|
|  |  |  | <el-option v-for="item in personsList" :key="item.reportNo" :label="item.reportName" | 
|---|
|  |  |  | :value="item.reportName"> | 
|---|
|  |  |  | <el-select | 
|---|
|  |  |  | v-model="form.username" | 
|---|
|  |  |  | clearable | 
|---|
|  |  |  | filterable | 
|---|
|  |  |  | allow-create | 
|---|
|  |  |  | ref="getReportname" | 
|---|
|  |  |  | default-first-option | 
|---|
|  |  |  | placeholder="请选择" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-option | 
|---|
|  |  |  | v-for="item in personsList" | 
|---|
|  |  |  | :key="item.reportNo" | 
|---|
|  |  |  | :label="item.reportName" | 
|---|
|  |  |  | :value="item.reportName" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | </el-option> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | </el-row> | 
|---|
|  |  |  | <el-row> | 
|---|
|  |  |  | <el-col :span="15"> | 
|---|
|  |  |  | <el-col :span="10"> | 
|---|
|  |  |  | <el-form-item label="出差事由" prop="reason"> | 
|---|
|  |  |  | <el-input v-model="form.reason" placeholder="出差事由" /> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | <el-col :span="5"> | 
|---|
|  |  |  | <el-form-item label="捐献者" prop="infoid"> | 
|---|
|  |  |  | <el-select v-model="form.infoid" @change="selectbaseinfo" filterable placeholder="请选择捐献者"> | 
|---|
|  |  |  | <el-option v-for="item in baselist" :key="item.index" :label="item.name" :value="item.infoid"> | 
|---|
|  |  |  | <el-form-item label="报销类别" prop="costtype"> | 
|---|
|  |  |  | <el-select | 
|---|
|  |  |  | v-model="form.costtype" | 
|---|
|  |  |  | value-key="value" | 
|---|
|  |  |  | placeholder="请选择报销人员类别" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-option | 
|---|
|  |  |  | v-for="dict in dict.type.sys_travelexpensebelong" | 
|---|
|  |  |  | :key="dict.value" | 
|---|
|  |  |  | :label="dict.label" | 
|---|
|  |  |  | :value="dict.value" | 
|---|
|  |  |  | ></el-option> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | <el-col :span="5"> | 
|---|
|  |  |  | <el-form-item | 
|---|
|  |  |  | label="捐献者" | 
|---|
|  |  |  | prop="infoid" | 
|---|
|  |  |  | v-show="form.costtype == 4" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-select | 
|---|
|  |  |  | v-model="form.infoid" | 
|---|
|  |  |  | @change="selectbaseinfo" | 
|---|
|  |  |  | clearable | 
|---|
|  |  |  | filterable | 
|---|
|  |  |  | placeholder="请选择捐献者" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-option | 
|---|
|  |  |  | v-for="item in baselist" | 
|---|
|  |  |  | :key="item.index" | 
|---|
|  |  |  | :label="item.name" | 
|---|
|  |  |  | :value="item.infoid" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | </el-option> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | 
|---|
|  |  |  | </el-row> | 
|---|
|  |  |  | <el-row style="margin-top: 10px"> | 
|---|
|  |  |  | <el-col :span="5"> | 
|---|
|  |  |  | <el-form-item label="报销金额" prop="amountrequested"> | 
|---|
|  |  |  | <el-input :disabled="true" v-model="form.amountrequested" placeholder="报销合计金额" /> | 
|---|
|  |  |  | <el-form-item label="审核状态" prop="flowlevel"> | 
|---|
|  |  |  | <el-select | 
|---|
|  |  |  | v-model="form.recordstatus" | 
|---|
|  |  |  | placeholder="请选择审核状态" | 
|---|
|  |  |  | clearable | 
|---|
|  |  |  | :disabled="true" | 
|---|
|  |  |  | size="small" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-option | 
|---|
|  |  |  | v-for="dict in dict.type.sys_recordstatus" | 
|---|
|  |  |  | :key="dict.value" | 
|---|
|  |  |  | :label="dict.label" | 
|---|
|  |  |  | :value="dict.value" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | <el-col :span="10"> | 
|---|
|  |  |  | <el-col :span="5"> | 
|---|
|  |  |  | <el-form-item label="报销金额" prop="amountrequested"> | 
|---|
|  |  |  | <el-input | 
|---|
|  |  |  | :disabled="true" | 
|---|
|  |  |  | v-model="form.amountrequested" | 
|---|
|  |  |  | placeholder="报销合计金额" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | <el-col :span="8"> | 
|---|
|  |  |  | <el-form-item label="大写金额" prop="bigstrmoney"> | 
|---|
|  |  |  | <el-input :disabled="true" v-model="form.bigstrmoney" placeholder="报销大写金额" /> | 
|---|
|  |  |  | </el-form-item> </el-col><el-col :span="5"> | 
|---|
|  |  |  | <el-form-item label="审核状态" prop="flowlevel"> | 
|---|
|  |  |  | <el-select v-model="form.recordstatus" placeholder="请选择审核状态" clearable :disabled="true" size="small"> | 
|---|
|  |  |  | <el-option v-for="dict in dict.type.sys_recordstatus" :key="dict.value" :label="dict.label" | 
|---|
|  |  |  | :value="dict.value" /> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | <el-input | 
|---|
|  |  |  | :disabled="true" | 
|---|
|  |  |  | v-model="form.bigstrmoney" | 
|---|
|  |  |  | placeholder="报销大写金额" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | </el-row> | 
|---|
|  |  |  | 
|---|
|  |  |  | <el-col :span="15"> | 
|---|
|  |  |  | <el-form-item label="出差事由" prop="reason"> | 
|---|
|  |  |  | <el-input v-model="form.reason" placeholder="出差事由" /> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | <el-col :span="5"> | 
|---|
|  |  |  | <el-form-item label="报销分类" prop="costtype"> | 
|---|
|  |  |  | <el-select v-model="form.costtype" value-key="value" placeholder="请选择出差人分类" @change="getTravelers"> | 
|---|
|  |  |  | <el-option v-for="dict in dict.type.sys_travelexpensebelong" :key="dict.value" :label="dict.label" | 
|---|
|  |  |  | :value="dict.value"></el-option> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | </el-col> | 
|---|
|  |  |  | <el-col :span="5"> | 
|---|
|  |  |  | 
|---|
|  |  |  | </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> | 
|---|
|  |  |  | <el-row> | 
|---|
|  |  |  | <el-table :data="rbDetails" border highlight-current-row :summary-method="getSummaries" show-summary> | 
|---|
|  |  |  | <el-table-column prop="orderno" slot="" label="序号" align="center" fixed width="65"> | 
|---|
|  |  |  | <el-table | 
|---|
|  |  |  | :data="rbDetails" | 
|---|
|  |  |  | ref="table" | 
|---|
|  |  |  | border | 
|---|
|  |  |  | max-height="800" | 
|---|
|  |  |  | highlight-current-row | 
|---|
|  |  |  | :summary-method="getSummaries" | 
|---|
|  |  |  | show-summary | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="orderno" | 
|---|
|  |  |  | slot="" | 
|---|
|  |  |  | label="序号" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | fixed | 
|---|
|  |  |  | width="88" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-input v-model="scope.row.orderno" placeholder="序号" /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <!--主键、外不展示--> | 
|---|
|  |  |  | <el-table-column prop="id" slot="" label="主键" align="center" fixed width="95" v-if="false"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="id" | 
|---|
|  |  |  | slot="" | 
|---|
|  |  |  | label="主键" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | fixed | 
|---|
|  |  |  | width="95" | 
|---|
|  |  |  | v-if="false" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-input v-model="scope.row.id" placeholder="id" /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="rbid" slot="" label="外键" align="center" fixed width="95" v-if="false"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="rbid" | 
|---|
|  |  |  | slot="" | 
|---|
|  |  |  | label="外键" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | fixed | 
|---|
|  |  |  | width="95" | 
|---|
|  |  |  | v-if="false" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-input v-model="scope.row.rbid" placeholder="rbid" /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <el-table-column prop="persontype" slot="" label="人员类别" align="center" fixed width="130"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="persontype" | 
|---|
|  |  |  | slot="" | 
|---|
|  |  |  | label="人员类别" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | fixed | 
|---|
|  |  |  | width="130" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-select v-model="scope.row.persontype" value-key="value" placeholder="人员类别" | 
|---|
|  |  |  | @change="getPersons(scope.row)"> | 
|---|
|  |  |  | <el-option v-for="dict in dict.type.sys_travelexpensebelong" :key="dict.value" :label="dict.label" | 
|---|
|  |  |  | :value="dict.label"></el-option> | 
|---|
|  |  |  | <el-select | 
|---|
|  |  |  | v-model="scope.row.persontype" | 
|---|
|  |  |  | value-key="value" | 
|---|
|  |  |  | placeholder="人员类别" | 
|---|
|  |  |  | @change="getPersons(scope.row)" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-option | 
|---|
|  |  |  | v-for="dict in dict.type.sys_travelexpensebelong" | 
|---|
|  |  |  | :key="dict.value" | 
|---|
|  |  |  | :label="dict.label" | 
|---|
|  |  |  | :value="dict.label" | 
|---|
|  |  |  | ></el-option> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="personname" slot="" label="费用人员" align="center" fixed width="110"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="personname" | 
|---|
|  |  |  | slot="" | 
|---|
|  |  |  | label="费用人员" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | fixed | 
|---|
|  |  |  | width="110" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-select v-model="scope.row.personname" clearable filterable allow-create default-first-option | 
|---|
|  |  |  | placeholder="请选择" @focus1="getPersons(scope.row)"> | 
|---|
|  |  |  | <el-option v-for="item in personsSel" :key="item.reportNo" :label="item.reportName" | 
|---|
|  |  |  | :value="item.reportName"> | 
|---|
|  |  |  | <el-select | 
|---|
|  |  |  | v-model="scope.row.personname" | 
|---|
|  |  |  | clearable | 
|---|
|  |  |  | filterable | 
|---|
|  |  |  | allow-create | 
|---|
|  |  |  | default-first-option | 
|---|
|  |  |  | placeholder="请选择" | 
|---|
|  |  |  | @focus1="getPersons(scope.row)" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-option | 
|---|
|  |  |  | v-for="item in personsSel" | 
|---|
|  |  |  | :key="item.reportNo" | 
|---|
|  |  |  | :label="item.reportName" | 
|---|
|  |  |  | :value="item.reportName" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | </el-option> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="starttime" slot="" label="开始日期" fixed align="center" width="150"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="starttime" | 
|---|
|  |  |  | slot="" | 
|---|
|  |  |  | label="开始日期" | 
|---|
|  |  |  | fixed | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | width="150" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-date-picker :picker-options="{ | 
|---|
|  |  |  | disabledDate: time => { | 
|---|
|  |  |  | if (scope.row.endtime) { | 
|---|
|  |  |  | return ( | 
|---|
|  |  |  | time.getTime() > | 
|---|
|  |  |  | new Date(scope.row.endtime.replace(/-/g, '/')) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | <el-date-picker | 
|---|
|  |  |  | :picker-options="{ | 
|---|
|  |  |  | disabledDate: time => { | 
|---|
|  |  |  | if (scope.row.endtime) { | 
|---|
|  |  |  | return ( | 
|---|
|  |  |  | time.getTime() > | 
|---|
|  |  |  | new Date(scope.row.endtime.replace(/-/g, '/')) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }" clearable size="small" style="width: 100%" v-model="scope.row.starttime" type="date" | 
|---|
|  |  |  | value-format="yyyy-MM-dd HH:mm:ss" placeholder="开始日期" @blur="getdays(scope.row)"> | 
|---|
|  |  |  | }" | 
|---|
|  |  |  | clearable | 
|---|
|  |  |  | size="small" | 
|---|
|  |  |  | style="width: 100%" | 
|---|
|  |  |  | v-model="scope.row.starttime" | 
|---|
|  |  |  | type="date" | 
|---|
|  |  |  | value-format="yyyy-MM-dd HH:mm:ss" | 
|---|
|  |  |  | placeholder="开始日期" | 
|---|
|  |  |  | @blur="getdays(scope.row)" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | </el-date-picker> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="endtime" slot="" label="结束日期" align="center" fixed width="150"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="endtime" | 
|---|
|  |  |  | slot="" | 
|---|
|  |  |  | label="结束日期" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | fixed | 
|---|
|  |  |  | width="150" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-date-picker :picker-options="{ | 
|---|
|  |  |  | disabledDate: time => { | 
|---|
|  |  |  | if (scope.row.starttime) { | 
|---|
|  |  |  | return ( | 
|---|
|  |  |  | time.getTime() < | 
|---|
|  |  |  | new Date(scope.row.starttime.replace(/-/g, '/')) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | <el-date-picker | 
|---|
|  |  |  | :picker-options="{ | 
|---|
|  |  |  | disabledDate: time => { | 
|---|
|  |  |  | if (scope.row.starttime) { | 
|---|
|  |  |  | return ( | 
|---|
|  |  |  | time.getTime() < | 
|---|
|  |  |  | new Date(scope.row.starttime.replace(/-/g, '/')) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }" clearable size="small" style="width: 100%" v-model="scope.row.endtime" type="date" | 
|---|
|  |  |  | value-format="yyyy-MM-dd HH:mm:ss" placeholder="结束日期" @blur="getdays(scope.row)"> | 
|---|
|  |  |  | }" | 
|---|
|  |  |  | clearable | 
|---|
|  |  |  | size="small" | 
|---|
|  |  |  | style="width: 100%" | 
|---|
|  |  |  | v-model="scope.row.endtime" | 
|---|
|  |  |  | type="date" | 
|---|
|  |  |  | value-format="yyyy-MM-dd HH:mm:ss" | 
|---|
|  |  |  | placeholder="结束日期" | 
|---|
|  |  |  | @blur="getdays(scope.row)" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | </el-date-picker> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="departure" slot="" label="出发地" align="center" width="100"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="departure" | 
|---|
|  |  |  | slot="" | 
|---|
|  |  |  | label="出发地" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | width="100" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-input v-model="scope.row.departure" placeholder="出发地" /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column label="到达地" prop="destination" align="center" width="140"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | label="到达地" | 
|---|
|  |  |  | prop="destination" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | width="140" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <!--  <el-input v-model="scope.row.destination" placeholder="到达地" @blur="getallowance(scope.row)" /> --> | 
|---|
|  |  |  | <el-select filterable allow-create v-model="scope.row.destination" value-key="value" placeholder="到达地" | 
|---|
|  |  |  | @change="getallowance(scope.row)"> | 
|---|
|  |  |  | <el-option v-for="dict in dict.type.sys_area_name" :key="dict.value" :label="dict.label" | 
|---|
|  |  |  | :value="dict.label"></el-option> | 
|---|
|  |  |  | <el-select | 
|---|
|  |  |  | filterable | 
|---|
|  |  |  | allow-create | 
|---|
|  |  |  | v-model="scope.row.destination" | 
|---|
|  |  |  | value-key="value" | 
|---|
|  |  |  | placeholder="到达地" | 
|---|
|  |  |  | @change="getallowance(scope.row)" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-option | 
|---|
|  |  |  | v-for="dict in dict.type.sys_area_name" | 
|---|
|  |  |  | :key="dict.value" | 
|---|
|  |  |  | :label="dict.label" | 
|---|
|  |  |  | :value="dict.label" | 
|---|
|  |  |  | ></el-option> | 
|---|
|  |  |  | </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" @blur="getallowance(scope.row)" placeholder="天数" /> | 
|---|
|  |  |  | <el-input | 
|---|
|  |  |  | v-model="scope.row.days" | 
|---|
|  |  |  | @blur="getallowance(scope.row)" | 
|---|
|  |  |  | placeholder="天数" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="traffictype" label="出发交通工具" align="center" width="100"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="traffictype" | 
|---|
|  |  |  | label="出发交通工具" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | width="100" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-select v-model="scope.row.traffictype" placeholder="出发交通工具"> | 
|---|
|  |  |  | <el-option v-for="dict in dict.type.sys_traffictype" :key="dict.value" :label="dict.label" | 
|---|
|  |  |  | :value="dict.label"></el-option> | 
|---|
|  |  |  | <el-select | 
|---|
|  |  |  | v-model="scope.row.traffictype" | 
|---|
|  |  |  | placeholder="出发交通工具" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-option | 
|---|
|  |  |  | v-for="dict in dict.type.sys_traffictype" | 
|---|
|  |  |  | :key="dict.value" | 
|---|
|  |  |  | :label="dict.label" | 
|---|
|  |  |  | :value="dict.label" | 
|---|
|  |  |  | ></el-option> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="traffictype2" label="返回交通工具" align="center" width="100"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="traffictype2" | 
|---|
|  |  |  | label="返回交通工具" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | width="100" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-select v-model="scope.row.traffictype2" placeholder="返回交通工具"> | 
|---|
|  |  |  | <el-option v-for="dict in dict.type.sys_traffictype" :key="dict.value" :label="dict.label" | 
|---|
|  |  |  | :value="dict.label"></el-option> | 
|---|
|  |  |  | <el-select | 
|---|
|  |  |  | v-model="scope.row.traffictype2" | 
|---|
|  |  |  | placeholder="返回交通工具" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-option | 
|---|
|  |  |  | v-for="dict in dict.type.sys_traffictype" | 
|---|
|  |  |  | :key="dict.value" | 
|---|
|  |  |  | :label="dict.label" | 
|---|
|  |  |  | :value="dict.label" | 
|---|
|  |  |  | ></el-option> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="trafficexpense" label="交通费" align="center" width="80"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="trafficexpense" | 
|---|
|  |  |  | label="交通费" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | width="120" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-input v-model="scope.row.trafficexpense" placeholder="交通费" @blur="val => { | 
|---|
|  |  |  | sumRowFee(scope.row); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | " /> | 
|---|
|  |  |  | <el-input | 
|---|
|  |  |  | v-model="scope.row.trafficexpense" | 
|---|
|  |  |  | placeholder="交通费" | 
|---|
|  |  |  | @blur=" | 
|---|
|  |  |  | val => { | 
|---|
|  |  |  | sumRowFee(scope.row); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | " | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <!-- | 
|---|
|  |  |  | <el-table-column prop="cityfee" label="市内交通费" align="center" width="100"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="cityfee" | 
|---|
|  |  |  | label="市内交通费" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | width="120" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-input v-model="scope.row.cityfee" placeholder="市内交通费" @blur=" | 
|---|
|  |  |  | (val) => { | 
|---|
|  |  |  | sumRowFee(scope.row); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ">{{ Number(scope.row.cityfee).toFixed(2) }} | 
|---|
|  |  |  | <el-input | 
|---|
|  |  |  | v-model="scope.row.cityfee" | 
|---|
|  |  |  | placeholder="市内交通费" | 
|---|
|  |  |  | @blur=" | 
|---|
|  |  |  | val => { | 
|---|
|  |  |  | sumRowFee(scope.row); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | " | 
|---|
|  |  |  | >{{ Number(scope.row.cityfee).toFixed(2) }} | 
|---|
|  |  |  | </el-input> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | --> | 
|---|
|  |  |  | <el-table-column prop="hotelexpense" label="住宿费" align="center" width="80"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="hotelexpense" | 
|---|
|  |  |  | label="住宿费" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | width="120" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-input v-model="scope.row.hotelexpense" placeholder="住宿费" @blur="val => { | 
|---|
|  |  |  | sumRowFee(scope.row); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | " /> | 
|---|
|  |  |  | <el-input | 
|---|
|  |  |  | v-model="scope.row.hotelexpense" | 
|---|
|  |  |  | placeholder="住宿费" | 
|---|
|  |  |  | @blur=" | 
|---|
|  |  |  | val => { | 
|---|
|  |  |  | sumRowFee(scope.row); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | " | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <el-table-column prop="foodexpenses" label="餐费报销" align="center" width="80"> | 
|---|
|  |  |  | <!-- <el-table-column | 
|---|
|  |  |  | prop="foodexpenses" | 
|---|
|  |  |  | label="餐费报销" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | width="120" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-input v-model="scope.row.foodexpenses" placeholder="伙食费报销" @blur="val => { | 
|---|
|  |  |  | sumRowFee(scope.row); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | " /> | 
|---|
|  |  |  | <el-input | 
|---|
|  |  |  | v-model="scope.row.foodexpenses" | 
|---|
|  |  |  | placeholder="伙食费报销" | 
|---|
|  |  |  | @blur=" | 
|---|
|  |  |  | val => { | 
|---|
|  |  |  | sumRowFee(scope.row); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | " | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> --> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="foodallowance" | 
|---|
|  |  |  | label="伙食补助" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | width="120" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-input | 
|---|
|  |  |  | v-model="scope.row.foodallowance" | 
|---|
|  |  |  | placeholder="伙食费补助" | 
|---|
|  |  |  | @blur=" | 
|---|
|  |  |  | val => { | 
|---|
|  |  |  | sumRowFee(scope.row); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | " | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="foodallowance" label="伙食补助" align="center" width="80"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="otherexpense" | 
|---|
|  |  |  | label="公杂费补助" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | width="120" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-input v-model="scope.row.foodallowance" placeholder="伙食费补助" @blur="val => { | 
|---|
|  |  |  | sumRowFee(scope.row); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | " /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="otherexpense" label="公杂费补助" align="center" width="80"> | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-input v-model="scope.row.otherexpense" placeholder="杂费" @blur="val => { | 
|---|
|  |  |  | sumRowFee(scope.row); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | " /> | 
|---|
|  |  |  | <el-input | 
|---|
|  |  |  | v-model="scope.row.otherexpense" | 
|---|
|  |  |  | placeholder="杂费" | 
|---|
|  |  |  | @blur=" | 
|---|
|  |  |  | val => { | 
|---|
|  |  |  | sumRowFee(scope.row); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | " | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <el-table-column prop="otherfeeamount" label="其他费用" align="center" width="90"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="otherfeeamount" | 
|---|
|  |  |  | label="其他费用" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | width="120" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-input v-model="scope.row.otherfeeamount" placeholder="其他费用" @blur="val => { | 
|---|
|  |  |  | sumRowFee(scope.row); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | " /> | 
|---|
|  |  |  | <el-input | 
|---|
|  |  |  | v-model="scope.row.otherfeeamount" | 
|---|
|  |  |  | placeholder="其他费用" | 
|---|
|  |  |  | @blur=" | 
|---|
|  |  |  | val => { | 
|---|
|  |  |  | sumRowFee(scope.row); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | " | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="departure" slot="" label="其他费用说明" align="center" width="120"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="departure" | 
|---|
|  |  |  | slot="" | 
|---|
|  |  |  | label="其他费用说明" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | width="120" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-input v-model="scope.row.otherfeedesc" placeholder="其他费用说明" /> | 
|---|
|  |  |  | <el-input | 
|---|
|  |  |  | v-model="scope.row.otherfeedesc" | 
|---|
|  |  |  | placeholder="其他费用说明" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <el-table-column prop="total" label="合计" align="center" width="110" fixed="right"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="total" | 
|---|
|  |  |  | label="合计" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | width="110" | 
|---|
|  |  |  | fixed="right" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-input v-model="scope.row.total" placeholder="合计" /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column fixed="right" label="操作" align="center" width="120"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | fixed="right" | 
|---|
|  |  |  | label="操作" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | width="120" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-button type="text" size="mini" @click="addDetailRow(scope.$index)" | 
|---|
|  |  |  | v-if="operationType == 'edit'">新增</el-button> | 
|---|
|  |  |  | <el-button @click.native.prevent=" | 
|---|
|  |  |  | deleteDetailRow(scope.$index, rbDetails, scope.row) | 
|---|
|  |  |  | " type="text" size="small" v-if="operationType == 'edit'">删除</el-button> | 
|---|
|  |  |  | <el-button @click.native.prevent=" | 
|---|
|  |  |  | Filepopup(scope.$index, rbDetails, scope.row) | 
|---|
|  |  |  | " type="text" size="small">票据</el-button> | 
|---|
|  |  |  | <el-button | 
|---|
|  |  |  | type="text" | 
|---|
|  |  |  | size="mini" | 
|---|
|  |  |  | @click="addDetailRow(scope.$index)" | 
|---|
|  |  |  | v-if="operationType == 'edit'" | 
|---|
|  |  |  | >新增</el-button | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-button | 
|---|
|  |  |  | @click.native.prevent=" | 
|---|
|  |  |  | deleteDetailRow(scope.$index, rbDetails, scope.row) | 
|---|
|  |  |  | " | 
|---|
|  |  |  | type="text" | 
|---|
|  |  |  | size="small" | 
|---|
|  |  |  | v-if="operationType == 'edit'" | 
|---|
|  |  |  | >删除</el-button | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-button | 
|---|
|  |  |  | @click.native.prevent=" | 
|---|
|  |  |  | Filepopup(scope.$index, rbDetails, scope.row) | 
|---|
|  |  |  | " | 
|---|
|  |  |  | type="text" | 
|---|
|  |  |  | size="small" | 
|---|
|  |  |  | >票据</el-button | 
|---|
|  |  |  | > | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | </el-table> | 
|---|
|  |  |  | 
|---|
|  |  |  | <el-col :span="20">打款明细</el-col> | 
|---|
|  |  |  | </el-row> | 
|---|
|  |  |  | <el-row style="margin-top: 5px"> | 
|---|
|  |  |  | <el-table :data="rbPayees" border highlight-current-row :summary-method="getSummaries" show-summary> | 
|---|
|  |  |  | <el-table-column prop="orderno" slot="" label="序号" align="center" fixed width="65"> | 
|---|
|  |  |  | <el-table | 
|---|
|  |  |  | :data="rbPayees" | 
|---|
|  |  |  | border | 
|---|
|  |  |  | max-height="400" | 
|---|
|  |  |  | highlight-current-row | 
|---|
|  |  |  | :summary-method="getSummaries" | 
|---|
|  |  |  | show-summary | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="orderno" | 
|---|
|  |  |  | slot="" | 
|---|
|  |  |  | label="序号" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | fixed | 
|---|
|  |  |  | width="65" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-input v-model="scope.row.orderno" placeholder="序号" /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <!--主键、外键不展示--> | 
|---|
|  |  |  | <el-table-column prop="id" slot="" label="主键" align="center" fixed width="95" v-if="false"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="id" | 
|---|
|  |  |  | slot="" | 
|---|
|  |  |  | label="主键" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | fixed | 
|---|
|  |  |  | width="95" | 
|---|
|  |  |  | v-if="false" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-input v-model="scope.row.id" placeholder="id" /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="rbid" slot="" label="外键" align="center" fixed width="95" v-if="false"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="rbid" | 
|---|
|  |  |  | slot="" | 
|---|
|  |  |  | label="外键" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | fixed | 
|---|
|  |  |  | width="95" | 
|---|
|  |  |  | v-if="false" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-input v-model="scope.row.rbid" placeholder="rbid" /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <el-table-column prop="persontype" slot="" label="人员类别" align="center" fixed width="130"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="persontype" | 
|---|
|  |  |  | slot="" | 
|---|
|  |  |  | label="收款人类别" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | fixed | 
|---|
|  |  |  | width="150" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-select v-model="scope.row.persontype" value-key="value" placeholder="人员类别" | 
|---|
|  |  |  | @change="getPersons(scope.row)"> | 
|---|
|  |  |  | <el-option v-for="dict in dict.type.sys_travelexpensebelong" :key="dict.value" :label="dict.label" | 
|---|
|  |  |  | :value="dict.label"></el-option> | 
|---|
|  |  |  | <el-select | 
|---|
|  |  |  | v-model="scope.row.persontype" | 
|---|
|  |  |  | value-key="value" | 
|---|
|  |  |  | placeholder="收款人类别" | 
|---|
|  |  |  | @change="getPersons(scope.row)" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-option | 
|---|
|  |  |  | v-for="dict in dict.type.sys_travelexpensebelong" | 
|---|
|  |  |  | :key="dict.value" | 
|---|
|  |  |  | :label="dict.label" | 
|---|
|  |  |  | :value="dict.label" | 
|---|
|  |  |  | ></el-option> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="personname" slot="" label="收款人" align="center" fixed width="110"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="personname" | 
|---|
|  |  |  | slot="" | 
|---|
|  |  |  | label="收款人" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | fixed | 
|---|
|  |  |  | width="200" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-select v-model="scope.row.personname" clearable filterable allow-create ref="getReportname" | 
|---|
|  |  |  | default-first-option placeholder="请选择" @change="getAccountinfo2(scope.row, scope.row.persontype)"> | 
|---|
|  |  |  | <el-option v-for="item in personsSel" :key="item.reportNo" :label="item.reportName" | 
|---|
|  |  |  | :value="item.reportName"> | 
|---|
|  |  |  | <el-select | 
|---|
|  |  |  | v-model="scope.row.personname" | 
|---|
|  |  |  | clearable | 
|---|
|  |  |  | filterable | 
|---|
|  |  |  | allow-create | 
|---|
|  |  |  | ref="getReportname" | 
|---|
|  |  |  | default-first-option | 
|---|
|  |  |  | placeholder="请选择" | 
|---|
|  |  |  | @change="getAccountinfo2(scope.row, scope.row.persontype)" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-option | 
|---|
|  |  |  | v-for="item in personsSel" | 
|---|
|  |  |  | :key="item.reportNo" | 
|---|
|  |  |  | :label="item.reportName" | 
|---|
|  |  |  | :value="item.reportName" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | </el-option> | 
|---|
|  |  |  | </el-select> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="bankname" slot="" label="银行名称" align="center" fixed width="200"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="bankname" | 
|---|
|  |  |  | slot="" | 
|---|
|  |  |  | label="收款银行" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | fixed | 
|---|
|  |  |  | 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="银行卡号" align="center" fixed width="200"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="bankcardno" | 
|---|
|  |  |  | slot="" | 
|---|
|  |  |  | label="银行账号" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | fixed | 
|---|
|  |  |  | width="200" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-input v-model="scope.row.bankcardno" placeholder="银行卡号" /> | 
|---|
|  |  |  | <el-input | 
|---|
|  |  |  | v-model="scope.row.bankcardno" | 
|---|
|  |  |  | placeholder="银行账号" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="amount" slot="" label="打款金额" align="center" fixed width="130"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="amount" | 
|---|
|  |  |  | slot="" | 
|---|
|  |  |  | label="打款金额" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | fixed | 
|---|
|  |  |  | width="130" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-input v-model="scope.row.amount" placeholder="打款金额" /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="remark" slot="" label="请款说明" align="center" fixed> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | prop="remark" | 
|---|
|  |  |  | slot="" | 
|---|
|  |  |  | label="请款说明" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | fixed | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-input v-model="scope.row.remark" placeholder="说明" /> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | 
|---|
|  |  |  | </el-date-picker> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column>--> | 
|---|
|  |  |  | <el-table-column label="操作" align="center" width="100" v-if="operationType == 'edit'"> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | label="操作" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | width="100" | 
|---|
|  |  |  | v-if="operationType == 'edit'" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <el-button type="text" size="mini" @click="addPayeeRow(scope.$index)">新增</el-button> | 
|---|
|  |  |  | <el-button @click.native.prevent=" | 
|---|
|  |  |  | deletePayeeRow(scope.$index, rbPayees, scope.row) | 
|---|
|  |  |  | " type="text" size="small"> | 
|---|
|  |  |  | <el-button | 
|---|
|  |  |  | type="text" | 
|---|
|  |  |  | size="mini" | 
|---|
|  |  |  | @click="addPayeeRow(scope.$index)" | 
|---|
|  |  |  | >新增</el-button | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-button | 
|---|
|  |  |  | @click.native.prevent=" | 
|---|
|  |  |  | deletePayeeRow(scope.$index, rbPayees, scope.row) | 
|---|
|  |  |  | " | 
|---|
|  |  |  | type="text" | 
|---|
|  |  |  | size="small" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | 删除 | 
|---|
|  |  |  | </el-button> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | </el-table> | 
|---|
|  |  |  | </el-row> | 
|---|
|  |  |  | <el-row style="margin-top: 25px; margin-bottom: 5px" v-if="operationType != 'edit'"> | 
|---|
|  |  |  | <el-row | 
|---|
|  |  |  | style="margin-top: 25px; margin-bottom: 5px" | 
|---|
|  |  |  | v-if="operationType != 'edit'" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-col :span="20">审核记录</el-col> | 
|---|
|  |  |  | </el-row> | 
|---|
|  |  |  | <el-row v-if="operationType != 'edit'"> | 
|---|
|  |  |  | <el-row v-if="operationType != 'add'"> | 
|---|
|  |  |  | <el-table :data="fundflowList" border> | 
|---|
|  |  |  | <el-table-column label="审核人" align="center" width="150" prop="checkusername" /> | 
|---|
|  |  |  | <el-table-column label="审核日期" align="center" width="200" prop="createTime" /> | 
|---|
|  |  |  | <el-table-column label="审核结果" align="center" width="200" prop="flowconclusion"><template | 
|---|
|  |  |  | slot-scope="scope"><span v-if="scope.row.flowconclusion == 1">通过</span><span | 
|---|
|  |  |  | v-if="scope.row.flowconclusion == 2">不通过</span></template> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | label="审核日期" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | width="200" | 
|---|
|  |  |  | prop="createTime" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | label="审核人" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | width="150" | 
|---|
|  |  |  | prop="checkusername" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | label="审核结果" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | width="200" | 
|---|
|  |  |  | prop="flowconclusion" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <span v-if="scope.row.flowconclusion == 1">通过</span> | 
|---|
|  |  |  | <span v-if="scope.row.flowconclusion == 2">不通过</span> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column label="审核备注" align="center" prop="flowcontent" /> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | label="审核备注" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | prop="flowcontent" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </el-table> | 
|---|
|  |  |  | </el-row> | 
|---|
|  |  |  | <el-row style="margin-top: 25px; margin-bottom: 5px" v-if="operationType == 'check'"> | 
|---|
|  |  |  | <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-form-item label="审核结果" align="left"> | 
|---|
|  |  |  | <el-radio-group v-model="checkObj.flowlevelone" align="left"> | 
|---|
|  |  |  | 
|---|
|  |  |  | </el-row> | 
|---|
|  |  |  | </el-form> | 
|---|
|  |  |  | <div slot="footer" class="dialog-footer"> | 
|---|
|  |  |  | <el-button type="primary" @click="submitForm" v-if="operationType == 'edit'">保 存</el-button> | 
|---|
|  |  |  | <el-button type="primary" @click="checksubmit" v-if="operationType == 'check'">提 交</el-button> | 
|---|
|  |  |  | <el-button | 
|---|
|  |  |  | type="primary" | 
|---|
|  |  |  | @click="submitForm" | 
|---|
|  |  |  | v-if="operationType == 'edit' || userprofile.nickName == '陈慕华'" | 
|---|
|  |  |  | >保 存</el-button | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-button | 
|---|
|  |  |  | type="primary" | 
|---|
|  |  |  | @click="checksubmit" | 
|---|
|  |  |  | v-if="operationType == 'check'" | 
|---|
|  |  |  | >提交审核</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> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <div v-if="this.previewpdf" class="pdfimgmin"> | 
|---|
|  |  |  | <img :src="pdfimg" /> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div v-else class="pdfimgmins">{{ hintitle }}</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> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <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" --> | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-image | 
|---|
|  |  |  | ref="imagePreview" | 
|---|
|  |  |  | style="width: 95%; height: 90%" | 
|---|
|  |  |  | :src="pdfimg" | 
|---|
|  |  |  | :preview-src-list="pdfimgsrcList" | 
|---|
|  |  |  | :initial-index="initialIndex" | 
|---|
|  |  |  | @error="handleImageError" | 
|---|
|  |  |  | @load="handleImageLoad" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | </el-image> | 
|---|
|  |  |  | <!-- <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-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 | 
|---|
|  |  |  | :title=" | 
|---|
|  |  |  | '您已添加' + | 
|---|
|  |  |  | totalquantity + | 
|---|
|  |  |  | '条数据,为防止数据丢失是否提交保存再继续添加。' | 
|---|
|  |  |  | " | 
|---|
|  |  |  | type="warning" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | </el-alert> | 
|---|
|  |  |  | <span slot="footer" class="dialog-footer"> | 
|---|
|  |  |  | <el-button @click="unsave">取 消</el-button> | 
|---|
|  |  |  | <el-button type="primary" @click="Savenow">确 定</el-button> | 
|---|
|  |  |  | </span> | 
|---|
|  |  |  | </el-dialog> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | 
|---|
|  |  |  | 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, //提醒数量 | 
|---|
|  |  |  | totalquantity: 0, //总数量 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | hintitle: "选中左侧已上传文件预览查看", | 
|---|
|  |  |  | atpresent: "", | 
|---|
|  |  |  | 
|---|
|  |  |  | loading: true, | 
|---|
|  |  |  | // 导出遮罩层 | 
|---|
|  |  |  | exportLoading: false, | 
|---|
|  |  |  | // 网络请求头 | 
|---|
|  |  |  | Networkheader: null, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 当前单据ID | 
|---|
|  |  |  | curId: 0, | 
|---|
|  |  |  | // 选中数组 | 
|---|
|  |  |  | ids: [], | 
|---|
|  |  |  | // 非单个禁用 | 
|---|
|  |  |  | 
|---|
|  |  |  | 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" } | 
|---|
|  |  |  | ], | 
|---|
|  |  |  | deptmentname: [ | 
|---|
|  |  |  | { required: true, message: "请输入所属业务组", trigger: "blur" } | 
|---|
|  |  |  | ], | 
|---|
|  |  |  | costtype: [ | 
|---|
|  |  |  | { required: true, message: "请输入报销类别", trigger: "blur" } | 
|---|
|  |  |  | ] | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | //费用申请单form | 
|---|
|  |  |  | 
|---|
|  |  |  | rbDetails: [], | 
|---|
|  |  |  | rbPayees: [], | 
|---|
|  |  |  | arrr2: [], | 
|---|
|  |  |  | baselisttages: [ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | id: 1, | 
|---|
|  |  |  | name: "待申请材料" | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | id: 2, | 
|---|
|  |  |  | name: "审核通过等待邮寄纸质材料" | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | id: 3, | 
|---|
|  |  |  | name: "已收到报销材料" | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ], | 
|---|
|  |  |  | baselist: [], | 
|---|
|  |  |  | donatorList: [], | 
|---|
|  |  |  | standardlevel: 0, | 
|---|
|  |  |  | 
|---|
|  |  |  | //文件列表 | 
|---|
|  |  |  | fileList: [], | 
|---|
|  |  |  | fileListto: [], | 
|---|
|  |  |  | invoicefileList: [], | 
|---|
|  |  |  | invoicefileListto: [], | 
|---|
|  |  |  | invoicepdfimg: "", | 
|---|
|  |  |  | invoicepdfimgsrcList: [], | 
|---|
|  |  |  | initialIndex: 0, // 初始索引 | 
|---|
|  |  |  | //人员类别 | 
|---|
|  |  |  | persontype: null, | 
|---|
|  |  |  | //到达地 | 
|---|
|  |  |  | arriveAddr: null, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | headers: { | 
|---|
|  |  |  | Authorization: "Bearer " + getToken() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | 
|---|
|  |  |  | flowconclusion: null, | 
|---|
|  |  |  | fundid: null | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | jurisdiction: false, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //保存按钮控制 | 
|---|
|  |  |  | idisabled: false | 
|---|
|  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | created() { | 
|---|
|  |  |  | this.Getnetworkheader(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //获取记录列表 | 
|---|
|  |  |  | // this.getList(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //获取登录者信息 | 
|---|
|  |  |  | 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)); | 
|---|
|  |  |  | this.$nextTick(() => { | 
|---|
|  |  |  | const viewer = this.$refs.imagePreview.$el.querySelector( | 
|---|
|  |  |  | ".el-image-viewer" | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | if (viewer) { | 
|---|
|  |  |  | viewer.addEventListener("click", this.handlePreviewClick); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | //选择业务类型:1、新增;2、修改;3、查看 | 
|---|
|  |  |  | let ids = this.$route.query.id; | 
|---|
|  |  |  | let curId = this.$route.query.id; | 
|---|
|  |  |  | let pos = this.$route.query.pos; | 
|---|
|  |  |  | this.defaultperson = this.$route.query.routerparam; | 
|---|
|  |  |  | if (pos == 1) { | 
|---|
|  |  |  | this.handleAdd(ids); | 
|---|
|  |  |  | this.handleAdd(curId); | 
|---|
|  |  |  | } else if (pos == 2) { | 
|---|
|  |  |  | this.handleUpdate(ids); | 
|---|
|  |  |  | this.handleUpdate(curId); | 
|---|
|  |  |  | } else if (pos == 3) { | 
|---|
|  |  |  | this.handleDetail(ids); | 
|---|
|  |  |  | this.handleDetail(curId); | 
|---|
|  |  |  | } else if (pos == 4) { | 
|---|
|  |  |  | this.handleCheck(ids); | 
|---|
|  |  |  | this.handleCheck(curId); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | updated() { | 
|---|
|  |  |  | this.$nextTick(() => { | 
|---|
|  |  |  | this.$refs["table"].doLayout(); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | destroyed() { | 
|---|
|  |  |  | window.removeEventListener("beforeunload", e => this.beforeunloadFn(e)); | 
|---|
|  |  |  | }, //生命周期 - 销毁完成 | 
|---|
|  |  |  | beforeDestroy() { | 
|---|
|  |  |  | // 移除事件监听 | 
|---|
|  |  |  | const viewer = this.$refs.imagePreview.$el.querySelector( | 
|---|
|  |  |  | ".el-image-viewer" | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | if (viewer) { | 
|---|
|  |  |  | viewer.removeEventListener("click", this.handlePreviewClick); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | methods: { | 
|---|
|  |  |  | handleUploadError() { }, | 
|---|
|  |  |  | // 浏览器页面关闭或刷新提示 | 
|---|
|  |  |  | 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 "关闭提示"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | handlePreviewClick(e) { | 
|---|
|  |  |  | const viewer = this.$refs.imagePreview.$el.querySelector( | 
|---|
|  |  |  | ".el-image-viewer" | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | if (!viewer) return; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 判断是否点击了“下一张”按钮(右侧箭头) | 
|---|
|  |  |  | const isNextBtn = e.target.closest(".el-image-viewer__next"); | 
|---|
|  |  |  | if (isNextBtn) { | 
|---|
|  |  |  | const currentIndex = this.getCurrentPreviewIndex(); | 
|---|
|  |  |  | if (currentIndex === this.pdfimgsrcList.length - 1) { | 
|---|
|  |  |  | e.preventDefault(); // 阻止默认切换行为 | 
|---|
|  |  |  | this.$message.warning("已经是最后一张了!"); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 获取当前预览的图片索引 | 
|---|
|  |  |  | getCurrentPreviewIndex() { | 
|---|
|  |  |  | const viewer = this.$refs.imagePreview.$el.querySelector( | 
|---|
|  |  |  | ".el-image-viewer" | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | if (viewer) { | 
|---|
|  |  |  | const img = viewer.querySelector(".el-image-viewer__img"); | 
|---|
|  |  |  | if (img) { | 
|---|
|  |  |  | const currentSrc = img.getAttribute("src"); | 
|---|
|  |  |  | return this.pdfimgsrcList.indexOf(currentSrc); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return 0; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | handleImageError() { | 
|---|
|  |  |  | console.error("图片加载失败"); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | handleImageLoad() { | 
|---|
|  |  |  | console.log("图片加载成功"); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | handleUploadError() {}, | 
|---|
|  |  |  | // 获取请求头 | 
|---|
|  |  |  | Getnetworkheader() { | 
|---|
|  |  |  | console.log(window.location.href); | 
|---|
|  |  |  | let string = window.location.href; | 
|---|
|  |  |  | if (string.includes("9091")) { | 
|---|
|  |  |  | const index = string.indexOf("9091"); | 
|---|
|  |  |  | this.Networkheader = string.slice(0, index + 4); // 截取9091及其前部字符 | 
|---|
|  |  |  | console.log(this.Networkheader); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | const index = string.indexOf("8032"); | 
|---|
|  |  |  | this.Networkheader = string.slice(0, index + 4); // 截取8032及其前部字符 | 
|---|
|  |  |  | 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.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; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (this.rbDetails[index].annexfilesList) { | 
|---|
|  |  |  | this.fileListto = this.rbDetails[index].annexfilesList; | 
|---|
|  |  |  | 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 = item.url; | 
|---|
|  |  |  | 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 = 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插入到索引位置的前一位 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | treeselect().then(response => { | 
|---|
|  |  |  | this.deptOptions = response.data; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | cellCilicksa(row) { | 
|---|
|  |  |  | console.log(row); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //获取人员列表 | 
|---|
|  |  |  | 
|---|
|  |  |  | row.days = ( | 
|---|
|  |  |  | Math.floor( | 
|---|
|  |  |  | Math.abs(Date.parse(row.starttime) - Date.parse(row.endtime)) / | 
|---|
|  |  |  | (1000 * 3600 * 24) | 
|---|
|  |  |  | (1000 * 3600 * 24) | 
|---|
|  |  |  | ) + 1 | 
|---|
|  |  |  | ).toString(); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //伙食费补助:城市(西藏,新疆,青海.120)(其他100) | 
|---|
|  |  |  | row.foodallowance = (parseInt(row.days) * 100).toString(); | 
|---|
|  |  |  | if (tempStr == "杭州") { | 
|---|
|  |  |  | row.foodallowance = ""; | 
|---|
|  |  |  | } else if ( | 
|---|
|  |  |  | tempStr == "西藏" || | 
|---|
|  |  |  | tempStr == "新疆" || | 
|---|
|  |  |  | tempStr == "青海" | 
|---|
|  |  |  | ) { | 
|---|
|  |  |  | row.foodallowance = (parseInt(row.days) * 120).toString(); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | row.foodallowance = (parseInt(row.days) * 100).toString(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //计算合计 | 
|---|
|  |  |  | this.sumRowFee(row); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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(); | 
|---|
|  |  |  | // }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** 查询报销申请列表 */ | 
|---|
|  |  |  | 
|---|
|  |  |  | this.loading = true; | 
|---|
|  |  |  | listReimbursement(this.queryParams).then(response => { | 
|---|
|  |  |  | this.reimbursementList = response.rows; | 
|---|
|  |  |  | console.log(this.reimbursementList); | 
|---|
|  |  |  | this.total = response.total; | 
|---|
|  |  |  | this.loading = false; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** 修改按钮操作 */ | 
|---|
|  |  |  | handleUpdate(ids) { | 
|---|
|  |  |  | handleUpdate(curId) { | 
|---|
|  |  |  | // this.$router.push({ | 
|---|
|  |  |  | //   path: "/finance/travelexpenseslist/Modifydetails/", | 
|---|
|  |  |  | //   query: { id: ids } | 
|---|
|  |  |  | 
|---|
|  |  |  | this.title = "报销申请修改"; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //获取报销主信息 | 
|---|
|  |  |  | const id = ids || this.ids; | 
|---|
|  |  |  | getReimbursement(id).then(response => { | 
|---|
|  |  |  | getReimbursement(curId).then(response => { | 
|---|
|  |  |  | this.form = response.data; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.fileListto = this.form.annexfiles | 
|---|
|  |  |  | ? this.form.annexfiles | 
|---|
|  |  |  | .split(",") | 
|---|
|  |  |  | .map(item => ({ url: item, name: item })) | 
|---|
|  |  |  | .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)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | let ids = response.data.id; | 
|---|
|  |  |  | //获取报销明细信息 | 
|---|
|  |  |  | getReimbursementdetaillist(ids).then(res => { | 
|---|
|  |  |  | getReimbursementdetaillist(curId).then(res => { | 
|---|
|  |  |  | this.rbDetails = res.data; | 
|---|
|  |  |  | console.log(this.rbDetails); | 
|---|
|  |  |  | 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.queryParamsPayee.rbid = ids; | 
|---|
|  |  |  | this.queryParamsPayee.rbid = curId; | 
|---|
|  |  |  | listReimbursementpayee(this.queryParamsPayee).then(res => { | 
|---|
|  |  |  | this.rbPayees = res.rows; | 
|---|
|  |  |  | if (this.rbPayees.length == 0) { | 
|---|
|  |  |  | this.addPayeeRow(0); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //审核状态 | 
|---|
|  |  |  | this.form.recordstatus = response.data.recordstatus + ""; | 
|---|
|  |  |  | let listFundflowparams = { | 
|---|
|  |  |  | fundid: curId, | 
|---|
|  |  |  | fundtype: 1 | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | listFundflow(listFundflowparams).then(res => { | 
|---|
|  |  |  | this.fundflowList = res.rows; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | //票据 | 
|---|
|  |  |  | this.fileListto = this.form.annexfiles | 
|---|
|  |  |  | ? this.form.annexfiles | 
|---|
|  |  |  | .split(",") | 
|---|
|  |  |  | .map(item => ({ url: item, name: item })) | 
|---|
|  |  |  | .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 })) | 
|---|
|  |  |  | .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.getList(); | 
|---|
|  |  |  | this.$modal.msgSuccess("提交审核成功!"); | 
|---|
|  |  |  | 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: | 
|---|
|  |  |  | "报销请款表中合计金额不等于报销单的报销金额,请更正后再保存!", | 
|---|
|  |  |  | type: "warning" | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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) { | 
|---|
|  |  |  | updateReimbursement(this.form); | 
|---|
|  |  |  | //   .then(res => { | 
|---|
|  |  |  | //保存明细 | 
|---|
|  |  |  | for (let i = 0; i < rbDetails.length; i++) { | 
|---|
|  |  |  | if (rbDetails[i].rbid != null) { | 
|---|
|  |  |  | if (rbDetails[i].persontype == "家属") { | 
|---|
|  |  |  | if (this.form.infoid) { | 
|---|
|  |  |  | updateReimbursementdetail(rbDetails[i]); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | return this.$message.error( | 
|---|
|  |  |  | `因家属分配要求,请选择捐献者信息` | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | updateReimbursementdetail(rbDetails[i]); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | 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]); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //保存账户 | 
|---|
|  |  |  | for (let i = 0; i < rbPayees.length; i++) { | 
|---|
|  |  |  | if (rbPayees[i].rbid != null) { | 
|---|
|  |  |  | updateReimbursementpayee(rbPayees[i]); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | //rbid关联主表Id | 
|---|
|  |  |  | rbPayees[i].rbid = this.form.id; | 
|---|
|  |  |  | addReimbursementpayee(rbPayees[i]); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (this.userprofile.nickName != "陈慕华") { | 
|---|
|  |  |  | this.$modal.msgSuccess("修改报销单保存成功!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.open = false; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 关闭窗口 | 
|---|
|  |  |  | this.$store.dispatch("tagsView/delView", this.$route); | 
|---|
|  |  |  | this.$router.go(-1); | 
|---|
|  |  |  | } 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 => { | 
|---|
|  |  |  | //保存明细 | 
|---|
|  |  |  | for (let i = 0; i < rbDetails.length; i++) { | 
|---|
|  |  |  | //rbid关联主表Id | 
|---|
|  |  |  | rbDetails[i].rbid = response.data; | 
|---|
|  |  |  | addReimbursementdetail(rbDetails[i]); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //保存账号 | 
|---|
|  |  |  | for (let i = 0; i < rbPayees.length; i++) { | 
|---|
|  |  |  | //rbid关联主表Id | 
|---|
|  |  |  | 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.$store.dispatch("tagsView/delView", this.$route); | 
|---|
|  |  |  | this.$router.go(-1); | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .catch(err => { | 
|---|
|  |  |  | this.$modal.msgError("新增报销单保存失败!" + res); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, 500), | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** 删除按钮操作 */ | 
|---|
|  |  |  | handleDelete(row) { | 
|---|
|  |  |  | const ids = row.id || this.ids; | 
|---|
|  |  |  | this.$modal | 
|---|
|  |  |  | .confirm("是否确认删除该条记录?") | 
|---|
|  |  |  | .then(function() { | 
|---|
|  |  |  | // 删除details内的数据 | 
|---|
|  |  |  | return delReimbursement(ids); | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .then(() => { | 
|---|
|  |  |  | delReimbursementdetail(ids); | 
|---|
|  |  |  | this.getList(); | 
|---|
|  |  |  | this.$modal.msgSuccess("删除成功"); | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .catch(() => {}); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** 导出按钮操作 */ | 
|---|
|  |  |  | handleExport() { | 
|---|
|  |  |  | const queryParams = this.queryParams; | 
|---|
|  |  |  | this.$modal | 
|---|
|  |  |  | .confirm("是否确认导出所有报销申请数据项?") | 
|---|
|  |  |  | .then(() => { | 
|---|
|  |  |  | this.exportLoading = true; | 
|---|
|  |  |  | return exportReimbursement(queryParams); | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .then(response => { | 
|---|
|  |  |  | this.$download.name(response.msg); | 
|---|
|  |  |  | this.exportLoading = false; | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .catch(() => {}); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 取消提醒 | 
|---|
|  |  |  | unsave() { | 
|---|
|  |  |  | this.Savereminder = false; | 
|---|
|  |  |  | this.Reminderquantity = 0; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 接受提醒立刻保存 | 
|---|
|  |  |  | Savenow() { | 
|---|
|  |  |  | 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) { | 
|---|
|  |  |  | //票据文件处理 | 
|---|
|  |  |  | //校验请款金额合计是否等于报销单金额 | 
|---|
|  |  |  | if (this.form.amountrequested != addnumber) { | 
|---|
|  |  |  | this.$message({ | 
|---|
|  |  |  | message: | 
|---|
|  |  |  | "报销请款表中合计金额不等于报销单的报销金额,请更正后再保存!", | 
|---|
|  |  |  | 
|---|
|  |  |  | const rbDetails = [...this.rbDetails]; | 
|---|
|  |  |  | const rbPayees = [...this.rbPayees]; | 
|---|
|  |  |  | if (this.form.id != null) { | 
|---|
|  |  |  | console.log(this.form); | 
|---|
|  |  |  | updateReimbursement(this.form); | 
|---|
|  |  |  | //   .then(res => { | 
|---|
|  |  |  | //保存明细 | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.$modal.msgSuccess("修改报销单保存成功!"); | 
|---|
|  |  |  | this.open = false; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 关闭窗口 | 
|---|
|  |  |  | this.$router.go(-1); | 
|---|
|  |  |  | // this.getList(); | 
|---|
|  |  |  | // }) | 
|---|
|  |  |  | // .catch(err => { | 
|---|
|  |  |  | //   this.$modal.msgError("修改报销单保存失败!"); | 
|---|
|  |  |  | // }); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | this.form.recordstatus = -1; | 
|---|
|  |  |  | addReimbursement(this.form) | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.$modal.msgSuccess("新增报销单保存成功!"); | 
|---|
|  |  |  | this.open = false; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 关闭窗口 | 
|---|
|  |  |  | this.$router.go(-1); | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .catch(err => { | 
|---|
|  |  |  | this.$modal.msgError("新增报销单保存失败!"); | 
|---|
|  |  |  | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** 删除按钮操作 */ | 
|---|
|  |  |  | handleDelete(row) { | 
|---|
|  |  |  | const ids = row.id || this.ids; | 
|---|
|  |  |  | this.$modal | 
|---|
|  |  |  | .confirm("是否确认删除该条记录?") | 
|---|
|  |  |  | .then(function () { | 
|---|
|  |  |  | // 删除details内的数据 | 
|---|
|  |  |  | return delReimbursement(ids); | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .then(() => { | 
|---|
|  |  |  | delReimbursementdetail(ids); | 
|---|
|  |  |  | this.getList(); | 
|---|
|  |  |  | this.$modal.msgSuccess("删除成功"); | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .catch(() => { }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** 导出按钮操作 */ | 
|---|
|  |  |  | handleExport() { | 
|---|
|  |  |  | const queryParams = this.queryParams; | 
|---|
|  |  |  | this.$modal | 
|---|
|  |  |  | .confirm("是否确认导出所有报销申请数据项?") | 
|---|
|  |  |  | .then(() => { | 
|---|
|  |  |  | this.exportLoading = true; | 
|---|
|  |  |  | return exportReimbursement(queryParams); | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .then(response => { | 
|---|
|  |  |  | this.$download.name(response.msg); | 
|---|
|  |  |  | this.exportLoading = false; | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .catch(() => { }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //新增一行 | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | // } | 
|---|
|  |  |  | if (rowIndex == undefined || rowIndex == null || rowIndex < 0) { | 
|---|
|  |  |  | this.rbDetails.push(rowData); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | this.rbDetails.splice(rowIndex + 1, 0, rowData); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.Reminderquantity++; | 
|---|
|  |  |  | this.totalquantity++; | 
|---|
|  |  |  | for (let i = 0; i < this.rbDetails.length; i++) { | 
|---|
|  |  |  | this.rbDetails[i].orderno = i + 1; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | personname: null, | 
|---|
|  |  |  | amount: null | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | // if (this.Reminderquantity >= 5) { | 
|---|
|  |  |  | //   this.Savereminder = true; | 
|---|
|  |  |  | //   return; | 
|---|
|  |  |  | // } | 
|---|
|  |  |  | if (rowIndex == undefined || rowIndex == null || rowIndex <= 0) { | 
|---|
|  |  |  | this.rbPayees.push(rowData); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | this.rbPayees.splice(rowIndex + 1, 0, rowData); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.Reminderquantity++; | 
|---|
|  |  |  | this.totalquantity++; | 
|---|
|  |  |  | for (let i = 0; i < this.rbPayees.length; i++) { | 
|---|
|  |  |  | this.rbPayees[i].orderno = i + 1; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | .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))) { | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.form.amountrequested = allSum.toFixed(2); | 
|---|
|  |  |  | this.form.bigstrmoney = this.convertCurrency(this.form.amountrequested); | 
|---|
|  |  |  | } catch { } | 
|---|
|  |  |  | } catch {} | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //金额数字转换成大写 | 
|---|
|  |  |  | 
|---|
|  |  |  | "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> | 
|---|