From 4ebb7babe7e392d62662d09f97f48647c114cc5f Mon Sep 17 00:00:00 2001
From: chenyc <501753378@qq.com>
Date: 星期一, 29 五月 2023 14:37:47 +0800
Subject: [PATCH] 45

---
 src/views/jifenShangCheng/components/myOrder.vue  |  133 ++++++++++++++++++++++++++
 src/views/login/index.vue                         |   45 +++++---
 src/views/jifenShangCheng/components/dizhi.vue    |    1 
 src/utils/axios.ts                                |   12 +-
 src/views/jifenShangCheng/components/gouwuche.vue |   30 +++++
 src/views/jifenShangCheng/index.vue               |   62 ++++++++++-
 6 files changed, 248 insertions(+), 35 deletions(-)

diff --git a/src/utils/axios.ts b/src/utils/axios.ts
index dfaec74..743aeca 100644
--- a/src/utils/axios.ts
+++ b/src/utils/axios.ts
@@ -69,16 +69,14 @@
 instance.interceptors.response.use(
     (response: AxiosResponse) => {
         const { data, status } = response
-        const { message } = data
+        console.log(status)
+        const { message,code } = data
         // 请求正常时,仅返回需要用到的 data 信息即可
-        if (message==='SUCCESS') return data.data
+        if (code===200) return data.data
         // 1、对于一些请求正常,但后台处理失败的内容进行拦截,返回对应错误信息
         alert(message || '请求异常,请刷新重试')
-        return {
-            code: status,
-            message: message || '请求异常,请刷新重试',
-            result: data
-        }
+        return Promise.reject(data.data)
+
     },
     (error: AxiosError) => {
         return error.response ? errorHandle(error) : Promise.reject(error)
diff --git a/src/views/jifenShangCheng/components/dizhi.vue b/src/views/jifenShangCheng/components/dizhi.vue
index 2727f31..c8a2287 100644
--- a/src/views/jifenShangCheng/components/dizhi.vue
+++ b/src/views/jifenShangCheng/components/dizhi.vue
@@ -81,6 +81,7 @@
             console.log('默认地址')
             console.log(re)
             if (re.list.length===0){
+                list.value=[]
                 onAdd()
             } else {
                 list.value=[]
diff --git a/src/views/jifenShangCheng/components/gouwuche.vue b/src/views/jifenShangCheng/components/gouwuche.vue
index 7c5a6c1..a95a7a0 100644
--- a/src/views/jifenShangCheng/components/gouwuche.vue
+++ b/src/views/jifenShangCheng/components/gouwuche.vue
@@ -92,7 +92,7 @@
 </template>
 <script setup lang="ts">
     import { ajaxPost } from '@/utils/axios'
-    import { Toast } from 'vant'
+    import {  Toast } from 'vant'
     import { watch } from 'vue'
     import { computed } from 'vue'
     import { ref } from 'vue'
@@ -215,7 +215,33 @@
     }
 
     const jieshuan=()=>{
-        alert('结算')
+        console.log(gwcList.value,defaultDizhi.value)
+        const listCode: any[]=[]
+        gwcList.value.forEach((el:any)=>{
+            if (el.checked){
+                listCode.push(el.code)
+            }
+        })
+        if (listCode.length===0){
+            Toast('没有选中要结算的商品')
+            return false
+        }
+        const pasm=`cartCodes=${listCode.toString()}&addressCode=${defaultDizhi.value.code}`
+        console.log(pasm)
+        ajaxPost('/eshop/order/checkout',pasm)
+            .then((re:any)=>{
+                console.log(re)
+                if (re==='OK'){
+                    Toast.success('您已经兑换成功')
+                } else {
+                    Toast('兑换失败')
+                }
+
+            }).catch((error)=>{
+                console.log(error)
+                Toast('兑换失败')
+            })
+
     }
     const getDefDizhi=()=>{
         const pasm=`page=0&size=0&wherecondition=patient_is_default=1 and patient_code="${userInfo.patient.patientInfo.code}"`
diff --git a/src/views/jifenShangCheng/components/myOrder.vue b/src/views/jifenShangCheng/components/myOrder.vue
new file mode 100644
index 0000000..4dd8c0f
--- /dev/null
+++ b/src/views/jifenShangCheng/components/myOrder.vue
@@ -0,0 +1,133 @@
+<template>
+    <div>
+        <van-popup v-model:show="show" position="bottom" :style="{ height: '100%' }">
+            <van-nav-bar
+                title="我的订单"
+                left-text="返回"
+                left-arrow
+                @click-left="show = false"
+            />
+            <div style="padding: 10px;">
+                <van-tabs v-model:active="active">
+                    <van-tab :name="0" title="待发货"></van-tab>
+                    <van-tab :name="1" title="已发货"></van-tab>
+                    <van-tab :name="2" title="已签收"></van-tab>
+                    <van-tab :name="-1" title="已取消"></van-tab>
+                </van-tabs>
+                <div class="parent " v-for="(order,index) in orderList" :key="index">
+                    <div class="parentzi" v-for="(item) in order.items" :key="item.id">
+                        <div>
+                            <van-image
+                                fit="contain"
+                                width="100%"
+                                height="3.5rem"
+                                :src="item.itemPhoto"
+                            />
+                        </div>
+                        <div style="padding-left: 10px;">
+                            <div style="height: 2rem; line-height: 2rem; color: #409eff;">{{item.itemName}}x{{item.itemCount}}</div>
+
+                            <div style="height: 2rem;">
+                                <van-row>
+                                    <van-col :span="12" style="color: #f56c6c;">¥{{Number(item.itemPrice) * Number(item.itemCount)}}</van-col>
+                                </van-row>
+                            </div>
+                        </div>
+                    </div>
+                    <div>
+                        <div style="height: 2rem; padding-left: 10px;">
+                            <van-row style="color: #e6a23c;">
+                                <van-icon size="20px" color="#E6A23C" name="free-postage" />{{order.recvName}}-{{order.recvMobile}}-{{ order.recvAddress}}
+                            </van-row>
+                        </div>
+                        <div style="height: 2rem; padding-left: 10px;">
+                            <van-row>
+                                <van-col :span="12" style="padding-left: 10px; color: #f56c6c;">
+                                    合计:{{funheji(order)}}
+                                </van-col>
+                                <van-col :span="12" v-if="order.orderStatus === 0" style="text-align: right;padding-right: 20px; color: #909399;">
+                                    <span @click="quxiao(order)">取消</span>
+                                </van-col>
+                            </van-row>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </van-popup>
+    </div>
+</template>
+<script setup lang="ts">
+    import { ref } from 'vue'
+    import { ajaxPost } from '@/utils/axios'
+    import { userInfoStore } from '@/stores/userInfo'
+    import { watch } from 'vue'
+    import { Dialog, Toast } from 'vant'
+    const userInfo = userInfoStore()
+    const show=ref(false)
+    const active=ref(0)
+    const orderList=ref(<any>[])
+    const openShow=()=>{
+        show.value=true
+        getOrders()
+    }
+    const quxiao=(item:any)=>{
+        Dialog.confirm({
+            title: '提示',
+            message:
+                '您确认要取消该条订单',
+        })
+            .then(() => {
+                const pasm={
+                    code:item.code,
+                    id:item.id,
+                    orderStatus:-1
+                }
+                ajaxPost('/eshop/order/update',pasm).then((re:any)=>{
+                    console.log(re)
+                    Toast.success('订单取消成功')
+                    getOrders()
+                })
+            })
+            .catch(() => {
+                Toast('已取消操作')
+            })
+
+    }
+    const getOrders=()=>{
+        const pasm=`page=0&size=0&wherecondition=patient_code=\'${userInfo.patient.patientInfo.code}\' and order_status=${active.value}`
+        ajaxPost('/eshop/order/list',pasm).then((re:any)=>{
+            console.log(re)
+            orderList.value=re.list
+        })
+
+    }
+    watch(()=>active.value,()=>{
+        getOrders()
+    })
+    const funheji=(row:any)=>{
+        let numb=0
+        row.items.forEach((e:any)=>{
+            numb+= Number(e.itemPrice)*Number(e.itemCount)
+        })
+        return numb
+    }
+    defineExpose({
+        openShow
+    })
+</script>
+<style>
+.parent {
+    border: 1px solid #cdd0d6;
+    border-radius: 10px;
+    margin-top: 10px;
+}
+
+.parentzi {
+    padding-top: 10px;
+    padding-left: 5px;
+    height: 4rem;
+    display: grid;
+    grid-template-columns: minmax(30%, 30%) 1fr;
+}
+
+</style>
\ No newline at end of file
diff --git a/src/views/jifenShangCheng/index.vue b/src/views/jifenShangCheng/index.vue
index af25a31..b03180e 100644
--- a/src/views/jifenShangCheng/index.vue
+++ b/src/views/jifenShangCheng/index.vue
@@ -11,8 +11,15 @@
                 :items="items"
             >
                 <template #content>
-                    <div style="text-align: right; padding-right: 15px; height: 50px; line-height: 30px; color: #409eff; font-size: 16px;">
-                        <van-icon @click="openGwc" size="26px" name="cart-circle-o" style="margin-top: 20px;" />
+                    <div
+                        style="border-bottom: #e6e8eb solid 1px; text-align: right;
+                    padding-right: 15px; height: 50px;
+                    line-height: 30px; color: #409eff;
+                    font-size: 16px;">
+                        <!-- 订单 -->
+                        <van-icon @click="openOrder" size="26px" name="balance-list-o" color="#67C23A" style="margin-top: 10px; margin-right: 20px;" />
+                        <!-- 购物车 -->
+                        <van-icon @click="openGwc" size="26px" name="cart-circle-o" color="#F56C6C" style="margin-top: 10px;" />
                     </div>
                     <div v-if="items.length > 0" style="border-left: 1px solid rgb(229, 226, 225); background: #f7f8fa;">
                         <van-card
@@ -54,8 +61,11 @@
                             <van-icon size="40px" color="#E6A23C" name="location-o" />
                         </van-col>
                         <van-col :span="20" style="font-size: 16px; padding-left: 10px; height: 60px; line-height: 30px;">
-                            <div>{{defaultDizhi.patientAddress}} </div>
-                            <div>联系电话:{{defaultDizhi.receivePersonMobile}} </div>
+                            <div v-if="defaultDizhi.patientAddress !== ''">{{defaultDizhi.patientAddress}} </div>
+                            <div v-if="defaultDizhi.patientAddress !== ''">联系电话:{{defaultDizhi.receivePersonMobile}} </div>
+                            <div @click="openDizhi" v-else style="margin-top: 18px; color: #e6a23c;">
+                                请设置你的收货地址
+                            </div>
                         </van-col>
                         <van-col :span="2" style="height: 60px; line-height: 60px;">
                             <van-icon size="20px" @click="openDizhi" name="arrow" />
@@ -73,7 +83,7 @@
                         <template #thumb>
                             <van-image
                                 style="border: 1px solid #ebedf0;"
-                                fit="cover"
+                                fit="contain"
                                 width="100%"
                                 height="100%"
                                 :src="setItem.itemPhoto"
@@ -105,7 +115,7 @@
                     <van-action-bar-icon icon="revoke" @click="show = false" text="返回" dot />
                     <van-action-bar-icon icon="cart-o" text="购物车" :badge="gwcBadge" />
                     <van-action-bar-button @click="AddGwc" type="warning" text="加入购物车" />
-                    <van-action-bar-button type="danger" text="立即购买" />
+                    <van-action-bar-button type="danger" @click="liJiGouMai" text="立即购买" />
                 </van-action-bar>
             </van-popup>
         </div>
@@ -115,6 +125,9 @@
         </div>
         <div>
             <gouwuche ref="gouwucheRef"></gouwuche>
+        </div>
+        <div>
+            <myOrder ref="myOrderRef"></myOrder>
         </div>
         <van-tabbar v-model="active" @change="tabChang">
             <van-tabbar-item name="home" icon="like">首页</van-tabbar-item>
@@ -129,6 +142,7 @@
     import { useWindowSize } from '@vant/use'
     import dizhi from '../jifenShangCheng/components/dizhi.vue'
     import gouwuche from './components/gouwuche.vue'
+    import myOrder from './components/myOrder.vue'
     import { userInfoStore } from '@/stores/userInfo'
     const userInfo = userInfoStore()
     import { ajaxPost} from '@/utils/axios'
@@ -137,6 +151,7 @@
     const router=useRouter()
     const { height } = useWindowSize()
     const dizhiRef=ref()
+    const myOrderRef=ref()
     const gouwucheRef=ref()
     const show=ref(false)
     const loading=ref(true)
@@ -172,6 +187,9 @@
     const openGwc=()=>{
         gouwucheRef.value.openShow()
     }
+    const openOrder=()=>{
+        myOrderRef.value.openShow()
+    }
     const tabChang=(index:any)=>{
         if (index==='home'){
             router.push('/')
@@ -199,7 +217,7 @@
 
         })
     }
-    // 购买
+    // 打开购买
     const goumai=(item:any)=>{
         console.log(item)
         setItem.value={
@@ -210,7 +228,35 @@
             itemPhoto:item.itemPhoto,
             id:item.id
         }
-        show.value=true
+        AddGwc()
+        // show.value=true
+    }
+    // 立即购买
+    const liJiGouMai=()=>{
+        if (defaultDizhi.value.id>0){
+            console.log(setItem.value,defaultDizhi.value)
+            const pasm={
+                addressCode:defaultDizhi.value.code,
+                cartCodes:setItem.value.code
+            }
+            console.log(pasm)
+            ajaxPost('/eshop/order/checkout',`addressCode=${defaultDizhi.value.code}&cartCodes=${setItem.value.code}`)
+                .then(re=>{
+                    console.log(re)
+                    if (re.data==='OK'){
+                        Toast.success('您已经兑换成功')
+                    } else {
+                        Toast('兑换失败')
+                    }
+
+                }).catch((error)=>{
+                    console.log(error)
+                    Toast('兑换失败')
+                })
+        } else {
+            Toast('请先选择您的收货地址')
+        }
+
     }
     // 编辑地址
     const openDizhi=()=>{
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index 5c74b1e..e8c2525 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -11,7 +11,7 @@
     const config={
         headers: {
             'Content-Type': 'application/x-www-form-urlencoded'
-        },
+        }
     }
     const userInfo = userInfoStore()
     const route = useRoute()
@@ -123,6 +123,7 @@
         return String(navigator.userAgent.toLowerCase().match(/MicroMessenger/i)) === 'micromessenger'
     }
     onMounted(()=>{
+        Session.remove('token')
         if (isWechat()){
             console.log('初始化',route)
             const queryInfo=route.query
@@ -198,15 +199,15 @@
                         name="密  码"
                         label="密&nbsp&nbsp码"
                         placeholder="6-16位数字或者字母组合"
-                      
+
                     >
                         <template #button>
                             <van-button size="small" type="default" @click="wjmm">忘记密码</van-button>
                         </template>
                     </van-field>
                 </van-cell-group>
-                <div style="margin: 16px;text-align:center;">
-                    <div class="tss"><van-icon name="circle" /> 登录即视为已经阅读并同意<b style="color: #769AFF;">网站服务条款、法律声明及隐私权政策</b></div>
+                <div style="margin: 16px;text-align: center;">
+                    <div class="tss"><van-icon name="circle" /> 登录即视为已经阅读并同意<b style="color: #769aff;">网站服务条款、法律声明及隐私权政策</b></div>
                     <van-button :loading="loadingBUt" round block type="primary" native-type="submit">
                         登  录
                     </van-button>
@@ -233,14 +234,14 @@
                         </template>
                     </van-field>
                 </van-cell-group>
-                <div style="margin: 16px;text-align:center;">
-                    <div class="tss"><van-icon name="circle" /> 登录即视为已经阅读并同意<b style="color: #769AFF;">网站服务条款、法律声明及隐私权政策</b></div>
+                <div style="margin: 16px;text-align: center;">
+                    <div class="tss"><van-icon name="circle" /> 登录即视为已经阅读并同意<b style="color: #769aff;">网站服务条款、法律声明及隐私权政策</b></div>
                     <van-button :loading="loadingBUt" round block type="primary" native-type="submit">
                         登  录
                     </van-button>
                 </div>
             </van-form>
-            <van-row class="loginType">
+            <van-row class="logintype">
                 <div class="toptype">
                     <van-divider
                         :style="{ color: '#1989fa', borderColor: '#1989fa', padding: '0 16px' }"
@@ -326,43 +327,51 @@
     </div>
 </template>
 <style lang="scss">
-.login{
+.login {
     width: 100%;
     min-height: 900px;
 }
-.logintt{
+
+.logintt {
     text-align: center;
 }
-.loginwenz{
+
+.loginwenz {
     font-size: 12px;
     font-weight: 400;
-    color: #AAAAAA;
+    color: #aaa;
 }
-.loginType{
+
+.logintype {
     width: 100%;
     margin-top: 120px;
     text-align: center;
     font-size: 11px;
     font-weight: 400;
-    color: #AAAAAA;
+    color: #aaa;
+
     // background: black;
-    .toptype{
+    .toptype {
         width: 100%;
     }
 }
-.titlebiaoti{
+
+.titlebiaoti {
     padding-top: 70px;
-    text-align:center;
+    text-align: center;
     padding-left: 30px;
+
     // border: 1px solid black;
     font-size: 15px;
     padding-bottom: 70px;
 }
-.tss{
+
+.tss {
     font-size: 10px;
     font-weight: 400;
-    color: #AAAAAA;
+    color: #aaa;
     height: 50px;
+
     // line-height: 50px;
 }
 </style>
\ No newline at end of file

--
Gitblit v1.8.0