WXL (wul)
8 天以前 58cd24c6664429e2a28eef6f7ee2e76c0e9c2d90
src/views/sfstatistics/percentage/index.vue
@@ -44,16 +44,11 @@
              v-show="showSearch"
              label-width="98px"
            >
              <!-- <el-form-item label="医院" prop="userName">
                <el-select v-model="queryParams.value1" placeholder="请选择">
                  <el-option
                    v-for="item in options"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select>
              <!-- <el-form-item label="责任医生" prop="userName">
                <el-input
                  v-model="queryParams.drname"
                  placeholder="请输入主治医生"
                ></el-input>
              </el-form-item> -->
              <el-form-item label="统计类型" prop="userName">
                <el-select
@@ -150,7 +145,7 @@
                >
              </el-form-item>
              <el-col :span="19">
              <el-button
                <el-button
                  type="warning"
                  plain
                  icon="el-icon-download"
@@ -158,19 +153,222 @@
                  @click="handleExport"
                  >导出</el-button
                >
          </el-col>
              </el-col>
            </el-form>
            <!-- <right-toolbar
          :showSearch.sync="showSearch"
          @queryTable="getList"
          :columns="columns"
        ></right-toolbar> -->
            <el-table
              v-loading="loading"
              :data="userList"
              :border="true"
              @selection-change="handleSelectionChange"
              @row-click="handleRowClick"
              @expand-change="handleRowClick"
              :row-key="getRowKey"
              :expand-row-keys="expands"
            >
              <!-- 展开行箭头列 -->
              <el-table-column type="expand">
                <template slot-scope="props">
                  <el-table
                    :data="props.row.doctorStats"
                    border
                    style="width: 95%; margin: 0 auto"
                    class="inner-table"
                  >
                    <el-table-column
                      label="医生姓名"
                      prop="drname"
                      align="center"
                    />
                    <el-table-column
                      label="科室"
                       width="120"
                      prop="deptname"
                      align="center"
                    />
                    <el-table-column
                      label="出院人次"
                      prop="dischargeCount"
                      align="center"
                    />
                    <el-table-column
                      label="出院人次"
                      align="center"
                      key="dischargeCount"
                      prop="dischargeCount"
                    >
                    </el-table-column>
                    <el-table-column
                      label="无需随访人次"
                      align="center"
                      width="100"
                      key="nonFollowUp"
                      prop="nonFollowUp"
                    >
                    </el-table-column>
                    <el-table-column
                      label="应随访人次"
                      align="center"
                      width="100"
                      key="followUpNeeded"
                      prop="followUpNeeded"
                    >
                    </el-table-column>
                    <el-table-column align="center" label="首次出院随访">
                      <el-table-column
                        label="应随访"
                        align="center"
                        key="needFollowUp"
                        prop="needFollowUp"
                      >
                      </el-table-column>
                      <el-table-column
                        label="待随访"
                        align="center"
                        key="pendingFollowUp"
                        prop="pendingFollowUp"
                      >
                      </el-table-column>
                      <el-table-column
                        label="随访成功"
                        align="center"
                        key="followUpSuccess"
                        prop="followUpSuccess"
                      >
                      </el-table-column>
                      <el-table-column
                        label="随访失败"
                        align="center"
                        key="followUpFail"
                        prop="followUpFail"
                      >
                      </el-table-column>
                      <el-table-column
                        label="随访率"
                        align="center"
                        width="120"
                        key="followUpRate"
                        prop="followUpRate"
                      >
                        <!-- <template slot-scope="scope">
                    <span
                      >{{
                        (Number(scope.row.followUpRate) * 100).toFixed(2)
                      }}%</span
                    >
                  </template> -->
                      </el-table-column>
                      <el-table-column
                        label="及时率"
                        align="center"
                        width="120"
                        key="rate"
                        prop="rate"
                      >
                        <template slot-scope="scope">
                          <el-button
                            size="medium"
                            type="text"
                            @click="Seedetails(scope.row)"
                            ><span class="button-zx"
                              >{{
                                (Number(scope.row.rate) * 100).toFixed(2)
                              }}%</span
                            ></el-button
                          >
                        </template>
                      </el-table-column>
                      <el-table-column
                        label="人工"
                        align="center"
                        key="manual"
                        prop="manual"
                      >
                      </el-table-column>
                      <el-table-column
                        label="短信"
                        align="center"
                        key="sms"
                        prop="sms"
                      >
                      </el-table-column>
                      <el-table-column
                        label="微信"
                        align="center"
                        key="weChat"
                        prop="weChat"
                      >
                      </el-table-column>
                    </el-table-column>
                    <el-table-column align="center" label="再次出院随访">
                      <el-table-column
                        label="应随访"
                        align="center"
                        key="needFollowUpAgain"
                        prop="needFollowUpAgain"
                      >
                      </el-table-column>
                      <el-table-column
                        label="待随访"
                        align="center"
                        key="pendingFollowUpAgain"
                        prop="pendingFollowUpAgain"
                      >
                      </el-table-column>
                      <el-table-column
                        label="随访成功"
                        align="center"
                        key="followUpSuccessAgain"
                        prop="followUpSuccessAgain"
                      >
                      </el-table-column>
                      <el-table-column
                        label="随访失败"
                        align="center"
                        key="followUpFailAgain"
                        prop="followUpFailAgain"
                      >
                      </el-table-column>
                      <el-table-column
                        label="随访率"
                        align="center"
                        width="120"
                        key="followUpRateAgain"
                        prop="followUpRateAgain"
                      >
                        <!-- <template slot-scope="scope">
                    <span
                      >{{
                        (Number(scope.row.FollowUpRateAgain) * 100).toFixed(2)
                      }}%</span
                    >
                  </template> -->
                      </el-table-column>
                      <el-table-column
                        label="人工"
                        align="center"
                        key="manualAgain"
                        prop="manualAgain"
                      >
                      </el-table-column>
                      <el-table-column
                        label="短信"
                        align="center"
                        key="smsAgain"
                        prop="smsAgain"
                      >
                      </el-table-column>
                      <el-table-column
                        label="微信"
                        align="center"
                        key="weChatAgain"
                        prop="weChatAgain"
                      >
                      </el-table-column>
                    </el-table-column>
                  </el-table>
                </template>
              </el-table-column>
              <el-table-column
                label="出院病区"
                align="center"
