liusheng
2 天以前 bbbc478129f72b26e2ec4a2e981ed8698a96880c
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;