1
lkk
9 天以前 f1bd530bc3fcfc006426ebd2e79d0b09c31ba41f
src/views/hosp/advicerules/index.vue
@@ -50,7 +50,6 @@
      <el-col :span="1.5">
        <el-button
          type="primary"
          plain
          icon="el-icon-plus"
          size="mini"
          @click="handleAdd"
@@ -60,8 +59,7 @@
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="success"
          plain
          type="primary"
          icon="el-icon-edit"
          size="mini"
          :disabled="single"
@@ -72,8 +70,7 @@
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="danger"
          plain
          type="primary"
          icon="el-icon-delete"
          size="mini"
          :disabled="multiple"
@@ -82,118 +79,147 @@
          >删除
        </el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="warning"
          plain
          icon="el-icon-upload2"
          size="mini"
          @click="handleImport"
          >导入
      <!--  <el-col :span="1.5">
        <el-button type="primary" icon="el-icon-upload2" size="mini" @click="handleImport">导入
        </el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="warning"
          plain
          icon="el-icon-download"
          size="mini"
          @click="handleExport"
          v-hasPermi="['hosp:advicerules:export']"
          >导出
        <el-button type="primary" icon="el-icon-download" size="mini" @click="handleExport"
          v-hasPermi="['hosp:advicerules:export']">导出
        </el-button>
      </el-col>
      <right-toolbar
      </el-col> -->
      <!-- <right-toolbar
        :showSearch.sync="showSearch"
        @queryTable="getList"
      ></right-toolbar>
      ></right-toolbar> -->
    </el-row>
    <el-table
      v-loading="loading"
      :data="advicerulesList"
      @selection-change="handleSelectionChange"
    >
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label="序号" width="50" align="center">
        <template slot-scope="scope">
          {{ scope.$index + 1 }}
          <!-- 使用 $index 来显示序号,从1开始 -->
        </template>
      </el-table-column>
      <el-table-column label="编码" align="center" prop="bm" />
      <el-table-column label="科室" align="center" prop="ks" />
      <el-table-column label="检查项目" align="center" prop="jcxm" />
      <el-table-column
        label="主要诊断"
        align="center"
        :show-overflow-tooltip="true"
        width="120"
        prop="zyzd"
      />
      <el-table-column
        label="建议名称"
        align="center"
        :show-overflow-tooltip="true"
        width="150"
        prop="jymc"
      />
      <el-table-column
        label="建议内容"
        align="center"
        :show-overflow-tooltip="true"
        width="200"
        prop="jynr"
      />
      <el-table-column label="范围" align="center" prop="fwz" />
      <el-table-column label="范围最小值" align="center" prop="fwzxz" />
      <el-table-column label="范围最大值" align="center" prop="fwzdz" />
      <el-table-column label="异常标志" align="center" prop="ycbz" />
      <el-table-column label="是否疾病" align="center" prop="sfjb">
      </el-table-column>
      <el-table-column label="是否常见病" align="center" prop="sfcjb">
      </el-table-column>
      <el-table-column label="是否慢性病" align="center" prop="sfmxb">
      </el-table-column>
      <el-table-column
        label="是否重大疾病"
        align="center"
        width="120"
        prop="sfzdjb"
      ></el-table-column>
      <el-table-column
        label="操作"
        align="center"
        class-name="small-padding fixed-width"
      >
        <template slot-scope="scope">
          <el-button
            size="mini"
            type="text"
            icon="el-icon-edit"
            @click="handleUpdate(scope.row)"
            v-hasPermi="['hosp:advicerules:edit']"
    <el-row :gutter="20" style="display: flex">
      <el-col :span="3" :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-col :span="20" :xs="24">
        <el-table
          v-loading="loading"
          :data="advicerulesList"
          @selection-change="handleSelectionChange"
          height="520"
        >
          <el-table-column type="selection" width="55" align="center" />
          <el-table-column label="序号" width="50" align="center">
            <template slot-scope="scope">
              {{ scope.$index + 1 }}
              <!-- 使用 $index 来显示序号,从1开始 -->
            </template>
          </el-table-column>
          <el-table-column label="编码" align="center" prop="bm" />
          <el-table-column label="科室" align="center" prop="ks" />
          <el-table-column label="检查项目" align="center" prop="jcxm" />
          <el-table-column
            label="主要诊断"
            align="center"
            :show-overflow-tooltip="true"
            width="120"
            prop="zyzd"
          />
          <el-table-column
            label="建议名称"
            align="center"
            :show-overflow-tooltip="true"
            width="150"
            prop="jymc"
          />
          <el-table-column
            label="建议内容"
            align="center"
            :show-overflow-tooltip="true"
            width="200"
            prop="jynr"
          />
          <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" />
          <el-table-column label="异常标志" align="center" prop="ycbz" />
          <el-table-column label="是否疾病" align="center" prop="sfjb">
          </el-table-column>
          <el-table-column label="是否常见病" align="center" prop="sfcjb">
          </el-table-column>
          <el-table-column label="是否慢性病" align="center" prop="sfmxb">
          </el-table-column>
          <el-table-column
            label="是否重大疾病"
            align="center"
            width="120"
            prop="sfzdjb"
          ></el-table-column>
          <el-table-column
            label="操作"
            align="center"
            class-name="small-padding fixed-width"
          >
          </el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['hosp:advicerules:remove']"
          >
          </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"
    />
            <template slot-scope="scope">
              <el-button
                size="mini"
                type="text"
                icon="el-icon-edit"
                @click="handleUpdate(scope.row)"
                v-hasPermi="['hosp:advicerules:edit']"
              >
              </el-button>
              <el-button
                size="mini"
                type="text"
                icon="el-icon-delete"
                @click="handleDelete(scope.row)"
                v-hasPermi="['hosp:advicerules:remove']"
              >
              </el-button>
            </template>
          </el-table-column>
        </el-table>
        <div class="pag">
          <div class="pag1">
            <pagination
              v-show="total > 0"
              :total="total"
              :page.sync="queryParams.pageNum"
              :limit.sync="queryParams.pageSize"
              @pagination="getListByXmId"
            />
          </div>
        </div>
      </el-col>
    </el-row>
    <!-- 添加或修改体检项目建议规则新表对话框 -->
    <el-dialog
