yxh
yxh
2023-04-14 2b40b960dd1f30fec8c5e0a90d22b12aeccc5fec
src/views/project/travelexpenseslist/index.vue
@@ -45,8 +45,6 @@
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>
    <el-row :gutter="10" class="mb8">
@@ -93,15 +91,8 @@
      </el-table-column>
      <el-table-column label="银行卡号" width="180" align="center" prop="bankcardno">
      </el-table-column>
    <!-- <el-table-column label="报销合计" align="center" prop="financechecher">
          </el-table-column> -->
    <!-- <el-table-column
        label="财务审核"
        width="120"
        align="center"
        prop="financechecher"
      >
          </el-table-column> -->
      <!-- <el-table-column label="报销合计" align="center" prop="financechecher"/>-->
      <!-- <el-table-column label="财务审核" width="120" align="center" prop="financechecher" /> -->
      <el-table-column label="捐献者" width="120" align="center" prop="donorname">
      </el-table-column>
      <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width" width="270">
@@ -132,10 +123,21 @@
      @close="reset">
      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
        <el-row>
          <el-col :span="7">
          <!-- <el-form-item label="备注" prop="reason">
        <!--
            <el-form-item label="备注" prop="reason">
              <el-input v-model="form.reason" placeholder="专职人员 协调员" />
                </el-form-item> --><el-form-item label="报销人" prop="username">
            </el-form-item>
                                                                                -->
          <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-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 reporters" :key="item.reportNo" :label="item.reportName"
@@ -144,32 +146,25 @@
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="捐献编号" prop="donorno">
              <el-input disabled v-model="form.donorno" placeholder="捐献编号" />
          <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-date-picker>
            </el-form-item>
          </el-col>
          <el-col :span="7">
            <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-option>
          <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-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="7">
            <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="8">
            <el-form-item label="出差人" prop="travelers">
          <el-col :span="5">
            <el-form-item label="报销人" prop="travelers">
              <el-select v-model="form.travelers" clearable filterable allow-create ref="getReportname"
                default-first-option placeholder="请选择" @change="selectedTraveler">
                <el-option v-for="item in travelers" :key="item.reportNo" :label="item.reportName"
@@ -178,34 +173,85 @@
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="7">
            <el-form-item label="区域组长" prop="managername">
              <el-input v-model="form.managername" placeholder="区域组长" />
            </el-form-item> </el-col></el-row><el-row>
          <el-col :span="5">
            <el-form-item label="收款银行" prop="depositbank">
              <el-input v-model="form.depositbank" placeholder="开户银行" />
            </el-form-item>
          </el-col>
          <el-col :span="5">
            <el-form-item label="银行账号" prop="bankcardno">
              <el-input v-model="form.bankcardno" placeholder="开户银行" />
            </el-form-item>
          </el-col>
          <el-col :span="5">
            <el-form-item label="联系电话" prop="phone">
              <el-input v-model="form.phone" placeholder="联系电话" />
            </el-form-item>
          </el-col>
        </el-row>
        <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="7">
            <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-date-picker>
          <el-col :span="5">
            <el-form-item label="区域组长" prop="managername">
              <el-input v-model="form.managername" placeholder="区域组长" />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="22">
            <el-form-item label="备注" prop="remark">
              <el-input v-model="form.remark" placeholder="备注" />
          <el-col :span="20"><el-divider></el-divider></el-col>
        </el-row>
        <el-row>
          <el-col :span="5">
            <el-form-item label="捐献者" prop="infoid">
              <el-select :disabled = "true" 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-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="5">
            <el-form-item label="家属费用" prop="donoramount">
              <el-input :disabled = "true" v-model="form.donoramount" placeholder="家属费用" @blur="
                (val) => {
                  sumTotalFee();
                }
              " onchange="if(/[^0-9.]/.test(this.value)){alert('请正确输入整数数字或小数!');this.value='';}" />
            </el-form-item>
          </el-col>
          <el-col :span="10">
            <el-form-item label="费用说明" prop="donorremark">
              <el-input :disabled = "true" v-model="form.donorremark" placeholder="家属费用说明" />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="8"> </el-col>
          <el-col :span="5">
            <el-form-item label="家属人数" prop="donorrelatives">
              <el-input v-model="form.donorrelatives" placeholder="家属人数" />
            </el-form-item>
          </el-col>
          <el-col :span="5">
            <el-form-item label="收款人" prop="donorpayee">
              <el-input v-model="form.donorpayee" placeholder="亲属收款人" />
            </el-form-item>
          </el-col>
          <el-col :span="5">
            <el-form-item label="收款银行" prop="donorbank">
              <el-input v-model="form.donorbank" placeholder="家属银行" />
            </el-form-item>
          </el-col>
          <el-col :span="5">
            <el-form-item label="银行卡号" prop="donorbankcard">
              <el-input v-model="form.donorbankcard" placeholder="银行卡号" />
            </el-form-item>
          </el-col>
        </el-row>
      <!-- <el-row type="flex" :gutter="10" align="right" class="mb8">
      <!--
        <el-row type="flex" :gutter="10" align="right" class="mb8">
          <el-col :span="6">
            <el-button
              type="primary"
