Browse Source

feat: 创建订单

zqf 5 months ago
parent
commit
53854d7854

+ 1 - 1
src/pages/common/textarea-page/index.vue

@@ -34,7 +34,7 @@ const vm = getCurrentInstance();
 function handleOk() {
   vm.proxy
     .getOpenerEventChannel()
-    .emit("getInputValues", { data: input.value });
+    .emit("getInputValues", { data: inputValue });
   uni.navigateBack();
 }
 </script>

+ 6 - 1
src/pages/food/restaurant-foods/comps/ShoppingCartBar.vue

@@ -66,13 +66,18 @@ const props = defineProps({
     type: Number,
     default: 0,
   },
+  shopInfo: {
+    type: Object,
+    default: () => {}
+  }
 });
 
 
 const navigateToDetail = async () => {
   await uni.setStorageSync('cartItems', JSON.stringify(props.cartItems));
+  await uni.setStorageSync('shopInfo', JSON.stringify(props.shopInfo));
   uni.navigateTo({
-    url: `/pages/food/submit-order/index?totalPrice=${props.totalPrice}`
+    url: `/pages/food/submit-order/index`
   });
 };
 

+ 1 - 1
src/pages/food/restaurant-foods/index.vue

@@ -47,7 +47,7 @@
       </scroll-view>
     </view>
 
-    <ShoppingCartBar :cartItems="cartItems" :totalPrice="totalPrice" />
+    <ShoppingCartBar :shopInfo="detailInfo" :cartItems="cartItems" :totalPrice="totalPrice" />
   </view>
 </template>
 

+ 64 - 48
src/pages/food/submit-order/index.vue

@@ -3,14 +3,14 @@
     <BaseCard>
       <view class="address" @click="handleToAddress">
         <uni-icons type="location" size="20" color="#FD9A00"></uni-icons>
-        <text>选择您的收货地址</text>
+        <text>{{ deliveryOrderDto.deliveryAddress || '选择您的收货地址' }}</text>
         <uni-icons type="right" size="20" color="#949494"></uni-icons>
       </view>
     </BaseCard>
     <SizedBox :height="15" />
     <BaseCard>
       <view class="order-info">
-        <text class="restaurant">美味的黄焖鸡德州店</text>
+        <text class="restaurant">{{ deliveryOrderDto.shopName }}</text>
         <view class="info" v-for="item in cartItems" :key="item.id">
           <up-image
             class="img"
@@ -32,11 +32,11 @@
         </view>
         <view class="packing-fee">
           <text>打包费</text>
-          <text>$2</text>
+          <text>${{ deliveryOrderDto.packCharge }}</text>
         </view>
         <view class="delivery-fee">
           <text>配送费</text>
-          <text>$2</text>
+          <text>${{ deliveryOrderDto.deliveryFee }}</text>
         </view>
         <view class="line"></view>
         <view class="total-fee">
@@ -50,7 +50,7 @@
       <view class="remark" @click="handleToRemark">
         <text class="label">备注:</text>
         <div class="right">
-          <text> {{ remark || "填写您的要求" }}</text>
+          <text> {{ remark || '填写您的要求' }}</text>
           <uni-icons type="right" size="20" color="#949494"></uni-icons>
         </div>
       </view>
@@ -61,7 +61,7 @@
         <text class="label">餐具:</text>
         <up-number-box
           :min="0"
-          v-model="value"
+          v-model="deliveryOrderDto.tableware"
           icon-style="color: #fd9a00"
         ></up-number-box>
       </view>
@@ -78,80 +78,96 @@
 </template>
 
 <script setup>
-import { reactive, ref } from "vue";
-import { createOrder } from "@/api/food";
+import { reactive, ref } from 'vue';
+import { createOrder } from '@/api/food';
 
-import BottomSafeWrapper from "@/components/bottom-safe-wrapper/index.vue";
+import BottomSafeWrapper from '@/components/bottom-safe-wrapper/index.vue';
 
