import { loginStatusPage, post } from '@/utils/https'; import { formatTime, getAuthInfo, getDataSet, isArray, toArray, toObject } from '@/utils/util'; import { voiceRequest } from '@/utils/voiceUtil'; /** 拼接符号 */ const ProcessCodeConcatSymbol = '&&'; /** 撤回码标记 */ const RecallCodeMarking = '-'; /** * 解析流程码 * @param {string} value */ const parseQrCode = (value: string) => { value = `${value || ''}`; const obj = { /** 工序码 */ code: value, /** 提成自定义字段 */ key: '', /** - => 撤回码 */ type: '', }; if (value.includes(ProcessCodeConcatSymbol)) { obj.code = value.substring(0, value.indexOf(ProcessCodeConcatSymbol)); obj.key = value.substring( value.indexOf(ProcessCodeConcatSymbol) + ProcessCodeConcatSymbol.length, ); } if (obj.code.includes(RecallCodeMarking)) { obj.type = RecallCodeMarking; obj.code = obj.code.replace(RecallCodeMarking, ''); } return obj; }; Page({ /** * 页面的初始数据 */ data: { action: 'end', processCodeMsg: '', // rel_order_no: 'XSDD2026011500000190', // process_code: 'jd', rel_order_no: '', process_code: '', logsList: [] as any[], show: false, orders: [] as any[], isLogin: false, isScanCode: false, voice: true, loading: true, authInfo: {}, hideTabKeys: [] as string[], processItems: [] as any[], backFlag: false, selectedProcessCode: '', result: '', logType: '0', rel_order_no_temp: '', }, handleLogin(e: any) { this.setData({ isLogin: e.detail }); if (e.detail) { this.init(); } }, backChange(e: any) { const checked = e.detail.checked; this.data.backFlag = checked; this.setData({ backFlag: checked }); wx.setStorageSync('processBackFlag', checked ? 1 : 0); if (this.data.selectedProcessCode) { const { code, key } = parseQrCode(this.data.selectedProcessCode); this.data.selectedProcessCode = `${code}${checked ? RecallCodeMarking : ''}`; if (key) { this.data.selectedProcessCode += `${ProcessCodeConcatSymbol}${key}`; } } wx.setStorageSync('selectedProcessCode', this.data.selectedProcessCode); this.getProcessName(); }, getProcessName() { if (this.data.selectedProcessCode) { const { code, type } = parseQrCode(this.data.selectedProcessCode); for (const ell of this.data.processItems) { if (ell.process_code == code) { this.setData({ processCodeMsg: `工序名称:${ell.process_name || ''}(${ell.process_code})`, selectedProcessCode: this.data.selectedProcessCode, process_code: this.data.selectedProcessCode, action: type ? 'back' : 'end', }); break; } } } }, processItemTap(e: any) { this.data.selectedProcessCode = e.currentTarget.dataset.code + (this.data.backFlag ? '-' : ''); wx.setStorageSync('selectedProcessCode', this.data.selectedProcessCode); this.setData({ selectedProcessCode: this.data.selectedProcessCode, }); this.getProcessName(); }, getExecProcess() { post('CompanyProcessV2/getProcessByCode').then((res: any) => { this.data.processItems = toArray(res.data); if (this.data.processItems.length == 1) { this.data.selectedProcessCode = this.data.processItems[0].process_code; this.getProcessName(); } else { this.getProcessName(); } this.setData({ processItems: this.data.processItems, }); }); }, init() { const companyInfo = toObject(wx.getStorageSync('company_info')); const code = wx.getStorageSync('selectedProcessCode') || ''; this.data.selectedProcessCode = code; this.data.process_code = code; this.data.backFlag = wx.getStorageSync('processBackFlag') == 1; const logType = wx.getStorageSync('processEntry_logType'); this.setData({ authInfo: getAuthInfo(), hideTabKeys: companyInfo.staff_type == 3 ? ['2'] : [], backFlag: this.data.backFlag, selectedProcessCode: code, process_code: code, logType: logType || 0, }); this.getExecProcess(); }, voiceChange(event: any) { this.setData({ voice: event.detail, }); wx.setStorageSync('processEntryVoice', `${event.detail}`); }, getVoice(msg: string, cacheVoice?: boolean) { return; if (this.data.voice && msg) { voiceRequest(msg, cacheVoice); } }, onLogTypeChange(e: any) { const data = getDataSet(e); this.setData({ logType: data.key }); wx.setStorageSync('processEntry_logType', data.key); }, scanCode() { this.data.isScanCode = true; wx.scanCode({ onlyFromCamera: true, scanType: ['qrCode'], success: (res) => { console.log(res); const qrcode = res.result || ''; if (qrcode) { if (qrcode.startsWith('XSDD')) { if (this.data.process_code) { this.data.rel_order_no = qrcode; this.setData({ rel_order_no: qrcode, }); this.processEnter(); } else { wx.showToast({ title: '请扫流程码', icon: 'none' }); } } else { const code = parseQrCode(qrcode); this.setData({ action: code.type == RecallCodeMarking ? 'back' : 'end', rel_order_no: '', }); this.getProcess(qrcode); } } this.setData({ msg: JSON.stringify(res), }); }, complete: () => { this.data.isScanCode = false; }, }); }, getProcess(process_code: any) { const code = parseQrCode(process_code); post('/CompanyProcessV2/getProcessByCode', { curr_page: 1, page_count: 1, process_code: code.code, }) .then((res: any) => { const data = res.data; if (Array.isArray(res.data) && data.length) { this.setData({ processCodeMsg: `工序名称:${data[0].process_name || ''}(${process_code})`, process_code: process_code, selectedProcessCode: process_code, }); this.getVoice(`${data[0].process_name}工序`, true); wx.showToast({ title: '请扫订单二维码', icon: 'none' }); } else { this.addMsg('未找到 ' + process_code + ' 工序'); wx.showToast({ title: '未找到该工序', icon: 'error' }); this.getVoice(`未找到工序`, true); } }) .catch(() => { this.addMsg('未找到 ' + process_code + ' 工序'); wx.showToast({ title: '未找到该工序', icon: 'error' }); }); }, processEnter() { if (this.data.rel_order_no && this.data.process_code) { this.data.rel_order_no_temp = this.data.rel_order_no; this.setProcess(); } }, LCProcessEnter(e: any) { const item = this.data.orders[e.currentTarget.dataset.index]; this.data.rel_order_no_temp = item.order_no; this.setProcess({ info_process_id: JSON.stringify([item.info_process_id]), action: this.data.action, if_scan: 1, }); }, setProcess(other?: any) { const code = parseQrCode(this.data.process_code); const obj: any = {}; if (code.key) { obj[this.data.rel_order_no_temp] = code.key; } post( 'ProduceOrder/setProcessV2', other ? other : { order_no: this.data.rel_order_no_temp, process_code: code.code, action: this.data.action, if_scan: 1, }, ) .then((res: any) => { if (isArray(res.data) && res.data.length) { res.data.forEach((el: any) => { el.product_info_str = toArray(el.product_info) .map((ell) => { return `${ell.room_name || '未命名'}(${ell.goods_name || '未命名'})`; }) .join(','); el.sale_info_str = toArray(el.sale_info) .map((ell) => { return `${ell.goods_name}`; }) .join(','); }); this.setData({ show: true, orders: res.data, }); } else { this.addMsg(res.err_msg); // this.getVoice(res.err_msg); this.getVoice('通过'); this.setData({ show: false, result: 'success', }); wx.showToast({ title: res.err_msg, icon: 'none', }); } }) .catch((res: any) => { this.addMsg(res.err_msg); if (res.err_code == '244269') { this.setData({ result: 'success', }); wx.showToast({ title: res.err_msg, icon: 'none', }); this.getVoice('通过'); } else { this.setData({ result: 'error', }); this.getVoice(res.err_msg); } }); }, addMsg(msg: any) { const now = new Date(); this.data.logsList.unshift({ date: formatTime(now).substring(5), msg: msg || '', }); if (this.data.logsList.length > 100) { this.data.logsList.length = 100; } this.setData({ logsList: this.data.logsList, }); }, clearMsg() { this.setData({ logsList: [] }); }, show() { this.setData({ show: true }); }, onClose() { this.setData({ show: false }); }, /** * 生命周期函数--监听页面加载 */ onLoad(_options) { this.setData({ loading: true, voice: wx.getStorageSync('processEntryVoice') == 'false' ? false : true, }); loginStatusPage(this); }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() {}, /** * 生命周期函数--监听页面显示 */ onShow() { wx.hideHomeButton(); }, /** * 生命周期函数--监听页面隐藏 */ onHide() {}, /** * 生命周期函数--监听页面卸载 */ onUnload() {}, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() {}, /** * 页面上拉触底事件的处理函数 */ onReachBottom() {}, /** * 用户点击右上角分享 */ onShareAppMessage() {}, });