jazz
2024-01-03 12a2f18a968c29b3502a50c4f0a9f49c27c9f3f6
update_202401031910_单个治疗室多个客人的逻辑编写v2
4个文件已修改
322 ■■■■■ 已修改文件
src/components/xio_room_guest_info_box/index.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/config/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/room/detail.vue 144 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/jun_login.js 160 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/xio_room_guest_info_box/index.vue
@@ -34,14 +34,14 @@
      <div v-if="occupyInfoView.ciq" class="ciq">({{ occupyInfoView.ciq }})</div>
      <div v-if="occupyInfoView.startTime" class="time">安排治疗时间:{{ occupyInfoView.startTime }} 开始</div>
    </div>
    <div v-show="roomInfo" class="room_left_btn_box flex flex-ver" style="margin-top: 105px;">
      <div v-show="roomInfo.status == 0" class="room_left_btn_box__item flex flex-1 flex-center b-green btn_ani" @click="setStatus('敷麻中', 4, occupyInfoView)">开始敷麻</div>
      <div v-show="roomInfo.status == 0" class="room_left_btn_box__item flex flex-1 flex-center green btn_ani" style="margin-right: 0;" @click="setStatus('使用中', 1, occupyInfoView)">开始治疗</div>
      <div v-show="roomInfo.status == 4" class="room_left_btn_box__item flex flex-center green btn_ani" @click="setStatus('使用中', 1, occupyInfoView)">开始治疗</div>
      <div v-show="roomInfo.status == 1" class="room_left_btn_box__item flex-1 flex flex-center yellow btn_ani" @click="setStatus('客人休息', 2, occupyInfoView)">客人休息</div>
      <div v-show="roomInfo.status == 1" class="room_left_btn_box__item flex-1 flex flex-center gray btn_ani" style="margin-right: 0;" @click="setStatus('打扫中', 3, occupyInfoView)">通知打扫</div>
      <div v-show="roomInfo.status == 2" class="room_left_btn_box__item flex flex-center green btn_ani" @click="setStatus('打扫中', 3, occupyInfoView)">通知打扫</div>
      <div v-show="roomInfo.status == 3" class="room_left_btn_box__item flex flex-center green btn_ani" @click="setStatus('空闲', 0, occupyInfoView)">结束打扫</div>
    <div v-show="occupyInfoView" class="room_left_btn_box flex flex-ver" style="margin-top: 105px;">
      <div v-show="occupyInfoView.treatRoomStatus == 0" class="room_left_btn_box__item flex flex-1 flex-center b-green btn_ani" @click="setStatus('敷麻中', 4, occupyInfoView)">开始敷麻</div>
      <div v-show="occupyInfoView.treatRoomStatus == 0" class="room_left_btn_box__item flex flex-1 flex-center green btn_ani" style="margin-right: 0;" @click="setStatus('使用中', 1, occupyInfoView)">开始治疗</div>
      <div v-show="occupyInfoView.treatRoomStatus == 4" class="room_left_btn_box__item flex flex-center green btn_ani" @click="setStatus('使用中', 1, occupyInfoView)">开始治疗</div>
      <div v-show="occupyInfoView.treatRoomStatus == 1" class="room_left_btn_box__item flex-1 flex flex-center yellow btn_ani" @click="setStatus('客人休息', 2, occupyInfoView)">客人休息</div>
      <div v-show="occupyInfoView.treatRoomStatus == 1" class="room_left_btn_box__item flex-1 flex flex-center gray btn_ani" style="margin-right: 0;" @click="setStatus('打扫中', 3, occupyInfoView)">通知打扫</div>
      <div v-show="occupyInfoView.treatRoomStatus == 2" class="room_left_btn_box__item flex flex-center green btn_ani" @click="setStatus('打扫中', 3, occupyInfoView)">通知打扫</div>
      <div v-show="occupyInfoView.treatRoomStatus == 3" class="room_left_btn_box__item flex flex-center green btn_ani" @click="setStatus('空闲', 0, occupyInfoView)">结束打扫</div>
    </div>
    <!-- MIC通知卸麻 -->
    <XioRoomOffNarcosisNotice ref="XioRoomOffNarcosisNotice" @confirm="offNarcosisNoticeConfirm" />
