You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
448 lines
13 KiB
448 lines
13 KiB
<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>
|