songzhen 1 tháng trước cách đây
mục cha
commit
aa7bc032f0

BIN
src/assets/img/home/home_menu_travel_p.png


BIN
src/assets/img/profile/profile_my_comment.png


BIN
src/assets/img/profile/profile_travel_note.png


BIN
src/assets/img/profile/profile_wallet.png


BIN
src/assets/img/profile/wallet_bg.png


+ 1 - 1
src/components/Car/Search/CarList/Item.vue

@@ -34,7 +34,7 @@
       <div class="flex items-center justify-between">
         <div>
           <div class="truncate text-3xl font-semibold text-[#FF1D1D]">
-            {{ itemData.price }}{{ itemData.unit }}
+            {{ itemData.unit }}{{ itemData.price }}
           </div>
           <div class="shrink-0 text-sm text-black-9">(10小时)</div>
         </div>

+ 7 - 1
src/components/Home/Menu/index.vue

@@ -7,7 +7,7 @@
       class="flex flex-col items-center space-y-5"
     >
       <img :src="item.icon" class="w-24 h-24" alt="" srcset="" />
-      <span class="text-base text-black-3">{{ item.title }}</span>
+      <span class="text-sm text-black-3">{{ item.title }}</span>
     </NuxtLink>
   </div>
 </template>
@@ -17,6 +17,7 @@ import home_menu_car from "~/assets/img/home/home_menu_car.png";
 import home_menu_house from "~/assets/img/home/home_menu_house.png";
 import home_menu_visa from "~/assets/img/home/home_menu_visa.png";
 import home_menu_note from "~/assets/img/home/home_menu_note.png";
