Files
zsw-jx-store/src/subPages/merchantChild/setUp/setUp.ts
2025-12-15 10:46:39 +08:00

595 lines
20 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 系统设置
*/
import merchant from "@/api/https/merchant"
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'
function setUp() {
const { openWeixin, logOutFn } = useGlobalFunc()
// 是否禁用打印机
const printerDisabled = ref<number>(0)
// IM单聊状态是否开启
const imMtStoreStatus = ref<number>(0)
// IM单聊状态是否开启-饿百
const imEbStoreStatus = ref<number>(0)
// 美团门店信息
const mtStoreInfo = ref<AnyObject>({})
// 饿百门店信息
const ebStoreInfo = ref<AnyObject>({})
// 是否含有美团门店
const isExistMtStore = ref<boolean>(false)
// 是否含有饿百门店
const isExistEbStore = ref<boolean>(false)
/**
* 获取页面初始化信息
*/
onShow(async () => {
await getStoreMsg()
})
// 打印机品牌
const printerData = ref<AnyObject>({
0: '未绑定',
201: '飞鹅打印机',
202: '外卖管家打印机',
203: '易联云打印机',
204: '中午云打印机',
205: '京西云打印机',
206: '芯烨云',
207: '大趋智能'
})
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 数据
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 && JSON.stringify(mtStore) !== '{}') {
mtStoreInfo.value = mtStore
isExistMtStore.value = true
let mtStatus = store.state.storeInfo.imOnlineStatus.filter(item => item.vendorID === 1)
imMtStoreStatus.value = mtStatus.length > 0 ? mtStatus[0].imStatus : 0
}
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.length > 0 ? ebStataus[0].imStatus : 0
}
}
// 网络打印机
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]
// }
// }
// })
/**
* 京西版权信息
*/
interface CopyRightType {
id: number
title: string
url: string
}
const copyRight = ref<Array<CopyRightType>>([
{
id: 1,
title: '用户协议',
url: 'https://www.jxc4.com/managerApp/jxdjService.html',
},
{
id: 2,
title: '隐私协议',
url: 'https://www.jxc4.com/managerApp/jxdjPrivacy.html',
},
{
id: 3,
title: '关于京西到家',
url: '/subPages/agreement/updateVersion',
},
])
// 未拣货提醒
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>>(['蓝牙打印机', '网络打印机', '手动选择打印机'])
// 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.jxConfirm({
title: '相机/相册权限说明',
content: '便于您使用该功能扫描打印机上的二维码,快速识别并绑定打印机',
success() {
uni.scanCode({
success: async ({ result }) => {
// emit('scanCode', result)
let data = {
storeID: store.state.storeInfo.allStoreInfo.id,
data: result
}
let res = await merchant.bind_net_printer(data)
if (res.code == 0) {
toast('绑定成功', 1)
defultNetPrinterValue.value = '2'
getStores()
} else {
toast('绑定失败', 2)
}
},
fail: (error) => {
toast('取消扫码', 2)
cancelPopup()
},
})
},
fail() {
defultNetPrinterValue.value = '2'
}
})
}
/**
* 获取门店信息
*/
async function getStores() {
await store.dispatch('storeInfo/getOneStore',getStorage("storeID"))
// let stateRes = await merchant.get_stores({
// storeID: getStorage("storeID")
// });
// if (stateRes.code == 0) {
// let stateData = stateRes.data.stores[0];
// store.commit('storeInfo/setAllStoreInfo', stateData)
// } else {
// toast("系统异常", 2);
// }
}
// /**
// * 绑定打印机
// * 没有打印机跳转到物料商城购买打印机
// * 有打印机切是京西云的打印机跳转到京西云打印机小程序
// */
// function bindPrinter(type = '未绑定') {
// // ios不展示
// if (uni.getSystemInfoSync().platform == 'ios') return
// if (type == '未绑定') {
// if (store.state.storeInfo.storeStatus === -2) {
// uni.jxAlert({
// title: '物料申请',
// content: '门店已被禁用,请联系运营',
// })
// }
// openWeixin(`pages/index/index?storeID=666666&fromStoreID=${getStorage('storeID')}&storeType=c4`, 'gh_0d7e2243b51f')
// } else if (type == '京西云打印机') {
// openWeixin('pages/home/home', 'gh_d0aacb950a2a')
// } 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) {
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, id: number) {
if (id == 3) {
uni.navigateTo({ url: url })
} else {
uni.navigateTo({ url: `/subPages/agreement/jxcs?url=${url}` })
}
}
/**
* 当前打印机名字
*/
const newPrinterName = ref<string>('')
onShow(() => {
newPrinterName.value = getStorage('deviceName') || '未连接'
})
/*************************************************
* 后台运行能力
*/
function backstage() {
switch (uni.getSystemInfoSync().platform) {
case 'android':
uni.navigateTo({ url: '/subPages/merchantChild/backstageApp/backstageApp' })
break;
case 'ios':
uni.jxAlert({
title: '提示',
content: 'IOS暂不支持此功能'
})
break;
}
}
/*************************************************
* 注销账号
*/
function accoutCancellation() {
uni.jxConfirm({
title: '注销账号',
content: '您确定注销账号吗如果确定注销账号请联系官方运行进行注销账号预计7个工作日。',
success: () => {
uni.navigateTo({ url: '/subPages/orderChild/getPhone/getPhone' })
}
})
}
/*************************************************
* 退出登录
*/
function outLogin() {
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` })
}
/**
* 订单提醒
*/
const orderReminder = ref(true)
orderReminder.value = getStorage('defaultOrderReminder') || getStorage('defaultOrderReminder') === '' ? true : false
function changeOrderReminder() {
orderReminder.value = !orderReminder.value
setStorage('defaultOrderReminder', orderReminder.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单聊状态是否开启 饿百
switchImMtStoreStatus, // 更改IM单聊门店状态
isExistMtStore, // 是否绑定美团门店
isExistEbStore, // 是否绑定饿百门店
printerFontSize, // 蓝牙打印机字体大小
retryActive, // 默认选中重试次数
changeRetry, // 选择重试次数
backstage, // 后台运行能力
accoutCancellation, // 注销账号
switchCompatible, // 打印机兼容模式
outLogin, // 退出登录
switchgoodsMoney, // 是否打印商品价格
netPrinterData, // 网络打印机
defultNetPrinterValue, // 默认选中的网络打印机
updateNetPrinter, // 选择网络打印机
popup, // 弹框实例
scanCode, // 易联云 扫码绑定打印机
cancelPopup, // 取消绑定打印机弹框
currentNetPrinter, // 当前选中的网络打印机需填写的数据
bindNetPrinter, // 绑定的网络打印机的值 v-model
handleConfirm, // 绑定网络打印机
setTime, // 去修改营业时间
jumpBusinessStatus, // 跳转到营业状态页面
orderReminder, // 来单提醒
changeOrderReminder, // 改变订单提醒状态
jumpInvoiceSet, // 跳转到发票设置页面
store
}
}
export default setUp