Files
medical-mall/unpackage/cache/.app-android/sourcemap/pages/mall/consumer/coupons.kt.map

1 line
5.9 KiB
Plaintext

{"version":3,"sources":["pages/mall/consumer/coupons.uvue","pages/user/change-password.uvue","pages/main/index.uvue"],"sourcesContent":["<template>\r\n <view class=\"coupons-page\">\r\n <view class=\"coupon-list\">\r\n <view v-if=\"coupons.length === 0\" class=\"empty-state\">\r\n <text class=\"empty-icon\">🎫</text>\r\n <text class=\"empty-text\">暂无优惠券</text>\r\n </view>\r\n \r\n <view v-else v-for=\"(coupon, index) in coupons\" :key=\"index\" class=\"coupon-item\">\r\n <view class=\"coupon-left\">\r\n <text class=\"coupon-amount\">{{ coupon.amount }}</text>\r\n <text class=\"coupon-type\">优惠券</text>\r\n </view>\r\n <view class=\"coupon-right\">\r\n <text class=\"coupon-title\">{{ coupon.title }}</text>\r\n <text class=\"coupon-expiry\">有效期至: {{ coupon.expiry }}</text>\r\n <button class=\"use-btn\" @click=\"useCoupon(coupon)\">去使用</button>\r\n </view>\r\n </view>\r\n </view>\r\n </view>\r\n</template>\r\n\r\n<script setup lang=\"uts\">\r\nimport { ref, onMounted } from 'vue'\r\nimport supabaseService from '@/utils/supabaseService.uts'\r\nimport type { UserCoupon } from '@/utils/supabaseService.uts'\r\n\r\ntype Coupon = {\r\n title: string\r\n amount: string\r\n expiry: string\r\n id: string\r\n}\r\n\r\nconst coupons = ref<Coupon[]>([])\r\n\r\nconst loadCoupons = async () => {\r\n uni.showLoading({ title: '加载中...' })\r\n try {\r\n const userCoupons = await supabaseService.getUserCoupons(1)\r\n const couponList: Coupon[] = []\r\n for (let i = 0; i < userCoupons.length; i++) {\r\n const item = userCoupons[i]\r\n const amountVal = item.amount ?? 0\r\n const expiryVal = (item.expire_at != null && item.expire_at !== '') \r\n ? item.expire_at.substring(0, 10) \r\n : '长期有效'\r\n const coupon: Coupon = {\r\n id: item.id,\r\n title: (item.template_name != null && item.template_name !== '') ? item.template_name : '优惠券',\r\n amount: `¥${amountVal}`,\r\n expiry: expiryVal\r\n } as Coupon\r\n couponList.push(coupon)\r\n }\r\n coupons.value = couponList\r\n } catch (e) {\r\n console.error('加载优惠券失败', e)\r\n coupons.value = []\r\n } finally {\r\n uni.hideLoading()\r\n }\r\n}\r\n\r\nonMounted(() => {\r\n loadCoupons()\r\n})\r\n\r\nconst useCoupon = (coupon: Coupon) => {\r\n uni.switchTab({\r\n url: '/pages/main/index'\r\n })\r\n}\r\n</script>\r\n\r\n<style>\r\n.coupons-page {\r\n padding: 15px;\r\n background-color: #f5f5f5;\r\n flex: 1;\r\n}\r\n\r\n.empty-state {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n padding-top: 100px;\r\n}\r\n\r\n.empty-icon {\r\n font-size: 60px;\r\n margin-bottom: 20px;\r\n}\r\n\r\n.empty-text {\r\n font-size: 16px;\r\n color: #999;\r\n}\r\n\r\n.coupon-item {\r\n display: flex;\r\n background-color: white;\r\n border-radius: 8px;\r\n margin-bottom: 15px;\r\n overflow: hidden;\r\n box-shadow: 0 2px 8px rgba(0,0,0,0.05);\r\n}\r\n\r\n.coupon-left {\r\n width: 100px;\r\n background: linear-gradient(135deg, #FF9800, #FF5722);\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n color: white;\r\n padding: 15px;\r\n}\r\n\r\n.coupon-amount {\r\n font-size: 24px;\r\n font-weight: bold;\r\n}\r\n\r\n.coupon-type {\r\n font-size: 12px;\r\n margin-top: 5px;\r\n}\r\n\r\n.coupon-right {\r\n flex: 1;\r\n padding: 15px;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n}\r\n\r\n.coupon-title {\r\n font-size: 16px;\r\n font-weight: bold;\r\n color: #333;\r\n margin-bottom: 8px;\r\n}\r\n\r\n.coupon-expiry {\r\n font-size: 12px;\r\n color: #999;\r\n margin-bottom: 10px;\r\n}\r\n\r\n.use-btn {\r\n align-self: flex-end;\r\n font-size: 12px;\r\n background-color: #FF5722;\r\n color: white;\r\n padding: 4px 12px;\r\n border-radius: 15px;\r\n line-height: 1.5;\r\n}\r\n</style>\r\n",null,null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;YAmCA,IAAM,UAAU,QAAI;YAEpB,IAAM,cAAc,OAAK,WAAA,IAAA,EAAM;gBAAA,OAAA,eAAA;2DACT,QAAO;wBACzB,IAAI;4BACA,IAAM,cAAc,MAAM,gBAAgB,cAAc,CAAC,CAAC;4BAC1D,IAAM,qBAAY,UAAW,KAAE;gCAC/B;gCAAK,IAAI,YAAI,CAAC;gCAAd,MAAgB,EAAC,CAAA,CAAG,YAAY,MAAM;oCAClC,IAAM,OAAO,WAAW,CAAC,EAAE;oCAC3B,IAAM,YAAY,KAAK,MAAM,CAAA,EAAA,CAAI,CAAC;oCAClC,IAAM,YAAY,IAAA,CAAC,KAAK,SAAS,CAAA,EAAA,CAAI,IAAI,CAAA,EAAA,CAAI,KAAK,SAAS,CAAA,GAAA,CAAK,EAAE,GAC5D;wCAAA,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE;oCAAA,EAC9B,IAAM,CAAN;wCAAA;oCAAA;oCACN,IAAM,QAAQ,SAKT,OAJD,KAAI,KAAK,EAAE,EACX,QAAO,IAAA,CAAC,KAAK,aAAa,CAAA,EAAA,CAAI,IAAI,CAAA,EAAA,CAAI,KAAK,aAAa,CAAA,GAAA,CAAK,EAAE,GAAI;wCAAA,KAAK,aAAa;oCAAA,EAAG,IAAK,CAAL;wCAAA;oCAAA;oCAAK,EAC7F,SAAQ,WAAI,WACZ,SAAQ;oCAEZ,WAAW,IAAI,CAAC;oCAZoB;;;4BAcxC,QAAQ,KAAK,GAAG;;yBAClB,OAAO,cAAG;4BACR,QAAQ,KAAK,CAAC,WAAW,GAAA;4BACzB,QAAQ,KAAK,GAAG,KAAE;;iCACZ;;;iBAGb;YAAD;YAEA,UAAU,KAAK;gBACb;YACF;;YAEA,IAAM,YAAY,IAAC,QAAQ,OAAU;+CAEjC,MAAK;YAET;;uBAxEE,IAmBO,QAAA,IAnBD,WAAM,iBAAc;oBACxB,IAiBO,QAAA,IAjBD,WAAM,gBAAa;wBACX,IAAA,QAAA,KAAO,CAAC,MAAM,CAAA,GAAA,CAAA,CAAA,EAA1B;4BAAA,IAGO,QAAA,gBAH2B,WAAM;gCACtC,IAAkC,QAAA,IAA5B,WAAM,eAAa;gCACzB,IAAqC,QAAA,IAA/B,WAAM,eAAa;;0BAG3B,KAAA;4BAAA,IAUO,UAAA,IAAA,SAAA,CAAA,GAAA,cAAA,UAAA,CAVgC,QAAA,KAAO,EAAA,IAAzB,QAAQ,OAAR,SAAM,UAAA,GAAA,CAAA;uCAA3B,IAUO,QAAA,IAV0C,SAAK,OAAO,WAAM;oCACjE,IAGO,QAAA,IAHD,WAAM,gBAAa;wCACvB,IAAsD,QAAA,IAAhD,WAAM,kBAAe,IAAI,OAAO,MAAM,GAAA,CAAA;wCAC5C,IAAoC,QAAA,IAA9B,WAAM,gBAAc;;oCAE5B,IAIO,QAAA,IAJD,WAAM,iBAAc;wCACxB,IAAoD,QAAA,IAA9C,WAAM,iBAAc,IAAI,OAAO,KAAK,GAAA,CAAA;wCAC1C,IAA4D,QAAA,IAAtD,WAAM,kBAAgB,SAAM,CAAA,CAAA,IAAG,OAAO,MAAM,GAAA,CAAA;wCAClD,IAA+D,UAAA,IAAvD,WAAM,WAAW,aAAK,KAAA;4CAAE,UAAU;wCAAM;2CAAG,OAAG,CAAA,EAAA;4CAAA;yCAAA"}