feat: add google sign-in, utils, refactor imports

- Restructure API import paths from @/request/api/* to cleaner @/api/[module] format
- Add three new utility classes: PhoneUtils for phone validation, ThrottleUtils and DebounceUtils for rate limiting
- Implement official Google One Tap login flow, add the GIS client script to index.html
- Clean up long inline template attributes in multiple Vue components for better readability
- Fix constant import path and default object return values in booking components
This commit is contained in:
DEV_DSW
2026-05-27 18:51:17 +08:00
parent 5cdef2b692
commit e2891f5793
12 changed files with 209 additions and 132 deletions

View File

@@ -1,24 +1,14 @@
<template>
<div
class="booking-footer border-box bg-white flex flex-items-center font-family-misans-vf"
>
<span
class="amt font-size-20 font-bold color-FF3D60 line-height-28 flex flex-items-center mr-8"
>
<div class="booking-footer border-box bg-white flex flex-items-center font-family-misans-vf">
<span class="amt font-size-20 font-bold color-FF3D60 line-height-28 flex flex-items-center mr-8">
{{ totalAmt }}
</span>
<!-- <div class="flex flex-items-center" @click="emit('detailClick')">
<span class="font-size-12 color-A3A3A3 mr-4">明细</span>
<uni-icons type="up" size="16" color="#A3A3A3" />
</div> -->
<div
class="btn border-box rounded-10 flex flex-items-center ml-auto pl-8"
@click="handleBooking"
>
<img
class="icon"
src="https://oss.nianxx.cn/mp/static/version_101/common/btn.png"
/>
<div class="btn border-box rounded-10 flex flex-items-center ml-auto pl-8" @click="handleBooking">
<img class="icon" src="https://oss.nianxx.cn/mp/static/version_101/common/btn.png" />
<span class="font-size-16 font-500 color-white">立即支付</span>
</div>
</div>
@@ -26,8 +16,8 @@
<script setup>
import { computed, defineProps, defineEmits, ref, onMounted, watch } from "vue";
import { DebounceUtils } from "@/utils";
import { preOrder } from "@/request/api/OrderApi";
import { DebounceUtils } from "@/utils/DebounceUtils";
import { preOrder } from "@/api/order";
const props = defineProps({
modelValue: {
@@ -36,11 +26,11 @@ const props = defineProps({
},
orderData: {
type: Object,
default: () => {},
default: () => { },
},
selectedDate: {
type: Object,
default: () => {},
default: () => { },
},
});

View File

@@ -69,10 +69,11 @@ import UserSection from "./components/UserSection/index.vue";
import RefundPopup from "@/components/RefundPopup/index.vue";
import DetailPopup from "@/components/DetailPopup/index.vue";
import FooterSection from "./components/FooterSection/index.vue";
import { goodsDetail, orderPay } from "@/request/api/GoodsApi";
import { goodsDetail, orderPay } from "@/api/goods";
import { useSelectedDateStore } from "@/store";
import { GOODS_TYPE } from "@/constant/type";
import { ThrottleUtils, PhoneUtils } from "@/utils";
import { GOODS_TYPE } from "@/constants/type";
import { ThrottleUtils } from "@/utils/ThrottleUtils";
import { PhoneUtils } from "@/utils/PhoneUtils";
const refundVisible = ref(false);
const detailVisible = ref(false);