@@ -649,6 +847,7 @@
    return {
      topactiveName: "Local", //顶部选择
      activeName: "first", //侧边选择
      expands: [],
      // 遮罩层
      loading: false,
      Seedloading: false,
@@ -708,6 +907,10 @@
      postOptions: [],
      // 角色选项
      roleOptions: [],
      // 存储所有科室代码
      allDeptCodes: [],
      // 存储所有病区代码
      allWardCodes: [],
      // 表单参数
      form: {},
      forms: {
@@ -784,6 +987,8 @@
        serviceType: [2],
        dateRange: [],
        statisticaltype: 1,
        leavehospitaldistrictcodes: ["all"], // 默认选中全部病区
        deptcodes: [], // 默认选中全部科室
      },
      // 列信息
      columns: [
@@ -799,18 +1004,68 @@
  },
  watch: {},
  created() {
    this.getList();
    this.getDeptTree();
    this.getList();
  },
  methods: {
    /** 查询标签列表 */
    getList() {
      getSfStatistics(this.queryParams).then((response) => {
      // 处理查询参数
      const params = {
        ...this.queryParams,
        // 如果选择了"全部",则传所有病区/科室代码
        leavehospitaldistrictcodes:
          this.queryParams.leavehospitaldistrictcodes.includes("all")
            ? this.allWardCodes
            : this.queryParams.leavehospitaldistrictcodes,
        deptcodes: this.queryParams.deptcodes.includes("all")
          ? this.allDeptCodes
          : this.queryParams.deptcodes,
      };
      // 移除可能存在的"all"值
      delete params.leavehospitaldistrictcodes.all;
      delete params.deptcodes.all;
      getSfStatistics(params).then((response) => {
        console.log(response);
        // this.total = response.total;
        this.userList = response.data;
      });
    },
    getRowKey(row) {
      return row.statisticaltype === 1
        ? row.leavehospitaldistrictcode
        : row.deptcode;
    },
    // 处理行点击展开
    handleRowClick(row) {
      console.log(row,'row');
      // 如果已经展开则收起
      if (this.expands.includes(this.getRowKey(row))) {
        this.expands = [];
        return;
      }
      // 处理查询参数
      const params = {
        ...this.queryParams,
        // 如果选择了"全部",则传所有病区/科室代码
        leavehospitaldistrictcodes: [row.leavehospitaldistrictcode],
        drcode: "1",
      };
      // 如果该行还没有加载医生数据,则加载
      if (!row.doctorStats) {
        this.loading = true;
        getSfStatistics(params).then((res) => {
          this.$set(row, "doctorStats", res.data);
          this.expands = [this.getRowKey(row)];
          this.loading = false;
        });
      } else {
        this.expands = [this.getRowKey(row)];
      }
    },
    /** 修改标签 */
    handleUpdate(row) {
@@ -834,17 +1089,25 @@
          value: dept.deptCode,
        };
      });
      this.flatArrayhospit = store.getters.belongWards.map((dept) => {
      // 存储所有科室代码
      this.allDeptCodes = store.getters.belongDepts.map(
        (dept) => dept.deptCode
      );
      // 病区列表
      this.flatArrayhospit = store.getters.belongWards.map((ward) => {
        return {
          label: dept.districtName,
          value: dept.districtCode,
          label: ward.districtName,
          value: ward.districtCode,
        };
      });
      // deptTreeSelect().then((response) => {
      //   this.deptOptions = response.data;
      //   console.log(this.deptOptions, " this.deptOptions");
      //   this.flatArray = this.flattenArray(response.data);
      // });
      // 存储所有病区代码
      this.allWardCodes = store.getters.belongWards.map(
        (ward) => ward.districtCode
      );
      this.flatArraydept.push({ label: "全部", value: "all" });
      this.flatArrayhospit.push({ label: "全部", value: "all" });
    },
    flattenArray(multiArray) {
      let result = [];
@@ -1134,6 +1397,52 @@
    font-size: 20px;
  }
}
/* 使行有手型指针 */
.el-table__row {
  cursor: pointer;
}
/* 内层医生表格样式 */
.inner-table {
  // 表头背景色
  ::v-deep .el-table__header-wrapper {
    background-color: #f0f7ff !important;
    th {
      background-color: #f0f7ff !important;
    }
  }
  // 表格行背景色
  ::v-deep .el-table__body-wrapper {
    tr {
      background-color: #f9fbfe !important;
      &:hover {
        background-color: #e6f1ff !important;
      }
    }
  }
  // 边框颜色
  ::v-deep .el-table--border {
    border-color: #d9e8ff !important;
    td,
    th {
      border-color: #d9e8ff !important;
    }
  }
  // 斑马纹效果
  ::v-deep .el-table--striped .el-table__body tr.el-table__row--striped td {
    background-color: #f5f9ff !important;
  }
}
/* 展开行样式 */
.el-table__expanded-cell {
  padding: 10px 0 !important;
  background: #f8f8f8;
}
.document {
  width: 100px;
  height: 50px;