WXL
2023-09-01 1c678c6fc8bbb7974ceb57d95c96e3ed2f4c2676
src/views/project/travelexpenseapply/travelexpensedetail/index.vue
@@ -209,11 +209,12 @@
          </el-row>
          -->
        <el-row style="margin-top: 25px; margin-bottom: 5px">
          <el-col :span="20">报销明细录入:</el-col>
          <el-col :span="20">报销明细</el-col>
        </el-row>
        <el-row>
          <el-table
            :data="rbDetails"
            ref="table"
            border
            highlight-current-row
            :summary-method="getSummaries"
@@ -478,18 +479,25 @@
                />
              </template>
            </el-table-column>
            <!--
            <el-table-column prop="cityfee" label="市内交通费" align="center" width="100">
            <el-table-column
              prop="cityfee"
              label="市内交通费"
              align="center"
              width="100"
            >
              <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="住宿费"
@@ -619,7 +627,7 @@
                  type="text"
                  size="mini"
                  @click="addDetailRow(scope.$index)"
                  v-if="dialogType == 'edit'"
                  v-if="operationType == 'edit'"
                  >新增</el-button
                >
                <el-button
@@ -628,7 +636,7 @@
                  "
                  type="text"
                  size="small"
                  v-if="dialogType == 'edit'"
                  v-if="operationType == 'edit'"
                  >删除</el-button
                >
                <el-button
@@ -644,9 +652,9 @@
          </el-table>
        </el-row>
        <el-row style="margin-top: 25px; margin-bottom: 5px">
          <el-col :span="20">报销请款明细:</el-col>
          <el-col :span="20">打款明细</el-col>
        </el-row>
        <el-row style="margin-top: 30px">
        <el-row style="margin-top: 5px">
          <el-table
            :data="rbPayees"
            border
@@ -810,7 +818,7 @@
              label="操作"
              align="center"
              width="100"
              v-if="dialogType == 'edit'"
              v-if="operationType == 'edit'"
            >
              <template slot-scope="scope">
                <el-button
@@ -832,32 +840,36 @@
            </el-table-column>
          </el-table>
        </el-row>
        <el-row v-if="dialogType == 'detail' || dialogType == 'check'">
        <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 != 'add'">
          <el-table :data="fundflowList" border>
            <el-table-column
              label="审核人"
              align="center"
              width="120"
              prop="checkusername"
            />
            <el-table-column
              label="审核日期"
              align="center"
              width="160"
              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
              >
            >
              <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="审核备注"
@@ -868,7 +880,7 @@
        </el-row>
        <el-row
          style="margin-top: 25px; margin-bottom: 5px"
          v-if="dialogType == 'check'"
          v-if="operationType == 'check'"
        >
          <el-col :span="7">
            <el-form-item label="审核结果" align="left">
@@ -879,7 +891,7 @@
            </el-form-item>
          </el-col>
        </el-row>
        <el-row v-if="dialogType == 'check'">
        <el-row v-if="operationType == 'check'">
          <el-col :span="17">
            <el-form-item label="审核备注" align="left">
              <el-input v-model="checkObj.flowconclusion" placeholder="备注" />
@@ -891,13 +903,13 @@
        <el-button
          type="primary"
          @click="submitForm"
          v-if="dialogType == 'edit'"
          v-if="operationType == 'edit'"
          >保 存</el-button
        >
        <el-button
          type="primary"
          @click="checksubmit"
          v-if="dialogType == 'check'"
          v-if="operationType == 'check'"
          >提 交</el-button
        >
        <!--<el-button @click="cancel">退 出</el-button>-->
@@ -921,14 +933,14 @@
                  uploadSccess(response, file, fileList)
              "
              :on-preview="downFile"
              :disabled="dialogType == 'detail'"
              :disabled="operationType == 'detail'"
              :on-error="handleUploadError"
              :on-exceed="handleExceed"
              :on-remove="remove"
              accept="image/*,.pdf"
            >
              <el-button
                :disabled="dialogType == 'detail'"
                :disabled="operationType == 'detail'"
                size="small"
                type="primary"
                >上传</el-button
