diff --git a/common/config.js b/common/config.js index 3992b85..95703ed 100644 --- a/common/config.js +++ b/common/config.js @@ -32,11 +32,17 @@ uni.conf = { baseUrlwws, }; +console.log('uni.conf',uni.conf) + export const changeEnv = (env) => { if (env === "test") { + let baseUrl = "http://192.168.1.42" + // #ifdef H5 + baseUrl = "/api" + // #endif uni.conf = { debug: true, - baseUrl: "http://192.168.1.42", + baseUrl, phpUrl: 'http://192.168.1.42:8787/api/', phpChatWx: 'ws://192.168.1.42:2348', version: 100, diff --git a/components/paymentMethod.vue b/components/paymentMethod.vue index 1c2c9fb..7b3aad7 100644 --- a/components/paymentMethod.vue +++ b/components/paymentMethod.vue @@ -21,7 +21,7 @@ {{ item.name }} - + 当前余额¥{{ orderVIP ? orderVIP.amount || 0 : 0 }} diff --git a/distribution/shop-detail/components/share-popup.vue b/distribution/shop-detail/components/share-popup.vue index 97dee80..f8fc284 100644 --- a/distribution/shop-detail/components/share-popup.vue +++ b/distribution/shop-detail/components/share-popup.vue @@ -100,17 +100,61 @@ function close() { function save() { show.value = false; + // 保存图片到相册 uni.saveImageToPhotosAlbum({ filePath: code.value, success: function () { uni.showToast({ title: "保存成功", + icon: 'none' }); }, - fail: function () { - uni.showToast({ - title: "保存失败", - }); + fail: function (err) { + console.log('保存失败原因:', err); + // 判断是否为授权拒绝(微信小程序授权拒绝的特征) + if (err.errMsg.includes('auth deny') || err.errMsg.includes('authorize fail')) { + // 弹出提示引导用户去设置页开启授权 + uni.showModal({ + title: '授权提示', + content: '保存图片需要授权访问相册,请前往设置开启授权', + showCancel: true, + cancelText: '取消', + confirmText: '去设置', + success: function (res) { + if (res.confirm) { + // 跳转到微信小程序的授权设置页 + uni.openSetting({ + success: function (settingRes) { + // 检查用户是否开启了相册授权 + if (settingRes.authSetting['scope.writePhotosAlbum']) { + uni.showToast({ + title: '授权成功,可重新保存', + icon: 'none' + }); + } else { + uni.showToast({ + title: '未开启授权,保存失败', + icon: 'none' + }); + } + }, + fail: function () { + uni.showToast({ + title: '打开设置失败', + icon: 'none' + }); + } + }); + } + } + }); + } else { + // 非授权问题的保存失败(如文件路径错误、系统问题等) + uni.showToast({ + title: "保存失败", + icon: 'none' + }); + } }, }); diff --git a/distribution/shop-detail/index.vue b/distribution/shop-detail/index.vue index 59aa06f..9fb1639 100644 --- a/distribution/shop-detail/index.vue +++ b/distribution/shop-detail/index.vue @@ -612,6 +612,9 @@ const showInviteCode = computed(() => { ) { return true; } + if( config.openType == "auto" ){ + return true; + } if (!state.distributionUser && config.openType == "manual") { return true; } diff --git a/pages/order/components/orderInfo.vue b/pages/order/components/orderInfo.vue index aa6a267..0e0a31a 100644 --- a/pages/order/components/orderInfo.vue +++ b/pages/order/components/orderInfo.vue @@ -760,6 +760,7 @@ usePoints.value = false; cartStore.setUserPoints(0); } else { + cartStore.fullReductionActivities = fullReductionActivities; if (back_discountActivity) { calcDiscountActivity(); } @@ -795,6 +796,9 @@ } console.log("当前满减门槛", discountActivity.value); } + + + let fullReductionActivities=[] async function getDiscountActivity() { const res = await discountActivityApi.config({ shopId: uni.cache.get("shopId"), @@ -804,6 +808,7 @@ } discountActivityRes.value = res; cartStore.fullReductionActivities = [res]; + fullReductionActivities=[res]; calcDiscountActivity(); } diff --git a/pages/order/confirm-order.vue b/pages/order/confirm-order.vue index f736501..55268c0 100644 --- a/pages/order/confirm-order.vue +++ b/pages/order/confirm-order.vue @@ -150,6 +150,7 @@ import { back } from "@/utils/uniapp.js"; + import * as limitTimeDiscountapi from '@/common/api/market/limitTimeDiscount.js'; import { onLoad, onUnload @@ -1096,6 +1097,8 @@ Object.assign(listinfo, res); getOrderInfoAfterCalcInit(res); } + + const limitTimeDiscountRes=ref(null) async function init(opt) { await storeuser.actionsproductqueryProduct(); @@ -1117,6 +1120,17 @@ if (res && typeof res == "object") { setOrder(res); } + }else{ + const limitRes = await limitTimeDiscountapi.getConfig({ + shopId: uni.cache.get('shopId') + }); + if (limitRes && typeof limitRes == 'object') { + limitTimeDiscountRes.value = limitRes; + + } else { + limitTimeDiscountRes.value = null; + + } } //获取店铺信息 const shopInfoRes = await APIusershopInfodetail({ diff --git a/pages/order/index.vue b/pages/order/index.vue index 3ca464d..6972cb1 100644 --- a/pages/order/index.vue +++ b/pages/order/index.vue @@ -85,7 +85,7 @@ 删除订单 - 去付款 再来一单 diff --git a/pages/product/index.vue b/pages/product/index.vue index 1e676a3..53aeab0 100644 --- a/pages/product/index.vue +++ b/pages/product/index.vue @@ -606,7 +606,8 @@ import isBetween from 'dayjs/plugin/isBetween'; import { - APIshopUserInfo,APIusershopInfodetail + APIshopUserInfo, + APIusershopInfodetail } from "@/common/api/member.js"; dayjs.extend(isBetween); import { @@ -1535,10 +1536,10 @@ for (let cart of arr) { const findItem = cartStore.carts.find(v => v.id == cart.id) - if (findItem&&findItem.is_time_discount != cart.is_time_discount) { + if (findItem && findItem.is_time_discount != cart.is_time_discount) { result.push({ id: cart.id, - is_time_discount: findItem.is_time_discount + is_time_discount: findItem.is_time_discount }) } } @@ -1555,7 +1556,7 @@ } } - + let socketInitFinished = false // 收到的消息变化 async function onMessage(Message) { @@ -1587,9 +1588,33 @@ } + if (Message.operate_type == 'rottable_error') { + uni.showModal({ + title: '提示', + content: Message.msg, + showCancel: true, + cancelText: '舍弃', + confirmText: '合并', + success(res) { + if (res.confirm) { + startUseTable({ + is_hb: 2 + }) + } else { + startUseTable({ + is_hb: 2, + give_up: 1 + }) + } + } + }) + } + // 转桌成功 - if (Message.operate_type == 'rottable' && Message.status == 1) { + if (Message.operate_type == 'rottable') { + console.log('转桌成功了'); + console.log(Message); // uni.showToast({ // title: '扫码成功,请下单', @@ -1610,7 +1635,7 @@ shop_id: uni.cache.get('shopId'), time_dis_info: cartStore.limitTimeDiscount }; - + useSocket.sendMessage({ type: 'shopping', operate_type: 'time_discount_save', @@ -1663,7 +1688,7 @@ } // 提示 - if (Message.status == 0 && Message.type != 'no_suit_num' && Message.type != 'time_discount') { + if (Message.status == 0 && Message.type != 'no_suit_num' && Message.type != 'time_discount'&&Message.operate_type != 'rottable_error') { uni.showToast({ title: Message.msg, icon: 'none' @@ -1683,7 +1708,6 @@ } if (Message.operate_type == 'time_discount_save') { cartStore.limitTimeDiscount = Message.data; - console.log('time_discount_save', cartStore.limitTimeDiscount); } //除去p 每次返回都回执消息 @@ -2086,19 +2110,21 @@ } // 开始换桌 - function startUseTable() { + function startUseTable(par) { tableShopInfo.value = uni.cache.get('shopInfo'); const oldTableCode = uni.cache.get('tableCode'); const cartIds = cartStore.carts.map((item) => item.id); const data = { + is_hb: 1, + ...par, type: 'shopping', operate_type: 'rottable', account: tableShopInfo.value.phone, table_code: oldTableCode, new_table_code: uni.cache.get('shopTable').tableCode, cart_id: cartIds, - shop_id: tableShopInfo.value.id + shop_id: tableShopInfo.value.id, }; websocketsendMessage(data); @@ -2183,6 +2209,17 @@ } else { await userStore.actionsproductqueryShop(newTableCode); await userStore.actionsproductqueryProduct(); + const res = await APIhistoryOrder({ + tableCode: uni.cache.get('tableCode') + }); + + if (res && res.id) { + return uni.showModal({ + title: '提示', + content: '目标台桌使用中无法转桌', + showCancel: false + }) + } if (shopInfoRes.shopInfo.isTableFee === 1) { // 免桌位费,直接换桌 startUseTable(); @@ -2191,6 +2228,7 @@ tableInfo.value = uni.cache.get('shopTable'); showTableInfoPeopleNumPopup.value = true; } + } } catch (error) { console.log(error); @@ -2212,11 +2250,11 @@ const shopInfoRes = await APIusershopInfodetail({ shopId: uni.cache.get('shopId') }); - if(shopInfoRes&&shopInfoRes.shopInfo){ + if (shopInfoRes && shopInfoRes.shopInfo) { Object.assign(shopInfo, shopInfoRes.shopInfo); - uni.cache.set('shopInfo',shopInfoRes.shopInfo) + uni.cache.set('shopInfo', shopInfoRes.shopInfo) } - + if (userInfo && typeof userInfo === 'object') { shopUserInfo.value = userInfo @@ -2227,6 +2265,7 @@ if (e.one_more_order && e.order_id) { extraInitPar.one_more_order = 1 extraInitPar.order_id = e.order_id + extraInitPar.user_id = uni.cache.get('userInfo').id||'' } useSocket.connect({ diff --git a/stores/carts.js b/stores/carts.js index d32806f..64466a6 100644 --- a/stores/carts.js +++ b/stores/carts.js @@ -426,7 +426,7 @@ export const useCartsStore = defineStore("cart", () => { } // 提示 - if (Message.status == 0 && Message.type != "no_suit_num") { + if (Message.status == 0 && Message.type != "no_suit_num"&& Message.operate_type != "rottable_error") { uni.showToast({ title: Message.msg, icon: "none", @@ -438,7 +438,6 @@ export const useCartsStore = defineStore("cart", () => { limitTimeDiscount.value = Message.data; } if (Message.operate_type == "time_discount_save") { - console.log("time_discount_save", Message.data); limitTimeDiscount.value = Message.data; } diff --git a/vite.config.js b/vite.config.js index e03862b..0c675b2 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,42 +1,43 @@ // vite.config.js(正确的 CommonJS 配置) -const { defineConfig } = require("vite"); +const { + defineConfig +} = require("vite"); const uni = require("@dcloudio/vite-plugin-uni").default; // uni 插件需要 .default const AutoImport = require("unplugin-auto-import/vite"); // 旧版本 AutoImport 直接导出函数,无需 .default module.exports = defineConfig({ - plugins: [ - uni(), - AutoImport({ - include: [/\.js$/, /\.vue$/, /\.vue\?vue/], - imports: [ - "vue", - { - "@dcloudio/uni-app": [ - "onLoad", - "onShow", - "onHide", - "onUnload", - "onReady", - "onReachBottom", - "onPageScroll", - "uni.request", - "uni.navigateTo", - "uni.showToast", - ], - }, - ], - dts: "src/auto-imports.d.ts", - }), - ], - server: { - hmr: true, - proxy: { - "/api": { - target: "http://192.168.1.42", - changeOrigin: true, - rewrite: (path) => path.replace(/^\/api/, ""), - secure: false, - }, - }, - }, -}); + plugins: [ + uni(), + AutoImport({ + include: [/\.js$/, /\.vue$/, /\.vue\?vue/], + imports: [ + "vue", + { + "@dcloudio/uni-app": [ + "onLoad", + "onShow", + "onHide", + "onUnload", + "onReady", + "onReachBottom", + "onPageScroll", + "uni.request", + "uni.navigateTo", + "uni.showToast", + ], + }, + ], + dts: "src/auto-imports.d.ts", + }), + ], + server: { + proxy: { + '/api': { + // target: 'https://cashier.sxczgkj.com', // 目标服务器地址 + target: 'http://192.168.1.42/', // 目标服务器地址 + changeOrigin: true, // 是否更改请求源 + rewrite: path => path.replace(/^\/api/, '') + }, + }, + }, +}); \ No newline at end of file