yxh
2023-05-10 4c5487bd2d72d1c36942e731c9f3ee83bba031ea
报销单
已修改4个文件
225 ■■■■ 文件已修改
src/api/project/reimbursement.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/project/reimbursementdetail.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/fund/expertFeeFundApply/index.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/travelexpenseslist/index.vue 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/project/reimbursement.js
@@ -101,3 +101,11 @@
    data: data
  })
}
// 同步申请单到共享表
export function addShareSreimbursementData(id) {
  return request({
    url: '/project/reimbursement/' + id,
    method: 'get'
  })
}
src/api/project/reimbursementdetail.js
@@ -17,8 +17,6 @@
  })
}
// /project/reimbursement/getRBDetailList/{rbid}
// 获取响应的details列表
export function getReimbursementdetaillist(id) {
@@ -37,7 +35,6 @@
    data: data
  })
}
// /project/reimbursement/getMaxId
src/views/project/fund/expertFeeFundApply/index.vue
@@ -97,18 +97,15 @@
                <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width"
                  width="280px">
                  <template slot-scope="scope">
                    <el-button v-if="
                      scope.row.recordstatus == -1 ||
                    <el-button v-if="scope.row.recordstatus == -1 ||
                      scope.row.recordstatus == 1
                    " size="mini" type="text" icon="el-icon-edit" @click="handleup(scope.row)">上报</el-button>
                    <el-button v-if="
                      scope.row.recordstatus == -1 ||
                    <el-button v-if="scope.row.recordstatus == -1 ||
                      scope.row.recordstatus == 1
                    " size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">修改</el-button>
                    <el-button size="mini" type="text" icon="el-icon-edit" @click="handleDetail(scope.row)">查看</el-button>
                    <!-- v-hasPermi="['project:expretfund:edit']" -->
                    <el-button v-if="
                      scope.row.recordstatus == -1 ||
                    <el-button v-if="scope.row.recordstatus == -1 ||
                      scope.row.recordstatus == 1
                    " size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">删除</el-button>
                    <!-- v-hasPermi="['project:expretfund:delete']" -->
@@ -291,8 +288,7 @@
            </el-table-column>
            <el-table-column prop="quantity" align="center" label="数量" width="120" v-if="form.applytype == '3'">
              <template slot-scope="scope">
                <el-input v-model="scope.row.quantity" placeholder="数量" @blur="
                  (val) => {
                <el-input v-model="scope.row.quantity" placeholder="数量" @blur="(val) => {
                    sumTotalFee(scope.row);
                  }
                " />
@@ -300,8 +296,7 @@
            </el-table-column>
            <el-table-column prop="price" align="center" label="价格" width="120" v-if="form.applytype == '3'">
              <template slot-scope="scope">
                <el-input v-model="scope.row.price" placeholder="价格" @blur="
                  (val) => {
                <el-input v-model="scope.row.price" placeholder="价格" @blur="(val) => {
                    sumTotalFee(scope.row);
                  }
                " />
@@ -408,8 +403,7 @@
          <el-col :span="12">
            <el-form-item label="费用申请附件" align="left" prop="annexbankcard">
              <el-upload size="mini" class="upload-demo" :action="uploadFileUrl" :file-list="fileList" multiple :limit="5"
                :headers="headers" :on-success="
                  (response, file, fileList) =>
                :headers="headers" :on-success="(response, file, fileList) =>
                    uploadSccess(response, file, fileList)
                " :on-preview="downFile" :disabled='dialogType == "detail"' :on-error="handleUploadError"
                :on-exceed="handleExceed" :on-remove="remove" accept="image/*,.pdf">
src/views/project/travelexpenseslist/index.vue
@@ -67,35 +67,36 @@
          <dict-tag :options="dict.type.sys_recordstatus" :value="scope.row.recordstatus" />
        </template>
      </el-table-column>
      <!--
      <el-table-column label="报销人类别" width="120" align="center" prop="costtype">
        <template slot-scope="scope">
          <dict-tag :options="dict.type.sys_travelexpensebelong" :value="scope.row.costtype" />
        </template>
      </el-table-column>
      </el-table-column>-->
      <el-table-column label="申请时间" width="120" align="center" prop="createTime">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.createTime, "{y}-{m}-{d}") }}</span>
        </template>
      </el-table-column>
      <el-table-column label="报销人" width="120" align="center" prop="username">
      </el-table-column>
      <el-table-column label="经办人" width="120" align="center" prop="username">
      </el-table-column><!--
      <el-table-column label="出差人" width="180" align="center" prop="travelers">
      </el-table-column>
      </el-table-column>-->
      <el-table-column label="报销金额" width="120" align="center" prop="amountrequested">
      </el-table-column>
      <el-table-column label="出差事由" align="center" width="280" prop="reason">
      </el-table-column>
      <el-table-column label="联系电话" width="120" align="center" prop="phone">
      <!-- <el-table-column label="联系电话" width="120" align="center" prop="phone">
      </el-table-column>
      <el-table-column label="开户银行" width="180" align="center" prop="depositbank">
      </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 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="250">
      <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width" width="300">
        <template slot-scope="scope">
          <el-button v-if="scope.row.recordstatus == -1 || scope.row.recordstatus == 1" size="mini" type="text"
            icon="el-icon-upload2" @click="handleup(scope.row)">上报</el-button>