@@ -946,10 +958,34 @@
        </div>
        <div v-if="this.previewpdf" class="pdfimgmin">
          <img :src="pdfimg" />
          <!-- <img :src="pdfimg" /> -->
          <el-image
            style="width: 95%; height: 90%"
            :src="pdfimg"
            :preview-src-list="pdfimgsrcList"
          >
            <!-- <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-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>
@@ -1035,6 +1071,10 @@
        value: 0,
        label: ""
      },
      pdfimgsrcList: [],
      Savereminder: false, //提醒保存弹框
      Reminderquantity: 0, //提醒数量
      totalquantity: 0, //总数量
      hintitle: "选中左侧已上传文件预览查看",
      atpresent: "",
@@ -1052,6 +1092,11 @@
      loading: true,
      // 导出遮罩层
      exportLoading: false,
      // 网络请求头
      Networkheader: null,
      // 当前单据ID
      curId: 0,
      // 选中数组
      ids: [],
      // 非单个禁用
@@ -1114,7 +1159,7 @@
      defaultperson: {},
      fundflowList: [],
      showApproveRecordDialog: false,
      dialogType: "edit",
      operationType: "edit",
      //上传发票文件路径
      uploadFileUrl: process.env.VUE_APP_BASE_API + "/common/upload",
@@ -1143,6 +1188,8 @@
  },
  created() {
    this.Getnetworkheader();
    //获取记录列表
    // this.getList();
@@ -1179,23 +1226,41 @@
  mounted() {
    //选择业务类型: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();
    });
  },
  methods: {
    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);
      }
    },
    remove(file, fileList) {
      const rbDetails = [...this.rbDetails];
      this.fileListto.splice(this.fileListto.indexOf(file), 1);
@@ -1209,13 +1274,19 @@
    //文件上传成功回调
    uploadSccess(response, file, fileList) {
      this.rbDetails;
      //获取票据信息位置
      if (response.code == 200) {
        this.form.filename = file.raw.name;
        this.$modal.msgSuccess(response.msg);
        this.fileListto.push({ name: file.name, url: response.url });
        this.fileListto.push({
          name: file.name,
          url: response.fileName
        });
        // this.fileListto.push({
        //   name: file.name,
        //   url: response.url
        // });
        this.rbDetails[this.atpresent].annexfilesList = this.fileListto;
      } else {
        console.log(response.msg);
@@ -1225,8 +1296,14 @@
    Filepopup(index, rows, row) {
      this.atpresent = index;
      this.pdfVisible = true;
      console.log(this.rbDetails[index]);
      if (this.rbDetails[index].annexfilesList) {
        this.fileListto = this.rbDetails[index].annexfilesList;
        console.log(this.fileListto);
        this.pdfimg = this.Networkheader + "/prod-api" + this.fileListto[0].url;
        console.log(this.pdfimg);
        this.pdfimgsrcList = [];
        this.pdfimgsrcList.push(this.pdfimg);
      } else {
        this.fileListto = [];
        this.pdfimg = "";
@@ -1246,9 +1323,12 @@
      } else if (name[1] == "jpg" || "png") {
        this.previewpdf = true;
        if (item.url) {
          this.pdfimg = item.url;
          this.pdfimg = this.Networkheader + "/prod-api" + item.url;
          this.pdfimgsrcList = [];
          this.pdfimgsrcList.push(this.pdfimg);
          console.log(this.pdfimg);
        } else {
          this.pdfimg = item.response.url;
          this.pdfimg = this.Networkheader + "/prod-api" + item.response.url;
        }
      } else {
        this.hintitle = "当前文件暂不支持预览";
@@ -1262,6 +1342,9 @@
      treeselect().then(response => {
        this.deptOptions = response.data;
      });
    },
    cellCilicksa(row) {
      console.log(row);
    },
    //获取人员列表
@@ -1391,7 +1474,17 @@
        }
        //伙食费补助:城市(西藏,新疆,青海.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);
@@ -1536,6 +1629,7 @@
      this.loading = true;
      listReimbursement(this.queryParams).then(response => {
        this.reimbursementList = response.rows;
        console.log(this.reimbursementList);
        this.total = response.total;
        this.loading = false;
      });
@@ -1635,7 +1729,7 @@
      this.reset();
      // this.open = true;
      this.title = "新增差旅申请单";
      this.dialogType = "edit";
      this.operationType = "edit";
      this.fundflowList = [];
      console.log(this.title, this.defaultperson);
@@ -1651,20 +1745,19 @@
    },
    /** 修改按钮操作 */
    handleUpdate(ids) {
    handleUpdate(curId) {
      // this.$router.push({
      //   path: "/finance/travelexpenseslist/Modifydetails/",
      //   query: { id: ids }
      // });
      this.dialogType = "edit";
      this.operationType = "edit";
      this.reset();
      // this.open = true;
      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
@@ -1673,9 +1766,8 @@
          : [];
        this.form.recordstatus = response.data.recordstatus + "";
        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) {
@@ -1698,19 +1790,29 @@
        });
        //获取报销打款信息
        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.dialogType = "detail";
      this.operationType = "detail";
      this.title = "报销申请详情";
      this.reset();
@@ -1770,7 +1872,7 @@
    /** 审核按钮操作 */
    handleCheck(ids) {
      this.dialogType = "check";
      this.operationType = "check";
      this.title = "报销申请详情";
      this.reset();
@@ -1852,8 +1954,10 @@
      checkfund(checkfundobj).then(res => {
        this.reset();
        this.open = false;
        this.getList();
        this.$modal.msgSuccess("提交审核成功!");
        // 关闭窗口
        this.$store.dispatch("tagsView/delView", this.$route);
        this.$router.go(-1);
      });
    },
@@ -1970,7 +2074,9 @@
            this.open = false;
            // 关闭窗口
            this.$store.dispatch("tagsView/delView", this.$route);
            this.$router.go(-1);
            // this.getList();
            // })
            // .catch(err => {
@@ -1998,6 +2104,7 @@
                this.open = false;
                // 关闭窗口
                this.$store.dispatch("tagsView/delView", this.$route);
                this.$router.go(-1);
              })
              .catch(err => {
@@ -2039,6 +2146,100 @@
          this.exportLoading = false;
        })
        .catch(() => {});
    },
    // 取消提醒
    unsave() {
      this.Savereminder = false;
      this.Reminderquantity = 0;
    },
    // 接受提醒立刻保存
    Savenow() {
      this.Savereminder = false;
      this.Reminderquantity = 0;
      this.totalquantity = 0;
      this.$refs["form"].validate(valid => {
        if (valid) {
          //票据文件处理
          let list = this.fileListto;
          console.log(list);
          //校验请款金额合计是否等于报销单金额
          if (
            this.form.amountrequested !=
            this.rbPayees.reduce(
              (amount, item) => amount + Number(item.amount),
              0.0
            )
          ) {
            this.$message({
              message:
                "报销请款表中合计金额不等于报销单的报销金额,请更正后再保存!",
              type: "warning"
            });
            return;
          }
          const rbDetails = [...this.rbDetails];
          const rbPayees = [...this.rbPayees];
          if (this.form.id != null) {
            console.log(this.form);
            updateReimbursement(this.form);
            //   .then(res => {
            //保存明细
            for (let i = 0; i < rbDetails.length; i++) {
              if (rbDetails[i].rbid != null) {
                updateReimbursementdetail(rbDetails[i]);
              } 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]);
              }
            }
            this.$modal.msgSuccess("修改报销单保存成功!");
            // this.getList();
            // })
            // .catch(err => {
            //   this.$modal.msgError("修改报销单保存失败!");
            // });
          } else {
            this.form.recordstatus = -1;
            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]);
                }
                this.$modal.msgSuccess("新增报销单保存成功!");
              })
              .catch(err => {
                this.$modal.msgError("新增报销单保存失败!");
              });
          }
        }
      });
    },
    //新增一行
@@ -2083,11 +2284,17 @@
        personname: null,
        destination: null
      };
      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;
      }
@@ -2106,11 +2313,17 @@
        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;
      }