diff --git a/src/renderer/store/modules/chat.js b/src/renderer/store/modules/chat.js index 488df6a..32c9355 100644 --- a/src/renderer/store/modules/chat.js +++ b/src/renderer/store/modules/chat.js @@ -1,617 +1,617 @@ -// import { getAllList, getChatList, bindId, chatBegin } from '@/api/message' -let timeouter = null -let websock = null - -// 状态JSON -// 设备状态 -const PrinterStatus = { - I: '空闲', - B: '忙碌', - P: '正在打印' -} - -// // 设备报错 -// const printer_errors = { -// '0x11': '从光盘桶抓取到光驱时,光盘为空,请添加光盘后点击重试', -// '0x12': '从光盘桶抓取到光驱时,抓取错误,请将该光盘放入光盘桶后点击重试', -// '0x13': '从光盘桶抓取到光驱时,其他错误,请将该光盘放入光盘桶后点击重试', -// '0x14': '从光盘桶抓取到打印托盘时,光盘为空,请添加光盘后点击重试', -// '0x15': '从光盘桶抓取到打印托盘时,抓取错误,请将该光盘放入光盘桶后点击重试', -// '0x16': '从光盘桶抓取到打印托盘时,其他错误,请将该光盘放入光盘桶后点击重试', -// '0x17': '从光驱抓取到打印托盘时,光盘为空,请检查光驱弹出并将该光盘放入后点击重试', -// '0x18': '从光驱抓取到打印托盘时,抓取错误,请将该光盘重新放入光驱后点击重试', -// '0x19': '从光驱抓取到打印托盘时,其他错误,请将该光盘重新放入光驱后点击重试', -// '0x1a': '从打印托盘抓取到出口时,光盘为空,请检查打印托盘弹出并将该光盘放入后点击重试', -// '0x1b': '从打印托盘抓取到出口时,抓取错误,请将光该盘重新放入托盘后点击重试', -// '0x1c': '从打印托盘抓取到出口时,其他错误,请将该光盘重新放入托盘后点击重试', -// '0x1d': '从光驱抓取到出口时,光盘为空,光盘为空,请检查光驱弹出并将该光盘放入后点击重试', -// '0x1e': '从光驱抓取到出口时,抓取错误,请将该光盘重新放入光驱后点击重试', -// '0x1f': '从光驱抓取到出口时,其他错误,请将该光盘重新放入光驱后点击重试', -// '0x21': '作业开始时设备错误,请清除故障后点击重试', -// '0x10001': '通讯失败,请检查设备' -// } - -// 提交任务报错 -const submitErros = { - '0x1': '读取任务JSON失败', - '0x3': '新建任务失败', - '0x4': '新建任务文件夹失败', - '0x5': '没有任务数量', - '0x6': '打印参数错误', - '0x7': '刻录参数错误', - '0x8': '没有任务', - '0x9': '模板文件解析失败', - '0xa': '打印类型错误', - '0xb': 'csv文件读取失败', - '0xc': '刻录路径错误', - '0xd': '新建ISO文件失败', - '0xe': '更新任务数据失败' -} - -// 错误状态 -const Error = { - 1: '打印托盘移动错误', - 2: '识别墨盒失败', - 3: '打印机内部通讯错误', - 4: '墨盒容量低', - 5: '机械臂移动错误,请按功能按钮重试。', - 6: '设备处于离线状态', - 7: '设备门盖被打开,为了避免打印机失联请关闭门盖。', - 8: '从打印托盘上抓取光盘时错误,请手动将光盘取走再点击重试。', - 9: '多张光盘被抓取或移动,请检查后手动将光盘放回原处再点重试,如重试后继续错误,则需校准设备后再来重试。', - 10: '从进盘仓到光驱的过程中,抓取错误,请手动将光盘放回进盘仓后重试。', - 11: '从进盘仓到打印托盘的过程中,抓取错误,请手动将光盘放回进盘仓后重试。', - 12: '从光驱到打印托盘的过程中,抓取错误,请手动将光盘放回光驱后重试。', - 13: '打印机需要校准', - 14: '检测墨盒错误', - 15: '校准光盘桶失败', - 16: '等待打印完成超时', - 17: '从打印托盘抓取光盘时未找到光盘,请检查后手动将光盘取走后再点重试。', - 18: '设备清洗', - 19: '从光驱上抓取光盘时错误,请手动将光盘取走再点击重试', - 20: '盘仓为空', - 21: '光盘抓取错误', - 32: '其他错误', -} -// const Error1 = { -// 0: '托盘移动错误', -// 1: '墨盒类型错误', -// 2: '抓取光盘时未检测到光盘光盘已用完', -// 3: '光盘掉落', -// 4: '墨水车空警告', -// 5: '光盘抓手错误', -// 6: '抓取多张光盘错误', -// 7: '机械臂挂钩错误或者机械臂归位错误' -// } - -// const Error2 = { -// 0: '墨水车伺服系统错误', -// 1: '墨水车失速错误', -// 2: '墨盒数据读取错误', -// 3: '打印图像超出范围', -// 4: '环境温度超出正常使用范围', -// 5: '墨盒短路', -// 6: '型号错误', -// 7: '缓冲区溢出错误' -// } - -// const Error3 = { -// 0: '光盘已经打印' -// } - -// 光驱信息 -const CDName = { - 1: '下光驱', - 2: '上光驱' -} -const CDStatus = { - 0: '无法确定光盘状态', - 1: '没有光盘', - 2: '光驱托盘打开', - 3: '光驱未准备好', - 4: '光盘状态正常,光盘已插入', - 5: '校验中' -} - -// 光盘类型 -// CD类型:CD:1,DVD:2, DVD_DL:3,BD:4,BD_DL:5,BD_TL:6,BD_QL:7 -const diskTypes = { - 1: 'CD', - 2: 'DVD', - 3: 'BD' -} -const CDTypes = { - 1: 'CD', - 2: 'DVD', - 3: 'DVD_DL', - 4: 'BD', - 5: 'BD_DL', - 6: 'BD_TL', - 7: 'BD_QL' -} -// 使用跨平台文件大小计算 -const { getCurrentOSDiscTypes } = require('@/utils/fileSize') -const cd_types = getCurrentOSDiscTypes() - -const defaultData = { - // 任务列表 - task_list: [ - // { - // task_uuid: '202042152', - // task_name: '复制任务', - // finish_freq: 2, - // total_freq: 10, - // task_status: 5, - // ass_task: [ - // { - // task_size: 100000, - // cd_type: 2, - // start_time: '2024-04-01 12:00:00', - // finish_time: '2024-04-01 12:00:00', - // task_status: 5 - // }, - // { - // task_size: 100000, - // cd_type: 2, - // start_time: '2024-04-01 12:00:00', - // finish_time: '2024-04-01 12:00:00', - // task_status: 5 - // } - // ] - // }, - // { - // task_uuid: '202042152', - // task_name: '复制任务', - // finish_freq: 2, - // total_freq: 10, - // task_status: 100, - // ass_task: [ - // { - // task_size: 100000, - // cd_type: 2, - // start_time: '2024-04-01 12:00:00', - // finish_time: '2024-04-01 12:00:00', - // task_status: 100 - // }, - // { - // task_size: 100000, - // cd_type: 2, - // start_time: '2024-04-01 12:00:00', - // finish_time: '2024-04-01 12:00:00', - // task_status: 100 - // } - // ] - // }, - // { - // task_uuid: '202042152', - // task_name: '复制任务', - // finish_freq: 2, - // total_freq: 10, - // task_status: 2, - // ass_task: [ - // { - // task_size: 100000, - // cd_type: 2, - // start_time: '2024-04-01 12:00:00', - // finish_time: '2024-04-01 12:00:00', - // task_status: 2 - // }, - // { - // task_size: 100000, - // cd_type: 2, - // start_time: '2024-04-01 12:00:00', - // finish_time: '2024-04-01 12:00:00', - // task_status: 2 - // } - // ] - // } - ], - // 设备信息 - printer_info: { - blue_last: 0, //蓝色墨盒遗留 - calibration_flag: 0, // 是否校验设备 - lack_ink: 0, // 缺墨警告 - cover_flag: false, //是否盖盖 - printer_name: '', //设备名称 - printer_status: 'I', //设备状态 数字转成字符为I - printer_tray: 'I', //设备托盘状态 数字转成字符为I - red_last: 0, //红色墨盒遗留 - yellow_last: 0, //黄色墨盒遗留 - system_ip: '', //主机IP - system_name: '', //主机名称 - is_set_cddev: 0, - serial_no: '', //设备序列号 - test_use: '', //试用天数 - // 左右光盘桶 - strong_list: [ - { - strong_pos: 1, // 1:右光盘桶,2:左光盘桶 - cd_type: 1, //CD类型:CD:1,DVD:2, DVD_DL:3,BD:4,BD_DL:5,BD_TL:6,BD_QL:7 - cd_num: 0 - }, - { - strong_pos: 2, - cd_type: 2, - cd_num: 0 - } - ], - strongList: { - 1: { - strong_pos: 1, - cd_type: 1, - cd_num: 0 - }, - 2: { - strong_pos: 2, - cd_type: 2, - cd_num: 0 - } - } - }, - // 光驱信息 - cd_list: [ - { - cd_pos: 2, // 设备位置 1:下光驱,2:上光驱 - cd_status: 4, // 设备状态 0:无法确定光盘状态 ,1:没有光盘 , 2:光驱托盘打开, 3:光驱未准备好,4:光盘状态正常,光盘已插入 - cd_taskid: '', // 当前任务id - dev_path: '', // 光驱路径 - dev_type: 1, // 光驱类型 - cd_assid: '', // 作业的卷标名 - total_size: 0, // 总容量 - use_size: 0, // 已使用容量 - copy_scheduler: 0 // 任务进度 - }, - { - cd_pos: 1, - cd_status: 1, - cd_taskid: '', - dev_path: '', - dev_type: 2 - } - ], - // 日志信息 - logList: [ - // { - // time: '2024-04-01 12:00:00', - // text: '任务开始', - // status: 'INFO' - // } - ], - allLogList: [], - // 手动设置光驱 - cdList: [ - // { - // "dev_path":"/dev/sre", - // "dev_name":"Finger Module 0110" - // }, - // { - // "dev_path":"/dev/sre", - // "dev_name":"PIONEER BD-RW BDR-289M 1.54" - // }, - // { - // "dev_path":"/dev/sre", - // "dev_name":"PIONEER BD-RW BDR-1313M 3.54" - // } - ], - // 系统配置 - settings: { - log_level: 1, - retry_freq: 2, - print_quality: 1, - cache_path: '/home/test/CDFile', - has_sr0: 1, - } -} - -const getDefaultState = () => { - return { - firstConnect: false, - isConnect: false, - connecting: false, - serviceStatus: false, - workStatus: true, - reconnections: 0, - PrinterStatus, - CDName, - CDStatus, - diskTypes, - CDTypes, - cd_types, - refreshTime: 10, - // 错误信息 - printer_error: {}, - clearError: false, - ...defaultData - } -} - -const state = getDefaultState() - -const mutations = { - setData: (state, obj) => { - state[obj.name] = obj.data - } -} - -const actions = { - // 改变state值 - setDatas: ({ commit }, data) => { - commit('setData', data) - }, - // 初始化websocket - initWebSocket({ state, commit, dispatch, rootState }) { - if (typeof WebSocket === 'undefined') return console.log('您的浏览器不支持websocket') - if ((websock && state.isConnect) || !rootState.user.token || state.connecting) { - return - } - commit('setData', { name: 'connecting', data: true }) - websock = new WebSocket(process.env.VUE_APP_SOCKET_API) - websock.onmessage = function (res) { - dispatch('websocketonmessage', res) - } - websock.onopen = function (res) { - dispatch('websocketonopen', res) - } - websock.onerror = function (res) { - dispatch('websocketonerror', res) - } - websock.onclose = function (res) { - dispatch('websocketonclose', res) - } - }, - // 接收消息 - websocketonmessage({ state, commit, dispatch }, e) { - const data = JSON.parse(e.data) // 转json对象 - if (data.resp_name) { - // 作业列表 - if (data.resp_name === 'task_list') { - commit('setData', { name: 'task_list', data: data.resp_info.task_list }) - // 设备信息 - } else if (data.resp_name === 'printer_info') { - let info = data.resp_info - info.printer_status = String.fromCharCode(info.printer_status) - info.printer_tray = String.fromCharCode(info.printer_tray) - let strong_list = {} - for (let i = 0; i < info.strong_list.length; i++) { - strong_list[info.strong_list[i].strong_pos] = info.strong_list[i] - } - info.strongList = strong_list - // if (info.cover_flag && info.printer_name !== 'SE3') { - // commit('setData', { name: 'printer_error', data: { type: 'error', notify: '设备门盖被打开,请关闭门盖。' } }) - // } - // if (info.calibration_flag) { - // commit('setData', { name: 'printer_error', data: { type: 'error', notify: '请校准打印机。' } }) - // } - commit('setData', { name: 'printer_info', data: info }) - // 驱动信息 - } else if (data.resp_name === 'cd_info') { - const list = data.resp_info.cd_list - let cds = [] - let isBD = false - for (let i = 0; i < list.length; i++) { - if (list[i].dev_type == 3) isBD = true - if (i === 0) { - cds.push(list[i]) - } else { - if (list[i].cd_pos == 2) { - cds.unshift(list[i]) - } else { - cds.push(list[i]) - } - } - } - let types = CDTypes - let typeLists = cd_types - if (!isBD) { - types = {} - for (let key in CDTypes) { - if (parseInt(key) < 4) types[key] = CDTypes[key] - } - typeLists = cd_types.slice(0, 3) - } - commit('setData', { name: 'CDTypes', data: types }) - commit('setData', { name: 'cd_types', data: typeLists }) - commit('setData', { name: 'cd_list', data: cds }) - // 手动设置驱动 - } else if (data.resp_name === 'get_all_cdlist') { - commit('setData', { name: 'cdList', data: data.resp_info.cd_list || [] }) - // 系统配置 - } else if (data.resp_name === 'get_system_config') { - commit('setData', { name: 'settings', data: data.resp_info }) - // 新增日志 - } else if (data.resp_name === 'add_log') { - let logs = data.resp_info.add_log - let loglist = [] - let logLists = [...state.logList] - for (let i = 0; i < logs.length; i++) { - let texts = logs[i].split('|') - if (logLists.length > 20) logLists.splice(logLists.length - 1, 1) - loglist.unshift({ - time: texts[0].replace(/\//g, '-').replace(/时/g, ':').replace(/分/g, ':').replace(/秒/g, ''), - text: texts[2].replace(texts[2].split(' ')[0], ''), - status: texts[1] - }) - } - let list = [...loglist, ...logLists] - commit('setData', { name: 'logList', data: list }) - // 全部日志 - } else if (data.resp_name === 'all_log') { - let logs = data.resp_info.add_log - let loglist = [] - for (let i = 0; i < logs.length; i++) { - let texts = logs[i].split('|') - loglist.unshift({ - time: texts[0].replace(/\//g, '-').replace(/时/g, ':').replace(/分/g, ':').replace(/秒/g, ''), - text: texts[2].replace(texts[2].split(' ')[0], ''), - status: texts[1] - }) - } - commit('setData', { name: 'logList', data: loglist }) - // 提交任务报错处理 - } else if (data.resp_name === 'submit_task_res') { - let error = data.resp_info - let task_res = '0x' + error.task_res.toString(16) - commit('setData', { name: 'printer_error', data: { type: 'error', notify: '任务' + error.task_uuid + '提交失败:' + submitErros[task_res] } }) - // 打印报错处理 - } else if (data.resp_name === 'printer_error') { - let error = data.resp_info - if (error.error) { - let errors = error.error - let continues = [8, 9, 10, 11, 12, 17, 19] - let nojumps = [7, 8, 9, 10, 11, 12, 17, 19] - let isClears = [20, 21] - for (let i = 0; i < errors.length; i++) { - setTimeout(() => { - let req = continues.indexOf(errors[i]) > -1 ? 'continue_task' : '' - let noJump = nojumps.indexOf(errors[i]) > -1 - let isClear = isClears.indexOf(errors[i]) > -1 - if (isClear) { - noJump = false - req = '' - } - if (req) { - commit('setData', { name: 'printer_error', data: { type: 'error', confirm: Error[errors[i]], req: req, noJump: noJump, isClear: isClear } }) - } else { - commit('setData', { name: 'printer_error', data: { type: 'error', notify: Error[errors[i]], isClear: isClear, noJump: noJump } }) - } - }, 500) - } - } - // if (error.error1) { - // let errors = error.error1.toString(2).split('').reverse() - // for (let i = 0; i < errors.length; i++) { - // if (errors[i] == 1) { - // setTimeout(() => { - // commit('setData', { name: 'printer_error', data: { type: 'error', notify: Error1[i] } }) - // }, 500) - // } - // } - // } - // if (error.error2) { - // let errors = error.error2.toString(2).split('').reverse() - // for (let i = 0; i < errors.length; i++) { - // if (errors[i] == 1) { - // setTimeout(() => { - // commit('setData', { name: 'printer_error', data: { type: 'error', notify: Error2[i] } }) - // }, 500) - // } - // } - // } - // if (error.error3) { - // let errors = error.error3.toString(2).split('').reverse() - // for (let i = 0; i < errors.length; i++) { - // if (errors[i] == 1) { - // setTimeout(() => { - // commit('setData', { name: 'printer_error', data: { type: 'error', notify: Error3[i] } }) - // }, 500) - // } - // } - // } - if (error.printer_error) { - error.printer_error = '0x' + error.printer_error.toString(16) - let continues = ['0x11', '0x12', '0x13', '0x14', '0x15', '0x16', '0x17', '0x18', '0x19', '0x1a', '0x1b', '0x1c', '0x1d', '0x1e', '0x1f', '0x21'] - let req = continues.indexOf(error.printer_error) > -1 ? 'continue_task' : '' - if (req) { - commit('setData', { name: 'printer_error', data: { type: 'error', confirm: printer_errors[error.printer_error], req: req } }) - } else { - commit('setData', { name: 'printer_error', data: { type: 'error', notify: printer_errors[error.printer_error] } }) - } - } - // 清除错误提示 - } else if (data.resp_name === 'clean_iface_err') { - commit('setData', { name: 'clearError', data: true }) - setTimeout(() => { - commit('setData', { name: 'clearError', data: false }) - }, 1000); - // 执行错误提示 - } else { - if (data.resp_info.res_code === 0) { - - } else { - commit('setData', { name: 'printer_error', data: { type: 'error', notify: data.resp_info.res_msg || '操作失败' } }) - } - } - } else { - // 未知消息 - console.log('报错信息: ' + JSON.stringify(data)) - } - }, - // 心跳检测重连 - pingCheck({ state, commit, dispatch, rootState }) { - if (state.pingNum < 4) { - let num = state.pingNum + 1 - commit('setData', { name: 'pingNum', data: num }) - timeouter = setTimeout(() => { - dispatch('pingCheck') - }, 10000) - } else { - dispatch('closeWebsocket') - } - }, - // 发送消息 - websocketsend({ commit, dispatch }, res) { - return new Promise((resolve, reject) => { - if (!state.serviceStatus) { - commit('setData', { name: 'printer_error', data: { type: 'warning', message: '服务连接中,请耐心等待', noJump: true } }) - reject() - return - } - if (!state.isConnect) { - commit('setData', { name: 'printer_error', data: { type: 'warning', message: '请先打开服务', noJump: true } }) - reject() - return - } - websock.send(JSON.stringify(res)) - resolve() - }) - }, - // 链接建立之后执行的方法 - websocketonopen: ({ commit, dispatch }, res) => { - console.log('链接建立之后执行send方法发送数据', res) - commit('setData', { name: 'connecting', data: false }) - commit('setData', { name: 'isConnect', data: true }) - commit('setData', { name: 'serviceStatus', data: true }) - }, - // 链接关闭之后执行的方法 - websocketonclose: ({ state, commit, dispatch }, res) => { - console.log('断开链接', res) - // 关闭 - commit('setData', { name: 'connecting', data: false }) - commit('setData', { name: 'isConnect', data: false }) - for (let key in defaultData) { - commit('setData', { name: key, data: defaultData[key] }) - } - const refreshTime = parseInt(state.refreshTime) * 1000 - setTimeout(() => { - dispatch('initWebSocket') - }, refreshTime) - if (state.workStatus) { - - } - }, - // 链接错误之后执行的方法 - websocketonerror({ state, commit, dispatch }, res) { - commit('setData', { name: 'firstConnect', data: true }) - commit('setData', { name: 'connecting', data: false }) - commit('setData', { name: 'isConnect', data: false }) - commit('setData', { name: 'serviceStatus', data: false }) - let num = state.reconnections + 1 - commit('setData', { name: 'reconnections', data: num }) - const refreshTime = parseInt(state.refreshTime) * 1000 - setTimeout(() => { - dispatch('initWebSocket') - }, refreshTime) - }, - // 关闭 - closeWebsocket: () => { - // 关闭 - if (websock) websock.close() - } -} - -export default { - namespaced: true, - state, - mutations, - actions -} +// import { getAllList, getChatList, bindId, chatBegin } from '@/api/message' +import { getCurrentOSDiscTypes } from '@/utils/fileSize' +let timeouter = null +let websock = null + +// 状态JSON +// 设备状态 +const PrinterStatus = { + I: '空闲', + B: '忙碌', + P: '正在打印' +} + +// // 设备报错 +// const printer_errors = { +// '0x11': '从光盘桶抓取到光驱时,光盘为空,请添加光盘后点击重试', +// '0x12': '从光盘桶抓取到光驱时,抓取错误,请将该光盘放入光盘桶后点击重试', +// '0x13': '从光盘桶抓取到光驱时,其他错误,请将该光盘放入光盘桶后点击重试', +// '0x14': '从光盘桶抓取到打印托盘时,光盘为空,请添加光盘后点击重试', +// '0x15': '从光盘桶抓取到打印托盘时,抓取错误,请将该光盘放入光盘桶后点击重试', +// '0x16': '从光盘桶抓取到打印托盘时,其他错误,请将该光盘放入光盘桶后点击重试', +// '0x17': '从光驱抓取到打印托盘时,光盘为空,请检查光驱弹出并将该光盘放入后点击重试', +// '0x18': '从光驱抓取到打印托盘时,抓取错误,请将该光盘重新放入光驱后点击重试', +// '0x19': '从光驱抓取到打印托盘时,其他错误,请将该光盘重新放入光驱后点击重试', +// '0x1a': '从打印托盘抓取到出口时,光盘为空,请检查打印托盘弹出并将该光盘放入后点击重试', +// '0x1b': '从打印托盘抓取到出口时,抓取错误,请将光该盘重新放入托盘后点击重试', +// '0x1c': '从打印托盘抓取到出口时,其他错误,请将该光盘重新放入托盘后点击重试', +// '0x1d': '从光驱抓取到出口时,光盘为空,光盘为空,请检查光驱弹出并将该光盘放入后点击重试', +// '0x1e': '从光驱抓取到出口时,抓取错误,请将该光盘重新放入光驱后点击重试', +// '0x1f': '从光驱抓取到出口时,其他错误,请将该光盘重新放入光驱后点击重试', +// '0x21': '作业开始时设备错误,请清除故障后点击重试', +// '0x10001': '通讯失败,请检查设备' +// } + +// 提交任务报错 +const submitErros = { + '0x1': '读取任务JSON失败', + '0x3': '新建任务失败', + '0x4': '新建任务文件夹失败', + '0x5': '没有任务数量', + '0x6': '打印参数错误', + '0x7': '刻录参数错误', + '0x8': '没有任务', + '0x9': '模板文件解析失败', + '0xa': '打印类型错误', + '0xb': 'csv文件读取失败', + '0xc': '刻录路径错误', + '0xd': '新建ISO文件失败', + '0xe': '更新任务数据失败' +} + +// 错误状态 +const Error = { + 1: '打印托盘移动错误', + 2: '识别墨盒失败', + 3: '打印机内部通讯错误', + 4: '墨盒容量低', + 5: '机械臂移动错误,请按功能按钮重试。', + 6: '设备处于离线状态', + 7: '设备门盖被打开,为了避免打印机失联请关闭门盖。', + 8: '从打印托盘上抓取光盘时错误,请手动将光盘取走再点击重试。', + 9: '多张光盘被抓取或移动,请检查后手动将光盘放回原处再点重试,如重试后继续错误,则需校准设备后再来重试。', + 10: '从进盘仓到光驱的过程中,抓取错误,请手动将光盘放回进盘仓后重试。', + 11: '从进盘仓到打印托盘的过程中,抓取错误,请手动将光盘放回进盘仓后重试。', + 12: '从光驱到打印托盘的过程中,抓取错误,请手动将光盘放回光驱后重试。', + 13: '打印机需要校准', + 14: '检测墨盒错误', + 15: '校准光盘桶失败', + 16: '等待打印完成超时', + 17: '从打印托盘抓取光盘时未找到光盘,请检查后手动将光盘取走后再点重试。', + 18: '设备清洗', + 19: '从光驱上抓取光盘时错误,请手动将光盘取走再点击重试', + 20: '盘仓为空', + 21: '光盘抓取错误', + 32: '其他错误', +} +// const Error1 = { +// 0: '托盘移动错误', +// 1: '墨盒类型错误', +// 2: '抓取光盘时未检测到光盘光盘已用完', +// 3: '光盘掉落', +// 4: '墨水车空警告', +// 5: '光盘抓手错误', +// 6: '抓取多张光盘错误', +// 7: '机械臂挂钩错误或者机械臂归位错误' +// } + +// const Error2 = { +// 0: '墨水车伺服系统错误', +// 1: '墨水车失速错误', +// 2: '墨盒数据读取错误', +// 3: '打印图像超出范围', +// 4: '环境温度超出正常使用范围', +// 5: '墨盒短路', +// 6: '型号错误', +// 7: '缓冲区溢出错误' +// } + +// const Error3 = { +// 0: '光盘已经打印' +// } + +// 光驱信息 +const CDName = { + 1: '下光驱', + 2: '上光驱' +} +const CDStatus = { + 0: '无法确定光盘状态', + 1: '没有光盘', + 2: '光驱托盘打开', + 3: '光驱未准备好', + 4: '光盘状态正常,光盘已插入', + 5: '校验中' +} + +// 光盘类型 +// CD类型:CD:1,DVD:2, DVD_DL:3,BD:4,BD_DL:5,BD_TL:6,BD_QL:7 +const diskTypes = { + 1: 'CD', + 2: 'DVD', + 3: 'BD' +} +const CDTypes = { + 1: 'CD', + 2: 'DVD', + 3: 'DVD_DL', + 4: 'BD', + 5: 'BD_DL', + 6: 'BD_TL', + 7: 'BD_QL' +} +// 使用跨平台文件大小计算 +const cd_types = getCurrentOSDiscTypes() + +const defaultData = { + // 任务列表 + task_list: [ + // { + // task_uuid: '202042152', + // task_name: '复制任务', + // finish_freq: 2, + // total_freq: 10, + // task_status: 5, + // ass_task: [ + // { + // task_size: 100000, + // cd_type: 2, + // start_time: '2024-04-01 12:00:00', + // finish_time: '2024-04-01 12:00:00', + // task_status: 5 + // }, + // { + // task_size: 100000, + // cd_type: 2, + // start_time: '2024-04-01 12:00:00', + // finish_time: '2024-04-01 12:00:00', + // task_status: 5 + // } + // ] + // }, + // { + // task_uuid: '202042152', + // task_name: '复制任务', + // finish_freq: 2, + // total_freq: 10, + // task_status: 100, + // ass_task: [ + // { + // task_size: 100000, + // cd_type: 2, + // start_time: '2024-04-01 12:00:00', + // finish_time: '2024-04-01 12:00:00', + // task_status: 100 + // }, + // { + // task_size: 100000, + // cd_type: 2, + // start_time: '2024-04-01 12:00:00', + // finish_time: '2024-04-01 12:00:00', + // task_status: 100 + // } + // ] + // }, + // { + // task_uuid: '202042152', + // task_name: '复制任务', + // finish_freq: 2, + // total_freq: 10, + // task_status: 2, + // ass_task: [ + // { + // task_size: 100000, + // cd_type: 2, + // start_time: '2024-04-01 12:00:00', + // finish_time: '2024-04-01 12:00:00', + // task_status: 2 + // }, + // { + // task_size: 100000, + // cd_type: 2, + // start_time: '2024-04-01 12:00:00', + // finish_time: '2024-04-01 12:00:00', + // task_status: 2 + // } + // ] + // } + ], + // 设备信息 + printer_info: { + blue_last: 0, //蓝色墨盒遗留 + calibration_flag: 0, // 是否校验设备 + lack_ink: 0, // 缺墨警告 + cover_flag: false, //是否盖盖 + printer_name: '', //设备名称 + printer_status: 'I', //设备状态 数字转成字符为I + printer_tray: 'I', //设备托盘状态 数字转成字符为I + red_last: 0, //红色墨盒遗留 + yellow_last: 0, //黄色墨盒遗留 + system_ip: '', //主机IP + system_name: '', //主机名称 + is_set_cddev: 0, + serial_no: '', //设备序列号 + test_use: '', //试用天数 + // 左右光盘桶 + strong_list: [ + { + strong_pos: 1, // 1:右光盘桶,2:左光盘桶 + cd_type: 1, //CD类型:CD:1,DVD:2, DVD_DL:3,BD:4,BD_DL:5,BD_TL:6,BD_QL:7 + cd_num: 0 + }, + { + strong_pos: 2, + cd_type: 2, + cd_num: 0 + } + ], + strongList: { + 1: { + strong_pos: 1, + cd_type: 1, + cd_num: 0 + }, + 2: { + strong_pos: 2, + cd_type: 2, + cd_num: 0 + } + } + }, + // 光驱信息 + cd_list: [ + { + cd_pos: 2, // 设备位置 1:下光驱,2:上光驱 + cd_status: 4, // 设备状态 0:无法确定光盘状态 ,1:没有光盘 , 2:光驱托盘打开, 3:光驱未准备好,4:光盘状态正常,光盘已插入 + cd_taskid: '', // 当前任务id + dev_path: '', // 光驱路径 + dev_type: 1, // 光驱类型 + cd_assid: '', // 作业的卷标名 + total_size: 0, // 总容量 + use_size: 0, // 已使用容量 + copy_scheduler: 0 // 任务进度 + }, + { + cd_pos: 1, + cd_status: 1, + cd_taskid: '', + dev_path: '', + dev_type: 2 + } + ], + // 日志信息 + logList: [ + // { + // time: '2024-04-01 12:00:00', + // text: '任务开始', + // status: 'INFO' + // } + ], + allLogList: [], + // 手动设置光驱 + cdList: [ + // { + // "dev_path":"/dev/sre", + // "dev_name":"Finger Module 0110" + // }, + // { + // "dev_path":"/dev/sre", + // "dev_name":"PIONEER BD-RW BDR-289M 1.54" + // }, + // { + // "dev_path":"/dev/sre", + // "dev_name":"PIONEER BD-RW BDR-1313M 3.54" + // } + ], + // 系统配置 + settings: { + log_level: 1, + retry_freq: 2, + print_quality: 1, + cache_path: '/home/test/CDFile', + has_sr0: 1, + } +} + +const getDefaultState = () => { + return { + firstConnect: false, + isConnect: false, + connecting: false, + serviceStatus: false, + workStatus: true, + reconnections: 0, + PrinterStatus, + CDName, + CDStatus, + diskTypes, + CDTypes, + cd_types, + refreshTime: 10, + // 错误信息 + printer_error: {}, + clearError: false, + ...defaultData + } +} + +const state = getDefaultState() + +const mutations = { + setData: (state, obj) => { + state[obj.name] = obj.data + } +} + +const actions = { + // 改变state值 + setDatas: ({ commit }, data) => { + commit('setData', data) + }, + // 初始化websocket + initWebSocket({ state, commit, dispatch, rootState }) { + if (typeof WebSocket === 'undefined') return console.log('您的浏览器不支持websocket') + if ((websock && state.isConnect) || !rootState.user.token || state.connecting) { + return + } + commit('setData', { name: 'connecting', data: true }) + websock = new WebSocket(process.env.VUE_APP_SOCKET_API) + websock.onmessage = function (res) { + dispatch('websocketonmessage', res) + } + websock.onopen = function (res) { + dispatch('websocketonopen', res) + } + websock.onerror = function (res) { + dispatch('websocketonerror', res) + } + websock.onclose = function (res) { + dispatch('websocketonclose', res) + } + }, + // 接收消息 + websocketonmessage({ state, commit, dispatch }, e) { + const data = JSON.parse(e.data) // 转json对象 + if (data.resp_name) { + // 作业列表 + if (data.resp_name === 'task_list') { + commit('setData', { name: 'task_list', data: data.resp_info.task_list }) + // 设备信息 + } else if (data.resp_name === 'printer_info') { + let info = data.resp_info + info.printer_status = String.fromCharCode(info.printer_status) + info.printer_tray = String.fromCharCode(info.printer_tray) + let strong_list = {} + for (let i = 0; i < info.strong_list.length; i++) { + strong_list[info.strong_list[i].strong_pos] = info.strong_list[i] + } + info.strongList = strong_list + // if (info.cover_flag && info.printer_name !== 'SE3') { + // commit('setData', { name: 'printer_error', data: { type: 'error', notify: '设备门盖被打开,请关闭门盖。' } }) + // } + // if (info.calibration_flag) { + // commit('setData', { name: 'printer_error', data: { type: 'error', notify: '请校准打印机。' } }) + // } + commit('setData', { name: 'printer_info', data: info }) + // 驱动信息 + } else if (data.resp_name === 'cd_info') { + const list = data.resp_info.cd_list + let cds = [] + let isBD = false + for (let i = 0; i < list.length; i++) { + if (list[i].dev_type == 3) isBD = true + if (i === 0) { + cds.push(list[i]) + } else { + if (list[i].cd_pos == 2) { + cds.unshift(list[i]) + } else { + cds.push(list[i]) + } + } + } + let types = CDTypes + let typeLists = cd_types + if (!isBD) { + types = {} + for (let key in CDTypes) { + if (parseInt(key) < 4) types[key] = CDTypes[key] + } + typeLists = cd_types.slice(0, 3) + } + commit('setData', { name: 'CDTypes', data: types }) + commit('setData', { name: 'cd_types', data: typeLists }) + commit('setData', { name: 'cd_list', data: cds }) + // 手动设置驱动 + } else if (data.resp_name === 'get_all_cdlist') { + commit('setData', { name: 'cdList', data: data.resp_info.cd_list || [] }) + // 系统配置 + } else if (data.resp_name === 'get_system_config') { + commit('setData', { name: 'settings', data: data.resp_info }) + // 新增日志 + } else if (data.resp_name === 'add_log') { + let logs = data.resp_info.add_log + let loglist = [] + let logLists = [...state.logList] + for (let i = 0; i < logs.length; i++) { + let texts = logs[i].split('|') + if (logLists.length > 20) logLists.splice(logLists.length - 1, 1) + loglist.unshift({ + time: texts[0].replace(/\//g, '-').replace(/时/g, ':').replace(/分/g, ':').replace(/秒/g, ''), + text: texts[2].replace(texts[2].split(' ')[0], ''), + status: texts[1] + }) + } + let list = [...loglist, ...logLists] + commit('setData', { name: 'logList', data: list }) + // 全部日志 + } else if (data.resp_name === 'all_log') { + let logs = data.resp_info.add_log + let loglist = [] + for (let i = 0; i < logs.length; i++) { + let texts = logs[i].split('|') + loglist.unshift({ + time: texts[0].replace(/\//g, '-').replace(/时/g, ':').replace(/分/g, ':').replace(/秒/g, ''), + text: texts[2].replace(texts[2].split(' ')[0], ''), + status: texts[1] + }) + } + commit('setData', { name: 'logList', data: loglist }) + // 提交任务报错处理 + } else if (data.resp_name === 'submit_task_res') { + let error = data.resp_info + let task_res = '0x' + error.task_res.toString(16) + commit('setData', { name: 'printer_error', data: { type: 'error', notify: '任务' + error.task_uuid + '提交失败:' + submitErros[task_res] } }) + // 打印报错处理 + } else if (data.resp_name === 'printer_error') { + let error = data.resp_info + if (error.error) { + let errors = error.error + let continues = [8, 9, 10, 11, 12, 17, 19] + let nojumps = [7, 8, 9, 10, 11, 12, 17, 19] + let isClears = [20, 21] + for (let i = 0; i < errors.length; i++) { + setTimeout(() => { + let req = continues.indexOf(errors[i]) > -1 ? 'continue_task' : '' + let noJump = nojumps.indexOf(errors[i]) > -1 + let isClear = isClears.indexOf(errors[i]) > -1 + if (isClear) { + noJump = false + req = '' + } + if (req) { + commit('setData', { name: 'printer_error', data: { type: 'error', confirm: Error[errors[i]], req: req, noJump: noJump, isClear: isClear } }) + } else { + commit('setData', { name: 'printer_error', data: { type: 'error', notify: Error[errors[i]], isClear: isClear, noJump: noJump } }) + } + }, 500) + } + } + // if (error.error1) { + // let errors = error.error1.toString(2).split('').reverse() + // for (let i = 0; i < errors.length; i++) { + // if (errors[i] == 1) { + // setTimeout(() => { + // commit('setData', { name: 'printer_error', data: { type: 'error', notify: Error1[i] } }) + // }, 500) + // } + // } + // } + // if (error.error2) { + // let errors = error.error2.toString(2).split('').reverse() + // for (let i = 0; i < errors.length; i++) { + // if (errors[i] == 1) { + // setTimeout(() => { + // commit('setData', { name: 'printer_error', data: { type: 'error', notify: Error2[i] } }) + // }, 500) + // } + // } + // } + // if (error.error3) { + // let errors = error.error3.toString(2).split('').reverse() + // for (let i = 0; i < errors.length; i++) { + // if (errors[i] == 1) { + // setTimeout(() => { + // commit('setData', { name: 'printer_error', data: { type: 'error', notify: Error3[i] } }) + // }, 500) + // } + // } + // } + if (error.printer_error) { + error.printer_error = '0x' + error.printer_error.toString(16) + let continues = ['0x11', '0x12', '0x13', '0x14', '0x15', '0x16', '0x17', '0x18', '0x19', '0x1a', '0x1b', '0x1c', '0x1d', '0x1e', '0x1f', '0x21'] + let req = continues.indexOf(error.printer_error) > -1 ? 'continue_task' : '' + if (req) { + commit('setData', { name: 'printer_error', data: { type: 'error', confirm: printer_errors[error.printer_error], req: req } }) + } else { + commit('setData', { name: 'printer_error', data: { type: 'error', notify: printer_errors[error.printer_error] } }) + } + } + // 清除错误提示 + } else if (data.resp_name === 'clean_iface_err') { + commit('setData', { name: 'clearError', data: true }) + setTimeout(() => { + commit('setData', { name: 'clearError', data: false }) + }, 1000); + // 执行错误提示 + } else { + if (data.resp_info.res_code === 0) { + + } else { + commit('setData', { name: 'printer_error', data: { type: 'error', notify: data.resp_info.res_msg || '操作失败' } }) + } + } + } else { + // 未知消息 + console.log('报错信息: ' + JSON.stringify(data)) + } + }, + // 心跳检测重连 + pingCheck({ state, commit, dispatch, rootState }) { + if (state.pingNum < 4) { + let num = state.pingNum + 1 + commit('setData', { name: 'pingNum', data: num }) + timeouter = setTimeout(() => { + dispatch('pingCheck') + }, 10000) + } else { + dispatch('closeWebsocket') + } + }, + // 发送消息 + websocketsend({ commit, dispatch }, res) { + return new Promise((resolve, reject) => { + if (!state.serviceStatus) { + commit('setData', { name: 'printer_error', data: { type: 'warning', message: '服务连接中,请耐心等待', noJump: true } }) + reject() + return + } + if (!state.isConnect) { + commit('setData', { name: 'printer_error', data: { type: 'warning', message: '请先打开服务', noJump: true } }) + reject() + return + } + websock.send(JSON.stringify(res)) + resolve() + }) + }, + // 链接建立之后执行的方法 + websocketonopen: ({ commit, dispatch }, res) => { + console.log('链接建立之后执行send方法发送数据', res) + commit('setData', { name: 'connecting', data: false }) + commit('setData', { name: 'isConnect', data: true }) + commit('setData', { name: 'serviceStatus', data: true }) + }, + // 链接关闭之后执行的方法 + websocketonclose: ({ state, commit, dispatch }, res) => { + console.log('断开链接', res) + // 关闭 + commit('setData', { name: 'connecting', data: false }) + commit('setData', { name: 'isConnect', data: false }) + for (let key in defaultData) { + commit('setData', { name: key, data: defaultData[key] }) + } + const refreshTime = parseInt(state.refreshTime) * 1000 + setTimeout(() => { + dispatch('initWebSocket') + }, refreshTime) + if (state.workStatus) { + + } + }, + // 链接错误之后执行的方法 + websocketonerror({ state, commit, dispatch }, res) { + commit('setData', { name: 'firstConnect', data: true }) + commit('setData', { name: 'connecting', data: false }) + commit('setData', { name: 'isConnect', data: false }) + commit('setData', { name: 'serviceStatus', data: false }) + let num = state.reconnections + 1 + commit('setData', { name: 'reconnections', data: num }) + const refreshTime = parseInt(state.refreshTime) * 1000 + setTimeout(() => { + dispatch('initWebSocket') + }, refreshTime) + }, + // 关闭 + closeWebsocket: () => { + // 关闭 + if (websock) websock.close() + } +} + +export default { + namespaced: true, + state, + mutations, + actions +} diff --git a/src/renderer/utils/README_fileSize.md b/src/renderer/utils/README_fileSize.md index c21e586..079e208 100644 --- a/src/renderer/utils/README_fileSize.md +++ b/src/renderer/utils/README_fileSize.md @@ -1,110 +1,110 @@ -# 跨平台文件大小计算工具 - -## 概述 - -这个工具解决了不同操作系统下文件大小计算的差异问题: - -- **Windows**: 使用 1024 进制 (二进制,1KB = 1024 bytes) -- **macOS**: 使用 1000 进制 (十进制,1KB = 1000 bytes) -- **Linux**: 使用 1000 进制 (十进制,遵循 SI 标准,1KB = 1000 bytes) - -## 主要功能 - -### 1. 操作系统检测 -```javascript -import { getOS } from '@/utils/fileSize' - -const currentOS = getOS() // 'windows', 'mac', 'linux', 'unknown' -``` - -### 2. 获取基础单位大小 -```javascript -import { getBaseSize } from '@/utils/fileSize' - -const baseSize = getBaseSize() // 1024 (Windows/Linux) 或 1000 (macOS) -``` - -### 3. 光盘类型配置 -```javascript -import { getCurrentOSDiscTypes } from '@/utils/fileSize' - -const discTypes = getCurrentOSDiscTypes() -// 返回当前系统适配的光盘类型配置 -``` - -### 4. 文件大小格式化 -```javascript -import { formatFileSize } from '@/utils/fileSize' - -const formatted = formatFileSize(1024*1024*1024) // "1.00 GB" (Windows) 或 "1.00 GB" (macOS) -``` - -## 使用示例 - -### 在组件中使用 -```javascript -// dashboard/index.vue -import { getCurrentOSDiscTypes } from '@/utils/fileSize' - -export default { - methods: { - updateDiscTypes() { - const typeLists = getCurrentOSDiscTypes() - this.$store.dispatch('chat/setDatas', { name: 'cd_types', data: typeLists }) - } - } -} -``` - -### 在工具函数中使用 -```javascript -// utils/index.js -import { formatFileSize } from '@/utils/fileSize' - -export const filterSize = (size) => { - if (!size || size < 0) return '0 B' - return formatFileSize(size) -} -``` - -## 光盘类型配置 - -工具自动为不同操作系统生成正确的光盘容量配置: - -| 类型 | Windows | macOS/Linux | -|------|---------|-------------| -| CD 700MB | 734,003,200 bytes | 700,000,000 bytes | -| DVD 4.7GB | 5,046,586,572 bytes | 4,700,000,000 bytes | -| BD 25GB | 26,843,545,600 bytes | 25,000,000,000 bytes | - -## 调试功能 - -```javascript -import { getDebugInfo } from '@/utils/fileSize' - -const debug = getDebugInfo() -console.log(debug) -// 输出当前系统的完整配置信息 -``` - -## 测试 - -运行测试文件查看不同系统的差异: - -```javascript -import { testFileSizeCalculation, compareOSDifferences } from '@/utils/fileSizeTest' - -testFileSizeCalculation() // 显示当前系统配置 -compareOSDifferences() // 对比不同系统差异 -``` - -## 注意事项 - -1. 工具会自动检测当前操作系统 -2. 所有大小计算都基于字节 (bytes) -3. 格式化显示会根据系统使用相应的进制 -4. 光盘容量配置会自动适配当前系统 - -## 更新历史 - -- 2024-01-XX: 初始版本,支持 Windows/macOS/Linux 跨平台文件大小计算 +# 跨平台文件大小计算工具 + +## 概述 + +这个工具解决了不同操作系统下文件大小计算的差异问题: + +- **Windows**: 使用 1024 进制 (二进制,1KB = 1024 bytes) +- **macOS**: 使用 1000 进制 (十进制,1KB = 1000 bytes) +- **Linux**: 使用 1000 进制 (十进制,遵循 SI 标准,1KB = 1000 bytes) + +## 主要功能 + +### 1. 操作系统检测 +```javascript +import { getOS } from '/src/renderer/utils/fileSize' + +const currentOS = getOS() // 'windows', 'mac', 'linux', 'unknown' +``` + +### 2. 获取基础单位大小 +```javascript +import { getBaseSize } from '/src/renderer/utils/fileSize' + +const baseSize = getBaseSize() // 1024 (Windows/Linux) 或 1000 (macOS) +``` + +### 3. 光盘类型配置 +```javascript +import { getCurrentOSDiscTypes } from '/src/renderer/utils/fileSize' + +const discTypes = getCurrentOSDiscTypes() +// 返回当前系统适配的光盘类型配置 +``` + +### 4. 文件大小格式化 +```javascript +import { formatFileSize } from '/src/renderer/utils/fileSize' + +const formatted = formatFileSize(1024*1024*1024) // "1.00 GB" (Windows) 或 "1.00 GB" (macOS) +``` + +## 使用示例 + +### 在组件中使用 +```javascript +// dashboard/index.vue +import { getCurrentOSDiscTypes } from '/src/renderer/utils/fileSize' + +export default { + methods: { + updateDiscTypes() { + const typeLists = getCurrentOSDiscTypes() + this.$store.dispatch('chat/setDatas', { name: 'cd_types', data: typeLists }) + } + } +} +``` + +### 在工具函数中使用 +```javascript +// utils/index.js +import { formatFileSize } from '/src/renderer/utils/fileSize' + +export const filterSize = (size) => { + if (!size || size < 0) return '0 B' + return formatFileSize(size) +} +``` + +## 光盘类型配置 + +工具自动为不同操作系统生成正确的光盘容量配置: + +| 类型 | Windows | macOS/Linux | +|------|---------|-------------| +| CD 700MB | 734,003,200 bytes | 700,000,000 bytes | +| DVD 4.7GB | 5,046,586,572 bytes | 4,700,000,000 bytes | +| BD 25GB | 26,843,545,600 bytes | 25,000,000,000 bytes | + +## 调试功能 + +```javascript +import { getDebugInfo } from '/src/renderer/utils/fileSize' + +const debug = getDebugInfo() +console.log(debug) +// 输出当前系统的完整配置信息 +``` + +## 测试 + +运行测试文件查看不同系统的差异: + +```javascript +import { testFileSizeCalculation, compareOSDifferences } from '/src/renderer/utils/fileSizeTest' + +testFileSizeCalculation() // 显示当前系统配置 +compareOSDifferences() // 对比不同系统差异 +``` + +## 注意事项 + +1. 工具会自动检测当前操作系统 +2. 所有大小计算都基于字节 (bytes) +3. 格式化显示会根据系统使用相应的进制 +4. 光盘容量配置会自动适配当前系统 + +## 更新历史 + +- 2024-01-XX: 初始版本,支持 Windows/macOS/Linux 跨平台文件大小计算 diff --git a/src/renderer/utils/index.js b/src/renderer/utils/index.js index faa9eff..b175128 100644 --- a/src/renderer/utils/index.js +++ b/src/renderer/utils/index.js @@ -465,14 +465,14 @@ export function accSub(arg1, arg2) { export const filterSize = (size) => { if (!size || size < 0) return '0 B'; - // 使用跨平台文件大小格式化 - const { formatFileSize } = require('@/utils/fileSize') + // 使用跨平台文件大小格式化(相对路径) + const { formatFileSize } = require('./fileSize') return formatFileSize(size) } export const pow1024 = (num) => { - // 使用跨平台基础大小 - const { getBaseSize } = require('@/utils/fileSize') + // 使用跨平台基础大小(相对路径) + const { getBaseSize } = require('./fileSize') const baseSize = getBaseSize() return Math.pow(baseSize, num) } diff --git a/src/renderer/views/dashboard/index.vue b/src/renderer/views/dashboard/index.vue index 558d3f1..1cc05ed 100644 --- a/src/renderer/views/dashboard/index.vue +++ b/src/renderer/views/dashboard/index.vue @@ -341,6 +341,7 @@ import { mapGetters } from 'vuex' const { app, dialog } = require('@electron/remote') import UserInfo from '@/components/userInfo/userInfo.vue' import WorkAdd from '@/components/workAdd/workAdd.vue' +import { getCurrentOSDiscTypes } from '@/utils/fileSize' const exePath = !app.isPackaged ? process.cwd() : path.dirname(process.execPath) const shPath = path.join(exePath, 'CardsoonServer', 'control.sh') const activePath = path.join(exePath, 'CardsoonServer', 'regist.sh') @@ -970,8 +971,7 @@ export default { clearTimeout(outTimer) that.currentRunVal = 0 - // 使用跨平台文件大小计算 - const { getCurrentOSDiscTypes } = require('@/utils/fileSize') + // 使用跨平台文件大小计算(相对路径) let typeLists = getCurrentOSDiscTypes() let isBD = that.changeCD.req_info.strong_list.findIndex(item => parseInt(item.strong_type) > 3) if (isBD === -1) {