liusheng
2 天以前 bbbc478129f72b26e2ec4a2e981ed8698a96880c
当service_type=6时,需要根据传入的入院还是离院病区(病区)去后端查询
已修改6个文件
334 ■■■■■ 文件已修改
src/views/Satisfaction/sfstatistics/components/ChartsPanel.vue 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Satisfaction/sfstatistics/components/DataOverview.vue 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Satisfaction/sfstatistics/components/FollowupStatistics.vue 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Satisfaction/sfstatistics/components/SatisfactionStatistics.vue 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/zysatisfaction/index.vue 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Satisfaction/sfstatistics/components/ChartsPanel.vue
@@ -21,6 +21,18 @@
          <el-radio-button label="month">按月</el-radio-button>
          <el-radio-button label="year">按年</el-radio-button>
        </el-radio-group>
        <span class="filter-label">满意度类型:</span>
        <el-select
          v-model="satisfactionScope"
          size="small"
          clearable
          placeholder="默认离院"
          class="filter-scope"
          @change="refreshAll"
        >
          <el-option label="离院满意度" value="leave" />
          <el-option label="在院满意度" value="hospital" />
        </el-select>
        <span class="filter-label">统计维度:</span>
        <el-radio-group v-model="queryParams.dimension" size="small" @change="onDimensionChange">
          <el-radio-button label="ward">按病区统计</el-radio-button>
