|
|
|
@ -1,64 +1,101 @@ |
|
|
|
<template> |
|
|
|
<div> |
|
|
|
<div> |
|
|
|
<el-table :data="bigTexts" style="width: 100%;" border highlight-current-row @row-click="rowClick" |
|
|
|
height="300"> |
|
|
|
<el-table :data="bigTexts" style="width: 100%;" highlight-current-row @row-click="rowClick" height="260"> |
|
|
|
<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-column prop="bigtextResultTypeName" label="词条类别" min-width="80" align="center" /> |
|
|
|
<el-table-column prop="bigtextResultTemplateName" label="词条模版" min-width="150" align="center" /> |
|
|
|
<el-table-column prop="bigtextResultConclusion" label="检查结论" min-width="150" align="center" /> |
|
|
|
<el-table-column prop="bigtextResultDescription" label="检查描述" min-width="400" /> |
|
|
|
</el-table> |
|
|
|
</div> |
|
|
|
<div style="display: flex;"> |
|
|
|
<div style="display: flex;margin-top: 5px;"> |
|
|
|
<div style="width: 49%;"> |
|
|
|
<!-- 多个检查明细 --> |
|
|
|
<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> |
|
|
|
<div style="display: flex; justify-content: space-between;height: 20px;"> |
|
|
|
<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> |
|
|
|
</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-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: 10, maxRows: 10 }" /> |
|
|
|
<div style="margin-left: 8px; width: 50%;"> |
|
|
|
<div style="display: flex; justify-content: space-between;height: 20px;"> |
|
|
|
<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> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<div> |
|
|
|
<el-table id="tableSummary" row-key="id" :data="doctorCheck.checkSummaryList" size="samll" height="186" |
|
|
|
width="100%" border> |
|
|
|
<el-table-column width="30" align="center"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-tag class="moveSummary" style="height:25px;padding:0 2px;cursor: move;background-color: #EEEEEE;"> |
|
|
|
<div style="width: 16px;">{{ scope.$index + 1 }}</div> |
|
|
|
</el-tag> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="summary" label="小结"> |
|
|
|
<template slot="header"> |
|
|
|
<div style="display: flex;justify-content:space-between;"> |
|
|
|
<div>小结</div> |
|
|
|
<div></div> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<div style="display: flex;"> |
|
|
|
<el-input type="textarea" v-model="scope.row.summary" :autosize="{ minRows: 1, maxRows: 100 }" |
|
|
|
placeholder="请输入小结"> |
|
|
|
</el-input> |
|
|
|
<el-button type="danger" style="min-width:23px;padding:2px;" icon="el-icon-delete" |
|
|
|
@click="delSum(scope.$index)" size="small"></el-button> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div style="display: flex; justify-content: space-between; margin-top: 10px"> |
|
|
|
<div></div> |
|
|
|
<div> |
|
|
|
<!--可选结果--> |
|
|
|
<div style="display: flex; justify-content: space-between; margin-top: 5px"> |
|
|
|
<div style="width: 730px;"> |
|
|
|
<el-table row-key="id" :data="resultOptRows" size="samll" width="100%" border> |
|
|
|
<el-table-column v-for="col in resultOpts" :key="col.resultTemplate" width="120" align="left"> |
|
|
|
<template slot="header">{{ col.resultTemplate }}</template> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-radio-group v-model="scope.row[col.resultTemplate]" @input="radioGroupInput"> |
|
|
|
<div v-for="opt in col.opts" :key="opt" style="margin-left: 10px;"> |
|
|
|
<el-radio :label="opt" style="margin: 5px 0;">{{ opt }}</el-radio> |
|
|
|
</div> |
|
|
|
</el-radio-group> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
</div> |
|
|
|
<div style=" margin-top: 5px"> |
|
|
|
<!-- |
|
|
|
<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> |
|
|
|
@ -68,6 +105,7 @@ |
|
|
|
import moment from "moment"; |
|
|
|
import { mapState } from "vuex"; |
|
|
|
import { getapi, postapi, putapi, deletapi } from "@/api/api"; |
|
|
|
import { arrayExistObj } from "@/utlis/proFunc"; |
|
|
|
|
|
|
|
|
|
|
|
export default { |
|
|
|
@ -75,13 +113,20 @@ export default { |
|
|
|
props: ["refParams", "refFuncOther"], |
|
|
|
data() { |
|
|
|
return { |
|
|
|
description: [], // 描述 |
|
|
|
conclusion: [], // 结论 |
|
|
|
descriptionChoosedPre: [], // 前次选中 |
|
|
|
descriptionChoosed: [], // 所有选中的描述的集合,切换部位时可用于描述初始化选择 |
|
|
|
conclusionChoosed: [], // 选中的结论 |
|
|
|
conclusionAll: [], // 所有选中的描述,对应的结论 |
|
|
|
bigTexts:[] // 大文本词条 |
|
|
|
bigTexts: [{ |
|
|
|
bigtextResultTypeName: "", |
|
|
|
bigtextResultTemplateName: "", |
|
|
|
bigtextResultConclusion: "", |
|
|
|
bigtextResultDescription: "" |
|
|
|
}], // 大文本词条 |
|
|
|
result: "", //隐藏在后台处理数据用 |
|
|
|
|
|
|
|
resultOpts: [ |
|
|
|
{ resultTemplate: "[A|B|C|D]", opts: ['A', 'B', 'C', 'D'], chooseOpt: 'A' } |
|
|
|
], // [|] 结果带选项 |
|
|
|
resultOptRows: [ |
|
|
|
|
|
|
|
], |
|
|
|
}; |
|
|
|
}, |
|
|
|
//<el-tree :data="$store.state.customerOrg.ref_tree" :props="$store.state.customerOrg.treeprops" @node-click="treeclick"></el-tree> |
|
|
|
@ -100,20 +145,136 @@ export default { |
|
|
|
methods: { |
|
|
|
// 初始化数据 |
|
|
|
init() { |
|
|
|
this.description = []; |
|
|
|
this.result = this.doctorCheck.checkItemList[this.refParams.index].result |
|
|
|
this.resultOpts = [] |
|
|
|
this.madeResultOpts() |
|
|
|
|
|
|
|
let itemId = this.doctorCheck.checkItemList[this.refParams.index].itemId |
|
|
|
|
|
|
|
postapi('/api/app/BigtextResultTemplate/GetBigtextResultTemplateWithDetail',) |
|
|
|
.then(res => { |
|
|
|
if(res.code > -1){ |
|
|
|
this.bigTexts = res.data |
|
|
|
//"itemId": "3fa85f64-5717-4562-b3fc-2c963f66afa6" |
|
|
|
|
|
|
|
postapi('/api/app/BigtextResultTemplate/GetBigtextResultTemplateWithDetail', { itemId }) |
|
|
|
.then(res => { |
|
|
|
if (res.code > -1) { |
|
|
|
this.bigTexts = res.data |
|
|
|
} |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
// 分析可选模版 [A|B|C|D] |
|
|
|
madeResultOpts() { |
|
|
|
this.resultOptRows = [] |
|
|
|
if (!this.result) return |
|
|
|
let opts1 = this.result.split(']') |
|
|
|
opts1.forEach(e => { |
|
|
|
let opts2 = e.split('[') |
|
|
|
if (opts2.length == 2) { |
|
|
|
if (opts2[1].includes('|')) { |
|
|
|
let resultTemplate = `[${opts2[1]}]` |
|
|
|
let lfind = arrayExistObj(this.resultOpts, 'resultTemplate', resultTemplate) |
|
|
|
if (lfind == -1) { |
|
|
|
let opts = opts2[1].split('|') |
|
|
|
let chooseOpt = '' |
|
|
|
this.resultOpts.push({ resultTemplate, opts, chooseOpt }) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
}); |
|
|
|
let resultOptRow = { id: 1 } |
|
|
|
if (this.resultOpts.length > 0) { |
|
|
|
this.resultOpts.forEach(e => { |
|
|
|
resultOptRow[e.resultTemplate] = e.chooseOpt |
|
|
|
}); |
|
|
|
} |
|
|
|
this.resultOptRows.push(resultOptRow) |
|
|
|
}, |
|
|
|
|
|
|
|
// |
|
|
|
radioGroupInput(v){ |
|
|
|
// console.log('radioGroupInput',this.resultOptRows,this.refParams.index) |
|
|
|
let result = this.result |
|
|
|
this.resultOpts.forEach(e => { |
|
|
|
if(this.resultOptRows[0][e.resultTemplate]) result = result.replace(e.resultTemplate,this.resultOptRows[0][e.resultTemplate]) |
|
|
|
}); |
|
|
|
this.doctorCheck.checkItemList[this.refParams.index].result = result |
|
|
|
}, |
|
|
|
|
|
|
|
// 显示tab标签名称,过长处理 |
|
|
|
dispLabel(itemName) { |
|
|
|
return itemName.length > 5 ? itemName.substring(0, 4) + "…" : itemName; |
|
|
|
// 选择结果模版 (true 则添加,false则取消) 老板说,只有选,没有取消选择 |
|
|
|
rowClick(row) { |
|
|
|
// bigtextResultTypeName: "", |
|
|
|
// bigtextResultTemplateName: "", |
|
|
|
// bigtextResultConclusion: "", |
|
|
|
// bigtextResultDescription: "" |
|
|
|
let chooseOpra = true |
|
|
|
let conclusions = [] |
|
|
|
let result = this.doctorCheck.checkItemList[this.refParams.index].result |
|
|
|
if (result) { |
|
|
|
if (result == this.doctorCheck.checkItemList[this.refParams.index].defaultResult) { |
|
|
|
chooseOpra = true |
|
|
|
result = row.bigtextResultDescription |
|
|
|
} else { |
|
|
|
// |
|
|
|
if (result.includes(row.bigtextResultDescription)) { |
|
|
|
return // 老板说,只有选,没有取消选择 |
|
|
|
// chooseOpra = false |
|
|
|
// result = result.replaceAll(`;${row.bigtextResultDescription}`, '').replaceAll(`${row.bigtextResultDescription};`, '').replaceAll(`${row.bigtextResultDescription}`, '') |
|
|
|
// if (!result) result = this.doctorCheck.checkItemList[this.refParams.index].defaultResult |
|
|
|
} else { |
|
|
|
chooseOpra = true |
|
|
|
result += ";" + row.bigtextResultDescription |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
chooseOpra = true |
|
|
|
result = row.bigtextResultDescription |
|
|
|
} |
|
|
|
this.doctorCheck.checkItemList[this.refParams.index].result = result |
|
|
|
this.result = result |
|
|
|
this.madeResultOpts() |
|
|
|
|
|
|
|
if (row.bigtextResultConclusion) conclusions = row.bigtextResultConclusion.split(";") |
|
|
|
if (conclusions.length > 0) { |
|
|
|
let lfind = -1 |
|
|
|
conclusions.forEach(e => { |
|
|
|
if (chooseOpra) { |
|
|
|
lfind = -1 |
|
|
|
this.doctorCheck.checkSummaryList.forEach(c => { |
|
|
|
if (c.summary == e) lfind = 1 |
|
|
|
}); |
|
|
|
// 没找到,则添加结论 |
|
|
|
if (lfind == -1) { |
|
|
|
this.doctorCheck.checkSummaryList.push({ |
|
|
|
id: Math.random(), |
|
|
|
registerCheckId: this.doctorCheck.RegisterCheckEdit.id, |
|
|
|
summary: e, |
|
|
|
summaryFlag: 'N', |
|
|
|
}) |
|
|
|
} |
|
|
|
} else { |
|
|
|
if (this.doctorCheck.checkSummaryList.length > 0) { |
|
|
|
for (let i = this.doctorCheck.checkSummaryList.length - 1; i > -1; i--) { |
|
|
|
if (e == this.doctorCheck.checkSummaryList[i].summary) this.doctorCheck.checkSummaryList.splice(i, 1) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
//删除小结 |
|
|
|
delSum(index) { |
|
|
|
this.$confirm("此操作将删除该记录, 是否继续?", "提示", { |
|
|
|
confirmButtonText: "是", |
|
|
|
cancelButtonText: "否", |
|
|
|
type: "warning", |
|
|
|
}).then(() => { |
|
|
|
this.doctorCheck.checkSummaryList.splice(index, 1); |
|
|
|
}).catch(err => { |
|
|
|
if (err == "cancel") { |
|
|
|
// this.$message.info("已取消删除"); |
|
|
|
console.log('已取消删除') |
|
|
|
} |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
//勾选节点 |
|
|
|
@ -144,90 +305,6 @@ export default { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 选择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; |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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) { |
|
|
|
@ -240,13 +317,6 @@ export default { |
|
|
|
this.doctorCheck.checkItemList[seq].defaultResult; |
|
|
|
}, |
|
|
|
|
|
|
|
// 默认结果 |
|
|
|
btnDefault() { |
|
|
|
this.doctorCheck.checkItemList.forEach((e) => { |
|
|
|
e.result = e.defaultResult; |
|
|
|
}); |
|
|
|
this.summary = "未见异常"; |
|
|
|
}, |
|
|
|
|
|
|
|
// 确定 |
|
|
|
btnOk() { |
|
|
|
|