src/config/index.js
@@ -7,7 +7,7 @@
import appId from './appid.js'
var ismock = 1// 虚拟数据 0不使用 1使用
var ismock = 0// 虚拟数据 0不使用 1使用
var istest = 2// 0线上 1本地 2测试环境
var isConsole = 1// 是否屏蔽console 0屏蔽 1开放
var debug = isConsole
src/pages/room/detail.vue
@@ -87,7 +87,7 @@
    <div v-if="occupyInfoViewArr && occupyInfoViewArr.length" class="page_container flex flex-1" :class="[occupyInfoViewArr && occupyInfoViewArr.length>1?'over-width':'']">
      <div class="flex flex-1">
        <div v-for="(item,index) in occupyInfoViewArr" :key="index" class="main flex-1">
          <div v-if="occupyInfoViewArr.length>1" class="cancel_icon_block" @click="cancelCustomerItem(item)">
          <div v-if="occupyInfoViewArr.length>1 && item.treatRoomStatus === 0" class="cancel_icon_block" @click="cancelCustomerItem(item)">
            <img class="img" src="static/imgs/cancel.png">
          </div>
          <XioRoomGuestInfoBox :ref="`XioRoomGuestInfoBox_${item.id}`" :room-info="roomInfo" :occupy-info-view="item" :off-narcosis-ids="offNarcosisIds" @setStatus="setComStatus" />