@@ -170,6 +182,8 @@
  dicts: ['dimensionality_type'],
  data() {
    return {
      // 满意度类型:leave=离院满意度(离院科室/病区),hospital=在院满意度(在院科室/病区)
      satisfactionScope: 'leave',
      queryParams: {
        dateRange: [],
        interval: 'month',
@@ -226,6 +240,10 @@
    },
    defaultWardCodes() {
      return Array.from(new Set(this.wardCodeList.map((w) => w.districtCode)));
    },
    // 是否按「在院满意度」口径查询(清空下拉时按默认的离院口径)
    isInHospitalSatisfaction() {
      return this.satisfactionScope === 'hospital';
    },
    intervalLabel() {
      return { day: '按天', week: '按周', month: '按月', year: '按年' }[this.queryParams.interval] || '按月';
@@ -426,12 +444,17 @@
          questionContent: this.singleQuestionContent,
        };
        const sel = this.singleDeptWards || [];
        // 科室/病区条件随「满意度类型」切换:在院 => deptcodes/hospitaldistrictcodes,离院 => leaveldeptcodes/leavehospitaldistrictcodes
        if (this.queryParams.dimension === 'dept') {
          const names = sel.map((s) => String(s).replace(/^dept:/, ''));
          payload.leaveldeptcodes = names.length ? this.mapDeptNames(names) : this.defaultDeptCodes;
          const codes = names.length ? this.mapDeptNames(names) : this.defaultDeptCodes;
          if (this.isInHospitalSatisfaction) payload.deptcodes = codes;
          else payload.leaveldeptcodes = codes;
        } else {
          const names = sel.map((s) => String(s).replace(/^ward:/, ''));
          payload.leavehospitaldistrictcodes = names.length ? this.mapWardNames(names) : this.defaultWardCodes;
          const codes = names.length ? this.mapWardNames(names) : this.defaultWardCodes;
          if (this.isInHospitalSatisfaction) payload.hospitaldistrictcodes = codes;
          else payload.leavehospitaldistrictcodes = codes;
        }
        const res = await sltdMydTotalByScore(payload);
        console.log('[sltdMydTotalByScore 单题] code=', res && res.code, 'data=', JSON.stringify(res && res.data).slice(0, 1500));
@@ -875,7 +898,7 @@
<style lang="scss" scoped>
.export-bar { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; }
.filter-bar { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; .filter-label { font-size: 13px; color: #606266; } .filter-date { width: 260px; } }
.filter-bar { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; .filter-label { font-size: 13px; color: #606266; } .filter-date { width: 260px; } .filter-scope { width: 140px; } }
.chart-card { margin-bottom: 0; }
.chart-box { width: 100%; height: 360px; }
.chart-wrap { position: relative; width: 100%; }
src/views/Satisfaction/sfstatistics/components/DataOverview.vue
@@ -3,6 +3,19 @@
    <!-- 顶部筛选:时间范围 + 科室/病区,控制本页所有数据 -->
    <el-card shadow="never" class="overview-card filter-card">
      <el-form inline class="filter-form">
        <el-form-item label="满意度类型">
          <el-select
            v-model="satisfactionScope"
            size="small"
            style="width: 140px"
            clearable
            placeholder="默认离院"
            @change="fetchData"
          >
            <el-option label="离院满意度" value="leave" />
            <el-option label="在院满意度" value="hospital" />
          </el-select>
        </el-form-item>
        <el-form-item label="出院日期">
          <el-date-picker
            v-model="queryParams.dateRange"
@@ -497,11 +510,14 @@
  name: "DataOverview",
  data() {
    return {
      // 满意度类型:leave=离院满意度(离院科室/病区),hospital=在院满意度(在院科室/病区)
      satisfactionScope: "leave",
      // 顶部全局筛选
      queryParams: {
        dateRange: [],
        deptCodes: [], // 科室编码集合 => leaveldeptcodes
        wardCodes: [], // 出院病区编码集合 => leavehospitaldistrictcodes(接口必填)
        // 病区编码集合:住院满意度按在院病区(hospitaldistrictcodes),其余按出院病区(leavehospitaldistrictcodes)
        wardCodes: [],
        serviceTypeList: [], // 服务类型多选,提交时用逗号拼接
        deptOrDistrict: "1", // 科室/病区组合方式,默认 1:离院病区 and 离院科室
        statMode: "ward", // 统计维度:ward=按病区统计 dept=按科室统计
@@ -553,6 +569,11 @@
    // 未选病区时的默认查询范围:全部病区编码
    defaultWardCodes() {
      return Array.from(new Set(this.wardOptions.map((w) => w.value)));
    },
    // 是否按「在院满意度」口径查询:在院满意度用 deptcodes/hospitaldistrictcodes,
    // 离院满意度(以及清空下拉时的默认口径)用 leaveldeptcodes/leavehospitaldistrictcodes
    isInHospitalSatisfaction() {
      return this.satisfactionScope === "hospital";
    },
    // 未选科室时的默认查询范围:全部科室编码
    defaultDeptCodes() {
@@ -828,8 +849,10 @@
        return;
      }
      // 病区 => leavehospitaldistrictcodes,科室 => leaveldeptcodes
      // 科室/病区互斥:按病区只传 leavehospitaldistrictcodes,按科室只传 leaveldeptcodes
      // 科室/病区条件随「满意度类型」切换:
      // 在院满意度 => deptcodes / hospitaldistrictcodes(在院科室、在院病区)
      // 离院满意度 => leaveldeptcodes / leavehospitaldistrictcodes(离院科室、离院病区)
      // 科室/病区互斥:按病区只传病区编码,按科室只传科室编码
      const wards = this.queryParams.wardCodes || [];
      const depts = this.queryParams.deptCodes || [];
@@ -839,13 +862,23 @@
        endFinishTime: range[1],
      };
      if (this.queryParams.statMode === "dept") {
        payload.leaveldeptcodes = depts.length
        const deptCodes = depts.length
          ? Array.from(new Set(depts))
          : this.defaultDeptCodes;
        if (this.isInHospitalSatisfaction) {
          payload.deptcodes = deptCodes;
        } else {
          payload.leaveldeptcodes = deptCodes;
        }
      } else {
        payload.leavehospitaldistrictcodes = wards.length
        const wardCodes = wards.length
          ? Array.from(new Set(wards))
          : this.defaultWardCodes;
        if (this.isInHospitalSatisfaction) {
          payload.hospitaldistrictcodes = wardCodes;
        } else {
          payload.leavehospitaldistrictcodes = wardCodes;
        }
      }
      // 服务类型多选:逗号分隔(接口字段为 serviceType 字符串)
      const serviceTypes = this.queryParams.serviceTypeList || [];
@@ -892,10 +925,17 @@
        endFinishTime: range[1],
      };
      try {
        // 按科室统计(leaveldeptcodes 优先)与按病区统计(leavehospitaldistrictcodes)各查一次
        // 按科室统计、按病区统计各查一次,条件随「满意度类型」切换:
        // 在院满意度 => deptcodes / hospitaldistrictcodes;离院满意度 => leaveldeptcodes / leavehospitaldistrictcodes
        const deptParam = this.isInHospitalSatisfaction
          ? { deptcodes: this.defaultDeptCodes }
          : { leaveldeptcodes: this.defaultDeptCodes };
        const wardParam = this.isInHospitalSatisfaction
          ? { hospitaldistrictcodes: this.defaultWardCodes }
          : { leavehospitaldistrictcodes: this.defaultWardCodes };
        const [deptRes, wardRes] = await Promise.all([
          statQuestionOptionByKsOrBq({ ...base, leaveldeptcodes: this.defaultDeptCodes }),
          statQuestionOptionByKsOrBq({ ...base, leavehospitaldistrictcodes: this.defaultWardCodes }),
          statQuestionOptionByKsOrBq({ ...base, ...deptParam }),
          statQuestionOptionByKsOrBq({ ...base, ...wardParam }),
        ]);
        // 排查用:打印接口原始返回,便于核对两级嵌套 Map 结构(确认无误后可删除)
        console.log(
src/views/Satisfaction/sfstatistics/components/FollowupStatistics.vue
@@ -9,6 +9,19 @@
        label-width="100px"
        class="query-form"
      >
        <el-form-item label="满意度类型" prop="satisfactionScope">
          <el-select
            v-model="satisfactionScope"
            placeholder="默认离院"
            clearable
            style="width: 150px"
            @change="handleSatisfactionScopeChange"
          >
            <el-option label="离院满意度" value="leave" />
            <el-option label="在院满意度" value="hospital" />
          </el-select>
        </el-form-item>
        <el-form-item label="统计类型" prop="statisticaltype">
          <el-select
            v-model="queryParams.statisticaltype"
@@ -137,10 +150,10 @@
        @selection-change="handleSelectionChange"
        :row-key="getRowKey"
      >
        <!-- 病区列 -->
        <!-- 病区列:住院满意度统计在院病区,其余统计出院病区 -->
        <el-table-column
          v-if="queryParams.statisticaltype == 1"
          label="出院病区"
          :label="wardColumnLabel"
          align="center"
          sortable
          key="leavehospitaldistrictname"
@@ -148,7 +161,11 @@
          :show-overflow-tooltip="true"
          :sort-method="sortChineseNumber"
          min-width="120"
        />
        >
          <template slot-scope="scope">
            {{ getWardName(scope.row) || "-" }}
          </template>
        </el-table-column>
        <!-- 科室列 -->
        <el-table-column
@@ -349,6 +366,9 @@
  },
  data() {
    return {
      // 满意度类型:leave=离院满意度(按出院病区统计),hospital=在院满意度(按在院病区统计)
      satisfactionScope: "leave",
      // 查询参数
      queryParams: {
        statisticaltype: 1,
@@ -459,6 +479,19 @@
    };
  },
  computed: {
    // 是否按「在院满意度」口径统计:在院患者按在院病区(hospitaldistrictcodes)统计,
    // 离院满意度仍按出院病区(leavehospitaldistrictcodes)统计
    isInHospitalSatisfaction() {
      return this.satisfactionScope === "hospital";
    },
    // 病区列标题
    wardColumnLabel() {
      return this.isInHospitalSatisfaction ? "在院病区" : "出院病区";
    },
  },
  created() {
    this.orgname = localStorage.getItem("orgname");
@@ -524,16 +557,20 @@
        // 处理病区/科室选择
        if (params.statisticaltype == 1) {
          // 病区统计
          if (params.leavehospitaldistrictcodes.includes("all")) {
            // 如果选择了"全部",则移除"all"值
            params.leavehospitaldistrictcodes =
              params.leavehospitaldistrictcodes.filter(
                (item) => item !== "all"
              );
            // 如果需要传所有病区代码,可以从store中获取
            params.leavehospitaldistrictcodes = (
              this.$store.getters.belongWards || []
            ).map((ward) => ward.districtCode);
          let wardCodes = params.leavehospitaldistrictcodes || [];
          if (wardCodes.includes("all")) {
            // 如果选择了"全部",则使用当前用户所属的全部病区
            wardCodes = (this.$store.getters.belongWards || []).map(
              (ward) => ward.districtCode
            );
          }
          // 住院满意度针对在院患者,按在院病区(hospitaldistrictcodes)统计;
          // 出院随访等其他服务类型仍按出院病区(leavehospitaldistrictcodes)统计
          delete params.leavehospitaldistrictcodes;
          if (this.isInHospitalSatisfaction) {
            params.hospitaldistrictcodes = wardCodes;
          } else {
            params.leavehospitaldistrictcodes = wardCodes;
          }
        } else if (params.statisticaltype == 2) {
          // 科室统计
@@ -560,8 +597,8 @@
      }
    },
    sortChineseNumber(aRow, bRow) {
      const a = aRow.leavehospitaldistrictname;
      const b = bRow.leavehospitaldistrictname;
      const a = this.getWardName(aRow);
      const b = this.getWardName(bRow);
      // 中文数字到阿拉伯数字的映射(扩展到45)
      const chineseNumMap = {
@@ -721,14 +758,12 @@
          return -1;
        };
        const indexA = getIndex(a.leavehospitaldistrictname);
        const indexB = getIndex(b.leavehospitaldistrictname);
        const indexA = getIndex(this.getWardName(a));
        const indexB = getIndex(this.getWardName(b));
        // 排序逻辑
        if (indexA === -1 && indexB === -1) {
          return (a.leavehospitaldistrictname || "").localeCompare(
            b.leavehospitaldistrictname || ""
          );
          return this.getWardName(a).localeCompare(this.getWardName(b));
        }
        if (indexA === -1) return 1;
        if (indexB === -1) return -1;
@@ -748,6 +783,12 @@
    // 处理查询
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
    },
    // 切换满意度类型(离院/在院)后重新查询
    handleSatisfactionScopeChange() {
      this.queryParams.pageNum = 1;
      this.getList();
    },
@@ -789,8 +830,14 @@
    // 获取行key
    getRowKey(row) {
      return row.statisticaltype === 1
        ? row.leavehospitaldistrictcode
        ? row.hospitaldistrictcode || row.leavehospitaldistrictcode
        : row.deptcode;
    },
    // 病区名称:住院满意度接口返回在院病区字段,其余返回出院病区字段
    getWardName(row) {
      if (!row) return "";
      return row.hospitaldistrictname || row.leavehospitaldistrictname || "";
    },
    // 格式化百分比
@@ -828,8 +875,18 @@
        }
        if (this.queryParams.statisticaltype == 1) {
          this.topicvalue.name = row.leavehospitaldistrictname;
          params.leavehospitaldistrictcodes = [row.leavehospitaldistrictcode];
          this.topicvalue.name = this.getWardName(row);
          // 住院满意度按在院病区统计,其余按出院病区统计
          if (this.isInHospitalSatisfaction) {
            delete params.leavehospitaldistrictcodes;
            params.hospitaldistrictcodes = [
              row.hospitaldistrictcode || row.leavehospitaldistrictcode,
            ];
          } else {
            params.leavehospitaldistrictcodes = [
              row.leavehospitaldistrictcode,
            ];
          }
        } else {
          this.topicvalue.name = row.deptname;
          params.deptcodes = [row.deptcode];
@@ -964,7 +1021,7 @@
        // 添加表头
        const headers = [
          this.queryParams.statisticaltype == 1 ? "出院病区" : "科室",
          this.queryParams.statisticaltype == 1 ? this.wardColumnLabel : "科室",
          "出院人次",
          "无需随访人次",
          "应随访人次",
@@ -985,7 +1042,7 @@
        this.userList.forEach((item) => {
          const dataRow = worksheet.addRow([
            this.queryParams.statisticaltype == 1
              ? item.leavehospitaldistrictname
              ? this.getWardName(item)
              : item.deptname,
            item.dischargeCount || 0,
            item.nonFollowUp || 0,
src/views/Satisfaction/sfstatistics/components/SatisfactionStatistics.vue
@@ -11,6 +11,18 @@
          label-width="100px"
          class="query-form"
        >
          <el-form-item label="满意度类型" prop="satisfactionScope">
            <el-select
              v-model="satisfactionScope"
              placeholder="默认在院"
              clearable
              style="width: 140px"
              @change="handleSearch"
            >
              <el-option label="离院满意度" value="leave" />
              <el-option label="在院满意度" value="hospital" />
            </el-select>
          </el-form-item>
          <el-form-item label="统计类型" prop="patientSource">
            <el-select
              v-model="queryParams.type"
@@ -684,6 +696,10 @@
  dicts: ["dimensionality_type"],
  data() {
    return {
      // 满意度类型:leave=离院满意度(leaveldeptcodes/leavehospitaldistrictcodes),
      // hospital=在院满意度(deptcodes/hospitaldistrictcodes)
      // 默认在院:保持该页原有请求参数不变
      satisfactionScope: "hospital",
      // 查询参数
      queryParams: {
        type: 2,
@@ -866,6 +882,11 @@
      const dict = this.dict && this.dict.type && this.dict.type.dimensionality_type;
      return dict ? dict.map((d) => String(d.value)) : [];
    },
    // 是否按「在院满意度」口径查询(本页默认在院,所以清空下拉时仍按在院处理)
    isInHospitalSatisfaction() {
      return this.satisfactionScope !== "leave";
    },
  },
  mounted() {
@@ -892,6 +913,8 @@
    async initData() {
      await this.getDeptList();
      await this.getWardList();
      // 接口默认按「全部科室 + 全部病区 + 最近7天」查询,这里把实际使用的条件回显到筛选框
      this.echoQueryParams();
      this.initChart();
      await this.loadData();
    },
@@ -920,6 +943,33 @@
        });
        resolve();
      });
    },
    // 科室/病区条件:
    // 在院满意度 => deptcodes / hospitaldistrictcodes;离院满意度 => leaveldeptcodes / leavehospitaldistrictcodes
    buildScopeParams() {
      const deptCodes = this.deptCodes;
      const wardCodes = this.hospitalDistrictCodes;
      return this.isInHospitalSatisfaction
        ? { deptcodes: deptCodes, hospitaldistrictcodes: wardCodes }
        : { leaveldeptcodes: deptCodes, leavehospitaldistrictcodes: wardCodes };
    },
    // 把接口实际使用的查询条件回显到筛选框:
    // 科室/病区未选时接口按「全部」查,时间未选时接口按「最近7天」查,这里把同样的值写回筛选框
    echoQueryParams() {
      if (
        !this.queryParams.dateRange ||
        this.queryParams.dateRange.length !== 2
      ) {
        this.queryParams.dateRange = [this.startTime, this.endTime];
      }
      if (!(this.queryParams.deptCodes || []).length) {
        this.queryParams.deptCodes = this.deptList.map((dept) => dept.value);
      }
      if (!(this.queryParams.wardCodes || []).length) {
        this.queryParams.wardCodes = this.wardList.map((ward) => ward.value);
      }
    },
    // 获取图表标题
@@ -963,8 +1013,7 @@
        type: this.queryParams.type,
        startTime: this.startTime,
        endTime: this.endTime,
        deptcodes: this.deptCodes, // 使用计算属性
        hospitaldistrictcodes: this.hospitalDistrictCodes, // 使用计算属性
        ...this.buildScopeParams(),
        templateid: this.templateId,
      };
@@ -983,8 +1032,7 @@
        type: this.queryParams.type,
        startTime: this.startTime,
        endTime: this.endTime,
        deptcodes: this.deptCodes, // 使用计算属性
        hospitaldistrictcodes: this.hospitalDistrictCodes, // 使用计算属性
        ...this.buildScopeParams(),
        templateid: this.templateId,
        questionType: this.queryParams.type || null,
        serviceTypes: this.defaultServiceTypes,
@@ -2012,8 +2060,10 @@
    handleReset() {
      this.$refs.queryForm.resetFields();
      this.queryParams.dateRange = [];
        this.queryParams.deptCodes = [];  // 重置为数组
  this.queryParams.wardCodes = [];  // 重置为数组
      this.queryParams.deptCodes = []; // 重置为数组
      this.queryParams.wardCodes = []; // 重置为数组
      // 重置后接口仍按「全部科室/全部病区 + 最近7天」查询,筛选框同步回显,避免框里空空、请求里有值
      this.echoQueryParams();
      this.detailQueryParams.pageNum = 1;
      this.dimensionQueryParams.pageNum = 1;
      this.loadData();
src/views/followvisit/zysatisfaction/index.vue
@@ -15,6 +15,18 @@
        v-show="showSearch"
        label-width="98px"
      >
        <el-form-item label="满意度类型" prop="satisfactionScope">
          <el-select
            v-model="satisfactionScope"
            placeholder="默认离院"
            clearable
            style="width: 150px"
            @change="handleSatisfactionScopeChange"
          >
            <el-option label="离院满意度" value="leave" />
            <el-option label="在院满意度" value="hospital" />
          </el-select>
        </el-form-item>
        <!-- <el-form-item label="出院时间">
          <el-date-picker
            v-model="dateRange"
@@ -82,12 +94,16 @@
            </el-option>
          </el-select>
        </el-form-item> -->
        <!-- 处理状态:保留级联联动(一级大类 → 二级具体状态),
             面板挂在本组件内(popper-append-to-body=false),避免下拉跑到别处 -->
        <el-form-item label="处理状态" prop="status">
          <el-cascader
            v-model="serviceStatusValue"
            placeholder="请选择"
            :options="serviceStatusOptions"
            :props="cascaderProps"
            :popper-append-to-body="false"
            style="width: 180px"
            @change="handleServiceStatusChange"
            clearable
          ></el-cascader>
@@ -375,17 +391,21 @@
          label="科室"
          align="center"
          key="leaveldeptname"
          prop="leaveldeptname"
          width="120"
        >
          <template slot-scope="scope">
            {{ deptNameOf(scope.row) }}
          </template>
        </el-table-column>
        <el-table-column
          label="病区"
          align="center"
          key="leavehospitaldistrictname"
          prop="leavehospitaldistrictname"
          width="120"
        >
          <template slot-scope="scope">
            {{ wardNameOf(scope.row) }}
          </template>
        </el-table-column>
        <el-table-column
@@ -1089,6 +1109,8 @@
          label: "应随访日期(倒序)",
        },
      ],
      // 满意度类型:leave=离院满意度(按离院科室/病区查),hospital=在院满意度(按在院科室/病区查)
      satisfactionScope: "leave",
      // 查询参数
      topqueryParams: {
        pageNum: 1,
@@ -1264,7 +1286,7 @@
        this.$message.warning("未配置科室/病区相关权限不可查询");
        return Promise.reject(new Error("无权限查询"));
      }
      getTaskservelist(this.topqueryParams).then((response) => {
      getTaskservelist(this.buildScopePayload(this.topqueryParams)).then((response) => {
        this.userList = response.rows[0].serviceSubtaskList;
        this.total = response.total;
        if (refresh) {
@@ -1309,6 +1331,47 @@
        this.total = response.total;
      });
    },
    // 切换满意度类型(离院/在院)后重新查询
    handleSatisfactionScopeChange() {
      this.topqueryParams.pageNum = 1;
      this.getList(1);
    },
    // 按满意度类型组装科室/病区条件:
    // 离院满意度 => leaveldeptcodes / leavehospitaldistrictcodes;
    // 在院满意度 => deptcodes / hospitaldistrictcodes(在院科室、在院病区)
    buildScopePayload(params) {
      const payload = { ...params };
      if (this.satisfactionScope === "hospital") {
        payload.deptcodes = params.leaveldeptcodes || [];
        payload.hospitaldistrictcodes = params.leavehospitaldistrictcodes || [];
        delete payload.leaveldeptcodes;
        delete payload.leavehospitaldistrictcodes;
      }
      return payload;
    },
    // 科室名称:在院满意度优先取在院科室,其余取出院科室
    deptNameOf(row) {
      if (!row) return "-";
      return (
        (this.satisfactionScope === "hospital"
          ? row.deptname || row.leaveldeptname
          : row.leaveldeptname || row.deptname) || "-"
      );
    },
    // 病区名称:在院满意度优先取在院病区,其余取出院病区
    wardNameOf(row) {
      if (!row) return "-";
      return (
        (this.satisfactionScope === "hospital"
          ? row.hospitaldistrictname || row.leavehospitaldistrictname
          : row.leavehospitaldistrictname || row.hospitaldistrictname) || "-"
      );
    },
    // 服务状态变更处理
    handleServiceStatusChange(value) {
      // 清空选择
@@ -1841,7 +1904,7 @@
      this.download(
        "smartor/serviceSubtask/patItemExport",
        {
          ...this.topqueryParams,
          ...this.buildScopePayload(this.topqueryParams),
        },
        `user_${new Date().getTime()}.xlsx`
      );
@@ -2085,6 +2148,11 @@
  box-shadow: 0 2px 12px rgba(31, 45, 61, 0.05);
}
/* 级联下拉挂在本组件内时,以所在表单项为定位基准,避免面板跑到页面别处 */
::v-deep .el-form--inline .el-form-item {
  position: relative;
}
/* 隐藏分割线 */
::v-deep .el-divider {
  display: none;
vue.config.js
@@ -40,10 +40,10 @@
        // target: `http://192.168.100.10:8094`,//省立同德
        // target: `http://192.168.100.10:8095`,//新华
        // target: `http://192.168.100.10:8098`,//市一
        // target:`http://localhost:8095`,
        target:`http://localhost:8095`,
        // target:`http://35z1t16164.qicp.vip`,
        // target: `http://192.168.100.172:8095`,
        target: `http://192.168.100.10:8089`,//南华
        // target: `http://192.168.100.10:8089`,//南华
        // target: `https://9.208.38.93:8092/`,
        changeOrigin: true,
        pathRewrite: {