@@ -212,6 +238,7 @@
      >
        <el-form-item label="科室" prop="ks">
          <el-select
            :rules="rules"
            v-model="form.ks"
            placeholder="请选择科室"
            style="width: 200px"
@@ -262,12 +289,26 @@
          />
        </el-form-item>
        <el-form-item label="异常标志" prop="ycbz">
          <el-input
          <!-- <el-input
            v-model="form.ycbz"
            style="width: 200px"
            placeholder="请输入异常标志"
          />
          /> -->
          <el-select
            v-model="form.ycbz"
            placeholder="请选择异常标志"
            style="width: 200px"
            clearable
          >
            <el-option
              v-for="item in ycdata"
              :key="item.value"
              :label="item.label"
              :value="item.label"
            ></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="疾病" prop="sfjb">
          <el-checkbox v-model="form.sfjb" true-label="是" false-label="否">
          </el-checkbox>
@@ -292,6 +333,21 @@
            true-label="是"
            false-label=""
          ></el-checkbox>
        </el-form-item>
        <el-form-item label="性别" prop="xb">
          <el-select
            v-model="form.xb"
            placeholder="请选择体检人性别"
            style="width: 200px"
            clearable
          >
            <el-option
              v-for="dict in dict.type.sys_user_sex"
              :key="dict.value"
              :label="dict.label"
              :value="dict.value"
            ></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="建议名称" prop="jymc" style="display: block">
          <el-input
