Browse Source

bittext

master
pengjun 11 months ago
parent
commit
fe8bce4ce3
  1. 2
      src/components/doctorCheck/CheckItemList.vue
  2. 304
      src/components/doctorCheck/PacsTemplate.vue
  3. 448
      src/components/doctorCheck/PacsTemplateBak.vue

2
src/components/doctorCheck/CheckItemList.vue

@ -169,7 +169,7 @@
</el-dialog>
<!--Pacs结果录入模版-->
<el-dialog :title="'Pacs结果录入模版 -- ' + doctorCheck.asbitemName" v-if="dialogWinPacsTemplate"
<el-dialog :title="'Pacs结果录入模版 -- ' + doctorCheck.checkItemList[pacsParams.index].itemName" v-if="dialogWinPacsTemplate"
:visible.sync="dialogWinPacsTemplate" width="880px" :close-on-click-modal="false">
<PacsTemplate :refParams="pacsParams" :refFuncOther="handlePacsResult" />
</el-dialog>

304
src/components/doctorCheck/PacsTemplate.vue

@ -1,139 +1,65 @@
<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>
<el-table :data="bigTexts" style="width: 100%;" border highlight-current-row @row-click="rowClick"
height="300">
<el-table-column type="index" label="序号" width="40" align="center" />
<el-table-column prop="patientName" label="词条类别" min-width="80" align="center" />
<el-table-column prop="checkRequestNo" label="词条模版" min-width="100" align="center" />
<el-table-column prop="patientName" label="检查描述" min-width="380" />
<el-table-column prop="patientName" label="检查结论" min-width="180" />
</el-table>
</div>
<div :style="`display: block;width:620px; margin-left: 5px;`">
<div>
<div style="display: flex;">
<div style="width: 49%;">
<!-- 多个检查明细 -->
<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 style="display: flex; justify-content: space-between">
<div><span>检查结果</span></div>
<div>
<el-tooltip :content="`给 ${doctorCheck.checkItemList[refParams.index].itemName} 项目,赋默认结果`"
placement="top">
<i class="el-icon-edit" @click="btnDefResult(refParams.index)"
style="font-size: 18px;color: blue;cursor: pointer;margin-right: 10px;"></i>
</el-tooltip>
<el-tooltip :content="`清除 ${doctorCheck.checkItemList[refParams.index].itemName} 项目的检查结果`"
placement="top">
<i class="el-icon-delete" @click="btnClear(refParams.index)"
style="font-size: 18px; color: red;cursor: pointer;margin-right: 10px;"></i>
</el-tooltip>
</div>
</el-tab-pane>
</el-tabs>
</div>
</div>
<div>
<el-input style="width: 100%" type="textarea" v-model="doctorCheck.checkItemList[refParams.index].result"
placeholder="请输入检查结果" :autosize="{ minRows: 10, maxRows: 10 }" />
</div>
</div>
<div style="margin-top: 5px">
<div style="margin-left: 10px; width: 49%;">
<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 }"
/>
<el-input style="width: 100%" type="textarea" v-model="summary" placeholder="请输入结论"
:autosize="{ minRows: 10, maxRows: 10 }" />
</div>
</div>
<div
style="display: flex; justify-content: space-between; margin-top: 10px"
>
<div></div>
<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>
<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>
@ -142,76 +68,32 @@
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", //
bigTexts:[] //
};
},
//<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() {},
created() { },
//
mounted() {
//
this.init();
},
@ -219,14 +101,14 @@ export default {
//
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();
postapi('/api/app/BigtextResultTemplate/GetBigtextResultTemplateWithDetail',)
.then(res => {
if(res.code > -1){
this.bigTexts = res.data
}
})
},
// tab
@ -260,15 +142,7 @@ export default {
});
},
//
filterNode(value, data) {
//console.log(value,data)
if (!value) return true;
return (
data["displayName"].indexOf(value) > -1 ||
data["simpleCode"].indexOf(value.toUpperCase()) > -1
);
},
// truefalse
chooseDescription(opraType) {
@ -335,47 +209,12 @@ export default {
this.summary = summary;
//
if(!this.summary){
if(this.doctorCheck.checkItemList.length > 0) this.summary = this.doctorCheck.checkItemList[0].result;
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);
@ -419,19 +258,10 @@ export default {
},
},
watch: {
filterText(newVal, oldVal) {
if (newVal != oldVal) this.$refs["ref_tree"].filter(newVal);
},
watch: {
"refParams.refresh"(newVal, oldVal) {
if (newVal && newVal != oldVal) this.init();
},
//
tabChoosed(newVal, oldVal) {
if (newVal && newVal != oldVal) this.conclusion = [];
},
}
},
};
</script>
@ -442,7 +272,7 @@ export default {
@import "../../assets/css/global.css";
@import "../../assets/css/global_tree.css";
:deep .el-tree-node > .el-tree-node__children {
:deep .el-tree-node>.el-tree-node__children {
overflow: visible;
}
</style>

448
src/components/doctorCheck/PacsTemplateBak.vue

@ -0,0 +1,448 @@
<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
);
},
// truefalse
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;
},
// truefalse
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>
Loading…
Cancel
Save