UNPKG

fcc-core

Version:

Fusion communication center.

181 lines (175 loc) 5.93 kB
// 获取UDC的服务地址跟端口 import CallManage from '../../../utils/call-center/ucccontrol/uccmanage' import { changeEmployeeStatus } from '../../../utils/nats/natsApi' // import { addOPTRecord } from '@/views/dispatch-GIS/api/recordApi' function loginIn (xw) { let CALLOUT_WAY = xw.getSysParam('CALLOUT_WAY') // udc地址和端口 let udcaddr = xw.getSysParam('UDC_IP_PORT') // vcaddr let vcaddr = xw.getSysParam('VC_IP_PORT') // vcnaddr let vcnaddr = xw.getSysParam('VCN_IP_PORT') // 平台版本 let version = xw.getSysParam('PLATFORM_VERSION') const agentAttr = { // 坐席属性 userInfo: {}, // udc地址和端口 udcaddr, vcaddr, vcnaddr, version } Object.defineProperty(agentAttr, 'userInfo', { get () { return xw.userInfo } }) return { // 封装统一的签入方法 async loginIn (exeSocket) { // udc let udcip = agentAttr.udcaddr.split(':')[0] let udcport = agentAttr.udcaddr.split(':')[1] // vc let vcip = agentAttr.vcaddr.split(':')[0] let vcport = agentAttr.vcaddr.split(':')[1] // vcn let vcnip = agentAttr.vcnaddr.split(':')[0] let vcnport = agentAttr.vcnaddr.split(':')[1] let loginData = { dispatch: false, monitor: false, phone: false, cluster: false } let param = { sdkVer: version, userName: String(agentAttr.userInfo.USER_CODE) } if (version === '1') { param.cluster = null param.monitor = null param.dispatch = { 'userName': agentAttr.userInfo.ICP_CODE, 'password': agentAttr.userInfo.ICP_PWD, 'serverIp': udcip, 'serverPort': udcport } } else { param.dispatch = { 'userName': agentAttr.userInfo.ICP_CODE, 'password': agentAttr.userInfo.ICP_PWD, 'serverIp': vcip, 'serverPort': vcport } param.cluster = { 'userName': agentAttr.userInfo.UDC_CODE, 'password': agentAttr.userInfo.UDC_PWD, 'serverIp': udcip, 'serverPort': udcport } param.monitor = { 'userName': xw.getSysParam('VCN_USER_ACCOUNT'), 'password': xw.getSysParam('VCN_USER_PASS'), 'serverIp': vcnip, 'serverPort': vcnport } } // 通过exe程序去登录 if (xw.agentState === '3') { exeSocket.emit('Login', param) let promiseAllArr = [] if (xw.public.pointToPointCall || xw.public.meeting) { let OnDispatchLogin = new Promise((resolve, reject) => { exeSocket.once('OnDispatchLogin', data => { if (data.resultCode === 0) { loginData.dispatch = true loginData.exePhone = true if (version === '1') { loginData.monitor = true } resolve() } }) }) promiseAllArr.push(OnDispatchLogin) } if (version === '2' && xw.public.monitor) { let OnMonitorLogin = new Promise((resolve, reject) => { exeSocket.once('OnMonitorLogin', data => { if (data.resultCode === 0) { loginData.monitor = true resolve() } }) }) promiseAllArr.push(OnMonitorLogin) } if (xw.public.cluster) { let OnClusterLogin = new Promise((resolve, reject) => { console.log('集群登录') exeSocket.once('OnClusterLogin', data => { if (data.resultCode === 0) { loginData.cluster = true resolve() } }) }) promiseAllArr.push(OnClusterLogin) } if (xw.userInfo.AGENT_ID) { xw.ucc = new CallManage(xw) window.xw = xw let uccSignIn = new Promise((resolve, reject) => { xw.ucc.signIn().then(res => { loginData.fsPhone = true resolve() }).catch((err) => { reject(err) }) }) promiseAllArr.push(uccSignIn) } let timeout = setTimeout(() => { throw (new xw.BaseException(501, '登录失败!')) }, 60000) console.log(promiseAllArr) return new Promise((resolve, reject) => { Promise.all(promiseAllArr).then(() => { clearTimeout(timeout) xw.sysLoginStatus = loginData // 成功之后才全部修改 changeEmployeeStatus('1', xw) // 广播并且修改agent_state状态 在线 resolve() }).catch((err) => { reject(err) }) }) } else { changeEmployeeStatus('1', xw) // 广播并且修改agent_state状态 在线 } }, // 封装统一的签出方法 loginOut (exeSocket) { let param = { 'userName': agentAttr.userInfo.ICP_CODE, 'sdkVer': version } // 通过exe程序去登出 exeSocket.emit('Logout', param) exeSocket.once('OnLogout', (data) => { if (data.resultCode === 0) { window.app.$message.success('退出登录成功') changeEmployeeStatus('3', xw) // 广播并且修改agent_state状态 登出 window.app.$store.commit('M_SYS_LOGIN_STATUS', { dispatch: false, monitor: false, cluster: false }) } else { window.app.$message.error(`退出登录失败,${data.resultMsg}`) } }) }, // 封装统一的示忙方法 sayBusy () { changeEmployeeStatus('2', xw) // 广播并且修改agent_state状态 忙碌 } } } export default loginIn