@@ -261,7 +262,7 @@
              plain
              icon="el-icon-plus"
              size="mini"
              @click="adddetailRow"
              @click="addDetailRow"
              >新增一行</el-button
            >
          </el-col>
@@ -444,8 +445,8 @@
            </el-table-column>
            <el-table-column fixed="right" label="操作" align="center" width="120" v-if="dialogType == 'edit'">
              <template slot-scope="scope">
                <el-button type="text" size="mini" @click="adddetailRow(scope.$index)">新增</el-button>
                <el-button @click.native.prevent="deleteRow(scope.$index, rbDetails, scope.row)
                <el-button type="text" size="mini" @click="addDetailRow(scope.$index)">新增</el-button>
                <el-button @click.native.prevent="deleteDetailRow(scope.$index, rbDetails, scope.row)
                  " type="text" size="small">
                  删除
                </el-button>
@@ -523,8 +524,8 @@
            </el-table-column>
            <el-table-column label="操作" align="center" width="100" v-if="dialogType == 'edit'">
              <template slot-scope="scope">
                <el-button type="text" size="mini" @click="addpayeeRow(scope.$index)">新增</el-button>
                <el-button @click.native.prevent="deleteRow2(scope.$index, rbPayees, scope.row)
                <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>
@@ -718,6 +719,10 @@
      queryParams2: {
        persontype: null,
        arriveAddr: null,
      },
      //查询付款
      queryParamsPayee: {
        rbid: null,
      },
      // 表单参数
      form: {},
@@ -1215,8 +1220,8 @@
      this.fundflowList = [];
      this.form.username = this.defaultperson.nickName;
      this.form.userno = this.defaultperson.userName;
      this.adddetailRow();
      this.addpayeeRow();
      this.addDetailRow();
      this.addPayeeRow();
      this.open = true;
      this.title = "添加报销申请";
    },
@@ -1232,21 +1237,14 @@
        this.form = response.data;
        this.fileList = this.form.annexfiles ? this.form.annexfiles.split(",").map(item => ({ url: item, name: item })) : []
        this.form.recordstatus = response.data.recordstatus + "";
        this.open = true;
        this.title = "修改报销申请";
        let ids = response.data.id;
        let ids = response.data.id;
        //获取报销明细信息
        getReimbursementdetaillist(ids).then((res) => {
          if (res.data.length == 0) {
            return;
          }
          this.rbDetails = res.data;
          for (let i = 0; i < this.rbDetails.length; i++) {
            //   this.rbDetails[i].personname2 = res.data[i].personname;
          }
          //解析出差地址
          /*
          for (let i = 0; i < this.rbDetails.length; i++) {
            this.rbDetails[i].index = i;
            this.rbDetails[i].searchAddress = {
@@ -1255,23 +1253,26 @@
              qu: this.rbDetails[i].traveltownname,
            };
          }
          */
          //实时合计金额
          this.sumTotalFee();
          //this.sumTotalFee();
        });
          //获取报销打款信息
          let obj = { rbid: ids };
          listReimbursementpayee(obj).then((res) => {
            if (res.rows.length == 0) {
              return;
            }
            this.rbPayees = res.rows;
            console.log("listReimbursementpayee", res.rows);
        queryParamsPayee.rbid=response.data.id;
        console.log("rbPayees11111    ", queryParamsPayee);
        listReimbursementpayee(queryParamsPayee).then((res) => {
          console.log("rbPayees", res);
          this.rbPayees = res.data.rows;
          });
        });
      });
      //默认存在一行
      this.adddetailRow();
      this.addpayeeRow();
      this.addDetailRow();
      this.addPayeeRow();
      this.open = true;
      this.title = "修改报销申请";
    },
    /** 查看按钮操作 */
