zoukankan      html  css  js  c++  java
  • 2020-11-25床头卡共用类逻辑(私用)

    2020-11-25 10:28
    床头卡不会自己显示,由安卓调用一个新的webview,加载显示页面,调用前端方法getData,传递响应参数,查询显示数据。
    主要功能点:
    • 1、暴露 getData 方法供安卓调用(在各自页面暴露,并且初始化回调方法)
    • 2、优先处理床位号(在各自页面处理)
    • 3、从安卓端获取病人信息(主要使用病人id)
    • 如果有病人id,根据病人id查询病人数据
    • 如果没有,使用床位+护理单元查询病人数据
    • 查出数据后保存给安卓
    • 4、获取系统配置信息(用户患者姓名保护、二维码显示等)
    • 5、查询护理标签、患者标签并处理显示,当前患者标签主要是调整过敏、饮食的字体颜色和背景色
    • 6、清空数据

    使用关键代码:
    1、引入:

    <script src="bedSideCardAssets/lib/jquery-3.3.1.min.js"></script>
    <script src="bedSideCardAssets/js/DealCard.js"></script>
    

      

    2、初始化实例(在各自页面写):

    // 初始化床头卡处理实例
    var cardDealFun =  new DealCard()
    cardDealFun.dealInfoDataCallback = (data)=>renderData(data) // 初始化页面显示回调函数
    cardDealFun.showLabelCallback = ()=>renderLabel() // 护理标签显示回调函数
    cardDealFun.clearPageCallback = ()=>clearInfo() // 清除页面显示回调函数
    cardDealFun.renderQrCodeCallback = (text)=>renderQrCode(text) // 初始化二维码
    cardDealFun.GuoandYinshiCallback = (data)=>GuoandYinshi(data) // 病患标签(过敏、饮食)处理回调函数
    3、暴露getData方法

    //暴漏给安卓调用
    window.getData = function (bedno, ucode, etnType, optype, jsonData) {
        // 处理床位号的方法
        renderBedName(bedno)
        cardDealFun.init(bedno, ucode, etnType, optype, jsonData)
    }
    4、处理类完整代码:
    /**
     *床头卡请求数据、处理数据统一类:
     * 请求病人信息、处理病人信息、请求标签、处理标签的方法统一
     * 再有床头卡,直接引入使用
     *
     * 床头卡处理逻辑:
     * 1、暴露 getData 方法供安卓调用(在各自页面暴露,并且初始化回调方法)
     * 2、优先处理床位号(在各自页面处理)
     * 3、从安卓端获取病人信息(主要使用病人id)
     *    如果有病人id,根据病人id查询病人数据
     *    如果没有,使用床位+护理单元查询病人数据
     *    查出数据后保存给安卓
     * 4、获取系统配置信息(用户患者姓名保护、二维码显示等)
     * 5、清空数据
     *
     *
     * 使用方式(在各自页面书写):
     *  // 初始化床头卡处理实例
       var cardDealFun =  new DealCard()
       cardDealFun.dealInfoDataCallback = (data)=>renderData(data) // 初始化页面显示回调函数(renderData是自己页面定义的初始化页面的方法)
       cardDealFun.showLabelCallback = ()=>renderLabel() // 护理标签显示回调函数(renderLabel是自己页面定义的显示标签的方法)
       cardDealFun.clearPageCallback = ()=>clearInfo() // 清除页面显示回调函数(clearInfo是自己页面定义的清除页面显示内容的方法)
       cardDealFun.showRoomInfoCallback = (data)=>showRoomInfo(data) // 处理显示科主任、护士长、护理组长、医疗组长回调函数(showRoomInfo是各自页面定义的显示“科主任、护士长、护理组长、医疗组长”的方法)
    
     //暴漏给安卓调用
      window.getData = function (bedno, ucode, etnType, optype, jsonData) {
            // 处理床位号的回调方法
            renderBedName(bedno)
            cardDealFun.init(bedno, ucode, etnType, optype, jsonData)
        }
     *
     */
    class DealCard {
      public patientId:string = ''; //病人id
      public bedname:string = ''; //床位名
      public deptId:string = ''; //科室id
      public orgId:string = ''; //orgId
      public patientInfo:any = {
        patientIn: {},
        nurseLevelConfig: {}
      } // 病人信息
      public isFilterName:boolean = false; //是否床头卡患者姓名保护
      public labelInfo:any = []; //所有标签数据
      public cardPatientlabel:any = []; //患者标签接口查出来的数据
      public patientLabel:any = []; //该病人的标签
      public API_patidntid:string =  '/bnms/app-bn/patient-in-list/by-patient-in-and-info'; //根据病患id查询的接口
      public API_deptbedname:string =  '/bnms/app-bn/patient-in-list/by-dept-id-bed-name-one-new'; //根据床位号和护理单元查询的接口
      public API_NursingLabelInfo:string =  '/bnms/app-bn/patient-in-view-list/card-nursing-label'; // 获取护理标签数据
      public API_CardPatientLabelInfo:string =  '/bnms/app-bn/patient-in-view-list/card-patient-label'; // 获取患者标签数据
      public API_roomInfo:string =  '/hsms/app-hs/nursing-group/roomInfo'; // 获取房间科主任、护士长、护理组长、医疗组长数据
      public dealInfoDataCallback:any =  null; // 处理显示页面数据回调函数
      public showLabelCallback:any =  null; // 处理显示标签回调函数
      public showRoomInfoCallback:any =  null; // 处理显示科主任、护士长、护理组长、医疗组长回调函数
      public clearPageCallback:any =  null; // 清除页面显示回调函数
      public renderQrCodeCallback:any =  null; // 初始化二维码回调函数
      public showPatLabelCallback:any =  null; // 病患标签处理回调函数
      public GuoandYinshiCallback:any =  null; // 病患标签(过敏、饮食)处理回调函数
    
      public init(bedno:string, ucode:string, etnType:string, optype:string, jsonData:any){
        console.log(bedno, ucode, etnType, optype, jsonData)
        const _this:any = this
    
        this.bedname = bedno
        this.patientId = ''
        if (ucode)this.deptId = ucode
    
        let patientInfo:any = null
        try {
          //从安卓获取用户信息
          // @ts-ignore
          if (window.android && window.android.getPatientInfo) patientInfo = window.android.getPatientInfo()
    
          //只是判断是否有用户信息
          if (patientInfo !== null && patientInfo !== '') patientInfo = JSON.parse(patientInfo)
    
          // 获取系统配置
          let Sys = ""
          // @ts-ignore
          if (window.android && window.android.getSystemConfig) Sys = window.android.getSystemConfig()
    
          //系统配置仅为了获取是否姓名脱敏
          // 中心医院定制需要显示二维码
          if (Sys !== '' && Sys !== null) {
            var J = JSON.parse(Sys);
            console.log('床头卡sys', J);
            this.isFilterName = J.isFilterNameBedHead
            // 是否初始化二维码
            if (J.QRCodeBedSide &&
              J.QRCodeBedSide.state &&
              J.QRCodeBedSide.text !== '' &&
              J.QRCodeBedSide.text !== null &&
              _this.renderQrCodeCallback &&
              _this.renderQrCodeCallback!=='' &&
              _this.renderQrCodeCallback !== null
            ) _this.renderQrCodeCallback(J.QRCodeBedHead.text)
    
          }
        } catch (e) {
          console.log("调用安卓方法,获取病患信息并解析。解析系统配置数据。有错误日志!!!!!!");
        }
    
        //记录病人id
        if (patientInfo && patientInfo !== null)  this.patientId = patientInfo.patientId
    //数据拉取
        if (Number(optype) === 1) {
          // 页面重载:根据病人id(登陆了) 或者 护理单元+床位名(没登录) 查询
          this.getpatientInfoAPI()
        } else if (Number(optype) === 2) {
          //处理缓存数据
          console.log('渲染:缓存数据');
          this.dealInfoData(JSON.parse(jsonData))
        }
      }
      // 查询接口
      private getpatientInfoAPI(){
        const _this:any = this
        if (_this.patientId && _this.patientId !== null && _this.patientId !== '') {
          // 如果有病患信息,根据病患id查
          // @ts-ignore
          $.ajax({
            type: "GET",
            url: _this.API_patidntid, //MngUser/GetCardInfo
            data: {
              patientId: _this.patientId
            },
            async: false,
            success: function (data:any) {
              _this.dealInfoData(data)
            },
            error: function () {
            }
          })
        } else {
          // 如果没有病患id,根据 护理单元+床位名 查
          // @ts-ignore
          $.ajax({
            type: "GET",
            url: _this.API_deptbedname, //MngUser/GetCardInfo
            data: {
              deptId: _this.deptId,
              bedName: _this.bedname
            },
            async: false,
            success: function (data:any) {
              _this.dealInfoData(data)
            },
            error: function () {
            }
          })
        }
      }
      /**
       * 处理数据显示在页面上,处理方法在各自页面定义
       * @param data
       */
      private dealInfoData(data:any) {
        const _this:any = this
        if(data.data === null){
          _this.clearPageCallback()
          return
        }
        //回写给安卓数据,需要JSON字符串形式
        // @ts-ignore
        if (window.android && window.android.getAndroidData) {
          if (data.data && data.data !== null) data.data.databy = 'patientId';
          // @ts-ignore
          window.android.getAndroidData(JSON.stringify(data));
        }
        if (data.data) {
          _this.orgId = data.data.patientSelectDtos[0].patientIn.orgId
          _this.patientInfo = data.data.patientSelectDtos[0]
        }
    
        // 回调显示页面
        if (_this.dealInfoDataCallback !== null && _this.dealInfoDataCallback)_this.dealInfoDataCallback(data)
      }
      // 获取护理标签数据
      public getBedCardLabel() {
        const _this:any = this
        // @ts-ignore
        $.ajax({
          type: "GET",
          url: _this.API_NursingLabelInfo, //MngUser/GetCardInfo
          data: {
            deptId: _this.deptId,
            orgId: _this.orgId
          },
          async: false,
          success: function (data:any) {
            _this.labelInfo = data.data;
            _this.dealLabelNurs()
          },
          error: function () {
          }
        })
      }
    
      /**
       * 获取患者标签
       */
      public getCartPatientLabel(){
        const _this:any = this
        // @ts-ignore
        $.ajax({
          type: "GET",
          url: _this.API_CardPatientLabelInfo,
          data: {
            deptId: _this.deptId
          },
          async: false,
          success: function (data:any) {
            _this.cardPatientlabel = data.data;
            if(_this.showPatLabelCallback && _this.showPatLabelCallback !==null)_this.showPatLabelCallback()
    
            // 处理过敏和饮食的字体颜色和背景色
            if(_this.GuoandYinshiCallback && _this.GuoandYinshiCallback !==null){
              let config:any = {
                allergy:null, // 过敏
                diet:null, // 饮食
              }
              for(let i = 0 ; i < _this.cardPatientlabel.length ; i++){
                let v = _this.cardPatientlabel[i]
                if(!v || v.labelShowInfo === '' || v.labelShowInfo === null)continue
                if(v.labelSql === 'diet' || v.labelSql === 'allergy'){
                  let labelShowInfo = JSON.parse(v.labelShowInfo)
                  if(labelShowInfo.item.length > 0 && labelShowInfo.item[0] && labelShowInfo.item[0]['config'])
                  config[v.labelSql] = labelShowInfo.item[0]['config']
                }
              }
              _this.GuoandYinshiCallback(config)
            }
          },
          error: function () {
          }
        })
      }
      /**
       * 获取房间科主任、护士长、护理组长、医疗组长数据
       */
      public getRoomInfo(){
        const _this:any = this
        try{
          // @ts-ignore
          let roomId:string|null = JSON.parse(localStorage.getItem("deviceInfo")).ROOM_ID
          // @ts-ignore
          $.ajax({
            type: "GET",
            url: _this.API_roomInfo,
            data: {
              deptId: _this.deptId,
              roomId: roomId
            },
            async: false,
            success: function (data:any) {
              if(_this.showRoomInfoCallback && _this.showRoomInfoCallback!==null)_this.showRoomInfoCallback(data)
            },
            error: function () {
            }
          })
        }catch (e) {
          console.log('获取房间科主任、护士长、护理组长、医疗组长数据中报错了', e)
        }
      }
      /**
       * 处理护理标签数据
       * 根据患者信息返回的患者标签数据 (patientInfo.patientInfoDtos = patientInListData) 和 查询的护理标签数据(labelInfo)进行匹配病患标签
       * 匹配规则:
       * 1、labelInfo[i]['labelShowInfo'] !==null ,非空
       * 2、labelInfo[i]['dataSources'] === 3
       需要用labelInfo[i]['labelSql']去比对患者基本信息接口中的 patientInListData[i]['labelSql'] 数据,匹配到之后,
       再匹配patientInListData[i]['infoValue']不为空 AND patientInListData[i]['labelType'] === 201
       * 3、labelInfo[i]['dataSources'] === 1 || labelInfo[i]['dataSources'] === 2 || labelInfo[i]['dataSources'] === 4
       需要匹配 labelInfo[i]['labelValue'] 是否包含这个病患的床位(bedName)
       *
       * */
      private dealLabelNurs() {
        const _this:any = this
    
        _this.patientLabel = []
    
        for(let i = 0 ; i < _this.labelInfo.length ;i++){
          const v = _this.labelInfo[i]
          if (v.labelShowInfo !== null && v.labelShowInfo !== "") {
            if (Number(v.dataSources) === 3) {
              for(let ii = 0 ; ii < _this.patientInfo.patientInfoDtos.length ; ii++){
                let v2 = _this.patientInfo.patientInfoDtos[ii]
                if (v2.labelSql === v.labelSql && v2.infoValue !== '' && v2.labelType === "201") {
                  // 过滤掉可能重复的数据
                  const j = {
                    labelId: v.labelId,
                    labelName: v.labelName,
                    type: v.labelShowType,
                    img: (!v.labelShowInfo || v.labelShowInfo === '' || v.labelShowInfo === null || v.labelShowInfo.indexOf('|') > -1) ? './bedSideCardAssets/car2.png' : v.labelShowInfo,
                    labelShowInfo: v.labelShowInfo
                  };
                  _this.patientLabel.push(j);
                }
              }
            } else if (
              Number(v.dataSources) === 1 ||
              Number(v.dataSources) === 2 ||
              Number(v.dataSources) === 4
            ) {
              if (v.labelValue.indexOf(_this.bedName) > -1) {
                const j = {
                  labelId: v.labelId,
                  labelName: v.labelName,
                  type: v.labelShowType,
                  img: (!v.labelShowInfo || v.labelShowInfo === '' || v.labelShowInfo === null || v.labelShowInfo.indexOf('|') > -1) ? './bedSideCardAssets/car2.png' : v.labelShowInfo,
                  labelShowInfo: v.labelShowInfo
                };
                _this.patientLabel.push(j);
              }
            }
          }
        }
    
        if (_this.showLabelCallback && _this.showLabelCallback !== null)_this.showLabelCallback()
      }
    }
    5、一个床头卡页面的完整实例代码:
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width,initial-scale=1.0">
        <title>床头卡</title>
        <script src="bedSideCardAssets/lib/jquery-3.3.1.min.js"></script>
        <script src="bedSideCardAssets/js/DealCard.js"></script>
        <script>
            (function () {
                var styleN = document.createElement("style");
                var width = document.documentElement.clientWidth / 1024;
                styleN.innerHTML = 'html{font-size:' + width + 'px!important}';
                document.head.appendChild(styleN);
            })();
        </script>
        <style>
            body {
                background-image: linear-gradient(to right, #B6D6FE, #556EEC);
            }
    
            * {
                font-family: '黑体';
            }
    
            .main-view {
                position: absolute;
                top: 0;
                left: 0;
                bottom: 0;
                right: 0;
            }
    
            .top-view {
                height: 275rem;
                 100%;
                box-sizing: border-box;
                padding: 15rem 25rem 0 25rem;
                position: absolute;
                top: 0;
                left: 0;
                z-index: 10;
            }
    
            .top {
                position: relative;
                 100%;
                height: 100%;
                background-image: linear-gradient(to right, #fff, #E6F1FF);
                border-radius: 25rem;
                border-bottom-left-radius: 75rem;
                box-shadow: 0 0 7rem 5rem rgba(99, 99, 99, 0.2);
                display: flex;
            }
    
            .top-left {
                 260rem;
                height: 260rem;
                background-image: linear-gradient(to right top, #536CEC, #54A3FC);
                border-top-right-radius: 75rem;
                border-bottom-left-radius: 75rem;
                display: flex;
                justify-content: center;
                align-items: center;
                font-size: 230rem;
                color: #fff;
                font-weight: bold;
                font-family: "黑体";
            }
    
            .top-right {
                flex: 1;
                display: flex;
                flex-direction: column;
                padding: 5rem 0;
                box-sizing: border-box;
            }
    
            .top-right-view,
            .top-right-view2,
            .top-right-view3 {
                 100%;
                flex: 1;
                display: flex;
                box-sizing: border-box;
                align-items: center;
            }
    
            .top-right-view {
                padding: 40rem 0 0 25rem;
            }
    
            .top-right-view2 {
                flex: 0.8 !important;
                padding: 0 15rem;
                box-sizing: border-box;
                align-items: flex-end;
            }
    
            .top-right-name {
                font-size: 100rem;
                font-weight: bold;
                color: #536bec;
                max- 430rem;
                padding-top: 2rem;
            }
    
            .top-right-info-view {
                padding-left: 10rem;
                padding-top: 0rem;
                display: flex;
                flex-direction: column;
            }
    
            .top-right-level {
                color: #fff;
                background-color: #ccc;
                font-size: 30rem;
                border-top-left-radius: 50rem;
                border-top-right-radius: 50rem;
                border-bottom-right-radius: 50rem;
                display: flex;
                justify-content: center;
                align-items: center;
                padding: 2rem 15rem;
                margin-bottom: 10rem;
                margin-right: auto;
                visibility: hidden;
            }
    
            .top-right-other {
                display: flex;
                align-items: center;
            }
    
            .top-right-sex {
                font-size: 30rem;
            }
    
            .top-right-time {
                font-size: 30rem;
                margin-left: 10rem;
            }
    
            .top-right-text {
                font-size: 30rem;
            }
    
            .top-right-text2 {
                font-size: 30rem;
                margin-left: 40rem;
            }
    
            .top-right-view3-card {
                background-color: #D7E0F2;
                min- 465rem;
                height: 50rem;
                border-top-right-radius: 50rem;
                border-bottom-right-radius: 50rem;
                display: flex;
                align-items: center;
                padding: 0 30rem 0 15rem;
            }
    
            .top-right-view3-card-text {
                display: flex;
                align-items: flex-end;
            }
    
            .top-right-view3-card-text-key {
                font-size: 25rem;
                color: #666;
                margin-bottom: 2rem;
            }
    
            .top-right-view3-card-text-value {
                font-size: 30rem;
                margin-left: 10rem;
            }
    
            .top-right-doct {
                margin-right: 25rem;
            }
    
            .left-auto {
                margin-left: auto;
            }
    
            .bottom-view {
                position: absolute;
                top: 90rem;
                left: 15rem;
                bottom: 16rem;
                right: 15rem;
                box-sizing: border-box;
                padding: 190rem 0 0 0;
                z-index: 5;
                background-color: #fff;
                border-radius: 25rem;
                box-shadow: 0 0 7rem 5rem rgba(99, 99, 99, 0.2);
                overflow: hidden;
            }
    
            .bottom {
                height: 100%;
                display: flex;
                flex-direction: column;
                position: relative;
            }
    
            .bottom-background {
                position: absolute;
                bottom: 0;
                left: 0;
                 100%;
            }
    
            .bottom-view1 {
                flex: 1;
                overflow: hidden;
                display: flex;
            }
    
            .bottom-view1 marquee {
                height: 100%;
            }
    
            .bottom-view1-icon-view {
                 65rem;
                display: flex;
                align-items: center;
            }
    
            .bottom-view1-icon-left {
                 100%;
                height: 60rem;
                background-image: linear-gradient(to top, #CDE2FF, #fff);
                display: flex;
                justify-content: center;
                align-items: center;
                font-size: 35rem;
                color: #526BEA;
                border-top-right-radius: 15rem;
                border-bottom-right-radius: 15rem;
            }
    
            .bottom-view1-icon-right {
                 100%;
                height: 60rem;
                background-image: linear-gradient(to top, #CDE2FF, #fff);
                display: flex;
                justify-content: center;
                align-items: center;
                font-size: 35rem;
                color: #526BEA;
                border-top-left-radius: 15rem;
                border-bottom-left-radius: 15rem;
            }
    
            .bottom-view1-text-view {
                flex: 1;
                display: flex;
                justify-content: center;
                align-items: center;
                font-size: 35rem;
                padding: 10rem 20rem;
                box-sizing: border-box;
            }
    
            .bottom-view1-line-view {
                 1rem;
                display: flex;
                align-items: center;
            }
    
            .bottom-view1-line-view div {
                height: 50rem;
                 100%;
                background-color: #4FA7BF;
            }
    
            .bottom-view2 {
                flex: 1;
                display: flex;
                align-items: center;
                padding: 0 5rem;
                box-sizing: border-box;
            }
    
            .bottom-list-view {
                display: flex;
                align-items: center;
            }
    
            .bottom-scroll-view {
                position: relative;
                left: 0;
                 auto;
                min- 0;
                flex-shrink: 0;
                display: flex;
            }
    
            .bottom-line {
                height: 1rem;
            }
    
            .bottom-item {
                 180rem;
                position: relative;
                margin: 0 8rem;
            }
    
            .bottom-item img {
                 100%;
            }
    
            .bottom-item div {
                position: absolute;
                 100%;
                bottom: 20rem;
                left: 0;
                text-align: center;
                font-size: 25rem;
            }
    
            #inTime {
                font-size: 30rem;
                margin-right: 10rem;
            }
    
            #patientAge,
            #inpNo,
            #doctorName,
            #nurseName {
                font-size: 30rem;
            }
    
            #bottom-scroll-view-marquee {
                display: none;
            }
        </style>
    </head>
    
    <body>
        <div class="main-view">
            <div class="top-view">
                <div class="top">
                    <div class="top-left" id="bedName">..</div>
                    <div class="top-right">
                        <div class="top-right-view">
                            <div class="top-right-name" id="patientName">..</div>
                            <div class="top-right-info-view">
                                <div class="top-right-level" id="nurseLevel">..</div>
                                <div class="top-right-other">
                                    <div class="top-right-sex" id="sex">..</div>
                                    <div class="top-right-time" id="patientAge">..</div>
                                </div>
                            </div>
                        </div>
                        <div class="top-right-view2">
                            <div class="top-right-text">住院号:<span id="inpNo">..</span></div>
                            <div class="top-right-text2"><span id="inTime">..</span>入院</div>
                        </div>
                        <div class="top-right-view3">
                            <div class="top-right-view3-card">
                                <div class="top-right-view3-card-text top-right-doct">
                                    <div class="top-right-view3-card-text-key">主管医生</div>
                                    <div class="top-right-view3-card-text-value" id="doctorName">..</div>
                                </div>
                                <div class="top-right-view3-card-text left-auto">
                                    <div class="top-right-view3-card-text-key">责任护士</div>
                                    <div class="top-right-view3-card-text-value" id="nurseName">..</div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="bottom-view">
                <div class="bottom">
                    <img class="bottom-background" src="./bedSideCardAssets/bottomBack.jpg" alt="">
                    <div class="bottom-view1">
                        <div class="bottom-view1-icon-view">
                            <div class="bottom-view1-icon-left">敏</div>
                        </div>
                        <div class="bottom-view1-text-view" id="allergy">..</div>
                        <div class="bottom-view1-line-view">
                            <div></div>
                        </div>
                        <div class="bottom-view1-text-view" id="diet">..</div>
                        <div class="bottom-view1-icon-view">
                            <div class="bottom-view1-icon-right">食</div>
                        </div>
                    </div>
                    <img class="bottom-line" src="./bedSideCardAssets/line.png" alt="">
                    <div class="bottom-view2">
                        <marquee behavior="scroll" direction="left" scrollamount="6" scrolldelay="60"
                            id="bottom-scroll-view-marquee">
                            <div class="bottom-list-view">
                                <div class="bottom-scroll-view">
                                    <!-- <div class="bottom-item"><img src="./bedSideCardAssets/car2.png" alt="">
                                        <div>防跌倒</div>
                                    </div>
                                    <div class="bottom-item"><img src="./bedSideCardAssets/car2.png" alt="">
                                        <div>防跌倒</div>
                                    </div>
                                    <div class="bottom-item"><img src="./bedSideCardAssets/car2.png" alt="">
                                        <div>防跌倒防跌倒</div>
                                    </div>
                                    <div class="bottom-item"><img src="./bedSideCardAssets/car2.png" alt="">
                                        <div>防跌倒</div>
                                    </div>
                                    <div class="bottom-item"><img src="./bedSideCardAssets/car2.png" alt="">
                                        <div>防跌倒</div>
                                    </div>
                                    <div class="bottom-item"><img src="./bedSideCardAssets/car2.png" alt="">
                                        <div>防跌倒</div>
                                    </div>
                                    <div class="bottom-item"><img src="./bedSideCardAssets/car2.png" alt="">
                                        <div>防跌倒</div>
                                    </div>
                                    <div class="bottom-item"><img src="./bedSideCardAssets/car2.png" alt="">
                                        <div>防跌倒防跌倒</div>
                                    </div>
                                    <div class="bottom-item"><img src="./bedSideCardAssets/car2.png" alt="">
                                        <div>防跌倒</div>
                                    </div>
                                    <div class="bottom-item"><img src="./bedSideCardAssets/car2.png" alt="">
                                        <div>防跌倒</div>
                                    </div> -->
                                </div>
                            </div>
                        </marquee>
                        <div class="bottom-scroll-view" id="bottom-scroll-view">
                            <!-- <div class="bottom-item"><img src="./bedSideCardAssets/car2.png" alt="">
                                <div>防跌倒</div>
                            </div>
                            <div class="bottom-item"><img src="./bedSideCardAssets/car2.png" alt="">
                                <div>防跌倒</div>
                            </div>
                            <div class="bottom-item"><img src="./bedSideCardAssets/car2.png" alt="">
                                <div>防跌倒防跌倒</div>
                            </div>
                            <div class="bottom-item"><img src="./bedSideCardAssets/car2.png" alt="">
                                <div>防跌倒</div>
                            </div>
                            <div class="bottom-item"><img src="./bedSideCardAssets/car2.png" alt="">
                                <div>防跌倒</div>
                            </div> -->
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </body>
    
    </html>
    <script>
        document.querySelectorAll('.top-left')[0].addEventListener('click', function () {
            window.history.back();
        })
    
        // 初始化床头卡处理实例
        var cardDealFun =  new DealCard()
        cardDealFun.dealInfoDataCallback = (data)=>renderData(data) // 初始化页面显示回调函数
        cardDealFun.showLabelCallback = ()=>renderLabel() // 护理标签显示回调函数
        cardDealFun.clearPageCallback = ()=>clearInfo() // 清除页面显示回调函数
        cardDealFun.GuoandYinshiCallback = (data)=>GuoandYinshi(data) // 病患标签(过敏、饮食)处理回调函数
        //暴漏给安卓调用
        window.getData = function (bedno, ucode, etnType, optype, jsonData) {
            // 处理床位号的回调方法
            if (bedno) {
                renderBedName(bedno); //床号
            }
            cardDealFun.init(bedno, ucode, etnType, optype, jsonData)
        }
    
        //数据绑定到页面
        function renderData(resData) {
            if (resData.data) {
                var data = resData.data.patientSelectDtos[0].patientIn;
    
                renderPatientName(data.patientName); //病人姓名
                document.getElementById('sex').innerText = data.sex; //性别
                document.getElementById('patientAge').innerText = data.patientAge;    //年龄
                document.getElementById('inpNo').innerText = data.inpNo; //住院号
                var _inTime = new Date(data.inTime); //入院日期
                document.getElementById('inTime').innerText = _inTime.getFullYear() + '-' + (_inTime.getMonth() + 1) + '-' + _inTime.getDate();
                document.getElementById('doctorName').innerText = data.doctorName || '暂无'; //主管医生
                document.getElementById('nurseName').innerText = data.nurseName || '暂无'; //责任护士
                renderAllergy(data.allergy); //过敏
                renderDiet(data.diet); //饮食
    
                //护理等级绑定
                var levelConfig = resData.data.patientSelectDtos[0].nurseLevelConfig;
                var levelDom = document.getElementById('nurseLevel');
                if (levelConfig) {
                    levelDom.style.visibility = "";
                    levelDom.style.color = levelConfig.fontColor;
                    levelDom.style.backgroundColor = levelConfig.backgroundColor;
                    levelDom.innerText = levelConfig.nurseLevelName;
                } else levelDom.style.visibility = "hidden";
    
                // 获取护理标签
                cardDealFun.getBedCardLabel()
                // 获取患者标签
                cardDealFun.getCartPatientLabel()
            } else {
                //清空数据显示
                clearInfo();
            }
        }
    
        //清空数据显示
        function clearInfo() {
            document.getElementById('bottom-scroll-view').innerHTML = ""; //护理标签
            document.getElementById('patientName').innerHTML = "暂无"; //病人姓名
            document.getElementById('sex').innerText = ''; //性别
            document.getElementById('patientAge').innerText = '';    //年龄
            document.getElementById('inpNo').innerText = '暂无'; //住院号
            document.getElementById('inTime').innerText = ''; //入院日期
            document.getElementById('doctorName').innerText = '暂无'; //主管医生
            document.getElementById('nurseName').innerText = '暂无'; //责任护士
            document.getElementById('allergy').innerText = "暂无"; //过敏
            document.getElementById('diet').innerText = "暂无"; //饮食
            document.getElementById('nurseLevel').style.visibility = "hidden"; //护理等级
            $('#allergy,#diet').css({
                'color':'#000',
                'background-color':'#fff'
            })
        }
    
        //床号渲染
        function renderBedName(_bedName) {
            var _dom = document.getElementById('bedName');
            _dom.innerText = _bedName;
            //最长要处理14位
            if (_bedName.length == 3) _dom.style.fontSize = "170rem";
            else if (_bedName.length == 4) _dom.style.fontSize = "120rem";
            else if (_bedName.length == 5) _dom.style.fontSize = "100rem";
            else if (_bedName.length == 6) _dom.style.fontSize = "80rem";
            else if (_bedName.length == 7) _dom.style.fontSize = "70rem";
            else if (_bedName.length > 7) {
                _dom.style.fontSize = "70rem";
                _dom.style.wordBreak = "break-all";
                _dom.style.textAlign = "center";
            }
        }
    
        //病人姓名渲染
        function renderPatientName(name) {
            //脱敏
            if (cardDealFun.isFilterName) {
                if (name.length <= 1) return;
                else if (name.length == 2) name = name.substr(0, 1) + '*';
                else {
                    var _n = name.substr(0, 1);
                    var _count = 0;
                    for (var i = 0; i < name.length - 2; i++) {
                        //如果有3个星,就不加了
                        if (_count > 2) break;
                        _n += '*';
                        _count++;
                    }
                    _n += name.substr(name.length - 1, 1);
                    name = _n;
                }
            }
    
            var _dom = document.getElementById('patientName');
            _dom.innerText = name;
    
            if (cardDealFun.isFilterName) {
                //脱敏可以不用滚动
    
            } else {
                //超出5个字就滚动
                if (name.length > 4) {
                    _dom.innerHTML = '<marquee behavior="scroll" direction="left" scrollamount="4" scrolldelay="60">' + name + '</marquee>';
                } else {
    
                }
            }
        }
    
        //过敏渲染
        function renderAllergy(data) {
            if (data) {
                //大于26个字符开始滚动
                if (data.length <= 26) document.getElementById('allergy').innerText = data || "暂无";
                else document.getElementById('allergy').innerHTML = '<marquee behavior="scroll" direction="up" scrollamount="2">' + data + '</marquee>';
            } else {
                document.getElementById('allergy').innerText = data || "暂无";
            }
        }
    
        //饮食渲染
        function renderDiet(data) {
            if (data) {
                //大于26个字符开始滚动
                if (data.length <= 26) document.getElementById('diet').innerText = data || "暂无";
                else document.getElementById('diet').innerHTML = '<marquee behavior="scroll" direction="up" scrollamount="2">' + data + '</marquee>';
            } else {
                document.getElementById('diet').innerText = data || "暂无";
            }
        }
        /**
         * 病患标签处理(过敏、饮食)
         */
        function GuoandYinshi(data){
            console.log('data---',data)
            if(data.allergy !== null){ //过敏
                $('#allergy').css({
                    'color':data.allergy.fontColor,
                    'background-color':data.allergy.backGroundColor
                })
            }
            if(data.diet !== null){ // 饮食
                $('#diet').css({
                    'color':data.diet.fontColor,
                    'background-color':data.diet.backGroundColor
                })
            }
        }
    
        //护理标签获取并渲染
        //请求需要参数patientIn.deptId、patientIn.orgId,所以需要在请求回调中调用
        function renderLabel() {
            const labelList = cardDealFun.patientLabel
            var domView = document.getElementById('bottom-scroll-view');
            var _marq = document.getElementById('bottom-scroll-view-marquee');
            var _sv = _marq.getElementsByClassName('bottom-scroll-view')[0];
            _sv.innerHTML = '';
            domView.innerHTML = '';
    
            //渲染
            //如果标签长度超过6个,准备启动动画展示
            if (labelList.length > 6) {
                domView.style.display = "none";
                _marq.style.display = "block";
    
                for (var i = 0; i < labelList.length; i++) {
                    _sv.innerHTML += '<div class="bottom-item"><img src="' + labelList[i].img + '" alt=""><div>' + labelList[i].labelName + '</div></div>';
                }
    
            } else {
                _marq.style.display = "none";
                domView.style.display = 'flex';
    
                for (var i = 0; i < labelList.length; i++) {
                    domView.innerHTML += '<div class="bottom-item"><img src="' + labelList[i].img + '" alt=""><div>' + labelList[i].labelName + '</div></div>';
                }
            }
        }
    </script>

  • 相关阅读:
    RHEL6 搭建 keepalived + lvs/DR 集群
    LeetCode 104. Maximum Depth of Binary Tree
    JAVA面试精选【Java基础第二部分】
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    为什么支付宝不怕你欠债?
  • 原文地址:https://www.cnblogs.com/pangchunlei/p/14034518.html
Copyright © 2011-2022 走看看