lkk
2025-01-06 93594afdf8567822384ad3b893e612c1cff082b8
src/views/hosp/project/index.vue
@@ -12,19 +12,37 @@
            style="margin-bottom: 15px"
          />
        </div>
        <div class="head-container">
          <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 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"
              :render-content="renderContent"
            />
          </div>
        </div>
        <!-- <el-scrollbar style="height: 629px; width: 100%">
          <div class="head-container">
            <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>
        </el-scrollbar> -->
      </el-col>
      <el-col :span="20" :xs="24">
        <el-form
@@ -78,7 +96,7 @@
          </el-col>
          <el-col :span="1.5">
            <el-button
            :disabled = "xiugais"
              :disabled="xiugais"
              type="primary"
              icon="el-icon-plus"
              size="mini"
@@ -106,6 +124,15 @@
          <el-col :span="1.5">
            <el-button
              type="primary"
              icon="el-icon-download"
              size="mini"
              @click="Synchronizationfees"
              >批量同步费用</el-button
            >
          </el-col>
          <el-col :span="1.5">
            <el-button
              type="primary"
              icon="el-icon-sort"
              size="mini"
              @click="toggleExpandAll"
@@ -124,7 +151,6 @@
          :data="projectList"
          ref="tableRef"
          border
        >
          <!-- :show-overflow-tooltip="true"  -->
          <el-table-column
@@ -156,12 +182,20 @@
            :show-overflow-tooltip="true"
          />
          <el-table-column
            label="临床意义"
            label="结果类型"
            align="center"
            prop="proMeaning"
            width="350px"
            prop="resultType"
            width="110px"
            :show-overflow-tooltip="true"
          />
          >
            <template slot-scope="scope">
              <dict-tag
                :options="dict.type.tj_result_type"
                :value="scope.row.resultType"
              />
            </template>
          </el-table-column>
          <!-- <el-table-column label="检查方式" align="center" prop="proCheckMethod" :show-overflow-tooltip="true"
            width="110px" /> -->
          <el-table-column
@@ -201,19 +235,12 @@
          >
          </el-table-column>
          <el-table-column
            label="项目类型"
            label="临床意义"
            align="center"
            prop="resultType"
            width="110px"
            prop="proMeaning"
            width="350px"
            :show-overflow-tooltip="true"
          >
            <template slot-scope="scope">
              <dict-tag
                :options="dict.type.tj_result_type"
                :value="scope.row.resultType"
              />
            </template>
          </el-table-column>
          />
          <el-table-column
            label="备注"
            prop="remark"
@@ -282,6 +309,7 @@
      width="1200px"
      append-to-body
      :before-close="handleClose"
      :close-on-click-modal="false"
    >
      <el-form
        ref="form"
@@ -292,6 +320,7 @@
      >
        <el-form-item label="主项名称" prop="proParentId">
          <treeselect
            :disabled="proParent"
            v-model="form.proParentId"
            :options="projectOptions"
            :normalizer="normalizer"
@@ -301,22 +330,8 @@
            @select="obtain"
          />
        </el-form-item>
        <el-form-item label="明细项目" prop="proName" v-if="key == 'Y'">
          <span
            slot="label"
            style="display: inline-block; border-bottom: 2px solid blue"
            @click="getDetailed"
          >
            明细项目
            <!-- <el-tooltip effect="dark" content="明细项目" placement="bottom">
              <i class='el-icon-question' @click="getDetailed" />
            </el-tooltip> -->
          </span>
          <el-input v-model="form.proName" placeholder="请输入明细项目">
          </el-input>
        </el-form-item>
        <el-form-item label="明细项目" prop="proName" v-if="key == 'N'">
        <el-form-item label="明细项目" prop="proName">
          <el-input v-model="form.proName" placeholder="请输入明细项目">
          </el-input>
        </el-form-item>
@@ -390,15 +405,15 @@
          <el-select
            v-model="form.deptId"
            placeholder="请选择科室名称"
            @change="changeValue"
            @change="changeType"
            filterable
            style="width: 260px"
          >
            <el-option
              v-for="dict in parentNameList"
              :key="dict.deptId"
              :label="dict.deptName"
              :value="dict.deptId"
              v-for="item in parentNameList"
              :key="item.deptId"
              :label="item.deptName"
              :value="item.deptId"
            />
          </el-select>
        </el-form-item>
