/** * * @description telStatus 当前用户签入的状态 * @method setDutyState 设置签入签出状态 * @method setCallOut 设置外呼模式状态 * @method setRest 设置休息状态 * @method setTalkingDeal 设置话后整理状态 * @method setHold 设置保持状态 * @method setPhoneControlState 设置电话控件状态 * @method setCallInfo 设置当前通话信息 * @method resetState 重置状态 */ import { defineStore } from 'pinia'; export enum TelStates { dutyOff = 'dutyOff', // 签出 dutyOn = 'dutyOn', // 签入 onCallOut = 'onCallOut', // 外呼模式中 rest = 'rest', // 小休 ring = 'ring', // 来电响铃 onHold = 'onHold', // 保持中 onMute = 'onMute', // 静音中 onCall = 'onCall', // 一通电话通话中 onTalkingDeal = 'onTalkingDeal', // 事后处理中 onConference = 'onConference', // 三方会议中 onThreeWay = 'onThreeWay', // 三方通话中 } export enum RestStates { resting = 'resting', // 小休中 InReview = 'InReview', // 小休审批中 unRest = 'unRest' // 未小休 } export const useTelStatus = defineStore('telStatus', { state: (): { telStatusInfo: { isCallOut: boolean; fromTel: string; callId: string; isMute: boolean; isMeeting: boolean; isDutyOn: boolean; isHold: boolean; isTalkingDeal: boolean; telsNo: string; groupName: string; telGongHao: string; telType: string; telArea: string; isRest: RestStates; phoneControlState: TelStates; telIVR: string } } => ({ telStatusInfo: { isDutyOn: false, // 是否签入 isRest: RestStates.unRest, // 是否休息 'resting'|'InReview'|'unRest'; 休息中 审核中 其他状态 isTalkingDeal: false, //是否事后处理 isMeeting: false, //是否三方会议中 isHold: false, // 是否保持中 isMute: false, isCallOut: false, // 是否是外呼模式 phoneControlState: TelStates.dutyOff, //当前状态 默认签出 telsNo: "", // 分机号 groupName: "", // 分机组名称 telGongHao: "", // 电话工号 telArea: "", // 电话区号 callId: "", // 电话guid telIVR: "", // 电话IVR telType: "", //来电 外呼 转接 fromTel: "", // 来电号码 } }), actions: { // 设置签入签出状态 setDutyState(data: boolean): void { this.telStatusInfo.isDutyOn = data; }, // 设置休息状态 setRest(data: RestStates): void { this.telStatusInfo.isRest = data; }, // 设置时候处理状态 setTalkingDeal(data: boolean): void { this.telStatusInfo.isTalkingDeal = data; }, // 设置保持状态 setHold(data: boolean): void { this.telStatusInfo.isHold = data; }, // 设置静音状态 setMute(data: boolean): void { this.telStatusInfo.isMute = data; }, // 设置外呼模式 setCallOut(data: boolean): void { this.telStatusInfo.isCallOut = data; }, // 设置是否在三方会议中 setMetTing(data: boolean): void { this.telStatusInfo.isMeeting = data; }, // 设置电话控件状态 setPhoneControlState(data: TelStates): void { this.telStatusInfo.phoneControlState = data; }, // 设置当前通话信息 setCallInfo(data:any): void { this.telStatusInfo = { ...this.telStatusInfo, ...data }; }, // 签出重置所有状态 resetState(): void { this.telStatusInfo = { isDutyOn: false, // 是否签入 isRest: RestStates.unRest, // 是否休息 isTalkingDeal: false, //是否事后处理 isMeeting: false, //是否三方会议中 isHold:false, // 是否保持中 isMute: false, // 是否静音 isCallOut:false, // 是否是外呼模式 phoneControlState: TelStates.dutyOff, //当前状态 默认签出 telsNo: "", // 分机号 groupName: "", // 分机组名称 telGongHao: "", // 电话工号 telArea: "", // 电话区号 callId: "", // 电话guid telIVR: "", // 电话IVR telType: "", //来电 外呼 转接 fromTel: "", // 来电号码 } } }, // 开启数据缓存 persist: { enabled: true, strategies: [ { //key的名称 key: `${import.meta.env.VITE_STORAGE_NAME}_telStatusInfo`, //更改默认存储,我更改为localStorage storage: localStorage, // 可以选择哪些进入local存储,这样就不用全部都进去存储了 // 默认是全部进去存储 }, // { // key: `${import.meta.env.VITE_STORAGE_NAME}_base`, // storage: localStorage, // paths: ['isDutyOn','isRest'] // }, // { // key: `${import.meta.env.VITE_STORAGE_NAME}_base2`, // storage: sessionStorage, // paths: ['telsNo'] // }, ] } });