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/stores/userInfo.ts | 11
src/views/home/index.vue | 6
src/views/jifenShangCheng/components/dizhi.vue | 263 +++++++++++-----
src/utils/storage.ts | 11
src/views/jifenShangCheng/components/gouwuche.vue | 291 +++++++++++++++++++
src/views/jifenShangCheng/index.vue | 302 ++++++++++++-------
6 files changed, 666 insertions(+), 218 deletions(-)
diff --git a/src/stores/userInfo.ts b/src/stores/userInfo.ts
index e7d5b0b..1730e13 100644
--- a/src/stores/userInfo.ts
+++ b/src/stores/userInfo.ts
@@ -21,6 +21,7 @@
patientTelNo:'',
patientAvatarIcon:'',
patientCreditValue:0,
+ patientAddress:'',
clientCode:'',
},
pressure:'',
@@ -31,14 +32,12 @@
info.value.headimgurl=userInfo.headimgurl
info.value.nickname=userInfo.nickname
}
- function setPatient(userInfo:object) {
+ function setPatient(userInfo:any) {
patient.value=userInfo
}
- const setPatientApi= async ()=>{
- const res= await ajaxPost('/patient/info/getPatientInfo','')
- console.log('-----')
- console.log(res)
- setPatient(res)
+ const setPatientApi= async()=>{
+ const res= await ajaxPost('/patient/info/getPatientInfo','')
+ setPatient(res)
}
return { info,patient,setPatient, setInfo,setPatientApi }
diff --git a/src/utils/storage.ts b/src/utils/storage.ts
index bc3f3bd..1ee4234 100644
--- a/src/utils/storage.ts
+++ b/src/utils/storage.ts
@@ -1,5 +1,5 @@
-import Cookies from "js-cookie"
+import Cookies from 'js-cookie'
/**
* window.localStorage 浏览器永久缓存
* @method set 设置永久缓存
@@ -39,24 +39,23 @@
set(key: string, val: any) {
console.log('设置临时缓存')
console.log(key,val)
- if (key === 'token') return Cookies.set(key, val);
+ if (key === 'token') return Cookies.set(key, val)
window.sessionStorage.setItem(key, JSON.stringify(val))
},
// 获取临时缓存
get(key: string) {
- console.log(Cookies.get(key),key)
- if (key === 'token') return Cookies.get(key);
+ if (key === 'token') return Cookies.get(key)
const json: any = window.sessionStorage.getItem(key)
return JSON.parse(json)
},
// 移除临时缓存
remove(key: string) {
- if (key === 'token') return Cookies.remove(key);
+ if (key === 'token') return Cookies.remove(key)
window.sessionStorage.removeItem(key)
},
// 移除全部临时缓存
clear() {
- Cookies.remove('token');
+ Cookies.remove('token')
window.sessionStorage.clear()
},
}
diff --git a/src/views/home/index.vue b/src/views/home/index.vue
index 7074ef8..2d3e440 100644
--- a/src/views/home/index.vue
+++ b/src/views/home/index.vue
@@ -2,7 +2,7 @@
<div class="page">
<div class="box_1">
<div class="userinfo">
- <div class="name">{{patientInfo.patientInfo.patientName}}</div>
+ <div class="name" v-if="patientInfo.patientInfo.patientName !== undefined">{{patientInfo.patientInfo.patientName}}</div>
<div class="userCode">卡号:{{patientInfo.patientInfo.patientCardNo}} </div>
<div class="userQRcode">
<img
@@ -139,9 +139,9 @@
const tabChang=(index:any)=>{
if (index==='home'){
router.push('/')
- } else if(index==='jifen') {
+ } else if (index==='jifen') {
router.push('jifenShangCheng')
- }else if(index==='my') {
+ } else if (index==='my') {
router.push('my')
}
}
diff --git a/src/views/jifenShangCheng/components/dizhi.vue b/src/views/jifenShangCheng/components/dizhi.vue
index c6cf482..2727f31 100644
--- a/src/views/jifenShangCheng/components/dizhi.vue
+++ b/src/views/jifenShangCheng/components/dizhi.vue
@@ -6,14 +6,14 @@
left-text="返回"
left-arrow
@click-left="onClickLeft"
- />
+ />
<van-address-list
v-model="chosenAddressId"
:list="list"
default-tag-text="默认"
@add="onAdd"
@edit="onEdit"
- />
+ />
</van-popup>
<van-popup v-model:show="editDizhi" position="bottom" :style="{ height: '100%' }">
<van-nav-bar
@@ -21,99 +21,186 @@
left-text="返回"
left-arrow
@click-left="onClickLeft2"
- />
- <van-address-edit
- ref="addressEditRef"
- :area-list="areaList"
- show-delete
- show-set-default
- show-search-result
- :address-info="addressInfo"
- :area-columns-placeholder="['请选择', '请选择', '请选择']"
- @save="onSave"
- @delete="onDelete"
- />
+ />
+ <van-address-edit
+ ref="addressEditRef"
+ :area-list="areaList"
+ show-delete
+ show-set-default
+ show-search-result
+ :address-info="addressInfo"
+ :area-columns-placeholder="['请选择', '请选择', '请选择']"
+ @save="onSave"
+ @delete="onDelete"
+ />
</van-popup>
</div>
</template>
<script setup lang="ts">
-import { Toast } from 'vant';
-import { ref } from 'vue';
-import { areaList } from '@vant/area-data';
-import type { AddressEditInstance } from 'vant';
-name:"dizhibianji"
-const emit = defineEmits(['fanhuiFun'])
-const showDizhi=ref(false)
-const editDizhi=ref(false)
-const addressEditRef = ref<AddressEditInstance>();
-const chosenAddressId = ref('1')
-const addressInfo=ref({
- name:'',
- tel:'',
- province:'',
- city:"",
- county:'',
- addressDetail:'',
- isDefault:false
-})
-const list =[
-{
- id: '1',
- name: '张三',
- tel: '13000000000',
- address: '浙江省杭州市西湖区文三路 138 号东方通信大厦 7 楼 501 室',
- isDefault: true,
- },
- {
- id: '2',
- name: '李四',
- tel: '1310000000',
- address: '浙江省杭州市拱墅区莫干山路 50 号',
- },
-]
-const openShow=()=>{
- showDizhi.value=true
-}
-const onClickLeft=()=>{
- showDizhi.value=false
-}
-const onClickLeft2=()=>{
- addressEditRef.value?.setAddressDetail('3434343');
- editDizhi.value=false
-}
-const onAdd = () =>{
- editDizhi.value=true
- addressInfo.value={
+ import { Toast } from 'vant'
+ import { ref } from 'vue'
+ import { areaList } from '@vant/area-data'
+ import type { AddressEditInstance } from 'vant'
+ import { ajaxPost } from '@/utils/axios'
+ import { userInfoStore } from '@/stores/userInfo'
+ const userInfo = userInfoStore()
+ const emit = defineEmits(['fanhuiFun'])
+ const showDizhi=ref(false)
+ const editDizhi=ref(false)
+ const addressEditRef = ref<AddressEditInstance>()
+ const chosenAddressId = ref(1)
+ const addressInfo=ref({
+ id:0,
name:'',
- tel:'17717874345',
- province:'',
- city:"",
- county:'',
addressDetail:'',
- isDefault:false
- }
-}
-const onEdit = (item:any, index:number) =>{
- console.log(item)
- addressInfo.value={
- name:item.name,
- tel:item.tel,
- province:'',
- city:"",
+ tel:'',
+ city:'',
county:'',
- addressDetail:item.address,
- isDefault:item.isDefault
+ areaCode:'',
+ address:'',
+ isDefault:false
+ })
+ const list = ref([
+ {
+ id: 0,
+ code:'',
+ name:'',
+ tel:'',
+ province:'',
+ city:'',
+ county:'',
+ areaCode:'',
+ address:'',
+ isDefault:false
+ },
+ ])
+ const getDefDizhi=(isload:boolean)=>{
+ const pasm=`page=0&size=0&wherecondition=patient_code="${userInfo.patient.patientInfo.code}"`
+ ajaxPost('/patient/address/list', pasm).then((re: any) => {
+ console.log('默认地址')
+ console.log(re)
+ if (re.list.length===0){
+ onAdd()
+ } else {
+ list.value=[]
+ re.list.forEach((e:any)=>{
+ list.value.push({
+ id: e.id,
+ code:e.code,
+ name:e.receivePersonName,
+ tel:e.receivePersonMobile,
+ province:'',
+ city:e.addressArea.split(',')[0],
+ county:e.addressArea.split(',')[1],
+ areaCode:e.remark,
+ address:e.patientAddress,
+ isDefault:e.patientIsDefault===1?true:false,
+ })
+ if (isload){
+ if (e.patientIsDefault===1){
+ chosenAddressId.value=(e.id)
+ }
+ }
+ })
+ console.log(list.value)
+ }
+
+ })
}
- editDizhi.value=true
-}
-const onSave = (form:any) => {
- Toast('save');
- console.log(form)
-
-}
-const onDelete = () => Toast('delete');
-defineExpose({
- openShow
-} )
+ // 打开地址列表
+ const openShow=(id:number)=>{
+ showDizhi.value=true
+ chosenAddressId.value=id
+ getDefDizhi(false)
+ }
+ const onClickLeft=()=>{
+ showDizhi.value=false
+ console.log('返回父级组件',chosenAddressId.value)
+ const row=list.value.find((e:any)=> e.id===chosenAddressId.value)
+ emit('fanhuiFun',row)
+ }
+ const onClickLeft2=()=>{
+ addressEditRef.value?.setAddressDetail('3434343')
+ editDizhi.value=false
+ }
+ const onAdd = () =>{
+ editDizhi.value=true
+ console.log('用户信息')
+ console.log(userInfo.patient)
+ addressInfo.value={
+ id:0,
+ name:userInfo.patient.patientInfo.patientName,
+ addressDetail:userInfo.patient.patientInfo.patientAddress,
+ tel:userInfo.patient.patientInfo.patientTelNo,
+ city:'',
+ county:'',
+ areaCode:'',
+ address:'',
+ isDefault:false
+ }
+ }
+ const onEdit = (item:any, index:number) =>{
+ console.log(item,index)
+ addressInfo.value={
+ id:item.id,
+ name:item.name,
+ addressDetail:item.address,
+ tel:item.tel,
+ city:item.city,
+ county:item.county,
+ areaCode:item.areaCode,
+ address:'',
+ isDefault:item.isDefault
+ }
+ editDizhi.value=true
+ }
+ const onSave = (form:any) => {
+ const pasm={
+ addressArea: [form.city,form.county].toString(),
+ id: addressInfo.value.id,
+ patientAddress: form.addressDetail,
+ patientCode: userInfo.patient.patientInfo.code,
+ patientIsDefault: form.isDefault===true?1:0,
+ receivePersonMobile: form.tel,
+ receivePersonName: form.name,
+ // 存地址code
+ remark: form.areaCode,
+ }
+ if (pasm.id===0){
+ ajaxPost('/patient/address/add', pasm).then((re: any) => {
+ console.log('默认地址')
+ console.log(re)
+ Toast.success('保存成功')
+ getDefDizhi(false)
+ chosenAddressId.value=re.id
+ editDizhi.value=false
+ })
+ } else {
+ ajaxPost('/patient/address/update', pasm).then((re: any) => {
+ console.log('默认地址')
+ chosenAddressId.value=re.id
+ console.log(re)
+ Toast.success('保存成功')
+ getDefDizhi(false)
+ editDizhi.value=false
+ })
+ }
+
+
+
+
+ }
+ const onDelete = () => {
+ ajaxPost('patient/address/delete','id='+addressInfo.value.id).then(re=>{
+ editDizhi.value=false
+ console.log(re)
+ Toast.success('删除成功!')
+ }).finally(()=>{
+ getDefDizhi(true)
+ })
+ }
+ defineExpose({
+ openShow
+ } )
</script>
\ No newline at end of file
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
diff --git a/src/views/jifenShangCheng/index.vue b/src/views/jifenShangCheng/index.vue
index 953a118..af25a31 100644
--- a/src/views/jifenShangCheng/index.vue
+++ b/src/views/jifenShangCheng/index.vue
@@ -1,28 +1,31 @@
<template>
<div>
- <div>
+ <van-loading style="top: 100px;" v-if="loading" type="spinner" size="24px" vertical>
+ 加载中。。。。
+ </van-loading>
+ <div v-else>
<dizhi></dizhi>
<van-tree-select
:height="height"
v-model:main-active-index="activeIndex"
:items="items"
- >
- <template #content >
- <div style="text-align: right; padding-right: 20px; height: 50px; line-height: 30px; color: #409EFF; font-size: 16px;">
- <van-icon size="26px" name="cart-circle-o" style="margin-top: 20px;" />
+ >
+ <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>
- <div style="border-left: 1px solid rgb(229, 226, 225); background:#f7f8fa;">
- <van-card
- style="background: #ffffff;"
- v-for="(item) in items[activeIndex].items"
- >
- <template #desc >
- <span style="color:#409EFF; font-size: 1rem;">{{item.itemName}}</span>
+ <div v-if="items.length > 0" style="border-left: 1px solid rgb(229, 226, 225); background: #f7f8fa;">
+ <van-card
+ style="background: #fff;"
+ v-for="(item,index) in items[activeIndex].items" :key="index"
+ >
+ <template #desc>
+ <span style="color: #409eff; font-size: 1rem;">{{item.itemName}}</span>
</template>
- <template #price >
- <span style="color: red; font-size: 1rem;">{{item.itemPrice}}¥</span>
+ <template #price>
+ <span style="color: #f56c6c; font-size: 1rem;">{{item.itemPrice}}¥</span>
</template>
- <template #thumb >
+ <template #thumb>
<van-image
fit="contain"
width="100%"
@@ -35,82 +38,83 @@
</template>
<template #footer>
- <van-icon @click="goumai(item)" size="20" color="red" name="shopping-cart-o" />
+ <van-icon @click="goumai(item)" size="20" color="#F56C6C" name="shopping-cart-o" />
</template>
- </van-card>
+ </van-card>
</div>
</template>
</van-tree-select>
- </div>
- <div>
-
</div>
<!-- 购买弹框 -->
<div>
<van-popup v-model:show="show" position="bottom" :style="{ height: '320px' }">
<div style="padding-top: 20px;">
<van-row>
- <van-col :span="2" style="height: 60px; line-height: 60px; padding-top: 10px;">
+ <van-col :span="2" style="height: 60px; line-height: 60px; padding-top: 10px;">
<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;" >
- 王虎 燎原西路190弄3好107
- <br/>联系电话:17717853034
+ <van-col :span="20" style="font-size: 16px; padding-left: 10px; height: 60px; line-height: 30px;">
+ <div>{{defaultDizhi.patientAddress}} </div>
+ <div>联系电话:{{defaultDizhi.receivePersonMobile}} </div>
</van-col>
- <van-col :span="2" style="height: 60px; line-height: 60px;">
+ <van-col :span="2" style="height: 60px; line-height: 60px;">
<van-icon size="20px" @click="openDizhi" name="arrow" />
</van-col>
</van-row>
</div>
<div style="padding-top: 20px;" class="setItem">
<van-card>
- <template #desc >
- <span style="color:#409EFF; font-size: 1rem;">{{setItem.itemName}}</span>
+ <template #desc>
+ <span style="color: #409eff; font-size: 1rem;">{{setItem.itemName}}</span>
</template>
- <template #price >
- <span style="color: red; font-size: 1rem;">{{setItem.itemPrice}}¥</span>
+ <template #price>
+ <span style="color: #f56c6c; font-size: 1rem;">{{setItem.itemPrice}}¥</span>
</template>
- <template #thumb >
+ <template #thumb>
<van-image
- fit="contain"
+ style="border: 1px solid #ebedf0;"
+ fit="cover"
width="100%"
height="100%"
:src="setItem.itemPhoto"
/>
</template>
<template #tags>
- <br/>
+ <br />
<van-tag style="margin-top: 10px;" plain type="danger">选择人数多</van-tag>
</template>
<template #footer>
<span>
- <van-icon size="1rem" v-if="setItem.number>1" @click="setItem.number--" name="minus" />
+ <van-icon size="1rem" v-if="setItem.number > 1" @click="setItem.number--" name="minus" />
</span>
- <span style="font-size: 1.2rem; margin-left: 1rem; margin-right: 1rem;">
+ <span style="font-size: 1.2rem; margin-left: 1rem; margin-right: 1rem;">
{{setItem.number}}
</span>
<span>
<van-icon size="1rem" @click="setItem.number++" name="plus" />
-
+
</span>
</template>
</van-card>
</div>
- <div style="text-align: right; font-size: 18px; color: red; font-weight: 600; margin-top: 10px;padding-right: 20px;">
- 小计¥{{setItem.itemPrice*setItem.number}}
+ <div style="text-align: right; font-size: 18px; color: #f56c6c; font-weight: 600; margin-top: 10px;padding-right: 20px;">
+ 小计¥{{setItem.itemPrice * setItem.number}}
</div>
<van-action-bar>
- <van-action-bar-icon icon="revoke" @click="show=false" text="返回" dot />
- <van-action-bar-icon icon="cart-o" text="购物车" badge="5" />
- <van-action-bar-button type="warning" text="加入购物车" />
+ <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>
</van-popup>
</div>
<!-- 地址弹框 -->
<div>
- <dizhi :fanhuiFun="feihuDizhi" ref="dizhiRef"></dizhi>
+ <dizhi @fanhui-fun="feihuDizhi" ref="dizhiRef"></dizhi>
+ </div>
+ <div>
+ <gouwuche ref="gouwucheRef"></gouwuche>
</div>
<van-tabbar v-model="active" @change="tabChang">
<van-tabbar-item name="home" icon="like">首页</van-tabbar-item>
@@ -120,79 +124,147 @@
</div>
</template>
<script lang="ts" setup>
-import { computed, ref } from 'vue'
-import {useRouter} from 'vue-router'
-import { useWindowSize } from '@vant/use'
-// import dizhiAdmin from '../jifenShangCheng/components/dizhiAdmin.vue'
-import dizhi from '../jifenShangCheng/components/dizhi.vue'
-import { userInfoStore } from '@/stores/userInfo'
-const userInfo = userInfoStore()
-import { ajaxGet ,ajaxPost} from '@/utils/axios'
-import { onMounted } from 'vue'
-const router=useRouter()
-const { width, height } = useWindowSize();
-const dizhiRef=ref()
-const show=ref(false)
-const patientInfo=computed(() => {
- return userInfo.patient
-})
-const setItem=ref({
- itemName:'dsd',
- itemPrice:0,
- itemPhoto:'',
- code:'',
- number:1,
- id:0
-})
-const activeIndex = ref(0);
-const items=ref([
- {
- name:'',
- text:'',
- items:[]
- }
-])
-const active=ref('jifen')
-const tabChang=(index:any)=>{
- if (index==='home'){
- router.push('/')
- } else if(index==='jifen') {
- router.push('jifenShangCheng')
- }else if(index==='my') {
- router.push('my')
- }
-}
-// 购买
-const goumai=(item:any)=>{
- console.log(item)
- setItem.value={
- itemName:item.itemName,
- itemPrice:item.itemPrice,
- code:item.code,
- number:1,
- itemPhoto:item.itemPhoto,
- id:item.id
- }
- show.value=true
-}
-// 编辑地址
-const openDizhi=()=>{
- dizhiRef.value.openShow()
-}
-// 返回地址
-const feihuDizhi=()=>{
- console.log()
-}
-onMounted(()=>{
- ajaxPost('/eshop/listItems',`clientCode=${patientInfo.value.patientInfo.clientCode}`).then((re:any)=>{
- console.log(re.category)
- const list= re.category
- items.value =list.map((el:any)=>{
- el.text=el.name
- return el
- })
- console.log(items.value)
-
+ import { computed, ref } from 'vue'
+ import {useRouter} from 'vue-router'
+ import { useWindowSize } from '@vant/use'
+ import dizhi from '../jifenShangCheng/components/dizhi.vue'
+ import gouwuche from './components/gouwuche.vue'
+ import { userInfoStore } from '@/stores/userInfo'
+ const userInfo = userInfoStore()
+ import { ajaxPost} from '@/utils/axios'
+ import { onMounted } from 'vue'
+ import { Toast } from 'vant'
+ const router=useRouter()
+ const { height } = useWindowSize()
+ const dizhiRef=ref()
+ const gouwucheRef=ref()
+ const show=ref(false)
+ const loading=ref(true)
+ const gwcBadge=ref(0)
+ const gwcList=ref([])
+ const defaultDizhi=ref({
+ id:0,
+ code:'',
+ receivePersonName:'',
+ receivePersonMobile:'',
+ patientAddress:'',
})
-})
+ const patientInfo=computed(() => {
+ return userInfo.patient
+ })
+ const setItem=ref({
+ itemName:'dsd',
+ itemPrice:0,
+ itemPhoto:'',
+ code:'',
+ number:1,
+ id:0
+ })
+ const activeIndex = ref(0)
+ const items=ref([
+ {
+ name:'',
+ text:'',
+ items:[]
+ }
+ ])
+ const active=ref('jifen')
+ const openGwc=()=>{
+ gouwucheRef.value.openShow()
+ }
+ const tabChang=(index:any)=>{
+ if (index==='home'){
+ router.push('/')
+ } else if (index==='jifen') {
+ router.push('jifenShangCheng')
+ } else if (index==='my') {
+ router.push('my')
+ }
+ }
+ const AddGwc=()=>{
+ console.log(setItem.value)
+ const row={
+ code:'',
+ id:0,
+ itemCode:setItem.value.code,
+ itemCount:setItem.value.number,
+ patientCode:patientInfo.value.patientInfo.code
+ }
+ ajaxPost('/eshop/cart/add',row).then(re=>{
+ console.log(re)
+ Toast.success('已经加入购物车了')
+ show.value=false
+ getListGwc()
+ }).catch(()=>{
+
+ })
+ }
+ // 购买
+ const goumai=(item:any)=>{
+ console.log(item)
+ setItem.value={
+ itemName:item.itemName,
+ itemPrice:item.itemPrice,
+ code:item.code,
+ number:1,
+ itemPhoto:item.itemPhoto,
+ id:item.id
+ }
+ show.value=true
+ }
+ // 编辑地址
+ const openDizhi=()=>{
+ dizhiRef.value.openShow(defaultDizhi.value.id)
+ }
+ // 返回地址
+ const feihuDizhi=(row:any)=>{
+ console.log(row)
+ defaultDizhi.value={
+ id:row.id,
+ code:row.code,
+ receivePersonName:row.name,
+ receivePersonMobile:row.tel,
+ patientAddress:row.address,
+ }
+ }
+ const getListGwc=()=>{
+ ajaxPost('/eshop/cart/list',`page=0&size=0&wherecondition=patient_code=\'${patientInfo.value.patientInfo.code}\'`)
+ .then((re:any)=>{
+ console.log('购物车')
+ console.log(re)
+ gwcBadge.value=re.list.length
+ gwcList.value=re.list
+ })
+ }
+ 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){
+ console.log('没有默认地址')
+ } else {
+ defaultDizhi.value=re.list[0]
+ }
+ console.log(defaultDizhi.value)
+ })
+ }
+ onMounted(()=>{
+ getDefDizhi()
+ loading.value=true
+ ajaxPost('/eshop/listItems',`clientCode=${patientInfo.value.patientInfo.clientCode}`).then((re:any)=>{
+ console.log(re.category)
+ const list= re.category
+ items.value =list.map((el:any)=>{
+ el.text=el.name
+ return el
+ })
+ console.log(items.value)
+
+ }).finally(()=>{
+ loading.value=false
+ })
+ getListGwc()
+
+ })
</script>
\ No newline at end of file
--
Gitblit v1.8.0