| 
						 | 
						<template>  <div style="display: flex">    <div :style="`width: 300px;height:550px;border: 1px solid #EEE;`">      <div style="margin: 2px 2px 2px 2px">        <el-input          placeholder="输入关键字进行过滤"          v-model="filterText"          size="small"        />      </div>      <div>        <!-- default-expand-all -->        <el-tree          :style="`overflow: scroll;width: 280px;height:510px;`"          :data="pacsTemplateTree"          :props="treeprops"          :filter-node-method="filterNode"          :expand-on-click-node="false"          highlight-current          ref="ref_tree"          show-checkbox          @check-change="handleCheckChange"        >          <span class="custom-tree-node" slot-scope="{ node, data }">            <div>              <span class="treeicons">                <img                  style="width: 20px; height: 20px; vertical-align: sub"                  src="@/assets/images/order.png"                  v-if="!data.parentId"                />              </span>              <span :class="!data.parentId ? 'maxtitle' : 'mintitle'"                >{{ node.label }}              </span>            </div>          </span>        </el-tree>      </div>    </div>    <div :style="`display: block;width:620px; margin-left: 5px;`">      <div>        <!-- 多个检查明细 -->        <div>          <span>检查结果:</span>          <el-radio-group v-model="tabPosition">            <el-radio :label="'top'">横排</el-radio>            <el-radio :label="'left'">纵排</el-radio>          </el-radio-group>        </div>        <el-tabs :tab-position="tabPosition" v-model="tabChoosed">          <el-tab-pane            v-for="(item, seq) in doctorCheck.checkItemList"            :label="dispLabel(item.itemName)"            :name="seq + ''"            :key="seq"          >            <el-input              style="width: 100%"              type="textarea"              v-model="item.result"              placeholder="请输入检查结果"              :autosize="{ minRows: decLineCount, maxRows: decLineCount }"            />            <div style="display: flex; justify-content: space-between">              <div></div>              <div>                <el-tooltip                  :content="`给 ${item.itemName} 项目,赋默认结果`"                  placement="top"                >                  <i                    class="el-icon-edit"                    @click="btnDefResult(seq)"                    style="                      font-size: 18px;                      color: blue;                      cursor: pointer;                      margin-right: 10px;                    "                  ></i>                </el-tooltip>                <el-tooltip                  :content="`清除 ${item.itemName} 项目的检查结果`"                  placement="top"                >                  <i                    class="el-icon-delete"                    @click="btnClear(seq)"                    style="                      font-size: 18px;                      color: red;                      cursor: pointer;                      margin-right: 10px;                    "                  ></i>                </el-tooltip>              </div>            </div>          </el-tab-pane>        </el-tabs>      </div>      <div style="margin-top: 5px">        <span>检查结论:</span>        <div style="display: flex; justify-content: space-between">          <el-input            style="width: 100%"            type="textarea"            v-model="summary"            placeholder="请输入结论"            :autosize="{ minRows: conLineCount, maxRows: conLineCount }"          />        </div>      </div>      <div        style="display: flex; justify-content: space-between; margin-top: 10px"      >        <div></div>        <div>          <!--          <el-button type="primary" @click="btnTest" class="commonbutton">测试</el-button>            -->          <el-tooltip content="清除所有检查项目描述及结论" placement="top">            <el-button type="primary" @click="btnClearAll" class="commonbutton"              >清除</el-button            >          </el-tooltip>          <el-tooltip content="所有检查项目赋默认描述及结论" placement="top">            <el-button type="primary" @click="btnDefault" class="commonbutton"              >默认结果</el-button            >          </el-tooltip>          <el-button type="primary" @click="btnOk" class="commonbutton"            >确定</el-button          >        </div>      </div>    </div>  </div></template><script>import moment from "moment";import { mapState } from "vuex";import { getapi, postapi, putapi, deletapi } from "@/api/api";import {  hadoopGet,  hadoopPost,  hadoopPut,  hadoopDel,} from "../../api/hadoopApi";import {  arrayReduce,  arrayExistObj,  deepCopy,  reMadeOrgTree,} from "../../utlis/proFunc";import {  getTreePids,  getTreeAllChildIdsById,  madeTree,} from "../../utlis/tree";
