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.

634 lines
22 KiB

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
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
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
12 months 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
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
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
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. <template>
  2. <div>
  3. <div class="contenttitle">
  4. 体检 /<span class="contenttitleBold">pacs看图</span>
  5. </div>
  6. <div style="display: flex;">
  7. <div v-if="pacsType == 'image'" class="image__preview"
  8. :style="`overflow-y: auto;width: ${window.pageWidth - 330}px;height: ${window.pageHeight - 105}px;`">
  9. <div v-for="item in checkPictures" :key="item.id" style="margin-bottom: 5px;">
  10. <el-image :src="imageFilePlus(item.pictureFilename)" :preview-src-list="previewSrcList(checkPictures, item)"
  11. :style="`overflow-y: auto;width: ${window.pageWidth - 330}px;height: auto;`"></el-image>
  12. <div style="display: flex;justify-content: space-between;margin-top: -26px;">
  13. <div></div>
  14. <div style="display: flex;width: 60px;">
  15. <div>
  16. <el-checkbox v-model="item.isPrint" true-label="Y" false-label="N" @change="btnSavePic"></el-checkbox>
  17. </div>
  18. <div style="font-size: 14px;font-weight: 700;color: #FF0000; margin: 2px 0 0 2px;z-index: 2;">打印</div>
  19. </div>
  20. </div>
  21. </div>
  22. </div>
  23. <div v-else>
  24. <iframe :src="iframeSrc" :height="window.pageHeight - 105" :width="window.pageWidth - 330"></iframe>
  25. </div>
  26. <!-- 查询条件 -->
  27. <div style="width: 310px;margin-left: 2px;">
  28. <div style="display: flex;">
  29. <el-select v-model="query.dateType" placeholder="请选择" style="width: 80px" size="small">
  30. <el-option label="检查日期" value="0" />
  31. <el-option label="上传日期" value="1" />
  32. </el-select>
  33. <el-date-picker v-model="query.startDate" type="date" placeholder="起始日期" size="small" style="width:90px;"
  34. value-format="yyyy-MM-dd" :picker-options="pickerOptions" />
  35. <span class="spanClass"></span>
  36. <el-date-picker v-model="query.endDate" type="date" placeholder="截止日期" size="small" style="width:90px;"
  37. value-format="yyyy-MM-dd" :picker-options="pickerOptions" />
  38. <el-button icon="el-icon-search" @click="btnQuery" type="primary"
  39. style="font-size: 20px;height:32px;min-width:30px; padding: 5px;z-index: 2;" size="small"></el-button>
  40. </div>
  41. <div @contextmenu.prevent="onContextmenu">
  42. <el-table :data="pacsList" style="width: 100%;" border highlight-current-row @row-click="rowClick"
  43. :height="tableHeight" :row-style="{ height: '28px' }" ref="pacsList" @cell-contextmenu="onCellRightClick">
  44. <el-table-column prop="patientName" label="姓名" min-width="80" align="center" />
  45. <el-table-column prop="checkRequestNo" label="检查条码" min-width="120" align="center" />
  46. <el-table-column prop="asbitemName" label="检查项目" show-overflow-tooltip min-width="200" />
  47. <el-table-column prop="pacsCheckDate" label="检查日期" min-width="90" align="center">
  48. <template slot-scope="scope">
  49. {{ moment(scope.row.pacsCheckDate).format("yyyy-MM-DD") }}
  50. </template>
  51. </el-table-column>
  52. <el-table-column prop="pacsUploadDate" label="上传日期" min-width="90" align="center">
  53. <template slot-scope="scope">
  54. {{ moment(scope.row.pacsUploadDate).format("yyyy-MM-DD") }}
  55. </template>
  56. </el-table-column>
  57. </el-table>
  58. </div>
  59. <div v-if="false" style="margin-top: 5px;">
  60. <span style="color: #232748;">人员信息</span>
  61. <div style="display: flex;">
  62. <span style="width: 80px;margin: 7px 0;">检查条码</span>
  63. <el-input ref="checkRequestNo" placeholder="检查条码" v-model="checkRequestNo" size="small" clearable
  64. @keyup.native.enter="onQueryByPacsNo(checkRequestNo)" @focus="onFocus" disabled />
  65. </div>
  66. <div style="display: flex;">
  67. <span style="width: 80px;margin: 7px 0;">姓名</span>
  68. <el-input v-model="dataTransOpts.tableS.patient_register.patientName" size="small" disabled />
  69. </div>
  70. <div style="display: flex;">
  71. <span style="width: 80px;margin: 7px 0;">性别</span>
  72. <el-input v-model="dataTransOpts.tableS.patient_register.sexName" size="small" disabled />
  73. </div>
  74. <div style="display: flex;">
  75. <span style="width: 80px;margin: 7px 0;">年龄</span>
  76. <el-input v-model="dataTransOpts.tableS.patient_register.age" size="small" disabled />
  77. </div>
  78. </div>
  79. <div>
  80. <div style="margin-top: 5px;">
  81. <span style="color: #232748;">检查结果</span>
  82. <el-radio-group v-model="tabPosition">
  83. <el-radio :label="'top'">横排</el-radio>
  84. <el-radio :label="'left'">纵排</el-radio>
  85. </el-radio-group>
  86. </div>
  87. <el-tabs :tab-position="tabPosition" v-model="tabChoosed">
  88. <el-tab-pane v-for="(item, seq) in doctorCheck.checkItemList" :label="dispLabel(item.itemName)"
  89. :name="seq + ''" :key="seq">
  90. <el-input style="width: 98%;border: 1px solid #232748;" type="textarea" v-model="item.result"
  91. placeholder="请输入检查结果" :autosize="{ minRows: 8, maxRows: 8 }" />
  92. <div style="display: flex;justify-content: space-between;">
  93. <div></div>
  94. <div>
  95. <el-tooltip :content="`给 ${item.itemName} 项目,赋默认结果`" placement="top">
  96. <i class="el-icon-edit" @click="btnDefResult(seq)"
  97. style="font-size: 18px;color: blue;cursor:pointer;margin-right: 10px;"></i>
  98. </el-tooltip>
  99. <el-tooltip :content="`清除 ${item.itemName} 项目的检查结果`" placement="top">
  100. <i class="el-icon-delete" @click="btnClear(seq)"
  101. style="font-size: 18px;color: red;cursor:pointer;margin-right: 10px;"></i>
  102. </el-tooltip>
  103. </div>
  104. </div>
  105. </el-tab-pane>
  106. </el-tabs>
  107. </div>
  108. <div style="margin-top: -15px;">
  109. <span style="color: #232748;">检查结论</span>
  110. <el-input style="width: 98%;border: 1px solid #232748;" type="textarea" v-model="pacsParams.summary"
  111. placeholder="请输入结论" size="small" :autosize="{ minRows: 6, maxRows: 6 }" />
  112. </div>
  113. <div style="display: flex;justify-content: space-between;margin-top: 10px;">
  114. <div></div>
  115. <div>
  116. <!--
  117. <el-button type="primary" @click="btnTest" class="commonbutton">测试</el-button>
  118. -->
  119. <el-button type="primary" @click="btnChooseBigtext" size="small" class="commonbutton"
  120. :disabled="dataTransOpts.tableS.patient_register.completeFlag == '3'">选择描述</el-button>
  121. <el-button type="primary" @click="btnOkBigtext" size="small" class="commonbutton"
  122. :disabled="dataTransOpts.tableS.patient_register.completeFlag == '3'">保存结果</el-button>
  123. <el-checkbox v-model="autoNext" true-label="Y" false-label="N" size="small">自动下一条</el-checkbox>
  124. </div>
  125. </div>
  126. </div>
  127. </div>
  128. <!--Pacs结果录入模版-->
  129. <el-dialog :title="'Pacs结果录入模版 -- ' + doctorCheck.asbitemName" :visible.sync="dialogWin.PacsTemplate" width="880px"
  130. :close-on-click-modal="false">
  131. <PacsTemplate :refParams="pacsParams" :refFuncOther="handlePacsResult" />
  132. </el-dialog>
  133. </div>
  134. </template>
  135. <script>
  136. import moment from "moment";
  137. import { mapState } from "vuex";
  138. import { Loading } from "element-ui";
  139. import { getapi, postapi, putapi, deletapi } from "@/api/api";
  140. import { getPagePriv, checkPagePriv, deepCopy, arrayExistObj } from "../../utlis/proFunc";
  141. import { hadoopGet, hadoopPost, hadoopPut, hadoopDel } from "../../api/hadoopApi"
  142. import CheckPictureUpload from "./CheckPictureUpload.vue";
  143. import PacsTemplate from "./PacsTemplate.vue";
  144. export default {
  145. components: {
  146. CheckPictureUpload, PacsTemplate
  147. },
  148. data() {
  149. return {
  150. sysConfig: {}, //
  151. pagePriv: {
  152. routeUrlorPageName: 'doctorCheck', //当前页面归属路由或归属页面权限名称
  153. privs: [] // 页面权限
  154. },
  155. query: {
  156. patientName: "",
  157. checkRequestNo: "",
  158. dateType: "1",
  159. startDate: "",
  160. endDate: "",
  161. maxResultCount: 1000,
  162. skipCount: 0
  163. },
  164. rClickRow: null, //右击的行
  165. rClickColumn: null, //右击的列(预留)
  166. autoNext: 'Y', // 保存后自动下一条
  167. doctorCheckEdit: {},
  168. pacsList: [],
  169. curPacs: {},
  170. checkRequestNo: '',
  171. dialogDcm: false,
  172. iframeSrc: '',
  173. pacsParams: {
  174. from: 'dcm',
  175. refresh: -1,
  176. row: {},
  177. index: 0,
  178. result: '',
  179. summary: ''
  180. },
  181. pacsType: 'dcm', // image/dcm
  182. checkPictures: [],
  183. tabChoosed: "0",
  184. tabPosition: "top", // 多个明细检查排列方式
  185. };
  186. },
  187. created() {
  188. //获取用户当前页面的权限
  189. let userPriv = window.sessionStorage.getItem('userPriv')
  190. if (userPriv) this.pagePriv.privs = deepCopy(getPagePriv(this.pagePriv.routeUrlorPageName))
  191. this.sysConfig = JSON.parse(window.sessionStorage.getItem('sysConfig'))
  192. let LocalConfig = JSON.parse(window.localStorage.getItem("LocalConfig") || null)
  193. if (LocalConfig && LocalConfig.doctorCheck && LocalConfig.doctorCheck.pacsType) this.pacsType = LocalConfig.doctorCheck.pacsType
  194. // console.log('this.pacsType', this.pacsType,)
  195. },
  196. //挂载完成
  197. mounted() {
  198. let today = moment(new Date()).format("yyyy-MM-DD")
  199. this.query.startDate = today
  200. this.query.endDate = today
  201. this.doctorCheck.checkItemList = []
  202. this.result = ''
  203. this.summary = ''
  204. },
  205. computed: {
  206. ...mapState([
  207. "pickerOptions",
  208. "window",
  209. "dict",
  210. "dialogWin",
  211. "dataTransOpts",
  212. "doctorCheck",
  213. "patientRegister",
  214. "customerOrg"
  215. ]),
  216. lmoment(date, forMat) {
  217. return moment(new Date(date)).format(forMat);
  218. },
  219. tableHeight() {
  220. return this.window.pageHeight - 105 - 400 - 76
  221. },
  222. },
  223. methods: {
  224. checkPagePriv, moment,
  225. // 显示tab标签名称,过长处理
  226. dispLabel(itemName) {
  227. return itemName.length > 5 ? (itemName.substring(0, 4) + "…") : itemName
  228. },
  229. // 清除结果
  230. btnClear(seq) {
  231. this.doctorCheck.checkItemList[seq].result = ''
  232. },
  233. // 默认结果
  234. btnDefResult(seq) {
  235. this.doctorCheck.checkItemList[seq].result = this.doctorCheck.checkItemList[seq].defaultResult
  236. },
  237. // 生成 图片预览列表
  238. previewSrcList(oriList, curImag) {
  239. let srcList = []
  240. let image = curImag.pictureFilename.indexOf('http') > -1
  241. ? curImag.pictureFilename
  242. : (this.sysConfig.pacsApi || this.sysConfig.apiurl) + curImag.pictureFilename;
  243. srcList.push(image)
  244. let lfind = arrayExistObj(oriList, 'id', curImag.id)
  245. if (lfind > -1) {
  246. for (let i = lfind + 1; i < oriList.length; i++) {
  247. let e = oriList[i];
  248. image = this.imageFilePlus(e.pictureFilename)
  249. srcList.push(image)
  250. }
  251. for (let index = 0; index < lfind; index++) {
  252. let e = oriList[index];
  253. image = this.imageFilePlus(e.pictureFilename)
  254. srcList.push(image)
  255. }
  256. }
  257. return srcList
  258. },
  259. // 图片文件补全路径
  260. imageFilePlus(fileName) {
  261. if (fileName.indexOf('base64') > -1 || fileName.indexOf('http') > -1) {
  262. return fileName
  263. } else {
  264. return (this.sysConfig.pacsApi || this.sysConfig.apiurl) + fileName
  265. }
  266. },
  267. btnSavePic() {
  268. let body = [];
  269. // [
  270. // {
  271. // "registerCheckPictureId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", // 新增无需传此值
  272. // "registerCheckId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  273. // "pictureFilename": "string",
  274. // "isPrint": "string",
  275. // "displayOrder": 0
  276. // }
  277. // ]
  278. let checkPictures = deepCopy(this.checkPictures);
  279. checkPictures.sort((a, b) => {
  280. let seq1 = 0;
  281. let seq2 = 0;
  282. try {
  283. seq1 = parseInt(a.displayOrder);
  284. } catch (error) {
  285. seq1 = 0;
  286. }
  287. try {
  288. seq2 = parseInt(b.displayOrder);
  289. } catch (error) {
  290. seq2 = 0;
  291. }
  292. return seq1 - seq2;
  293. });
  294. checkPictures.forEach((e) => {
  295. let item = {
  296. registerCheckId: e.registerCheckId,
  297. pictureFilename: e.pictureFilename,
  298. isPrint: e.isPrint
  299. };
  300. if (e.id) item.registerCheckPictureId = e.id;
  301. body.push(item);
  302. });
  303. postapi("/api/app/registercheckpicture/UpdateRegisterCheckPictureStatusMany", body)
  304. .then((res) => {
  305. if (res.code > -1) {
  306. //this.getCheckPictures(checkPictures[0].registerCheckId);
  307. }
  308. });
  309. },
  310. btnQuery() {
  311. let body = Object.assign({}, this.query)
  312. if (!body.checkRequestNo) delete body.checkRequestNo
  313. if (!body.patientName) delete body.patientName
  314. if (!body.startDate || !body.endDate) {
  315. this.$message.warning({ showClose: true, message: '请选择日期' })
  316. return
  317. }
  318. // 0:普通检查; 1:检验; 2:特检; 3:放射
  319. if(this.pacsType == 'image'){
  320. body.checkTypeFlag = '2'
  321. }else{
  322. body.checkTypeFlag = '3'
  323. }
  324. postapi('/api/app/PacsBusiness/GetPatientRegisterPacsCheck', body)
  325. .then(res => {
  326. if (res.code > -1) {
  327. res.data.items.forEach((e, i) => {
  328. e.seq = i // 增加序号
  329. });
  330. this.pacsList = res.data.items
  331. }
  332. })
  333. },
  334. rowClick(row) {
  335. this.curPacs = row
  336. this.onQueryByPacsNo(row.checkRequestNo)
  337. },
  338. //右击菜单
  339. onCellRightClick(row, column) {
  340. this.rClickRow = { ...row }; //右击的行记录
  341. this.rClickColumn = { ...column }; //右击的列(预留)
  342. // console.log(row, column.property);
  343. },
  344. onContextmenu(event) {
  345. //// console.log('onContextmenu',event);
  346. if (!this.rClickRow) return false;
  347. let row = { ...this.rClickRow };
  348. let items = [] //菜单项
  349. items.push({
  350. label: "清除pacs影像数据",
  351. onClick: () => {
  352. postapi("/api/app/PacsBusiness/DeletePacsCheckDicomDataByRegisterCheckId", {
  353. registerCheckId: row.registerCheckId
  354. })
  355. .then((res) => {
  356. if (res.code < 0) {
  357. this.$message.error({ showClose: true, message: res.message })
  358. }
  359. });
  360. },
  361. })
  362. this.$contextmenu({
  363. items,
  364. event,
  365. //x: event.clientX,
  366. //y: event.clientY,
  367. customClass: "custom-class",
  368. zIndex: 3,
  369. minWidth: 80,
  370. });
  371. this.rClickRow = null;
  372. return false;
  373. },
  374. // 浏览Dcm文件
  375. btnBrowseDcm() {
  376. // console.log('this.doctorCheck', this.doctorCheck.RegisterCheckEdit)
  377. this.checkRequestNo = this.doctorCheck.RegisterCheckEdit.checkRequestNo
  378. this.pacsParams.result = this.doctorCheck.checkItemList[0].result
  379. let summary = ''
  380. this.doctorCheck.checkSummaryList.forEach(e => {
  381. summary += e.summary
  382. });
  383. this.pacsParams.summary = summary
  384. this.pacsParams.row = deepCopy(this.doctorCheck.checkItemList[0])
  385. this.pacsParams.index = 0
  386. this.pacsParams.refresh++
  387. // console.log('pacsParams', this.pacsParams)
  388. let token = window.sessionStorage.getItem('token')
  389. this.iframeSrc = `${this.sysConfig.dcmViewers}/?mrn=${this.doctorCheck.RegisterCheckEdit.checkRequestNo}&token=${token}&pacsapi=${this.sysConfig.pacsApi}`
  390. // this.iframeSrc = `${this.sysConfig.dcmViewers}/viewer?StudyInstanceUIDs=1.3.12.2.1107.5.1.4.79623.30000024091203062645300000022`
  391. this.dialogDcm = true
  392. },
  393. // 选择描述与结论
  394. btnChooseBigtext() {
  395. // console.log('this.pacsParams', this.pacsParams)
  396. this.pacsParams.index = parseInt(this.tabChoosed)
  397. this.pacsParams.refresh++
  398. this.dialogWin.PacsTemplate = true
  399. },
  400. // 确定描述与结论
  401. btnOkBigtext() {
  402. // console.log('this.pacsParams', this.pacsParams)
  403. if (!this.pacsParams.summary) {
  404. this.$message.warning({ showClose: true, message: '请填写检查结论' })
  405. return
  406. }
  407. //this.doctorCheck.checkItemList[0].result = this.pacsParams.result
  408. this.doctorCheck.checkSummaryList = [{
  409. id: Math.random(),
  410. registerCheckId: this.doctorCheck.RegisterCheckEdit.id,
  411. summary: this.pacsParams.summary,
  412. summaryFlag: 'N',
  413. }]
  414. this.save()
  415. .then(() => {
  416. if (this.autoNext == 'Y') {
  417. let lfind = arrayExistObj(this.pacsList, 'seq', this.curPacs.seq)
  418. if (lfind > -1 && this.pacsList.length - 1 > lfind) {
  419. this.rowClick(this.pacsList[lfind + 1])
  420. this.$refs['pacsList'].setCurrentRow(this.pacsList[lfind + 1]);
  421. }
  422. }
  423. })
  424. .catch(err => {
  425. console.log(err)
  426. this.$message.error({ showClose: true, message: err })
  427. })
  428. },
  429. //保存数据
  430. save() {
  431. return new Promise((resolve, reject) => {
  432. let checkDate = this.doctorCheck.RegisterCheckEdit.checkDate || new Date();
  433. checkDate = moment(new Date(checkDate)).format('yyyy-MM-DD HH:mm:ss'); //yyyy-MM-DD HH:mm:ss
  434. let checkDoctorId = this.doctorCheck.RegisterCheckEdit.checkDoctorId || null;
  435. let registerCheckId = this.doctorCheck.RegisterCheckEdit.id
  436. // 明细
  437. let registerCheckItems = []
  438. this.doctorCheck.checkItemList.forEach(e => {
  439. registerCheckItems.push({
  440. itemId: e.itemId,
  441. result: e.result,
  442. checkDoctorName: checkDoctorId,
  443. checkDate,
  444. })
  445. });
  446. // 小结
  447. let summarys = []
  448. this.doctorCheck.checkSummaryList.forEach(item => {
  449. summarys.push({
  450. summary: item.summary,
  451. summaryFlag: item.summaryFlag,
  452. })
  453. });
  454. // 建议
  455. let suggestions = []
  456. this.doctorCheck.checkSuggestionList.forEach(item => {
  457. suggestions.push({
  458. suggestion: item.suggestion
  459. })
  460. });
  461. let body = {
  462. registerCheckId,
  463. checkDoctorId,
  464. checkDate,
  465. registerCheckItems,
  466. summarys,
  467. suggestions
  468. }
  469. if (summarys.length == 0) reject('请填写结论!')
  470. postapi('/api/app/registercheck/UpdateCheckResult', body)
  471. .then(res => {
  472. if (res.code > -1) {
  473. this.doctorCheck.RegisterCheckEdit.completeFlag = '1';
  474. //更新组合项目列表记录状态
  475. let lfind = arrayExistObj(this.doctorCheck.RegisterCheckList, 'id', body.registerCheckId)
  476. if (lfind > -1) this.doctorCheck.RegisterCheckList[lfind].completeFlag = '1'
  477. resolve(res)
  478. } else {
  479. reject(res.message)
  480. }
  481. })
  482. .catch(err => reject(err))
  483. })
  484. },
  485. // 处理 pacs 结果录入的情况
  486. handlePacsResult(row, index, pacsResult) {
  487. Object.assign(this.pacsParams, pacsResult)
  488. },
  489. // 通过检查条码查询相关数据
  490. onQueryByPacsNo(checkRequestNo) {
  491. this.checkRequestNo = checkRequestNo
  492. postapi('/api/app/PacsBusiness/GetPatientRegisterWithCheckResultByCheckRequestNo', { checkRequestNo })
  493. .then(res => {
  494. if (res.code > -1) {
  495. // 人员信息
  496. this.dataTransOpts.tableS.patient_register = res.data.patientRegisterDetail
  497. // 检查信息
  498. this.doctorCheck.RegisterCheckEdit = res.data.registerCheckDetail
  499. // 组合项目
  500. this.doctorCheck.RegisterCheckList = [res.data.registerCheckDetail]
  501. // 组合项目明细
  502. this.doctorCheck.checkItemList = res.data.registerCheckItemDetails
  503. if(this.doctorCheck.checkItemList.length > 0){
  504. this.tabChoosed = "0"
  505. }
  506. if(this.doctorCheck.checkItemList.length > 3){
  507. this.tabPosition = 'left'
  508. }else{
  509. this.tabPosition = 'top'
  510. }
  511. // 小结与建议
  512. this.doctorCheck.checkSummaryList = res.data.registerCheckSummaryDetails
  513. this.doctorCheck.checkSuggestionList = res.data.registerCheckSuggestionDetails
  514. // 上次结果
  515. this.doctorCheck.preResult = res.data.lastTimeAsbitemResultDetail
  516. // 检查情况
  517. this.doctorCheck.RegisterCheckEdit = res.data.registerCheckDetail
  518. // 图片
  519. this.checkPictures = res.data.registerCheckPictureDetails
  520. this.checkPictures.forEach(e => {
  521. e.isPrintTrans = e.isPrint == "Y" ? true : false
  522. });
  523. this.iframeSrc = ''
  524. this.btnBrowseDcm()
  525. }
  526. })
  527. },
  528. },
  529. //监听事件
  530. watch: {
  531. //检查项目未切换换时 也可以强制刷新数据
  532. // "dataTransOpts.refresh.register_check_item.M": {
  533. // // immediate: true,
  534. // handler(newVal, oldVal) {
  535. // console.log(`watch 检查图片 newVal:${newVal} oldVal:${oldVal} registerCheckId: ${this.dataTransOpts.tableS.register_check.id}`);
  536. // if (newVal != oldVal) this.getCheckPictures(this.dataTransOpts.tableS.register_check.id);
  537. // }
  538. // },
  539. },
  540. };
  541. </script>
  542. <style scoped>
  543. .query {
  544. margin-left: 10px;
  545. margin-right: 2px;
  546. padding: 1px 1px;
  547. }
  548. .spanClass {
  549. font-size: 14px;
  550. padding: 6px 2px 0 0;
  551. }
  552. .btnClass {
  553. margin: 2px 2px 0;
  554. height: 26px;
  555. min-width: 40px;
  556. padding: 5px 5px;
  557. /*原始 默认值 10px 10px */
  558. }
  559. /* 强制出现滚动条 */
  560. ::-webkit-scrollbar {
  561. height: 0.5rem;
  562. }
  563. ::-webkit-scrollbar-thumb {
  564. background-color: #ccc;
  565. border-radius: 0.25rem;
  566. }
  567. </style>