From aae6cb63fac8f2956615481382c101cfd2e7d45c Mon Sep 17 00:00:00 2001
From: chenyc <501753378@qq.com>
Date: 星期日, 28 五月 2023 22:15:52 +0800
Subject: [PATCH] gxapi

---
 src/views/jifenShangCheng/components/gouwuche.vue |  291 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 291 insertions(+), 0 deletions(-)

diff --git a/src/views/jifenShangCheng/components/gouwuche.vue b/src/views/jifenShangCheng/components/gouwuche.vue
index e69de29..7c5a6c1 100644
--- a/src/views/jifenShangCheng/components/gouwuche.vue
+++ b/src/views/jifenShangCheng/components/gouwuche.vue
@@ -0,0 +1,291 @@
+<template>
+    <div>
+        <van-popup v-model:show="show" position="bottom" :style="{ height: '90%' }">
+            <van-loading style="top: 100px;" v-if="loading" type="spinner" size="24px" vertical>
+                加载中。。。。
+            </van-loading>
+            <div v-if="gwcList.length > 0" style="height: 100%; padding-left: 10px;padding-right: 10px; background: #f5f7fa;">
+                <div>
+                    <van-row style="padding-top: 10px;padding-bottom: 10px;">
+                        <van-col @click="show = false" :span="7" style="height: 30px; line-height: 30px; font-size: 20px; font-weight: 600; color: #409eff;">
+                            <van-icon name="arrow-left" />购物车<span style="font-size: 10px;">({{gwcList.length}})</span>
+
+                        </van-col>
+                        <van-col
+                            :span="13" style="color: #e6a23c; height: 30px; line-height: 30px;white-space: nowrap;text-overflow: ellipsis;-o-text-overflow: ellipsis;
+                        overflow: hidden;">
+                            <van-icon name="location-o" />
+                            <span v-if="defaultDizhi.code === ''" @click="setDizhi">设置地址</span>
+                            <span v-else @click="setDizhi">{{defaultDizhi.patientAddress}}</span>
+                        </van-col>
+                        <van-col :span="4" style=" height: 30px; line-height: 30px;text-align: right;">
+                            <span v-if="!isAdmin" @click="adminFun" style="color: #409eff;">管理</span>
+                            <span v-else @click="adminFunCols" style="color: #f56c6c;">取消</span>
+                        </van-col>
+                    </van-row>
+                </div>
+                <div class="parent " v-for="(item,index) in gwcList" :key="index">
+                    <div class="checkboxclss">
+                        <van-checkbox v-model="item.checked"></van-checkbox>
+                    </div>
+                    <div class="parentzi">
+                        <div>
+                            <van-image
+                                fit="contain"
+                                width="100%"
+                                height="100%"
+                                :src="item.itemInfo.itemPhoto"
+                            />
+                        </div>
+                        <div style="padding-left: 10px;">
+                            <div style="height: 2rem; line-height: 2rem; color: #409eff;">{{item.itemInfo.itemName}}</div>
+                            <div style="height: 2rem;">
+                                <van-tag type="primary">{{item.itemInfo.itemCategory}}</van-tag>
+                            </div>
+                            <div style="height: 2rem;">
+                                <van-row>
+                                    <van-col :span="12" style="color: #f56c6c;">¥{{item.itemInfo.itemPrice}}</van-col>
+                                    <van-col :span="12" style="text-align: right; padding-right: 10px;">
+                                        <span><van-icon name="plus" @click="item.itemCount++" /></span>
+                                        <span style="margin-left: 10px; margin-right: 10px;">x{{item.itemCount}}</span>
+                                        <span><van-icon name="minus" v-if="item.itemCount > 1" @click="item.itemCount--" /></span>
+                                    </van-col>
+                                </van-row>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div v-if="gwcList.length === 0" style="margin-top: 200px; text-align: center; color: #409eff;">
+                <van-icon name="cart-o" />
+                你的购物车空空如也
+                <br />
+                <br />
+                <span @click="show = false">
+                    <van-icon name="revoke" />返回
+                </span>
+            </div>
+            <div>
+                <div class="divcaozuo">
+                    <van-row>
+                        <van-col :span="10" style="line-height: 50px;padding-left: 10px;">
+                            <van-checkbox v-model="AllChecked" style="margin-top: 20px;">全选</van-checkbox>
+                        </van-col>
+                        <van-col :span="14" style="line-height: 50px; text-align: right; padding-right: 10px;">
+                            <div style="float: right;">
+                                <van-button v-if="!isAdmin" round style="width: 100px;" @click="jieshuan" type="danger">结 算</van-button>
+                                <van-button v-if="isAdmin" round @click="delrows" style="width: 100px;" type="danger">删 除</van-button>
+
+                            </div>
+                            <div v-if="!isAdmin" style="float: right; margin-top: 5px;margin-right: 5px;">
+                                合计:<span style="font-size: 20px;color: #f56c6c;">¥{{functionHj}}</span></div>
+
+                        </van-col>
+                    </van-row>
+                </div>
+                <div>
+                    <dizhi @fanhuiFun="feihuDizhi" ref="dizhiRef"></dizhi>
+                </div>
+            </div>
+        </van-popup>
+    </div>
+</template>
+<script setup lang="ts">
+    import { ajaxPost } from '@/utils/axios'
+    import { Toast } from 'vant'
+    import { watch } from 'vue'
+    import { computed } from 'vue'
+    import { ref } from 'vue'
+    import dizhi from '../components/dizhi.vue'
+    import { userInfoStore } from '@/stores/userInfo'
+    const userInfo = userInfoStore()
+    const AllChecked=ref(false)
+    const loading = ref(false)
+    const isAdmin=ref(false)
+    const dizhiRef=ref()
+    const defaultDizhi=ref({
+        id:0,
+        code:'',
+        receivePersonName:'',
+        receivePersonMobile:'',
+        patientAddress:'',
+    })
+    const functionHj =computed(()=>{
+        let num=0
+        gwcList.value.forEach(el=>{
+            if ( el.checked===true){
+                num+=el.itemCount*el.itemInfo.itemPrice
+            }
+
+        })
+        return num
+    })
+    watch(()=>AllChecked.value,()=>{
+        if (AllChecked.value){
+            gwcList.value.forEach(el=>{
+                el.checked=true
+            })
+        } else {
+            gwcList.value.forEach(el=>{
+                el.checked=false
+            })
+        }
+    })
+
+    const gwcList = ref([
+        {
+            id:0,
+            code:'',
+            itemCount:1,
+            checked:false,
+            patientCode:'',
+            itemCode:'',
+            itemInfo:{
+                itemName:'',
+                itemPhoto:'',
+                itemCategory:'',
+                itemPrice:0,
+            }
+        }
+    ])
+    const show = ref(false)
+    const getPages = () => {
+        loading.value = true
+        ajaxPost('/eshop/cart/list', '').then((re: any) => {
+            console.log(re)
+            gwcList.value=[]
+            re.list.forEach((element:any) => {
+                gwcList.value.push({
+                    id:element.id,
+                    code:element.code,
+                    itemCount:element.itemCount,
+                    checked:false,
+                    itemCode:element.itemCode,
+                    itemInfo:element.itemInfo,
+                    patientCode:element.patientCode
+                })
+            })
+        // gwcList.value = re.list
+        }).finally(() => {
+            loading.value = false
+        })
+    }
+    const openShow = () => {
+        show.value = true
+        isAdmin.value=false
+        AllChecked.value=false
+        getPages()
+        getDefDizhi()
+    }
+    const adminFun=()=>{
+        gwcList.value.forEach(el=>{
+            el.checked=false
+        })
+        AllChecked.value=false
+        isAdmin.value=true
+    }
+    const adminFunCols=()=>{
+        AllChecked.value=false
+        gwcList.value.forEach(el=>{
+            el.checked=false
+        })
+        isAdmin.value=false
+    }
+    const delrows=()=>{
+        console.log(gwcList.value)
+        const list: number[]=[]
+        gwcList.value.forEach(el=>{
+            if (el.checked){
+                list.push(el.id)
+            }
+        })
+        if (list.length===0){
+            Toast.fail('没有选中删除项')
+            return false
+        }
+        const ids=list.join(',')
+        console.log(ids)
+        ajaxPost('/eshop/cart/deleteAll', 'ids='+ids).then((re: any) => {
+            Toast.success('删除成功')
+            console.log(re)
+            isAdmin.value=false
+            getPages()
+        })
+
+    }
+
+    const jieshuan=()=>{
+        alert('结算')
+    }
+    const getDefDizhi=()=>{
+        const pasm=`page=0&size=0&wherecondition=patient_is_default=1 and patient_code="${userInfo.patient.patientInfo.code}"`
+        ajaxPost('/patient/address/list', pasm).then((re: any) => {
+            console.log('默认地址')
+            console.log(re)
+            if (re.list.length===0){
+                Toast('你还没有设置你的收货地址哦')
+            } else {
+                defaultDizhi.value=re.list[0]
+            }
+            console.log(defaultDizhi.value)
+        })
+    }
+    const setDizhi=()=>{
+        dizhiRef.value.openShow(defaultDizhi.value.id)
+    }
+    // 返回地址
+    const feihuDizhi=(row:any)=>{
+        defaultDizhi.value={
+            id:row.id,
+            code:row.code,
+            receivePersonName:row.name,
+            receivePersonMobile:row.tel,
+            patientAddress:row.address,
+        }
+    }
+
+    defineExpose({
+        openShow
+    })
+
+</script>
+<style scoped lang="css">
+.parent {
+    margin-top: 10px;
+    background: #fff;
+    padding-left: 5px;
+    padding-right: 5px;
+    border-radius: 10px;
+    border: 1px solid #cdd0d6;
+
+    /* background: red; */
+    height: 6rem;
+    display: grid;
+    grid-template-columns: minmax(30px, 30px) 1fr;
+}
+
+.parentzi {
+    padding-left: 5px;
+
+    /* background: red; */
+    height: 6rem;
+    display: grid;
+    grid-template-columns: minmax(30%, 30%) 1fr;
+}
+
+.checkboxclss {
+    padding-top: 2.6rem;
+    height: 6rem;
+    line-height: 6rem;
+}
+
+.divcaozuo {
+    height: 60px;
+    width: 100%;
+
+    /* background-color: yellow; */
+    position: absolute;
+    bottom: 10px;
+    border-top: solid 1px #cdd0d6;
+}
+ </style>
\ No newline at end of file

--
Gitblit v1.8.0