@@ -216,47 +262,58 @@
              >新增一行</el-button
            >
          </el-col>
            </el-row> -->
          </el-row>
            -->
        <el-row>
          <el-table :data="applicationDetailArr" border highlight-current-row>
            <el-table-column prop="orderno" slot="" label="序号" align="center" fixed width="80">
            <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="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 clearable size="small" style="width: 100%" v-model="scope.row.starttime" type="date"
                  value-format="yyyy-MM-dd HH:mm:ss" placeholder="出发日期" @change="getStandard(scope.row)">
                <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="getallowance(scope.row)">
                </el-date-picker>
              </template>
            </el-table-column>
            <el-table-column prop="departure" slot="" label="出发地点" align="center" width="200" fixed>
            <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, '/')) }
                  }
                }" 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)">
                </el-date-picker>
              </template>
            </el-table-column>
            <el-table-column prop="departure" slot="" label="出发地点" align="center" fixed width="100">
              <template slot-scope="scope">
                <el-input v-model="scope.row.departure" placeholder="出发地点" />
              </template>
            </el-table-column>
            <el-table-column prop="endtime" slot="" label="到达日期" align="center" width="150" fixed>
            <el-table-column label="到达地点" prop="destination" align="center" fixed width="100">
              <template slot-scope="scope">
                <el-date-picker clearable size="small" style="width: 100%" v-model="scope.row.endtime" type="date"
                  value-format="yyyy-MM-dd HH:mm:ss" placeholder="到达日期">
                </el-date-picker>
                <el-input v-model="scope.row.destination" placeholder="到达地点" @blur="getallowance(scope.row)" />
              </template>
            </el-table-column>
            <el-table-column label="到达地点" prop="destination" align="center" width="200">
              <template slot-scope="scope">
                <el-input v-model="scope.row.destination" placeholder="到达地点" />
              </template>
            </el-table-column>
            <el-table-column prop="days" label="天数" width="70" align="center">
            <el-table-column prop="days" label="天数" width="65" align="center">
              <template slot-scope="scope">
                <el-input v-model="scope.row.days" @blur="getStandard(scope.row)" placeholder="天数" />
              </template>
            </el-table-column>
            <el-table-column prop="traffictype" label="交通工具" align="center" width="120">
            <el-table-column prop="traffictype" label="交通工具" align="center" width="100">
              <template slot-scope="scope">
                <el-input v-model="scope.row.traffictype" placeholder="交通工具" />
                <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="trafficexpense" label="交通费" align="center" width="80">
@@ -268,6 +325,7 @@
                " />
              </template>
            </el-table-column>
          <!--
            <el-table-column prop="cityfee" label="市内交通费" align="center" width="100">
              <template slot-scope="scope">
                <el-input v-model="scope.row.cityfee" placeholder="市内交通费" @blur="
@@ -278,6 +336,7 @@
                </el-input>
              </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="
