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.
 
 
 

1095 lines
37 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>
<el-button style="min-width: 23px; padding: 5.8px; margin-left: 2px"
:disabled="rowResultDisabled(scope.row)" @click="btnPacsRessulst(scope.row)" size="small">S</el-button>
<!-- <el-popover
placement="top-end"
width="500"
trigger="click"
:title="scope.row.itemName"
>
<el-tabs v-model="activeName">
<el-tab-pane label="文字结果" name="first">
<el-table :data="gridData">
<el-table-column
property="checkDate"
label="检查日期"
align="center"
></el-table-column>
<el-table-column
property="itemResult"
label="项目结果"
align="center"
></el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="折线图" name="second">
<div
style="height: 200px; width: 200px"
ref="chart"
></div>
</el-tab-pane>
</el-tabs>
<el-button
slot="reference"
style="min-width: 23px; padding: 5.8px; margin-left: 2px"
:disabled="rowResultDisabled(scope.row)"
@click="btnPacsRessulst(scope.row)"
size="small"
>S</el-button
>
</el-popover> -->
</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="[
{ minWidth: '23px' },
{ padding: '6px 2px' },
{
backgroundColor: scope.row.isCriticalValue == 'Y' ? 'red' : '',
},
]" @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.checkItemList[pacsParams.index].itemName"
v-if="dialogWinPacsTemplate" :visible.sync="dialogWinPacsTemplate" width="880px" :close-on-click-modal="false">
<PacsTemplate :refParams="pacsParams" :refFuncOther="handlePacsResult" />
</el-dialog>
<el-dialog :title="curRow.itemName" :visible.sync="previousResults" width="500px" :close-on-click-modal="true"
:show-close="false" @close="resultsclose">
<el-tabs v-model="activeName">
<el-tab-pane label="文字结果" name="first">
<el-table :data="gridData">
<el-table-column property="checkDate" label="检查日期" align="center"></el-table-column>
<el-table-column property="itemResult" label="项目结果" align="center"></el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="折线图" name="second">
<div style="height: 400px; width: 500px" ref="chart1"></div>
</el-tab-pane>
</el-tabs>
</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";
import * as echarts from "echarts";
export default {
components: {
PacsTemplate,
},
props: ["isCheckPicture", "registerCheckId", "doctor_check_check_charge"],
data() {
return {
activeName: "first",
previousResults: false,
gridData: [],
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: [";", "、"], // 分隔符
userInfo: {
operatorType: "0",
userId: "",
user: "",
},
// pacs 结果录入
pacsParams: {
from: "doctor",
refresh: -1, // 强制刷新
row: {},
index: 0,
result: "",
summary: "",
},
curRow: {},
isSelectAll: 'N', // 录入结果时,是否全选
};
},
created() {
this.dictInit();
let LocalConfig = JSON.parse(window.localStorage.getItem("LocalConfig") || null)
if (LocalConfig && LocalConfig.doctorCheck && LocalConfig.doctorCheck.isSelectAll) this.isSelectAll = LocalConfig.doctorCheck.isSelectAll
},
//挂载完成
mounted() {
this.checkItemList(this.dataTransOpts.tableS.register_check.id);
this.userInfo.operatorType = window.sessionStorage.getItem("operatorType") || '0';
this.userInfo.userId = window.sessionStorage.getItem("userId") || null;
this.userInfo.user = window.sessionStorage.getItem("user") || null;
},
computed: {
...mapState([
"window",
"dataTransOpts",
"dict",
"dialogWin",
"doctorCheck",
]),
tableHeight() {
let temp = this.window.pageHeight < 600 ? 600 : this.window.pageHeight;
return Math.floor(
((temp - 315 - (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;
}
});
},
btnPacsRessulst(row) {
this.curRow = row;
postapi("/api/app/RegisterCheckItem/GetItemTwoHistoricalResults", {
registerCheckId: row.registerCheckId,
itemId: row.itemId,
}).then((res) => {
if (res.code != -1) {
this.previousResults = true;
this.gridData = res.data;
this.$nextTick(() => {
this.initEcharts();
});
}
});
},
initEcharts() {
let yAxisData = [];
let xAxisData = [];
for (let i = 0; i < this.gridData.length; i++) {
if (this.gridData[i].checkDate) {
xAxisData.push(this.gridData[i].checkDate);
yAxisData.push(this.gridData[i].itemResult);
}
}
let myChart = echarts.init(this.$refs.chart1);
let option1 = {
tooltip: {
trigger: "axis",
confine: true,
},
legend: {
type: "scroll",
orient: "horizontal", // 垂直
right: "3%", // 左对齐
top: "0%", // 位于顶部
},
grid: {
show: false,
left: "2%",
right: "2%",
top: "6%",
bottom: "0%",
containLabel: true,
},
xAxis: {
type: "category",
data: xAxisData,
axisLabel: {
textStyle: {
fontSize: "14",
},
},
axisLine: {
show: true,
},
},
yAxis: {
type: "value",
axisLabel: {
textStyle: {
fontSize: "14",
},
},
},
series: [
{
name: "项目结果",
type: "line",
data: yAxisData,
},
],
};
myChart.setOption(option1);
},
resultsclose() {
this.activeName = "first";
},
// chartTabs(tab) {
// if (tab.name == "second") {
// this.$nextTick(() => {
// this.initEcharts();
// });
// }
// },
// 颜色转换
// 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;
},
// pacs结果模板(备份)
btnPacsResultBak(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") {
// 当前用户是检查医生时,默认当前用户
if (this.userInfo.operatorType == '1' || this.userInfo.operatorType == '3') {
this.doctorCheck.RegisterCheckEdit.checkDoctorId = this.userInfo.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) => {
if (this.isSelectAll == 'Y') {
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>