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.
		
		
		
		
		
			
		
			
				
					
					
						
							848 lines
						
					
					
						
							30 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							848 lines
						
					
					
						
							30 KiB
						
					
					
				
								<template>
							 | 
						|
								  <div style="display: flex;">
							 | 
						|
								    <div>
							 | 
						|
								      <div v-show="checkPagePriv(pagePriv.privs, '采图')">
							 | 
						|
								        <el-button type="primary" class="btnClass" @click="btnGetPic" :disabled="doctorBtnDisabled('btnGetPic')"
							 | 
						|
								          size="small">采图</el-button>
							 | 
						|
								      </div>
							 | 
						|
								      <div v-show="checkPagePriv(pagePriv.privs, 'Dcm')">
							 | 
						|
								        <el-button type="primary" class="btnClass" @click="btnBrowseDcm" :disabled="doctorBtnDisabled('btnBrowseDcm')"
							 | 
						|
								          size="small">Dcm</el-button>
							 | 
						|
								      </div>
							 | 
						|
								      <div v-show="checkPagePriv(pagePriv.privs, '保存')">
							 | 
						|
								        <el-button type="primary" class="btnClass" @click="btnSavePic" :disabled="doctorBtnDisabled('btnSavePic')"
							 | 
						|
								          size="small">保存</el-button>
							 | 
						|
								      </div>
							 | 
						|
								      <el-dropdown v-show="checkPagePriv(pagePriv.privs, '导图')" :disabled="doctorBtnDisabled('btnExpPic')">
							 | 
						|
								        <span class="el-dropdown-link" style="color: #222531; font-weight: 700">
							 | 
						|
								          <el-button type="primary" class="btnClass" :disabled="doctorBtnDisabled('btnExpPic')">更多</el-button>
							 | 
						|
								        </span>
							 | 
						|
								        <el-dropdown-menu slot="dropdown">
							 | 
						|
								          <el-dropdown-item v-show="checkPagePriv(pagePriv.privs, '导图')" @click.native="btnExpPic"
							 | 
						|
								            :disabled="doctorBtnDisabled('btnExpPic')">导入图片</el-dropdown-item>
							 | 
						|
								          <el-dropdown-item v-show="checkPagePriv(pagePriv.privs, '裁图')" @click.native="btnCutPic"
							 | 
						|
								            :disabled="doctorBtnDisabled('btnCutPic')">裁剪图片</el-dropdown-item>
							 | 
						|
								          <el-dropdown-item v-show="checkPagePriv(pagePriv.privs, '清理pacs结果')" @click.native="btnClean"
							 | 
						|
								            :disabled="doctorBtnDisabled('btnClean')">清理pacs结果</el-dropdown-item>
							 | 
						|
								        </el-dropdown-menu>
							 | 
						|
								      </el-dropdown>
							 | 
						|
								    </div>
							 | 
						|
								    <!--  -->
							 | 
						|
								    <div :style="`overflow-x: scroll;width:${Math.floor((window.pageWidth - 200 - 110 - 15 - 4))}px;`">
							 | 
						|
								      <div style="display: flex;">
							 | 
						|
								        <div class="demo-image__preview" v-for="(item, index) in checkPictures" :key="item.id"
							 | 
						|
								          style="display: inline-block; padding: 0 0 0 2px">
							 | 
						|
								          <div style="
							 | 
						|
								              position: relative;
							 | 
						|
								              font-size: 24px;
							 | 
						|
								              margin: -6px 0 0 55px;              
							 | 
						|
								              height: 30px;
							 | 
						|
								              z-index: 2;
							 | 
						|
								            ">
							 | 
						|
								            <el-tooltip content="删除该图" placement="bottom" effect="light">
							 | 
						|
								              <i class="el-icon-close" @click="btnDelImage(index)" v-show="!doctorBtnDisabled('btnDelImage')"
							 | 
						|
								                style="color: red; cursor: pointer"></i>
							 | 
						|
								            </el-tooltip>
							 | 
						|
								          </div>
							 | 
						|
								          <div style="margin-top: -25px">
							 | 
						|
								            <el-image style="width: 80px; height: 80px; border-radius: 5px" :src="imageFilePlus(item.pictureFilename)"
							 | 
						|
								              :preview-src-list="previewSrcList(checkPictures, item)">
							 | 
						|
								            </el-image>
							 | 
						|
								          </div>
							 | 
						|
								          <div style="display: flex">
							 | 
						|
								            <div style="margin: -6px 2px 0 1px">
							 | 
						|
								              <el-tooltip content="是否打印" placement="bottom" effect="light">
							 | 
						|
								                <el-checkbox v-model="item.isPrintTrans" @change="btnSavePic"
							 | 
						|
								                  :disabled="doctorBtnDisabled('btnSavePic')"></el-checkbox>
							 | 
						|
								              </el-tooltip>
							 | 
						|
								            </div>
							 | 
						|
								            <!--
							 | 
						|
								            <div style="font-size: 12px; margin: -2px 0 0 1px">打印</div>
							 | 
						|
								            -->
							 | 
						|
								            <div style="font-size: 15px; margin: -5px 2px 0 2px">
							 | 
						|
								              <el-tooltip content="保存后,图片将按序号从小到大排序" placement="bottom" effect="light">
							 | 
						|
								                <input placeholder="排序" v-model="item.displayOrder" @onkeyup="validateInteger(e, index)"
							 | 
						|
								                  style="width: 30px" :disabled="doctorBtnDisabled('btnSavePic')" />
							 | 
						|
								              </el-tooltip>
							 | 
						|
								            </div>
							 | 
						|
								            <div style="margin: -6px 0 0 2px">
							 | 
						|
								              <el-tooltip content="是否报告图片" placement="bottom" effect="light">
							 | 
						|
								                <el-checkbox v-model="item.pictureFileType" @change="btnSavePic" true-label="1" false-label="0"
							 | 
						|
								                  :disabled="doctorBtnDisabled('btnSavePic')"></el-checkbox>
							 | 
						|
								              </el-tooltip>
							 | 
						|
								            </div>
							 | 
						|
								          </div>
							 | 
						|
								        </div>
							 | 
						|
								      </div>
							 | 
						|
								    </div>
							 | 
						|
								
							 | 
						|
								    <el-dialog title="图片上传" :visible.sync="dialogCheckPictureUpload" :close-on-click-modal="false" width="800px"
							 | 
						|
								      @close="getCheckPictures(doctorCheck.RegisterCheckId)">
							 | 
						|
								      <CheckPictureUpload :registerCheckId="doctorCheck.RegisterCheckId" :uploadSeq="uploadSeq"
							 | 
						|
								        :closePicUpload="closePicUpload" />
							 | 
						|
								    </el-dialog>
							 | 
						|
								
							 | 
						|
								    <el-dialog title="Dcm查看" :visible.sync="dialogDcm" :close-on-click-modal="false" fullscreen @close="iframeSrc = ''">
							 | 
						|
								      <div style="display: flex;">
							 | 
						|
								        <div>
							 | 
						|
								          <iframe :src="iframeSrc" :height="window.pageHeight - 85" :width="window.pageWidth - 260"></iframe>
							 | 
						|
								        </div>
							 | 
						|
								        <div style="width: 240px;margin-left: 2px;">
							 | 
						|
								          <div style="margin-top: 5px;">
							 | 
						|
								            <span style="color: #232748;">人员信息:</span>
							 | 
						|
								            <div style="display: flex;">
							 | 
						|
								              <span style="width: 80px;margin: 7px 0;">检查条码</span>
							 | 
						|
								              <el-input ref="checkRequestNo" placeholder="检查条码" v-model="checkRequestNo" size="small" clearable
							 | 
						|
								                @keyup.native.enter="onQueryByPacsNo(checkRequestNo)" @focus="onFocus" disabled />
							 | 
						|
								            </div>
							 | 
						|
								            <div style="display: flex;">
							 | 
						|
								              <span style="width: 80px;margin: 7px 0;">姓名</span>
							 | 
						|
								              <el-input v-model="dataTransOpts.tableS.patient_register.patientName" size="small" disabled />
							 | 
						|
								            </div>
							 | 
						|
								            <div style="display: flex;">
							 | 
						|
								              <span style="width: 80px;margin: 7px 0;">性别</span>
							 | 
						|
								              <el-input v-model="dataTransOpts.tableS.patient_register.sexName" size="small" disabled />
							 | 
						|
								            </div>
							 | 
						|
								            <div style="display: flex;">
							 | 
						|
								              <span style="width: 80px;margin: 7px 0;">年龄</span>
							 | 
						|
								              <el-input v-model="dataTransOpts.tableS.patient_register.age" size="small" disabled />
							 | 
						|
								            </div>
							 | 
						|
								          </div>
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								          <div style="margin-top: 5px;">
							 | 
						|
								            <div>
							 | 
						|
								              <span>检查结果:</span>
							 | 
						|
								              <el-radio-group v-model="tabPosition">
							 | 
						|
								                <el-radio :label="'top'">横排</el-radio>
							 | 
						|
								                <el-radio :label="'left'">纵排</el-radio>
							 | 
						|
								              </el-radio-group>
							 | 
						|
								            </div>
							 | 
						|
								
							 | 
						|
								            <el-tabs :tab-position="tabPosition" v-model="tabChoosed">
							 | 
						|
								              <el-tab-pane v-for="(item, seq) in doctorCheck.checkItemList" :label="dispLabel(item.itemName)"
							 | 
						|
								                :name="seq + ''" :key="seq">
							 | 
						|
								                <el-input style="width: 100%;" type="textarea" v-model="item.result" placeholder="请输入检查结果"
							 | 
						|
								                  :disabled="doctorBtnDisabled('save')"
							 | 
						|
								                  :autosize="{ minRows: Math.floor((window.pageHeight - 550) / 24), maxRows: 18 }" />
							 | 
						|
								                <div style="display: flex;justify-content: space-between;">
							 | 
						|
								                  <div></div>
							 | 
						|
								                  <div>
							 | 
						|
								                    <el-tooltip :content="`给 ${item.itemName} 项目,赋默认结果`" placement="top">
							 | 
						|
								                      <i class="el-icon-edit" @click="btnDefResult(seq)"
							 | 
						|
								                        style="font-size: 18px;color: blue;cursor:pointer;margin-right: 10px;"></i>
							 | 
						|
								                    </el-tooltip>
							 | 
						|
								                    <el-tooltip :content="`清除 ${item.itemName} 项目的检查结果`" placement="top">
							 | 
						|
								                      <i class="el-icon-delete" @click="btnClear(seq)"
							 | 
						|
								                        style="font-size: 18px;color: red;cursor:pointer;margin-right: 10px;"></i>
							 | 
						|
								                    </el-tooltip>
							 | 
						|
								                  </div>
							 | 
						|
								                </div>
							 | 
						|
								              </el-tab-pane>
							 | 
						|
								            </el-tabs>
							 | 
						|
								          </div>
							 | 
						|
								
							 | 
						|
								          <div style="margin-top: 5px;">
							 | 
						|
								            <span style="color: #232748;">检查结论:</span>
							 | 
						|
								            <el-table row-key="id" :data="doctorCheck.checkSummaryList" size="samll" height="186" width="100%" border>
							 | 
						|
								              <el-table-column width="30" align="center">
							 | 
						|
								                <template slot-scope="scope">
							 | 
						|
								                  <el-tag class="moveSummary" style="height:25px;padding:0 2px;cursor: move;background-color: #EEEEEE;">
							 | 
						|
								                    <div style="width: 16px;">{{ scope.$index + 1 }}</div>
							 | 
						|
								                  </el-tag>
							 | 
						|
								                </template>
							 | 
						|
								              </el-table-column>
							 | 
						|
								              <el-table-column prop="summary" label="小结">
							 | 
						|
								                <template slot="header">
							 | 
						|
								                  <div style="display: flex;justify-content:space-between;">
							 | 
						|
								                    <div>小结</div>
							 | 
						|
								                    <div></div>
							 | 
						|
								                  </div>
							 | 
						|
								                </template>
							 | 
						|
								                <template slot-scope="scope">
							 | 
						|
								                  <div style="display: flex;">
							 | 
						|
								                    <el-input type="textarea" v-model="scope.row.summary" :autosize="{ minRows: 1, maxRows: 100 }"
							 | 
						|
								                      placeholder="请输入小结">
							 | 
						|
								                    </el-input>
							 | 
						|
								                    <el-button type="danger" style="min-width:23px;padding:2px;" icon="el-icon-delete"
							 | 
						|
								                      @click="delSum(scope.$index)" size="small"></el-button>
							 | 
						|
								                  </div>
							 | 
						|
								                </template>
							 | 
						|
								              </el-table-column>
							 | 
						|
								            </el-table>
							 | 
						|
								          </div>
							 | 
						|
								          <div style="display: flex;justify-content: space-between;margin-top: 10px;">
							 | 
						|
								            <div></div>
							 | 
						|
								            <div>
							 | 
						|
								              <!--
							 | 
						|
								          <el-button type="primary" @click="btnTest" class="commonbutton">测试</el-button>
							 | 
						|
								            -->
							 | 
						|
								              <el-button type="primary" @click="btnChooseBigtext" :disabled="doctorBtnDisabled('save')"
							 | 
						|
								                class="commonbutton">选择描述</el-button>
							 | 
						|
								              <el-button type="primary" @click="btnOkBigtext" :disabled="doctorBtnDisabled('save')"
							 | 
						|
								                class="commonbutton">保存结果</el-button>
							 | 
						|
								            </div>
							 | 
						|
								          </div>
							 | 
						|
								        </div>
							 | 
						|
								      </div>
							 | 
						|
								    </el-dialog>
							 | 
						|
								    <!--Pacs结果录入模版-->
							 | 
						|
								    <el-dialog :title="'Pacs结果录入模版 -- ' + doctorCheck.asbitemName" :visible.sync="dialogWin.PacsTemplate" width="880px"
							 | 
						|
								      :close-on-click-modal="false">
							 | 
						|
								      <PacsTemplate :refParams="pacsParams" :refFuncOther="handlePacsResult" />
							 | 
						|
								    </el-dialog>
							 | 
						|
								
							 | 
						|
								    <el-dialog title="裁图" :visible.sync="dialogWinCutPic" width="1300px" :close-on-click-modal="false">
							 | 
						|
								      <PacsCutPic />
							 | 
						|
								    </el-dialog>
							 | 
						|
								
							 | 
						|
								  </div>
							 | 
						|
								</template>
							 | 
						|
								<script>
							 | 
						|
								import moment from "moment";
							 | 
						|
								import { mapState } from "vuex";
							 | 
						|
								import { Loading } from "element-ui";
							 | 
						|
								import { getapi, postapi, putapi, deletapi } from "@/api/api";
							 | 
						|
								import { getPagePriv, checkPagePriv, deepCopy, arrayExistObj } from "../../utlis/proFunc";
							 | 
						|
								import { hadoopGet, hadoopPost, hadoopPut, hadoopDel } from "../../api/hadoopApi"
							 | 
						|
								import CheckPictureUpload from "./CheckPictureUpload.vue";
							 | 
						|
								import PacsTemplate from "./PacsTemplate.vue";
							 | 
						|
								import PacsCutPic from "./PacsCutPic.vue";
							 | 
						|
								
							 | 
						|
								export default {
							 | 
						|
								  components: {
							 | 
						|
								    CheckPictureUpload, PacsTemplate, PacsCutPic
							 | 
						|
								  },
							 | 
						|
								  props: ["doctorBtnDisabled", "save"],
							 | 
						|
								  data() {
							 | 
						|
								    return {
							 | 
						|
								      sysConfig: {}, //
							 | 
						|
								      pagePriv: {
							 | 
						|
								        routeUrlorPageName: 'doctorCheck', //当前页面归属路由或归属页面权限名称
							 | 
						|
								        privs: [] // 页面权限
							 | 
						|
								      },
							 | 
						|
								
							 | 
						|
								      checkRequestNo: '',
							 | 
						|
								      dialogDcm: false,
							 | 
						|
								      iframeSrc: '',
							 | 
						|
								      pacsParams: {
							 | 
						|
								        from: 'dcm',
							 | 
						|
								        refresh: -1,
							 | 
						|
								        row: {},
							 | 
						|
								        index: 0,
							 | 
						|
								        result: '',
							 | 
						|
								        summary: ''
							 | 
						|
								      },
							 | 
						|
								      tabPosition: 'top',
							 | 
						|
								      tabChoosed: "0",
							 | 
						|
								
							 | 
						|
								      checkPictures: [
							 | 
						|
								        // {
							 | 
						|
								        //   id: "1",
							 | 
						|
								        //   registerCheckId: "registerCheckId",
							 | 
						|
								        //   isPrint: "Y",
							 | 
						|
								        //   isPrintTrans: true,
							 | 
						|
								        //   pictureFilename:
							 | 
						|
								        //     "https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg",
							 | 
						|
								        // },
							 | 
						|
								        // {
							 | 
						|
								        //   id: "2",
							 | 
						|
								        //   registerCheckId: "registerCheckId",
							 | 
						|
								        //   isPrint: "Y",
							 | 
						|
								        //   isPrintTrans: true,
							 | 
						|
								        //   pictureFilename:
							 | 
						|
								        //     "https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg",
							 | 
						|
								        // },
							 | 
						|
								      ],
							 | 
						|
								      //图片上传
							 | 
						|
								      dialogCheckPictureUpload: false,
							 | 
						|
								      uploadSeq: 0, //第几次点图片上传,每点一次清空前次所选图片
							 | 
						|
								      // 裁图
							 | 
						|
								      dialogWinCutPic: false,
							 | 
						|
								      cutPicParam: {},
							 | 
						|
								      pictureFileType: '1'
							 | 
						|
								    };
							 | 
						|
								  },
							 | 
						|
								
							 | 
						|
								  created() {
							 | 
						|
								    //获取用户当前页面的权限
							 | 
						|
								    let userPriv = window.sessionStorage.getItem('userPriv')
							 | 
						|
								    if (userPriv) this.pagePriv.privs = deepCopy(getPagePriv(this.pagePriv.routeUrlorPageName))
							 | 
						|
								    this.sysConfig = JSON.parse(window.sessionStorage.getItem('sysConfig'))
							 | 
						|
								    // console.log('this.sysConfig checkPictures', this.sysConfig)
							 | 
						|
								
							 | 
						|
								  },
							 | 
						|
								
							 | 
						|
								  //挂载完成
							 | 
						|
								  mounted() {
							 | 
						|
								    this.getCheckPictures(this.dataTransOpts.tableS.register_check.id);
							 | 
						|
								  },
							 | 
						|
								
							 | 
						|
								  computed: {
							 | 
						|
								    ...mapState([
							 | 
						|
								      "window",
							 | 
						|
								      "dict",
							 | 
						|
								      "dialogWin",
							 | 
						|
								      "dataTransOpts",
							 | 
						|
								      "doctorCheck",
							 | 
						|
								      "patientRegister",
							 | 
						|
								      "customerOrg"
							 | 
						|
								    ]),
							 | 
						|
								    lmoment(date, forMat) {
							 | 
						|
								      return moment(new Date(date)).format(forMat);
							 | 
						|
								    },
							 | 
						|
								  },
							 | 
						|
								  methods: {
							 | 
						|
								    checkPagePriv,
							 | 
						|
								    // 根据checkId获取图片列表信息
							 | 
						|
								    getCheckPictures(registerCheckId) {
							 | 
						|
								      this.checkPictures = [];
							 | 
						|
								      if (!registerCheckId) {
							 | 
						|
								        return;
							 | 
						|
								      }
							 | 
						|
								      // {
							 | 
						|
								      //   "registerCheckId": "3a0f6a3c-88a5-d5f7-d59b-ef3b3807490b",
							 | 
						|
								      //   "pictureFilename": "https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg",
							 | 
						|
								      //   "isPrint": "N",
							 | 
						|
								      //   "displayOrder": 1,
							 | 
						|
								      //   "creatorName": "admin",
							 | 
						|
								      //   "lastModifierName": "admin",
							 | 
						|
								      //   "lastModificationTime": "2023-12-15T15:24:08",
							 | 
						|
								      //   "lastModifierId": "3a0c4180-107c-0c89-b25b-0bd34666dcec",
							 | 
						|
								      //   "creationTime": "2023-12-15T15:24:06",
							 | 
						|
								      //   "creatorId": "3a0c4180-107c-0c89-b25b-0bd34666dcec",
							 | 
						|
								      //   "id": "3a0f6a3c-88a5-d5f7-d59b-ef3b38074901"
							 | 
						|
								      // }
							 | 
						|
								      hadoopGet('pacsApi', `/api/app/registercheckpicture/getregistercheckpictureinregistercheckid?RegisterCheckId=${registerCheckId}`)
							 | 
						|
								        // getapi(`/api/app/registercheckpicture/getregistercheckpictureinregistercheckid?RegisterCheckId=${registerCheckId}`)
							 | 
						|
								        .then((res) => {
							 | 
						|
								          if (res.code > -1) {
							 | 
						|
								            this.checkPictures = res.data
							 | 
						|
								            this.checkPictures.forEach(e => {
							 | 
						|
								              e.isPrintTrans = e.isPrint == "Y" ? true : false
							 | 
						|
								            });
							 | 
						|
								          }
							 | 
						|
								        });
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    // 生成 图片预览列表
							 | 
						|
								    previewSrcList(oriList, curImag) {
							 | 
						|
								      let srcList = []
							 | 
						|
								      let image = curImag.pictureFilename.indexOf('http') > -1
							 | 
						|
								        ? curImag.pictureFilename
							 | 
						|
								        : (this.sysConfig.pacsApi || this.sysConfig.apiurl) + curImag.pictureFilename;
							 | 
						|
								      srcList.push(image)
							 | 
						|
								      let lfind = arrayExistObj(oriList, 'id', curImag.id)
							 | 
						|
								      if (lfind > -1) {
							 | 
						|
								        for (let i = lfind + 1; i < oriList.length; i++) {
							 | 
						|
								          let e = oriList[i];
							 | 
						|
								          image = this.imageFilePlus(e.pictureFilename)
							 | 
						|
								          srcList.push(image)
							 | 
						|
								        }
							 | 
						|
								        for (let index = 0; index < lfind; index++) {
							 | 
						|
								          let e = oriList[index];
							 | 
						|
								          image = this.imageFilePlus(e.pictureFilename)
							 | 
						|
								          srcList.push(image)
							 | 
						|
								        }
							 | 
						|
								      }
							 | 
						|
								      return srcList
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    //删除小结
							 | 
						|
								    delSum(index) {
							 | 
						|
								      this.$confirm("此操作将删除该记录, 是否继续?", "提示", {
							 | 
						|
								        confirmButtonText: "是",
							 | 
						|
								        cancelButtonText: "否",
							 | 
						|
								        type: "warning",
							 | 
						|
								      }).then(() => {
							 | 
						|
								        this.doctorCheck.checkSummaryList.splice(index, 1);
							 | 
						|
								      }).catch(err => {
							 | 
						|
								        if (err == "cancel") {
							 | 
						|
								          // this.$message.info("已取消删除");
							 | 
						|
								          console.log('已取消删除')
							 | 
						|
								        }
							 | 
						|
								      });
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    // 图片文件补全路径
							 | 
						|
								    imageFilePlus(fileName) {
							 | 
						|
								      if (fileName.indexOf('base64') > -1 || fileName.indexOf('http') > -1) {
							 | 
						|
								        return fileName
							 | 
						|
								      } else {
							 | 
						|
								        return (this.sysConfig.pacsApi || this.sysConfig.apiurl) + fileName
							 | 
						|
								      }
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    // 采图
							 | 
						|
								    btnGetPic() {
							 | 
						|
								      if (!this.doctorCheck.RegisterCheckId) {
							 | 
						|
								        this.$message.warning({ showClose: true, message: "未选中组合项目!" });
							 | 
						|
								        return;
							 | 
						|
								      }
							 | 
						|
								      if (!this.$peisAPI) {
							 | 
						|
								        this.$message.info({ showClose: true, message: "此功能,需要在壳客户端才可运行!" })
							 | 
						|
								        return
							 | 
						|
								      }
							 | 
						|
								
							 | 
						|
								      let toOutShell = {
							 | 
						|
								        barCode: this.doctorCheck.checkRequestNo,
							 | 
						|
								        patientName: this.dataTransOpts.tableS.patient_register.patientName,
							 | 
						|
								        sexName: this.dataTransOpts.tableS.patient_register.sexName,
							 | 
						|
								        age: (this.dataTransOpts.tableS.patient_register.age || '') + '',
							 | 
						|
								        asbitemName: this.doctorCheck.asbitemName
							 | 
						|
								      }
							 | 
						|
								      // console.log('this.$peisAPI.imageAcquisition', JSON.stringify(toOutShell))
							 | 
						|
								
							 | 
						|
								      let loading = Loading.service({
							 | 
						|
								        lock: true,
							 | 
						|
								        text: "正在加载中,请稍后",
							 | 
						|
								        spinner: "el-icon-loading",
							 | 
						|
								        background: "rgba(0, 0, 0, 0)",
							 | 
						|
								        customClass: "boxStyle"
							 | 
						|
								      });
							 | 
						|
								
							 | 
						|
								      this.$peisAPI.imageAcquisition(JSON.stringify(toOutShell))
							 | 
						|
								        .then(async (res) => {
							 | 
						|
								          let lres = JSON.parse(res)
							 | 
						|
								          console.log('this.$peisAPI.imageAcquisition', lres)
							 | 
						|
								          if (lres.code > -1) {
							 | 
						|
								            for (let i = 0; i < lres.data.length; i++) {
							 | 
						|
								              let item = lres.data[i];
							 | 
						|
								
							 | 
						|
								              // FilePath:
							 | 
						|
								              // Image
							 | 
						|
								              // ImageFormat              
							 | 
						|
								              let baseHead = 'data:image/jpeg;base64,'
							 | 
						|
								              switch (item.ImageFormat) {
							 | 
						|
								                case 'png':
							 | 
						|
								                case 'bmp':
							 | 
						|
								                  baseHead = `data:image/${item.ImageFormat};base64,`
							 | 
						|
								                  break;
							 | 
						|
								                default:
							 | 
						|
								                  break;
							 | 
						|
								              }
							 | 
						|
								              this.checkPictures.push({ pictureFilename: baseHead + item.Image })
							 | 
						|
								              let fileName = item.FilePath
							 | 
						|
								              let dotIndex = fileName.lastIndexOf('\\');
							 | 
						|
								              if (dotIndex > -1) fileName = fileName.substring(dotIndex, fileName.length);
							 | 
						|
								
							 | 
						|
								              let body = {
							 | 
						|
								                registerCheckId: this.dataTransOpts.tableS.register_check.id,
							 | 
						|
								                pictureBaseStrs: [{
							 | 
						|
								                  fileName,
							 | 
						|
								                  localPathName: item.FilePath,
							 | 
						|
								                  pictureBaseStr: baseHead + item.Image
							 | 
						|
								                }],
							 | 
						|
								                pictureFileType: '0' //采图暂定图0,上传暂定报告1 this.pictureFileType
							 | 
						|
								              }
							 | 
						|
								              try {
							 | 
						|
								                //await postapi('/api/app/RegisterCheckPicture/InstrumentMapping', body)
							 | 
						|
								                await hadoopPost('pacsApi', '/api/app/RegisterCheckPicture/InstrumentMapping', body)
							 | 
						|
								              } catch (error) {
							 | 
						|
								                console.log('btnGetPic err', error)
							 | 
						|
								              }
							 | 
						|
								            }
							 | 
						|
								            this.getCheckPictures(this.dataTransOpts.tableS.register_check.id)
							 | 
						|
								          } else {
							 | 
						|
								            console.log('this.$peisAPI.imageAcquisition', lres.message)
							 | 
						|
								          }
							 | 
						|
								        }).catch(err => {
							 | 
						|
								          this.$message.error(err)
							 | 
						|
								        }).finally(() => {
							 | 
						|
								          loading.close()
							 | 
						|
								        });
							 | 
						|
								
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    // 显示tab标签名称,过长处理
							 | 
						|
								    dispLabel(itemName) {
							 | 
						|
								      return itemName.length > 5 ? (itemName.substring(0, 4) + "…") : itemName
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    // 清除结果
							 | 
						|
								    btnClear(seq) {
							 | 
						|
								      if (this.doctorBtnDisabled('save')) {
							 | 
						|
								        this.$message.warning({ showClose: true, message: "已保存,不可操作!" })
							 | 
						|
								        return
							 | 
						|
								      }
							 | 
						|
								      this.doctorCheck.checkItemList[seq].result = ''
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    // 默认结果
							 | 
						|
								    btnDefResult(seq) {
							 | 
						|
								      if (this.doctorBtnDisabled('save')) {
							 | 
						|
								        this.$message.warning({ showClose: true, message: "已保存,不可操作!" })
							 | 
						|
								        return
							 | 
						|
								      }
							 | 
						|
								      this.doctorCheck.checkItemList[seq].result = this.doctorCheck.checkItemList[seq].defaultResult
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    // 浏览Dcm文件
							 | 
						|
								    btnBrowseDcm() {
							 | 
						|
								      this.checkRequestNo = this.doctorCheck.checkRequestNo
							 | 
						|
								      this.pacsParams.result = this.doctorCheck.checkItemList[0].result
							 | 
						|
								      let summary = ''
							 | 
						|
								      this.doctorCheck.checkSummaryList.forEach(e => {
							 | 
						|
								        summary += e.summary
							 | 
						|
								      });
							 | 
						|
								      this.pacsParams.summary = summary
							 | 
						|
								      this.pacsParams.row = deepCopy(this.doctorCheck.checkItemList[0])
							 | 
						|
								      this.pacsParams.index = 0
							 | 
						|
								      this.pacsParams.refresh++
							 | 
						|
								
							 | 
						|
								      // console.log('pacsParams', this.pacsParams)
							 | 
						|
								      let token = window.sessionStorage.getItem('token')
							 | 
						|
								      this.iframeSrc = `${this.sysConfig.dcmViewers}/?mrn=${this.doctorCheck.checkRequestNo}&token=${token}&pacsapi=${this.sysConfig.pacsApiHttps}`
							 | 
						|
								      // this.iframeSrc = `${this.sysConfig.dcmViewers}/viewer?StudyInstanceUIDs=1.3.12.2.1107.5.1.4.79623.30000024091203062645300000022`
							 | 
						|
								      this.tabPosition = this.doctorCheck.checkItemList.length > 2 ? 'left' : 'top'
							 | 
						|
								      this.tabChoosed = "0"
							 | 
						|
								      this.dialogDcm = true
							 | 
						|
								
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    // 选择描述与结论
							 | 
						|
								    btnChooseBigtext() {
							 | 
						|
								      // console.log('this.pacsParams', this.pacsParams)
							 | 
						|
								      this.pacsParams.index = parseInt(this.tabChoosed)
							 | 
						|
								      this.pacsParams.refresh++
							 | 
						|
								      this.dialogWin.PacsTemplate = true
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    // 确定描述与结论
							 | 
						|
								    btnOkBigtext() {
							 | 
						|
								      console.log('this.pacsParams', this.pacsParams)
							 | 
						|
								      // this.doctorCheck.checkItemList[0].result = this.pacsParams.result
							 | 
						|
								      /*
							 | 
						|
								      this.doctorCheck.checkSummaryList = [{
							 | 
						|
								        id: Math.random(),
							 | 
						|
								        registerCheckId: this.doctorCheck.RegisterCheckEdit.id,
							 | 
						|
								        summary: this.pacsParams.summary,
							 | 
						|
								        summaryFlag: 'N',
							 | 
						|
								      }]
							 | 
						|
								      */
							 | 
						|
								      if(this.doctorCheck.checkSummaryList.length == 0){
							 | 
						|
								        this.$message.warning({showClose:true,message:"请填写检查结论"})
							 | 
						|
								        return
							 | 
						|
								      }
							 | 
						|
								      this.save()
							 | 
						|
								
							 | 
						|
								      this.dialogDcm = false
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    // 处理 pacs 结果录入的情况
							 | 
						|
								    handlePacsResult(row, index, pacsResult) {
							 | 
						|
								      Object.assign(this.pacsParams, pacsResult)
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    // 浏览Dcm文件
							 | 
						|
								    btnBrowseDcmBak() {
							 | 
						|
								      if (!this.doctorCheck.RegisterCheckId) {
							 | 
						|
								        this.$message.warning({ showClose: true, message: "未选中组合项目!" });
							 | 
						|
								        return;
							 | 
						|
								      }
							 | 
						|
								
							 | 
						|
								      // 创建一个新的 <a> 元素
							 | 
						|
								      let a = document.createElement('a');
							 | 
						|
								
							 | 
						|
								      // 设置 href 属性为要跳转的 URL
							 | 
						|
								      a.href = `${this.sysConfig.dcmViewers}/?mrn=24071610696`;
							 | 
						|
								
							 | 
						|
								      //(可选)设置 target 属性,比如在新窗口打开
							 | 
						|
								      a.target = '_blank';
							 | 
						|
								
							 | 
						|
								      //(可选)防止浏览器将链接添加到历史记录
							 | 
						|
								      a.rel = 'noopener noreferrer';
							 | 
						|
								
							 | 
						|
								      // 将新创建的 <a> 元素添加到 DOM 中
							 | 
						|
								      // 注意:这一步是可选的,如果你只想模拟点击而不想在页面上显示 <a> 元素,可以省略这一步
							 | 
						|
								      // document.body.appendChild(a);
							 | 
						|
								
							 | 
						|
								      // 模拟点击 <a> 元素
							 | 
						|
								      a.click();
							 | 
						|
								
							 | 
						|
								      //(可选)移除刚才添加到 DOM 中的 <a> 元素
							 | 
						|
								      // 如果你选择了将 <a> 元素添加到 DOM 中,现在可以移除它
							 | 
						|
								      // document.body.removeChild(a);
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    btnBrowseDcmBak2() {
							 | 
						|
								      let userName = "peis", key = "peis@123"
							 | 
						|
								      // let encodedAuthstring = btoa(this.stringToAscIIBytes(`${userName}:${key}`));
							 | 
						|
								      let encodedAuthstring = this.toBase64FromUtf8(`${userName}:${key}`);
							 | 
						|
								      console.log('encodedAuthstring', encodedAuthstring)
							 | 
						|
								      const url = 'http://192.168.4.161:8042/ohif/viewer?url=../studies/dcdc7b20-fe11f38d-f5357ad7-139cd2cd-c0bd3701/ohif-dicom-json';
							 | 
						|
								      const Authorization = 'Basic ' + encodedAuthstring;
							 | 
						|
								
							 | 
						|
								      fetch(url, {
							 | 
						|
								        headers: {
							 | 
						|
								          'Authorization': Authorization
							 | 
						|
								        }
							 | 
						|
								      })
							 | 
						|
								        .then(response => response.json())
							 | 
						|
								        .then(data => console.log(data))
							 | 
						|
								        .catch(error => console.error('Error:', error));
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    toBase64FromUtf8(str) {
							 | 
						|
								      // 使用 TextEncoder 将字符串转换为UTF-8字节序列
							 | 
						|
								      const encoder = new TextEncoder();
							 | 
						|
								      const bytes = encoder.encode(str);
							 | 
						|
								
							 | 
						|
								      // 将字节序列转换为二进制字符串
							 | 
						|
								      let binaryString = '';
							 | 
						|
								      for (let byte of bytes) {
							 | 
						|
								        binaryString += String.fromCharCode(byte);
							 | 
						|
								      }
							 | 
						|
								
							 | 
						|
								      // 使用 btoa 将二进制字符串转换为Base64
							 | 
						|
								      return btoa(binaryString);
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    //导图(上传图片)
							 | 
						|
								    btnExpPic() {
							 | 
						|
								      if (!this.doctorCheck.RegisterCheckId) {
							 | 
						|
								        this.$message.warning({ showClose: true, message: "未选中组合项目!" });
							 | 
						|
								        return;
							 | 
						|
								      }
							 | 
						|
								      this.uploadSeq++;
							 | 
						|
								      this.dialogCheckPictureUpload = true;
							 | 
						|
								    },
							 | 
						|
								    btnClean() {
							 | 
						|
								      if (!this.doctorCheck.RegisterCheckId) {
							 | 
						|
								        this.$message.warning({ showClose: true, message: "未选中组合项目!" });
							 | 
						|
								        return;
							 | 
						|
								      }
							 | 
						|
								      postapi("/api/app/PacsBusiness/DeletePacsCheckDicomDataByRegisterCheckId", {
							 | 
						|
								        registerCheckId: this.doctorCheck.RegisterCheckId
							 | 
						|
								      })
							 | 
						|
								        .then((res) => {
							 | 
						|
								          if (res.code > -1) {
							 | 
						|
								
							 | 
						|
								          }
							 | 
						|
								        });
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    // 裁图/修图/
							 | 
						|
								    btnCutPicBak() {
							 | 
						|
								
							 | 
						|
								      // 跨域了
							 | 
						|
								      this.dialogWinCutPic = true
							 | 
						|
								      this.$refs.imgCutterModal.handleOpen({
							 | 
						|
								        name: "1.png",
							 | 
						|
								        src: "http://192.168.2.74:9529/PacsCheckPictureImg/pacs/2024/8/29//3a141f59-cf4c-5e34-966d-aec0a0eea94c//2408010001_0005.jpg.jpg",
							 | 
						|
								      });
							 | 
						|
								
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    btnCutPic() {
							 | 
						|
								      if (this.checkPictures.length == 0) {
							 | 
						|
								        this.$message.warning({ showClose: true, message: "暂无可裁图片!" });
							 | 
						|
								        return;
							 | 
						|
								      }
							 | 
						|
								
							 | 
						|
								      if (!this.$peisAPI) {
							 | 
						|
								        this.$message.info({ showClose: true, message: "此功能,需要在壳客户端才可运行!" })
							 | 
						|
								        return
							 | 
						|
								      }
							 | 
						|
								      let token = window.sessionStorage.getItem("token");
							 | 
						|
								      let toOutShell = {
							 | 
						|
								        asbitemName: this.doctorCheck.asbitemName,
							 | 
						|
								        images: this.checkPictures,
							 | 
						|
								        token,
							 | 
						|
								      };
							 | 
						|
								      this.$peisAPI.imageCut(JSON.stringify(toOutShell))
							 | 
						|
								        .then(res => {
							 | 
						|
								          let lres = JSON.parse(res)
							 | 
						|
								          if (lres.code > -1) {
							 | 
						|
								            this.getCheckPictures(this.dataTransOpts.tableS.register_check.id);
							 | 
						|
								          } else {
							 | 
						|
								            console.log('裁图失败', lres.message)
							 | 
						|
								          }
							 | 
						|
								        })
							 | 
						|
								        .catch(err => {
							 | 
						|
								          console.log('裁图失败', err)
							 | 
						|
								        })
							 | 
						|
								
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    //关闭上传图片窗口
							 | 
						|
								    closePicUpload() {
							 | 
						|
								      this.dialogCheckPictureUpload = false;
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    btnSavePic() {
							 | 
						|
								      if (!this.doctorCheck.RegisterCheckId) {
							 | 
						|
								        this.$message.warning({ showClose: true, message: "未选中组合项目!" });
							 | 
						|
								        return;
							 | 
						|
								      }
							 | 
						|
								
							 | 
						|
								      let body = [];
							 | 
						|
								      // [
							 | 
						|
								      //   {
							 | 
						|
								      //     "registerCheckPictureId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",  // 新增无需传此值
							 | 
						|
								      //     "registerCheckId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
							 | 
						|
								      //     "pictureFilename": "string",
							 | 
						|
								      //     "isPrint": "string",
							 | 
						|
								      //     "displayOrder": 0
							 | 
						|
								      //   }
							 | 
						|
								      // ]
							 | 
						|
								      if (this.checkPictures.length == 0) {
							 | 
						|
								        this.$message.warning({ showClose: true, message: "没有可保存的图片数据!" });
							 | 
						|
								        return;
							 | 
						|
								      }
							 | 
						|
								
							 | 
						|
								      let checkPictures = deepCopy(this.checkPictures);
							 | 
						|
								      checkPictures.sort((a, b) => {
							 | 
						|
								        let seq1 = 0;
							 | 
						|
								        let seq2 = 0;
							 | 
						|
								        try {
							 | 
						|
								          seq1 = parseInt(a.displayOrder);
							 | 
						|
								        } catch (error) {
							 | 
						|
								          seq1 = 0;
							 | 
						|
								        }
							 | 
						|
								        try {
							 | 
						|
								          seq2 = parseInt(b.displayOrder);
							 | 
						|
								        } catch (error) {
							 | 
						|
								          seq2 = 0;
							 | 
						|
								        }
							 | 
						|
								        return seq1 - seq2;
							 | 
						|
								      });
							 | 
						|
								
							 | 
						|
								      checkPictures.forEach((e) => {
							 | 
						|
								        let item = {
							 | 
						|
								          registerCheckId: e.registerCheckId,
							 | 
						|
								          pictureFilename: e.pictureFilename,
							 | 
						|
								          pictureFileType: e.pictureFileType
							 | 
						|
								        };
							 | 
						|
								        if (e.id) item.registerCheckPictureId = e.id;
							 | 
						|
								        if (e.isPrintTrans) {
							 | 
						|
								          item.isPrint = "Y";
							 | 
						|
								        } else {
							 | 
						|
								          item.isPrint = "N";
							 | 
						|
								        }
							 | 
						|
								        body.push(item);
							 | 
						|
								      });
							 | 
						|
								
							 | 
						|
								      postapi("/api/app/registercheckpicture/UpdateRegisterCheckPictureStatusMany", body)
							 | 
						|
								        .then((res) => {
							 | 
						|
								          if (res.code > -1) {
							 | 
						|
								            this.getCheckPictures(checkPictures[0].registerCheckId);
							 | 
						|
								          }
							 | 
						|
								        });
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    // 删除图片
							 | 
						|
								    btnDelImage(index) {
							 | 
						|
								      let body = [this.checkPictures[index].id];
							 | 
						|
								      this.$confirm("此操作将永久删除该记录, 是否继续?", "提示", {
							 | 
						|
								        confirmButtonText: "是",
							 | 
						|
								        cancelButtonText: "否",
							 | 
						|
								        type: "warning",
							 | 
						|
								      })
							 | 
						|
								        .then(() => {
							 | 
						|
								          return postapi(`/api/app/registercheckpicture/deleteregistercheckpicturemany`, body);
							 | 
						|
								        })
							 | 
						|
								        .then((res) => {
							 | 
						|
								          if (res && res.code > -1) {
							 | 
						|
								            this.checkPictures.splice(index, 1);
							 | 
						|
								          }
							 | 
						|
								        })
							 | 
						|
								        .catch((err) => {
							 | 
						|
								          if (err == "cancel") {
							 | 
						|
								            this.$message.info({ showClose: true, message: "已取消" });
							 | 
						|
								          }
							 | 
						|
								        });
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    validateInteger(e, index) {
							 | 
						|
								      var regex = /^[0-9]*$/;
							 | 
						|
								      console.log(e, index);
							 | 
						|
								      if (!regex.test(e.value)) {
							 | 
						|
								        // 如果输入不满足整数条件,则清除输入框内容
							 | 
						|
								        e.value = "";
							 | 
						|
								      }
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    // 通过检查条码查询相关数据
							 | 
						|
								    onQueryByPacsNo(checkRequestNo) {
							 | 
						|
								      this.checkRequestNo = checkRequestNo
							 | 
						|
								      this.$refs['checkRequestNo'].select()
							 | 
						|
								      postapi('/api/app/PacsBusiness/GetPatientRegisterWithCheckResultByCheckRequestNo', { checkRequestNo })
							 | 
						|
								        .then(res => {
							 | 
						|
								          if (res.code > -1) {
							 | 
						|
								            // 人员信息
							 | 
						|
								            this.dataTransOpts.tableS.patient_register = res.data.patientRegisterDetail
							 | 
						|
								
							 | 
						|
								            // 组合项目
							 | 
						|
								            this.doctorCheck.RegisterCheckList = [res.data.registerCheckDetail]
							 | 
						|
								
							 | 
						|
								            // 组合项目明细
							 | 
						|
								            this.doctorCheck.checkItemList = res.data.registerCheckItemDetails
							 | 
						|
								
							 | 
						|
								            // 小结与建议
							 | 
						|
								            this.doctorCheck.checkSummaryList = res.data.registerCheckSummaryDetails
							 | 
						|
								            this.doctorCheck.checkSuggestionList = res.data.registerCheckSuggestionDetails
							 | 
						|
								
							 | 
						|
								            // 上次结果
							 | 
						|
								            this.doctorCheck.preResult = res.data.lastTimeAsbitemResultDetail
							 | 
						|
								
							 | 
						|
								            // 检查情况
							 | 
						|
								            this.doctorCheck.RegisterCheckEdit = res.data.registerCheckDetail
							 | 
						|
								
							 | 
						|
								            // 图片
							 | 
						|
								            this.checkPictures = res.data.registerCheckPictureDetails
							 | 
						|
								            this.checkPictures.forEach(e => {
							 | 
						|
								              e.isPrintTrans = e.isPrint == "Y" ? true : false
							 | 
						|
								            });
							 | 
						|
								
							 | 
						|
								            this.iframeSrc = ''
							 | 
						|
								            this.btnBrowseDcm()
							 | 
						|
								          }
							 | 
						|
								        })
							 | 
						|
								
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    onFocus(event) {
							 | 
						|
								      this.$refs['checkRequestNo'].select()
							 | 
						|
								    }
							 | 
						|
								  },
							 | 
						|
								
							 | 
						|
								  //监听事件
							 | 
						|
								  watch: {
							 | 
						|
								    //检查项目未切换换时 也可以强制刷新数据
							 | 
						|
								    "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}`);
							 | 
						|
								        if (newVal != oldVal) this.getCheckPictures(this.dataTransOpts.tableS.register_check.id);
							 | 
						|
								      }
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								  },
							 | 
						|
								};
							 | 
						|
								</script>
							 | 
						|
								<style scoped>
							 | 
						|
								.query {
							 | 
						|
								  margin-left: 10px;
							 | 
						|
								  margin-right: 2px;
							 | 
						|
								  padding: 1px 1px;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								.btnClass {
							 | 
						|
								  margin: 2px 2px 0;
							 | 
						|
								  height: 26px;
							 | 
						|
								  min-width: 40px;
							 | 
						|
								  padding: 5px 5px;
							 | 
						|
								  /*原始 默认值 10px 10px */
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								/* 强制出现滚动条 */
							 | 
						|
								::-webkit-scrollbar {
							 | 
						|
								  height: 0.5rem;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								::-webkit-scrollbar-thumb {
							 | 
						|
								  background-color: #ccc;
							 | 
						|
								  border-radius: 0.25rem;
							 | 
						|
								}
							 | 
						|
								</style>
							 |