+import home_menu_travel_p from "~/assets/img/home/home_menu_travel_p.png";
 
 const menuData = [
   {
@@ -39,6 +40,11 @@ const menuData = [
     to: "note-create",
     icon: home_menu_note,
   },
+  {
+    title: "旅游项目",
+    to: "t",
+    icon: home_menu_travel_p,
+  },
 ];
 </script>
 

+ 2 - 2
src/components/Profile/TravelOrders/ShareModal/ProjectInfo.vue

@@ -11,10 +11,10 @@
       <div class="text-sm">
         <span class="text-[#FF0000]">{{ projectData.priceUnit }}</span>
         <span class="text-[#FF0000] text-3xl">{{
-          priceToArray(projectData.adultPrice)[0]
+          priceToArray(projectData.price)[0]
         }}</span>
         <span class="text-[#FF0000]"
-          >.{{ priceToArray(projectData.adultPrice)[1] }}</span
+          >.{{ priceToArray(projectData.price)[1] }}</span
         >
         <span>/人起</span>
       </div>

+ 14 - 3
src/components/Profile/TravelOrders/ShareModal/index.vue

@@ -42,7 +42,7 @@
             @click="handleCopy"
             type="primary"
             style="width: 100%; margin-top: 40px"
-            >复制并分享</van-button
+            >复制链接</van-button
           >
         </div>
       </div>
@@ -52,6 +52,7 @@
 
 <script setup>
 import { useClipboard } from "@vueuse/core";
+import { usePermission } from "@vueuse/core";
 
 const show = defineModel("show", false);
 
@@ -105,8 +106,18 @@ const shareUrl = computed(() => {
 const { copy } = useClipboard({ shareUrl });
 
 function handleCopy() {
-  copy(shareUrl.value);
-  showToast("复制成功");
+  // const clipboardRead = usePermission("clipboard-read");
+  // console.log(clipboardRead);
+  // copy(shareUrl.value);
+  // showToast("复制成功");
+  navigator.clipboard.writeText(shareUrl.value).then(
+    () => {
+      showToast("复制成功");
+    },
+    (err) => {
+      showToast("复制失败");
+    }
+  );
 }
 </script>
 

+ 7 - 0
src/components/TravelProjectDetail/PinTuan/Button.vue

@@ -1,12 +1,19 @@
 <template>
   <div>
     <van-button
+      v-if="pinTuanData.nowCount != pinTuanData.maxCount"
       @click="handlePinTuan"
       type="primary"
       size="small"
       style="font-size: 14px"
       >直接拼</van-button
     >
+    <div
+      v-else
+      class="h-32 w-60 flex items-center justify-center rounded bg-[#E7E7E7] text-base text-black-6"
+    >
+      拼成功
+    </div>
     <TravelProjectDetailPinTuanKaiTuanApplyModal
       v-model:show="applyKaiTuanOptions.show"
       :title="applyKaiTuanOptions.title"

+ 9 - 4
src/components/TravelProjectDetail/PinTuan/KaiTuanApplyBottomModal.vue

@@ -29,10 +29,10 @@
             <div class="text-sm">
               <span class="text-[#FF0000]">{{ detailData.priceUnit }}</span>
               <span class="text-[#FF0000] text-3xl">{{
-                priceToArray(detailData.adultPrice)[0]
+                priceToArray(detailData.price)[0]
               }}</span>
               <span class="text-[#FF0000]"
-                >.{{ priceToArray(detailData.adultPrice)[1] }}</span
+                >.{{ priceToArray(detailData.price)[1] }}</span
               >
               <span>/人起</span>
             </div>
@@ -71,6 +71,8 @@
 </template>
 
 <script setup>
+import { useThrottleFn } from "@vueuse/core";
+
 const show = defineModel("show", false);
 const props = defineProps({
   title: {
@@ -89,19 +91,22 @@ const lableList = computed(
 
 const id = useRouteParam("id");
 
-function handleSubmit() {
+const throttledFn = useThrottleFn(() => {
   request("/website/app/tourProjectGroupPurchaseApply/add", {
     method: "POST",
     body: {
       projectId: id.value,
     },
   }).then(() => {
-    // show.value = false;
     showDialog({
       title: "提交成功",
       message: "你的开团申请已提交,请等待客服联系",
     }).then(() => {});
   });
+}, 3000);
+
+function handleSubmit() {
+  throttledFn();
 }
 </script>
 

+ 27 - 14
src/pages/note-create-start/index.client.vue

@@ -7,17 +7,27 @@
       to="/note-create"
       class="block mx-auto pt-25 px-10 flex h-174 w-274 cursor-pointer flex-col items-center justify-center rounded-[30px] bg-[#fff1db] transition-all hover:opacity-90"
     >
-      <img src="~/assets/img/note-create/note_create_entry.png" class="h-auto w-full" />
+      <img
+        src="~/assets/img/note-create/note_create_entry.png"
+        class="h-auto w-full"
+      />
 
-      <div class="-mt-5 text-2xl font-semibold text-primary">旅行日记</div>
+      <div class="-mt-5 text-2xl font-semibold text-primary">旅行记</div>
     </NuxtLink>
 
     <NuxtLink
       to="/profile/notes?tab=draft"
       class="w-165 box-border mx-auto mt-90 flex h-60 cursor-pointer items-center space-x-5 rounded-xl bg-[#fff1c7] px-20 hover:opacity-80"
     >
-      <img src="~/assets/img/note-create/note_create_book.png" class="h-29 w-23" alt="" srcset="" />
-      <span class="text-sm pl-5 text-black-6">我的草稿箱({{ draftTotal }})</span>
+      <img
+        src="~/assets/img/note-create/note_create_book.png"
+        class="h-29 w-23"
+        alt=""
+        srcset=""
+      />
+      <span class="text-sm pl-5 text-black-6"
+        >我的草稿箱({{ draftTotal }})</span
+      >
     </NuxtLink>
 
     <div class="mx-auto mt-30 flex w-280 items-center justify-center">
@@ -43,20 +53,23 @@
 
 <script setup>
 onMounted(() => {
-  getDraftList()
-})
+  getDraftList();
+});
 
-const draftTotal = ref(0)
+const draftTotal = ref(0);
 
 async function getDraftList() {
-  const { data } = await request('/website/tourism/publishTravelNotes/getDraftList', {
-    query: {
-      pageNum: 1,
-      pageSize: 10000,
-      type: 0
+  const { data } = await request(
+    "/website/tourism/publishTravelNotes/getDraftList",
+    {
+      query: {
+        pageNum: 1,
+        pageSize: 10000,
+        type: 0,
+      },
     }
-  })
-  draftTotal.value = data.totalCount
+  );
+  draftTotal.value = data.totalCount;
 }
 </script>
 

+ 1 - 1
src/pages/profile/car-order/[id].client.vue

@@ -81,7 +81,7 @@
         <div>
           <span class="label">订单金额:</span>
           <span class="text-[#FF1717]"
-            >{{ orderInfo.totalPrice }}{{ orderInfo.totalPriceUnit }}</span
+            >{{ orderInfo.totalPriceUnit }}{{ orderInfo.totalPrice }}</span
           >
         </div>
         <div>

+ 1 - 1
src/pages/profile/car-orders.vue

@@ -41,7 +41,7 @@
           </div>
           <div>
             <span class="text-[#FF1717] font-semibold"
-              >{{ item.totalPrice }}{{ item.totalPriceUnit }}</span
+              >{{ item.totalPriceUnit }}{{ item.totalPrice }}</span
             >
           </div>
         </div>

+ 6 - 1
src/pages/profile/index.vue

@@ -42,12 +42,12 @@
 <script setup>
 import defaultAvatar from "~/assets/img/default_avatar.png";
 import profile_travel_order from "~/assets/img/profile/profile_travel_order.png";
-import profile_labour_order from "~/assets/img/profile/profile_labour_order.png";
 import profile_travel_note from "~/assets/img/profile/profile_travel_note.png";
 import profile_colection from "~/assets/img/profile/profile_colection.png";
 import profile_car_order from "~/assets/img/profile/profile_car_order.png";
 import profile_visa_order from "~/assets/img/profile/profile_visa_order.png";
 import profile_my_comment from "~/assets/img/profile/profile_my_comment.png";
+import profile_wallet from "~/assets/img/profile/profile_wallet.png";
 
 const userInfoStore = useUserInfoStore();
 const { userInfo } = storeToRefs(userInfoStore);
@@ -87,6 +87,11 @@ const menuData = [
     label: "我的评论",
     to: "/profile/my-comment",
   },
+  {
+    icon: profile_wallet,
+    label: "我的返利",
+    to: "/profile/wallet",
+  },
 ];
 </script>
 

+ 25 - 0
src/pages/profile/wallet.vue

@@ -0,0 +1,25 @@
+<template>
+  <div
+    class="h-100 pt-30 mt-20 px-20 mx-20 bg-[url('~/assets/img/profile/wallet_bg.png')] rounded-xl bg-cover bg-no-repeat text-white"
+  >
+    <div class="text-xl">拼团返利余额</div>
+    <div class="mt-5 text-3xl font-semibold">¥{{ totalAmount }}</div>
+  </div>
+</template>
+
+<script setup>
+const totalAmount = ref(0);
+
+async function getAmount() {
+  const { data } = await request(
+    "/website/app/tourProjectGroupPurchaseRebate/getTotalRebateAmount"
+  );
+  totalAmount.value = data.rebateAmount ?? 0;
+}
+
+onMounted(() => {
+  getAmount();
+});
+</script>
+
+<style lang="scss" scoped></style>

+ 20 - 1
src/pages/travel-projects/index.client.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="">
     <van-sticky :offset-top="50">
-      <van-dropdown-menu ref="menuRef">
+      <van-dropdown-menu>
         <van-dropdown-item :title="currentAreaFilterLabel" ref="areaFilterRef">
           <van-tree-select
             height="340px"
@@ -12,6 +12,11 @@
             @click-item="handleCountryClick"
           />
         </van-dropdown-item>
+        <van-dropdown-item
+          v-model="requestQuery.hasGroup"
+          :options="groupOptions"
+          style="--van-dropdown-menu-option-active-color: #fd9a00"
+        />
       </van-dropdown-menu>
     </van-sticky>
     <van-empty
@@ -51,11 +56,17 @@ const currentAreaFilterLabel = computed(() => {
   return `${currentArea.value.text || ""}${currentCountry.value.text || ""}`;
 });
 
+const groupOptions = ref([
+  { text: "全部活动", value: "0" },
+  { text: "拼团", value: "1" },
+]);
+
 const requestQuery = reactive({
   pageNum: 1,
   pageSize: 10,
   areaId: computed(() => currentArea.value?.id ?? ""),
   countryId: computed(() => currentCountry.value?.id ?? ""),
+  hasGroup: "0",
 });
 const listData = ref([]);
 
@@ -110,6 +121,14 @@ function reSearch() {
   getList();
 }
 
+watch(
+  () => requestQuery.hasGroup,
+  () => {
+    reSearch();
+  },
+  { deep: true }
+);
+
 async function getFilterAddress() {
   const { data } = await request(
     "/website/tourism/projectTravelNotes/travelNotesDirectoryList"

+ 1 - 0
src/themeVars.js

@@ -12,4 +12,5 @@ export const themeVars = {
   treeSelectItemActiveColor: "#ff9300",
   sidebarSelectedBorderColor: "#ff9300",
   pickerConfirmActionColor: "#ff9300",
+  dropdownMenuOptionActiveColor: "ff9300",
 };