yxh
23 小时以前 a79d67f8a9a9fa02f9d25f987b9611af965c484f
src/views/project/travelexpensecheck/index.vue
@@ -1,31 +1,20 @@
<template>
  <div class="app-container">
    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
    <el-form
      class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="80px">
      <el-row>
        <!--        <el-col :span="6">
          <el-form-item label="出差人" prop="travelers">
            <el-input v-model="queryParams.travelers" placeholder="请输入出差人" clearable size="small"
              @keyup.enter.native="handleQuery" />
          </el-form-item>
        </el-col>-->
        <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="报销申请结束日期"
              @keyup.enter.native="handleQuery">
            </el-date-picker>
          </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"
          <el-form-item label="捐献案例" prop="name">
            <el-input v-model="queryParams.donorname" placeholder="请输入捐献者姓名" clearable size="small"
              @keyup.enter.native="handleQuery" />
          </el-form-item>
        </el-col>
        <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 label="预审状态" prop="checkstatus" style="float: left">
            <el-select v-model="queryParams.checkstatus" placeholder="请选择" style="width: 100%">
              <el-option v-for="item in checkmaterials" :key="item.value" :label="item.label" :value="item.value">
              </el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="5">
@@ -36,20 +25,45 @@
            </el-select>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="5">
          <el-form-item label-width="120px" label="申请材料状态" prop="checkstatus" style="float: left">
            <el-select v-model="queryParams.checkstatus" placeholder="请选择" style="width: 100%">
              <el-option v-for="item in checkmaterials" :key="item.value" :label="item.label" :value="item.value">
          <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-col :span="6">
          <el-form-item label="捐献者" prop="name">
            <el-input v-model="queryParams.donorname" placeholder="请输入捐献者姓名" clearable size="small"
      </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-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 HH:mm:ss" v-model="value1" type="daterange"
              @blur="onpick" range-separator="至" start-placeholder="报销申请开始日期" end-placeholder="报销申请结束日期"
              @keyup.enter.native="handleQuery">
            </el-date-picker>
          </el-form-item>
        </el-col>
        <el-col :span="6">
@@ -77,16 +91,16 @@
        <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>
@@ -97,10 +111,10 @@
        </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">
@@ -109,14 +123,14 @@
      </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>
@@ -143,7 +157,7 @@
        <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"
              <el-date-picker style="width: 100%" v-model="form.applyTime" :disabled="true" type="date" format="yyyy-MM-dd"
                value-format="yyyy-MM-dd HH:mm:ss" placeholder="申请日期">
              </el-date-picker>
            </el-form-item>
@@ -190,7 +204,7 @@
            <el-form-item label="联系电话" prop="phone">
              <el-input v-model="form.phone" placeholder="联系电话" />
            </el-form-item>
          </el-col>
          </el-col>
        </el-row>
      -->
        <el-row>
@@ -214,7 +228,7 @@
          <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="领款金额" />
@@ -291,7 +305,7 @@
                      );
                    }
                  }
                }" clearable size="small" style="width: 100%" v-model="scope.row.starttime" type="date"
                }" clearable size="small" style="width: 100%" v-model="scope.row.starttime" type="date" format="yyyy-MM-dd"
                  value-format="yyyy-MM-dd HH:mm:ss" placeholder="开始日期" @blur="getallowance(scope.row)">
                </el-date-picker>
              </template>
@@ -307,7 +321,7 @@
                      );
                    }
                  }
                }" clearable size="small" style="width: 100%" v-model="scope.row.endtime" type="date"
                }" clearable size="small" style="width: 100%" v-model="scope.row.endtime" type="date" format="yyyy-MM-dd"
                  value-format="yyyy-MM-dd HH:mm:ss" placeholder="结束日期" @blur="getallowance(scope.row)">
                </el-date-picker>
              </template>
@@ -351,10 +365,11 @@
            </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>
            <!--
@@ -371,44 +386,49 @@
                                                                                                                                      -->
            <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">
@@ -529,8 +549,9 @@
              </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 HH:mm:ss" placeholder="打款日期" :disabled="true"
                  @blur="getallowance(scope.row)">
                </el-date-picker>
              </template>
            </el-table-column>
@@ -597,7 +618,7 @@
        </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>
@@ -620,6 +641,7 @@
  listbypowerone,
  addShareData
} from "@/api/project/reimbursement";
import { listDept } from "@/api/system/dept";
import {
  provinceAndCityData,
  regionData,
@@ -657,6 +679,7 @@
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: {
@@ -674,6 +697,7 @@
  ],
  data() {
    return {
      checkSubmitLoading: false,
      checkObj: {
        flowlevelone: null,
        flowconclusion: null,
@@ -734,7 +758,7 @@
        },
        {
          value: 3,
          label: "已收到材料"
          label: "已收到纸质材料"
        }
      ],
      // 查询参数
@@ -744,8 +768,11 @@
        APPLICANT: null,
        APPLICATIONBEGTIME: null,
        APPLICATIONENDTIME: null,
        CHECKFLAG: 1
        CHECKFLAG: 1,
        money: null,
        deptnos: null
      },
      deptList: [],
      //查询付款
      queryParamsPayee: {
        rbid: null
@@ -781,7 +808,9 @@
      dialogType: "show"
    };
  },
  created() { },
  created() {
    this.listDept();
  },
  mounted() {
    if (grtItem("travelexpensecheck")) {
      this.queryParams = grtItem("travelexpensecheck");
@@ -793,6 +822,12 @@
    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;
@@ -813,6 +848,7 @@
    },
    checksubmit() {
      if (this.checkSubmitLoading) return;
      let checkfundobj = {
        flowconclusion: this.checkObj.flowlevelone,
        flowcontent: this.checkObj.flowconclusion,
@@ -828,11 +864,18 @@
        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 || "操作失败");
        }
      });
    },
@@ -852,7 +895,26 @@
        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);
          });
      });
    },
@@ -991,7 +1053,8 @@
        APPLICANT: null,
        APPLICATIONBEGTIME: null,
        APPLICATIONENDTIME: null,
        CHECKFLAG: 1
        CHECKFLAG: 1,
        deptnos: null
      }),
        this.handleQuery();
    },
@@ -1233,41 +1296,25 @@
        });
    },
    //计算费用合计
    //计算费用合计(金额一律走精确运算,禁止 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 { }
    },