-const remark = ref("");
-
-const param = reactive({
-  deliveryOrderDto:{
-    shopName: "黄焖鸡德州店",
-    deliveryAddress:"",
-    deliveryPhone:"",
-    deliveryRemark:"",
-    tableware:1,
-    orderAmount:100,
-    payAmount:"100",
-    packCharge:10,
-    deliveryFee:5
-  },
-  deliveryOrderItemsDtoList:[{
-    foodName:"羊肉泡馍",
-    price:30,
-    number:2
-  },{
-    foodName:"鸡蛋灌饼",
-    price:5,
-    number:5
-  }]
-})
+const remark = ref('');
+const deliveryOrderDto = reactive({
+  shopName: '', // 店铺名称
+  deliveryAddress: '', // 地址
+  deliveryPhone: '', // 电话
+  deliveryRemark: '', // 备注
+  tableware: 0, // 餐具数量
+  orderAmount: 0, // 订单金额
+  payAmount: '0', // 应付金额
+  packCharge: 0, // 打包费
+  deliveryFee: 0, // 配送费
+});
 
 /**
  * To the address list page
  */
 function handleToAddress() {
-  uni.navigateTo({
-    url: "/pages/food/submit-order-address-list/index",
-    events: {
-      getAddress: ({ data }) => {
-        console.log(data);
-      },
+  wx.chooseAddress({
+    success(res) {
+      deliveryOrderDto.deliveryAddress =
+        res.provinceName + res.cityName + res.countyName + res.detailInfo;
+      deliveryOrderDto.deliveryPhone = res.telNumber;
+      console.log(res.userName);
+      console.log(res.postalCode);
+      console.log(res.provinceName);
+      console.log(res.cityName);
+      console.log(res.countyName);
+      console.log(res.detailInfo);
+      console.log(res.nationalCode);
+      console.log(res.telNumber);
+    },
+    complete(res) {
+      console.log(res);
     },
   });
+  // uni.navigateTo({
+  //   url: "/pages/food/submit-order-address-list/index",
+  //   events: {
+  //     getAddress: ({ data }) => {
+  //       console.log(data);
+  //     },
+  //   },
+  // });
 }
 
 function handleToRemark() {
   uni.navigateTo({
     url: `/pages/common/textarea-page/index?input=${remark.value}&title=备注信息`,
     events: {
-      getInputValues: ({ data }) => (remark.value = data),
+      getInputValues: ({ data }) => {
+        remark.value = data;
+        deliveryOrderDto.deliveryRemark = data;
+      },
     },
   });
 }
 
 async function settlement() {
-  const deliveryOrderItemsDtoList = cartItems.value.map(i => {
+  const deliveryOrderItemsDtoList = cartItems.value.map((i) => {
     return {
       foodName: i.name,
       price: i.price,
-      number: i.count
-    }
-  })
- const { data } = await createOrder({deliveryOrderItemsDtoList, deliveryOrderDto:param.deliveryOrderDto})
+      number: i.count,
+    };
+  });
+  const { data } = await createOrder({ deliveryOrderItemsDtoList, deliveryOrderDto });
 }
 
 const totalPrice = computed(() => {
-  const sum = cartItems.value.reduce((sum, item) => sum + (item.price * item.count), 0);
-  return parseFloat((sum).toFixed(2));
+  const sum = cartItems.value.reduce((sum, item) => sum + item.price * item.count, 0);
+  const orderAmount =  parseFloat(sum.toFixed(2)) + Number(deliveryOrderDto.packCharge) + Number(deliveryOrderDto.deliveryFee);
+  deliveryOrderDto.orderAmount = orderAmount;
+  deliveryOrderDto.payAmount = orderAmount;
+  return orderAmount;
 });
 
 const cartItems = ref([]);
 
 onLoad(async () => {
   cartItems.value = await JSON.parse(uni.getStorageSync('cartItems') || '[]');
-})
+  const shopInfo = await JSON.parse(uni.getStorageSync('shopInfo') || '{}');
+  deliveryOrderDto.shopName = shopInfo.name;
+  deliveryOrderDto.deliveryFee = shopInfo.deliveryCharge;
+  deliveryOrderDto.balingCharge = shopInfo.balingCharge;
+});
 </script>
 
 <style lang="scss">