571 lines
19 KiB
TypeScript
571 lines
19 KiB
TypeScript
/**
|
|
* 系统设置
|
|
*/
|
|
|
|
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<AnyObject>({
|
|
0: '未绑定',
|
|
201: '飞鹅打印机',
|
|
202: '外卖管家打印机',
|
|
203: '易联云打印机',
|
|
204: '中午云打印机',
|
|
205: '京西云打印机',
|
|
})
|
|
const netPrinterData = ref<Array<string>>(['无', '外卖管家打印机', '易联云打印机', '中午云打印机', '京西云打印机'])
|
|
const defultNetPrinterValue = ref<string>('')
|
|
const netPrinter = ref()
|
|
const recordIndex = ref('') // 记录打印机最初的序列号
|
|
const popup = ref<any>(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<number>(0)
|
|
|
|
// IM单聊状态是否开启
|
|
const imMtStoreStatus = ref<number>(0)
|
|
|
|
// IM单聊状态是否开启
|
|
const imEbStoreStatus = ref<number>(0)
|
|
|
|
// 门店是否可自提
|
|
const isDeliverSelf = ref<boolean>(false)
|
|
|
|
// 美团门店信息
|
|
const mtStoreInfo = ref<AnyObject>({})
|
|
|
|
// 饿百门店信息
|
|
const ebStoreInfo = ref<AnyObject>({})
|
|
|
|
// 是否含有美团门店
|
|
const isExistMtStore = ref<boolean>(false)
|
|
|
|
// 是否含有饿百门店
|
|
const isExistEbStore = ref<boolean>(false)
|
|
|
|
|
|
/**
|
|
* 京西版权信息
|
|
*/
|
|
interface CopyRightType {
|
|
id: number
|
|
title: string
|
|
url: string
|
|
}
|
|
const copyRight = ref<Array<CopyRightType>>([
|
|
{
|
|
id: 1,
|
|
title: '用户协议',
|
|
url: '/subPages/agreement/user',
|
|
},
|
|
{
|
|
id: 2,
|
|
title: '隐私协议',
|
|
url: '/subPages/agreement/privacy',
|
|
},
|
|
{
|
|
id: 3,
|
|
title: '关于京西',
|
|
url: '/subPages/agreement/about',
|
|
},
|
|
])
|
|
|
|
// 未拣货提醒
|
|
const smsNotifyData = ref<Array<string>>(['不提醒', '拣货超时短信提醒', '拣货超时电话提示'])
|
|
const smsNotify = ref<string>('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<string>('0')
|
|
const defaultPrinter = ref<Array<string>>(['蓝牙打印机', '网络打印机', '手动选择打印机'])
|
|
// 切换打印设备
|
|
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<Array<string>>(['小号', '中号', '大号', '开发者模板'])
|
|
const retryActive = ref<string>('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<string>('')
|
|
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 |