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.
813 lines
29 KiB
813 lines
29 KiB
<template>
|
|
<div>
|
|
<el-table :data="doctorCheck.checkItemList" style="width: 100%" :height="tableHeight" border highlight-current-row
|
|
@row-click="rowClick" size="small">
|
|
<el-table-column prop="itemName" label="项目" width="220" />
|
|
<el-table-column prop="result" label="结果" min-width="200">
|
|
<template slot-scope="scope">
|
|
<div style="display: flex;">
|
|
<el-autocomplete style="width: 100%;" type="textarea" v-model="scope.row.result" placeholder="请输入结果值"
|
|
:disabled="rowResultDisabled(scope.row)" :autosize="{ minRows: 1, maxRows: 10 }" :trigger-on-focus="false"
|
|
:fetch-suggestions="querySearch" :data-lineModeFlag="scope.row.lineModeFlag"
|
|
@input="madeTooltips(scope.$index); computeFun(scope.$index)" v-bind:class="scope.row.class">
|
|
</el-autocomplete>
|
|
<el-button style="min-width:23px;padding: 2px;" icon="el-icon-caret-bottom"
|
|
@click="btnMoreResult(scope.row, scope.$index)" :disabled="rowResultDisabled(scope.row)"
|
|
size="small"></el-button>
|
|
<el-button style="min-width:23px;padding:2px;margin-left: 2px;"
|
|
@click="btnPacsResult(scope.row, scope.$index)" :disabled="rowResultDisabled(scope.row)"
|
|
size="small">P</el-button>
|
|
</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="unit" label="单位" width="90" align="center" />
|
|
<el-table-column prop="referenceRangeValue" label="参考范围" width="120" align="center" />
|
|
<el-table-column prop="resultStatusId" label="提示" width="40" align="center">
|
|
<template slot-scope="scope">
|
|
<div>{{ dddw(resultStatus, 'id', scope.row.resultStatusId, 'dataInputPrompt') }}</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="criticalFlag" label="危急值" width="50" align="center">
|
|
<template slot-scope="scope">
|
|
<el-button style="min-width:23px;padding:6px 2px;"
|
|
@click="btnCritical(scope.row)"
|
|
size="small">W</el-button>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
|
|
<!--弹窗-->
|
|
<div>
|
|
<!-- 结果录入模版 -->
|
|
<el-dialog title="结果录入模版" :visible.sync="dialogWinMoreResult" width="800px" :close-on-click-modal="false">
|
|
<div style="margin-top: -10px;">
|
|
<el-checkbox v-model="isSplitChooseResult" size="small" true-label="Y"
|
|
false-label="N">选结果模板时自动添加分隔符;</el-checkbox>
|
|
<div
|
|
style="overflow-y:auto; height:300px;width:100%;display: flex;flex-wrap: wrap;align-content: flex-start;">
|
|
<div v-for="item in moreResult.data" :key="item.id" style="margin: 5px;cursor:pointer;"
|
|
@click="clickResult(item)" @dblclick="dblclickResult(item)">
|
|
<el-tag size="samll"
|
|
style="padding: 0 3px;height: 24px;line-height: 24px;font-size: 14px; color: #303133;background-color: white;">{{
|
|
item.result }}</el-tag>
|
|
</div>
|
|
</div>
|
|
<div>特殊符号:</div>
|
|
<div style="overflow-y:auto; width:100%;display: flex;flex-wrap: wrap;align-content: flex-start;">
|
|
<div v-for="item in symbols" :key="item.id" style="margin: 1px 2px;cursor:pointer;"
|
|
@click="insertSymbols(item.displayName)">
|
|
<el-tag
|
|
style="padding: 0 3px;height: 24px;line-height: 24px;font-size: 15px;color: #303133;background-color: white;">
|
|
{{ item.displayName }}
|
|
</el-tag>
|
|
</div>
|
|
</div>
|
|
<div style="display: flex;justify-content: space-between;">
|
|
<div style="margin-top: 5px;">录入结果:</div>
|
|
<div style="overflow-y:auto; display: flex;flex-wrap: wrap;">
|
|
<div v-for="item in splitSymbols" :key="item" style="margin: 1px 2px;cursor:pointer;"
|
|
@click="insertSymbols(item)">
|
|
<el-tag
|
|
style="padding: 0 3px;height: 24px;line-height: 24px;font-size: 15px;color: #303133;background-color: white;">
|
|
{{ item }}
|
|
</el-tag>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<el-input id="resultBox" style="width: 100%;" class="commonFont" type="textarea"
|
|
:autosize="{ minRows: 4, maxRows: 4 }" v-model="moreResult.result" />
|
|
</div>
|
|
<span slot="footer" class="dialog-footer">
|
|
<el-button @click="btnClear">清 除</el-button>
|
|
<el-button type="primary" @click="btnOkResult('defaultResult')">默认结果</el-button>
|
|
<el-button type="primary" @click="btnOkResult('')">确 定</el-button>
|
|
<el-button @click="dialogWinMoreResult = false">关 闭</el-button>
|
|
</span>
|
|
</el-dialog>
|
|
|
|
<!--Pacs结果录入模版-->
|
|
<el-dialog :title="'Pacs结果录入模版 -- ' + doctorCheck.asbitemName" v-if="dialogWinPacsTemplate" :visible.sync="dialogWinPacsTemplate" width="800px"
|
|
:close-on-click-modal="false">
|
|
<PacsTemplate :refParams="pacsParams" :refFuncOther="handlePacsResult" />
|
|
</el-dialog>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
// 0-无参考范围,1-数字型,2-字符型,3-性激素
|
|
import { mapState } from "vuex";
|
|
import { getapi, postapi, putapi, deletapi } from "@/api/api";
|
|
import { arrayExistObj, dddw, deepCopy } from '../../utlis/proFunc'
|
|
import PacsTemplate from "./PacsTemplate.vue";
|
|
|
|
export default {
|
|
components: {
|
|
PacsTemplate
|
|
},
|
|
props: ["isCheckPicture", "registerCheckId", "doctor_check_check_charge"],
|
|
data() {
|
|
return {
|
|
resultStatus: [], //结果状态提示数据
|
|
tipsNormal: {
|
|
id: '01',
|
|
displayName: "正常",
|
|
dataInputPrompt: "正常",
|
|
reportPrompt: "正常",
|
|
reportBackgroundColor: 16777215,
|
|
reportFontColor: 0,
|
|
dataInputBackgroundColor: 16777215,
|
|
dataInputFontColor: 0,
|
|
}, //正常提示
|
|
tipsError: {}, //错误提示
|
|
tipsNegative: {}, //阴性提示
|
|
tipsLowPositive: {}, //弱阳性提示
|
|
tipsPositive: {}, //阳性提示
|
|
tipsLow: {}, //偏低提示
|
|
tipsHigh: {}, //偏高提示
|
|
tipsSuperLow: {}, //超低提示
|
|
tipsSuperHigh: {}, //超高提示
|
|
tipsSuper: {}, //文字型危急值
|
|
|
|
restaurants: [], //结果模版
|
|
currentRow: -1, //当前操作的行
|
|
|
|
dialogWinMoreResult: false,
|
|
dialogWinPacsTemplate:false,
|
|
moreResult: {
|
|
data: [],
|
|
result: '',
|
|
defaultResult: '',
|
|
index: 0, // 明细序列
|
|
}, //结果模版
|
|
isSplitChooseResult: 'N', // 选结果时,是否自动加上分隔符
|
|
selection: { // 光标位置
|
|
start: 0, end: 0
|
|
},
|
|
symbols: [], //特殊符号
|
|
splitSymbols: [';', '、'], // 分隔符
|
|
userId: '',
|
|
|
|
// pacs 结果录入
|
|
pacsParams: {
|
|
from:'doctor',
|
|
refresh:-1, // 强制刷新
|
|
row: {},
|
|
index: 0,
|
|
result: '',
|
|
summary: ''
|
|
},
|
|
|
|
};
|
|
},
|
|
|
|
created() {
|
|
this.dictInit()
|
|
},
|
|
|
|
//挂载完成
|
|
mounted() {
|
|
this.checkItemList(this.dataTransOpts.tableS.register_check.id);
|
|
|
|
this.userId = window.sessionStorage.getItem("userId")
|
|
},
|
|
|
|
computed: {
|
|
...mapState(["window", "dataTransOpts", "dict", "dialogWin", "doctorCheck"]),
|
|
|
|
tableHeight() {
|
|
let temp = this.window.pageHeight < 600 ? 600 : this.window.pageHeight
|
|
return Math.floor((temp - 260 - (this.isCheckPicture ? 110 : 0)) * 3 / 5);
|
|
},
|
|
|
|
},
|
|
|
|
methods: {
|
|
dddw,
|
|
dictInit() {
|
|
//获取结果状态提示数据
|
|
getapi('/api/app/result-status').then(res => {
|
|
if (res.code != -1) {
|
|
this.resultStatus = res.data
|
|
this.resultStatus.forEach(e => {
|
|
switch (e.id) {
|
|
case '01': // 正常
|
|
e.tooltips = 'tipsNormal'
|
|
this.colorTrans(e, e.tooltips)
|
|
break;
|
|
case '02': // 错误
|
|
e.tooltips = 'tipsError'
|
|
this.colorTrans(e, e.tooltips)
|
|
break;
|
|
case '03': // 阴性
|
|
e.tooltips = 'tipsNegative'
|
|
this.colorTrans(e, e.tooltips)
|
|
break;
|
|
case '04': // 阳性
|
|
e.tooltips = 'tipsPositive'
|
|
this.colorTrans(e, e.tooltips)
|
|
break;
|
|
case '05': // 弱阳性
|
|
e.tooltips = 'tipsLowPositive'
|
|
this.colorTrans(e, e.tooltips)
|
|
break;
|
|
case '06': // 偏低
|
|
e.tooltips = 'tipsLow'
|
|
this.colorTrans(e, e.tooltips)
|
|
break;
|
|
case '07': // 偏高
|
|
e.tooltips = 'tipsHigh'
|
|
this.colorTrans(e, e.tooltips)
|
|
break;
|
|
case '08': // 危急值下限
|
|
e.tooltips = 'tipsSuperLow'
|
|
this.colorTrans(e, e.tooltips)
|
|
break;
|
|
case '09': // 危急值上限
|
|
e.tooltips = 'tipsSuperHigh'
|
|
this.colorTrans(e, e.tooltips)
|
|
break;
|
|
case '10': // 危急值
|
|
e.tooltips = 'tipsSuper'
|
|
this.colorTrans(e, e.tooltips)
|
|
break;
|
|
default:
|
|
e.tooltips = 'tipsNormal'
|
|
this.colorTrans(e, e.tooltips)
|
|
break;
|
|
}
|
|
});
|
|
}
|
|
})
|
|
|
|
//获取结果状态提示数据
|
|
postapi('/api/app/CommonChar/GetCommonCharList', {}).then(res => {
|
|
if (res.code >= 0) {
|
|
this.symbols = res.data
|
|
}
|
|
})
|
|
},
|
|
|
|
// 颜色转换
|
|
// displayName: "错误",
|
|
// dataInputPrompt: "×",
|
|
// reportPrompt: "×",
|
|
// reportBackgroundColor: 2427166,
|
|
// reportFontColor: 1070166,
|
|
// dataInputBackgroundColor: 321313,
|
|
// dataInputFontColor: 12991019,
|
|
colorTrans(dataColor, frontColor) {
|
|
let tempColor = '000000' + Number(dataColor.dataInputBackgroundColor).toString(16)
|
|
let backgroundColor = '#' + tempColor.substring(tempColor.length - 6)
|
|
tempColor = '000000' + Number(dataColor.dataInputFontColor).toString(16)
|
|
let color = '#' + tempColor.substring(tempColor.length - 6)
|
|
this[frontColor] = Object.assign(
|
|
{},
|
|
dataColor,
|
|
{ backgroundColor, color }
|
|
)
|
|
console.log(`this.${frontColor}`, this[frontColor])
|
|
},
|
|
|
|
// "referenceRangeValue": "15-55",
|
|
// "referenceRangeTypeFlag": "1",
|
|
// "criticalRangeValue": null,
|
|
// "result"
|
|
madeTooltips(index) {
|
|
// let ts = confirm('提示')
|
|
let checkItem = this.doctorCheck.checkItemList[index]
|
|
let tooltips = 'tipsNormal'
|
|
checkItem.class = tooltips
|
|
let referenceRangeTypeFlag = checkItem.referenceRangeTypeFlag || '0' //参考范围类别0-无参考范围,1-数字型,2-字符型,3-性激素
|
|
// console.log('madeTooltips',index,referenceRangeTypeFlag)
|
|
switch (referenceRangeTypeFlag) {
|
|
case '3': // 1 是数字型,3 是性激素期
|
|
case '1':
|
|
// console.log('1、3')
|
|
if (checkItem.result) {
|
|
let tempResult = checkItem.result
|
|
.replaceAll('<', '').replaceAll('≤', '').replaceAll('≦', '')
|
|
.replaceAll('>', '').replaceAll('≥', '').replaceAll('≧', '')
|
|
.replaceAll('=', '').replaceAll(' ', '')
|
|
console.log('tempResult', isNaN(tempResult), tempResult)
|
|
if (isNaN(tempResult)) break;
|
|
let result = Number(tempResult)
|
|
|
|
|
|
if (checkItem.referenceRangeValue) {
|
|
let criticalRangeValue = checkItem.criticalRangeValue
|
|
let valueArr = checkItem.referenceRangeValue.replaceAll('--', '-').replaceAll('〜', '-').replaceAll('~', '-').split('-')
|
|
if (valueArr.length == 1) valueArr.unshift(0)
|
|
|
|
|
|
// console.log('valueArr',checkItem.referenceRangeValue,valueArr)
|
|
if (criticalRangeValue) {
|
|
let criticalArr = criticalRangeValue.replaceAll('--', '-').replaceAll('〜', '-').replaceAll('~', '-').split('-')
|
|
if (criticalArr.length == 1) criticalArr.unshift(0)
|
|
|
|
// console.log('criticalArr',checkItem.criticalRangeValue,criticalArr)
|
|
|
|
if (result < Number(criticalArr[0])) {
|
|
tooltips = 'tipsSuperLow'
|
|
} else if (result > Number(criticalArr[1])) {
|
|
tooltips = 'tipsSuperHigh'
|
|
} else if (result < Number(valueArr[0])) {
|
|
tooltips = 'tipsLow'
|
|
} else if (result > Number(valueArr[1])) {
|
|
tooltips = 'tipsHigh'
|
|
}
|
|
} else {
|
|
if (result < Number(valueArr[0])) {
|
|
tooltips = 'tipsLow'
|
|
} else if (result > Number(valueArr[1])) {
|
|
tooltips = 'tipsHigh'
|
|
}
|
|
}
|
|
}
|
|
|
|
//错误值校验
|
|
let errArr = []
|
|
if (checkItem.inputCheck) {
|
|
errArr = checkItem.inputCheck.replaceAll('--', '-').replaceAll('〜', '-').replaceAll('~', '-').split('-')
|
|
if (errArr.length == 1) errArr.unshift(-1)
|
|
}
|
|
if (errArr && errArr.length > 1) {
|
|
if (result < Number(errArr[0]) || result > Number(errArr[1])) {
|
|
tooltips = 'tipsError'
|
|
console.log('checkItem', checkItem)
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case '2':
|
|
if (checkItem.result) {
|
|
if (checkItem.result.indexOf('阴性') > -1 || checkItem.result.indexOf('-') > -1) {
|
|
tooltips = 'tipsNegative'
|
|
} else if (checkItem.result.indexOf('弱阳性') > -1 || checkItem.result.indexOf('±') > -1) {
|
|
tooltips = 'tipsLowPositive'
|
|
} else if (checkItem.result.indexOf('阳性') > -1 || checkItem.result.indexOf('+') > -1) {
|
|
tooltips = 'tipsPositive'
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
// 判断后重新赋值
|
|
checkItem.class = tooltips
|
|
// 保存过检查时,直接取数据库
|
|
checkItem.resultStatusId = this[tooltips].id //名称 dataInputPrompt
|
|
|
|
// console.log('checkItem',checkItem)
|
|
// console.log(`this.${tooltips}`,this[tooltips])
|
|
},
|
|
|
|
// 行结果是否可编辑
|
|
rowResultDisabled(row) {
|
|
return row.isCalculationItem == 'Y' || this.doctorCheck.RegisterCheckEdit.completeFlag == '1' || this.doctorCheck.RegisterCheckEdit.completeFlag == '2'
|
|
},
|
|
btnCritical(row){
|
|
this.dialogWin.FollowCriticalCheck=true
|
|
this.doctorCheck.combinationCriticalValue=false
|
|
this.doctorCheck.singleDetailedProject=row
|
|
},
|
|
//项目列为计算函数
|
|
computeFun(index) {
|
|
// 有计算项的,才调用计算函数
|
|
let haveComputeFun = false
|
|
let checkItem = this.doctorCheck.checkItemList[index]
|
|
console.log('checkItem', checkItem)
|
|
let body = {
|
|
registerCheckId: checkItem.registerCheckId,
|
|
items: []
|
|
}
|
|
|
|
this.doctorCheck.checkItemList.forEach(e => {
|
|
body.items.push({
|
|
itemId: e.itemId,
|
|
result: e.result
|
|
})
|
|
if (e.isCalculationItem == 'Y') haveComputeFun = true
|
|
});
|
|
if (!haveComputeFun) return // 有计算项的,才调用计算函数
|
|
let lfind = -1
|
|
postapi('/api/app/diagnosisfunction/getcalculationfunctionresult', body).then(res => {
|
|
if (res.code != -1) {
|
|
// console.log('res.data',res.data)
|
|
res.data.items.forEach(e => {
|
|
lfind = arrayExistObj(this.doctorCheck.checkItemList, "itemId", e.itemId)
|
|
if (lfind > -1) {
|
|
if (e.result != this.doctorCheck.checkItemList[lfind].result) {
|
|
this.doctorCheck.checkItemList[lfind].result = e.result
|
|
console.log('e', lfind, this.doctorCheck.checkItemList[lfind])
|
|
this.madeTooltips(lfind)
|
|
}
|
|
}
|
|
});
|
|
}
|
|
})
|
|
},
|
|
|
|
// 点击结果模版按钮
|
|
btnMoreResult(row, index) {
|
|
this.moreResult.data = deepCopy(row.itemResultTemplates)
|
|
this.moreResult.result = row.result
|
|
this.moreResult.defaultResult = row.defaultResult
|
|
this.moreResult.index = index
|
|
// "itemId": "3a0c517f-cbdb-9fff-e300-1f76b3e47580",
|
|
// "result": "00000",
|
|
// "diagnosisId": "3a0ed8a2-72d9-ee50-78aa-5b1f474f2921",
|
|
// "isNameIntoSummary": "N",
|
|
// "isResultIntoSummary": "Y",
|
|
// "resultStatusId": "01",
|
|
// "simpleCode": "0"
|
|
|
|
this.dialogWinMoreResult = true
|
|
|
|
this.watchSelection()
|
|
|
|
},
|
|
|
|
// pacs结果模板
|
|
btnPacsResult(row, index) {
|
|
|
|
let result = row.result
|
|
let summary = ''
|
|
|
|
this.doctorCheck.checkSummaryList.forEach((e, i) => {
|
|
summary += e.summary
|
|
});
|
|
|
|
|
|
this.pacsParams.row = row
|
|
this.pacsParams.index = index
|
|
this.pacsParams.result = result
|
|
this.pacsParams.summary = summary
|
|
this.pacsParams.refresh++
|
|
|
|
|
|
this.dialogWinPacsTemplate = true
|
|
},
|
|
|
|
// 双击选择结果模版的结果
|
|
dblclickResult(item) {
|
|
this.moreResult.result = ''
|
|
this.clickResult(item)
|
|
this.btnOkResult('')
|
|
},
|
|
|
|
// 单击选择结果模版的结果
|
|
clickResult(item) {
|
|
let result = []
|
|
if (this.moreResult.result) result = this.moreResult.result.split(';')
|
|
// 不用分隔符时,不判断包含关系
|
|
if (this.isSplitChooseResult == 'Y' && result.indexOf(item.result) > -1) return
|
|
if (this.isSplitChooseResult == 'Y' || result.length == 0) {
|
|
result.push(item.result)
|
|
} else {
|
|
result[result.length - 1] = result[result.length - 1] + item.result
|
|
}
|
|
|
|
let ret = ''
|
|
result.forEach((e, i) => {
|
|
let splitStr = ';'
|
|
if (i == 0) splitStr = ''
|
|
ret += splitStr + e
|
|
});
|
|
this.moreResult.result = ret
|
|
},
|
|
|
|
// 清除结果值
|
|
btnClear() {
|
|
this.moreResult.result = ''
|
|
},
|
|
|
|
btnOkResult(result) {
|
|
this.doctorCheck.checkItemList[this.moreResult.index].result = result ? this.moreResult[result] : this.moreResult.result
|
|
this.madeTooltips(this.moreResult.index);
|
|
this.computeFun(this.moreResult.index)
|
|
this.dialogWinMoreResult = false
|
|
},
|
|
|
|
// 处理 pacs 结果录入的情况
|
|
handlePacsResult(row, index, pacsResult) {
|
|
// console.log('row,index,pacsResult', row, index, pacsResult)
|
|
this.doctorCheck.checkItemList[index].result = pacsResult.result
|
|
this.doctorCheck.checkSummaryList = [{
|
|
id: Math.random(),
|
|
registerCheckId: this.doctorCheck.RegisterCheckEdit.id,
|
|
summary: pacsResult.summary,
|
|
summaryFlag: 'N',
|
|
}]
|
|
this.dialogWinPacsTemplate = false
|
|
},
|
|
|
|
|
|
|
|
//选择项目
|
|
rowClick(row) {
|
|
this.doctorCheck.checkItem = row;
|
|
this.restaurants = row.itemResultTemplates;
|
|
},
|
|
|
|
//检查组合项目下所包含的明细项目
|
|
checkItemList(RegisterCheckId) {
|
|
// this.doctorCheck.checkItem = null
|
|
if (!RegisterCheckId) {
|
|
this.doctorCheck.checkItemList = []
|
|
this.doctorCheck.RegisterCheckEdit = {
|
|
id: '',
|
|
checkDoctorId: '',
|
|
checkDate: '',
|
|
LastModifierId: '',
|
|
LastModificationTime: '',
|
|
completeFlag: ''
|
|
}
|
|
return
|
|
}
|
|
console.log(`/api/app/registercheckitem/getlistinregistercheckid?RegisterCheckId=${RegisterCheckId}`);
|
|
|
|
getapi(`/api/app/registercheck/getregistercheck?id=${RegisterCheckId}`)
|
|
.then(res => {
|
|
if (res.code > -1) {
|
|
this.doctorCheck.RegisterCheckEdit = res.data
|
|
if (res.data.isCharge != 'Y' && this.doctor_check_check_charge == 'Y') {
|
|
this.$message.warning({ showClose: true, message: `该体检人员未缴清费用!` })
|
|
}
|
|
if (this.doctorCheck.RegisterCheckEdit.completeFlag == '0') {
|
|
this.doctorCheck.RegisterCheckEdit.checkDoctorId = this.userId
|
|
this.doctorCheck.RegisterCheckEdit.checkDate = new Date()
|
|
}
|
|
return getapi(`/api/app/registercheckitem/getlistinregistercheckid?RegisterCheckId=${RegisterCheckId}&PatientRegisterId=${this.dataTransOpts.tableS.patient_register.id}`)
|
|
}
|
|
})
|
|
.then((res) => {
|
|
// console.log("checkItemList", res.data);
|
|
if (res && res.code > -1) {
|
|
|
|
res.data.forEach((e, i) => {
|
|
// 虚拟显示危急状态
|
|
e['criticalFlag'] = 'N'
|
|
});
|
|
|
|
this.doctorCheck.checkItemList = res.data;
|
|
this.doctorCheck.checkItemList.forEach((e, i) => {
|
|
if (this.doctorCheck.RegisterCheckEdit.completeFlag == '0') {
|
|
this.madeTooltips(i)
|
|
} else {
|
|
let lfind = arrayExistObj(this.resultStatus, 'id', e.resultStatusId)
|
|
if (lfind > -1) {
|
|
e.class = this.resultStatus[lfind].tooltips
|
|
}
|
|
}
|
|
});
|
|
this.enterToTab();
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
this.$message.error({ showClose: true, message: `操作失败,原因:${err}` });
|
|
});
|
|
},
|
|
|
|
querySearch(queryString, cb) {
|
|
var restaurants = []; //不需要字典库显示 deepCopy(this.restaurants) [{ value: '阴性' },{ value: '阳性' }]
|
|
restaurants.forEach((item) => {
|
|
return (item.value = item.result);
|
|
});
|
|
// console.log("restaurants", restaurants);
|
|
var results = queryString
|
|
? restaurants.filter(this.createFilter(queryString))
|
|
: restaurants;
|
|
// 调用 callback 返回建议列表的数据
|
|
cb(results);
|
|
},
|
|
|
|
createFilter(queryString) {
|
|
return (restaurant) => {
|
|
return (
|
|
restaurant["value"]
|
|
.toLowerCase()
|
|
.indexOf(queryString.toLowerCase()) > -1
|
|
);
|
|
};
|
|
},
|
|
handleSelect(item) {
|
|
console.log('item', item);
|
|
},
|
|
|
|
//回车替代tab键
|
|
enterToTab() {
|
|
// console.log('enterToTab');
|
|
this.$nextTick(() => {
|
|
let inputs = document.querySelectorAll(["textarea", "input"]); //用数组可以读取多个标签的元素 //.inline-input
|
|
|
|
// console.log('inputs', typeof inputs, inputs)
|
|
|
|
// 为每个输入框添加键盘事件监听器
|
|
inputs.forEach((input, i) => {
|
|
// console.log('input',input);
|
|
input.addEventListener('keydown', (event) => {
|
|
|
|
// 如果按下的是回车键
|
|
// console.log('data-lineModeFlag', input, input.getAttribute('data-lineModeFlag'), i);
|
|
// console.log('event.keyCode', event.keyCode)
|
|
|
|
switch (event.keyCode) {
|
|
case 13:
|
|
if (event.keyCode === 13 && input.getAttribute('data-lineModeFlag') == '0') {
|
|
event.preventDefault();
|
|
} else {
|
|
break;
|
|
}
|
|
case 9: // tab 键
|
|
event.preventDefault();
|
|
case 40: // ↓ 键
|
|
for (let j = i + 1; j < inputs.length; j++) {
|
|
// console.log(inputs[j], inputs[j].getAttribute('type'), inputs[j].getAttribute('placeholder'))
|
|
if (inputs[j].getAttribute('placeholder') == "请输入结果值") {
|
|
if (inputs[j].getAttribute('disabled') != "disabled") {
|
|
// console.log('inputs[j]', inputs[j])
|
|
inputs[j].focus();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case 38: // ↑ 键
|
|
for (let j = i - 1; j > -1; j--) {
|
|
// console.log(inputs[j], inputs[j].getAttribute('type'), inputs[j].getAttribute('placeholder'))
|
|
if (inputs[j].getAttribute('placeholder') == "请输入结果值") {
|
|
if (inputs[j].getAttribute('disabled') != "disabled") {
|
|
// console.log('inputs[j]', inputs[j])
|
|
inputs[j].focus();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
});
|
|
|
|
// 点击时全选结果
|
|
input.addEventListener('click', (event) => {
|
|
input.select()
|
|
});
|
|
});
|
|
});
|
|
},
|
|
|
|
// 光标位置插入特殊符号
|
|
insertSymbols(symbols) {
|
|
let result = this.moreResult.result || ''
|
|
if (result) {
|
|
result = result.substring(0, this.selection.start) + symbols + result.substring(this.selection.end)
|
|
} else {
|
|
result = symbols
|
|
}
|
|
this.moreResult.result = result
|
|
this.selection.start++
|
|
this.selection.end++
|
|
},
|
|
// 获取光标位置的函数
|
|
getCaretPosition() {
|
|
let input = document.getElementById('resultBox');
|
|
this.selection.start = input.selectionStart;
|
|
this.selection.end = input.selectionEnd;
|
|
// console.log('selection',this.selection)
|
|
},
|
|
watchSelection() {
|
|
this.$nextTick(() => {
|
|
let that = this
|
|
let resultBox = document.getElementById('resultBox'); //用数组可以读取多个标签的元素 //.inline-input
|
|
// 绑定键盘事件到文本框
|
|
resultBox.addEventListener('click', function (event) {
|
|
// 获取光标位置
|
|
that.getCaretPosition()
|
|
})
|
|
|
|
resultBox.addEventListener('input', function (event) {
|
|
// 获取光标位置
|
|
that.getCaretPosition()
|
|
})
|
|
})
|
|
},
|
|
},
|
|
|
|
//监听事件
|
|
watch: {
|
|
//检查项目切换
|
|
// "doctorCheck.RegisterCheckId":{
|
|
// immediate:true,
|
|
// handler(newVal, oldVal) {
|
|
// console.log(
|
|
// "watch doctorCheck.RegisterCheckId newVal:",
|
|
// newVal,
|
|
// " oldVal:",
|
|
// oldVal
|
|
// );
|
|
// this.checkItemList(newVal);
|
|
// }
|
|
// },
|
|
|
|
//检查项目未切换换时 也可以强制刷新数据
|
|
"dataTransOpts.refresh.register_check_item.M": {
|
|
// immediate: true,
|
|
handler(newVal, oldVal) {
|
|
console.log(`watch 检查明细 newVal:${newVal} oldVal:${oldVal} registerCheckId: ${this.dataTransOpts.tableS.register_check.id}`);
|
|
this.checkItemList(this.dataTransOpts.tableS.register_check.id);
|
|
}
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
<style lang="scss" scoped>
|
|
@import "../../assets/css/global.css";
|
|
|
|
::v-deep .el-table td.el-table__cell,
|
|
.el-table th.el-table__cell.is-leaf {
|
|
padding: 0;
|
|
}
|
|
|
|
::v-deep .el-textarea__inner {
|
|
min-height: 23px;
|
|
height: 23px;
|
|
line-height: 1.25;
|
|
padding: 2px 15px 2px 2px;
|
|
}
|
|
|
|
/*正常*/
|
|
::v-deep .tipsNormal .el-textarea__inner {
|
|
background-color: v-bind("tipsNormal.backgroundColor") !important;
|
|
color: v-bind("tipsNormal.color") !important;
|
|
font-family: "Microsoft YaHei";
|
|
}
|
|
|
|
/*错误*/
|
|
::v-deep .tipsError .el-textarea__inner {
|
|
background-color: v-bind("tipsError.backgroundColor") !important;
|
|
color: v-bind("tipsError.color") !important;
|
|
font-family: "Microsoft YaHei";
|
|
}
|
|
|
|
/*阴性 v-bind("(window.pageHeight > 600 ? (window.pageHeight - 250) : 350) + 'px'") */
|
|
::v-deep .tipsNegative .el-textarea__inner {
|
|
background-color: v-bind("tipsNegative.backgroundColor") !important;
|
|
color: v-bind("tipsNegative.color") !important;
|
|
font-family: "Microsoft YaHei";
|
|
}
|
|
|
|
/*弱阳性 v-bind("(window.pageHeight > 600 ? (window.pageHeight - 250) : 350) + 'px'") */
|
|
::v-deep .tipsLowPositive .el-textarea__inner {
|
|
background-color: v-bind("tipsLowPositive.backgroundColor") !important;
|
|
color: v-bind("tipsLowPositive.color") !important;
|
|
font-family: "Microsoft YaHei";
|
|
}
|
|
|
|
/*阳性 v-bind("(window.pageHeight > 600 ? (window.pageHeight - 250) : 350) + 'px'") */
|
|
::v-deep .tipsPositive .el-textarea__inner {
|
|
background-color: v-bind("tipsPositive.backgroundColor") !important;
|
|
color: v-bind("tipsPositive.color") !important;
|
|
font-family: "Microsoft YaHei";
|
|
}
|
|
|
|
/*偏低 v-bind("(window.pageHeight > 600 ? (window.pageHeight - 250) : 350) + 'px'") */
|
|
::v-deep .tipsLow .el-textarea__inner {
|
|
background-color: v-bind("tipsLow.backgroundColor") !important;
|
|
color: v-bind("tipsLow.color") !important;
|
|
font-family: "Microsoft YaHei";
|
|
}
|
|
|
|
/*偏高 v-bind("(window.pageHeight > 600 ? (window.pageHeight - 250) : 350) + 'px'") */
|
|
::v-deep .tipsHigh .el-textarea__inner {
|
|
background-color: v-bind("tipsHigh.backgroundColor") !important;
|
|
color: v-bind("tipsHigh.color") !important;
|
|
font-family: "Microsoft YaHei";
|
|
}
|
|
|
|
/*超低 v-bind("(window.pageHeight > 600 ? (window.pageHeight - 250) : 350) + 'px'") */
|
|
::v-deep .tipsSuperLow .el-textarea__inner {
|
|
background-color: v-bind("tipsSuperLow.backgroundColor") !important;
|
|
color: v-bind("tipsSuperLow.color") !important;
|
|
font-family: "Microsoft YaHei";
|
|
}
|
|
|
|
/*超高 v-bind("(window.pageHeight > 600 ? (window.pageHeight - 250) : 350) + 'px'") */
|
|
::v-deep .tipsSuperHigh .el-textarea__inner {
|
|
background-color: v-bind("tipsSuperHigh.backgroundColor") !important;
|
|
color: v-bind("tipsSuperHigh.color") !important;
|
|
font-family: "Microsoft YaHei";
|
|
}
|
|
|
|
/*文字性危及值 v-bind("(window.pageHeight > 600 ? (window.pageHeight - 250) : 350) + 'px'") */
|
|
::v-deep .tipsSuper .el-textarea__inner {
|
|
background-color: v-bind("tipsSuper.backgroundColor") !important;
|
|
color: v-bind("tipsSuper.color") !important;
|
|
font-family: "Microsoft YaHei";
|
|
}
|
|
|
|
::v-deep .commonFont .el-textarea__inner {
|
|
font-family: "Microsoft YaHei";
|
|
}
|
|
</style>
|