export default {  components: {},  props: ["refParams", "refFuncOther"],  data() {    return {      filterText: "",      description: [], // 描述
      conclusion: [], // 结论
      descriptionChoosedPre: [], // 前次选中
      descriptionChoosed: [], // 所有选中的描述的集合,切换部位时可用于描述初始化选择
      conclusionChoosed: [], // 选中的结论
      conclusionAll: [], // 所有选中的描述,对应的结论
      result: "", // 检查结果
      summary: "", // 小结
      pacsTemplateTree: [], //类别 + 模板树
      treeprops: {        label: "displayName", // label/displayName
        value: "id",        id: "id",        children: "children",      }, //树形组件的数据结构
      tabChoosed: "0",      tabPosition: "top", // 多个明细检查排列方式
    };  },  //<el-tree :data="$store.state.customerOrg.ref_tree" :props="$store.state.customerOrg.treeprops" @node-click="treeclick"></el-tree>
  computed: {    ...mapState(["window", "dialogWin", "doctorCheck"]),
    mainHeight() {      return this.window.pageHeight - 118;    },
    tableHeight() {      return this.mainHeight - 120 - 80 - 80;    },
    decLineCount() {      return this.refParams.from == "dcm" ? 14 : 16;    },
    conLineCount() {      return this.refParams.from == "dcm" ? 7 : 8;    },  },  //创建组件后
  created() {},
  //挂载组件完成
  mounted() {    //获取体检单位列表树信息
        this.init();  },
  methods: {    // 初始化数据
    init() {      this.description = [];      this.result = this.refParams.result || "";      this.summary = this.refParams.summary || "";      this.tabChoosed = this.refParams.index + "";      this.tabPosition =        this.doctorCheck.checkItemList.length > 5 ? "left" : "top";      console.log("init");            this.getPacsTemplateTree();    },
    // 显示tab标签名称,过长处理
    dispLabel(itemName) {      return itemName.length > 5 ? itemName.substring(0, 4) + "…" : itemName;    },
    //勾选节点
    handleCheckChange(data, checked, indeterminate) {      // console.log('data, checked, indeterminate,this.menuInfoSet',data, checked, indeterminate,this.menuInfoSet);
      this.description = [];      this.conclusion = [];      postapi("/api/app/BigtextResultTemplate/GetBigtextResultTemplateDetail", {        bigtextResultTemplateIds: [data.id],      }).then((res) => {        if (res.code > -1) {          this.description = res.data.descriptionDetail;          this.conclusion = res.data.conclusionDetail;          let opraType = false;          if (checked) {            // 勾选
            opraType = true;          } else if (!indeterminate) {            // 取消勾选
            opraType = false;          }          this.chooseDescription(opraType);          this.chooseConclusion(opraType);        }      });    },
    //树过滤
    filterNode(value, data) {      //console.log(value,data)
      if (!value) return true;      return (        data["displayName"].indexOf(value) > -1 ||        data["simpleCode"].indexOf(value.toUpperCase()) > -1      );    },
    // 选择true或取消false 描述
    chooseDescription(opraType) {      let bfind = false;      let result =        this.doctorCheck.checkItemList[parseInt(this.tabChoosed)].result;      this.description.forEach((e) => {        bfind = result.includes(e.description);        if (opraType) {          if (!bfind) {            if (result) {              if (                result ==                this.doctorCheck.checkItemList[parseInt(this.tabChoosed)]                  .defaultResult              ) {                result = e.description;              } else {                result += ";" + e.description;              }            } else {              result = e.description;            }          }        } else {          if (bfind)            result = result              .replaceAll(e.description + ";", "")              .replaceAll(e.description, "");        }      });
      // 去掉 最后的 ;
      if (result.substring(result.length - 1) == ";") {        result = result.substring(0, result.length - 1);      }      this.doctorCheck.checkItemList[parseInt(this.tabChoosed)].result = result;    },
    // 选择true或取消false 结论
    chooseConclusion(opraType) {      let lfind = 0;      let summarys = this.summary.split(";");      this.conclusion.forEach((e) => {        lfind = summarys.indexOf(e.conclusion);        if (opraType) {          if (lfind == -1 && e.isAbnormal == "Y") summarys.push(e.conclusion);        } else {          if (lfind > -1) summarys.splice(lfind, 1);        }      });      let summary = "";
      // 再次过滤 未见异常 或 未见明显异常
      summarys.forEach((e) => {        if (!(e.includes("未见异常") || e.includes("未见明显异常"))) {          if (summary) {            summary += ";" + e;          } else {            summary = e;          }        }      });      this.summary = summary;
      // 没有结论时(取描述)
      if(!this.summary){        if(this.doctorCheck.checkItemList.length > 0) this.summary = this.doctorCheck.checkItemList[0].result;      }    },
    //获取pacs结果模板
    getPacsTemplateTree() {      let resultType = [],        resultTemplate = [],        treeData = [];      postapi("/api/app/BigtextResultType/GetList", {        itemTypeId: this.refParams.row.itemTypeId,      })        .then((res) => {          if (res.code > -1) {            resultType = res.data;            resultType.forEach((e) => {              e.disabled = true;            });            return postapi("/api/app/BigtextResultTemplate/GetList", {});          }        })        .then((res) => {          if (res && res.code > -1) {            res.data.forEach((e) => {              resultTemplate.push(                Object.assign({}, e, { parentId: e.bigtextResultTypeId })              );            });            treeData = resultType.concat(resultTemplate);            // console.log('treeData',treeData,resultType,)
            this.pacsTemplateTree = madeTree(              treeData,              "children",              "parentId",              "id",              null            );          }        });    },
    btnTest() {      console.log("this.descriptionChoosed", this.descriptionChoosed);      console.log("this.conclusionChoosed", this.conclusionChoosed);    },
    // 清除所有描述与结论
    btnClearAll() {      this.doctorCheck.checkItemList.forEach((e) => {        e.result = "";      });      this.summary = "";    },
    // 清除结果
    btnClear(seq) {      this.doctorCheck.checkItemList[seq].result = "";    },
    // 默认结果
    btnDefResult(seq) {      this.doctorCheck.checkItemList[seq].result =        this.doctorCheck.checkItemList[seq].defaultResult;    },
    // 默认结果
    btnDefault() {      this.doctorCheck.checkItemList.forEach((e) => {        e.result = e.defaultResult;      });      this.summary = "未见异常";    },
    // 确定
    btnOk() {      this.refFuncOther(this.refParams.row, this.refParams.index, {        result: this.result,        summary: this.summary,      });      this.dialogWin.PacsTemplate = false;    },  },
  watch: {    filterText(newVal, oldVal) {      if (newVal != oldVal) this.$refs["ref_tree"].filter(newVal);    },
    "refParams.refresh"(newVal, oldVal) {      if (newVal && newVal != oldVal) this.init();    },
    // 检查明细改变
    tabChoosed(newVal, oldVal) {      if (newVal && newVal != oldVal) this.conclusion = [];    },  },};</script><style lang="scss" scoped>@import "../../assets/css/global_dialog.css";@import "../../assets/css/global_table.css";@import "../../assets/css/global_input.css";@import "../../assets/css/global.css";@import "../../assets/css/global_tree.css";
:deep .el-tree-node > .el-tree-node__children {  overflow: visible;}</style>
  |