yxh
16 小时以前 3873d3c350c8c1edd7bfdc8afe08c9e78f56d968
调整费用申请模式
已修改9个文件
已添加2个文件
1981 ■■■■■ 文件已修改
src/api/project/register.js 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/donationdetails/index.vue 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/fund/applyDetail/index.vue 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/fund/ethicalExpertFeeApply/index.vue 422 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/fund/expertFeeApply/index.vue 409 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/fund/medicalCostApply/index.vue 505 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/register/index.vue 351 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/statistics/applyStatistics/index.vue 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/statistics/caseStatistics/index.vue 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/statistics/chargeStatistics/index.vue 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/statistics/performanceStaristics/index.vue 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/project/register.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
import request from '@/utils/request'
// æŸ¥è¯¢å™¨å®˜åŽ»å¤„åˆ—è¡¨ï¼ˆæ•°æ®æºï¼šè§†å›¾ v_service_donateorgan_register)
export function listRegister(query) {
  return request({
    url: '/project/register/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢å™¨å®˜åŽ»å¤„è¯¦ç»†
export function getRegister(id) {
  return request({
    url: '/project/register/' + id,
    method: 'get'
  })
}
// å¯¼å‡ºå™¨å®˜åŽ»å¤„åˆ—è¡¨
export function exportRegister(query) {
  return request({
    url: '/project/register/export',
    method: 'get',
    params: query
  })
}
src/views/project/donationdetails/index.vue
@@ -4539,16 +4539,16 @@
  overflow: hidden;
  transition: all 0.3s ease;
  // å·¦ä¾§å·¥ä½œè¿›ç¨‹æ 
  // å·¦ä¾§å·¥ä½œè¿›ç¨‹æ ï¼ˆ2026-10-22:去掉底色,只留一条分隔线;标题文字改品牌青)
  .left-course {
    background: #fff;
    background: transparent;
    width: 220px;
    min-width: 220px;
    text-align: center;
    margin: 0;
    padding: 0;
    height: 100%;
    box-shadow: 2px 0 8px rgba(16, 24, 40, 0.08);
    border-right: 1px solid var(--opo-border-base, #e5e7eb);
    transition: all 0.3s ease;
    position: relative;
    z-index: 100;
@@ -4583,10 +4583,10 @@
      flex-direction: column;
      .title {
        background: var(--opo-primary, #0e768f);
        background: transparent;
        margin-bottom: 0;
        padding: 15px 10px;
        color: #fff;
        color: var(--opo-primary, #0e768f);
        font-size: 16px;
        font-weight: 600;
        display: flex;
@@ -4596,11 +4596,13 @@
        transition: all 0.3s ease;
        min-height: 54px; // ç¡®ä¿æ ‡é¢˜åŒºåŸŸæœ‰å›ºå®šé«˜åº¦
        box-sizing: border-box;
        border-bottom: 1px solid var(--opo-border-base, #e5e7eb);
        .collapse-btn {
          background: rgba(255, 255, 255, 0.2);
          border: none;
          color: #fff;
          // æ ‡é¢˜åº•色去掉后,按钮改为浅青描边风格,避免白底白字看不见
          background: var(--opo-primary-light-9, #e7f1f4);
          border: 1px solid var(--opo-primary-light-7, #b7d6dd);
          color: var(--opo-primary, #0e768f);
          width: 32px; // ç¨å¾®å¢žå¤§ç¡®ä¿å¯ç‚¹å‡»åŒºåŸŸ
          height: 32px;
          padding: 0;
@@ -4612,7 +4614,8 @@
          flex-shrink: 0; // é˜²æ­¢æŒ‰é’®è¢«åŽ‹ç¼©
          &:hover {
            background: rgba(255, 255, 255, 0.3);
            background: var(--opo-primary-light-7, #b7d6dd);
            border-color: var(--opo-primary, #0e768f);
            transform: scale(1.1);
          }
src/views/project/fund/applyDetail/index.vue
@@ -68,15 +68,7 @@
            <el-form-item label="捐献案例" prop="name">
              <el-input :disabled="true" v-model="form.donorname" placeholder="请输入捐献者姓名" />
            </el-form-item>
          </el-col>
          <el-col :span="4">
            <div style="margin-left: 10px;">
              <dict-tag
                :options="dict.type.sys_DonationStatus"
                :value="form.invoicecount"
              />
            </div>
          </el-col>
          </el-col>
          <el-col :span="10">
            <el-form-item label="申请说明" prop="remark">
              <el-input v-model="form.remark" placeholder="申请说明" />
@@ -2606,6 +2598,23 @@
      });
      this.batchdialogVisible = true;
    },
    /**
     * æ˜Žç»†è¡Œæ˜¯å¦ä¸ºã€Œç©ºè®°å½•」:服务项目、专家、专家所在单位 æ˜¯å¦éƒ½ä¸ºç©º
     * ç”¨äºŽæ‰¹é‡å½•入专家时判断"复用最后一行"还是"追加新行"
     */
    isBlankDetailRow(row) {
      if (!row) {
        return false;
      }
      const isEmpty = v =>
        v === null || v === undefined || String(v).trim() === "";
      return (
        isEmpty(row.itemid) &&
        isEmpty(row.beneficiaryname) &&
        isEmpty(row.unitno) &&
        isEmpty(row.unitname)
      );
    },
    /** æ‰¹é‡å½•入弹框:姓名/单位/工号/身份证后4位 å‘½ä¸­åˆ¤æ–­ */
    personMatchKeyword(item, kw) {
      const idcard = String(item.idcrad || "");
@@ -2631,6 +2640,17 @@
          existed[String(row.beneficiaryname).trim()] = true;
        }
      });
      // 2026-10-22:修正"导入后表格多出一行空记录"。
      // è§„则:先看最后一条记录,若它的"服务项目 / ä¸“å®¶ / ä¸“家所在单位"都是空的,
      // è¯´æ˜Žæ˜¯ä¸€æ¡ç©ºè®°å½•,就从这一行开始填;否则追加新行。
      let writeIndex = this.rbDetails.length;
      if (
        writeIndex > 0 &&
        this.isBlankDetailRow(this.rbDetails[writeIndex - 1])
      ) {
        writeIndex -= 1;
      }
      const duplicated = [];
      this.checkedCities.forEach(item => {
@@ -2690,7 +2710,13 @@
          annexfiles: null
        };
        this.rbDetails.push(rowData);
        if (writeIndex < this.rbDetails.length) {
          // å¤ç”¨æœ€åŽé‚£æ¡ç©ºè®°å½•
          this.rbDetails.splice(writeIndex, 1, rowData);
        } else {
          this.rbDetails.push(rowData);
        }
        writeIndex++;
      });
      for (let i = 0; i < this.rbDetails.length; i++) {
        this.rbDetails[i].orderno = i + 1;
src/views/project/fund/ethicalExpertFeeApply/index.vue
@@ -1,123 +1,67 @@
<!--  -->
<template>
  <div class="app-container">
    <el-form
      class="opo-query-form"
      :model="queryParams"
      ref="queryForm"
      :inline="true"
      label-width="70px"
    >
      <el-row align="left">
        <el-col :span="6">
          <el-form-item label="姓名" prop="name">
            <el-input
              v-model="queryParams.name"
              placeholder="请输入姓名"
              clearable
              size="small"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="捐献进度" prop="recordstate">
            <el-select
              v-model="queryParams.recordstate"
              placeholder="请选择记录状态"
              clearable
              size="small"
            >
              <el-option
                v-for="dict in dict.type.sys_DonationStatus"
                :key="dict.value"
                :label="dict.label"
                :value="dict.value"
              />
            </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"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-button
            type="primary"
            icon="el-icon-search"
            size="mini"
            @click="handleQuery"
            >搜索</el-button
          >
          <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
            >重置</el-button
          >
        </el-col>
      </el-row>
    </el-form>
    <el-row>
      <el-col :span="6">
        <el-card shadow="never">
          <!-- æçŒ®æ¡ˆä¾‹åˆ—表 -->
          <el-row>
            <el-col :span="10">
              <el-row type="flex" :gutter="10" align="right" class="mb8">
              </el-row>
            </el-col>
          </el-row>
          <el-table
            v-loading="loading"
            border
            highlight-current-row
            :data="donatebaseinfoList"
            @row-click="selectDonotor"
          >
            <!-- <el-table-column label="捐献编号" align="center" prop="donorno" /> -->
            <el-table-column label="捐献进度" align="center" prop="recordstate">
              <template slot-scope="scope">
                <dict-tag
                  :options="dict.type.sys_DonationStatus"
                  :value="scope.row.recordstate"
                />
              </template>
            </el-table-column>
            <el-table-column label="姓名" align="center" prop="name" />
          </el-table>
          <pagination
            v-show="total > 0"
            :total="total"
            small
            :page.sync="queryParams.pageNum"
            :limit.sync="queryParams.pageSize"
            @pagination="getBaseInfoList"
          />
        </el-card>
      </el-col>
      <el-col :span="18">
      <el-col :span="24">
        <el-card shadow="naver">
          <el-form ref="infoform" label-width="100px">
            <el-row :gutter="4" align="right" class="mb8">
              <el-col :span="9">
                <el-form-item label="捐献编号">
                  <el-input
                    v-model="curCase.donorno"
                    :disabled="true"
                  ></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="9">
                <el-form-item label="姓名">
                  <el-input v-model="curCase.name" :disabled="true"></el-input>
                </el-form-item>
              </el-col>
            </el-row>
            <!-- æŠ¥é”€å•筛选:捐献者、审批状态 -->
            <el-form
              class="opo-query-form"
              :model="fundQueryParam"
              ref="fundQueryForm"
              :inline="true"
              label-width="82px"
            >
              <el-row>
                <el-col :span="6">
                  <el-form-item label="捐献者" prop="donorname">
                    <el-input
                      v-model="fundQueryParam.donorname"
                      placeholder="请输入捐献者姓名"
                      clearable
                      size="small"
                      @keyup.enter.native="handleQueryFund"
                    />
                  </el-form-item>
                </el-col>
                <el-col :span="6">
                  <el-form-item label="审批状态" prop="recordstatus">
                    <el-select
                      v-model="fundQueryParam.recordstatus"
                      placeholder="请选择审批状态"
                      clearable
                      size="small"
                      style="width: 100%"
                    >
                      <el-option
                        v-for="dict in dict.type.sys_recordstatus"
                        :key="dict.value"
                        :label="dict.label"
                        :value="Number(dict.value)"
                      />
                    </el-select>
                  </el-form-item>
                </el-col>
                <el-col :span="6">
                  <el-form-item label-width="10px">
                    <el-button
                      type="primary"
                      icon="el-icon-search"
                      size="small"
                      @click="handleQueryFund"
                      >搜索</el-button
                    >
                    <el-button
                      icon="el-icon-refresh"
                      size="small"
                      @click="resetFundQuery"
                      >重置</el-button
                    >
                  </el-form-item>
                </el-col>
              </el-row>
            </el-form>
            <el-row :gutter="10" class="mb8">
              <el-col :span="1.5">
                <el-button
@@ -199,6 +143,13 @@
                    />
                  </template>
                </el-table-column>
                <el-table-column
                  label="捐献者"
                  align="center"
                  prop="donorname"
                  width="110px"
                  show-overflow-tooltip
                />
                <!--
                <el-table-column label="联系电话" align="center" prop="phone" width="150px" />
                <el-table-column label="工作单位" align="center" prop="unitname" width="220px" />
@@ -262,11 +213,119 @@
                  </template>
                </el-table-column>
              </el-table>
              <!-- æœªé€‰æ‹©æ¡ˆä¾‹æ—¶å±•示该登录人全部伦理审查单据,超过一页可用分页翻看 -->
              <pagination
                v-show="fundTotal > 0"
                :total="fundTotal"
                small
                :page.sync="fundQueryParam.pageNum"
                :limit.sync="fundQueryParam.pageSize"
                @pagination="listFundData"
              />
            </el-row>
          </el-form>
        </el-card>
      </el-col>
    </el-row>
    <!-- æ–°å¢žç”³è¯·å•前先选择捐献案例(原左侧案例列表移到这里) -->
    <el-dialog
      title="选择捐献案例"
      :visible.sync="caseDialogVisible"
      width="760px"
      append-to-body
    >
      <el-form
        class="opo-query-form"
        :model="queryParams"
        ref="queryForm"
        :inline="true"
        label-width="70px"
      >
        <el-row>
          <el-col :span="8">
            <el-form-item label="姓名" prop="name">
              <el-input
                v-model="queryParams.name"
                placeholder="请输入姓名"
                clearable
                size="small"
                @keyup.enter.native="handleQuery"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="捐献进度" prop="recordstate">
              <el-select
                v-model="queryParams.recordstate"
                placeholder="请选择记录状态"
                clearable
                size="small"
                style="width: 100%"
              >
                <el-option
                  v-for="dict in dict.type.sys_DonationStatus"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label-width="10px">
              <el-button
                type="primary"
                icon="el-icon-search"
                size="small"
                @click="handleQuery"
                >搜索</el-button
              >
              <el-button icon="el-icon-refresh" size="small" @click="resetQuery"
                >重置</el-button
              >
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <el-table
        ref="caseTable"
        v-loading="loading"
        border
        height="380"
        highlight-current-row
        :data="donatebaseinfoList"
        @row-click="selectDonotor"
      >
        <el-table-column label="捐献进度" align="center" prop="recordstate">
          <template slot-scope="scope">
            <dict-tag
              :options="dict.type.sys_DonationStatus"
              :value="scope.row.recordstate"
            />
          </template>
        </el-table-column>
        <el-table-column label="姓名" align="center" prop="name" />
        <el-table-column label="操作" align="center" width="90">
          <template slot-scope="scope">
            <el-button type="text" size="mini" @click="selectDonotor(scope.row)"
              >选择</el-button
            >
          </template>
        </el-table-column>
      </el-table>
      <pagination
        v-show="total > 0"
        :total="total"
        small
        :page.sync="queryParams.pageNum"
        :limit.sync="queryParams.pageSize"
        @pagination="getBaseInfoList"
      />
      <div slot="footer" class="dialog-footer">
        <el-button @click="caseDialogVisible = false">取 æ¶ˆ</el-button>
      </div>
    </el-dialog>
    <!-- æ·»åŠ æˆ–ä¿®æ”¹è´¹ç”¨ç”³è¯·å• -->
    <el-dialog
@@ -1013,11 +1072,19 @@
      },
      fundQueryParam: {
        pageNum: 1,
        pageSize: 100,
        pageSize: 10,
        infoid: null,
        applytype: "2",
        createBy: null
        createBy: null,
        // æŠ¥é”€å•筛选条件
        donorname: null,
        recordstatus: null
      },
      // å³ä¾§æŠ¥é”€å•总数(用于分页)
      fundTotal: 0,
      // ã€Œé€‰æ‹©æçŒ®æ¡ˆä¾‹ã€å¯¹è¯æ¡†ï¼ˆæ–°å¢žç”³è¯·å•时使用)
      caseDialogVisible: false,
      casePickerMode: "",
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
@@ -1104,55 +1171,23 @@
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      if (this.curCase.id) {
        this.$router.push({
          path: "/finance/applyDetail/",
          query: {
            id: 0,
            businessType: "2",
            operationType: "add",
            curCase: this.curCase
          }
        });
      } else {
        const h = this.$createElement;
        this.$message({
          message: h("p", null, [
            h("span", null, "请在左边的捐献案例表选择需要操作的案例!")
          ])
        });
      }
      return;
      // æ–°å¢žç”³è¯·å•:先弹出「选择捐献案例」对话框
      this.casePickerMode = "add";
      this.caseDialogVisible = true;
      this.getBaseInfoList();
    },
      if (this.curCase.id) {
        this.istrue += 2;
        this.reset();
        this.dialogOpen = true;
        this.title = "添加费用申请";
        this.dialogType = "edit";
        this.queryParams.params = {};
        this.form.infoid = this.curCase.id;
        this.form.donorno = this.curCase.donorno;
        this.form.donorname = this.curCase.name;
        this.form.username = this.defaultperson.nickName;
        this.form.userno = this.defaultperson.userName;
        this.form.deptmentname = this.defaultperson.dept.deptName;
        this.form.deptmentno = this.defaultperson.dept.deptId;
        this.form.managername = this.defaultperson.dept.leader;
        // this.form.createTime = nowdate;
        //this.open = true;
        //this.initFundApplyForm();
        this.fundDetailArr = [];
        this.fundflowList = [];
        this.addRow();
      } else {
        const h = this.$createElement;
        this.$message({
          message: h("p", null, [h("span", null, "请先选择左方捐献案例 ")])
        });
      }
    /** æºå¸¦å·²é€‰æ¡ˆä¾‹è·³è½¬åˆ°ç”³è¯·å•填写页 */
    goApplyAdd() {
      this.$router.push({
        path: "/finance/applyDetail/",
        query: {
          id: 0,
          businessType: "2",
          operationType: "add",
          curCase: this.curCase
        }
      });
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
@@ -1496,18 +1531,60 @@
    //点击捐献案例列表触发方法
    selectDonotor(row, column, event) {
      this.curCase = row;
      this.getfundList();
      if (this.casePickerMode === "add") {
        // ä»Žã€Œæ–°å¢žç”³è¯·å•」进入:选完案例直接跳到申请单填写页
        this.casePickerMode = "";
        this.caseDialogVisible = false;
        this.goApplyAdd();
      }
    },
    /** æŒ‰å½“前 fundQueryParam æŸ¥è¯¢å³ä¾§æŠ¥é”€å•列表 */
    listFundData() {
      this.loading = true;
      listFund(this.fundQueryParam).then(response => {
        this.loading = false;
        this.donateconsolationfundList = response.rows;
        this.fundTotal = response.total;
      });
    },
    /** æŠ¥é”€å•筛选:搜索 */
    handleQueryFund() {
      this.fundQueryParam.pageNum = 1;
      this.listFundData();
    },
    /** æŠ¥é”€å•筛选:重置(清空条件与已选案例,回到该登录人全部单据) */
    resetFundQuery() {
      this.fundQueryParam.donorname = null;
      this.fundQueryParam.recordstatus = null;
      this.getAllfundList();
    },
    /** æ£€ç´¢å…¨éƒ¨ï¼šå–消案例选择与筛选条件,查询当前登录人的全部伦理审查单据 */
    getAllfundList() {
      this.curCase = {};
      if (this.$refs.caseTable) {
        this.$refs.caseTable.setCurrentRow();
      }
      this.reset();
      this.fundQueryParam.infoid = null;
      this.fundQueryParam.donorname = null;
      this.fundQueryParam.recordstatus = null;
      this.fundQueryParam.pageNum = 1;
      this.listFundData();
    },
    //获取案例专家费用申请单
    getfundList() {
      this.loading = true;
      this.reset();
      // é€‰ä¸­æ¡ˆä¾‹åŽæŒ‰æ¡ˆä¾‹å±•示,同时清掉列表筛选条件,避免两个条件叠加导致空列表
      this.fundQueryParam.donorname = null;
      this.fundQueryParam.recordstatus = null;
      this.fundQueryParam.infoid = this.curCase.id;
      listFund(this.fundQueryParam).then(response => {
        this.loading = false;
        this.donateconsolationfundList = response.rows;
      });
      this.fundQueryParam.pageNum = 1;
      this.listFundData();
    },
    select(row) {
@@ -2058,10 +2135,11 @@
  //生命周期 - åˆ›å»ºå®Œæˆï¼ˆå¯ä»¥è®¿é—®å½“前this实例)
  created() {
    this.getUnitList();
    this.getList();
    this.getBaseInfoList();
    // æ¡ˆä¾‹åˆ—表已移入「选择捐献案例」对话框,打开对话框时再查询
    this.getlistUser();
    this.getCurFundType();
    // é¦–屏展示当前登录人的全部伦理审查单据
    this.getAllfundList();
  },
  //生命周期 - æŒ‚载完成(可以访问DOM元素)
  mounted() {
src/views/project/fund/expertFeeApply/index.vue
@@ -2,120 +2,66 @@
<template>
  <div class="app-container">
    <el-row>
      <el-col :span="6">
        <el-card shadow="never">
          <!-- æçŒ®æ¡ˆä¾‹åˆ—表 -->
          <el-row>
            <el-col :span="10">
              <el-row type="flex" :gutter="10" align="right" class="mb8">
              </el-row>
            </el-col>
          </el-row>
          <div>
            <el-form
              class="opo-query-form"
              :model="queryParams"
              ref="queryForm"
              :inline="true"
              label-width="70px"
            >
              <el-form-item label="姓名" prop="name">
                <el-input
                  v-model="queryParams.name"
                  placeholder="请输入姓名"
                  clearable
                  size="small"
                  @keyup.enter.native="handleQuery"
                />
              </el-form-item>
              <el-form-item label="捐献进度" prop="recordstate">
                <el-select
                  v-model="queryParams.recordstate"
                  placeholder="请选择记录状态"
                  clearable
                  size="small"
                >
                  <el-option
                    v-for="dict in dict.type.sys_DonationStatus"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
                  />
                </el-select>
              </el-form-item>
              <div style="float: right; margin-bottom: 10px;">
                <el-button
                  type="primary"
                  icon="el-icon-search"
                  size="mini"
                  @click="handleQuery"
                  >搜索</el-button
                >
                <el-button
                  icon="el-icon-refresh"
                  size="mini"
                  @click="resetQuery"
                  >重置</el-button
                >
              </div>
            </el-form>
          </div>
          <el-table
            v-loading="loading"
            highlight-current-row
            :data="donatebaseinfoList"
            @row-click="selectDonotor"
          >
            <!-- <el-table-column label="捐献编号" align="center" prop="donorno" /> -->
            <el-table-column label="捐献进度" align="center" prop="recordstate">
              <template slot-scope="scope">
                <dict-tag
                  :options="dict.type.sys_DonationStatus"
                  :value="scope.row.recordstate"
                  :key="dict.value"
                />
                <!-- :label="dict.label" -->
              </template>
            </el-table-column>
            <el-table-column label="姓名" align="center" prop="name" />
          </el-table>
          <pagination
            v-show="total > 0"
            :total="total"
            small
            :page.sync="queryParams.pageNum"
            :limit.sync="queryParams.pageSize"
            @pagination="getBaseInfoList"
          />
        </el-card>
      </el-col>
      <el-col :span="18">
      <el-col :span="24">
        <el-card shadow="naver">
          <el-form ref="infoform" label-width="100px">
            <el-row :gutter="4" align="right" class="mb8">
              <el-col :span="7">
                <el-form-item label="捐献编号">
                  <el-input
                    v-model="curCase.donorno"
                    :disabled="true"
                  ></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="8">
                <el-form-item label="姓名">
                  <el-input v-model="curCase.name" :disabled="true"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="3">
                <el-button
                  type="primary"
                  icon="el-icon-search"
                  size="mini"
                  @click="allgetfundList"
                  >检索全部</el-button
                >
              </el-col>
            </el-row>
            <!-- æŠ¥é”€å•筛选:捐献者、审批状态 -->
            <el-form
              class="opo-query-form"
              :model="fundQueryParam"
              ref="fundQueryForm"
              :inline="true"
              label-width="82px"
            >
              <el-row>
                <el-col :span="6">
                  <el-form-item label="捐献者" prop="donorname">
                    <el-input
                      v-model="fundQueryParam.donorname"
                      placeholder="请输入捐献者姓名"
                      clearable
                      size="small"
                      @keyup.enter.native="handleQueryFund"
                    />
                  </el-form-item>
                </el-col>
                <el-col :span="6">
                  <el-form-item label="审批状态" prop="recordstatus">
                    <el-select
                      v-model="fundQueryParam.recordstatus"
                      placeholder="请选择审批状态"
                      clearable
                      size="small"
                      style="width: 100%"
                    >
                      <el-option
                        v-for="dict in dict.type.sys_recordstatus"
                        :key="dict.value"
                        :label="dict.label"
                        :value="Number(dict.value)"
                      />
                    </el-select>
                  </el-form-item>
                </el-col>
                <el-col :span="6">
                  <el-form-item label-width="10px">
                    <el-button
                      type="primary"
                      icon="el-icon-search"
                      size="small"
                      @click="handleQueryFund"
                      >搜索</el-button
                    >
                    <el-button
                      icon="el-icon-refresh"
                      size="small"
                      @click="resetFundQuery"
                      >重置</el-button
                    >
                  </el-form-item>
                </el-col>
              </el-row>
            </el-form>
            <el-row :gutter="10" class="mb8">
              <el-col :span="1.5">
                <el-button
@@ -269,6 +215,8 @@
                    <!-- v-hasPermi="['project:expretfund:download']" -->
                  </template>
                </el-table-column>
                <!-- 2026-10-22:按要求隐藏「功能」列(线下报销),需要时取消注释即可恢复 -->
                <!--
                <el-table-column
                  fixed="right"
                  align="center"
@@ -288,12 +236,121 @@
                    >
                  </template>
                </el-table-column>
                -->
              </el-table>
              <!-- æœªé€‰æ‹©æ¡ˆä¾‹æ—¶å±•示该登录人全部专家劳务单据,超过一页可用分页翻看 -->
              <pagination
                v-show="fundTotal > 0"
                :total="fundTotal"
                small
                :page.sync="fundQueryParam.pageNum"
                :limit.sync="fundQueryParam.pageSize"
                @pagination="listFundData"
              />
            </el-row>
          </el-form>
        </el-card>
      </el-col>
    </el-row>
    <!-- æ–°å¢žç”³è¯·å•前先选择捐献案例(原左侧案例列表移到这里) -->
    <el-dialog
      title="选择捐献案例"
      :visible.sync="caseDialogVisible"
      width="760px"
      append-to-body
    >
      <el-form
        class="opo-query-form"
        :model="queryParams"
        ref="queryForm"
        :inline="true"
        label-width="70px"
      >
        <el-row>
          <el-col :span="8">
            <el-form-item label="姓名" prop="name">
              <el-input
                v-model="queryParams.name"
                placeholder="请输入姓名"
                clearable
                size="small"
                @keyup.enter.native="handleQuery"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="捐献进度" prop="recordstate">
              <el-select
                v-model="queryParams.recordstate"
                placeholder="请选择记录状态"
                clearable
                size="small"
                style="width: 100%"
              >
                <el-option
                  v-for="dict in dict.type.sys_DonationStatus"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label-width="10px">
              <el-button
                type="primary"
                icon="el-icon-search"
                size="small"
                @click="handleQuery"
                >搜索</el-button
              >
              <el-button icon="el-icon-refresh" size="small" @click="resetQuery"
                >重置</el-button
              >
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <el-table
        ref="caseTable"
        v-loading="loading"
        border
        height="380"
        highlight-current-row
        :data="donatebaseinfoList"
        @row-click="selectDonotor"
      >
        <el-table-column label="捐献进度" align="center" prop="recordstate">
          <template slot-scope="scope">
            <dict-tag
              :options="dict.type.sys_DonationStatus"
              :value="scope.row.recordstate"
            />
          </template>
        </el-table-column>
        <el-table-column label="姓名" align="center" prop="name" />
        <el-table-column label="操作" align="center" width="90">
          <template slot-scope="scope">
            <el-button type="text" size="mini" @click="selectDonotor(scope.row)"
              >选择</el-button
            >
          </template>
        </el-table-column>
      </el-table>
      <pagination
        v-show="total > 0"
        :total="total"
        small
        :page.sync="queryParams.pageNum"
        :limit.sync="queryParams.pageSize"
        @pagination="getBaseInfoList"
      />
      <div slot="footer" class="dialog-footer">
        <el-button @click="caseDialogVisible = false">取 æ¶ˆ</el-button>
      </div>
    </el-dialog>
    <!-- æ·»åŠ æˆ–ä¿®æ”¹è´¹ç”¨ç”³è¯·å• -->
    <el-dialog
@@ -1215,11 +1272,16 @@
      },
      fundQueryParam: {
        pageNum: 1,
        pageSize: 100,
        pageSize: 10,
        infoid: null,
        applytype: "1",
        createBy: null
        createBy: null,
        // æŠ¥é”€å•筛选条件
        donorname: null,
        recordstatus: null
      },
      // å³ä¾§æŠ¥é”€å•总数(用于分页)
      fundTotal: 0,
      // è¡¨å•参数
      form: {},
      //所有人员表
@@ -1268,6 +1330,9 @@
      donatebaseinfoList: [],
      //当前选中捐献案例
      curCase: {},
      // ã€Œé€‰æ‹©æçŒ®æ¡ˆä¾‹ã€å¯¹è¯æ¡†ï¼ˆæ–°å¢žç”³è¯·å•时使用)
      caseDialogVisible: false,
      casePickerMode: "",
      //是否显示费用申请弹窗
      dialogOpen: false,
      // title: "",
@@ -1363,11 +1428,12 @@
  watch: {},
  //生命周期 - åˆ›å»ºå®Œæˆï¼ˆå¯ä»¥è®¿é—®å½“前this实例)
  created() {
    this.getList();
    this.getBaseInfoList();
    // æ¡ˆä¾‹åˆ—表已移入「选择捐献案例」对话框,打开对话框时再查询
    this.getCurFundType();
    this.getUserList();
    this.getUnitList();
    // é¦–屏展示当前登录人的全部专家劳务单据
    this.allgetfundList();
  },
  //生命周期 - æŒ‚载完成(可以访问DOM元素)
@@ -1411,57 +1477,24 @@
      });
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    /** æ–°å¢žæŒ‰é’®æ“ä½œï¼šå…ˆå¼¹å‡ºã€Œé€‰æ‹©æçŒ®æ¡ˆä¾‹ã€å¯¹è¯æ¡† */
    handleAdd() {
      if (this.curCase.id) {
        this.$router.push({
          path: "/finance/applyDetail/",
          query: {
            id: 0,
            businessType: "1",
            operationType: "add",
            curCase: this.curCase
          }
        });
      } else {
        const h = this.$createElement;
        this.$message({
          message: h("p", null, [
            h("span", null, "请在左边的捐献案例表选择需要操作的案例!")
          ])
        });
      }
      return;
      this.casePickerMode = "add";
      this.caseDialogVisible = true;
      this.getBaseInfoList();
    },
      if (this.curCase.id) {
        this.istrue += 2;
        this.reset();
        this.queryParams.params = {};
        this.form.infoid = this.curCase.id;
        this.form.donorno = this.curCase.donorno;
        this.form.donorname = this.curCase.name;
        this.form.username = this.defaultperson.nickName;
        this.form.userno = this.defaultperson.userName;
        this.form.phone = this.defaultperson.phonenumber;
        this.form.deptmentname = this.defaultperson.dept.deptName;
        this.form.deptmentno = this.defaultperson.dept.deptId;
        this.form.managername = this.defaultperson.dept.leader;
        // this.form.createTime = nowdate;
        //this.open = true;
        //this.initFundApplyForm();
        this.fundDetails = [];
        this.addRow();
        this.dialogOpen = true;
        this.dialogType = "edit";
        this.title = "费用申请";
      } else {
        const h = this.$createElement;
        this.$message({
          message: h("p", null, [h("span", null, "请先选择左方捐献案例 ")])
        });
      }
    /** æºå¸¦å·²é€‰æ¡ˆä¾‹è·³è½¬åˆ°ç”³è¯·å•填写页 */
    goApplyAdd() {
      this.$router.push({
        path: "/finance/applyDetail/",
        query: {
          id: 0,
          businessType: "1",
          operationType: "add",
          curCase: this.curCase
        }
      });
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
@@ -2171,25 +2204,57 @@
    //点击捐献案例列表触发方法
    selectDonotor(row, column, event) {
      this.curCase = row;
      this.getfundList();
      if (this.casePickerMode === "add") {
        // ä»Žã€Œæ–°å¢žç”³è¯·å•」进入:选完案例直接跳到申请单填写页
        this.casePickerMode = "";
        this.caseDialogVisible = false;
        this.goApplyAdd();
      }
    },
    allgetfundList() {
      this.loading = true;
      // æ£€ç´¢å…¨éƒ¨ï¼šå–消左侧案例选择与筛选条件,查询当前登录人的全部专家劳务单据
      this.curCase = {};
      if (this.$refs.caseTable) {
        this.$refs.caseTable.setCurrentRow();
      }
      this.reset();
      this.fundQueryParam.infoid = null;
      this.fundQueryParam.donorname = null;
      this.fundQueryParam.recordstatus = null;
      this.fundQueryParam.pageNum = 1;
      this.listFundData();
    },
    /** æŠ¥é”€å•筛选:搜索 */
    handleQueryFund() {
      this.fundQueryParam.pageNum = 1;
      this.listFundData();
    },
    /** æŠ¥é”€å•筛选:重置(清空条件与已选案例,回到该登录人全部单据) */
    resetFundQuery() {
      this.fundQueryParam.donorname = null;
      this.fundQueryParam.recordstatus = null;
      this.allgetfundList();
    },
    /**
     * æŒ‰å½“前 fundQueryParam æŸ¥è¯¢å³ä¾§æŠ¥é”€å•列表
     * infoid ä¸ºç©º = å½“前登录人的全部该类型单据;有值 = æŒ‡å®šæ¡ˆä¾‹
     */
    listFundData() {
      this.loading = true;
      listFund(this.fundQueryParam).then(response => {
        this.loading = false;
        this.donateconsolationfundList = response.rows;
        this.fundTotal = response.total;
      });
    },
    getfundList() {
      this.loading = true;
      this.reset();
      // é€‰ä¸­æ¡ˆä¾‹åŽæŒ‰æ¡ˆä¾‹å±•示,同时清掉列表筛选条件,避免两个条件叠加导致空列表
      this.fundQueryParam.donorname = null;
      this.fundQueryParam.recordstatus = null;
      this.fundQueryParam.infoid = this.curCase.id;
      listFund(this.fundQueryParam).then(response => {
        this.loading = false;
        this.donateconsolationfundList = response.rows;
      });
      this.fundQueryParam.pageNum = 1;
      this.listFundData();
    },
    //导入所有项目
src/views/project/fund/medicalCostApply/index.vue
@@ -2,254 +2,94 @@
<template>
  <div class="app-container">
    <el-row>
      <el-col :span="6">
        <el-card shadow="never">
          <!-- æçŒ®æ¡ˆä¾‹åˆ—表 -->
          <el-row>
            <el-col :span="10">
              <el-row type="flex" :gutter="10" align="right" class="mb8">
              </el-row>
            </el-col>
          </el-row>
          <div>
            <el-form
              class="opo-query-form"
              :model="queryParams"
              ref="queryForm"
              :inline="true"
              label-width="70px"
            >
              <el-form-item label="姓名" prop="name">
                <el-input
                  v-model="queryParams.name"
                  placeholder="请输入姓名"
                  clearable
                  size="small"
                  @keyup.enter.native="handleQuery"
                />
              </el-form-item>
              <el-form-item label="捐献进度" prop="recordstate">
                <el-select
                  v-model="queryParams.recordstate"
                  placeholder="请选择记录状态"
                  clearable
                  size="small"
                >
                  <el-option
                    v-for="dict in dict.type.sys_DonationStatus"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
                  />
                </el-select>
              </el-form-item>
              <div style="float: right; margin-bottom: 10px;">
                <el-button
                  type="primary"
                  icon="el-icon-search"
                  size="mini"
                  @click="handleQuery"
                  >搜索</el-button
                >
                <el-button
                  icon="el-icon-refresh"
                  size="mini"
                  @click="resetQuery"
                  >重置</el-button
                >
              </div>
            </el-form>
          </div>
          <el-table
            v-loading="loading"
            border
            highlight-current-row
            :data="donatebaseinfoList"
            @row-click="selectDonotor"
          >
            <!-- <el-table-column label="捐献编号" align="center" prop="donorno" /> -->
            <el-table-column label="捐献进度" align="center" prop="recordstate">
              <template slot-scope="scope">
                <dict-tag
                  :options="dict.type.sys_DonationStatus"
                  :value="scope.row.recordstate"
                />
              </template>
            </el-table-column>
            <el-table-column label="姓名" align="center" prop="name" />
          </el-table>
          <pagination
            v-show="total > 0"
            :total="total"
            small
            :page.sync="queryParams.pageNum"
            :limit.sync="queryParams.pageSize"
            @pagination="getBaseInfoList"
          />
        </el-card>
      </el-col>
      <el-col :span="18">
      <el-col :span="24">
        <el-card shadow="naver">
          <el-form ref="infoform" label-width="100px">
            <el-row :gutter="4" align="right" class="mb8">
              <el-col :span="9">
                <el-form-item label="捐献编号">
                  <el-input
                    v-model="curCase.donorno"
                    :disabled="true"
                  ></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="9">
                <el-form-item label="姓名">
                  <el-input v-model="curCase.name" :disabled="true"></el-input>
                </el-form-item>
              </el-col>
              <el-col> </el-col>
            </el-row>
            <!-- æŠ¥é”€å•筛选:捐献者、审批状态 -->
            <el-form class="opo-query-form" :model="fundQueryParam" ref="fundQueryForm" :inline="true"
              label-width="82px">
              <el-row>
                <el-col :span="6">
                  <el-form-item label="捐献者" prop="donorname">
                    <el-input v-model="fundQueryParam.donorname" placeholder="请输入捐献者姓名" clearable size="small"
                      @keyup.enter.native="handleQueryFund" />
                  </el-form-item>
                </el-col>
                <el-col :span="6">
                  <el-form-item label="审批状态" prop="recordstatus">
                    <el-select v-model="fundQueryParam.recordstatus" placeholder="请选择审批状态" clearable size="small"
                      style="width: 100%">
                      <el-option v-for="dict in dict.type.sys_recordstatus" :key="dict.value" :label="dict.label"
                        :value="Number(dict.value)" />
                    </el-select>
                  </el-form-item>
                </el-col>
                <el-col :span="6">
                  <el-form-item label-width="10px">
                    <el-button type="primary" icon="el-icon-search" size="small" @click="handleQueryFund">搜索</el-button>
                    <el-button icon="el-icon-refresh" size="small" @click="resetFundQuery">重置</el-button>
                  </el-form-item>
                </el-col>
              </el-row>
            </el-form>
            <el-row :gutter="10" class="mb8">
              <el-col :span="1.5">
                <el-button
                  type="primary"
                  plain
                  icon="el-icon-plus"
                  size="mini"
                  @click="handleAdd"
                  v-hasPermi="['project:medicalfund:add']"
                  >新增申请单</el-button
                >
                <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
                  v-hasPermi="['project:medicalfund:add']">新增申请单</el-button>
              </el-col>
            </el-row>
            <el-row>
              <el-table
                v-loading="loading"
                border
                :data="donateconsolationfundList"
                :row-class-name="rowClassName"
              >
                <el-table-column
                  label="申请日期"
                  align="center"
                  prop="applyTime"
                  width="150px"
                >
              <el-table v-loading="loading" border :data="donateconsolationfundList" :row-class-name="rowClassName">
                <el-table-column label="申请日期" align="center" prop="applyTime" width="150px">
                  <template slot-scope="scope">
                    <span>{{
                      parseTime(scope.row.applyTime, "{y}-{m}-{d}")
                    }}</span>
                  </template>
                </el-table-column>
                <el-table-column
                  label="申请人"
                  align="center"
                  prop="username"
                  width="120px"
                />
                <el-table-column
                  label="申请金额"
                  align="center"
                  prop="pretaxcost"
                  width="200px"
                />
                <el-table-column
                  label="所属组别"
                  align="center"
                  prop="deptmentname"
                  width="220px"
                />
                <el-table-column
                  label="组长"
                  align="center"
                  prop="managername"
                  width="200px"
                />
                <el-table-column
                  label="审核状态"
                  align="center"
                  prop="recordstatus"
                >
                <el-table-column label="经办人" align="center" prop="username" width="120px" />
                <el-table-column label="申请金额" align="center" prop="pretaxcost" width="200px" />
                <el-table-column label="审核状态" align="center" prop="recordstatus">
                  <template slot-scope="scope">
                    <dict-tag
                      :options="dict.type.sys_recordstatus"
                      :value="scope.row.recordstatus"
                    />
                    <dict-tag :options="dict.type.sys_recordstatus" :value="scope.row.recordstatus" />
                  </template>
                </el-table-column>
                <el-table-column
                  label="材料预审状态"
                  width="140"
                  align="center"
                  prop="checkstatus"
                >
                <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"
                    />
                    <dict-tag :options="dict.type.sys_stage_type" :value="scope.row.checkstatus" />
                  </template>
                </el-table-column>
                <el-table-column label="捐献者" align="center" prop="donorname" show-overflow-tooltip />
                <el-table-column label="所属组别" align="center" prop="deptmentname"/>
                <el-table-column label="组长" align="center" prop="managername" />
                <!--
                  <el-table-column label="联系电话" align="center" prop="phone" width="150px" />
                <el-table-column label="工作单位" align="center" prop="unitname" width="150px" />
                -->
                <el-table-column
                  label="操作"
                  fixed="right"
                  align="center"
                  class-name="small-padding fixed-width"
                  width="280px"
                >
                <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 ||
                          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 ||
                          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-view"
                      @click="handleDetail(scope.row)"
                      >查看</el-button
                    >
                    <el-button
                      v-if="
                        scope.row.recordstatus == -1 ||
                          scope.row.recordstatus == 1
                      "
                      size="mini"
                      type="text"
                      @click="handleDelete(scope.row)"
                      ><span class="button-delete"
                        ><i class="el-icon-delete"></i>删除</span
                      ></el-button
                    >
                    <el-button
                      size="mini"
                      type="text"
                      icon="el-icon-download"
                      @click="mixExport(scope.row.id)"
                      >下载</el-button
                    >
                    <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 ||
                      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-view"
                      @click="handleDetail(scope.row)">查看</el-button>
                    <el-button v-if="
                      scope.row.recordstatus == -1 ||
                      scope.row.recordstatus == 1
                    " size="mini" type="text" @click="handleDelete(scope.row)"><span class="button-delete"><i
                          class="el-icon-delete"></i>删除</span></el-button>
                    <el-button size="mini" type="text" icon="el-icon-download"
                      @click="mixExport(scope.row.id)">下载</el-button>
                  </template>
                </el-table-column>
                <!-- 2026-10-22:按要求隐藏「功能」列(线下报销),需要时取消注释即可恢复 -->
                <!--
                <el-table-column
                  fixed="right"
                  align="center"
@@ -269,12 +109,64 @@
                    >
                  </template>
                </el-table-column>
                -->
              </el-table>
              <!-- æœªé€‰æ‹©æ¡ˆä¾‹æ—¶å±•示该登录人全部医学成本单据,超过一页可用分页翻看 -->
              <pagination v-show="fundTotal > 0" :total="fundTotal" small :page.sync="fundQueryParam.pageNum"
                :limit.sync="fundQueryParam.pageSize" @pagination="listFundData" />
            </el-row>
          </el-form>
        </el-card>
      </el-col>
    </el-row>
    <!-- æ–°å¢žç”³è¯·å•前先选择捐献案例(原左侧案例列表移到这里) -->
    <el-dialog title="选择捐献案例" :visible.sync="caseDialogVisible" width="760px" append-to-body>
      <el-form class="opo-query-form" :model="queryParams" ref="queryForm" :inline="true" label-width="70px">
        <el-row>
          <el-col :span="8">
            <el-form-item label="姓名" prop="name">
              <el-input v-model="queryParams.name" placeholder="请输入姓名" clearable size="small"
                @keyup.enter.native="handleQuery" />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="捐献进度" prop="recordstate">
              <el-select v-model="queryParams.recordstate" placeholder="请选择记录状态" clearable size="small"
                style="width: 100%">
                <el-option v-for="dict in dict.type.sys_DonationStatus" :key="dict.value" :label="dict.label"
                  :value="dict.value" />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label-width="10px">
              <el-button type="primary" icon="el-icon-search" size="small" @click="handleQuery">搜索</el-button>
              <el-button icon="el-icon-refresh" size="small" @click="resetQuery">重置</el-button>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <el-table ref="caseTable" v-loading="loading" border height="380" highlight-current-row :data="donatebaseinfoList"
        @row-click="selectDonotor">
        <el-table-column label="捐献进度" align="center" prop="recordstate">
          <template slot-scope="scope">
            <dict-tag :options="dict.type.sys_DonationStatus" :value="scope.row.recordstate" />
          </template>
        </el-table-column>
        <el-table-column label="姓名" align="center" prop="name" />
        <el-table-column label="操作" align="center" width="90">
          <template slot-scope="scope">
            <el-button type="text" size="mini" @click="selectDonotor(scope.row)">选择</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination v-show="total > 0" :total="total" small :page.sync="queryParams.pageNum"
        :limit.sync="queryParams.pageSize" @pagination="getBaseInfoList" />
      <div slot="footer" class="dialog-footer">
        <el-button @click="caseDialogVisible = false">取 æ¶ˆ</el-button>
      </div>
    </el-dialog>
  </div>
</template>
@@ -387,10 +279,13 @@
      fundQueryParam: {
        pageNum: 1,
        pageSize: 100,
        pageSize: 10,
        infoid: null,
        applytype: "3",
        createBy: null
        createBy: null,
        // æŠ¥é”€å•筛选条件
        donorname: null,
        recordstatus: null
      },
      // è¡¨å•参数
      form: {},
@@ -412,6 +307,9 @@
      donatebaseinfoList: [],
      //当前选中捐献案例
      curCase: {},
      // ã€Œé€‰æ‹©æçŒ®æ¡ˆä¾‹ã€å¯¹è¯æ¡†ï¼ˆæ–°å¢žç”³è¯·å•时使用)
      caseDialogVisible: false,
      casePickerMode: "",
      //是否显示费用申请弹窗
      dialogOpen: false,
      // title: "",
@@ -420,6 +318,8 @@
      // æçŒ®äººé“慰问金表格数据
      donateconsolationfundList: [],
      // å³ä¾§æŠ¥é”€å•总数(用于分页)
      fundTotal: 0,
      //明细记录
      fundDetails: [],
@@ -473,11 +373,12 @@
  watch: {},
  //生命周期 - åˆ›å»ºå®Œæˆï¼ˆå¯ä»¥è®¿é—®å½“前this实例)
  created() {
    this.getList();
    this.getBaseInfoList();
    // æ¡ˆä¾‹åˆ—表已移入「选择捐献案例」对话框,打开对话框时再查询
    this.getCurFundType();
    this.getlistUser();
    // this.getUnitList();
    // é¦–屏展示当前登录人的全部医学成本单据
    this.getAllfundList();
  },
  //生命周期 - æŒ‚载完成(可以访问DOM元素)
@@ -486,13 +387,13 @@
    this.getUsermsg();
  },
  beforeCreate() {}, //生命周期 - åˆ›å»ºä¹‹å‰
  beforeMount() {}, //生命周期 - æŒ‚载之前
  beforeUpdate() {}, //生命周期 - æ›´æ–°ä¹‹å‰
  updated() {}, //生命周期 - æ›´æ–°ä¹‹åŽ
  beforeDestroy() {}, //生命周期 - é”€æ¯ä¹‹å‰
  destroyed() {}, //生命周期 - é”€æ¯å®Œæˆ
  activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
  beforeCreate() { }, //生命周期 - åˆ›å»ºä¹‹å‰
  beforeMount() { }, //生命周期 - æŒ‚载之前
  beforeUpdate() { }, //生命周期 - æ›´æ–°ä¹‹å‰
  updated() { }, //生命周期 - æ›´æ–°ä¹‹åŽ
  beforeDestroy() { }, //生命周期 - é”€æ¯ä¹‹å‰
  destroyed() { }, //生命周期 - é”€æ¯å®Œæˆ
  activated() { }, //如果页面有keep-alive缓存功能,这个函数会触发
  //方法集合
  methods: {
@@ -501,7 +402,7 @@
      this.queryParams.pageNum = 1;
      this.getList();
    },
    /** é‡ç½®æŒ‰é’®æ“ä½œ */
    /** é‡ç½®æŒ‰é’®æ“ä½œï¼ˆæ¡ˆä¾‹é€‰æ‹©å¯¹è¯æ¡†å†…的案例查询) */
    resetQuery() {
      this.daterangeReporttime = [];
@@ -538,55 +439,24 @@
      });
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    /** æ–°å¢žæŒ‰é’®æ“ä½œï¼šå…ˆå¼¹å‡ºã€Œé€‰æ‹©æçŒ®æ¡ˆä¾‹ã€å¯¹è¯æ¡† */
    handleAdd() {
      if (this.curCase.id) {
        this.$router.push({
          path: "/finance/applyDetail/",
          query: {
            id: 0,
            businessType: "3",
            operationType: "add",
            curCase: this.curCase,
          }
        });
      } else {
        const h = this.$createElement;
        this.$message({
          message: h("p", null, [
            h("span", null, "请在左边的捐献案例表选择需要操作的案例!")
          ])
        });
      }
      return;
      this.casePickerMode = "add";
      this.caseDialogVisible = true;
      this.getBaseInfoList();
    },
      if (this.curCase.id) {
        this.istrue += 2;
        this.reset();
        this.queryParams.params = {};
        this.form.donorno = this.curCase.donorno;
        this.form.name = this.curCase.name;
        this.form.infoid = this.curCase.id;
        this.form.username = this.defaultperson.nickName;
        this.form.userno = this.defaultperson.userName;
        this.form.deptmentname = this.defaultperson.dept.deptName;
        this.form.deptmentno = this.defaultperson.dept.deptId;
        this.form.managername = this.defaultperson.dept.leader;
        // this.form.createTime = nowdate;
        //this.open = true;
        //this.initFundApplyForm();
        this.fundDetails = [];
        this.addRow();
        this.dialogOpen = true;
        this.title = "添加费用申请";
        this.dialogType = "edit";
      } else {
        const h = this.$createElement;
        this.$message({
          message: h("p", null, [h("span", null, "请先选择左方捐献案例 ")])
        });
      }
    /** æºå¸¦å·²é€‰æ¡ˆä¾‹è·³è½¬åˆ°ç”³è¯·å•填写页 */
    goApplyAdd() {
      this.$router.push({
        path: "/finance/applyDetail/",
        query: {
          id: 0,
          businessType: "3",
          operationType: "add",
          curCase: this.curCase,
        }
      });
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
@@ -617,8 +487,8 @@
        //附件处理
        this.fileList = this.form.annexbankcard
          ? this.form.annexbankcard
              .split(",")
              .map(item => ({ url: item, name: item }))
            .split(",")
            .map(item => ({ url: item, name: item }))
          : [];
        getownFundDetail(id).then(async res => {
@@ -664,8 +534,8 @@
        //附件处理
        this.fileList = this.form.annexbankcard
          ? this.form.annexbankcard
              .split(",")
              .map(item => ({ url: item, name: item }))
            .split(",")
            .map(item => ({ url: item, name: item }))
          : [];
        listFundflow(listFundflowparams).then(res => {
@@ -693,7 +563,7 @@
      const ids = row.id || this.ids;
      this.$modal
        .confirm("是否确认删除该记录?")
        .then(function() {
        .then(function () {
          return delFund(ids);
        })
        .then(() => {
@@ -707,7 +577,7 @@
          this.getfundList();
          this.$modal.msgSuccess("删除成功");
        })
        .catch(() => {});
        .catch(() => { });
    },
    /** ä¸ŠæŠ¥æŒ‰é’®æ“ä½œ */
@@ -886,20 +756,68 @@
      });
    },
    //点击捐献案例列表触发方法
    //点击捐献案例列表触发方法(案例列表已移入「选择捐献案例」对话框)
    selectDonotor(row, column, event) {
      this.curCase = row;
      this.getfundList();
      if (this.casePickerMode === "add") {
        // ä»Žã€Œæ–°å¢žç”³è¯·å•」进入:选完案例直接跳到申请单填写页
        this.casePickerMode = "";
        this.caseDialogVisible = false;
        this.goApplyAdd();
      }
    },
    getfundList() {
      this.loading = true;
      this.reset();
      // é€‰ä¸­æ¡ˆä¾‹åŽæŒ‰æ¡ˆä¾‹å±•示,同时清掉列表筛选条件,避免两个条件叠加导致空列表
      this.fundQueryParam.donorname = null;
      this.fundQueryParam.recordstatus = null;
      this.fundQueryParam.infoid = this.curCase.id;
      this.fundQueryParam.pageNum = 1;
      this.listFundData();
    },
    /**
     * æŒ‰å½“前 fundQueryParam æŸ¥è¯¢å³ä¾§æŠ¥é”€å•列表
     * infoid ä¸ºç©º = å½“前登录人的全部该类型单据;有值 = æŒ‡å®šæ¡ˆä¾‹
     */
    listFundData() {
      this.loading = true;
      listFund(this.fundQueryParam).then(response => {
        this.loading = false;
        this.donateconsolationfundList = response.rows;
        this.fundTotal = response.total;
      });
    },
    /** æŠ¥é”€å•筛选:搜索 */
    handleQueryFund() {
      this.fundQueryParam.pageNum = 1;
      this.listFundData();
    },
    /** æŠ¥é”€å•筛选:重置(清空条件与已选案例,回到该登录人全部单据) */
    resetFundQuery() {
      this.fundQueryParam.donorname = null;
      this.fundQueryParam.recordstatus = null;
      this.getAllfundList();
    },
    /**
     * æ£€ç´¢å…¨éƒ¨ï¼šå–消左侧案例选择与筛选条件,查询当前登录人的全部医学成本单据
     */
    getAllfundList() {
      this.curCase = {};
      // åŒæ—¶æ¸…掉左侧案例列表的高亮选中态
      if (this.$refs.caseTable) {
        this.$refs.caseTable.setCurrentRow();
      }
      this.reset();
      this.fundQueryParam.infoid = null;
      this.fundQueryParam.donorname = null;
      this.fundQueryParam.recordstatus = null;
      this.fundQueryParam.pageNum = 1;
      this.listFundData();
    },
    // å–消按钮
@@ -1093,9 +1011,9 @@
                  tempData.itemid = tempItemArr[itemIndex].id;
                }
                if (tempData.id > 0) {
                  updateFunddetail(tempData).then(response2 => {});
                  updateFunddetail(tempData).then(response2 => { });
                } else {
                  addFunddetail(tempData).then(response2 => {});
                  addFunddetail(tempData).then(response2 => { });
                }
              }
            });
@@ -1398,7 +1316,7 @@
    },
    //文件上传
    handleUploadError() {},
    handleUploadError() { },
    handleremove(file) {
      this.fileList.splice(this.fileList.indexOf(file), 1);
@@ -1480,6 +1398,7 @@
.button-delete {
  color: rgb(236, 69, 69);
}
::v-deep.el-table .error-row {
  background: #fcebeb;
}
src/views/project/register/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,351 @@
<template>
  <div class="app-container">
    <!-- æŸ¥è¯¢æ¡ä»¶ï¼šæŒ‰é’®ç´§è·Ÿæ¡ä»¶ä¹‹åŽï¼ˆä¸Žæ¡ˆä¾‹è¯„估页风格一致) -->
    <el-form
      class="opo-query-form"
      :model="queryParams"
      ref="queryForm"
      :inline="true"
      v-show="showSearch"
      label-width="82px"
    >
      <el-row>
        <el-col :span="6">
          <el-form-item label="捐献者" prop="name">
            <el-input
              v-model="queryParams.name"
              placeholder="请输入捐献者姓名"
              clearable
              size="small"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="证件号码" prop="idcardno">
            <el-input
              v-model="queryParams.idcardno"
              placeholder="请输入证件号码"
              clearable
              size="small"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="器官类别" prop="organno">
            <el-select
              v-model="queryParams.organno"
              placeholder="请选择器官类别"
              clearable
              size="small"
              style="width: 100%"
            >
              <el-option
                v-for="dict in dict.type.sys_Organ"
                :key="dict.value"
                :label="dict.label"
                :value="dict.value"
              />
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="获取状态" prop="organstate">
            <el-select
              v-model="queryParams.organstate"
              placeholder="请选择获取状态"
              clearable
              size="small"
              style="width: 100%"
            >
              <el-option
                v-for="dict in dict.type.sys_organstate"
                :key="dict.value"
                :label="dict.label"
                :value="dict.value"
              />
            </el-select>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="6">
          <el-form-item label="器官编号" prop="organnumber">
            <el-input
              v-model="queryParams.organnumber"
              placeholder="请输入器官编号"
              clearable
              size="small"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="移植机构" prop="transplanthospitalname">
            <el-input
              v-model="queryParams.transplanthospitalname"
              placeholder="请输入移植机构名称"
              clearable
              size="small"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="移植人" prop="acceptname">
            <el-input
              v-model="queryParams.acceptname"
              placeholder="请输入移植人姓名"
              clearable
              size="small"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label-width="10px">
            <el-button type="primary" icon="el-icon-search" size="small" @click="handleQuery">搜索</el-button>
            <el-button icon="el-icon-refresh" size="small" @click="resetQuery">重置</el-button>
            <el-button
              type="warning"
              plain
              icon="el-icon-download"
              size="small"
              :loading="exportLoading"
              @click="handleExport"
              v-hasPermi="['project:register:export']"
            >导出</el-button>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row class="mb8">
        <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
      </el-row>
    </el-form>
    <el-table v-loading="loading" :data="registerList" :border="true">
      <el-table-column label="捐献者编号" align="center" prop="donorno" width="200" show-overflow-tooltip />
      <el-table-column label="姓名" align="center" prop="name" width="90" show-overflow-tooltip />
      <el-table-column label="性别" align="center" prop="sex" width="70">
        <template slot-scope="scope">
          <dict-tag :options="dict.type.sys_user_sex" :value="scope.row.sex" />
        </template>
      </el-table-column>
      <el-table-column label="年龄" align="center" width="80">
        <template slot-scope="scope">
          <span v-if="scope.row.age">{{ scope.row.age }}{{ scope.row.ageunit }}</span>
        </template>
      </el-table-column>
      <el-table-column label="器官类别" align="center" prop="organname" width="90" show-overflow-tooltip />
      <el-table-column label="器官编号" align="center" prop="organnumber" width="130" show-overflow-tooltip />
      <el-table-column label="获取状态" align="center" prop="organstate" width="100">
        <template slot-scope="scope">
          <dict-tag :options="dict.type.sys_organstate" :value="scope.row.organstate" />
        </template>
      </el-table-column>
      <el-table-column label="获取时间" align="center" prop="organgettime" width="150">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.organgettime) }}</span>
        </template>
      </el-table-column>
      <el-table-column label="获取机构" align="center" prop="gainhospitalname" min-width="180" show-overflow-tooltip />
      <el-table-column label="移植机构" align="center" prop="transplanthospitalname" min-width="180" show-overflow-tooltip />
      <el-table-column label="移植医生" align="center" prop="transplantdoct" width="100" show-overflow-tooltip />
      <el-table-column label="移植时间" align="center" prop="transplanttime" width="150">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.transplanttime) }}</span>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" width="90" class-name="small-padding fixed-width">
        <template slot-scope="scope">
          <el-button
            size="mini"
            type="text"
            icon="el-icon-view"
            @click="handleDetail(scope.row)"
            v-hasPermi="['project:register:query']"
          >详情</el-button>
        </template>
      </el-table-column>
    </el-table>
    <pagination
      v-show="total > 0"
      :total="total"
      :page.sync="queryParams.pageNum"
      :limit.sync="queryParams.pageSize"
      @pagination="getList"
    />
    <!-- è¯¦æƒ…:只读展示全部字段 -->
    <el-dialog title="器官去处详情" :visible.sync="open" width="900px" append-to-body>
      <div v-loading="detailLoading" class="register-detail">
        <el-divider content-position="left">捐献者信息</el-divider>
        <el-descriptions :column="3" size="small" border>
          <el-descriptions-item label="姓名">{{ detail.name }}</el-descriptions-item>
          <el-descriptions-item label="性别">{{ dictLabel("sys_user_sex", detail.sex) }}</el-descriptions-item>
          <el-descriptions-item label="年龄">
            <span v-if="detail.age">{{ detail.age }}{{ detail.ageunit }}</span>
          </el-descriptions-item>
          <el-descriptions-item label="证件号码">{{ detail.idcardno }}</el-descriptions-item>
          <el-descriptions-item label="出生日期">{{ parseTime(detail.birthday, "{y}-{m}-{d}") }}</el-descriptions-item>
          <el-descriptions-item label="联系电话">{{ detail.phone }}</el-descriptions-item>
          <el-descriptions-item label="现住地址" :span="3">{{ detail.residenceaddress }}</el-descriptions-item>
          <el-descriptions-item label="捐献者编号">{{ detail.donorno }}</el-descriptions-item>
        </el-descriptions>
        <el-divider content-position="left">器官信息</el-divider>
        <el-descriptions :column="3" size="small" border>
          <el-descriptions-item label="器官类别">{{ detail.organname }}</el-descriptions-item>
          <el-descriptions-item label="器官编号">{{ detail.organnumber }}</el-descriptions-item>
          <el-descriptions-item label="获取状态">
            {{ dictLabel("sys_organstate", detail.organstate) }}
          </el-descriptions-item>
          <el-descriptions-item label="获取时间">{{ parseTime(detail.organgettime) }}</el-descriptions-item>
          <el-descriptions-item label="获取医生" :span="2">{{ detail.organgetdoct }}</el-descriptions-item>
          <el-descriptions-item label="获取机构" :span="2">{{ detail.gainhospitalname }}</el-descriptions-item>
          <el-descriptions-item label="移植机构" :span="2">{{ detail.transplanthospitalname }}</el-descriptions-item>
          <el-descriptions-item label="移植医生">{{ detail.transplantdoct }}</el-descriptions-item>
          <el-descriptions-item label="移植时间" :span="2">{{ parseTime(detail.transplanttime) }}</el-descriptions-item>
        </el-descriptions>
        <el-divider content-position="left">申请与审核</el-divider>
        <el-descriptions :column="3" size="small" border>
          <el-descriptions-item label="申请人">{{ detail.applicantusername }}</el-descriptions-item>
          <el-descriptions-item label="申请时间" :span="2">{{ parseTime(detail.applicanttime) }}</el-descriptions-item>
          <el-descriptions-item label="审核人">{{ detail.checkusername }}</el-descriptions-item>
          <el-descriptions-item label="审核时间" :span="2">{{ parseTime(detail.checktime) }}</el-descriptions-item>
          <el-descriptions-item label="审核意见" :span="3">{{ detail.checksuggestion }}</el-descriptions-item>
        </el-descriptions>
        <el-divider content-position="left">移植人信息</el-divider>
        <el-descriptions :column="3" size="small" border>
          <el-descriptions-item label="姓名">{{ detail.acceptname }}</el-descriptions-item>
          <el-descriptions-item label="性别">{{ dictLabel("sys_user_sex", detail.acceptsex) }}</el-descriptions-item>
          <el-descriptions-item label="年龄">
            <span v-if="detail.acceptage">{{ detail.acceptage }}{{ detail.acceptageunit }}</span>
          </el-descriptions-item>
          <el-descriptions-item label="证件号码">{{ detail.acceptidcard }}</el-descriptions-item>
          <el-descriptions-item label="联系电话" :span="2">{{ detail.acceptphone }}</el-descriptions-item>
          <el-descriptions-item label="现住地址" :span="3">{{ detail.acceptresidenceaddress }}</el-descriptions-item>
        </el-descriptions>
      </div>
      <div slot="footer" class="dialog-footer">
        <el-button @click="open = false">关 é—­</el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import { listRegister, getRegister, exportRegister } from "@/api/project/register";