@@ -473,11 +488,47 @@
            ></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="单位" prop="proMetering">
          <el-input
            v-model="form.proMetering"
            placeholder="请输入单位"
            style="width: 260px"
          />
        </el-form-item>
        <el-form-item label="参考范围" prop="proScope">
          <el-input
            v-model="form.proScope"
            placeholder="请输入参考范围"
            style="width: 200px"
          />
        </el-form-item>
        <el-form-item label="数量" prop="sl">
          <el-input
            v-model="form.sl"
            placeholder="请输入数量"
            style="width: 200px"
          />
        </el-form-item>
        <el-form-item label="组合标志" prop="sfzhfy">
          <el-select
            v-model="form.sfzhfy"
            placeholder="请选择是否组合标志"
            style="width: 260px"
          >
            <el-option
              v-for="dict in dict.type.sys_yes_no"
              :key="dict.value"
              :label="dict.label"
              :value="dict.value"
            ></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="结果类型" prop="resultType">
          <el-select
            v-model="form.resultType"
            placeholder="请选择结果类型"
            style="width: 260px"
            style="width: 200px"
            filterable
            clearable
          >
@@ -489,20 +540,67 @@
            ></el-option>
          </el-select>
        </el-form-item>
         <el-form-item label="LIS项目" prop="lisXmmc" >
        <el-form-item label="his项目名称" prop="hisXmmc" v-if="key == 'Y'">
          <span
            slot="label"
            style="display: inline-block; border-bottom: 2px solid blue"
            @click="getDetailed"
          >
            his项目名称
          </span>
          <el-input
            v-model="form.hisXmmc"
            placeholder="his项目名称"
            style="width: 200px"
          >
          </el-input>
        </el-form-item>
        <el-form-item label="his项目名称" prop="hisXmmc" v-if="key == 'N'">
          <el-input
            v-model="form.hisXmmc"
            placeholder="请输入明细项目"
            style="width: 260px"
          >
          </el-input>
        </el-form-item>
        <el-form-item label="his编码" prop="hisXmbm">
          <el-input
            v-model="form.hisXmbm"
            placeholder="请输入his编码"
            style="width: 260px"
          />
        </el-form-item>
        <el-form-item label="his单价" prop="hisdj">
          <el-input
            v-model="form.hisdj"
            placeholder="请输入his单价"
            style="width: 200px"
          />
        </el-form-item>
        <el-form-item label="LIS项目" prop="lisXmmc">
          <span
            slot="label"
            style="display: inline-block; border-bottom: 2px solid blue"
            @click="handleQuerys"
          >
            LIS项目
            <!-- <el-tooltip effect="dark" content="明细项目" placement="bottom">
              <i class='el-icon-question' @click="getDetailed" />
            </el-tooltip> -->
          </span>
          <el-input v-model="form.lisXmmc" placeholder="请输入LIS项目">
          <el-input
            v-model="form.lisXmmc"
            placeholder="请输入LIS项目"
            style="width: 200px"
          >
          </el-input>
        </el-form-item>
        <el-form-item label="LIS编码" prop="lisXmbm">
          <el-input
            v-model="form.LISXmbm"
            placeholder="请输入his编码"
            style="width: 260px"
          />
        </el-form-item>
        <el-form-item label="备注" prop="proRemark">
          <el-input
@@ -667,7 +765,12 @@
      </div>
    </el-dialog>
    <el-dialog title="收费项目" :visible.sync="dialogTableVisible" width="80%">
    <el-dialog
      title="收费项目"
      :visible.sync="dialogTableVisible"
      width="80%"
      :close-on-click-modal="false"
    >
      <div class="app-container">
        <el-row :gutter="24">
          <!--部门数据-->
