From 98f4b7ec4164ec1c6798c8c4188b93f4ce48ec46 Mon Sep 17 00:00:00 2001 From: xuxy <1059738716@qq.com> Date: 星期三, 10 七月 2024 23:39:57 +0800 Subject: [PATCH] update收获地址 --- pages/home/components/home-banner-imgs.vue | 42 + pages/home/home.vue | 276 +---- common/self.scss | 12 sub_pages/customer/shopping/shopping.vue | 3 pages.json | 9 pages/user/user-customer.scss | 41 pages/home/components/home-top-flow.vue | 149 +++ pages/home/components/home-zones.vue | 191 ++++ components/footer/main.scss | 60 + pages/home/home.scss | 109 +- pages/user/address/address.vue | 398 +++++++++ /dev/null | 144 --- pages/home/components/home-price.vue | 147 +++ components/footer/customer-footer.vue | 28 pages/user/user.scss | 28 sub_pages/customer/trade/trade.vue | 603 ++++++++++++++ pages/home/components/home-category.vue | 69 + pages/user/supplier-user.vue | 111 + 18 files changed, 1,925 insertions(+), 495 deletions(-) diff --git a/common/self.scss b/common/self.scss index dece188..9f3c54a 100644 --- a/common/self.scss +++ b/common/self.scss @@ -177,7 +177,13 @@ .m-l-40 { margin-left: 80rpx; } - +.m-l-5{ + margin-left: 10rpx; +} +.m-l-12{ + margin-left: 24rpx; + +} .m-r-a { margin-right: auto; } @@ -195,7 +201,9 @@ margin-right: 4rpx; } - +.m-r-5{ + margin-right: 10rpx; +} .m-r-10 { margin-right: 20rpx; diff --git a/components/footer/customer-footer.vue b/components/footer/customer-footer.vue index 7298a72..c953cce 100644 --- a/components/footer/customer-footer.vue +++ b/components/footer/customer-footer.vue @@ -1,25 +1,25 @@ <template> - <view class="footer flex customer-footer" style=""> + <view class="footer flex customer-footer flex-wrap-normal" style=""> <view v-for="(item,index) in tabBar" :key="index" class="footer-item"> - <view class="item flex" :class="flg==index?'cur':''" @click="go(index,item)"> + <view class="item" :class="flg==index?'cur':''" @click="go(index,item)"> <view v-if="index==0"> <image src="../../static/images/customer/footer/footer-home-1.png" class="footer-icon" v-if="flg==0"></image> <image src="../../static/images/customer/footer/footer-home-0.png" class="footer-icon" v-if="flg!=0"></image> </view> <view v-if="index==1"> - <image src="../../static/images/customer/footer/footer-trade-1.png" class="footer-icon" v-if="flg==0"></image> - <image src="../../static/images/customer/footer/footer-trade-0.png" class="footer-icon" v-if="flg!=0"></image> + <image src="../../static/images/customer/footer/footer-trade-1.png" class="footer-icon" v-if="flg==1"></image> + <image src="../../static/images/customer/footer/footer-trade-0.png" class="footer-icon" v-if="flg!=1"></image> </view> <view v-if="index==2"> - <image src="../../static/images/customer/footer/footer-shopping-1.png" class="footer-icon" v-if="flg==0"> + <image src="../../static/images/customer/footer/footer-shopping-1.png" class="footer-icon" v-if="flg==2"> </image> - <image src="../../static/images/customer/footer/footer-shopping-0.png" class="footer-icon" v-if="flg!=0"> + <image src="../../static/images/customer/footer/footer-shopping-0.png" class="footer-icon" v-if="flg!=2"> </image> </view> <view v-if="index==3"> - <image src="../../static/images/customer/footer/footer-self-1.png" class="footer-icon" v-if="flg==1"></image> - <image src="../../static/images/customer/footer/footer-self-0.png" class="footer-icon" v-if="flg!=1"></image> + <image src="../../static/images/customer/footer/footer-self-1.png" class="footer-icon" v-if="flg==3"></image> + <image src="../../static/images/customer/footer/footer-self-0.png" class="footer-icon" v-if="flg!=3"></image> </view> <view> @@ -38,18 +38,22 @@ return { tabBar: [{ - "text": "首页" + "text": "首页", + "pagePath":'/pages/home/home' }, { - "text": "交易大厅" + "text": "交易大厅", + "pagePath":'/sub_pages/customer/trade/trade' }, { - "text": "购物车" + "text": "购物车", + "pagePath":'/sub_pages/customer/shopping/shopping' }, { - "text": "我的" + "text": "我的", + "pagePath":'/pages/user/supplier-user' } ] } diff --git a/components/footer/main.scss b/components/footer/main.scss index 86527b8..03a0964 100644 --- a/components/footer/main.scss +++ b/components/footer/main.scss @@ -109,4 +109,62 @@ border-radius: 50rpx; color: var(--topicolor); } -} \ No newline at end of file +} + +.footer.customer-footer{ + background-color: #fff; + bottom: 0rpx; + left:0rpx; + right: 0rpx; + width: 750rpx; + .footer-item{ + flex: 1; + border-radius: 50rpx; + padding: 8rpx; + + .item { + + font-family: PingFangSC-Regular, PingFang SC; + font-weight: 400; + // color: #A1A6B3; + color: var(--topicgray); + flex-direction: column; + align-items: center; + text-align: center; + min-width: 100rpx; + font-size: 24rpx; + color: #000000; + line-height: 34rpx; + color: #20613D; + min-height: 40rpx; + // .footer-bottom-brand-icon{ + // width: 90rpx; + // height:70rpx; + // } + // .footer-icon{ + // width: 50rpx; + // height: 50rpx; + // margin-top: 20rpx; + // } + + .footer-icon.0 { + width: 37rpx; + height: 43rpx; + } + .footer-icon.1 { + width: 38rpx; + height: 39rpx; + } + .footer-icon.2 { + width: 39rpx; + height: 38rpx; + } + .footer-icon.3 { + width: 31rpx; + height: 38rpx + } + } + } + +} + \ No newline at end of file diff --git a/pages.json b/pages.json index cd0f85d..780dd3b 100644 --- a/pages.json +++ b/pages.json @@ -4,6 +4,7 @@ "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue" }, "pages": [ + // #ifdef PUB_CUSTOMER { "path": "pages/home/home", @@ -66,6 +67,14 @@ "navigationBarTitleText": "修改密码", "enablePullDownRefresh": false } + }, + { + "path" : "pages/user/address/address", + "style" : + { + "navigationBarTitleText" : "收货地址", + "enablePullDownRefresh" : false + } } ], diff --git a/pages/home/components/home-banner-imgs.vue b/pages/home/components/home-banner-imgs.vue new file mode 100644 index 0000000..ef00757 --- /dev/null +++ b/pages/home/components/home-banner-imgs.vue @@ -0,0 +1,42 @@ +<template> + <view class="flex home-banner-imgs"> + <view class="flex1 m-r-5"> + <image class="p1 img100" src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/b1/b1e7dc929b53412bbea72c9ca3f9aa25%E4%BD%8D%E5%9B%BE@2x%20(1).png" ></image> + </view> + <view class="flex1 m-l-5"> + <image class="p2 img100" src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/86/86605e258843479f828ce6749010d791%E4%BD%8D%E5%9B%BE@2x%20(2).png"></image> + <image class="p3 img100" src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/76/76532c632d28449a9f93a4228a7b851e%E4%BD%8D%E5%9B%BE@2x%20(3).png"></image> + </view> + </view> +</template> + +<script> + export default { + data() { + return { + + }; + } + } +</script> + +<style lang="scss"> +.home-banner-imgs{ + .p1{ + // width: 334rpx; + height: 308rpx; + width: 100%; + } + .p2{ + // width: 334rpx; + width: 100%; + height: 142rpx; + } + .p3{ + width: 100%; + margin-top: 18rpx; + // width: 334rpx; + height: 142rpx; + } +} +</style> diff --git a/pages/home/components/home-category.vue b/pages/home/components/home-category.vue new file mode 100644 index 0000000..1768fea --- /dev/null +++ b/pages/home/components/home-category.vue @@ -0,0 +1,69 @@ +<template> + <view class="home-category"> + <view class="flex"> + <view class="t1">06-03(今日)第一场交易中</view> + <view class="t2">当前在售123435扎</view> + </view> + <view class="m-t-12 flex"> + <view class="item" v-for="(item,index) of list" :key="index"> + <image class="icon img100" :src="item.url"></image> + <view>{{item.name || '-'}}</view> + </view> + </view> + </view> +</template> + +<script> + export default { + beforeMount() { + for (var i = 0; i < 10; i++) { + this.list.push({ + 'url': 'https://hmy-flower.oss-cn-shanghai.aliyuncs.com/e2/e2ee2fa7cdef458ba748261305edc57435549b9113807b6fbbfd4bfa456334d.png', + 'name': '玫瑰' + }) + } + }, + data() { + return { + list: [], + + }; + } + } +</script> + +<style lang="scss"> + .home-category { + .item { + text-align: center; + font-weight: 400; + font-size: 28rpx; + color: #000000; + line-height: 40rpx; + min-width: 20%; + margin-bottom: 28rpx; + .icon { + width: 94rpx; + height: 94rpx; + border-radius: 50%; + } + } + + .t1 { + font-size: 28rpx; + color: #333333; + line-height: 50rpx; + font-weight: 600; + } + + .t2 { + margin-left: auto; + padding: 8rpx; + font-size: 24rpx; + color: #5B8C71; + line-height: 34rpx; + background: #E1F0E7; + border-radius: 4rpx; + } + } +</style> \ No newline at end of file diff --git a/pages/home/components/home-price.vue b/pages/home/components/home-price.vue new file mode 100644 index 0000000..4065062 --- /dev/null +++ b/pages/home/components/home-price.vue @@ -0,0 +1,147 @@ +<template> + <view class="home-price"> + <view class="flex t1"> + <view>2024-06-03 09:20:19 花满芜成交均价</view> + <uni-icons class="m-l-a m-r-0" type="right"></uni-icons> + </view> + <view class="items" style="border-top: 2rpx solid #EEEEEE;"> + <view class="flex" style="border-bottom: 2rpx solid #EEEEEE;padding-top: 24rpx;"> + <view class="item flex1"> + <view class="title">单头玫瑰</view> + <view class="price"> + 19.66 + </view> + <view class="flex desc"> + <view class="m-l-a m-r-a">+0.76</view> + <view class="m-l-a m-r-a text-right">+4.02%</view> + </view> + </view> + <view class="line"></view> + <view class="item flex1"> + <view class="title">单头玫瑰</view> + <view class="price"> + 19.66 + + </view> + <view class="flex desc"> + <view class="m-l-a m-r-a">+0.76</view> + <view class="m-l-a m-r-a text-right">+4.02%</view> + </view> + </view> + <view class="line"></view> + + <view class="item flex1"> + <view class="title">单头玫瑰</view> + <view class="price"> + 19.66 + </view> + <view class="flex desc"> + <view class="m-l-a m-r-a">+0.76</view> + <view class="m-l-a m-r-a text-right">+4.02%</view> + </view> + </view> + </view> + <!-- <u-divider></u-divider> --> + <view class="flex" style="padding-top: 24rpx;"> + <view class="item flex1"> + <view class="title">单头玫瑰</view> + <view class="price"> + 19.66 + </view> + <view class="flex desc"> + <view class="m-l-a m-r-a">+0.76</view> + <view class="m-l-a m-r-a text-right">+4.02%</view> + </view> + </view> + <view class="line"></view> + <view class="item flex1"> + <view class="title">单头玫瑰</view> + <view class="price"> + 19.66 + + </view> + <view class="flex desc"> + <view class="m-l-a m-r-a">+0.76</view> + <view class="m-l-a m-r-a text-right">+4.02%</view> + </view> + </view> + <view class="line"></view> + + <view class="item flex1"> + <view class="title">单头玫瑰</view> + <view class="price"> + 19.66 + </view> + <view class="flex desc"> + <view class="m-l-a m-r-a">+0.76</view> + <view class="m-l-a m-r-a text-right">+4.02%</view> + </view> + </view> + </view> + + </view> + </view> +</template> + +<script> + export default { + data() { + return { + + }; + } + } +</script> + +<style lang="scss"> + .home-price { + margin-top: 20rpx; + height: 414rpx; + background: #FFFFFF; + border-radius: 8rpx; + padding: 20rpx; + + .items { + .line { + height: 104rpx; + background-color: #EEEEEE; + width: 2rpx; + } + + .item { + padding: 24rpx 14rpx; + + .title { + text-align: center; + font-weight: 600; + font-size: 24rpx; + color: #000000; + line-height: 34rpx; + } + + .price { + font-weight: 600; + font-size: 32rpx; + color: #BF0000; + line-height: 44rpx; + text-align: center; + } + + .desc { + font-weight: 400; + font-size: 24rpx; + color: #666666; + line-height: 34rpx; + } + } + } + + .t1 { + font-weight: 400; + font-size: 24rpx; + color: #000000; + line-height: 34rpx; + padding-bottom: 18rpx; + } + } +</style> \ No newline at end of file diff --git a/pages/home/components/home-top-flow.vue b/pages/home/components/home-top-flow.vue new file mode 100644 index 0000000..1b5e2ba --- /dev/null +++ b/pages/home/components/home-top-flow.vue @@ -0,0 +1,149 @@ +<template> + <view class="home-top-flow"> + <view class="item flex" v-for="(item,index) of list" :key="index"> + <view class="img"> + <image class="img img100" + src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/ff/fff3027bd0a146478fd1f0aae816a028%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20240710224139.png"> + </image> + <view class="level"> + A级 + </view> + </view> + + <view class="m-l-12 info-container flex1"> + <view class="title"> + 橙色芭比 + <view class="price"> + ¥6.60/扎 + </view> + </view> + <view class="tags"> + <view class="tag red">限时抢购</view> + <view class="tag green">品质严选</view> + </view> + <view class="shop-name"> + 小石头花卉 + </view> + <view class="other-info flex"> + <view class="m-r-15"> + 已售:7 + </view> + <view class="m-r-15"> + 剩余:13 + </view> + <view class="m-r-15"> + 1支/扎 + </view> + </view> + </view> + </view> + </view> +</template> + +<script> + export default { + data() { + return { + list: [{}, {}, {}, {}] + }; + } + } +</script> + +<style lang="scss"> + .home-top-flow { + .item { + margin-top: 20rpx; + background: #FFFFFF; + border-radius: 8rpx; + padding: 10rpx; + + .info-container { + + .other-info { + margin-top: 6rpx; + font-size: 24rpx; + color: #666666; + line-height: 34rpx; + text-align: left; + } + + .shop-name { + margin-top: 14rpx; + font-size: 24rpx; + color: #666666; + line-height: 34rpx; + } + + .tags { + margin-top: 12rpx; + display: flex; + + .tag { + min-width: 80rpx; + padding-left: 20rpx; + padding-right: 20rpx; + line-height: 36rpx; + background: #FEE6E6; + border-radius: 21rpx; + font-size: 24rpx; + color: #CD1212; + margin-right: 12rpx; + } + + .tag.green { + color: rgba(110, 159, 102, 1); + background: rgba(202, 229, 214, 1); + border-radius: 21rpx; + // opacity: 0.57; + } + } + + .title { + font-weight: 600; + font-size: 32rpx; + color: #000000; + line-height: 44rpx; + margin-top: 8rpx; + position: relative; + + .price { + position: absolute; + font-weight: 400; + font-size: 28rpx; + color: #CF0000; + line-height: 40rpx; + top: 0; + right: 0; + } + } + + } + + .img { + width: 206rpx; + height: 206rpx; + border-radius: 8rpx; + position: relative; + + .level { + position: absolute; + width: 66rpx; + height: 44rpx; + background: #20613D; + left: 0; + top: 0; + border-top-left-radius: 8rpx; + border-bottom-right-radius: 8rpx; + color: #FFFFFF; + line-height: 44rpx; + font-size: 24rpx; + text-align: center; + } + + } + + + } + } +</style> \ No newline at end of file diff --git a/pages/home/components/home-zones.vue b/pages/home/components/home-zones.vue new file mode 100644 index 0000000..c9b656f --- /dev/null +++ b/pages/home/components/home-zones.vue @@ -0,0 +1,191 @@ +<template> + <view class="home-zones"> + <view class="c"> + <image class="p1 img100" :lazy-load="true" mode="aspectFit" + src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/eb/eba404b98a224edc82897fe9647902e7%E4%BD%8D%E5%9B%BE@2x%20(4).png"> + </image> + <view class="c-txt-1"> + <view class="title">婚礼酒店专区</view> + <view class="flex"> + <view class="desc">查看详情</view> + <view class="right m-l-5"> + <uni-icons class="icon" type="right" color="#C3B8A0" size="12"></uni-icons> + </view> + + </view> + </view> + </view> + <view class="c"> + <image class="p2 img100 m-t-12" :lazy-load="true" mode="aspectFit" + src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/52/52deec39e6ff47efb4855cda8766f29e%E8%B7%AF%E5%BE%84%204@2x.png"> + </image> + <view class="c-txt-1" style="top: 60rpx;"> + <view class="title">特惠专区</view> + <view class="flex"> + <view class="desc">查看详情</view> + <view class="right m-l-5"> + <uni-icons class="icon" type="right" color="#C3B8A0" size="12"></uni-icons> + </view> + + </view> + </view> + </view> + <view class="flex m-t-12"> + <view class="flex1 c m-r-5"> + <image class="p3 img100" :lazy-load="true" mode="aspectFit" + src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/87/8787940a92524d7a9805a9184946cfaf%E4%BD%8D%E5%9B%BE@2x%20(5).png"> + </image> + <view class="c-txt-2"> + <view class="title">品质专区</view> + <view class="flex"> + <view class="desc">查看详情</view> + <view class="right m-l-5"> + <uni-icons class="icon" type="right" color="#ffffff" size="9"></uni-icons> + </view> + + </view> + </view> + </view> + <view class="flex1 c m-l-5"> + <image class="p4 img100" :lazy-load="true" mode="aspectFit" + src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/0e/0eb0917d31e64c849f250b6e0a825b25%E4%BD%8D%E5%9B%BE@2x%20(6).png"> + </image> + <view class="c-txt-2 red"> + <view class="title">秒杀专区</view> + <view class="flex"> + <view class="desc">查看详情</view> + <view class="right m-l-5"> + <uni-icons class="icon" type="right" color="#ffffff" size="9"></uni-icons> + </view> + + </view> + </view> + </view> + </view> + </view> +</template> + +<script> + export default { + data() { + return { + + }; + } + } +</script> + +<style lang="scss"> + .home-zones { + margin-top: 20rpx; + + .c { + position: relative; + + .c-txt-1 { + position: absolute; + left: 38rpx; + top: 40rpx; + + .title { + font-weight: 600; + font-size: 36rpx; + color: #FFFFFF; + line-height: 50rpx; + margin-bottom: 8rpx; + } + + .desc { + font-weight: 400; + font-size: 28rpx; + color: #FFFFFF; + line-height: 40rpx; + } + + .right { + background: #FFFFFF; + border-radius: 50%; + width: 28rpx; + height: 28rpx; + margin-top: 6rpx; + position: relative; + + .icon { + position: absolute; + top: -10rpx; + left: 2rpx; + } + } + } + + .c-txt-2 { + position: absolute; + left: 22rpx; + top: 50rpx; + + .title { + font-weight: 600; + font-size: 28rpx; + color: #535FCA; + line-height: 40rpx; + margin-bottom: 2rpx; + } + + .desc { + font-weight: 400; + font-size: 24rpx; + color: #535FCA; + line-height: 34rpx; + } + + .right { + background: #535FCA; + border-radius: 50%; + width: 24rpx; + height: 24rpx; + margin-top: 6rpx; + position: relative; + + .icon { + position: absolute; + top: -14rpx; + left: 4rpx; + } + } + } + + .c-txt-2.red { + .title { + color: #892E2E; + } + .desc { + color: #892E2E; + } + .right{ + background: #892E2E; + } + } + } + + .p1 { + width: 100%; + height: 176rpx; + } + + .p2 { + width: 100%; + height: 176rpx; + + } + + .p3 { + width: 100%; + height: 176rpx; + } + + .p4 { + width: 100%; + height: 176rpx; + } + } +</style> \ No newline at end of file diff --git a/pages/home/home.scss b/pages/home/home.scss index bd9753a..0ebf45b 100644 --- a/pages/home/home.scss +++ b/pages/home/home.scss @@ -14,78 +14,69 @@ .home-banner-image{ width: 750rpx; background-size: 100% 100%; - height: 472rpx; + height: 306rpx; } swiper { - height: 472rpx; + height: 306rpx; } .swiper-box{ position: relative; swiper-item{ background-color: #fff; + border-radius: 8rpx; } } - .home-shop-top{ - position: relative; - // width: 690rpx; - height: 488rpx - 36rpx; - padding: 18rpx; - padding-top: 36rpx; - padding-bottom: 0rpx; - - background: linear-gradient(360deg, #DDECE4 0%, #B8D9C6 100%) #AEDCC7; - border-radius: 20rpx; - // padding: 1; - .title{ - width: 164rpx; - height: 42rpx; - margin-bottom: 16rpx; - } - .icon{ - position: absolute; - width: 114rpx; - height: 110rpx; - right: 48rpx; - top: 20rpx; - z-index: 1; - } - .card-list-item{ - z-index: 2; - } - } - .home-travel-top{ - position: relative; - // width: 690rpx; - min-height: 490rpx - 36rpx - 16rpx; - background: #A9DAEB; - border-radius: 20rpx; - padding: 18rpx; - padding-bottom: 16rpx; - padding-top: 36rpx; - .title{ - width: 126rpx; - height: 40rpx; - margin-bottom: 16rpx; - } - .icon{ - position: absolute; - width: 314rpx; - right: 60rpx; - top: 26rpx; - height:98rpx; - z-index: 0; - - } - /deep/ .card-list-item{ - position: relative; - z-index: 2; - } - } + + } - +.main-container.user-home{ + min-height: 99vh; + padding: 30rpx; + background: #F7F7F7; + position: relative; + .bg-top-green{ + height: 197px; + background: #CAE5D6; + position: absolute; + left: 0rpx; + right: 0rpx; + top: 0rpx; + z-index: 0; + } + .school{ + position: relative; + z-index: 1; + } + .search-container { + display: flex; + margin: 12rpx 0rpx 20rpx 0rpx; + position: relative; + z-index: 1; + + .input { + // flex: 1; + // max-width: 400rpx; + background-color: #fff !important; + // line-height: 58rpx; + // height: 58rpx; + border-radius: 8rpx; + } + + .button { + min-width: 120rpx; + max-width: 120rpx; + margin-left: auto; + margin-right: 0rpx; + text-align: right; + line-height: 70rpx !important; + // height: 58rpx !important; + // display: flex; + } + } +} .main-container.home{ background-image: url('https://hmy-flower.oss-cn-shanghai.aliyuncs.com/2a/2aa62e6bd1f74456b005d3f57daa54adbg.png'); min-height: 99vh; diff --git a/pages/home/home.vue b/pages/home/home.vue index e89364d..805733e 100644 --- a/pages/home/home.vue +++ b/pages/home/home.vue @@ -1,23 +1,25 @@ <template> - <view class="main-container home"> + <view class="main-container user-home"> + <view class="bg-top-green"></view> <!-- 顶部,可能 --> - <view class="school" :style="{'background-color': color,'padding-top':(StatusBar)+'px' + <view class="school" :style="{'padding-top':(StatusBar)+'px' ,height:CustomBar+'rpx','line-height':CustomBar+'rpx' }"> - <view class="home-logo"></view> - - <picker @change="PickerChangeSchool" :value="schoolIndex" :range="schools" range-key="name"> + <picker @change="PickerChangeSchool" :value="areaIndex" :range="schools" range-key="name"> <view class="picker flex"> - <!-- <text class="cuIcon-locationfill"></text> --> - <uni-icons type="location" class="m-l-15 m-r-5" size="18"></uni-icons> + <uni-icons type="location" class="m-r-5" size="18"></uni-icons> <view> - {{ schoolIndex>=0&&schools[schoolIndex].name ? schools[schoolIndex].name : '选择校区' }} + {{ areaIndex>=0&&schools[areaIndex].name ? schools[areaIndex].name : '选择位置' }} </view> - <!-- <text class="cuIcon-unfold margin-left-xs"></text> --> </view> </picker> </view> - <!-- <view :style="{'background-color': color,'padding-top':(StatusBar)+'px',height:CustomBar+'px'}"></view> --> - + <view class="search-container m-t-12 flex"> + <view class="flex1 input"> + <u--input placeholder="请输入花名" v-model="search_flow" @confirm="buttonSearchFlow" suffixIcon="search" + :suffixIconStyle="{'font-size':'24px','color': '#20613D'}" > + </u--input> + </view> + </view> <!-- banner --> <uni-swiper-dot class="uni-swiper-dot-box" @clickItem=clickItem :info="info" :current="currentBanner" @@ -31,84 +33,35 @@ </image> </view> </swiper-item> - <animation-words :words="words" v-if="words&&words.length>0"></animation-words> - </swiper> <swiper class="swiper-box" @change="changeBanner" :current="0" v-if="!banners||banners.length==0"> <swiper-item v-for="(item, index) in 1" :key="index"> <view class="swiper-item" :class="'swiper-item' + index"> <image class="home-banner-image" mode="scaleToFill" - src="https://xy-go.oss-cn-beijing.aliyuncs.com/51/51abd2f29d104a78a5d6dcc27078716a位图@2x (4).png"> + src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/62/62ddac6297104e369aba646be704064dbanner@2x.png"> </image> </view> </swiper-item> - <animation-words :words="words" v-if="words&&words.length>0"></animation-words> - </swiper> </uni-swiper-dot> <!-- tip --> - <view class="p10"> - <uni-notice-bar @click="getNoticeMore" v-if="currentNotice&¤tNotice.id" class="notice-bar" - color="#333" background-color="#fff" show-get-more show-icon :scrollable="scrollable" - :text="currentNotice.title" :key="currentNotice.id" /> + <view class="m-t-12" @click="getNoticeMore"> + <uni-notice-bar class="notice-bar" color="#333" background-color="#fff" show-get-more show-icon + :scrollable="scrollable" :text="currentNotice.title" :key="currentNotice.id" /> <span v-if="!currentNotice||!currentNotice.id"> </span> </view> + <!-- 当前分类 --> + <home-category></home-category> + <!-- 特别的几个公告图片 --> + <home-banner-imgs></home-banner-imgs> + <!-- 均价情况 --> + <home-price></home-price> + <!-- 几个专区 --> + <home-zones></home-zones> + <!-- 置顶的花列表 --> + <home-top-flow></home-top-flow> - <!-- 各种按钮 --> - <home-buttons></home-buttons> - <!-- 推荐的成团的 --> - <view class="p15" style="padding-top: 0rpx;" v-if="tuangouList&&tuangouList.length>0"> - <view class="home-shop-top"> - <!-- <view>即将成团</view> --> - <image src="../../static/imgs/home/home-shop-top-txt.png" mode="aspectFit" class="title"></image> - <image src="../../static/imgs/home/home-shop-top-icon.png" mode="aspectFit" class="icon"></image> - - <card-list-item type='shop' :dto="tuangouList[0]" @pop="pop"></card-list-item> - </view> - </view> - <!-- 出去玩的 --> - <view class="p15" style="padding-top: 0rpx;padding-bottom: 0rpx;" v-if="tripList&&tripList.length>0"> - <view class="home-travel-top"> - <!-- <view>粗去玩</view> --> - <image src="../../static/imgs/home/home-travel-top-txt.png" mode="aspectFit" class="title"></image> - <image src="../../static/imgs/home/home-travel-top-icon.png" mode="aspectFit" class="icon"></image> - <card-list-item type='travel' :dto="tripList[0]"></card-list-item> - </view> - </view> - - <!-- 3个tab选项 --> - - <view class="p15" style="padding-bottom: 10rpx;"> - <!-- @change="changeTab" --> - <top-tabs :tabs="tabs" :flg.sync="tabIndex"></top-tabs> - - - - </view> - <!-- 根据不同的 --> - <view class="" style="padding-left: 30rpx;padding-right: 30rpx;"> - <view v-show="tabIndex==0" style="min-height: 400rpx;"> - <!-- 加载推荐位置的? --> - <no-data v-if="!tuangouList||tuangouList.length==0" style="width: 100%;"></no-data> - <view class="m-b-24" v-for="item of tuangouList"> - <card-list-item type='shop' :dto="item" @pop="pop"></card-list-item> - </view> - </view> - <view v-show="tabIndex==1" style="min-height: 400rpx;"> - <!-- 加载推荐位置的? --> - <no-data v-if="!tripList||tripList.length==0" style="width: 100%;"></no-data> - - <view class="m-b-24" v-for="item of tripList"> - <card-list-item type='travel' :dto="item" class="m-b-24"></card-list-item> - </view> - - </view> - </view> - <view v-show="tabIndex==2" style="margin-top: -10rpx;"> - <home-goods ref="homegoods"></home-goods> - - </view> - <view style="padding-bottom:200rpx"> + <view style="min-height:200rpx"> </view> <common-footer flg="0"></common-footer> @@ -116,40 +69,32 @@ </template> <script> - import homeButtons from './components/home-buttons.vue' - import homeGoods from './components/home-goods.vue' - import animationWords from '@/components/animation-words' + import homePrice from './components/home-price.vue' + import homeBannerImgs from './components/home-banner-imgs.vue' + import homeZones from './components/home-zones.vue' + import homeTopFlow from './components/home-top-flow.vue' + import homeCategory from './components/home-category.vue' export default { components: { - homeButtons, - homeGoods, - animationWords + homeCategory, + homePrice, + homeBannerImgs, + homeZones, + homeTopFlow }, data() { return { + search_flow: '', CustomBar: uni.getStorageSync('CustomBar'), StatusBar: uni.getStorageSync('StatusBar'), // StatusBar:0, color: '#fff', schools: [], - schoolIndex: -1, + areaIndex: -1, scrollable: false, - tabs: [{ - name: '团购', - id: 'shop' - }, - { - name: '粗去玩', - id: 'travel' - }, - { - name: '挖宝商品', - id: 'good' - }, - ], - tabIndex: 2, + info: [{ colorClass: 'uni-bg-red', url: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/shuijiao.jpg', @@ -193,7 +138,6 @@ tripList: [], tuangouList: [], hide_footer: false, - words: [], //弹幕 noticeList: [], currentNoticeIndex: 0, currentNotice: { @@ -201,16 +145,16 @@ } }; }, - onShareAppMessage() { - // let that = this; - // var url = - // `/pages/home/home?shareId=${this.currentInfo&&this.currentInfo.id||''}&shareName=${this.currentInfo&&this.currentInfo.nickName||''}`; //你的转发页面路径拼接参数 - // return { - // title: "校购GO小狗狗", - // path: url, - // } - }, - onShareTimeline() { + // onShareAppMessage() { + // let that = this; + // var url = + // `/pages/home/home?shareId=${this.currentInfo&&this.currentInfo.id||''}&shareName=${this.currentInfo&&this.currentInfo.nickName||''}`; //你的转发页面路径拼接参数 + // return { + // title: "校购GO小狗狗", + // path: url, + // } + // }, + // onShareTimeline() { // let that = this; // var url = "/pages/home/home" //你的分享页面路径 // return { @@ -224,13 +168,13 @@ onLoad() { // console.log('home created') //这里进行一次初始化即可 - this.$http.request('get', '/api/school/area/list', { + // this.$http.request('get', '/api/school/area/list', { - }).then(res => { - if (res.code == 0) { - this.schools = res.data || [] - } - }) + // }).then(res => { + // if (res.code == 0) { + // this.schools = res.data || [] + // } + // }) //获取banner图 this.$http.request('get', '/api/ua/banner/list', { @@ -239,34 +183,16 @@ this.banners = res.data.records || [] } }) - // uni.setStorageSync('schoolId', this.school[parseInt(e.detail.value)].id); - // uni.setStorageSync('schoolIndex', parseInt(e.detail.value)); - var schoolIndex = uni.getStorageSync('schoolIndex') - if (!schoolIndex && schoolIndex !== 0) { + + var areaIndex = uni.getStorageSync('areaIndex') + if (!areaIndex && areaIndex !== 0) { } else { - this.schoolIndex = schoolIndex + this.areaIndex = areaIndex } - this.changeTab(this.tabIndex) - this.changeTab(0) - this.changeTab(1) - this.$http.request('get', '/api/brand/wish/list', { - params: { - size: 10, - show: true, - status: 'A' - } - }).then(res => { - if (res.code == 0) { - this.words = (res.data && res.data.records || []).map(item => { - return { - ...item, - randomnum: Math.floor(Math.random() * 10) + Math.floor(Math.random() * 30) - } - }) - } - }) + + //公告 this.$http.request('get', '/api/ua/announcement/list', { params: { @@ -311,89 +237,33 @@ }, methods: { - + buttonSearchFlow() { + console.log('buttonSearchFlow') + }, pop(status) { this.hide_footer = !!status }, changeBanner(e) { this.currentBanner = e.detail.current }, - changeTab(e) { - // this.tabIndex - if (e == 2) { - this.$nextTick(() => { - this.$refs.homegoods.updateGoods() - }) - } - if (e == 0) { - //团购 - // tripList:[], - // :[], - //可能没必要重复了先,todo - this.$http.request('get', '/api/buy/customer/group/list', { - params: { - size: 4, - status: 'A' - } - }).then(res => { - if (res.code == 0) { - this.tuangouList = res.data.records || [] - } - }) - } - if (e == 1) { - this.$http.request('get', '/api/trip/customer/list', { - params: { - size: 3, - status: 'J' - } - }).then(res => { - if (res.code == 0) { - this.tripList = res.data.records || [] - } - }) - } - // console.log('changeTab',e) - // updateGoods - // - }, + getNoticeMore() { - if (this.currentNotice.id) { - // uni.navigateTo({ - // url: '/pages/notice/notice?id=' + this.currentNotice.id - // }) - } uni.navigateTo({ url: '/pages/notice/list?id=' + this.currentNotice.id }) }, PickerChangeSchool(e) { if (e.detail.value == '-1') { - this.$message.showToast('未选择校区') + this.$message.showToast('未选择位置') return } console.log(' this.schools', this.schools, parseInt(e.detail.value), e); - // this.setData({ - // index: e.detail.value, - // schoolInfo: this.school[parseInt(e.detail.value)], - // s_id: this.school[parseInt(e.detail.value)].s_id, - // current: 0 - // }); - this.schoolIndex = parseInt(e.detail.value) - uni.setStorageSync('schoolId', this.schools[parseInt(e.detail.value)].id); - uni.setStorageSync('schoolIndex', parseInt(e.detail.value)); - // if (uni.getStorageSync('token')) { - // this.userChangeSchool(this.school[parseInt(e.detail.value)].s_id) - // } - // this.getSchoolInfo(this.school[parseInt(e.detail.value)].s_id); - // this.getSysparment(); //全局加载变量设置为真,信息圈的列表需要重新加载 - // // this.getOrderData(); - // // this.getHistoryList(); - // this.getRank(); - // this.setData({ - // dataList: [] - // }); + + this.areaIndex = parseInt(e.detail.value) + uni.setStorageSync('areaId', this.schools[parseInt(e.detail.value)].id); + uni.setStorageSync('areaIndex', parseInt(e.detail.value)); + }, } diff --git a/pages/user/address/address.vue b/pages/user/address/address.vue new file mode 100644 index 0000000..75053a7 --- /dev/null +++ b/pages/user/address/address.vue @@ -0,0 +1,398 @@ +<template> + <!-- 收获地址列表 --> + <view class="p15 container-address"> + <no-data v-if="!list||list.length==0" style="width: 100%;"></no-data> + + <!-- 循环 --> + <view v-for="(item,index) of list" :key="index" class="location-each"> + <view class="flex"> + <view class="container-info"> + <view class="flex"> + <view class="name">{{item.name || '-'}}</view> + <view class="tel">{{item.tel||'-'}}</view> + </view> + <view class="address"> + {{item.address}} + + </view> + </view> + <!-- <view class="h-line"></view> --> + <view class="edit" @click="()=>{ + this.submitForm = { + ...item + } + openAddressForm() + }"> + <uni-icons type="compose" class="icon" color="#666666"></uni-icons> + </view> + </view> + <view class="v-line"></view> + <view class="flex"> + <view class="flex" @click="changeDefaultAddress(item,index)"> + <!-- <label class="radio flex" > --> + <!-- <radio value="r1" :checked="item.defaulted" disabled + style="transform:scale(0.6)" v-if="item.defaulted" /> + <radio value="r1" + style="transform:scale(0.6)" :checked="item.defaulted" v-if="!item.defaulted" @change="changeDefaultAddress(item,index)"/> + --> + + <!-- </label> --> + <view class="radio m-t-2 m-r-10" :class="[item.defaulted?'select':'']"> + + </view> + <span class="desc">{{item.defaulted?'默认地址:':'当前地址:'}}{{item.schoolAreaStr||''}} + {{item.blockStr||''}} + {{item.room||''}}</span> + <!-- 当前地址/默认地址勾选 --> + </view> + <view class="desc del t-red" @click="deleteAddress(item)"> + 删除 + </view> + <view class="desc del t-green m-l-10" v-if="source==='select'" @click="selectAddress(item)"> + 选择此地址 + </view> + </view> + + </view> + <view style="height: 92rpx;width: 690rpx;"> + + </view> + <view class="button-green button-fixed-bottom" style="width: 690rpx;line-height: 92rpx;height: 92rpx;" @click=" ()=>{ + delete this.submitForm.id + this.submitForm['name'] = '' + this.submitForm['tel'] = '' + this.submitForm['tel'] = '' + this.submitForm['area'] = '' + + openAddressForm() + }">添加收货地址</view> + + <uni-popup ref="popup_form" type="top" :mask-click="false"> + <view class="popup-address-form"> + <view class="close-parent"> + {{submitForm.id?'新增':'编辑'}}收货地址 + <uni-icons class="close" type="closeempty" @click="closeAddressForm"></uni-icons> + </view> + <!--收货人、手机号、校区、详细地址 --> + <view class="submit form"> + <view class="form-item"> + <view class="form-item-label require"> + 收货人 + </view> + <view class="form-item-value"> + <input v-model="submitForm.name" placeholder="请输入收货人" class="form-input"></input> + </view> + </view> + <view class="form-item"> + <view class="form-item-label require"> + 请选择收获地址 + </view> + <view class="form-item-value"> + <input v-model="submitForm.room" placeholder="请选择收获地址" disabled class="form-input"></input> + <!-- todo 点击定位 --> + </view> + </view> + <view class="form-item"> + <view class="form-item-label require"> + 详细地址 + </view> + <view class="form-item-value"> + <input v-model="submitForm.address" placeholder="请输入详细地址" class="form-input"></input> + + </view> + </view> + <view class="form-item"> + <view class="form-item-label"> + 是否默认 + </view> + <view class="form-item-value"> + <radio value="r1" :checked="submitForm.defaulted" + @click="submitForm.defaulted=!submitForm.defaulted" + style="transform:scale(0.6);margin-top: -8rpx;" /> + </view> + </view> + </view> + + <view class="button-green m-t-15" @click="saveOrUpdateAddress">保存</view> + </view> + </uni-popup> + + </view> +</template> + +<script> + export default { + async onPullDownRefresh() { + this.page.current = 0 + await this.getList() + uni.stopPullDownRefresh() + }, + async onLoad(options) { + // this.list = [{}, {}] + this.source = options.source || '' + this.listApi = '/api/address/customer/list' + await this.getList() + + }, + data() { + return { + source: '', + submitForm: { + name: '', + tel: '', + address: '', + schoolArea: '', + block: '', + room: '', + defaulted: false + }, + }; + }, + methods: { + async changeDefaultAddress(item, index) { + if (item.defaulted) { + return + } + this.$nextTick(() => { + // item.defaulted = false + // this.$set(item,'defaulted',false) + this.$message.confirm('确定设置此地址为默认地址吗').then(async res => { + this.$message.showLoading() + var { + code + } = await this.$http.request('post', '/api/address/customer/default/' + + item.id, {}) + this.$message.hideLoading() + if (code == 0) { + for (var dto of this.list) { + dto.defaulted = false + } + this.$message.showToast('设置成功') + item.defaulted = true + this.$store.commit('setDefaultAddress', { + ...item + }) + + } + }, err => { + this.$nextTick(() => { + this.list[index].defaulted = false + this.$forceUpdate() + console.log('err', err, this.list[index]) + }) + + + }) + }) + }, + async selectAddress(item) { + await this.$message.confirm('确定选择此地址作为收获地址吗') + //携带,然后返回 + this.$store.commit('setDefaultAddress', { + ...item + }) + this.backpage() + }, + async deleteAddress(item) { + await this.$message.confirm('确定删除此地址吗') + this.$message.showLoading() + var { + code + } = await this.$http.request('get', '/api/address/customer/delete/' + item.id, {}) + this.$message.hideLoading() + if (code == 0) { + this.$message.showToast('删除成功') + setTimeout(() => { + this.page.current = 1 + this.getList() + }, 500) + } + }, + async openAddressForm() { + if (this.submitForm.id) { + this.$message.showLoading() + var { + data + } = await this.$http.request('get', '/api/address/customer/get/' + this.submitForm.id, {}) + + + if (data) { + this.submitForm = { + ...this.submitForm, + ...data + } + this.blockIndex = -1 + this.schoolIndex = -1 + } + this.$message.hideLoading() + } else { + this.submitForm = { + name: this.currentInfo && this.currentInfo.nickName || '', + tel: this.currentInfo && this.currentInfo.tel || '', + address: '', + schoolArea: '', + block: '', + room: '', + defaulted: false + } + this.schoolIndex = -1 + this.blockIndex = -1 + this.blocks = [] + } + + this.$refs.popup_form.open() + + }, + closeAddressForm() { + this.$refs.popup_form.close() + + }, + async saveOrUpdateAddress() { + if (!this.checkFormValues(this.submitForm, ['tel', 'name', 'address'])) { + this.$message.showToast('字段未填写完整') + return + } + this.$message.showLoading() + const { + code + } = await this.$http.request('post', '/api/address/customer/' + (this.submitForm.id ? 'edit' : + 'new'), { + data: this.submitForm + }) + this.$message.hideLoading() + if (code == 0) { + this.$refs.popup_form.close() + this.$message.showToast(this.submitForm.id ? '修改成功' : '新增成功') + + setTimeout(() => { + this.page.current = 1 + this.getList() + }, 300) + } + }, + + } + } +</script> + +<style lang="scss" scoped> + .container-address { + .popup-address-form { + background: #FFFFFF; + border-radius: 16rpx; + // width: 690rpx; + height: 882rpx; + margin-top: 120rpx; + margin-left: 30rpx; + margin-right: 30rpx; + padding: 24rpx 36rpx; + + .submit { + margin-top: 30rpx; + + .form-input { + height: 36rpx; + line-height: 36rpx; + } + } + } + + .location-each { + background: #FFFFFF; + border-radius: 16rpx; + margin-bottom: 24rpx; + padding: 36rpx; + + .name { + font-size: 32rpx; + color: #000000; + line-height: 44rpx; + text-align: left; + font-style: normal; + } + + .tel { + font-size: 28rpx; + color: #666666; + line-height: 40rpx; + text-align: left; + font-style: normal; + padding-top: 4rpx; + margin-left: 20rpx; + } + + .address { + font-size: 24rpx; + color: #000000; + line-height: 34rpx; + text-align: left; + font-style: normal; + } + + .desc { + font-size: 24rpx; + color: #666666; + line-height: 34rpx; + text-align: left; + font-style: normal; + } + + .del { + // vertical-align: baseline; + margin-left: auto; + margin-right: 6rpx; + margin-top: 4rpx; + } + + .container-info { + max-width: 540rpx; + } + + .h-line { + width: 2rpx; + height: 46rpx; + background-color: #EEEEEE; + margin-left: 28rpx; + margin-right: 24rpx; + } + + .v-line { + width: 638rpx; + height: 2rpx; + // border: 2rpx solid #EEEEEE; + background-color: #EEEEEE; + margin-top: 24rpx; + margin-bottom: 24rpx; + } + + .edit { + // min-width: 80rpx; + width: fit-content; + margin-left: auto; + margin-right: 0rpx; + display: flex; + position: relative; + + .icon { + // margin: 0 auto; + // mar + margin-left: auto; + margin-right: auto; + margin-top: 20rpx; + display: block; + + } + } + + .edit::before { + content: " "; + width: 2rpx; + height: 46rpx; + background-color: #EEEEEE; + position: absolute; + left: -24rpx; + top: 20rpx; + } + } + } +</style> \ No newline at end of file diff --git a/pages/user/bussincess-user.vue b/pages/user/bussincess-user.vue deleted file mode 100644 index e0d8e38..0000000 --- a/pages/user/bussincess-user.vue +++ /dev/null @@ -1,144 +0,0 @@ -<template> - <view class="main-container user-container"> - <!-- <view> - 我的 - </view> --> - <!-- 背景图 --> - <view class="top-bg" :style="{'padding-top':(StatusBar)+'px','line-height':CustomBar+'rpx' }"> - <view class="title" style="position: relative;" @click="changedefaulttype"> - 我<uni-icons type="settings"></uni-icons> - <!-- <view style="position: absolute;left: 32rpx;top: 0;"> - <uni-icons type="settings" @click="changedefaulttype"></uni-icons> - </view> --> - </view> - <view class="icons"> - <image class="icon1" src="../../static/imgs/user/usr-icon1.png" mode="aspectFit"></image> - <image class="icon2" src="../../static/imgs/home/home-shop-top-icon.png" mode="aspectFit"></image> - </view> - <view class="flex m-20 user-info" @click="goto('/pages/user/user-info/user-info',true)" - v-if="currentInfo&&(currentInfo.id)"> - <!-- 头像 --> - <image class="user-icon" v-if="!currentInfo.picture" src="../../static/imgs/home/home-shop-top-icon.png" - mode="aspectFit"></image> - <image class="user-icon" v-if="currentInfo.picture" :src="currentInfo.picture" mode="aspectFit"></image> - - <view class="name"> - {{currentInfo.nickName || '-'}} - </view> - <uni-icons class="right-icon" type="right"></uni-icons> - </view> - <view class="flex m-20 user-info" v-else @click="toLogin"> - <!-- <button open-type="getUserInfo" style="background-color: #fff" @tap="getUserProfile" - class="title-bold h2">{{'请点击授权登录~'}}</button> --> - 前往登录 - </view> - - - </view> - - - - <view style="padding-bottom:200rpx"> - </view> - <bussincess-footer flg="1"></bussincess-footer> - - </view> -</template> - -<script> - import storage from '@/plugins/storage.js' - - export default { - data() { - return { - CustomBar: uni.getStorageSync('CustomBar'), - StatusBar: uni.getStorageSync('StatusBar'), - // StatusBar:0 - }; - }, - created() { - console.log('created bu') - - }, - mounted() { - console.log('mounted bu') - - }, - methods: { - toLogin() { - uni.navigateTo({ - url: '/pages/home/rider-login/rider-login' - }) - }, - async changedefaulttype() { - await this.$message.confirm('前往学生端吗?') - //清空数据 - const res = await this.$store.dispatch('logout'); - - uni.reLaunch({ - url: '/pages/user/user' - }) - }, - async getUserProfile(e) { - const res = await wx.getUserProfile({ - desc: '用于完善会员资料', - }); - console.log(res); - this.login_Wx(res.userInfo.avatarUrl, res.userInfo.nickName) - }, - login_Wx(imgurl, nickname) { - //获取openId - // /wx/jscode2session - const tmp = this; - this.$message.showLoading() - this.openid = this.$storage.getItem('openid'); - this.tel = this.$storage.getItem('tel'); - console.log('info,info,info,info,info,info', this.openid, this.tel); - if (!!this.openid && !!this.tel) { - // this.login = true; - } else { - // this.login = false; - console.log('wx.login'); - wx.login({ - success: async res => { - if (res.code) { - //微信登录成功 已拿到code - // tmp.login = true; - // tmp.jsCode = res.code; //保存获取到的code - console.log('abcd', res.code); - // this.$http.request('post',`/api/login/wechat`,{data:{code:tmp.jsCode}}) - this.$storage.setItem('jsCode', res.code); - const res2 = await wx.getUserInfo(); - console.log('res', res2); - - await this.$store.dispatch('loginwx', { - code: res.code, - imgurl: imgurl, - nickname: nickname - }); - tmp.$message.hideLoading() - - this.$forceUpdate() - } else { - tmp.$message.hideLoading() - tmp.$message.showToast('微信登录失败'); - - } - }, - error: res => { - console.log('wx.login error', res); - tmp.$message.hideLoading() - - tmp.$message.showToast('微信授权失败'); - } - }); - } - }, - - } - } -</script> - -<style lang="scss" scoped> - @import "./user.scss"; -</style> \ No newline at end of file diff --git a/pages/user/supplier-user.vue b/pages/user/supplier-user.vue index ec5c144..f9775a3 100644 --- a/pages/user/supplier-user.vue +++ b/pages/user/supplier-user.vue @@ -10,33 +10,59 @@ mode="scaleToFill" /> <view class="title" style="position: relative;"> - 我的 + 个人中心 </view> - <view class="flex user-info" v-if="currentInfo&&(currentInfo.id)"> + <!-- v-if="currentInfo&&(currentInfo.id)" --> + <view class="flex user-info"> <!-- 头像 --> <image class="user-icon" v-if="!currentInfo.picture" src="../../static/imgs/home/home-shop-top-icon.png" mode="aspectFit"></image> <image class="user-icon" v-if="currentInfo.picture" :src="currentInfo.picture" mode="aspectFit"></image> - <view class="name"> - <view class="t1"> + + + <view class="name" v-if="currentInfo.id"> + <view class="t1" > {{ (!!currentInfo.supplierDTO?(currentInfo.supplierDTO.name):"") || currentInfo.nickName || currentInfo.loginName || '-'}}<span v-if="currentInfo.supplierDTO&¤tInfo.supplierDTO.status!=='P'"> ({{currentInfo.supplierDTO?currentInfo.supplierDTO.statusStr:''}})</span> </view> <view class="t2">{{currentInfo.tel || '暂无电话'}}</view> </view> + <view class="name" v-if="!currentInfo.id" open-type="getUserInfo" @click.stop="getUserProfile" style="font-size: 48rpx;margin-top: 16rpx;"> + {{'点击登陆'}} + </view> <image class="icon-setting" src="../../static/common/icon-setting.png" mode="aspectFit"></image> </view> + <!-- #ifdef PUB_CUSTOMER --> + <view class="customer-info-records"> + <view class="item"> + <view class="num">59</view> + <view class="name">我的收藏</view> + </view> + <view class="line"></view> + <view class="item"> + <view class="num">5</view> + <view class="name">关注店铺</view> + </view> + <view class="line"></view> + <view class="item"> + <view class="num">87</view> + <view class="name">浏览记录</view> + </view> + </view> + <!-- #endif --> + </view> <!-- #ifdef PUB_CUSTOMER --> - <view class="user-utils m-20" v-if="selftype==='customer'"> - <view class="user-util m-t-12 user-customer-order-infos"> + <view class="user-utils m-20 user-customer-order-infos" v-if="selftype==='customer'||!selftype"> + <view class="user-util m-t-12"> <view class="title flex"> - <view>我的订单</view> - <view class="m-r-a m-r-0 more">全部订单<uni-icons type="right"></uni-icons></view> + <view class="flex1">我的订单</view> + <view class="m-r-a m-r-0 more">全部订单<uni-icons class="" type="right" + size="12"></uni-icons></view> </view> <view class="flex order-icons-container"> <view class="order-icons"> @@ -62,7 +88,7 @@ </view> </view> </view> - <view class="user-utils m-20" v-if="selftype==='customer'"> + <view class="user-utils m-20" v-if="selftype==='customer'||!selftype"> <view class="user-util m-t-12 user-customer-service-infos"> <view class="title flex"> <view>我的服务</view> @@ -77,27 +103,31 @@ <image src="../../static/images/customer/service/service-icon-2.png" class="service-icon "> </image> <view>我的收藏</view> - </view> - <view class="service-icons"> - <image src="../../static/images/customer/service/service-icon-3.png" class="service-icon "> - </image> - <view>地址管理</view> - </view> - <view class="service-icons"> - <image src="../../static/images/customer/service/service-icon-4.png" class="service-icon "> - </image> - <view>售后规则</view> - </view> - <view class="service-icons"> - <image src="../../static/images/customer/service/service-icon-5.png" class="t2 service-icon "> - </image> - <view>新手帮助</view> - </view> - <view class="service-icons"> - <image src="../../static/images/customer/service/service-icon-6.png" class="t2 service-icon "> - </image> - <view>运费详查</view> </view> + <view class="service-icons" @click="goto('/pages/user/address/address',true)"> + <image src="../../static/images/customer/service/service-icon-3.png" class="service-icon "> + </image> + <view>地址管理</view> + </view> + <view class="service-icons"> + <image src="../../static/images/customer/service/service-icon-4.png" class="service-icon "> + </image> + <view>售后规则</view> + </view> + </view> + <view class="flex service-icons-container"> + <view class="service-icons"> + <image src="../../static/images/customer/service/service-icon-5.png" class="t2 service-icon "> + </image> + <view>新手帮助</view> + </view> + <view class="service-icons"> + <image src="../../static/images/customer/service/service-icon-6.png" class="t2 service-icon "> + </image> + <view>运费详查</view> + </view> + <view class="service-icons"></view> + <view class="service-icons"></view> </view> </view> </view> @@ -122,7 +152,8 @@ <uni-icons type="right"></uni-icons> </view> </view> - <view class="user-util m-t-12 " @click="callTel" v-if="selftype==='supplier'||selftype==='customer'"> + <view class="user-util m-t-12 " @click="callTel" + v-if="selftype==='supplier'||selftype==='customer' || !selftype"> <view class="title">我的客服</view> <view class="flex"> <image class="icon-clock m-r-6 m-t-2" src="../../static/common/icon-call.png"></image> @@ -142,22 +173,22 @@ </view> - - <!-- #ifdef PUB_CUSTOMER --> - <view style="padding-bottom:200rpx"> - </view> - <common-footer flg="4"></common-footer> - <!-- #endif --> - <!-- #ifndef PUB_CUSTOMER --> + + <!-- #ifdef PUB_CUSTOMER --> + <view style="padding-bottom:200rpx"> + </view> + <common-footer flg="3"></common-footer> + <!-- #endif --> + <!-- #ifndef PUB_CUSTOMER --> <view class="button-login-out topic-gray" @click="clearlogout"> 退出登录 </view> <view style="padding-bottom:200rpx"> - </view> - <common-footer flg="1"></common-footer> + </view> + <common-footer flg="1"></common-footer> <!-- #endif --> - + </view> diff --git a/pages/user/user-customer.scss b/pages/user/user-customer.scss index 4a7ba2a..37f2d03 100644 --- a/pages/user/user-customer.scss +++ b/pages/user/user-customer.scss @@ -1,4 +1,5 @@ .user-customer-order-infos{ + padding-top: 0rpx; .more{ font-weight: 400; font-size: 24rpx; @@ -24,12 +25,12 @@ .order-icon.dsh{ width: 48rpx; height: 46rpx; - margin-top: 3rpx; + margin-top: 6rpx; } .order-icon.sh{ width: 48rpx; height: 46rpx; - margin-top: 3rpx; + margin-top: 6rpx; } } .order-icons:last-child{ @@ -53,11 +54,14 @@ margin: 0 auto; margin-top: 24rpx; text-align: center; - .service-icons{ + font-size: 24rpx; + color: #000000; + line-height: 34rpx; + .service-icon{ height: 52rpx; width: 52rpx; } - .service-icons.t2{ + .service-icon.t2{ height: 52rpx; width: 56rpx; } @@ -66,3 +70,32 @@ } } +.customer-info-records{ + background-color: rgba(255, 255, 255, 0.46); + border-radius: 12rpx; + padding: 22rpx; + display: flex; + margin-top: 54rpx; + .item{ + flex: 1; + text-align: center; + .num{ + font-weight: 600; + font-size: 40rpx; + color: #20613D; + line-height: 56rpx; + } + .name{ + font-weight: 400; + font-size: 24rpx; + font-weight: 600; + color: #000000; + line-height: 34rpx; + } + } + .line{ + width: 2rpx; + height: 64rpx; + background-color: #BBCCC2; + } +} diff --git a/pages/user/user.scss b/pages/user/user.scss index 691eefc..796cbff 100644 --- a/pages/user/user.scss +++ b/pages/user/user.scss @@ -78,7 +78,7 @@ .icon-setting{ position: absolute; right: 0rpx; - top: -30rpx; + top: 50rpx; height: 54rpx; width: 54rpx; } @@ -130,28 +130,6 @@ // display: inline-block; // margin-left: auto; // margin-right: auto; - } - .order-icon.tg{ - margin-top: -8rpx; - width: 64rpx; - height: 64rpx; - } - .order-icon.cqw{ - // margin-top: 16rpx; - margin-top: -2rpx; - width: 54rpx; - height: 58rpx; - } - .order-icon.syst{ - // margin-top: 12rpx; - // margin-top: 0rpx; - width: 58rpx; - height: 56rpx; - } - .order-icon.wbsp{ - margin-top: -10rpx; - width: 70rpx; - height: 66rpx; } } } @@ -220,4 +198,6 @@ } } -} \ No newline at end of file +} + + \ No newline at end of file diff --git a/sub_pages/customer/shopping/shopping.vue b/sub_pages/customer/shopping/shopping.vue index 8183fd0..63c4619 100644 --- a/sub_pages/customer/shopping/shopping.vue +++ b/sub_pages/customer/shopping/shopping.vue @@ -1,6 +1,9 @@ <template> <view> + <view style="min-height:200rpx"> + </view> + <common-footer flg="2"></common-footer> </view> </template> diff --git a/sub_pages/customer/trade/trade.vue b/sub_pages/customer/trade/trade.vue index 8183fd0..523f096 100644 --- a/sub_pages/customer/trade/trade.vue +++ b/sub_pages/customer/trade/trade.vue @@ -1,22 +1,613 @@ <template> - <view> - + <view class="container-canteen" style="min-height: calc(100vh - 20rpx );"> + + <view class="canteen-items" style="min-height: calc(100vh - 360rpx);"> + <view v-if="(!list||list.length==0)&&true" style="width: 100%;min-height: 200rpx;"> + + </view> + <no-data v-if="(!list||list.length==0)&&true" style="width: 100%;margin-top: 220rpx;"></no-data> + <view class="" style="display: flex;flex-wrap: inherit;" v-else> + <view class="type-list"> + <view v-for="(item,index) of types" @click="changeType(item)" + :class="[query.typeId==item.id?'current':'']" :key="index" class="p10 flex type-item"> + {{item.name || '-'}} + </view> + </view> + <view class="canteen-item-container"> + <view v-for="(item,index) of listFilter" :key="item.id" class="p10 canteen-item list" + style="display: flex;flex-wrap: inherit;"> + <view class="m-r-10"> + <image :src="item.cover" mode="scaleToFill" class="cover" @click="previewImg(item.cover)"> + </image> + </view> + <view class="cateen_infos list"> + <view class="title">{{item.name}}</view> + <view class="desc">月售:{{item.monthSale || '0'}}</view> + <view class="flex bottom-buttons flex"> + <view class="price flex"> + <view class="icon">¥</view> + <view class='num'>{{item.price || '-'}}</view> + </view> + <view class="icons flex"> + <uni-icons v-if="item.shopnum&&item.shopnum>=1" type="minus" size="32" + @click="mulnum(item)"></uni-icons> + <view class="curnums" v-if="item.shopnum&&item.shopnum>=1">{{item.shopnum}}</view> + <uni-icons type="plus-filled" size="32" @click="addnum(item)"></uni-icons> + </view> + </view> + </view> + <view style="padding-bottom:100rpx"> + </view> + </view> + + <footer-msg v-if="query.block&&query.schoolArea" + :more="page.total>0&&page.total>page.current*page.size"></footer-msg> + + </view> + </view> + + </view> + + + + <view style="min-height:200rpx"> + </view> + <common-footer flg="1"></common-footer> + </view> </template> <script> + import { + mapState + } from 'vuex' export default { data() { return { - + list: [], + showpop: false, + query: { + name: '', + // status:'', + schoolArea: '', + schoolAreaStr: '', + block: '', + blockStr: '', + typeId: '', + }, + types: [{ + name: '全部', + id: '' + }], + schools: [], + schoolIndex: -1, + blockIndex: -1, + blocks: [], + shoptotal: 0, + cal: 0, } }, + async onLoad() { + // this.list = [{ + // 'shopnum': 0 + // }, { + // 'shopnum': 1 + // }] + + //加载分类 + this.$http.request('get', '/api/canteen/goods/type/list', { + params: { + size: 100 + } + }).then(async res => { + if (res.code == 0) { + this.types = res.data && res.data.records || [] + this.types.unshift({ + name: '全部', + id: '' + }); + + } + }) + + this.listApi = '/api/canteen/customer/goods/list' + + // this.getList() + //加载校区、楼栋 + this.$http.request('get', '/api/school/area/list', { + + }).then(async res => { + if (res.code == 0) { + this.schools = res.data || [] + // this.schools = [{ + // 'name': '全部', + // 'id': '', + // }] + // for (var item of arr) { + // this.schools.push(item) + // } + } + console.log('schools', this.schools) + var schoolIndex = uni.getStorageSync('schoolIndex') + if (!schoolIndex && schoolIndex !== 0) { + // await this.getList() + // this.list.forEach(item => { + // if (!item.shopnum) { + // item.shopnum = 0 + // } + // }) + } else { + this.schoolIndex = schoolIndex + if (this.schoolIndex >= 0) { + this.PickerChangeSchool({ + detail: { + value: this.schoolIndex + } + }) + // await this.getList() + // this.list.forEach(item => { + // if (!item.shopnum) { + // item.shopnum = 0 + // } + // }) + } + } + + }) + + + }, methods: { - + changeType(item) { + this.query.typeId = item.id || '' + }, + async PickerChangeSchool(e) { + if (e.detail.value == '-1') { + this.$message.showToast('未选择校区') + return + } + this.schoolIndex = parseInt(e.detail.value) + this.query.schoolArea = this.schools[this.schoolIndex].id + this.blockIndex = -1 + + this.$message.showLoading() + var { + data + } = await this.$http.request('get', '/api/school/block/list', { + params: { + schoolArea: this.query.schoolArea, + size: 200 + } + }) + + this.blocks = data && data.records || [] + // var arr = data.records || [] + // this.blocks = [{ + // 'name': '全部', + // 'id': '', + // }] + // for (var item of arr) { + // this.blocks.push(item) + // } + this.$message.hideLoading() + if (this.blocks.length >= 1) { + this.query.block = this.blocks[0].id + this.query.blockStr = this.blocks[0].name + this.page.current = 1 + this.blockIndex = 0 + this.list = [] + this.getList() + } else { + this.page.current = 1 + this.list = [] + } + + + + }, + async PickerChangeBlock(e) { + if (e.detail.value == '-1') { + this.$message.showToast('未选择楼栋') + return + } + this.blockIndex = parseInt(e.detail.value) + this.query.block = this.blocks[this.blockIndex].id + this.page.current = 1 + // this.list = [] + this.list = [] + // this.getList() + await this.getList() + this.list.forEach(item => { + if (!item.shopnum) { + item.shopnum = 0 + } + }) + + }, + mulnum(item) { + if (item.shopnum > 0) { + item.shopnum -= 1 + } + this.shoptotal -= 1 + this.cal += 1 + this.$forceUpdate() + + }, + addnum(item) { + // console.log('addnum', item) + if (item.shopnum) { + item.shopnum += 1 + } else { + item.shopnum = 1 + } + this.shoptotal += 1 + this.cal += 1 + this.$forceUpdate() + }, + openShopDetail() { + // this.showpop = false + // this.$forceUpdate() + this.cal += 1 + this.$refs.popup_shop_detail.open() + this.$nextTick(() => { + this.$refs.addressselect && this.$refs.addressselect.init() + }) + }, + closeShopDetail() { + // this.showpop = true + this.$refs.popup_shop_detail.close() + }, + async submitGood() { + var values = [] + for (var item of this.list) { + if (item.shopnum > 0) { + values.push({ + id: item.id, + num: item.shopnum + }) + } + } + //购买 + if (!this.address.id) { + this.$message.showToast('请先选择收获地址') + return + } + + await this.$message.confirm('确定购买吗?') + this.$message.showLoading() + const { + code, + data + } = await this.$http.request('post', '/api/canteen/customer/order', { + data: { + customerAddress: (this.address.schoolAreaStr || '') + (this.address.blockStr || '') + ( + this + .address.room || '') + (this.address.address || ''), + customerTel: this.address.tel, + customer: this.address.name, + goodsList: values, //规格 + } + }) + + this.$message.hideLoading() + if (code == 0) { + + this.list.forEach(item => { + item.shopnum = 0 + }) + this.shoptotal = 0 + this.cal += 1 + this.$refs.popup_shop_detail.close() + this.$forceUpdate() + + //todo,预支付 + //深夜食堂的逻辑不太一样 + if (true) { + const orderInfo = await this.$http.request('get', '/api/canteen/customer/payment/' + data + .orderId, {}) + //支付准备 + var info = orderInfo.data + let that = this + wx.requestPayment({ + ...info, + success(res) { + console.log('pay success', res) + uni.navigateTo({ + url: '/pages/canteen/canteen-success/canteen-success' + }) + }, + fail(err) { + console.error('pay fail', err) + that.$message.showToast('支付失败') + } + }) + } else { + uni.navigateTo({ + url: '/pages/canteen/canteen-success/canteen-success' + }) + } + + + } + } + }, + computed: { + ...mapState({ + address: state => { + return state.defaultaddress || {} + }, + }), + selectprices() { + var arr = 0 + for (var item of this.list) { + if (item.shopnum > 0) { + // arr.push(item) + arr += (item.price >= 0 ? item.price : 0) * item.shopnum + } + } + if (this.cal > 0) { + return arr + + } + return 0 + }, + selectgoods() { + var arr = [] + for (var item of this.list) { + if (item.shopnum > 0) { + arr.push(item) + } + } + if (this.cal > 0) { + return arr + + } + return arr + + }, + listFilter() { + if (this.query.typeId) { + var arr = [] + if (this.list && this.list.length > 0) { + for (var item of this.list) { + if (item.typeId === this.query.typeId || item.type === this.query.typeId) { + arr.push(item) + } + } + } + return arr + } else { + return this.list + } + + }, + // shoptotal() { + // var a = 0 + // for (var item of this.list) { + // a += item.shopnum || 0 + // } + // console.log('shoptotal',a,this.list) + // return a + // } } } </script> -<style> +<style lang="scss" scoped> + .container-canteen { + background-color: #FFFFFF; -</style> + .type-list { + max-width: 178rpx; + width: 178rpx; + min-width: 178rpx; + background: #EEF7F5; + border-radius: 8rpx; + min-height: calc(100vh - 300rpx); + max-height: calc(100vh - 300rpx); + overflow-y: scroll; + margin-left: 30rpx; + + .type-item { + text-align: center; + font-weight: 400; + font-size: 28rpx; + color: #000000; + line-height: 88rpx; + // padding-left: 30rpx; + // padding-right: 30rpx; + } + + .type-item.current { + font-weight: 600; + font-size: 28rpx; + color: #04BA97; + } + } + + .title-before-blue.green { + padding-left: 30rpx; + padding-bottom: 0rpx; + } + + .title-before-blue:before { + color: #04BA97; + font-weight: 600; + min-width: 14rpx; + background: #04BA97; + border-radius: 8rpx; + display: inline-block; + } + + .popup_shop_detail { + background: #FFFFFF; + // padding: 30rpx 0rpx; + padding-bottom: 30rpx; + + .footer-shop { + margin: 0 auto; + margin-top: 46rpx; + } + + .common-address-select { + margin-left: 20rpx; + margin-right: 20rpx; + } + + .close-parent { + margin-right: 20rpx; + } + + .canteen-items { + .canteen-item { + margin-left: 20rpx; + margin-right: 0rpx; + + .cateen_infos { + width: 440rpx; + + } + + .cateen_infos.list { + max-width: 30 0rpx; + min-width: 200rpx; + } + } + } + } + + .canteen-items { + // margin-left: 30rpx; + + .canteen-item { + margin-left: 30rpx; + margin-right: 30rpx; + // width: 690rpx; + // max-width: 690rpx; + height: 206rpx; + background: #FFFFFF; + border-radius: 16rpx; + display: flex; + margin-bottom: 24rpx; + + .cover { + width: 202rpx; + height: 202rpx; + } + + .title { + font-weight: 600; + font-size: 32rpx; + color: #000000; + line-height: 44rpx; + } + + .desc { + font-weight: 400; + font-size: 24rpx; + color: #666666; + line-height: 34rpx; + } + + .price { + + font-size: 24rpx; + + .icon { + line-height: 60rpx; + } + + .num { + font-weight: 600; + font-size: 36rpx; + color: #000000; + // line-height: 50rpx; + } + } + + .cateen_infos { + width: 400rpx; + position: relative; + } + + .cateen_infos.list { + max-width: 300rpx; + min-width: 200rpx; + + } + + .bottom-buttons { + // width: 400rpx; + position: absolute; + bottom: 0rpx; + + left: 0; + right: 0; + + .icons { + margin-left: auto; + margin-right: 0; + + .curnums { + line-height: 60rpx; + } + } + } + } + + .canteen-item-container { + width: 100%; + min-height: 300rpx; + max-height: calc(100vh - 300rpx); + overflow-y: scroll; + } + + .canteen-item.list { + margin-right: 0rpx; + flex: 1; + margin-bottom: 0rpx; + + .cover { + width: 158rpx; + height: 158rpx; + } + } + } + + .canteen-footer-shop { + position: absolute; + position: fixed; + left: 30rpx; + bottom: 30rpx; + } + + .area-select { + .area { + + margin-right: 0rpx; + + .t { + font-weight: 400; + font-size: 32rpx; + color: #000000; + line-height: 44rpx; + } + + .i {} + } + + .area-1 { + margin-left: auto; + } + + .area-2 { + margin-left: 84rpx; + } + } + + .canteen-banner { + width: 750rpx; + min-height: 360rpx; + } + } +</style> \ No newline at end of file -- Gitblit v1.9.3