| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="80px"> |
| | | <el-row> |
| | | <el-col :span="5"> |
| | | <el-form-item label="捐献案例" prop="name"> |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="5"> |
| | | <el-form-item align="left" label="业务组" prop="deptnos"> |
| | | <el-select v-model="queryParams.deptnos" placeholder="请选择案例状态"> |
| | | <el-option v-for="item in deptList" :label="item.deptName" :value="item.deptId"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> <el-col :span="5"> |
| | | <el-form-item label="报销类别" prop="costtype"> |
| | | <el-input v-model="queryParams.costtype" placeholder="请选择报销类别" clearable size="small" v-if="0" |
| | | @keyup.enter.native="handleQuery" /> |
| | | <el-select v-model="queryParams.costtype" placeholder="请选择报销类别" clearable size="small"> |
| | | <el-option v-for="dict in dict.type.sys_travelexpensebelong" :key="dict.value" :label="dict.label" |
| | | :value="dict.label" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="5"> |
| | | <el-form-item label="经办人" prop="username"> |
| | | <el-input v-model="queryParams.username" placeholder="请输入报销人" clearable size="small" |
| | | @keyup.enter.native="handleQuery" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="5"> |
| | | <el-form-item label="报销金额" prop="money" style="float: left"> |
| | | <el-input v-model="queryParams.money" placeholder="请输入申请人金额" clearable size="small" |
| | | @keyup.enter.native="handleQuery" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="8"> |
| | | <el-form-item label="申请日期" prop="applyTime"> |
| | | <el-date-picker format="yyyy-MM-dd" value-format="yyyy-MM-dd" v-model="value1" type="daterange" @blur="onpick" |
| | | range-separator="至" start-placeholder="报销申请开始日期" end-placeholder="报销申请结束日期" |
| | | <el-date-picker format="yyyy-MM-dd" value-format="yyyy-MM-dd" v-model="value1" type="daterange" |
| | | @blur="onpick" range-separator="至" start-placeholder="报销申请开始日期" end-placeholder="报销申请结束日期" |
| | | @keyup.enter.native="handleQuery"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | |
| | | <template slot-scope="scope"> |
| | | <dict-tag :options="dict.type.sys_travelexpensebelong" :value="scope.row.costtype" /> |
| | | </template> |
| | | </el-table-column>--> |
| | | <el-table-column label="报销单号" width="120" align="center" prop="bh" /> |
| | | </el-table-column>--> |
| | | <el-table-column label="报销单号" width="150" align="center" prop="bh" /> |
| | | <el-table-column label="申请日期" width="120" align="center" prop="applyTime"> |
| | | <template slot-scope="scope"> |
| | | <span>{{ parseTime(scope.row.applyTime, "{y}-{m}-{d}") }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="报销金额" width="120" align="center" prop="amountrequested" /> |
| | | <el-table-column label="经办人" width="120" align="center" prop="username" /> |
| | | <el-table-column label="申请材料状态" width="140" align="center" prop="checkstatus"> |
| | | <el-table-column label="经办人" width="100" align="center" prop="username" /> |
| | | <el-table-column label="材料预审状态" width="140" align="center" prop="checkstatus"> |
| | | <template slot-scope="scope"> |
| | | <dict-tag :options="dict.type.sys_stage_type" :value="scope.row.checkstatus" /> |
| | | </template> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="出差事由" align="center" prop="reason" /> |
| | | <el-table-column label="所属组别" width="120" align="center" prop="deptmentname" /> |
| | | <el-table-column label="组长" width="120" align="center" prop="managername" /> |
| | | <el-table-column label="捐献者" width="120" align="center" prop="donorname" /> |
| | | <!-- |
| | | <el-table-column label="所属组别" width="140" align="center" prop="deptmentname" /> |
| | | <el-table-column label="组长" width="100" align="center" prop="managername" /> |
| | | <el-table-column label="捐献者" width="100" align="center" prop="donorname" /> |
| | | <!-- |
| | | <el-table-column label="出差人" width="180" align="center" prop="travelers"> |
| | | </el-table-column> |
| | | <el-table-column label="联系电话" width="120" align="center" prop="phone"> |
| | |
| | | </el-table-column> |
| | | <el-table-column label="银行卡号" width="180" align="center" prop="bankcardno"> |
| | | </el-table-column> |
| | | |
| | | <el-table-column label="组长审批" align="center" prop="managername"/> |
| | | <el-table-column label="业务核对" align="center" prop="opochecher"/> |
| | | <el-table-column label="业务审批" align="center" prop="officedirector"/> |
| | | |
| | | <el-table-column label="组长审批" align="center" prop="managername"/> |
| | | <el-table-column label="业务核对" align="center" prop="opochecher"/> |
| | | <el-table-column label="业务审批" align="center" prop="officedirector"/> |
| | | <el-table-column label="财务核对" align="center" prop="financechecher"/> |
| | | <el-table-column label="财务审核" width="120" align="center" prop="financedirector"/> |
| | | --> |
| | | <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width" width="270"> |
| | | <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width" width="200"> |
| | | <template slot-scope="scope"> |
| | | <el-button size="mini" type="text" icon="el-icon-edit" v-if="scope.row.checkFlag == 1" |
| | | @click="handleUpdate(scope.row)">审批</el-button> |
| | |
| | | <el-row> |
| | | <el-col :span="5"> |
| | | <el-form-item label="申请日期" prop="applyTime"> |
| | | <el-date-picker style="width: 100%" v-model="form.applyTime" :disabled="true" type="date" |
| | | value-format="yyyy-MM-dd HH:mm:ss" placeholder="申请日期"> |
| | | <el-date-picker style="width: 100%" v-model="form.applyTime" :disabled="true" type="date" format="yyyy-MM-dd" |
| | | value-format="yyyy-MM-dd" placeholder="申请日期"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <el-form-item label="联系电话" prop="phone"> |
| | | <el-input v-model="form.phone" placeholder="联系电话" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-col> |
| | | </el-row> |
| | | --> |
| | | <el-row> |
| | |
| | | <el-col :span="10"> |
| | | <el-form-item label="大写金额" prop="bigstrmoney"> |
| | | <el-input v-model="form.bigstrmoney" placeholder="大写金额" :disabled="true" /> |
| | | </el-form-item> </el-col><!-- |
| | | </el-form-item> </el-col><!-- |
| | | <el-col :span="6"> |
| | | <el-form-item label="领款金额" prop="amountrequested"> |
| | | <el-input v-model="form.amountrequested" placeholder="领款金额" /> |
| | |
| | | ); |
| | | } |
| | | } |
| | | }" clearable size="small" style="width: 100%" v-model="scope.row.starttime" type="date" |
| | | value-format="yyyy-MM-dd HH:mm:ss" placeholder="开始日期" @blur="getallowance(scope.row)"> |
| | | }" clearable size="small" style="width: 100%" v-model="scope.row.starttime" type="date" format="yyyy-MM-dd" |
| | | value-format="yyyy-MM-dd" placeholder="开始日期" @blur="getallowance(scope.row)"> |
| | | </el-date-picker> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | ); |
| | | } |
| | | } |
| | | }" clearable size="small" style="width: 100%" v-model="scope.row.endtime" type="date" |
| | | value-format="yyyy-MM-dd HH:mm:ss" placeholder="结束日期" @blur="getallowance(scope.row)"> |
| | | }" clearable size="small" style="width: 100%" v-model="scope.row.endtime" type="date" format="yyyy-MM-dd" |
| | | value-format="yyyy-MM-dd" placeholder="结束日期" @blur="getallowance(scope.row)"> |
| | | </el-date-picker> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | </el-table-column> |
| | | <el-table-column prop="trafficexpense" label="交通费" align="center" width="80"> |
| | | <template slot-scope="scope"> |
| | | <el-input v-model="scope.row.trafficexpense" placeholder="交通费" @blur="val => { |
| | | sumTotalFee(); |
| | | } |
| | | " /> |
| | | <el-input v-model="scope.row.trafficexpense" placeholder="交通费" @blur=" |
| | | val => { |
| | | sumTotalFee(); |
| | | } |
| | | " /> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- |
| | |
| | | --> |
| | | <el-table-column prop="hotelexpense" label="住宿费" align="center" width="80"> |
| | | <template slot-scope="scope"> |
| | | <el-input v-model="scope.row.hotelexpense" placeholder="住宿费" @blur="val => { |
| | | sumTotalFee(); |
| | | } |
| | | " /> |
| | | <el-input v-model="scope.row.hotelexpense" placeholder="住宿费" @blur=" |
| | | val => { |
| | | sumTotalFee(); |
| | | } |
| | | " /> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column prop="foodexpenses" label="餐费报销" align="center" width="80"> |
| | | <template slot-scope="scope"> |
| | | <el-input v-model="scope.row.foodexpenses" placeholder="伙食费报销" @blur="val => { |
| | | sumTotalFee(); |
| | | } |
| | | " /> |
| | | <el-input v-model="scope.row.foodexpenses" placeholder="伙食费报销" @blur=" |
| | | val => { |
| | | sumTotalFee(); |
| | | } |
| | | " /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="foodallowance" label="伙食补助" align="center" width="80"> |
| | | <template slot-scope="scope"> |
| | | <el-input v-model="scope.row.foodallowance" placeholder="伙食费补助" @blur="val => { |
| | | sumTotalFee(); |
| | | } |
| | | " /> |
| | | <el-input v-model="scope.row.foodallowance" placeholder="伙食费补助" @blur=" |
| | | val => { |
| | | sumTotalFee(); |
| | | } |
| | | " /> |
| | | </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 => { |
| | | sumTotalFee(); |
| | | } |
| | | " /> |
| | | <el-input v-model="scope.row.otherexpense" placeholder="杂费" @blur=" |
| | | val => { |
| | | sumTotalFee(); |
| | | } |
| | | " /> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column prop="otherfeeamount" label="其他费用" align="center" width="90"> |
| | | <template slot-scope="scope"> |
| | | <el-input v-model="scope.row.otherfeeamount" placeholder="其他费用" @blur="val => { |
| | | sumTotalFee(); |
| | | } |
| | | " /> |
| | | <el-input v-model="scope.row.otherfeeamount" placeholder="其他费用" @blur=" |
| | | val => { |
| | | sumTotalFee(); |
| | | } |
| | | " /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="departure" slot="" label="其他费用说明" align="center" width="120"> |
| | |
| | | </template> </el-table-column><el-table-column prop="paiddate" slot="" label="打款日期" fixed align="center" |
| | | width="150"> |
| | | <template slot-scope="scope"> |
| | | <el-date-picker clearable size="small" style="width: 100%" v-model="scope.row.paiddate" type="date" |
| | | value-format="yyyy-MM-dd HH:mm:ss" placeholder="打款日期" :disabled="true" @blur="getallowance(scope.row)"> |
| | | <el-date-picker clearable size="small" style="width: 100%" v-model="scope.row.paiddate" type="date" format="yyyy-MM-dd" |
| | | value-format="yyyy-MM-dd" placeholder="打款日期" :disabled="true" |
| | | @blur="getallowance(scope.row)"> |
| | | </el-date-picker> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | </el-row> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button type="primary" @click="checksubmit" v-if="dialogType == 'edit'">保 存</el-button> |
| | | <el-button type="primary" :loading="checkSubmitLoading" :disabled="checkSubmitLoading" @click="checksubmit" v-if="dialogType == 'edit'">保 存</el-button> |
| | | <el-button @click="cancel">取 消</el-button> |
| | | </div> |
| | | </el-dialog> |
| | |
| | | listbypowerone, |
| | | addShareData |
| | | } from "@/api/project/reimbursement"; |
| | | import { listDept } from "@/api/system/dept"; |
| | | import { |
| | | provinceAndCityData, |
| | | regionData, |
| | |
| | | import { getUserProfile } from "@/api/system/user"; |
| | | import { getToken } from "@/utils/auth"; |
| | | import { setItem, grtItem, removeItem } from "@/utils/storage.js"; |
| | | import { moneySum } from "@/utils/money"; |
| | | |
| | | export default { |
| | | components: { |
| | |
| | | ], |
| | | data() { |
| | | return { |
| | | checkSubmitLoading: false, |
| | | checkObj: { |
| | | flowlevelone: null, |
| | | flowconclusion: null, |
| | |
| | | }, |
| | | { |
| | | value: 3, |
| | | label: "已收到材料" |
| | | label: "已收到纸质材料" |
| | | } |
| | | ], |
| | | // 查询参数 |
| | |
| | | APPLICANT: null, |
| | | APPLICATIONBEGTIME: null, |
| | | APPLICATIONENDTIME: null, |
| | | CHECKFLAG: 1 |
| | | CHECKFLAG: 1, |
| | | money: null, |
| | | deptnos: null |
| | | }, |
| | | deptList: [], |
| | | //查询付款 |
| | | queryParamsPayee: { |
| | | rbid: null |
| | |
| | | dialogType: "show" |
| | | }; |
| | | }, |
| | | created() { }, |
| | | created() { |
| | | this.listDept(); |
| | | }, |
| | | mounted() { |
| | | if (grtItem("travelexpensecheck")) { |
| | | this.queryParams = grtItem("travelexpensecheck"); |
| | |
| | | selectapplication() { |
| | | this.queryParams.APPLICATIONBEGTIME = this.applyTime[0]; |
| | | this.queryParams.APPLICATIONENDTIME = this.applyTime[1]; |
| | | }, |
| | | listDept() { |
| | | listDept({}).then(response => { |
| | | this.deptList = response.data; |
| | | this.loading = false; |
| | | }); |
| | | }, |
| | | getList() { |
| | | this.loading = true; |
| | |
| | | }, |
| | | |
| | | checksubmit() { |
| | | if (this.checkSubmitLoading) return; |
| | | let checkfundobj = { |
| | | flowconclusion: this.checkObj.flowlevelone, |
| | | flowcontent: this.checkObj.flowconclusion, |
| | |
| | | return; |
| | | } |
| | | |
| | | this.checkSubmitLoading = true; |
| | | checkfund(checkfundobj).then(res => { |
| | | this.reset(); |
| | | this.open = false; |
| | | this.getList(); |
| | | this.$modal.msgSuccess("审核完成!"); |
| | | this.checkSubmitLoading = false; |
| | | if (res.code == 200) { |
| | | this.reset(); |
| | | this.open = false; |
| | | this.getList(); |
| | | this.$modal.msgSuccess("审核完成!"); |
| | | } else { |
| | | this.open = false; |
| | | this.$modal.msgError(res.msg || "操作失败"); |
| | | } |
| | | }); |
| | | }, |
| | | |
| | |
| | | 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); |
| | | }); |
| | | }); |
| | | }, |
| | | |
| | |
| | | APPLICANT: null, |
| | | APPLICATIONBEGTIME: null, |
| | | APPLICATIONENDTIME: null, |
| | | CHECKFLAG: 1 |
| | | CHECKFLAG: 1, |
| | | deptnos: null |
| | | }), |
| | | this.handleQuery(); |
| | | }, |
| | |
| | | }); |
| | | }, |
| | | |
| | | //计算费用合计 |
| | | //计算费用合计(金额一律走精确运算,禁止 parseFloat 累加) |
| | | sumTotalFee(scope) { |
| | | let allSum = 0; |
| | | try { |
| | | for (let i = 0; i < this.rbDetails.length; i++) { |
| | | let totalFee = 0; |
| | | const row = this.rbDetails[i]; |
| | | //计算当前报销内容费用合计 |
| | | if (!isNaN(parseFloat(this.rbDetails[i].trafficexpense))) { |
| | | totalFee += parseFloat(this.rbDetails[i].trafficexpense); |
| | | } |
| | | if (!isNaN(parseFloat(this.rbDetails[i].cityfee))) { |
| | | totalFee += parseFloat(this.rbDetails[i].cityfee); |
| | | } |
| | | if (!isNaN(parseFloat(this.rbDetails[i].hotelexpense))) { |
| | | totalFee += parseFloat(this.rbDetails[i].hotelexpense); |
| | | } |
| | | if (!isNaN(parseFloat(this.rbDetails[i].otherexpense))) { |
| | | totalFee += parseFloat(this.rbDetails[i].otherexpense); |
| | | } |
| | | if (!isNaN(parseFloat(this.rbDetails[i].foodexpenses))) { |
| | | totalFee += parseFloat(this.rbDetails[i].foodexpenses); |
| | | } |
| | | if (!isNaN(parseFloat(this.rbDetails[i].foodallowance))) { |
| | | totalFee += parseFloat(this.rbDetails[i].foodallowance); |
| | | } |
| | | if (!isNaN(parseFloat(this.rbDetails[i].otherfeeamount))) { |
| | | totalFee += parseFloat(this.rbDetails[i].otherfeeamount); |
| | | } |
| | | this.rbDetails[i].total = parseFloat(totalFee).toFixed(2); |
| | | this.$set(this.rbDetails, scope.$index, this.rbDetails[i]); |
| | | if (!isNaN(parseFloat(this.rbDetails[i].total))) { |
| | | allSum += parseFloat(this.rbDetails[i].total); |
| | | } |
| | | const totalFee = moneySum([ |
| | | row.trafficexpense, |
| | | row.cityfee, |
| | | row.hotelexpense, |
| | | row.otherexpense, |
| | | row.foodexpenses, |
| | | row.foodallowance, |
| | | row.otherfeeamount |
| | | ]); |
| | | row.total = totalFee.toFixed(2); |
| | | this.$set(this.rbDetails, scope.$index, row); |
| | | } |
| | | this.form.amountrequested = allSum.toFixed(2); |
| | | this.form.amountrequested = moneySum(this.rbDetails, "total").toFixed(2); |
| | | this.form.bigstrmoney = this.convertCurrency(this.form.amountrequested); |
| | | } catch { } |
| | | }, |