@@ -816,10 +919,12 @@
  addProject,
  updateProject,
  ProjectTree,
  getlist,
  deptTree,
  deptTree111,
  getAllChildListById,
  getInfoByProId
  getInfoByProId,
  tbhisproprice,
} from "@/api/hosp/project";
import { listDept } from "@/api/system/dept";
import Treeselect from "@riophae/vue-treeselect";
@@ -863,8 +968,8 @@
      }
    };
    return {
      xiugais:true,
      xiugaiList:[],
      xiugais: true,
      xiugaiList: [],
      // 部门树选项
      deptOptions: undefined,
      dialogTableVisible: false,
@@ -919,6 +1024,7 @@
        children: "children",
        label: "label",
      },
      proParent: false,
      id: "",
      // 重新渲染表格状态
      refreshTable: true,
@@ -930,7 +1036,7 @@
        proEngName: null,
        checkType: null,
        deptId: undefined,
        proId:undefined,
        proId: undefined,
      },
      querycharge: {
        pageNum: 1,
@@ -938,6 +1044,7 @@
        xmmc: null,
        pym: null,
      },
      treeDate: {},
      queryParam: {
        page: 1,
        pageSize: 10,
@@ -945,12 +1052,24 @@
      },
      // 表单参数
      form: {
        proParentId: "",
        deptId: "",
        needReport: "Y",
        hisXmbm: "",
        hisXmmc: "",
        sfzhfy: "Y",
        hisdj: "",
        sl: "",
        proStatus: "0",
        proName: "",
        proPrice: "",
        sfxmId: "",
        lisXmbm:"",
        lisXmmc:"",
        lisXmbm: "",
        lisXmmc: "",
        proMetering: "",
        proScope: "",
        proSex:'2',
        resultType: "", // 初始值
      },
      // 表单校验
      rules: {
@@ -1013,6 +1132,9 @@
    this.getDeptList();
    this.getDeptTree();
  },
  mounted() {
    this.getDeptTree();
  },
  methods: {
    handleQuerys() {
      this.$refs.aaa.open = true;
@@ -1020,16 +1142,14 @@
      this.$refs.aaa.title = "数据字典";
    },
    handleChanges(param1) {
      console.log(param1);
      // if(this.form.pacCode == "不详"){
      //   this.form.cusIdcard = param1[0].xh;
      // }else{
      //   this.form.cusIdcard = param1[0].pacCode;
      // }
      this.form.lisXmbm = param1[0].pacCode;
      this.form.lisXmmc = param1[0].pacName;
    },
    //是否显示选中的值
    display(value) {},
@@ -1052,6 +1172,8 @@
      };
      getAllChildListById(data).then((response) => {
        // this.projectList = this.handleTree(response.data.list, "proId");
        console.log(response, 1122);
        this.projectList = response.data.list;
        this.loading = false;
      });
