1
lkk
2025-04-14 95c53f98bc1754d4a2277263802dac420bb22035
src/views/hosp/advicerules/index.vue
@@ -109,6 +109,34 @@
      ></right-toolbar>
    </el-row>
    <el-row :gutter="20" style="display: flex">
      <el-col :span="4" :xs="24">
        <div class="head-container">
          <el-input
            v-model="xmmc"
            placeholder="请输入项目名"
            clearable
            size="small"
            prefix-icon="el-icon-search"
            style="margin-bottom: 20px"
          />
        </div>
        <div class="scrollable-container">
          <div class="content">
            <el-tree
              :data="deptOptions"
              :props="defaultProps"
              :expand-on-click-node="false"
              :filter-node-method="filterNode"
              ref="tree"
              node-key="id"
              :default-expanded-keys="treeId"
              highlight-current
              @node-click="handleNodeClick"
            />
          </div>
        </div>
      </el-col>
    <el-table
      v-loading="loading"
      :data="advicerulesList"
@@ -145,7 +173,12 @@
        width="200"
        prop="jynr"
      />
      <el-table-column label="性别" align="center" prop="xb"  :formatter="formatSex" />
        <el-table-column
          label="性别"
          align="center"
          prop="xb"
          :formatter="formatSex"
        />
      <el-table-column label="范围" align="center" prop="fwz" />
      <el-table-column label="范围最小值" align="center" prop="fwzxz" />
      <el-table-column label="范围最大值" align="center" prop="fwzdz" />
@@ -187,13 +220,13 @@
        </template>
      </el-table-column>
    </el-table>
    </el-row>
    <pagination
      v-show="total > 0"
      :total="total"
      :page.sync="queryParams.pageNum"
      :limit.sync="queryParams.pageSize"
      @pagination="getList"
      @pagination="getListByXmId"
    />
    <!-- 添加或修改体检项目建议规则新表对话框 -->
@@ -486,6 +519,7 @@
  delAdvicerules,
  addAdvicerules,
  updateAdvicerules,
  getTjProAdvicerulesKsList,
} from "@/api/hosp/advicerules";
import { listAdvice } from "@/api/advice/advice";
import { getToken } from "@/utils/auth";
@@ -512,8 +546,11 @@
      // 体检项目建议规则新表表格数据
      advicerulesList: [],
      adviceList: [],
      deptOptions: [],
      treeId: [],
      // 弹出层标题
      title: "",
      xmmc: "",
      // 是否显示弹出层
      open: false,
      key: "",
@@ -521,6 +558,10 @@
      businessName: "exampleBusiness", // 示例业务名
      objs: {},
      departmentOptions: [],
      defaultProps: {
        children: "children",
        label: "label",
      },
      // 查询参数
      queryParams: {
        pageNum: 1,
@@ -573,15 +614,73 @@
  created() {
    this.getList();
  },
  watch: {
    // 根据名称筛选部门树
    xmmc(val) {
      this.$refs.tree.filter(val);
    },
    treeId(newVal, oldVal) {
      if (newVal) {
        this.$nextTick(() => {
          document
            .querySelector(".el-tree-node__children .el-tree-node__content")
            .click();
        });
      }
    },
  },
  methods: {
    /** 查询体检项目建议规则新表列表 */
    getList() {
      this.loading = true;
      /* this.loading = true;
      listAdvicerules(this.queryParams).then((response) => {
        this.advicerulesList = response.rows;
        this.total = response.total;
        this.loading = false;
      }); */
      getTjProAdvicerulesKsList().then((response) => {
        this.deptOptions = response.data.map((name, index) => {
          return {
            id: index + 1, // 可自定义唯一 ID
            label: name, // el-tree 默认的显示字段
          };
      });
        // 设置默认展开项
        this.treeId = [this.deptOptions[0]?.id];
        this.queryParams.proId = this.deptOptions[0]?.id;
        this.getListByXmId();
      });
    },
    getListByXmId() {
      this.loading = true;
      listAdvicerules(this.queryParams).then((response) => {
        response.rows.forEach((item, index) => {
          item.newID =
            (this.queryParams.pageNum - 1) * this.queryParams.pageSize +
            index +
            1;
        });
        this.advicerulesList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    handleNodeClick(data) {
      this.formIn = data;
      this.queryParams.ks = data.label;
      this.getListByXmId();
    },
    // 筛选节点
    filterNode(value, data) {
      if (!value) return true;
      // return data.label.indexOf(value) !== -1;
      return (
        data.label &&
        typeof data.label === "string" &&
        data.label.indexOf(value) !== -1
      );
    },
    idFn(value) {
@@ -820,4 +919,24 @@
  },
};
</script>
<style scoped>
.scrollable-container {
  width: 260px;
  /* 设置容器的宽度 */
  height: 629px;
  /* 设置容器的高度 */
  overflow: auto;
  /* 允许内容溢出时显示滚动条 */
  border: 1px solid #ccc;
  /* 可选:添加边框以更好地显示容器 */
  position: relative;
  /* 可选:使容器内的绝对定位元素能够正确显示 */
}
.content {
  width: 1000px;
  /* 设置内容的宽度,以触发水平滚动条 */
  height: 1000px;
  /* 设置内容的高度,以触发垂直滚动条 */
}
</style>