| 
						 | 
						<template>  <div style="display: flex;">    <div :style="`width: 258px;height:${mainHeight}px;border: 1px solid #EEE;`">      <div style="margin:2px 2px 2px 2px;">        <el-input placeholder="输入关键字进行过滤" v-model="filterText" size="small" />      </div>      <div>        <el-tree :style="`overflow: scroll;width: 200px;height:${mainHeight - 40}px;`" :data="pacsTemplateTree"          :props="treeprops" @node-click="handleNode" :filter-node-method="filterNode" :expand-on-click-node="false"          highlight-current ref="ref_tree">          <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:${window.pageWidth - 200 - 30}px; margin-left: 5px;`">      <div style="display: flex;">        <div :style="`width: ${window.pageWidth - 200 - 30 - 250}px;`">          <el-table :data="description" border :height="tableHeight" highlight-current-row            @selection-change="selectionChangeDes" size="small" ref="ref_description">            <el-table-column type="selection" width="40" align="center" />            <el-table-column prop="description" label="描述" min-width="400" />            <el-table-column prop="conclusion" label="结论" min-width="150" align="center" />          </el-table>        </div>        <div style="width: 240px;margin-left: 5px;">          <el-table :data="conclusionAll" border :height="tableHeight" highlight-current-row            @selection-change="selectionChangeCon" size="small" ref="ref_conclusion">            <el-table-column type="selection" width="40" align="center" />            <el-table-column prop="conclusion" label="结论" min-width="150" />          </el-table>        </div>      </div>      <div style="margin-top: 5px;">        <span>检查结果:</span>        <el-input style="width: 100%;" type="textarea" v-model="result" placeholder="请输入描述"          :autosize="{ minRows: 6, maxRows: 6 }" />      </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: 4, maxRows: 4 }" />        </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-button type="primary" @click="btnClear" class="commonbutton">清除</el-button>          <el-button type="primary" @click="btnDefault" class="commonbutton">默认结果</el-button>          <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",      }, //树形组件的数据结构 
      newQuery: 0, // 0 表示新查询,新查询不执行 selectionChangeDes 的取消查询动作
    };  },  //<el-tree :data="$store.state.customerOrg.ref_tree" :props="$store.state.customerOrg.treeprops" @node-click="treeclick"></el-tree>
  computed: {    ...mapState(["window", "dialogWin"]),
    mainHeight() {      return this.window.pageHeight - 118;    },
    tableHeight() {      return this.mainHeight - 120 - 80 - 80;    },  },  //创建组件后
  created() {
  },
  //挂载组件完成
  mounted() {    //获取体检单位列表树信息
    this.getPacsTemplateTree();    this.init()  },
  methods: {    // 初始化数据
    init() {            this.btnClear()      this.description = []      this.result = this.refParams.result || ''      this.summary = this.refParams.summary || ''    },
    //树过滤
    filterNode(value, data) {      //console.log(value,data)
      if (!value) return true;      return data['displayName'].indexOf(value) > -1;    },
    //获取pacs结果模板
    getPacsTemplateTree() {      let resultType = [], resultTemplate = [], treeData = []
      postapi('/api/app/BigtextResultType/GetList')        .then(res => {          if (res.code > -1) {            resultType = res.data            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)          }        })    },
    //点击树节点
    handleNode(data, node, prop) {      let ids = getTreeAllChildIdsById(this.pacsTemplateTree, "children", "id", data.id)      ids.unshift(data.id) // 加入自身节点
      // hadoopPost('pacsApi', '/api/app/BigtextResultTemplate/GetBigtextResultTemplateDetail', { bigtextResultTemplateIds: ids })
      postapi('/api/app/BigtextResultTemplate/GetBigtextResultTemplateDetail', { bigtextResultTemplateIds: ids })        .then(res => {          if (res.code > -1) {            this.newQuery = 0            this.description = res.data.descriptionDetail            this.conclusion = res.data.conclusionDetail            let lfind = -1            this.description.forEach((e, i) => {              let conclusion = this.conclusion.filter(c => {                return c.bigtextResultTemplateId == e.bigtextResultTemplateId              })              e["conclusion"] = ""              e["conclusionList"] = []              conclusion.forEach(c => {                e["conclusionList"].push(c)              });              if (conclusion.length == 1) e["conclusion"] = conclusion[0].conclusion
              // 初始选中状态              
              lfind = arrayExistObj(this.descriptionChoosed, "description", e.description)              if (lfind > -1) {                // console.log('this.descriptionChoosed refresh', deepCopy(this.descriptionChoosed))
                this.$nextTick(() => {                  this.$refs['ref_description'].toggleRowSelection(this.description[i], true)                })              }            });          }        })
    },
    // 选择描述
    selectionChangeDes(v) {      this.newQuery++      let lfind = 0      v.forEach(e => {        lfind = arrayExistObj(this.descriptionChoosed, "description", e.description)        if (lfind == -1) {          this.descriptionChoosed.push(e)        }
        e.conclusionList.forEach(c => {          lfind = arrayExistObj(this.conclusionAll, "conclusion", c.conclusion)          if (lfind == -1) this.conclusionAll.push(c)        });        // 单个结论时,直接选中结论,多个则将结论添加至待选结论
        if (e.conclusion) {          lfind = arrayExistObj(this.conclusionAll, "conclusion", e.conclusion)          // console.log(lfind, e)
          if (lfind > -1) {            this.$refs['ref_conclusion'].toggleRowSelection(this.conclusionAll[lfind], true)          }        }
        if (this.result) {          if (!this.result.includes(e.description)) this.result += ';' + e.description        } else {          this.result = e.description        }      });
      // 这一次没选中的在上一次的选中当中,说明取消选择
      if (this.newQuery > 1) {        let unChooseed = arrayReduce(deepCopy(this.description), v, "description=description")        // console.log('this.descriptionChoosedPre,unChooseed', deepCopy(this.descriptionChoosedPre), unChooseed)
        unChooseed.forEach(e => {          lfind = arrayExistObj(this.descriptionChoosedPre, "description", e.description)          if (lfind > -1) {            lfind = arrayExistObj(this.descriptionChoosed, "description", e.description)            if (lfind > -1) this.descriptionChoosed.splice(lfind, 1)
            if (this.result.includes(e.description)) this.result = this.result.replaceAll(e.description + ";", "").replaceAll(e.description, "")            if (e.conclusion) {              lfind = arrayExistObj(this.conclusionAll, "conclusion", e.conclusion)              if (lfind > -1) this.$refs['ref_conclusion'].toggleRowSelection(this.conclusionAll[lfind], false)            }          }        });      }      this.descriptionChoosedPre = deepCopy(v)      if (this.result) {        if (this.result.substring(this.result.length - 1, this.result.length) == ";") this.result = this.result.substring(0, this.result.length - 1)      }    },
    // 选择结论(取消选择)
    selectionChangeCon(v) {      let summarys = []      v.forEach(e => {        if (this.summary) {          summarys = this.summary.split(";")          if (summarys.indexOf(e.conclusion) == -1) this.summary += ';' + e.conclusion        } else {          this.summary = e.conclusion        }      });      // if(this.summary && this.summary.substring())
      // 取消选择时
      let lfind = -1      let unChooseed = arrayReduce(deepCopy(this.conclusionAll), v, "conclusion=conclusion")      unChooseed.forEach(e => {        if (this.summary) {          summarys = this.summary.split(";")          lfind = summarys.indexOf(e.conclusion)          if (lfind > -1) summarys.splice(lfind, 1)          this.summary = ''          summarys.forEach((c, i) => {            if (i == 0) {              this.summary = c            } else {              this.summary += ";" + c            }          });        }      });    },
    btnTest() {      console.log('this.descriptionChoosed', this.descriptionChoosed)      console.log('this.conclusionChoosed', this.conclusionChoosed)    },
    // 清除所选描述与结论
    btnClear() {      this.result = ''      this.summary = ''      this.descriptionChoosed = []      this.$refs['ref_description'].clearSelection();
      this.conclusionChoosed = []      this.conclusionAll = []      this.$refs['ref_conclusion'].clearSelection();    },
    // 默认结果
    btnDefault() {      this.btnClear()      this.result = this.refParams.row.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.row.itemId"(newVal, oldVal) {      if (newVal != oldVal) this.init();    },
    "refParams.result"(newVal, oldVal) {      if (newVal != oldVal){        console.log("refParams.result",newVal, oldVal)        this.result = newVal      }    },
    "refParams.summary"(newVal, oldVal) {      if (newVal != oldVal){        console.log("refParams.summary",newVal, oldVal)        this.summary = newVal      }    },  },};</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>
  |