@@ -161,15 +161,11 @@
  computed: {
    // 当前已选择用户的数组数据
    occupyInfoViewArr() {
      // 缓存记录
      if (this.curTreatIds && this.curTreatIds.length) {
        // todo 存在缓存且存在占用数据的时候,根据后端返回再补充逻辑
        return this.getCurTreatArr(this.curTreatIds)
      if (this.occupyInfo && this.occupyInfo.length) {
        return this.occupyInfoViewArrIdsHandleArr()
      } else {
        // todo 存在占用数据的时候,根据后端返回再补充逻辑
        if (this.occupyInfo) {
          this.occupyInfoViewArrIdsHandle(this.occupyInfo)
          return [this.occupyInfo]
        if (this.curTreatIds && this.curTreatIds.length) {
          return this.getCurTreatArr(this.curTreatIds)
        } else {
          if ((!isUseDefault || (isUseDefault && isUseDefaultChg === 0)) && this.assignTreatList && this.assignTreatList.length) {
            isUseDefault = true
@@ -272,6 +268,32 @@
      }
      this.curTreatIds.push(item.id)
      this.setLocalCurTreatIds()
    },
    // 初始默认选择的id数组处理
    occupyInfoViewArrIdsHandleArr() {
      if (!this.curTreatIds) {
        this.curTreatIds = []
      }
      if (this.occupyInfo && this.occupyInfo.length === 1) {
        var res = []
        res.push(this.occupyInfo[0])
        if (this.curTreatIds && this.curTreatIds.length) {
          this.curTreatIds = this.curTreatIds.filter((o) => { return o !== this.occupyInfo[0].id })
          if (this.assignTreatList && this.assignTreatList.length && this.curTreatIds && this.curTreatIds.length) {
            var curTreatItem = this.assignTreatList.find((o) => { return o.id === this.curTreatIds[0] })
            if (curTreatItem) {
              res.push(curTreatItem)
            }
          }
        }
        this.setLocalCurTreatIds()
        return res
      } else if (this.occupyInfo && this.occupyInfo.length > 1) {
        this.occupyInfo.forEach((o) => {
          this.curTreatIds.push(o.id)
        })
        return this.occupyInfo
      }
    },
    // 设置已通知卸麻id数组
    setLocalStorageOffNarcosisIds() {
@@ -408,18 +430,17 @@
              o.appellationName = o.userName[0] + `${o.gender ? ['女士', '先生', '女士'][o.gender] : '女士'}`
            })
          }
          // todo 已占用用户数据处理,待后端修改再处理
          if (res.data.occupyInfo && res.data.occupyInfo.userName) {
            res.data.occupyInfo.appellationName = res.data.occupyInfo.userName[0] + `${res.data.occupyInfo.gender ? ['女士', '先生', '女士'][res.data.occupyInfo.gender] : '女士'}`
          if (res.data.occupyInfo && res.data.occupyInfo.length) {
            res.data.occupyInfo.forEach((o) => {
              // 治疗时间处理
              var st = (o.startTime).split(' ')[1].split(':')
              o.startTime = `${st[0]}:${st[1]}`
              // 称谓处理
              o.appellationName = o.userName[0] + `${o.gender ? ['女士', '先生', '女士'][o.gender] : '女士'}`
            })
          }
          // todo 已有占用的,更改已使用默认客人的状态
          res.data.occupyInfo && (isUseDefaultChg = 1)
          res.data.occupyInfo && (isUseDefault = 1)
          // todo 占用信息治疗时间处理
          if (res.data.occupyInfo && res.data.occupyInfo.startTime) {
            var ost = (res.data.occupyInfo.startTime).split(' ')[1].split(':')
            res.data.occupyInfo.startTime = `${ost[0]}:${ost[1]}`
          }
          res.data.occupyInfo && res.data.occupyInfo.length && (isUseDefaultChg = 1)
          res.data.occupyInfo && res.data.occupyInfo.length && (isUseDefault = 1)
          for (const key in res.data) {
            this[key] = res.data[key]
          }
@@ -498,16 +519,62 @@
    // 改变房间状态异步方法
    changeStatusFn(item = {}, status, cb) {
      var params = {}
      // 更改的状态
      params.status = status * 1
      // 房间id
      if (this.id) {
        params.shopRoomId = this.id
      }
      // 治疗记录id
      // 治疗记录id this.curTreatIds occupyInfoViewArr
      // 1.使用中/敷麻中 敷麻中 2 人占用
      // 2.使用中/使用中 使用中 2 人占用
      // 3.使用中/休息中  使用中 1 人占用
      var arr = JSON.parse(JSON.stringify(this.occupyInfoViewArr))
      if (item && item.id) {
        params.treatRecordId = item.id
        if (arr && arr.length) {
          arr.forEach((o) => {
            if (o.id === item.id) {
              o.treatRoomStatus = status * 1
            }
          })
          // 是否有人使用中
          var status_1 = arr.find((o) => { return o.treatRoomStatus === 1 })
          // 是否有客人休息
          var status_2 = arr.find((o) => { return o.treatRoomStatus === 2 })
          // 是否有人打扫中
          var status_3 = arr.find((o) => { return o.treatRoomStatus === 3 })
          // 是否有人敷麻
          var status_4 = arr.find((o) => { return o.treatRoomStatus === 4 })
          // 更改的状态 敷麻中 > 使用中 > 休息中 > 待打扫
          params.status = status * 1
          if (status_3) {
            params.status = 3
          }
          if (status_2) {
            params.status = 2
          }
          if (status_1) {
            params.status = 1
          }
          if (status_4) {
            params.status = 4
          }
        }
        // 当前选择客户的数组删除客户
        this.occupyInfoViewArrDataHandle('cancel', item)
      } else {
        // 更改的状态
        params.status = status * 1
      }
      params.treatRoomList = []
      if (arr && arr.length) {
        arr.forEach((o) => {
          params.treatRoomList.push({
            treatRecordId: o.id,
            status: o.treatRoomStatus
          })
        })
      }
      Req.http.post({
        url: 'guide/treat/screen/room/status/update',
        data: params,
@@ -523,12 +590,6 @@
          console.log('在已有默认客人的情况下,改变状态更改标识')
          isUseDefaultChg = 1
        }
        // 当前选中的用户房间更改了状态,已经成为占用时,清除选中医疗记录id
        // if (item && item.id && item.id === this.curTreatId) {
        //   console.log('当前选中的用户房间更改了状态,已经成为占用时,清除选中医疗记录id')
        //   localStorage.removeItem('curTreatId')
        //   this.curTreatId = ''
        // }
        // 只要更改为空闲就重置参数
        if (status === 0) {
          console.log('房间更改为空闲')
@@ -536,12 +597,6 @@
          isUseDefault = false
          isUseDefaultChg = 0
          // this.isShowAppellationName = true
        }
        // todo 用户结束治疗后,将其从缓存中删除, 待测试
        if (item && item.id && this.curTreatIds && this.curTreatIds.length && status === 0) {
          console.log('当前用户所在房间更改了状态为结束,清除当前的医疗记录id')
          // 当前选择客户的数组删除客户
          this.occupyInfoViewArrDataHandle('cancel', item)
        }
        // console.log('8888888888888888888888888888888888', res)
        cb && cb()
@@ -597,12 +652,12 @@
      // 当前选择客户的数组增加客户
      this.occupyInfoViewArrDataHandle('add', opt)
      // 重置房间状态
      if (this.roomInfo) {
        this.changeStatusFn({}, 0, () => {
          // 刷新详情
          this.getData()
        })
      }
      // if (this.roomInfo) {
      //   this.changeStatusFn({}, 0, () => {
      //     // 刷新详情
      //     this.getData()
      //   })
      // }
      // 关闭弹窗
      this.$refs['XioCustomerSelect'].hideDialog()
    },
@@ -625,6 +680,11 @@
          // 缓存
          this.setLocalCurTreatIds()
        }
        if (this.curTreatIds && !this.curTreatIds.length) {
          this.curTreatIds.push(item.id)
          // 缓存
          this.setLocalCurTreatIds()
        }
        // 数组数据处理
        // if (this.occupyInfoViewArr && this.occupyInfoViewArr.length) {
        //   this.occupyInfoViewArr.push(item)
src/utils/jun_login.js
@@ -9,35 +9,35 @@
import Config from '../config'
// import { Message } from 'element-ui'
let config = {
    // 登录请求接口链接
    url: 'weixin!ajaxGetInfoByCode',
    // 2小时过期
    expire: 7.2e6,
const config = {
  // 登录请求接口链接
  url: 'weixin!ajaxGetInfoByCode',
  // 2小时过期
  expire: 7.2e6
}
/**
 * 检查登录缓存过期,默认不过期
 * @param {object} we_session 缓存对象
 */
function checkExpire(we_session){
    // if ((we_session && Date.now() >= we_session.expire) || !we_session) {
    //     // 删除store缓存
    //  Store.commit('unLogined')
    //     // wx.removeStorageSync('we_session')
    //     localStorage.removeItem('we_session')
    //     return true
    // }
    return false
function checkExpire(we_session) {
  // if ((we_session && Date.now() >= we_session.expire) || !we_session) {
  //     // 删除store缓存
  //  Store.commit('unLogined')
  //     // wx.removeStorageSync('we_session')
  //     localStorage.removeItem('we_session')
  //     return true
  // }
  return false
}
/**
 * 进入微信长链,可获取code
 */
function toLongUrl () {
    // fn.urlReplace(Config.codeUrl)
    // location.href = Config.codeUrl
    location.href = Config.createCodeUrl()
function toLongUrl() {
  // fn.urlReplace(Config.codeUrl)
  // location.href = Config.codeUrl
  location.href = Config.createCodeUrl()
}
/**
@@ -46,80 +46,76 @@
 * @param {boolean}  option.force 是否强制重新登录
 * @param {function} option.callback 登录成功后回调
 */
function checkLogin(option={}){
    loginReq(option).then(()=>{
        if (typeof option.callback === 'function') {
            option.callback()
        }
    })
function checkLogin(option = {}) {
  loginReq(option).then(() => {
    if (typeof option.callback === 'function') {
      option.callback()
    }
  })
}
/**
 * 登录请求
 * @param {object} option
 * @param {object} option
 * @param {object} option.data 请求参数
 */
function loginReq(option){
    if (Config.ismock || Config.istest) {
        option.data.code = '011h5c000ySdaK1lbw000ubdtm2h5c00'
    }
function loginReq(option) {
  if (Config.ismock || Config.istest) {
    option.data.code = '011h5c000ySdaK1lbw000ubdtm2h5c00'
  }
    return new Promise((resolve, reject)=>{
        // 前置判断
        let userData = Store.getters.getUserData
        if (userData.key) {
            resolve(userData)
            return
        }
  return new Promise((resolve, reject) => {
    // 前置判断
    const userData = Store.getters.getUserData
    if (userData.key) {
      resolve(userData)
      return
    }
        if (!option || !option.data) {
            reject()
            console.error('调用loginReq,缺失 option')
            return
        }
        if (!option.data.code) {
            console.error('调用loginReq,缺失 code')
            reject()
            return
        }
        Req.http3.post({
            url: config.url,
            data: option.data
        }).then((res)=>{
            // 缓存key值
            fn.setLocalStorage('we_session', {
                we_session: res.inf.key,
                expire: Date.now() + config.expire
            })
            // 缓存用户数据
            Store.commit('setUserData', res.inf)
            console.log(res.inf)
    if (!option || !option.data) {
      reject()
      console.error('调用loginReq,缺失 option')
      return
    }
    if (!option.data.code) {
      console.error('调用loginReq,缺失 code')
      reject()
      return
    }
    Req.http3.post({
      url: config.url,
      data: option.data
    }).then((res) => {
      // 缓存key值
      fn.setLocalStorage('we_session', {
        we_session: res.inf.key,
        expire: Date.now() + config.expire
      })
      // 缓存用户数据
      Store.commit('setUserData', res.inf)
      console.log(res.inf)
            // if (res.inf.name) {
            //     Store.commit('setNickName', res.inf.name)
            // }
            // 处理登录完成 store
            // getUserInfo().then(_res=>{
            //     // Store.commit('setLogined', _res.inf)
            //     resolve(res)
            // })
            // Store.commit('setLogined')
      // if (res.inf.name) {
      //     Store.commit('setNickName', res.inf.name)
      // }
            resolve(res)
        }).catch((res)=>{
            console.log(res)
            reject(res)
        })
    })
      // 处理登录完成 store
      // getUserInfo().then(_res=>{
      //     // Store.commit('setLogined', _res.inf)
      //     resolve(res)
      // })
      // Store.commit('setLogined')
      resolve(res)
    }).catch((res) => {
      console.log(res)
      reject(res)
    })
  })
}
export default {
    checkLogin,
    loginReq,
    toLongUrl
}
  checkLogin,
  loginReq,
  toLongUrl
}