@@ -1067,12 +1189,18 @@
    /** 新增按钮操作 */
    handleAdd(row) {
      this.form.hisXmbm = "";
      this.form.hisXmmc = "";
      this.form.hisdj = "";
      // this.reset();
      this.loading = true;
      this.proParent = false;
      this.form.proPrice = 0.0;
      this.form.proName = "";
      this.form.proId = null;
      getAllChildListById().then((response) => {
      this.form.resultType = "1";
      //  ProjectTree
      getlist().then((response) => {
        if (response.code == 200) {
          this.loading = false;
          this.projectOptions = [];
@@ -1080,17 +1208,48 @@
          project.children = this.handleTree(response.data.list, "proId");
          this.key = response.data.key;
          this.projectOptions.push(project);
          if (row) {
            this.form.proParentId = row.proId;
          if (row.proId) {
            for (var i = 0; i < project.children.length; i++) {
              if (project.children[i].proId === row.proId) {
                this.form.proParentId = row.proId;
                break;
              } else {
                this.form.proParentId = 0;
              }
            }
            this.open = true;
          } else if (this.treeDate.id) {
            for (var i = 0; i < project.children.length; i++) {
              if (project.children[i].proId === this.treeDate.id) {
                this.form.proParentId = this.treeDate.id;
                break;
              } else {
                this.form.proParentId = 0;
              }
            }
            this.projectOptions.forEach((item) => {
              item.children.forEach((item1) => {
                if (this.form.proParentId == item1.proId) {
                  this.form.deptId = item1.deptId;
                }
              });
            });
            this.open = true;
          } else {
            this.open = true;
          }
        }
      });
      this.title = "体检项目信息维护";
      this.form.proId = this.queryParams.proId;
      this.title = "体检项目信息维护";
      if (this.queryParams.deptId) {
        this.form.deptId = this.queryParams.deptId;
      } else {
        this.form.deptId = null;
      }
      // this.form.proId = this.queryParams.proId;
      this.form.proCheckMethod = "N";
      if ((this.key = "Y")) {
@@ -1102,6 +1261,8 @@
    // 打开input弹框
    getDetailed() {
      this.querycharge.xmmc = "";
      this.querycharge.pym = "";
      if (this.selectList) {
        if (this.selectList.proName === "主类目") {
          this.dialogTableVisible = false;
@@ -1126,16 +1287,19 @@
        this.$message.error("请选择主项名称");
      }
    },
    changeType() {
      this.$forceUpdate();
    },
    obtain(vals) {
      if (this.projectOptions) {
        this.selectList = vals;
        console.log(this.selectList);
      }
      if (this.selectList.proName === "主类目") {
        this.showPrise = true;
        this.showRentPrise = false;
      } else {
        this.form.deptId = this.selectList.deptId;
        this.showPrise = false;
        this.showRentPrise = true;
      }
@@ -1145,6 +1309,7 @@
      this.List = true;
      listSfxm(this.querycharge).then((response) => {
        this.sfxmList = response.rows;
        response.rows.forEach((item, index) => {
          item.newID =
            (this.querycharge.pageNum - 1) * this.querycharge.pageSize +
@@ -1153,6 +1318,12 @@
        });
        this.total = response.total;
        this.loading = false;
      });
    },
    Synchronizationfees() {
      tbhisproprice().then((response) => {
        this.$modal.msgSuccess("批量同步费用成功");
      });
    },
    // input弹框搜索
@@ -1164,6 +1335,7 @@
    handleNodecharge(data) {
      this.queryParam.id = data.id;
      this.List = false;
      this.getListByXmId();
    },
@@ -1223,6 +1395,19 @@
      });
    },
    renderContent(h, { node, data }) {
      return h(
        "span",
        {
          style: {
            color: data.status === "1" ? "red" : "inherit", // 动态设置颜色
            fontSize: "14px",
          },
        },
        data.label // 显示节点的 label
      );
    },
    // 筛选节点
    filterNode2(value, data) {
      if (!value) return true;
@@ -1235,22 +1420,21 @@
    },
    // 节点单击事件
    handleNodeClick(date) {
      if(date.$treeNodeId == 3){
      this.treeDate = date;
      if (date.qf == "0") {
        this.xiugais = true;
      }else{
      } else {
        this.xiugais = false;
      }
      let proId = date.id;
      getInfoByProId(proId).then((response)=>{
      getInfoByProId(proId).then((response) => {
        this.xiugaiList = response.data;
        console.log(this.xiugaiList,222);
      })
      console.log(date,111);
      });
      this.id = date.id;
      this.queryParams.proId = date.id;
      let data = {
        proId: this.queryParams.proId,
        proName:this.queryParams.proNamez
        proName: this.queryParams.proNamez,
      };
      this.loading = true;
      getAllChildListById(data).then((response) => {
@@ -1296,7 +1480,6 @@
        proId: this.queryParams.proId,
      };
      getAllChildListById(data).then((response) => {
        console.log(response);
        // this.projectList = this.handleTree(response.data.list, "proId");
        // this.ListId.push(this.projectList[0].proId);
        // this.key = response.data.key;
@@ -1331,6 +1514,7 @@
        consumablesList: [],
        tjStandardList: [],
        proStatus: "0",
        resultType: "1",
      };
      this.resetForm("form");
    },
@@ -1461,9 +1645,24 @@
        this.form.tjStandardList.splice(index, 1);
      }
    },
    handleUpdate1(){
    handleUpdate1() {
      this.open = true;
      this.form = this.xiugaiList;
      this.form.proStatus = this.form.proStatus.toString();
      this.proParent = true;
      // if(){
      //   this.proParent = true
      // }
      getlist().then((response) => {
        if (response.code == 200) {
          this.loading = false;
          this.projectOptions = [];
          const project = { proId: 0, proName: "主类目", children: [] };
          project.children = this.handleTree(response.data.list, "proId");
          this.key = response.data.key;
          this.projectOptions.push(project);
        }
      });
    },
    /** 修改按钮操作 */
    handleUpdate(row) {
@@ -1471,7 +1670,9 @@
      this.getData();
      // this.form = row;
      const proId = row.proId || this.ids;
      this.proParent = false;
      getProject(proId).then((response) => {
        console.log(response, 999);
        this.form = response.data;
        if (this.form.proParentId === "0") {
          this.showPrise = true;
@@ -1480,7 +1681,7 @@
          this.showPrise = false;
          this.showRentPrise = true;
        }
        this.form.deptId = Number(this.form.deptId);
        // this.form.deptId = Number(this.form.deptId);
        if (this.form.proStandard === 0) {
          this.showPrise = true;
          this.showRentPrise = false;
@@ -1523,7 +1724,16 @@
            }
          });
        }
        getlist().then((response) => {
          if (response.code == 200) {
            this.loading = false;
            this.projectOptions = [];
            const project = { proId: 0, proName: "主类目", children: [] };
            project.children = this.handleTree(response.data.list, "proId");
            this.key = response.data.key;
            this.projectOptions.push(project);
          }
        });
        this.open = true;
        this.title = "体检项目信息维护";
      });
@@ -1599,7 +1809,13 @@
              this.form.lisXmbm = this.form.lisXmbm;
              updateProject(this.form).then((response) => {
                this.$modal.msgSuccess("修改成功");
                this.cancel();
                if (this.proParent == true) {
                  this.getDeptTree();
                  this.cancel();
                } else {
                  this.cancel();
                  this.getList();
                }
              });
            } else {
              if (this.form.proParentId === 0) {
@@ -1616,6 +1832,7 @@
                addProject(this.form).then((response) => {
                  this.$modal.msgSuccess("新增成功");
                  this.cancel();
                  this.getList();
                });
              }
            }
@@ -1661,7 +1878,13 @@
              this.form.lisXmbm = this.form.lisXmbm;
              updateProject(this.form).then((response) => {
                this.$modal.msgSuccess("修改成功");
                this.cancel();
                if (this.proParent == true) {
                  this.getDeptTree();
                  this.cancel();
                } else {
                  this.cancel();
                  this.getList();
                }
              });
            } else {
              if (this.form.proParentId === 0) {
@@ -1678,6 +1901,7 @@
                addProject(this.form).then((response) => {
                  this.$modal.msgSuccess("新增成功");
                  this.cancel();
                  this.getList();
                });
              }
            }
@@ -1689,8 +1913,10 @@
    // 收费项目确认
    submit() {
      this.ChangeList.forEach((item) => {
        this.form.proName = item.xmmc;
        this.form.proPrice = item.ckdj;
        this.form.hisXmbm = item.xmbm;
        this.form.hisXmmc = item.xmmc;
        this.form.hisdj = item.ckdj;
        this.sfxmId = parseInt(item.id);
      });
      this.dialogTableVisible = false;
@@ -1729,8 +1955,25 @@
};
</script>
<style scoped>
.scrollable-container {
  width: 200px; /* 设置容器的宽度 */
  height: 629px; /* 设置容器的高度 */
  overflow: auto; /* 允许内容溢出时显示滚动条 */
  border: 1px solid #ccc; /* 可选:添加边框以更好地显示容器 */
  position: relative; /* 可选:使容器内的绝对定位元素能够正确显示 */
}
.content {
  width: 1000px; /* 设置内容的宽度,以触发水平滚动条 */
  height: 1000px; /* 设置内容的高度,以触发垂直滚动条 */
}
.el-table__header-wrapper .el-checkbox {
  display: none;
}
.red-text {
  color: red !important;
}
.pag {
@@ -1756,4 +1999,14 @@
  background-color: #e5f3ff !important;
  color: #333 !important;
}
.el-scrollbar__bar.is-vertical {
  opacity: 1;
  padding-right: 5px;
  width: 7px;
}
.el-scrollbar__wrap {
  overflow-x: hidden;
}
</style>