|
|
<template> <div style="display: flex;"> <div :style="`width: 220px;height:550px;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:510px;`" :data="pacsTemplateTree" :props="treeprops" :filter-node-method="filterNode" :expand-on-click-node="false" highlight-current ref="ref_tree" show-checkbox default-expand-all @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.getPacsTemplateTree(); 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') },
// 显示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) summarys.push(e.conclusion) } else { if (lfind > -1) summarys.splice(lfind, 1) } }); let summary = '' summarys.forEach(e => { if (summary) { summary += ';' + e } else { summary = e } }); this.summary = summary },
//获取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>
|