export default {
  name: "Register",
  dicts: ["sys_Organ", "sys_organstate", "sys_user_sex", "sys_AgeUnit"],
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // è¯¦æƒ…加载
      detailLoading: false,
      // å¯¼å‡ºé®ç½©å±‚
      exportLoading: false,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // å™¨å®˜åŽ»å¤„åˆ—è¡¨
      registerList: [],
      // è¯¦æƒ…弹窗
      open: false,
      detail: {},
      // æŸ¥è¯¢å‚数(均需与后端 queryList / Mapper æ”¯æŒçš„æ¡ä»¶ä¸€è‡´ï¼‰
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        name: null,
        idcardno: null,
        organno: null,
        organstate: null,
        organnumber: null,
        transplanthospitalname: null,
        acceptname: null
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢å™¨å®˜åŽ»å¤„åˆ—è¡¨ */
    getList() {
      this.loading = true;
      listRegister(this.queryParams).then(response => {
        this.registerList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    /** æœç´¢æŒ‰é’®æ“ä½œ */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
    },
    /** é‡ç½®æŒ‰é’®æ“ä½œ */
    resetQuery() {
      this.resetForm("queryForm");
      this.handleQuery();
    },
    /** è¯¦æƒ…按钮操作 */
    handleDetail(row) {
      this.detail = {};
      this.open = true;
      this.detailLoading = true;
      getRegister(row.id).then(response => {
        this.detail = response.data || {};
        this.detailLoading = false;
      }).catch(() => {
        this.detailLoading = false;
      });
    },
    /** å­—典翻译(模板里用,避免多个 dict-tag åµŒå¥—) */
    dictLabel(type, value) {
      const list = this.dict.type[type] || [];
      const item = list.find(d => String(d.value) === String(value));
      return item ? item.label : value;
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.$modal
        .confirm("是否确认导出器官去处数据?")
        .then(() => {
          this.exportLoading = true;
          return exportRegister(this.queryParams);
        })
        .then(response => {
          this.$download.name(response.msg);
          this.exportLoading = false;
        })
        .catch(() => {
          this.exportLoading = false;
        });
    }
  }
};
</script>
<style scoped>
.register-detail >>> .el-divider--horizontal {
  margin: 12px 0 14px;
}
.register-detail >>> .el-divider__text {
  color: var(--opo-primary, #0e768f);
  font-size: var(--opo-font-size-sm, 14px);
}
.register-detail >>> .el-descriptions-item__label {
  color: var(--opo-text-secondary, #6b7280);
  width: 90px;
}
</style>
src/views/project/statistics/applyStatistics/index.vue
@@ -266,48 +266,14 @@
        this.queryParams.pabegtime = this.selecttime[0];
        this.queryParams.paendtime = this.selecttime[1];
        // if (this.queryParams.paendtime == this.queryParams.pabegtime) {
        let num = Number(this.queryParams.paendtime.slice(5, 7));
        if (num < 9) {
          let mon = Number(this.queryParams.paendtime.slice(6, 7));
          this.queryParams.paendtime =
            this.queryParams.paendtime.slice(0, 5) +
            "0" +
            (mon + 1) +
            "-" +
            "01" +
            " " +
            "00" +
            ":" +
            "00" +
            ":" +
            "00";
        }
        // this.queryParams.paendtime=this.queryParams.paendtime.slice(0,5)å¹´
        else if (num >= 10) {
          this.queryParams.paendtime =
            this.queryParams.paendtime.slice(0, 5) +
            (num + 1) +
            "-" +
            "01" +
            " " +
            "00" +
            ":" +
            "00" +
            ":" +
            "00";
        } else {
          this.queryParams.paendtime =
            this.queryParams.paendtime.slice(0, 5) +
            "10" +
            "-" +
            "01" +
            " " +
            "00" +
            ":" +
            "00" +
            ":" +
            "00";
        }
        // ç»“束时间取"所选结束月的次月 1 å·",以包含整个结束月。
        // åŽŸå®žçŽ°æŠŠæœˆä»½ +1 åŽç›´æŽ¥æ‹¼å­—符串,12 æœˆä¼šå¾—到 13 æœˆï¼ˆ2026-13-01),
        // MySQL æŠ¥ Incorrect datetime value,存储过程直接 500。
        this.queryParams.paendtime = this.$moment(this.queryParams.paendtime)
          .startOf("month")
          .add(1, "month")
          .format("YYYY-MM")
          .concat("-01 00:00:00");
        this.queryParams.pabegtime =
          this.queryParams.pabegtime + " " + "00" + ":" + "00" + ":" + "00";
        // }
src/views/project/statistics/caseStatistics/index.vue
@@ -272,48 +272,14 @@
        this.queryParams.pabegtime = this.selecttime[0];
        this.queryParams.paendtime = this.selecttime[1];
        // if (this.queryParams.paendtime == this.queryParams.pabegtime) {
        let num = Number(this.queryParams.paendtime.slice(5, 7));
        if (num < 9) {
          let mon = Number(this.queryParams.paendtime.slice(6, 7));
          this.queryParams.paendtime =
            this.queryParams.paendtime.slice(0, 5) +
            "0" +
            (mon + 1) +
            "-" +
            "01" +
            " " +
            "00" +
            ":" +
            "00" +
            ":" +
            "00";
        }
        // this.queryParams.paendtime=this.queryParams.paendtime.slice(0,5)å¹´
        else if (num >= 10) {
          this.queryParams.paendtime =
            this.queryParams.paendtime.slice(0, 5) +
            (num + 1) +
            "-" +
            "01" +
            " " +
            "00" +
            ":" +
            "00" +
            ":" +
            "00";
        } else {
          this.queryParams.paendtime =
            this.queryParams.paendtime.slice(0, 5) +
            "10" +
            "-" +
            "01" +
            " " +
            "00" +
            ":" +
            "00" +
            ":" +
            "00";
        }
        // ç»“束时间取"所选结束月的次月 1 å·",以包含整个结束月。
        // åŽŸå®žçŽ°æŠŠæœˆä»½ +1 åŽç›´æŽ¥æ‹¼å­—符串,12 æœˆä¼šå¾—到 13 æœˆï¼ˆ2026-13-01),
        // MySQL æŠ¥ Incorrect datetime value,存储过程直接 500。
        this.queryParams.paendtime = this.$moment(this.queryParams.paendtime)
          .startOf("month")
          .add(1, "month")
          .format("YYYY-MM")
          .concat("-01 00:00:00");
        this.queryParams.pabegtime =
          this.queryParams.pabegtime + " " + "00" + ":" + "00" + ":" + "00";
        // }
src/views/project/statistics/chargeStatistics/index.vue
@@ -290,48 +290,14 @@
        this.queryParams.pabegtime = this.selecttime[0];
        this.queryParams.paendtime = this.selecttime[1];
        // if (this.queryParams.paendtime == this.queryParams.pabegtime) {
        let num = Number(this.queryParams.paendtime.slice(5, 7));
        if (num < 9) {
          let mon = Number(this.queryParams.paendtime.slice(6, 7));
          this.queryParams.paendtime =
            this.queryParams.paendtime.slice(0, 5) +
            "0" +
            (mon + 1) +
            "-" +
            "01" +
            " " +
            "00" +
            ":" +
            "00" +
            ":" +
            "00";
        }
        // this.queryParams.paendtime=this.queryParams.paendtime.slice(0,5)å¹´
        else if (num >= 10) {
          this.queryParams.paendtime =
            this.queryParams.paendtime.slice(0, 5) +
            (num + 1) +
            "-" +
            "01" +
            " " +
            "00" +
            ":" +
            "00" +
            ":" +
            "00";
        } else {
          this.queryParams.paendtime =
            this.queryParams.paendtime.slice(0, 5) +
            "10" +
            "-" +
            "01" +
            " " +
            "00" +
            ":" +
            "00" +
            ":" +
            "00";
        }
        // ç»“束时间取"所选结束月的次月 1 å·",以包含整个结束月。
        // åŽŸå®žçŽ°æŠŠæœˆä»½ +1 åŽç›´æŽ¥æ‹¼å­—符串,12 æœˆä¼šå¾—到 13 æœˆï¼ˆ2026-13-01),
        // MySQL æŠ¥ Incorrect datetime value,存储过程直接 500。
        this.queryParams.paendtime = this.$moment(this.queryParams.paendtime)
          .startOf("month")
          .add(1, "month")
          .format("YYYY-MM")
          .concat("-01 00:00:00");
        this.queryParams.pabegtime =
          this.queryParams.pabegtime + " " + "00" + ":" + "00" + ":" + "00";
        // }
src/views/project/statistics/performanceStaristics/index.vue
@@ -278,48 +278,14 @@
        this.queryParams.pabegtime = this.selecttime[0];
        this.queryParams.paendtime = this.selecttime[1];
        // if (this.queryParams.paendtime == this.queryParams.pabegtime) {
        let num = Number(this.queryParams.paendtime.slice(5, 7));
        if (num < 9) {
          let mon = Number(this.queryParams.paendtime.slice(6, 7));
          this.queryParams.paendtime =
            this.queryParams.paendtime.slice(0, 5) +
            "0" +
            (mon + 1) +
            "-" +
            "01" +
            " " +
            "00" +
            ":" +
            "00" +
            ":" +
            "00";
        }
        // this.queryParams.paendtime=this.queryParams.paendtime.slice(0,5)å¹´
        else if (num >= 10) {
          this.queryParams.paendtime =
            this.queryParams.paendtime.slice(0, 5) +
            (num + 1) +
            "-" +
            "01" +
            " " +
            "00" +
            ":" +
            "00" +
            ":" +
            "00";
        } else {
          this.queryParams.paendtime =
            this.queryParams.paendtime.slice(0, 5) +
            "10" +
            "-" +
            "01" +
            " " +
            "00" +
            ":" +
            "00" +
            ":" +
            "00";
        }
        // ç»“束时间取"所选结束月的次月 1 å·",以包含整个结束月。
        // åŽŸå®žçŽ°æŠŠæœˆä»½ +1 åŽç›´æŽ¥æ‹¼å­—符串,12 æœˆä¼šå¾—到 13 æœˆï¼ˆ2026-13-01),
        // MySQL æŠ¥ Incorrect datetime value,存储过程直接 500。
        this.queryParams.paendtime = this.$moment(this.queryParams.paendtime)
          .startOf("month")
          .add(1, "month")
          .format("YYYY-MM")
          .concat("-01 00:00:00");
        this.queryParams.pabegtime =
          this.queryParams.pabegtime + " " + "00" + ":" + "00" + ":" + "00";
        // }