@@ -287,16 +346,8 @@
                " />
              </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();
                  }
                " />
              </template>
            </el-table-column>
            <el-table-column prop="foodexpenses" label="伙食费报销" align="center" width="100">
            <el-table-column prop="foodexpenses" label="餐费报销" align="center" width="80">
              <template slot-scope="scope">
                <el-input v-model="scope.row.foodexpenses" placeholder="伙食费报销" @blur="
                  (val) => {
@@ -305,7 +356,7 @@
                " />
              </template>
            </el-table-column>
            <el-table-column prop="foodallowance" label="伙食费补助" align="center" width="100">
            <el-table-column prop="foodallowance" label="伙食补助" align="center" width="80">
              <template slot-scope="scope">
                <el-input v-model="scope.row.foodallowance" placeholder="伙食费补助" @blur="
                  (val) => {
@@ -314,6 +365,16 @@
                " />
              </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();
                  }
                " />
              </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="
@@ -328,6 +389,7 @@
                <el-input v-model="scope.row.otherfeedesc" placeholder="其他费用说明" />
              </template>
            </el-table-column>
            <el-table-column prop="total" label="合计" align="center" width="110">
              <template slot-scope="scope">
                <el-input v-model="scope.row.total" placeholder="合计" />
@@ -346,46 +408,26 @@
          </el-table>
        </el-row>
        <el-row style="margin-top: 10px">
          <el-col :span="7">
            <el-form-item label="报销合计" prop="amountrequested">
              <el-input v-model="form.amountrequested" placeholder="报销合计" />
          <el-col :span="6">
            <el-form-item label="报销金额" prop="amountrequested">
              <el-input v-model="form.amountrequested" placeholder="报销合计金额" />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="大写" prop="bigstrmoney">
              <el-input v-model="form.bigstrmoney" placeholder="领款金额" />
            </el-form-item>
          </el-col>
          <el-col :span="7">
            <el-form-item label="领款金额" prop="amountrequested">
              <el-input v-model="form.amountrequested" placeholder="领款金额" />
          <el-col :span="12">
            <el-form-item label="大写金额" prop="bigstrmoney">
              <el-input v-model="form.bigstrmoney" placeholder="报销大写金额" />
            </el-form-item>
          </el-col>
        </el-row>
      <!--
        <el-row>
          <el-col :span="7">
            <el-form-item label="开户银行" prop="depositbank">
              <el-input v-model="form.depositbank" placeholder="开户银行" />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="银行账号" prop="bankcardno">
              <el-input v-model="form.bankcardno" placeholder="开户银行" />
            </el-form-item>
          </el-col>
          <el-col :span="7">
            <el-form-item label="联系电话" prop="phone">
              <el-input v-model="form.phone" placeholder="联系电话" />
            </el-form-item>
          </el-col>
        </el-row>
        <el-col :span="7">
          <el-form-item label="中心负责人" prop="opochecker">
            <el-input v-model="form.opochecker" placeholder="中心负责人" />
          </el-form-item>
        </el-col>
        <el-col :span="8">
          <el-col :span="7">
          <el-form-item label="财务副院长" prop="finvicepresident">
            <el-input v-model="form.finvicepresident" placeholder="财务副院长" />
          </el-form-item>
@@ -395,31 +437,27 @@
            <el-input v-model="form.busvicepresident" placeholder="业务副院长" />
          </el-form-item>
        </el-col>
        </el-row>
        <el-row>
          <el-col :span="7">
            <el-form-item label="办公室主任" prop="officedirector">
              <el-input v-model="form.officedirector" placeholder="办公室主任" />
            </el-form-item>
          </el-col>
          <el-col :span="8">
          <el-col :span="7">
            <el-form-item label="财务部主任" prop="financedirector">
              <el-input v-model="form.financedirector" placeholder="财务部主任" />
            </el-form-item>
          </el-col>
          <el-col :span="7">
            <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-row>
                                                                                      -->
        <el-row>
          <el-col :span="24">
          <!-- <el-form-item label="文件地址" prop="fileurl">
          <el-col :span="14">
          <!--
          <el-form-item label="文件地址" prop="fileurl">
              <el-input v-model="form.fileurl" placeholder="请输入文件地址" />
                </el-form-item> -->
          </el-form-item>
                                                                                    -->
            <el-form-item label="文件上传" align="left" prop="annexfiles">
              <!-- <file-upload ref="fileUpload" :fileType=fileType :limit="1" :on-success="handleUploadSuccess"></file-upload> -->
              <el-upload size="mini" class="upload-demo" :action="uploadFileUrl" :file-list="fileList" multiple :limit="5"
@@ -500,6 +538,7 @@
    "sys_financeitemtype",
    "sys_recordstatus",
    "sys_travelexpensebelong",
    "sys_traffictype",
  ],
  data() {
    return {
@@ -563,7 +602,13 @@
          { required: true, message: "请选择报销归类", trigger: "blur" },
        ],
        username: [
          { required: true, message: "请输入报销人", trigger: "blur" },
          { required: true, message: "请选择填报人", trigger: "blur" },
        ],
        travelers: [
          { required: true, message: "请选择报销人", trigger: "blur" },
        ],
        reason: [
          { required: true, message: "请输入出差事由", trigger: "blur" },
        ],
      },
      //费用申请单form
