/** * 系统设置 */ import { store } from '@/store' import { getStorage, setStorage } from '@/utils/storage' import toast from '@/utils/toast' import { onShow } from '@dcloudio/uni-app' import { computed, nextTick, ref } from 'vue' import useGlobalFunc from '@/composables/useGlobalFunc' import merchant from '@/api/https/merchant' function setUp() { const { logOutFn } = useGlobalFunc() /** * 获取页面初始化信息 */ onShow(async () => { await getStoreMsg() }) // 打印机品牌 const printerData = ref({ 0: '未绑定', 201: '飞鹅打印机', 202: '外卖管家打印机', 203: '易联云打印机', 204: '中午云打印机', 205: '京西云打印机', }) const netPrinterData = ref>(['无', '外卖管家打印机', '易联云打印机', '中午云打印机', '京西云打印机']) const defultNetPrinterValue = ref('') const netPrinter = ref() const recordIndex = ref('') // 记录打印机最初的序列号 const popup = ref(null) // 弹窗实例 const currentNetPrinter = ref(['', '', '']) const bindNetPrinter = ref({ printerSN: '', printerKey: '' }) async function getStoreMsg() { // 读取vuex 中的 store 数据 await store.dispatch('storeInfo/getOneStore', getStorage("storeID")) smsNotify.value = store.state.storeInfo.allStoreInfo.smsNotify printerDisabled.value = store.state.storeInfo.allStoreInfo.printerDisabled // 获取第三方美团门店 if (JSON.stringify(store.state.storeInfo.allStoreInfo) !== '{}') { let mtStore = store.state.storeInfo.allStoreInfo.StoreMaps.find((item: { vendorID: number }) => item.vendorID === 1) if (mtStore) { mtStoreInfo.value = mtStore isExistMtStore.value = true let mtStatus = store.state.storeInfo.imOnlineStatus.filter(item => item.vendorID === 1) imMtStoreStatus.value = mtStatus[0].imStatus } let ebStore = store.state.storeInfo.allStoreInfo.StoreMaps.find((item: { vendorID: number }) => item.vendorID === 3) if (ebStore && JSON.stringify(ebStore) !== '{}') { ebStoreInfo.value = ebStore isExistEbStore.value = true let ebStataus = store.state.storeInfo.imOnlineStatus.filter(item => item.vendorID === 3) imEbStoreStatus.value = ebStataus[0].imStatus } let jxStore = store.state.storeInfo.allStoreInfo.StoreMaps.find((item: { vendorID: number }) => item.vendorID === 9) if(jxStore && JSON.stringify(jxStore) !== '{}') isDeliverSelf.value = jxStore.deliverySelf === 1 } // 网络打印机 netPrinter.value = (store.state.serveInfo.serviceInfo as any).printerVendorInfo for (let i in netPrinter.value) { if (!printerData.value[i]) { let printerName = netPrinter.value[i][0] + '打印机' printerData.value[i] = printerName netPrinterData.value.push(printerName) } } if (store.state.storeInfo.allStoreInfo.printerVendorID) { for (let key in printerData.value) { if (key == store.state.storeInfo.allStoreInfo.printerVendorID) { let findIndex = netPrinterData.value.findIndex(item => item === printerData.value[key]) if (findIndex !== -1) { defultNetPrinterValue.value = findIndex + '' recordIndex.value = defultNetPrinterValue.value } } } } retryActive.value = (+getStorage('printerRetrySize')) + '' defaultPrinterValue.value = getStorage('defaultPrinter') || '2' } // // 打印机名字 // const printerName = computed(() => { // for (let key in printerData.value) { // if (key == store.state.storeInfo.allStoreInfo.printerVendorID) { // return printerData.value[key] // } // } // }) // 是否禁用打印机 const printerDisabled = ref(0) // IM单聊状态是否开启 const imMtStoreStatus = ref(0) // IM单聊状态是否开启 const imEbStoreStatus = ref(0) // 门店是否可自提 const isDeliverSelf = ref(false) // 美团门店信息 const mtStoreInfo = ref({}) // 饿百门店信息 const ebStoreInfo = ref({}) // 是否含有美团门店 const isExistMtStore = ref(false) // 是否含有饿百门店 const isExistEbStore = ref(false) /** * 京西版权信息 */ interface CopyRightType { id: number title: string url: string } const copyRight = ref>([ { id: 1, title: '用户协议', url: '/subPages/agreement/user', }, { id: 2, title: '隐私协议', url: '/subPages/agreement/privacy', }, { id: 3, title: '关于京西', url: '/subPages/agreement/about', }, ]) // 未拣货提醒 const smsNotifyData = ref>(['不提醒', '拣货超时短信提醒', '拣货超时电话提示']) const smsNotify = ref('0') function bindMultiPickerChange(item: AnyObject) { if (store.state.storeInfo.allStoreInfo.packageSwitch === 1) { let tel = store.state.storeInfo.allStoreInfo.marketManPhone ? store.state.storeInfo.allStoreInfo.marketManPhone : "18048531223" uni.jxAlert({ title: '设置失败', content: `非常抱歉,无法设置拣货提醒,请联系运营${tel}` }) return } smsNotify.value = item.detail.value switchSmsNotify() } // 切换未拣货提示方式 async function switchSmsNotify() { let data = { storeID: getStorage('storeID'), payload: JSON.stringify({ 'smsNotify': smsNotify.value }) } let res = await merchant.update_store(data) if (res.code != 0) return toast('切换失败') } /************************************************* * 默认打印机设备 */ const defaultPrinterValue = ref('0') const defaultPrinter = ref>(['蓝牙打印机', '网络打印机', '手动选择打印机']) // 切换打印设备 function defaultPrinterChange(e: AnyObject) { defaultPrinterValue.value = e.detail.value setStorage('defaultPrinter', e.detail.value) } /** * 选择网络打印机 */ async function updateNetPrinter(item: AnyObject) { if (item.detail.value !== '0') { defultNetPrinterValue.value = item.detail.value for (let i in netPrinter.value) { if (netPrinter.value[i][0] + '打印机' === netPrinterData.value[item.detail.value]) { currentNetPrinter.value = netPrinter.value[i] popup.value.open() } } } else { defultNetPrinterValue.value = '' let res = await merchant.update_store({ storeID: store.state.storeInfo.allStoreInfo.id, payload: JSON.stringify({ printerVendorID: 0, printerSN: '', printerKey: '' }) }) if (res.code == '0') { toast("删除成功", 1); getStores() } else { toast("删除失败", 2); } } } /** * 绑定网络打印机 */ async function handleConfirm() { if (!bindNetPrinter.value.printerSN) return toast(`请输入${currentNetPrinter.value[1]}`, 2) if (currentNetPrinter.value[2] !== '不填' && !bindNetPrinter.value.printerKey) return toast(`请输入${currentNetPrinter.value[2]}`, 2) // if (this.storeInfo.printerSN) { // json.isPrintCancelOrder = this.storeInfo.isPrintCancelOrder // json.isPrintRefundOrder = this.storeInfo.isPrintRefundOrder // } let printerVendorID = '' for (let i in printerData.value) { if (netPrinterData.value[+defultNetPrinterValue.value] === printerData.value[i]) printerVendorID = i } let res = await merchant.update_store({ storeID: store.state.storeInfo.allStoreInfo.id, payload: JSON.stringify({ printerVendorID, printerSN: bindNetPrinter.value.printerSN, printerKey: bindNetPrinter.value.printerKey }) }) if (res.code == '0') { toast("绑定成功", 1) getStores() } else { toast("绑定失败", 2) } bindNetPrinter.value.printerSN = '' bindNetPrinter.value.printerKey = '' popup.value.close() } /** * 扫码绑定打印机 易联云 */ function scanCode() { uni.scanCode({ success: async ({ result }) => { let res = await merchant.bind_net_printer({ storeID: store.state.storeInfo.allStoreInfo.id, data: result }) if (res.code == 0) { toast('绑定成功', 1) defultNetPrinterValue.value = '2' defultNetPrinterValue.value = recordIndex.value getStores() cancelPopup() } else { toast('绑定失败', 2) defultNetPrinterValue.value = recordIndex.value cancelPopup() } }, fail: () => { toast('取消扫码', 2) cancelPopup() }, }) } /** * 获取门店信息 */ async function getStores() { await store.dispatch('storeInfo/getOneStore',getStorage("storeID")) } // /** // * 绑定打印机 // * 没有打印机跳转到物料商城购买打印机 // * 有打印机切是京西云的打印机跳转到京西云打印机小程序 // */ // function bindPrinter(type = '未绑定') { // if (type == '未绑定') { // if (store.state.storeInfo.storeStatus === -2) { // uni.jxAlert({ // title: '物料申请', // content: '门店已被禁用,请联系运营', // }) // } // uni.navigateToMiniProgram({ // appId: 'wx4b5930c13f8b1170', // path: `pages/index/index?storeID=666666&fromStoreID=${getStorage('storeID')}&storeType=c4`, // success: (res) => { // toast('即将进入京西菜市') // }, // fail: (err) => { // toast('取消申请') // }, // }) // } else if (type == '京西云打印机') { // uni.navigateToMiniProgram({ // appId: 'wx2bfbc02e6251b71b', // path: 'pages/home/home', // success: (res) => { // toast('即将进入京西云打印机') // }, // fail: (err) => { // toast('取消操作') // }, // }) // } else { // uni.jxAlert({ // title: type, // content: `您当前使用的是【${type}】,如有问题请联系运营`, // }) // } // } /** * 取消绑定打印机弹框 */ function cancelPopup() { defultNetPrinterValue.value = recordIndex.value bindNetPrinter.value.printerSN = '' bindNetPrinter.value.printerKey = '' popup.value.close() } /** * 清空打印队列 */ async function DeletePrinterSeq() { let data = { storeIDs: JSON.stringify([getStorage('storeID')]) } let res = await merchant.delete_printer_seq(data) if (res.code == 0) { toast('清空队列成功', 1) } else { toast('清空队列失败', 2) } } /** * 网络打印机禁用开关 */ async function switchprinterDisabled(e: AnyObject) { let data = { storeID: getStorage('storeID'), payload: JSON.stringify({ printerDisabled: e.detail.value ? 1 : 0 }) } let res = await merchant.update_store(data) } /** * IM单聊状态设置 */ async function switchImMtStoreStatus(e: AnyObject, vendorID: number) { let data = [ { vendorID: vendorID, vendorStoreID: vendorID === 1 ? mtStoreInfo.value.vendorStoreID + '' : ebStoreInfo.value.vendorStoreID + '', vendorOrgCode: vendorID === 1 ? mtStoreInfo.value.vendorOrgCode + '' : ebStoreInfo.value.vendorOrgCode + '', imStatus: e.detail.value ? 1 : 0 } ] let res = await merchant.set_mt_store_im_status({ data: JSON.stringify(data) }) if (res.code == 0) { let brr: any = [] store.state.storeInfo.imOnlineStatus.forEach(item => { if (item.vendorID === vendorID) brr.push({ ...item, imStatus: e.detail.value ? 1 : 0 }) else brr.push({ ...item }) }) store.commit('storeInfo/setImOnlineStatus', brr) } else { uni.jxAlert({ title: '提示', content: `修改失败:${res.desc || res.data}`, success: () => { // chatData.value.pop() } }) } } /** * 是否打印Upc */ function switchUpc(e: AnyObject) { setStorage('isPrinterUpc', e.detail.value) } /************************************************* * 是否开启打印机兼容模式 */ function switchCompatible(e: AnyObject) { console.log('ZSW-e.detail.value', e.detail.value); setStorage('printerCompatible', e.detail.value) } /** * 蓝牙打印机字体大小 */ const printerFontSize = ref>(['小号', '中号', '大号', '开发者模板']) const retryActive = ref('0') function changeRetry(e: AnyObject) { retryActive.value = e.detail.value setStorage('printerRetrySize', +e.detail.value) } /** * 蓝牙打印机设置 */ function bluetoothPrinterSetUp() { uni.navigateTo({ url: '/subPages/merchantChild/printerSetUp/printerSetUp' }) } /** * 京西协议信息 */ function copyRightFn(url: string) { uni.navigateTo({ url: url }) } /** * 当前打印机名字 */ const newPrinterName = ref('') onShow(() => { newPrinterName.value = getStorage('deviceName') || '未连接' }) /************************************************* * 后台运行能力 */ /************************************************* * 退出登录 */ function outLogin() { uni.vibrateShort({}) logOutFn() uni.navigateTo({ url: '/subPages/login/wxLogin/wxLogin', animationType: 'zoom-out', }) } /************************************************* * 是否打印机商品价格 */ function switchgoodsMoney(e: AnyObject) { setStorage('printerGoodsMoney', e.detail.value) } /** * 跳转到设置营业状态页面 */ function jumpBusinessStatus() { uni.navigateTo({url: '/subPages/merchantChild/setBusinessStatus/setBusinessStatus'}) } /** * 跳转到发票设置页面 (饿百) */ function jumpInvoiceSet() { uni.navigateTo({url: '/subPages/merchantChild/setInvoiceEB/setInvoiceEB'}) } /************************************************* * 去修改营业时间 */ async function setTime() { uni.navigateTo({ url: `/subPages/merchantChild/setBusinessTime/setBusinessTime` }) } /*************************************************** * 修改自提的类型 */ async function switchJxDeliverySelf(e:AnyObject) { let res = await merchant.update_store_vendor_map({ storeID:getStorage('storeID'), vendorID:9, payload:JSON.stringify({ isDeliverySelf:e.detail.value ? 1 : 0 }) }) } return { copyRight, // 京西版权信息 smsNotifyData, // 未拣货选项 defaultPrinter, // 选择默认打印设备 defaultPrinterChange, // 切换打印设备 defaultPrinterValue, // 默认选中设备 smsNotify, // 选中提醒方式 bindMultiPickerChange, // 未拣货选择提醒方式 copyRightFn, // 京西协议 // printerName, // 绑定的打印机品牌 // bindPrinter, // 绑定打印机 bluetoothPrinterSetUp, // 蓝牙打印机设置 switchUpc, // 是否打印Upc newPrinterName, // 当前绑定打印机设备 DeletePrinterSeq, // 清空打印队列 printerDisabled, // 是否禁用网络打印机 switchprinterDisabled, // 网络打印机禁用开关 imMtStoreStatus, // IM单聊状态是否开启 imEbStoreStatus, // IM单聊状态是否开启 饿百 isDeliverSelf, // 京西 switchJxDeliverySelf, // 切换自送 switchImMtStoreStatus, // 更改IM单聊门店状态 isExistMtStore, // 是否绑定美团门店 isExistEbStore, // 是否绑定饿百门店 printerFontSize, // 蓝牙打印机字体大小 retryActive, // 默认选中重试次数 changeRetry, // 选择重试次数 switchCompatible, // 打印机兼容模式 outLogin, // 退出登录 switchgoodsMoney, // 是否打印商品价格 netPrinterData, // 网络打印机 defultNetPrinterValue, // 默认选中的网络打印机 updateNetPrinter, // 选择网络打印机 popup, // 弹框实例 scanCode, // 易联云 扫码绑定打印机 cancelPopup, // 取消绑定打印机弹框 currentNetPrinter, // 当前选中的网络打印机需填写的数据 bindNetPrinter, // 绑定的网络打印机的值 v-model handleConfirm, // 绑定网络打印机 setTime, // 去修改营业时间 jumpBusinessStatus, // 跳转到营业状态页面 jumpInvoiceSet, // 跳转到发票设置页面 store } } export default setUp