diff --git a/.vscode/mcp.json b/.vscode/mcp.json new file mode 100644 index 0000000..740f77a --- /dev/null +++ b/.vscode/mcp.json @@ -0,0 +1,10 @@ +{ + "servers": { + "pencil": { + "type": "stdio", + "command": "E:\\work\\Pencil\\resources\\app.asar.unpacked\\out\\mcp-server-windows-x64.exe", + "args": ["--app", "desktop"], + "env": {} + } + } +} \ No newline at end of file diff --git a/src/App.vue b/src/App.vue index 6615054..a67f888 100644 --- a/src/App.vue +++ b/src/App.vue @@ -5,15 +5,69 @@ import { useUserStore } from '@/store' import { strToParams } from '@/utils/tools' - onLaunch((options) => { - // if (options?.path === 'bundle/order/tea-room/order-detail') { - // uni.setStorageSync('transferOrder', { - // orderId: options?.query?.orderId || '', - // shareSource: options?.query?.shareSource || '' - // }) - // console.log("🚀 ~ onLaunch sync:", uni.getStorageSync('transferOrder')) + const showWeixinUpdateFailedModal = () => { + // #ifdef MP-WEIXIN + uni.showModal({ + title: '更新失败', + content: '新版本下载失败,请关闭当前小程序后重新进入。', + showCancel: false, + confirmText: '关闭小程序', + success: () => { + if (typeof wx.exitMiniProgram === 'function') { + wx.exitMiniProgram() + return + } + + showWeixinUpdateFailedModal() + }, + }) + // #endif + } + + const setupWeixinForcedUpdate = () => { + // #ifdef MP-WEIXIN + if (typeof wx.getUpdateManager !== 'function') { + return + } + + const updateManager = wx.getUpdateManager() + + updateManager.onCheckForUpdate(({ hasUpdate }) => { + if (!hasUpdate) { + return + } + + uni.showLoading({ + title: '新版本下载中', + mask: true, + }) + }) + + updateManager.onUpdateReady(() => { + uni.hideLoading() + uni.showModal({ + title: '更新提示', + content: '检测到新版本,需重启小程序完成更新。', + showCancel: false, + confirmText: '立即更新', + success: ({ confirm }) => { + if (confirm) { + updateManager.applyUpdate() + } + }, + }) + }) + + updateManager.onUpdateFailed(() => { + uni.hideLoading() + showWeixinUpdateFailedModal() + }) + // #endif + } + + onLaunch((options) => { + setupWeixinForcedUpdate() - // } // 处理直接进入页面路由的情况:如h5直接输入路由、微信小程序分享后进入等 // https://github.com/unibest-tech/unibest/issues/192 if (options?.path) { @@ -22,10 +76,6 @@ else { navigateToInterceptor.invoke({ url: '/' }) } - - // uni.setStorageSync(LOCATION_LAT_KEY, LOCATION_DEFAULT_LAT) - // uni.setStorageSync(LOCATION_LNG_KEY, LOCATION_DEFAULT_LNG) - // uni.setStorageSync(LOCATION_CITY_KEY, LOCATION_DEFAULT_CITY) }) onShow((options) => { if (options?.path === 'bundle/order/tea-room/order-detail') { diff --git a/src/api/login.ts b/src/api/login.ts index a82d272..93f8e7d 100644 --- a/src/api/login.ts +++ b/src/api/login.ts @@ -94,7 +94,7 @@ export function getWxCode() { * @param params 微信登录参数,包含code, reg_source(注册来源,可选) * @returns Promise 包含登录结果 */ -export function wxLogin(data: { code: string, source?: number }) { +export function wxLogin(data: { code: string, source?: number, store_id?: number }) { return http.Post('/api/login/mnpLogin', data, { diff --git a/src/api/tea-package.ts b/src/api/tea-package.ts index 2591422..209c873 100644 --- a/src/api/tea-package.ts +++ b/src/api/tea-package.ts @@ -16,4 +16,11 @@ export function getTeaPackageList() { */ export function getTeaPackageDetail(id: number) { return http.Post('/api/Teamaster/teamasterGroupDetails', { id }) -} \ No newline at end of file +} + +/** + * 获取套餐优惠券 + */ +export function getTeaPackageCoupon(id: number, company_name: string, real_name: string, mobile: string ) { + return http.Post('/api/userCoupon/submitYh', { id, company_name, real_name, mobile }) +} diff --git a/src/api/tea-room.ts b/src/api/tea-room.ts index 87c3564..cc840fb 100644 --- a/src/api/tea-room.ts +++ b/src/api/tea-room.ts @@ -51,6 +51,7 @@ export interface IHomeTeaStoreListParams { latitude: number longitude: number city_area_id?: number + level?: number } export function getHomeTeaStoreList(data: IHomeTeaStoreListParams) { diff --git a/src/api/tea-specialist.ts b/src/api/tea-specialist.ts index e20abba..a729657 100644 --- a/src/api/tea-specialist.ts +++ b/src/api/tea-specialist.ts @@ -110,9 +110,16 @@ export function applyTeaSpecialistRefund(id: number, order_type: number = 10) { * 获取专属圈子标签 */ export function getExclusiveCirclesLabel() { - return http.Post('/api/Teamaster/teamasterLabel', null, + return http.Post('/api/Teamaster/teamasterLabel', null, { meta: { ignoreAuth: true } } ) +} + +/** + * 团体预约茶艺师 + */ +export function reserveGroupTeaSpecialist(data) { + return http.Post('/api/user/reservation', data) } \ No newline at end of file diff --git a/src/api/tea.ts b/src/api/tea.ts index 2380d9b..fe29307 100644 --- a/src/api/tea.ts +++ b/src/api/tea.ts @@ -111,6 +111,31 @@ export function createTeaSpecialistOrder(data: ICreateTeaSpecialistOrderParams) return http.Post('/api/Teamaster/addTeamOrder', data) } +/** + * 创建茶艺师套餐订单 + */ +export interface ICreateTeaSpecialistPackageOrderParams { + team_user_id: number + server_type: number + longitude: number + latitude: number + store_id: number + start_time: number + end_time: number + hours: number + address: string + remrk: string + is_teacup: number + tea_id: string + user_coupon_id: number + server_number: number + team_group_id?: number +} + +export function createTeaSpecialistPackageOrder(data: ICreateTeaSpecialistPackageOrderParams) { + return http.Post('/api/Teamaster/addGroupTeamOrder', data) +} + /*** * 获取订单详情 */ @@ -145,25 +170,4 @@ export interface ITeaSpecialistPayParams { export function teaSpecialistPay(data: ITeaSpecialistPayParams) { return http.Post('/api/pay/yuePay', data) -} - -/** - * 团体预约 - */ -export interface ITeaSpecialistGroupReserveParams { - numbers: string - other_require: string - res_time: string - contact: string - phone: string - code: string - province: string - city: string - district: string - address: string - content: string -} - -export function teaSpecialistGroupReserve(data: ITeaSpecialistGroupReserveParams) { - return http.Post('/api/Teamaster/groupReservation', data) } \ No newline at end of file diff --git a/src/bundle/order/tea-specialist/order-detail.vue b/src/bundle/order/tea-specialist/order-detail.vue index e16c076..c9ccf29 100644 --- a/src/bundle/order/tea-specialist/order-detail.vue +++ b/src/bundle/order/tea-specialist/order-detail.vue @@ -617,7 +617,7 @@ // 获取茶叶列表 const tea = await getTeaTypeList({ team_user_id: order.value.team_user_id, - type: 1 + type: 0 }) teaList.value = tea }, diff --git a/src/bundle/package/claim-coupon.vue b/src/bundle/package/claim-coupon.vue new file mode 100644 index 0000000..2c5761a --- /dev/null +++ b/src/bundle/package/claim-coupon.vue @@ -0,0 +1,109 @@ +{ + "needLogin": true, + "layout": "default", + "style": { + "navigationBarTitleText": "填写资料", + "navigationBarBackgroundColor": "#fff" + } +} + + + + diff --git a/src/bundle/package/detail.vue b/src/bundle/package/detail.vue index cdfb47a..dc76e2e 100644 --- a/src/bundle/package/detail.vue +++ b/src/bundle/package/detail.vue @@ -38,7 +38,7 @@ - 清风套餐-标准品质 + {{ detail.title }} @@ -192,7 +192,8 @@ onLoad((args) => { // 设置套餐ID uni.setStorageSync('teaPackageId', args.id) - console.log('teaPackageId', uni.getStorageSync('teaPackageId')) + uni.setStorageSync('teaPackageType', args.type) + console.log('teaPackageId', uni.getStorageSync('teaPackageId'), uni.getStorageSync('teaPackageType')) teaPackageId.value = args.id Detail.handleInit() }) diff --git a/src/bundle/package/reserve.vue b/src/bundle/package/reserve.vue index 7111691..52c1b2e 100644 --- a/src/bundle/package/reserve.vue +++ b/src/bundle/package/reserve.vue @@ -430,7 +430,7 @@ import { useMessage, useToast } from 'wot-design-uni' import { router, toPlus, previewImage } from '@/utils/tools' import PriceFormat from '@/components/PriceFormat.vue' import { OrderType } from '@/utils/order' -import { getTeaTypeList, createTeaSpecialistOrder } from '@/api/tea' +import { getTeaTypeList, createTeaSpecialistPackageOrder } from '@/api/tea' import type { ITeaSpecialistFuture7DaysResult, ITeaTypeListResult } from '@/api/types/tea' import BookingTime from '@/components/BookingTime.vue' import { getTeaSpecialistDetail, getPackageTeaSpecialistFeeDetails } from '@/api/tea-specialist' @@ -654,7 +654,7 @@ const Reserve = { handleInit: async () => { const tea = await getTeaTypeList({ team_user_id: id.value, - type: 1 + type: uni.getStorageSync('teaPackageType') }) teaList.value = tea as ITeaTypeListResult[] }, @@ -697,7 +697,7 @@ const Reserve = { return } - const res = await getTeaPackageDetail(teaPackageId.value) + const res = await getTeaPackageDetail(uni.getStorageSync('teaPackageId')) teaPackage.value = res[0] sevenDay.minimum_time = Number(teaPackage.value.hour) // costBill.value.package = package.price @@ -730,9 +730,7 @@ const Reserve = { * 切换预定茶叶选择 */ handleToggleTea: (id: number, name: string, price: number) => { - console.log("🚀 ~ id:", id) const index = selectedTea.value.indexOf(id) - console.log("🚀 ~ index:", index) if (index >= 0) { // 已选择,取消选择 selectedTea.value.splice(index, 1) @@ -744,7 +742,6 @@ const Reserve = { selectedTeaTxt.value.push(name) selectedTeaPrice.value.push(price) } - console.log("🚀 ~ selectedTea.value:", selectedTea.value) totalSelectedTeaPrice.value = toPlus(selectedTeaPrice.value) bill.value.teaService.total = Number(totalSelectedTeaPrice.value) // 更新茶艺服务费用 @@ -759,8 +756,6 @@ const Reserve = { */ handleToChooseStore: () => { uni.$on('chooseTeaHouse', params => { - console.log("🚀 ~ params:", params) - uni.$off('chooseTeaHouse') teaHouse.value = params @@ -965,11 +960,10 @@ const Reserve = { } try { - const res = await createTeaSpecialistOrder(params) + const res = await createTeaSpecialistPackageOrder(params) toast.close() uni.$on('payment', params => { - console.log("🚀 ~ params:", params) setTimeout(() => { uni.$off("payment") isSubmitting.value = false @@ -978,7 +972,8 @@ const Reserve = { // 结果通知改为TeaPackage router.reLaunch(`/pages/notice/reserve?type=${OrderType.TeaPackage}&orderId=${params.orderId}&teaPackageTitle=${teaPackage.value.title}`) } else { - router.switchTab('/pages/index/index') + toast.info('订单未支付') + router.reLaunch('/bundle/order/tea-specialist/order-list', 800) } }, 1000) }) diff --git a/src/bundle/package/service.vue b/src/bundle/package/service.vue index 6f246fa..6ce0908 100644 --- a/src/bundle/package/service.vue +++ b/src/bundle/package/service.vue @@ -38,7 +38,17 @@