@@ -701,6 +746,47 @@
        }
      });
    },
    //计算补助
    getallowance(row) {
      if (
        row.starttime != "" &&
        row.starttime != null &&
        row.endtime != "" &&
        row.endtime != null
      ) {
        //计算天数
        row.days = 1 + Math.floor(Math.abs(Date.parse(row.starttime) - Date.parse(row.endtime)) / (1099 * 3699 * 24))
        /*let aDate, oDate1, oDate2, Date_end,Date_start;
        Date_end = row.endtime.split(" "); //将时间以空格划分为两个数组  第一个数组是 2019-05-20 第二个数组是 00:00:00
        aDate = Date_end[0].split("-"); //获取第一个数组的值
        oDate1 = new Date(aDate[0], aDate[1], aDate[2]);  //将前半个数组以-拆分,每一个是一个数值
        Date_start = row.starttime.split(" ");
        aDate = Date_start[0].split("-");
        oDate2 = new Date(aDate[0], aDate[1], aDate[2]);
        row.days = 1+parseInt(Math.abs(oDate1 - oDate2) / 1000 / 60 / 60 / 24);    //把相差的毫秒数转换为天数
        */
      } else {
        row.days = ''
      };
      //公杂费补助:杭州桐庐,建德,淳安60,杭州其他地区0,非杭州地区80
      if (row.destination != "") {
        var str = row.destination;
        //验证城市
        ////if (str.indexOf("桐庐,建德,淳安") !== -1) { };
        if (str.includes("杭州")) { row.otherexpense = parseInt(row.days) * 0 }
        else if (str.includes("桐庐") || str.includes("建德") || str.includes("淳安")) { row.otherexpense = parseInt(row.days) * 60 }
        else { row.otherexpense = parseInt(row.days) * 80 };
      }
      //伙食费补助:城市(西藏,新疆,青海.120)(其他100)
      row.foodallowance = parseInt(row.days) * 100
      //计算合计
      this.sumTotalFee();
    },
    getStandard(row) {
      if (
@@ -787,8 +873,8 @@
      }
      return area;
    },
    selectbaseinfo() {
      console.log("infoid", this.form.infoid);
      let list = this.balist;
      list.forEach((item) => {
        if (item.id == this.form.infoid) {
@@ -798,9 +884,11 @@
        }
      });
    },
    onpick(e) {
      // console.log(e,this.value1)
    },
    gettable(e) {
      const id = e.id;
      getdownload(e.id).then((res) => {
@@ -829,6 +917,7 @@
      //   aEle.click();
      // });
    },
    /** 查询报销申请列表 */
    getList() {
      this.loading = true;
@@ -1108,7 +1197,6 @@
                  addReimbursementdetail(applicationDetailArr[i]);
                }
                console.log("idaaaaaa:", res, id, this.applicationDetailArr);
              });
            });
          }
@@ -1270,6 +1358,12 @@
    sumTotalFee() {
      // debugger;
      let allSum = 0;
      //捐献者家属费用
      if (!isNaN(parseFloat(this.form.donoramount))) {
        allSum += parseFloat(this.form.donoramount);
      }
      //报销明细费用
      try {
        for (let i = 0; i < this.applicationDetailArr.length; i++) {
          let totalFee = 0;
@@ -1301,6 +1395,7 @@
            allSum += parseFloat(this.applicationDetailArr[i].total);
          }
        }
        this.form.amountrequested = allSum.toFixed(2);
        this.form.bigstrmoney = this.convertCurrency(this.form.amountrequested);
      } catch { }