@@ -1279,13 +1280,16 @@
      this.dialogType = "detail";
      this.reset();
      const id = row.id || this.ids;
      getReimbursement(id).then((response) => {
        this.form = response.data;
        //附件
        this.fileList = this.form.annexfiles ? this.form.annexfiles.split(",").map(item => ({ url: item, name: item })) : []
        //审核状态
        this.form.recordstatus = response.data.recordstatus + "";
        this.open = true;
        this.title = "查看报销申请";
        let ids = response.data.id;
        let listFundflowparams = {
          fundid: row.id,
@@ -1294,6 +1298,7 @@
        listFundflow(listFundflowparams).then((res) => {
          this.fundflowList = res.rows;
        });
        //报销明细
        getReimbursementdetaillist(ids).then((res) => {
          this.rbDetails = res.data;
          for (let i = 0; i < this.rbDetails.length; i++) {
@@ -1306,13 +1311,23 @@
          }
          //this.sumTotalFee();
        });
        //账户
        getReimbursementpayeelist(ids).then((res) => {
          this.rbPayees = res.data;
      });
      });
      this.open = true;
      this.title = "查看报销申请";
    },
    /** 提交按钮 */
    submitForm() {
      this.$refs["form"].validate((valid) => {
        if (valid) {
          /**
          let indexErrTime = this.rbDetails.findIndex((item) => {
            if (item.endtime && item.starttime) {
              let d = this.$moment(item.endtime).diff(this.$moment(item.starttime), "d");
@@ -1358,16 +1373,20 @@
            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.fileList;
          if (list.length > 0) {
            this.form.annexfiles = list.map(item => item.url).join(",");
          }
          if (costtypeindex > -1) {
            this.form.costtypename = belongArr[costtypeindex].label;
          }
          //校验请款金额合计是否等于报销单金额
@@ -1379,61 +1398,64 @@
            return;
          }
          if (this.form.id != null) {
            //rbid主表Id,方便后面关联主表
            let rbid = this.form.id;
            for (let i = 0; i < this.rbDetails.length; i++) {
              this.rbDetails[i].rbid = rbid;
            }
            updateReimbursement(this.form).then((response) => {
              addOrupdateReimbursementdetaillist(this.rbDetails).then((response) => {
                //更新支付表信息
                for (let i = 0; i < this.rbPayees.length; i++) {
                  this.rbPayees[i].rbid = rbid;
                }
                //addOrUpdateRBpayee(this.rbPayees);
                for (let i = 0; i < this.rbPayees.length; i++) {
                  if (this.rbPayees[i].rbid != null) {
                    updateReimbursementpayee(this.rbPayees[i]);
                  } else {
                    addReimbursementpayee(this.rbPayees[i]);
                  }
                }
                this.$modal.msgSuccess("修改成功");
                this.open = false;
                this.getList();
              });
            }).catch(err => {
              console.log(err);
            })
          } else {
            this.form.recordstatus = -1;
            const rbDetails = [...this.rbDetails]
            const rbPayees = [...this.rbPayees]
            addReimbursement(this.form).then((response) => {
          if (this.form.id != null) {
            updateReimbursement(this.form).then((response) => {
              //保存明细
              for (let i = 0; i < rbDetails.length; i++) {
                rbDetails[i].rbid = response.data;
                if (rbDetails[i].rbid != null) {
                  updateReimbursementdetail(rbDetails[i]);
                } else {
                  //rbid关联主表Id
                  rbDetails[i].rbid = this.form.id;
                  addReimbursementdetail(rbDetails[i]);
              }
              addOrupdateReimbursementdetaillist(rbDetails).then((response) => {
                this.$modal.msgSuccess("新增成功");
              }
              //保存账户
              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]);
                }
              }
              this.$modal.msgSuccess("报销单修改成功!");
                this.open = false;
                this.getList();
                listReimbursementdetailid().then((res) => {
                  let id = res.data;
            }).catch(err => {
              this.$modal.msgError("报销单保存失败!");
            });
          }
          else {
            this.form.recordstatus = -1;
            addReimbursement(this.form).then((response) => {
              //保存明细
                  for (let i = 0; i < rbDetails.length; i++) {
                    rbDetails[i].rbid = id;
                //rbid关联主表Id
                rbDetails[i].rbid = response.data;
                    addReimbursementdetail(rbDetails[i]);
                  }
              //保存账号
                  for (let i = 0; i < rbPayees.length; i++) {
                //rbid关联主表Id
                    rbPayees[i].rbid = id;
                addReimbursementpayee(rbPayees[i]);
                  }
                  //addOrUpdateRBpayee(rbPayees);
                  addReimbursementpayee(rbPayees);
                })
              })
            })
              this.$modal.msgSuccess("报销单修改成功!");
              this.open = false;
              this.getList();
            }).catch(err => {
              this.$modal.msgError("报销单保存失败!");
            });
          }
        }
      });
@@ -1473,7 +1495,7 @@
    },
    //新增一行
    adddetailRow(rowIndex) {
    addDetailRow(rowIndex) {
      let rowData = {
        //index: this.rbDetails.length,
        searchAddress: {
@@ -1523,7 +1545,7 @@
      }
    },
    addpayeeRow(rowIndex) {
    addPayeeRow(rowIndex) {
      let rowData = {
        id: null,
        personType: null,
@@ -1546,7 +1568,7 @@
      }
    },
    deleteRow(index, rows, row) {
    deleteDetailRow(index, rows, row) {
      this.$confirm("是否确认删除?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
@@ -1573,7 +1595,7 @@
        });
    },
    deleteRow2(index, rows, row) {
    deletePayeeRow(index, rows, row) {
      this.$confirm("是否确认删除?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",