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.

1291 lines
44 KiB

2 years ago
2 years ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 month ago
2 years ago
1 month ago
2 years ago
2 years ago
1 year ago
1 year ago
1 month ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
1 year ago
1 year ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 month ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
1 month ago
1 year ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
1 month ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 month ago
1 year ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 months ago
1 month ago
2 months ago
1 month ago
2 months ago
1 month ago
1 month ago
1 month ago
2 years ago
2 years ago
1 month ago
1 year ago
1 year ago
2 months ago
1 month ago
1 month ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
1 month ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 month ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
1 month ago
1 year ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 month ago
1 month ago
1 year ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
1 month ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
1 year ago
2 months ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 months ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. <template>
  2. <div>
  3. <div @contextmenu.prevent="onContextmenu">
  4. <el-table :data="doctorCheck.checkItemList" style="width: 100%" :height="tableHeight" border highlight-current-row
  5. @row-click="rowClick" @row-dblclick="dblClick" size="small">
  6. <el-table-column prop="itemName" label="项目" width="220" />
  7. <el-table-column prop="result" label="结果" min-width="200">
  8. <template slot-scope="scope">
  9. <div style="display: flex;">
  10. <el-autocomplete style="width: 100%" type="textarea" v-model="scope.row.result" placeholder="请输入结果值"
  11. :disabled="rowResultDisabled(scope.row)" :autosize="{ minRows: 1, maxRows: 10 }" :ref="scope.row.itemId"
  12. :trigger-on-focus="false" :fetch-suggestions="querySearch" :data-lineModeFlag="scope.row.lineModeFlag"
  13. @input="
  14. madeTooltips(scope.$index);
  15. computeFun(scope.$index);
  16. " v-bind:class="scope.row.class">
  17. </el-autocomplete>
  18. <el-button style="min-width: 23px; padding: 2px" icon="el-icon-caret-bottom"
  19. @click="btnMoreResult(scope.row, scope.$index)" :disabled="rowResultDisabled(scope.row)"
  20. size="small"></el-button>
  21. <el-button style="min-width: 23px; padding: 2px; margin-left: 2px"
  22. @click="btnPacsResult(scope.row, scope.$index)" :disabled="rowResultDisabled(scope.row)"
  23. size="small">P</el-button>
  24. <el-button style="min-width: 23px; padding: 5.8px; margin-left: 2px"
  25. :disabled="rowResultDisabled(scope.row)" @click="btnPacsRessulst(scope.row)" size="small">S</el-button>
  26. <!-- <el-popover
  27. placement="top-end"
  28. width="500"
  29. trigger="click"
  30. :title="scope.row.itemName"
  31. >
  32. <el-tabs v-model="activeName">
  33. <el-tab-pane label="文字结果" name="first">
  34. <el-table :data="gridData">
  35. <el-table-column
  36. property="checkDate"
  37. label="检查日期"
  38. align="center"
  39. ></el-table-column>
  40. <el-table-column
  41. property="itemResult"
  42. label="项目结果"
  43. align="center"
  44. ></el-table-column>
  45. </el-table>
  46. </el-tab-pane>
  47. <el-tab-pane label="折线图" name="second">
  48. <div
  49. style="height: 200px; width: 200px"
  50. ref="chart"
  51. ></div>
  52. </el-tab-pane>
  53. </el-tabs>
  54. <el-button
  55. slot="reference"
  56. style="min-width: 23px; padding: 5.8px; margin-left: 2px"
  57. :disabled="rowResultDisabled(scope.row)"
  58. @click="btnPacsRessulst(scope.row)"
  59. size="small"
  60. >S</el-button
  61. >
  62. </el-popover> -->
  63. </div>
  64. </template>
  65. </el-table-column>
  66. <el-table-column prop="unit" label="单位" width="90" align="center" />
  67. <el-table-column prop="referenceRangeValue" label="参考范围" width="120" align="center" />
  68. <el-table-column prop="resultStatusId" label="提示" width="40" align="center">
  69. <template slot-scope="scope">
  70. <div>
  71. {{
  72. dddw(
  73. resultStatus,
  74. "id",
  75. scope.row.resultStatusId,
  76. "dataInputPrompt"
  77. )
  78. }}
  79. </div>
  80. </template>
  81. </el-table-column>
  82. <el-table-column prop="criticalFlag" label="危急值" width="50" align="center">
  83. <template slot-scope="scope">
  84. <el-button :style="[
  85. { minWidth: '23px' },
  86. { padding: '6px 2px' },
  87. {
  88. backgroundColor: scope.row.isCriticalValue == 'Y' ? 'red' : '',
  89. },
  90. ]" @click="btnCritical(scope.row)" size="small">W</el-button>
  91. </template>
  92. </el-table-column>
  93. </el-table>
  94. </div>
  95. <!--模拟弹窗-->
  96. <div v-show="hisResultDetailDialogVisible"
  97. :style="`z-index:2;border-radius: 10px;border: 1px solid #ddd;background-color:#FFF; position: absolute;top:0px;right:0px;width:200px;height: 600px;opacity:1;`">
  98. <div style="display: flex;justify-content:space-between;">
  99. <div style="margin-left: 5px;">历次明细结果</div>
  100. <div>
  101. <el-tooltip content="关闭历次明细窗口" placement="bottom" effect="light">
  102. <i class="el-icon-close" @click="hisResultDetailDialogVisible = false"
  103. style="font-size: 24px;color: red;cursor:pointer;"></i>
  104. </el-tooltip>
  105. </div>
  106. </div>
  107. <!-- 明细历次结果 -->
  108. <el-table :data="gridData" border width="100%" height="575" size="small" highlight-current-row
  109. style="border-radius:10px;">
  110. <el-table-column prop="checkDate" label="检查日期" min-width="90" align="center" />
  111. <el-table-column prop="itemResult" label="项目结果" min-width="100">
  112. <template slot-scope="scope">
  113. <div style="margin-left: 2px;">{{ scope.row.itemResult }}</div>
  114. </template>
  115. </el-table-column>
  116. </el-table>
  117. </div>
  118. <!--弹窗-->
  119. <div>
  120. <!-- 结果录入模版 -->
  121. <el-dialog title="结果录入模版" :visible.sync="dialogWinMoreResult" width="800px" :close-on-click-modal="false">
  122. <div style="margin-top: -10px">
  123. <el-checkbox v-model="LocalConfig.doctorCheck.isSplitChooseResult" size="small" true-label="Y"
  124. false-label="N">选结果模板时自动添加分隔符</el-checkbox>
  125. <div style="
  126. overflow-y: auto;
  127. height: 300px;
  128. width: 100%;
  129. display: flex;
  130. flex-wrap: wrap;
  131. align-content: flex-start;
  132. ">
  133. <div v-for="item in moreResult.data" :key="item.id" style="margin: 5px; cursor: pointer"
  134. @click="clickResult(item)" @dblclick="dblclickResult(item)">
  135. <el-tag size="samll" style="
  136. padding: 0 3px;
  137. height: 24px;
  138. line-height: 24px;
  139. font-size: 14px;
  140. color: #303133;
  141. background-color: white;
  142. ">{{ item.result }}</el-tag>
  143. </div>
  144. </div>
  145. <div>特殊符号</div>
  146. <div style="
  147. overflow-y: auto;
  148. width: 100%;
  149. display: flex;
  150. flex-wrap: wrap;
  151. align-content: flex-start;
  152. ">
  153. <div v-for="item in symbols" :key="item.id" style="margin: 1px 2px; cursor: pointer"
  154. @click="insertSymbols(item.displayName)">
  155. <el-tag style="
  156. padding: 0 3px;
  157. height: 24px;
  158. line-height: 24px;
  159. font-size: 15px;
  160. color: #303133;
  161. background-color: white;
  162. ">
  163. {{ item.displayName }}
  164. </el-tag>
  165. </div>
  166. </div>
  167. <div style="display: flex; justify-content: space-between">
  168. <div style="margin-top: 5px">录入结果</div>
  169. <div style="overflow-y: auto; display: flex; flex-wrap: wrap">
  170. <div v-for="item in splitSymbols" :key="item" style="margin: 1px 2px; cursor: pointer"
  171. @click="insertSymbols(item)">
  172. <el-tag style="
  173. padding: 0 3px;
  174. height: 24px;
  175. line-height: 24px;
  176. font-size: 15px;
  177. color: #303133;
  178. background-color: white;
  179. ">
  180. {{ item }}
  181. </el-tag>
  182. </div>
  183. </div>
  184. </div>
  185. <el-input id="resultBox" style="width: 100%" class="commonFont" type="textarea"
  186. :autosize="{ minRows: 4, maxRows: 4 }" v-model="moreResult.result" />
  187. </div>
  188. <span slot="footer" class="dialog-footer">
  189. <el-button @click="btnClear"> </el-button>
  190. <el-button type="primary" @click="btnOkResult('defaultResult')">默认结果</el-button>
  191. <el-button type="primary" @click="btnOkResult('')"> </el-button>
  192. <el-button @click="dialogWinMoreResult = false"> </el-button>
  193. </span>
  194. </el-dialog>
  195. <!--Pacs结果录入模版-->
  196. <el-dialog :title="'Pacs结果录入模版 -- ' + doctorCheck.checkItemList[pacsParams.index].itemName"
  197. v-if="dialogWinPacsTemplate" :visible.sync="dialogWinPacsTemplate" width="880px" :close-on-click-modal="false">
  198. <PacsTemplate :refParams="pacsParams" :refFuncOther="handlePacsResult" />
  199. </el-dialog>
  200. <!--历史结果与折线图-->
  201. <el-dialog :title="curRow.itemName" :visible.sync="previousResults" width="500px" :close-on-click-modal="true"
  202. :show-close="false" @close="resultsclose">
  203. <el-tabs v-model="activeName">
  204. <el-tab-pane label="文字结果" name="first">
  205. <el-table :data="gridData">
  206. <el-table-column property="checkDate" label="检查日期" align="center"></el-table-column>
  207. <el-table-column property="itemResult" label="项目结果" align="center"></el-table-column>
  208. </el-table>
  209. </el-tab-pane>
  210. <el-tab-pane label="折线图" name="second">
  211. <div style="height: 400px; width: 500px" ref="chart1"></div>
  212. </el-tab-pane>
  213. </el-tabs>
  214. </el-dialog>
  215. </div>
  216. </div>
  217. </template>
  218. <script>
  219. // 0-无参考范围,1-数字型,2-字符型,3-性激素
  220. import { mapState } from "vuex";
  221. import { getapi, postapi, putapi, deletapi } from "@/api/api";
  222. import { arrayExistObj, dddw, deepCopy, getPagePriv, checkPagePriv } from "../../utlis/proFunc";
  223. import PacsTemplate from "./PacsTemplate.vue";
  224. import * as echarts from "echarts";
  225. export default {
  226. components: {
  227. PacsTemplate,
  228. },
  229. props: ["isCheckPicture", "registerCheckId", "doctor_check_check_charge"],
  230. data() {
  231. return {
  232. pagePriv: {
  233. routeUrlorPageName: "doctorCheck", //当前页面归属路由或归属页面权限名称
  234. privs: [], // 页面权限
  235. },
  236. activeName: "first",
  237. previousResults: false,
  238. gridData: [],
  239. resultStatus: [], //结果状态提示数据
  240. tipsNormal: {
  241. id: "01",
  242. displayName: "正常",
  243. dataInputPrompt: "正常",
  244. reportPrompt: "正常",
  245. reportBackgroundColor: 16777215,
  246. reportFontColor: 0,
  247. dataInputBackgroundColor: 16777215,
  248. dataInputFontColor: 0,
  249. }, //正常提示
  250. tipsError: {}, //错误提示
  251. tipsNegative: {}, //阴性提示
  252. tipsLowPositive: {}, //弱阳性提示
  253. tipsPositive: {}, //阳性提示
  254. tipsLow: {}, //偏低提示
  255. tipsHigh: {}, //偏高提示
  256. tipsSuperLow: {}, //超低提示
  257. tipsSuperHigh: {}, //超高提示
  258. tipsSuper: {}, //文字型危急值
  259. restaurants: [], //结果模版
  260. currentRow: -1, //当前操作的行
  261. dialogWinMoreResult: false,
  262. dialogWinPacsTemplate: false,
  263. moreResult: {
  264. data: [],
  265. result: "",
  266. defaultResult: "",
  267. index: 0, // 明细序列
  268. }, //结果模版
  269. selection: {
  270. // 光标位置
  271. start: 0,
  272. end: 0,
  273. },
  274. symbols: [], //特殊符号
  275. splitSymbols: [";", "、"], // 分隔符
  276. userInfo: {
  277. operatorType: "0",
  278. userId: "",
  279. user: "",
  280. },
  281. // pacs 结果录入
  282. pacsParams: {
  283. from: "doctor",
  284. refresh: -1, // 强制刷新
  285. row: {},
  286. index: 0,
  287. result: "",
  288. summary: "",
  289. },
  290. curRow: {},
  291. // 医生诊台相关的本地设置
  292. LocalConfig: {
  293. doctorCheck: {
  294. isSelectAll: 'N', // 录入结果时,是否全选
  295. pacsDescFontSize: "14px", //描述内容的字体大小
  296. isSplitChooseResult: "Y", // 选结果时,是否自动加上分隔符
  297. }
  298. },
  299. hisResultDetailDialogVisible: false, // 历史结果显示页面
  300. // 避免双击与单击冲突
  301. clickTime1: 0, //第一次点时间
  302. clickTime2: 0 //第二次点时间
  303. };
  304. },
  305. created() {
  306. //获取用户当前页面的权限
  307. let userPriv = window.sessionStorage.getItem("userPriv");
  308. if (userPriv)
  309. this.pagePriv.privs = deepCopy(
  310. getPagePriv(this.pagePriv.routeUrlorPageName)
  311. );
  312. this.dictInit();
  313. let LocalConfig = JSON.parse(window.localStorage.getItem("LocalConfig") || null)
  314. if (LocalConfig?.doctorCheck?.isSelectAll) this.LocalConfig.doctorCheck.isSelectAll = LocalConfig.doctorCheck.isSelectAll
  315. if (LocalConfig?.doctorCheck?.pacsDescFontSize) this.LocalConfig.doctorCheck.pacsDescFontSize = LocalConfig.doctorCheck.pacsDescFontSize + 'px'
  316. if (LocalConfig?.doctorCheck?.isSplitChooseResult) this.LocalConfig.doctorCheck.isSplitChooseResult = LocalConfig.doctorCheck.isSplitChooseResult
  317. },
  318. //挂载完成
  319. mounted() {
  320. this.checkItemList(this.dataTransOpts.tableS.register_check.id);
  321. this.userInfo.operatorType = window.sessionStorage.getItem("operatorType") || '0';
  322. this.userInfo.userId = window.sessionStorage.getItem("userId") || null;
  323. this.userInfo.user = window.sessionStorage.getItem("user") || null;
  324. },
  325. computed: {
  326. ...mapState([
  327. "window",
  328. "dataTransOpts",
  329. "dict",
  330. "dialogWin",
  331. "doctorCheck",
  332. ]),
  333. tableHeight() {
  334. let temp = this.window.pageHeight < 600 ? 600 : this.window.pageHeight;
  335. return Math.floor(
  336. ((temp - 315 - (this.isCheckPicture ? 110 : 0)) * 3) / 5
  337. );
  338. },
  339. },
  340. methods: {
  341. dddw,
  342. dictInit() {
  343. // 获取系统参数(是否显示历次明细结果)
  344. postapi('/api/app/SysParmValue/GetSysParmValueBySysParmId', { sysParmId: 'doctor_check_disp_hisdetail' })
  345. .then(res => {
  346. if (res.code > -1) {
  347. let hisResultDetailDialogVisible = res.data || "N"
  348. if (hisResultDetailDialogVisible == 'Y') {
  349. this.hisResultDetailDialogVisible = true
  350. }
  351. }
  352. })
  353. //获取结果状态提示数据
  354. getapi("/api/app/result-status").then((res) => {
  355. if (res.code != -1) {
  356. this.resultStatus = res.data;
  357. this.resultStatus.forEach((e) => {
  358. switch (e.id) {
  359. case "01": // 正常
  360. e.tooltips = "tipsNormal";
  361. this.colorTrans(e, e.tooltips);
  362. break;
  363. case "02": // 错误
  364. e.tooltips = "tipsError";
  365. this.colorTrans(e, e.tooltips);
  366. break;
  367. case "03": // 阴性
  368. e.tooltips = "tipsNegative";
  369. this.colorTrans(e, e.tooltips);
  370. break;
  371. case "04": // 阳性
  372. e.tooltips = "tipsPositive";
  373. this.colorTrans(e, e.tooltips);
  374. break;
  375. case "05": // 弱阳性
  376. e.tooltips = "tipsLowPositive";
  377. this.colorTrans(e, e.tooltips);
  378. break;
  379. case "06": // 偏低
  380. e.tooltips = "tipsLow";
  381. this.colorTrans(e, e.tooltips);
  382. break;
  383. case "07": // 偏高
  384. e.tooltips = "tipsHigh";
  385. this.colorTrans(e, e.tooltips);
  386. break;
  387. case "08": // 危急值下限
  388. e.tooltips = "tipsSuperLow";
  389. this.colorTrans(e, e.tooltips);
  390. break;
  391. case "09": // 危急值上限
  392. e.tooltips = "tipsSuperHigh";
  393. this.colorTrans(e, e.tooltips);
  394. break;
  395. case "10": // 危急值
  396. e.tooltips = "tipsSuper";
  397. this.colorTrans(e, e.tooltips);
  398. break;
  399. default:
  400. e.tooltips = "tipsNormal";
  401. this.colorTrans(e, e.tooltips);
  402. break;
  403. }
  404. });
  405. }
  406. });
  407. //获取结果状态提示数据
  408. postapi("/api/app/CommonChar/GetCommonCharList", {}).then((res) => {
  409. if (res.code >= 0) {
  410. this.symbols = res.data;
  411. }
  412. });
  413. },
  414. btnPacsRessulst(row) {
  415. this.curRow = row;
  416. postapi("/api/app/RegisterCheckItem/GetItemTwoHistoricalResults", {
  417. registerCheckId: row.registerCheckId,
  418. itemId: row.itemId,
  419. }).then((res) => {
  420. if (res.code != -1) {
  421. this.previousResults = true;
  422. this.gridData = res.data;
  423. this.$nextTick(() => {
  424. this.initEcharts();
  425. });
  426. }
  427. });
  428. },
  429. initEcharts() {
  430. let yAxisData = [];
  431. let xAxisData = [];
  432. for (let i = 0; i < this.gridData.length; i++) {
  433. if (this.gridData[i].checkDate) {
  434. xAxisData.push(this.gridData[i].checkDate);
  435. yAxisData.push(this.gridData[i].itemResult);
  436. }
  437. }
  438. let myChart = echarts.init(this.$refs.chart1);
  439. let option1 = {
  440. tooltip: {
  441. trigger: "axis",
  442. confine: true,
  443. },
  444. legend: {
  445. type: "scroll",
  446. orient: "horizontal", // 垂直
  447. right: "3%", // 左对齐
  448. top: "0%", // 位于顶部
  449. },
  450. grid: {
  451. show: false,
  452. left: "2%",
  453. right: "2%",
  454. top: "6%",
  455. bottom: "0%",
  456. containLabel: true,
  457. },
  458. xAxis: {
  459. type: "category",
  460. data: xAxisData,
  461. axisLabel: {
  462. textStyle: {
  463. fontSize: "14",
  464. },
  465. },
  466. axisLine: {
  467. show: true,
  468. },
  469. },
  470. yAxis: {
  471. type: "value",
  472. axisLabel: {
  473. textStyle: {
  474. fontSize: "14",
  475. },
  476. },
  477. },
  478. series: [
  479. {
  480. name: "项目结果",
  481. type: "line",
  482. data: yAxisData,
  483. },
  484. ],
  485. };
  486. myChart.setOption(option1);
  487. },
  488. resultsclose() {
  489. this.activeName = "first";
  490. },
  491. // chartTabs(tab) {
  492. // if (tab.name == "second") {
  493. // this.$nextTick(() => {
  494. // this.initEcharts();
  495. // });
  496. // }
  497. // },
  498. // 颜色转换
  499. // displayName: "错误",
  500. // dataInputPrompt: "×",
  501. // reportPrompt: "×",
  502. // reportBackgroundColor: 2427166,
  503. // reportFontColor: 1070166,
  504. // dataInputBackgroundColor: 321313,
  505. // dataInputFontColor: 12991019,
  506. colorTrans(dataColor, frontColor) {
  507. let tempColor =
  508. "000000" + Number(dataColor.dataInputBackgroundColor).toString(16);
  509. let backgroundColor = "#" + tempColor.substring(tempColor.length - 6);
  510. tempColor = "000000" + Number(dataColor.dataInputFontColor).toString(16);
  511. let color = "#" + tempColor.substring(tempColor.length - 6);
  512. this[frontColor] = Object.assign({}, dataColor, {
  513. backgroundColor,
  514. color,
  515. });
  516. console.log(`this.${frontColor}`, this[frontColor]);
  517. },
  518. // "referenceRangeValue": "15-55",
  519. // "referenceRangeTypeFlag": "1",
  520. // "criticalRangeValue": null,
  521. // "result"
  522. madeTooltips(index) {
  523. // let ts = confirm('提示')
  524. let checkItem = this.doctorCheck.checkItemList[index];
  525. let tooltips = "tipsNormal";
  526. checkItem.class = tooltips;
  527. let referenceRangeTypeFlag = checkItem.referenceRangeTypeFlag || "0"; //参考范围类别0-无参考范围,1-数字型,2-字符型,3-性激素
  528. // console.log('madeTooltips',index,referenceRangeTypeFlag)
  529. switch (referenceRangeTypeFlag) {
  530. case "3": // 1 是数字型,3 是性激素期
  531. case "1":
  532. // console.log('1、3')
  533. if (checkItem.result) {
  534. let tempResult = checkItem.result
  535. .replaceAll("<", "")
  536. .replaceAll("≤", "")
  537. .replaceAll("≦", "")
  538. .replaceAll(">", "")
  539. .replaceAll("≥", "")
  540. .replaceAll("≧", "")
  541. .replaceAll("=", "")
  542. .replaceAll(" ", "");
  543. console.log("tempResult", isNaN(tempResult), tempResult);
  544. if (isNaN(tempResult)) break;
  545. let result = Number(tempResult);
  546. if (checkItem.referenceRangeValue) {
  547. let criticalRangeValue = checkItem.criticalRangeValue;
  548. let valueArr = checkItem.referenceRangeValue
  549. .replaceAll("--", "-")
  550. .replaceAll("〜", "-")
  551. .replaceAll("~", "-")
  552. .split("-");
  553. if (valueArr.length == 1) valueArr.unshift(0);
  554. // console.log('valueArr',checkItem.referenceRangeValue,valueArr)
  555. if (criticalRangeValue) {
  556. let criticalArr = criticalRangeValue
  557. .replaceAll("--", "-")
  558. .replaceAll("〜", "-")
  559. .replaceAll("~", "-")
  560. .split("-");
  561. if (criticalArr.length == 1) criticalArr.unshift(0);
  562. // console.log('criticalArr',checkItem.criticalRangeValue,criticalArr)
  563. if (result < Number(criticalArr[0])) {
  564. tooltips = "tipsSuperLow";
  565. } else if (result > Number(criticalArr[1])) {
  566. tooltips = "tipsSuperHigh";
  567. } else if (result < Number(valueArr[0])) {
  568. tooltips = "tipsLow";
  569. } else if (result > Number(valueArr[1])) {
  570. tooltips = "tipsHigh";
  571. }
  572. } else {
  573. if (result < Number(valueArr[0])) {
  574. tooltips = "tipsLow";
  575. } else if (result > Number(valueArr[1])) {
  576. tooltips = "tipsHigh";
  577. }
  578. }
  579. }
  580. //错误值校验
  581. let errArr = [];
  582. if (checkItem.inputCheck) {
  583. errArr = checkItem.inputCheck
  584. .replaceAll("--", "-")
  585. .replaceAll("〜", "-")
  586. .replaceAll("~", "-")
  587. .split("-");
  588. if (errArr.length == 1) errArr.unshift(-1);
  589. }
  590. if (errArr && errArr.length > 1) {
  591. if (result < Number(errArr[0]) || result > Number(errArr[1])) {
  592. tooltips = "tipsError";
  593. console.log("checkItem", checkItem);
  594. }
  595. }
  596. }
  597. break;
  598. case "2":
  599. if (checkItem.result) {
  600. if (
  601. checkItem.result.indexOf("阴性") > -1 ||
  602. checkItem.result.indexOf("-") > -1
  603. ) {
  604. tooltips = "tipsNegative";
  605. } else if (
  606. checkItem.result.indexOf("弱阳性") > -1 ||
  607. checkItem.result.indexOf("±") > -1
  608. ) {
  609. tooltips = "tipsLowPositive";
  610. } else if (
  611. checkItem.result.indexOf("阳性") > -1 ||
  612. checkItem.result.indexOf("+") > -1
  613. ) {
  614. tooltips = "tipsPositive";
  615. }
  616. }
  617. break;
  618. default:
  619. break;
  620. }
  621. // 判断后重新赋值
  622. checkItem.class = tooltips;
  623. // 保存过检查时,直接取数据库
  624. checkItem.resultStatusId = this[tooltips].id; //名称 dataInputPrompt
  625. // console.log('checkItem',checkItem)
  626. // console.log(`this.${tooltips}`,this[tooltips])
  627. },
  628. // 行结果是否可编辑
  629. rowResultDisabled(row) {
  630. return (
  631. row.isCalculationItem == "Y" ||
  632. this.doctorCheck.RegisterCheckEdit.completeFlag == "1" ||
  633. this.doctorCheck.RegisterCheckEdit.completeFlag == "2"
  634. );
  635. },
  636. btnCritical(row) {
  637. this.dialogWin.FollowCriticalCheck = true;
  638. this.doctorCheck.combinationCriticalValue = false;
  639. this.doctorCheck.singleDetailedProject = row;
  640. },
  641. //项目列为计算函数
  642. computeFun(index) {
  643. // 有计算项的,才调用计算函数
  644. let haveComputeFun = false;
  645. let checkItem = this.doctorCheck.checkItemList[index];
  646. console.log("checkItem", checkItem);
  647. let body = {
  648. registerCheckId: checkItem.registerCheckId,
  649. items: [],
  650. };
  651. this.doctorCheck.checkItemList.forEach((e) => {
  652. body.items.push({
  653. itemId: e.itemId,
  654. result: e.result,
  655. });
  656. if (e.isCalculationItem == "Y") haveComputeFun = true;
  657. });
  658. if (!haveComputeFun) return; // 有计算项的,才调用计算函数
  659. let lfind = -1;
  660. postapi(
  661. "/api/app/diagnosisfunction/getcalculationfunctionresult",
  662. body
  663. ).then((res) => {
  664. if (res.code != -1) {
  665. // console.log('res.data',res.data)
  666. res.data.items.forEach((e) => {
  667. lfind = arrayExistObj(
  668. this.doctorCheck.checkItemList,
  669. "itemId",
  670. e.itemId
  671. );
  672. if (lfind > -1) {
  673. if (e.result != this.doctorCheck.checkItemList[lfind].result) {
  674. this.doctorCheck.checkItemList[lfind].result = e.result;
  675. console.log("e", lfind, this.doctorCheck.checkItemList[lfind]);
  676. this.madeTooltips(lfind);
  677. }
  678. }
  679. });
  680. }
  681. });
  682. },
  683. // 点击结果模版按钮
  684. btnMoreResult(row, index) {
  685. this.moreResult.data = deepCopy(row.itemResultTemplates);
  686. this.moreResult.result = row.result;
  687. this.moreResult.defaultResult = row.defaultResult;
  688. this.moreResult.index = index;
  689. // "itemId": "3a0c517f-cbdb-9fff-e300-1f76b3e47580",
  690. // "result": "00000",
  691. // "diagnosisId": "3a0ed8a2-72d9-ee50-78aa-5b1f474f2921",
  692. // "isNameIntoSummary": "N",
  693. // "isResultIntoSummary": "Y",
  694. // "resultStatusId": "01",
  695. // "simpleCode": "0"
  696. this.dialogWinMoreResult = true;
  697. this.watchSelection();
  698. },
  699. // pacs结果模板
  700. btnPacsResult(row, index) {
  701. let result = row.result;
  702. let summary = "";
  703. this.doctorCheck.checkSummaryList.forEach((e, i) => {
  704. summary += e.summary;
  705. });
  706. this.pacsParams.row = row;
  707. this.pacsParams.index = index;
  708. this.pacsParams.result = result;
  709. this.pacsParams.summary = summary;
  710. this.pacsParams.refresh++;
  711. this.dialogWinPacsTemplate = true;
  712. },
  713. // pacs结果模板(备份)
  714. btnPacsResultBak(row, index) {
  715. let result = row.result;
  716. let summary = "";
  717. this.doctorCheck.checkSummaryList.forEach((e, i) => {
  718. summary += e.summary;
  719. });
  720. this.pacsParams.row = row;
  721. this.pacsParams.index = index;
  722. this.pacsParams.result = result;
  723. this.pacsParams.summary = summary;
  724. this.pacsParams.refresh++;
  725. this.dialogWinPacsTemplate = true;
  726. },
  727. // 双击选择结果模版的结果
  728. dblclickResult(item) {
  729. this.moreResult.result = "";
  730. this.clickResult(item);
  731. this.btnOkResult("");
  732. },
  733. // 单击选择结果模版的结果
  734. clickResult(item) {
  735. let result = [];
  736. // console.log('this.moreResult',JSON.stringify(this.moreResult))
  737. // console.log('item',item)
  738. //点击结果前 == 默认结果
  739. if (this.moreResult.result == this.moreResult.defaultResult) {
  740. this.moreResult.result = item.result
  741. } else {
  742. if (this.moreResult.result) result = this.moreResult.result.split(";");
  743. // 不用分隔符时,不判断包含关系
  744. if (this.LocalConfig.doctorCheck.isSplitChooseResult == "Y" && result.indexOf(item.result) > -1)
  745. return;
  746. if (this.LocalConfig.doctorCheck.isSplitChooseResult == "Y" || result.length == 0) {
  747. result.push(item.result);
  748. } else {
  749. result[result.length - 1] = result[result.length - 1] + item.result;
  750. }
  751. let ret = "";
  752. result.forEach((e, i) => {
  753. let splitStr = ";";
  754. if (i == 0) splitStr = "";
  755. ret += splitStr + e;
  756. });
  757. this.moreResult.result = ret;
  758. }
  759. },
  760. // 清除结果值
  761. btnClear() {
  762. this.moreResult.result = "";
  763. },
  764. btnOkResult(result) {
  765. this.doctorCheck.checkItemList[this.moreResult.index].result = result
  766. ? this.moreResult[result]
  767. : this.moreResult.result;
  768. this.madeTooltips(this.moreResult.index);
  769. this.computeFun(this.moreResult.index);
  770. this.dialogWinMoreResult = false;
  771. },
  772. // 处理 pacs 结果录入的情况
  773. handlePacsResult(row, index, pacsResult) {
  774. // console.log('row,index,pacsResult', row, index, pacsResult)
  775. // this.doctorCheck.checkItemList[index].result = pacsResult.result;
  776. /*
  777. this.doctorCheck.checkSummaryList = [
  778. {
  779. id: Math.random(),
  780. registerCheckId: this.doctorCheck.RegisterCheckEdit.id,
  781. summary: pacsResult.summary,
  782. summaryFlag: "N",
  783. },
  784. ];
  785. */
  786. this.dialogWinPacsTemplate = false;
  787. },
  788. //选择项目
  789. rowClick(row) {
  790. this.clickTime1 = new Date().getTime()
  791. console.log('this.clickTime1', this.clickTime1)
  792. this.doctorCheck.checkItem = row;
  793. this.restaurants = row.itemResultTemplates;
  794. // 防止与双击冲突
  795. setTimeout(() => {
  796. // 首次点击才执行
  797. if (this.clickTime1 > this.clickTime2) {
  798. //显示历史明细结果
  799. if (this.hisResultDetailDialogVisible) {
  800. this.gridData = []
  801. postapi("/api/app/RegisterCheckItem/GetItemTwoHistoricalResults", {
  802. registerCheckId: row.registerCheckId,
  803. itemId: row.itemId,
  804. }).then((res) => {
  805. if (res.code != -1) {
  806. this.gridData = res.data;
  807. }
  808. });
  809. }
  810. }
  811. }, 400);
  812. },
  813. // 双击调出模版
  814. dblClick(row) {
  815. this.clickTime2 = new Date().getTime()
  816. console.log('this.clickTime2', this.clickTime2)
  817. //@click="btnMoreResult(scope.row, scope.$index)" :disabled="rowResultDisabled(scope.row)"
  818. if (this.rowResultDisabled(row)) {
  819. return
  820. }
  821. let lfind = arrayExistObj(this.doctorCheck.checkItemList, 'itemId', row.itemId)
  822. this.btnMoreResult(row, lfind)
  823. },
  824. //检查组合项目下所包含的明细项目
  825. checkItemList(RegisterCheckId) {
  826. // this.doctorCheck.checkItem = null
  827. if (!RegisterCheckId) {
  828. this.doctorCheck.checkItemList = [];
  829. this.doctorCheck.RegisterCheckEdit = {
  830. id: "",
  831. checkDoctorId: "",
  832. checkDate: "",
  833. LastModifierId: "",
  834. LastModificationTime: "",
  835. completeFlag: "",
  836. };
  837. return;
  838. }
  839. console.log(
  840. `/api/app/registercheckitem/getlistinregistercheckid?RegisterCheckId=${RegisterCheckId}`
  841. );
  842. getapi(`/api/app/registercheck/getregistercheck?id=${RegisterCheckId}`)
  843. .then((res) => {
  844. if (res.code > -1) {
  845. this.doctorCheck.RegisterCheckEdit = res.data;
  846. if (
  847. res.data.isCharge != "Y" &&
  848. this.doctor_check_check_charge == "Y"
  849. ) {
  850. this.$message.warning({
  851. showClose: true,
  852. message: `该体检人员未缴清费用!`,
  853. });
  854. }
  855. if (this.doctorCheck.RegisterCheckEdit.completeFlag == "0") {
  856. // 当前用户是检查医生时,默认当前用户
  857. if (this.userInfo.operatorType == '1' || this.userInfo.operatorType == '3') {
  858. this.doctorCheck.RegisterCheckEdit.checkDoctorId = this.userInfo.userId;
  859. }
  860. this.doctorCheck.RegisterCheckEdit.checkDate = new Date();
  861. }
  862. return getapi(
  863. `/api/app/registercheckitem/getlistinregistercheckid?RegisterCheckId=${RegisterCheckId}&PatientRegisterId=${this.dataTransOpts.tableS.patient_register.id}`
  864. );
  865. }
  866. })
  867. .then((res) => {
  868. // console.log("checkItemList", res.data);
  869. if (res && res.code > -1) {
  870. res.data.forEach((e, i) => {
  871. // 虚拟显示危急状态
  872. e["criticalFlag"] = "N";
  873. });
  874. //console.log('this.doctorCheck.checkItemList',res.data)
  875. this.doctorCheck.checkItemList = res.data;
  876. this.doctorCheck.checkItemList.forEach((e, i) => {
  877. if (this.doctorCheck.RegisterCheckEdit.completeFlag == "0") {
  878. this.madeTooltips(i);
  879. } else {
  880. let lfind = arrayExistObj(
  881. this.resultStatus,
  882. "id",
  883. e.resultStatusId
  884. );
  885. if (lfind > -1) {
  886. e.class = this.resultStatus[lfind].tooltips;
  887. }
  888. }
  889. });
  890. // 光标定位第一个输入框
  891. this.$nextTick(() => {
  892. this.$refs[res.data[0].itemId].focus(); //打开光标定位到条码栏里
  893. });
  894. // 监听回车代替tab键
  895. this.enterToTab();
  896. }
  897. })
  898. .catch((err) => {
  899. this.$message.error({
  900. showClose: true,
  901. message: `操作失败,原因:${err}`,
  902. });
  903. });
  904. },
  905. querySearch(queryString, cb) {
  906. var restaurants = []; //不需要字典库显示 deepCopy(this.restaurants) [{ value: '阴性' },{ value: '阳性' }]
  907. restaurants.forEach((item) => {
  908. return (item.value = item.result);
  909. });
  910. // console.log("restaurants", restaurants);
  911. var results = queryString
  912. ? restaurants.filter(this.createFilter(queryString))
  913. : restaurants;
  914. // 调用 callback 返回建议列表的数据
  915. cb(results);
  916. },
  917. createFilter(queryString) {
  918. return (restaurant) => {
  919. return (
  920. restaurant["value"].toLowerCase().indexOf(queryString.toLowerCase()) >
  921. -1
  922. );
  923. };
  924. },
  925. handleSelect(item) {
  926. console.log("item", item);
  927. },
  928. //回车替代tab键
  929. enterToTab() {
  930. // console.log('enterToTab');
  931. this.$nextTick(() => {
  932. let inputs = document.querySelectorAll(["textarea", "input"]); //用数组可以读取多个标签的元素 //.inline-input
  933. // console.log('inputs', typeof inputs, inputs)
  934. // 为每个输入框添加键盘事件监听器
  935. inputs.forEach((input, i) => {
  936. // console.log('input',input);
  937. input.addEventListener("keydown", (event) => {
  938. // 如果按下的是回车键
  939. // console.log('data-lineModeFlag', input, input.getAttribute('data-lineModeFlag'), i);
  940. // console.log('event.keyCode', event.keyCode)
  941. switch (event.keyCode) {
  942. case 13:
  943. if (
  944. event.keyCode === 13 &&
  945. input.getAttribute("data-lineModeFlag") == "0"
  946. ) {
  947. event.preventDefault();
  948. } else {
  949. break;
  950. }
  951. case 9: // tab 键
  952. event.preventDefault();
  953. case 40: // ↓ 键
  954. for (let j = i + 1; j < inputs.length; j++) {
  955. // console.log(inputs[j], inputs[j].getAttribute('type'), inputs[j].getAttribute('placeholder'))
  956. if (inputs[j].getAttribute("placeholder") == "请输入结果值") {
  957. if (inputs[j].getAttribute("disabled") != "disabled") {
  958. // console.log('inputs[j]', inputs[j])
  959. inputs[j].focus();
  960. break;
  961. }
  962. }
  963. }
  964. break;
  965. case 38: // ↑ 键
  966. for (let j = i - 1; j > -1; j--) {
  967. // console.log(inputs[j], inputs[j].getAttribute('type'), inputs[j].getAttribute('placeholder'))
  968. if (inputs[j].getAttribute("placeholder") == "请输入结果值") {
  969. if (inputs[j].getAttribute("disabled") != "disabled") {
  970. // console.log('inputs[j]', inputs[j])
  971. inputs[j].focus();
  972. break;
  973. }
  974. }
  975. }
  976. break;
  977. default:
  978. break;
  979. }
  980. });
  981. // 点击时全选结果
  982. input.addEventListener("click", (event) => {
  983. if (this.LocalConfig.doctorCheck.isSelectAll == 'Y') {
  984. input.select();
  985. }
  986. });
  987. });
  988. });
  989. },
  990. // 光标位置插入特殊符号
  991. insertSymbols(symbols) {
  992. let result = this.moreResult.result || "";
  993. if (result) {
  994. result =
  995. result.substring(0, this.selection.start) +
  996. symbols +
  997. result.substring(this.selection.end);
  998. } else {
  999. result = symbols;
  1000. }
  1001. this.moreResult.result = result;
  1002. this.selection.start++;
  1003. this.selection.end++;
  1004. },
  1005. // 获取光标位置的函数
  1006. getCaretPosition() {
  1007. let input = document.getElementById("resultBox");
  1008. this.selection.start = input.selectionStart;
  1009. this.selection.end = input.selectionEnd;
  1010. // console.log('selection',this.selection)
  1011. },
  1012. watchSelection() {
  1013. this.$nextTick(() => {
  1014. let that = this;
  1015. let resultBox = document.getElementById("resultBox"); //用数组可以读取多个标签的元素 //.inline-input
  1016. // 绑定键盘事件到文本框
  1017. resultBox.addEventListener("click", function (event) {
  1018. // 获取光标位置
  1019. that.getCaretPosition();
  1020. });
  1021. resultBox.addEventListener("input", function (event) {
  1022. // 获取光标位置
  1023. that.getCaretPosition();
  1024. });
  1025. });
  1026. },
  1027. // 录入结果区域 右击事件
  1028. onContextmenu(event) {
  1029. //菜单项
  1030. let items = [];
  1031. // items.push({
  1032. // label: "一级菜单",
  1033. // children: [
  1034. // { label: "修改姓名", onClick: () => { this.fnUpBaseInfo(row, 'patientName'); } }
  1035. // ],
  1036. // onClick: () => { //菜单事件 }
  1037. // })
  1038. // 显示明细历次结果
  1039. items.push({
  1040. label: "显示明细历次结果",
  1041. onClick: () => {
  1042. this.hisResultDetailDialogVisible = true
  1043. },
  1044. })
  1045. // 预览影像报告
  1046. //if(checkPagePriv(this.pagePriv.privs, "预览影像报告"))
  1047. items.push({
  1048. label: "预览影像报告",
  1049. onClick: () => {
  1050. this.pacsReportView();
  1051. },
  1052. })
  1053. this.$contextmenu({
  1054. items,
  1055. event,
  1056. x: event.clientX,
  1057. y: event.clientY,
  1058. customClass: "custom-class",
  1059. zIndex: 3,
  1060. minWidth: 80,
  1061. });
  1062. return false;
  1063. },
  1064. // 预览影像报告
  1065. pacsReportView() {
  1066. if (!this.$peisAPI) {
  1067. this.$message.info("此功能,需要在壳客户端才可运行!")
  1068. return
  1069. }
  1070. ///3a0c990e-5756-2dc0-19d5-69a617fe4048
  1071. let ReportCode = '0011';
  1072. let BusinessCode = this.doctorCheck.RegisterCheckId
  1073. let token = window.sessionStorage.getItem('token');
  1074. let user = window.sessionStorage.getItem('user');
  1075. let toOutShell = {
  1076. ReportCode, token, BusinessCode,
  1077. isBuildImage: 'N',
  1078. IsUploadPdf: 'N',
  1079. preViewCanPrint: 'Y',
  1080. Parameters: [
  1081. { Name: 'printer', Value: user },
  1082. { Name: 'LTS', Value: 'Y' }, //Y、N N只看不能打印
  1083. { Name: "firstPage", Value: "pic/peisReportFirstPage.jpg" },
  1084. { Name: "pageHeader", Value: "pic/peisReportPageHeader.jpg" },
  1085. { Name: "pageFooter", Value: "pic/peisReportPageFooter.jpg" },
  1086. { Name: "orgSign", Value: this.dataTransOpts.tableS.patient_register.isPatientOccupationalDisease == 'Y' ? "pic/orgSignOcc.png" : "pic/orgSign.png" },
  1087. { Name: 'picExtOne', Value: 'pic/hisLog.jpg' },
  1088. { Name: 'resultSign', Value: 'pic/resultSign.png' },
  1089. ],
  1090. };
  1091. let JSONtoOutShell = JSON.stringify(toOutShell)
  1092. console.log('$peisAPI.printPre', JSONtoOutShell)
  1093. this.$peisAPI.printPre(JSONtoOutShell)
  1094. .then(res => {
  1095. if (res) {
  1096. let lres = JSON.parse(res)
  1097. if (lres.code < 0) this.$message.error({ showClose: true, message: lres.message })
  1098. }
  1099. })
  1100. .catch(err => {
  1101. this.$message.warning(err);
  1102. });
  1103. },
  1104. },
  1105. //监听事件
  1106. watch: {
  1107. //检查项目切换
  1108. // "doctorCheck.RegisterCheckId":{
  1109. // immediate:true,
  1110. // handler(newVal, oldVal) {
  1111. // console.log(
  1112. // "watch doctorCheck.RegisterCheckId newVal:",
  1113. // newVal,
  1114. // " oldVal:",
  1115. // oldVal
  1116. // );
  1117. // this.checkItemList(newVal);
  1118. // }
  1119. // },
  1120. //检查项目未切换换时 也可以强制刷新数据
  1121. "dataTransOpts.refresh.register_check_item.M": {
  1122. // immediate: true,
  1123. handler(newVal, oldVal) {
  1124. console.log(
  1125. `watch 检查明细 newVal:${newVal} oldVal:${oldVal} registerCheckId: ${this.dataTransOpts.tableS.register_check.id}`
  1126. );
  1127. this.checkItemList(this.dataTransOpts.tableS.register_check.id);
  1128. },
  1129. },
  1130. },
  1131. };
  1132. </script>
  1133. <style lang="scss" scoped>
  1134. @import "../../assets/css/global.css";
  1135. ::v-deep .el-table td.el-table__cell,
  1136. .el-table th.el-table__cell.is-leaf {
  1137. padding: 0;
  1138. }
  1139. ::v-deep .el-textarea__inner {
  1140. min-height: 23px;
  1141. height: 23px;
  1142. line-height: 1.25;
  1143. padding: 2px 15px 2px 2px;
  1144. font-size: v-bind("LocalConfig.doctorCheck.pacsDescFontSize");
  1145. font-family: "Microsoft YaHei";
  1146. }
  1147. /*正常*/
  1148. ::v-deep .tipsNormal .el-textarea__inner {
  1149. background-color: v-bind("tipsNormal.backgroundColor") !important;
  1150. color: v-bind("tipsNormal.color") !important;
  1151. }
  1152. /*错误*/
  1153. ::v-deep .tipsError .el-textarea__inner {
  1154. background-color: v-bind("tipsError.backgroundColor") !important;
  1155. color: v-bind("tipsError.color") !important;
  1156. }
  1157. /*阴性 v-bind("(window.pageHeight > 600 ? (window.pageHeight - 250) : 350) + 'px'") */
  1158. ::v-deep .tipsNegative .el-textarea__inner {
  1159. background-color: v-bind("tipsNegative.backgroundColor") !important;
  1160. color: v-bind("tipsNegative.color") !important;
  1161. }
  1162. /*弱阳性 v-bind("(window.pageHeight > 600 ? (window.pageHeight - 250) : 350) + 'px'") */
  1163. ::v-deep .tipsLowPositive .el-textarea__inner {
  1164. background-color: v-bind("tipsLowPositive.backgroundColor") !important;
  1165. color: v-bind("tipsLowPositive.color") !important;
  1166. }
  1167. /*阳性 v-bind("(window.pageHeight > 600 ? (window.pageHeight - 250) : 350) + 'px'") */
  1168. ::v-deep .tipsPositive .el-textarea__inner {
  1169. background-color: v-bind("tipsPositive.backgroundColor") !important;
  1170. color: v-bind("tipsPositive.color") !important;
  1171. }
  1172. /*偏低 v-bind("(window.pageHeight > 600 ? (window.pageHeight - 250) : 350) + 'px'") */
  1173. ::v-deep .tipsLow .el-textarea__inner {
  1174. background-color: v-bind("tipsLow.backgroundColor") !important;
  1175. color: v-bind("tipsLow.color") !important;
  1176. }
  1177. /*偏高 v-bind("(window.pageHeight > 600 ? (window.pageHeight - 250) : 350) + 'px'") */
  1178. ::v-deep .tipsHigh .el-textarea__inner {
  1179. background-color: v-bind("tipsHigh.backgroundColor") !important;
  1180. color: v-bind("tipsHigh.color") !important;
  1181. }
  1182. /*超低 v-bind("(window.pageHeight > 600 ? (window.pageHeight - 250) : 350) + 'px'") */
  1183. ::v-deep .tipsSuperLow .el-textarea__inner {
  1184. background-color: v-bind("tipsSuperLow.backgroundColor") !important;
  1185. color: v-bind("tipsSuperLow.color") !important;
  1186. }
  1187. /*超高 v-bind("(window.pageHeight > 600 ? (window.pageHeight - 250) : 350) + 'px'") */
  1188. ::v-deep .tipsSuperHigh .el-textarea__inner {
  1189. background-color: v-bind("tipsSuperHigh.backgroundColor") !important;
  1190. color: v-bind("tipsSuperHigh.color") !important;
  1191. }
  1192. /*文字性危及值 v-bind("(window.pageHeight > 600 ? (window.pageHeight - 250) : 350) + 'px'") */
  1193. ::v-deep .tipsSuper .el-textarea__inner {
  1194. background-color: v-bind("tipsSuper.backgroundColor") !important;
  1195. color: v-bind("tipsSuper.color") !important;
  1196. }
  1197. </style>