@@ -469,6 +525,7 @@
  delAdvicerules,
  addAdvicerules,
  updateAdvicerules,
  getTjProAdvicerulesKsList,
} from "@/api/hosp/advicerules";
import { listAdvice } from "@/api/advice/advice";
import { getToken } from "@/utils/auth";
@@ -476,12 +533,29 @@
export default {
  name: "Advicerules",
  dicts: ["sys_user_sex"],
  data() {
    return {
      // 遮罩层
      loading: true,
      // 选中数组
      ids: [],
      ycdata: [
        { label: "↑", value: "up" },
        { label: "↓", value: "down" },
        { label: "阳性", value: "positive" },
        { label: "弱阳性", value: "weak_positive" },
        { label: "4+", value: "4plus" },
        { label: "3+", value: "3plus" },
        { label: "2+", value: "2plus" },
        { label: "1+", value: "1plus" },
        { label: "+1", value: "plus1" },
        { label: "+2", value: "plus2" },
        { label: "+3", value: "plus3" },
        { label: "+4", value: "plus4" },
        { label: "+", value: "plus" },
        { label: "+-", value: "plus_minus" },
      ],
      // 非单个禁用
      single: true,
      // 非多个禁用
@@ -494,8 +568,11 @@
      // 体检项目建议规则新表表格数据
      advicerulesList: [],
      adviceList: [],
      deptOptions: [],
      treeId: [],
      // 弹出层标题
      title: "",
      xmmc: "",
      // 是否显示弹出层
      open: false,
      key: "",
@@ -503,6 +580,10 @@
      businessName: "exampleBusiness", // 示例业务名
      objs: {},
      departmentOptions: [],
      defaultProps: {
        children: "children",
        label: "label",
      },
      // 查询参数
      queryParams: {
        pageNum: 1,
@@ -517,6 +598,7 @@
        sfcjb: null,
        sfmxb: null,
        sfzdjb: null,
        sfzdjb: null,
      },
      queryParam1: {
        page: 1,
@@ -529,9 +611,13 @@
        pageSize: 10,
      },
      // 表单参数
      form: {},
      form: {
        // xb: "2",
      },
      // 表单校验
      rules: {},
      rules: {
        ks: [{ required: true, message: " ", trigger: ["blur", "change"] }],
      },
      upload: {
        // 是否显示弹出层(用户导入)
        open: false,
@@ -552,15 +638,81 @@
  created() {
    this.getList();
  },
  watch: {
    // 根据名称筛选部门树
    xmmc(val) {
      this.$refs.tree.filter(val);
    },
    treeId(newVal, oldVal) {
      if (newVal) {
        this.$nextTick(() => {
          const node = document.querySelector(
            ".el-tree-node__children .el-tree-node__content"
          );
          if (node) {
            node.click();
          } else {
            console.warn("没有找到 el-tree 节点,无法触发点击");
          }
        });
      }
    },
  },
  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) => {
        console.log(response,123456);
        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) {
@@ -599,13 +751,16 @@
        createBy: null,
        updateBy: null,
        deleted: null,
        // xb: "2",
      };
      this.resetForm("form");
      if (this.$refs.form) {
        this.$refs.form.resetFields();
      }
    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
      this.getListByXmId();
    },
    handlecharge() {
      this.querycharge.pageNum = 1;
@@ -614,6 +769,13 @@
    clearForm() {
      this.queryParam.bt = ""; // 清空标题
      this.queryParam.nr = ""; // 清空建议内容
    },
    formatSex(row) {
      const dictItem = this.dict.type.sys_user_sex.find(
        (item) => item.value === row.xb
      );
      return dictItem ? dictItem.label : "";
    },
    handleSelectionChange1(selection) {
@@ -689,6 +851,7 @@
        this.open = true;
        this.title = "修改体检项目建议规则新表";
      });
      deptTreeSelect().then((response) => {
        this.departmentOptions = response.data[0].children;
      });
@@ -697,19 +860,18 @@
    submitForm() {
      this.$refs["form"].validate((valid) => {
        if (valid) {
          this.form.xb = this.form.xb === "1" ? "1" : null;
          if (this.form.id != null) {
            updateAdvicerules(this.form).then((response) => {
              console.log(response, 1111333);
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
              this.getListByXmId();
            });
          } else {
            addAdvicerules(this.form).then((response) => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
              this.getListByXmId();
            });
          }
        }
@@ -788,4 +950,28 @@
  },
};
</script>
<style scoped>
.scrollable-container {
  width: 200px;
  height: 520px;
  overflow: auto;
  border: 1px solid #ccc;
  position: relative;
}
.content {
  width: 1000px;
  /* 设置内容的宽度,以触发水平滚动条 */
  height: 1000px;
  /* 设置内容的高度,以触发垂直滚动条 */
}
.pag {
  width: 100%;
  display: flex;
  justify-content: center;
}
.pag1 {
  width: 65%;
}
</style>