common/global.scss | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
common/self.scss | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pages.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
static/icon-gz-0.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
static/icon-gz-1.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
sub_pages/customer/shop/shop.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
sub_pages/customer/trade/detail.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
sub_pages/customer/trade/list.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
sub_pages/customer/trade/trade.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
sub_pages/supplier/flower-manage/flower-add.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
common/global.scss
@@ -73,6 +73,69 @@ height: 100%; z-index: -1; } .component-popup_input_all{ margin: 0 auto; margin-top: 160rpx; height: calc(100vh - 300rpx); background-color: #fff; border-radius: 40rpx 40rpx 0rpx 0rpx; padding: 26rpx; position: relative; .button-space{ // border: 2rpx solid #EEEEEE; min-height: 124rpx; } .value-items{ .value-item{ min-width: 152rpx; width: fit-content; text-align: center; height: 58rpx; background: #F1F5F2; border-radius: 36rpx; margin-bottom: 18rpx; font-weight: 400; font-size: 28rpx; line-height: 58rpx; padding: 8rpx 30rpx; color: #33a868; margin-left: 13rpx; margin-right: 13rpx; border: 2rpx solid #F1F5F2; } .value-item.cur{ background: #E1F0E7; border-radius: 36rpx; border: 2rpx solid #20613D; color: #20613D; } } .button-green{ border-top: 2rpx solid #EEEEEE; position: absolute; bottom: 26rpx; left: 26rpx; right: 26rpx; height: 78rpx; background: #20613D; border-radius: 40rpx; font-weight: 600; font-size: 32rpx; color: #FFFFFF; line-height: 78rpx; } .button-green.button-white{ background: #F1F5F2; font-weight: 400; font-size: 32rpx; color: #20613D; line-height: 78rpx; } } .component-popup_input{ margin: 0 auto; margin-top: 160rpx; @@ -123,3 +186,95 @@ line-height: 34rpx; } } .component-shop-item { margin-top: 20rpx; background: #FFFFFF; border-radius: 8rpx; padding: 10rpx; .info-container { position: relative; .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; } .bottom-buttons { // width: 400rpx; position: absolute; bottom: 0rpx; left: 0; right: 0; .icons { margin-left: auto; margin-right: 0rpx; margin-top: -10rpx; .curnums { line-height: 60rpx; margin-left: 12rpx; margin-right: 12rpx; } } } .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; } } } common/self.scss
@@ -893,10 +893,41 @@ } .store-name { font-weight: 600; font-size: 28rpx; color: #000000; line-height: 40rpx; } .store-address{ font-weight: 400; font-size: 24rpx; color: #666666; line-height: 34rpx; } .store-to{ width: 172rpx; height: 52rpx; background: #E1F0E7; border-radius: 4rpx; font-weight: 400; font-size: 24rpx; color: #5B8C71; line-height: 52rpx; text-align: center; } .store-sc{ width: 176rpx; height: 64rpx; background: #39AF6E; border-radius: 32rpx; font-weight: 400; font-size: 32rpx; color: #000000; line-height: 96rpx; color: #FFFFFF; line-height: 64rpx; .icon{ width: 36rpx; height: 36rpx; } } } .text-left{ pages.json
@@ -186,6 +186,13 @@ "enablePullDownRefresh": false } }, { "path" : "shop/shop", "style" : { "navigationBarTitleText" : "商家主页" } } ] static/icon-gz-0.png
static/icon-gz-1.png
sub_pages/customer/shop/shop.vue
对比新文件 @@ -0,0 +1,287 @@ <template> <view class="brand-detail"> <view class="brand-top-info"> <view class="search-container m-t-12 flex"> <view class="flex1 input"> <u-input placeholder="请输入花名" v-model="search_flow"> <template slot="suffix"> <uni-icons color="#20613D" type="search" size="24" @tap="buttonSearchFlow"></uni-icons> </template> </u-input> </view> </view> <view class="info-brand m-t-12" v-if="shopid"> <view class="flex"> <image class="store-logo"></image> <view> <view class="store-name">花仙子</view> <view class="store-address">云南省-昆明市-官渡区</view> </view> <view class="store-sc m-l-a m-r-0"> <image src="../../../static/icon-gz-1.png" class="icon" v-if="dto.gz"></image> <image src="../../../static/icon-gz-0.png" class="icon" v-if="!dto.gz"></image> 关注 </view> </view> </view> <view class="tj-info m-t-12"> <view class="form-item"> <view class="value">0</view> <view class="label">发布</view> </view> <view class="form-item"> <view class="value">0</view> <view class="label">获赞</view> </view> <view class="form-item"> <view class="value">0</view> <view class="label">粉丝</view> </view> <view class="form-item"> <view class="value">0</view> <view class="label">关注</view> </view> </view> <top-tabs :tabs="tabs" :flg="flg" @change="changeTab"> </top-tabs> </view> <view class="brand-info"> <view v-if="flg=='0'" class="brand-info-0"> <view class="component-filter-container" style="padding-top: 12rpx;"> <view class="flex1"> 排序<image src="../../../static/common/icon-arrow-down.png" class="icon-arrow-down"></image> </view> <view class="flex1"> 等级<image src="../../../static/common/icon-arrow-down.png" class="icon-arrow-down"></image> </view> <view class="flex1"> 参数<image src="../../../static/common/icon-arrow-down.png" class="icon-arrow-down"></image> </view> </view> <view class="top-title"> 报价已包含打包费、材料费、交易佣金 </view> <view class="component-shop-item flex" v-for="(item,index) of list" :key="index" @click="toDetail(item)"> <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="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 class="bottom-buttons flex"> <view class="icons flex"> <uni-icons v-if="item.shopnum&&item.shopnum>=1" type="minus" size="32" @click.stop="mulnum(item)"></uni-icons> <view class="curnums" v-if="item.shopnum&&item.shopnum>=1">{{item.shopnum}}</view> <uni-icons v-if="!item.shopnum||item.shopnum<=99" type="plus-filled" size="32" @click.stop="addnum(item)"></uni-icons> </view> </view> </view> </view> </view> <view v-if="flg=='1'" class="brand-info-1"> <trade :hidefooter="true"></trade> </view> <view v-if="flg=='3'" class="brand-info-3"> <view class="title"> 基础信息 </view> <view class="form-input"> <view class="label">经营模式</view> <view class="value">供应商</view> </view> <view class="form-input"> <view class="label">身份认证</view> <view class="value">个人身份认证</view> </view> </view> </view> </view> </template> <script> import trade from '@/sub_pages/customer/trade/trade.vue' export default { components: { trade, }, data() { return { shopid: 'test', search_flow: '', flg: '0', tabs: [{ name: '全部商品' }, { name: '分类' }, { name: '评价' }, { name: '商家' }, ], dto: {}, list: [{}, {}] } }, methods: { changeTab(flg) { this.flg = flg //如果没有加载数据,需要加载一下 }, buttonSearchFlow() { }, mulnum(item) { if (item.shopnum > 0) { item.shopnum -= 1 } this.shoptotal -= 1 this.$forceUpdate() }, addnum(item) { if (item.shopnum) { item.shopnum += 1 } else { item.shopnum = 1 } this.shoptotal += 1 this.$forceUpdate() }, } } </script> <style lang="scss" scoped> .brand-detail { .brand-info { background: #FFFFFF; border-radius: 40rpx 40rpx 0rpx 0rpx; padding: 40rpx 32rpx; .brand-info-0 { .top-title { height: 54rpx; background: #E4ECE8; border-radius: 4rpx; font-weight: 400; font-size: 24rpx; color: #779787; line-height: 80rpx; } } .brand-info-3 { .title { font-weight: 600; font-size: 32rpx; color: #000000; line-height: 44rpx; margin-bottom: 20rpx; } .form-item { display: flex; border-bottom: 2rpx solid #EEEEEE; .label { font-weight: 400; font-size: 28rpx; color: #000000; line-height: 40rpx; } .value { font-weight: 400; font-size: 28rpx; color: #666666; line-height: 40rpx; margin-left: auto; text-align: right; .check { background: #20613D; border-radius: 4rpx; } } } } } .brand-top-info { background-image: url('https://hmy-flower.oss-cn-shanghai.aliyuncs.com/37/37dc02b58bd44af79e45031af2bb6c0b%E4%BD%8D%E5%9B%BE@2x.png'); .tj-info{ display: flex; .form-item{ flex: 1; text-align: center; .label{ font-weight: 400; font-size: 32rpx; color: #FFFFFF; line-height: 44rpx; } .value{ font-weight: 600; font-size: 48rpx; color: #FFFFFF; line-height: 66rpx; } } } .search-container { display: flex; margin: 12rpx 0rpx 20rpx 0rpx; position: relative; z-index: 1; .input { background-color: #fff !important; border-radius: 8rpx; } } } } </style> sub_pages/customer/trade/detail.vue
@@ -11,6 +11,109 @@ </view> </view> <view class="info-container"> <view class="title"> <view class="level m-r-15">B级</view> <view class=""> {{dto.name || '-'}} </view> </view> <view class="desc m-t-12"> <view class="m-r-15">已售:7</view> <view class="m-r-15">剩余:13</view> <view class=" ">10支/扎</view> </view> <view class="flex m-t-12"> <view class="price m-r-a"> <span class="num">28.01</span> 元/扎 </view> <view class="m-l-a m-r-15"> <image src="../../../static/common/icon-kf.png" class="icon-kf m-l-15 img100"></image> </view> <view class="m-r-0 gwc"> + 购物车 </view> </view> </view> <view class="line"> </view> <view class="info-detail"> <view class="title-before-blue" style="padding-top: 0rpx;padding-bottom: 0rpx;">详情</view> <view class="flex m-t-8"> <view class="label">枝长:</view> <view class="value">70-75cm</view> </view> <view class="flex m-t-8"> <view class="label">枝粗:</view> <view class="value">中等粗细</view> </view> <view class="flex m-t-8"> <view class="label">均匀度:</view> <view class="value">1-2支不均匀</view> </view> </view> <view class="line"> </view> <view class="info-brand m-t-12" @click.stop="openbrand"> <view class="title-before-blue" style="padding-top: 0rpx;padding-bottom: 0rpx;">店铺</view> <view class="flex"> <image class="store-logo"></image> <view> <view class="store-name">花仙子</view> <view class="store-address">云南省-昆明市-官渡区</view> </view> <view class="store-to m-l-a m-r-0">进入店铺</view> </view> </view> <view class="m-t-20 shop-recommend-container"> <view class="shop-recommend-title">店铺推荐</view> <view class="flex"> <view v-for="i in 3" :key="i" class="shop-recommend"> <image src="" class="shop-recommend-image"></image> <view class="shop-recommend-title m-t-8"> <view class="level m-r-15">B级</view> <view class=""> {{dto.name || '-'}} </view> </view> <view class="shop-recommend-price m-t-8"> ¥23.01/扎 </view> </view> </view> </view> <view class="line"> </view> <view class="comment-container m-t-12"> <view class="title-before-blue" style="padding-top: 0rpx;padding-bottom: 0rpx;"> <view>评价</view> <view class="desc"> 7条评论 <uni-icons type="right" size="18" color="#B3B3B3"></uni-icons> </view> </view> <view v-for="i in 3" :key="i" class="m-t-20 flex user-item"> <image class="user-icon m-r-10"></image> <view> <view class="name">用户名3370</view> <view class="comment">非常棒,会回购</view> </view> <view class="stars"> </view> <view class="date"> 04-07 08:00 </view> </view> </view> </view> </template> @@ -18,24 +121,185 @@ export default { data() { return { dto: { } } }, methods: { openbrand() { uni.navigateTo({ url: '/sub_pages/customer/shop/shop?id=' + (this.dto.id || '') }) } } } </script> <style lang="scss" scoped> .trade-detail{ background-color: #FFFFFF; .info-container { padding: 46rpx 30rpx; border-radius: 40rpx 40rpx 0rpx 0rpx; .title { font-weight: 600; font-size: 36rpx; color: #000000; line-height: 50rpx; .level { color: #20613D; } } .desc { font-weight: 400; font-size: 28rpx; color: #666666; line-height: 40rpx; } .price { font-weight: 600; font-size: 28rpx; color: #CF0000; line-height: 40rpx; .num { font-size: 48rpx; line-height: 66rpx; } } .icon-kf { width: 44rpx; height: 44rpx; } .gwc { width: 168rpx; height: 48rpx; border-radius: 30rpx; border: 2rpx solid #20613D; font-size: 24rpx; color: #20613D; line-height: 48rpx; text-align: center; } } .line { min-height: 20rpx; background: #F7F7F7; } .info-detail { padding: 18rpx 30rpx; .label { font-weight: 400; font-size: 28rpx; color: #666666; line-height: 40rpx; min-width: 160rpx; margin-right: 20rpx; } .value { font-weight: 400; font-size: 28rpx; color: #666666; line-height: 40rpx; } } .shop-recommend-title { font-weight: 400; font-size: 24rpx; color: #666666; line-height: 34rpx; } .shop-recommend-container { padding: 24rpx 30rpx; .shop-recommend { .shop-recommend-image { width: 214rpx; height: 214rpx; background-size: 100% 100%; border-radius: 8rpx; } .shop-recommend-title { font-weight: 600; font-size: 28rpx; color: #000000; line-height: 40rpx; .level { color: #20613D; ; } } } } .comment-container { padding: 18rpx 30rpx; .desc { font-weight: 400; font-size: 24rpx; color: #666666; line-height: 34rpx; } .user-item { .user-icon { width: 72rpx; height: 72rpx; background-size: 100% 100%; border-radius: 50%; } .name { font-weight: 600; font-size: 24rpx; color: #000000; line-height: 34rpx; } .comment { font-weight: 400; font-size: 24rpx; color: #666666; line-height: 34rpx; } .date { font-weight: 400; font-size: 24rpx; color: #666666; line-height: 72rpx; } } } .top-img-container{ position: relative; .top-img{ width: 750rpx; height: 764rpx; } .icon-container{ position: absolute; top: 20rpx; @@ -49,12 +313,14 @@ margin: 0 auto; margin-top: 12rpx; } .icon-shop{ width: 54rpx; height: 54rpx; margin: 0 auto; margin-top: 12rpx; } .num{ font-weight: 400; font-size: 20rpx; @@ -65,9 +331,11 @@ right: 16rpx; } } .icon-container:last-child{ left: 120rpx; } .icon-container:first-child{ left: 20rpx; } sub_pages/customer/trade/list.vue
@@ -51,7 +51,7 @@ </view> </view> </view> <view class="item flex" v-for="(item,index) of list" :key="index" <view class="component-shop-item flex" v-for="(item,index) of list" :key="index" @click="toDetail(item)"> <view class="img"> <image class="img img100" @@ -108,6 +108,9 @@ <!-- 判断是否到底了,自动吧 --> <footer-msg :more="page.total>0&&page.total>page.current*page.size"></footer-msg> </view> </template> @@ -229,97 +232,6 @@ } } .item { margin-top: 20rpx; background: #FFFFFF; border-radius: 8rpx; padding: 10rpx; .info-container { position: relative; .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; } .bottom-buttons { // width: 400rpx; position: absolute; bottom: 0rpx; left: 0; right: 0; .icons { margin-left: auto; margin-right: 0rpx; margin-top: -10rpx; .curnums { line-height: 60rpx; margin-left: 12rpx; margin-right: 12rpx; } } } .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; } } } .icon-shop { position: absolute; sub_pages/customer/trade/trade.vue
@@ -1,6 +1,6 @@ <template> <view class="container-trade" style="min-height: calc(100vh - 20rpx );"> <view class="search-container m-t-12 flex" v-if="!(!list||list.length==0)&&true"> <view class="search-container m-t-12 flex" v-if="!(!list||list.length==0)&&true&&!hidefooter"> <view class="flex1 input"> <u-input placeholder="请输入分类名称" v-model="query.name"> <template slot="suffix"> @@ -23,8 +23,8 @@ </view> <view class="canteen-item-container"> <view class="component-filter-container" style="padding-top: 12rpx;"> <view class="flex1"> 销量 <view class="flex1" @click="openParamPop"> 筛选 </view> <view class="flex1"> 颜色<image src="../../../static/common/icon-arrow-down.png" class="icon-arrow-down"></image> @@ -69,10 +69,30 @@ <view style="min-height:200rpx"> <view style="min-height:200rpx" v-if="!hidefooter"> </view> <common-footer flg="1"></common-footer> <common-footer flg="1" v-if="!hidefooter">></common-footer> <uni-popup ref="popup_param" type="bottom"> <view class="component-popup_input_all" v-if="currentCategory&¤tCategory.params"> <view class="text-center m-b-40" style="font-size: 48rpx;font-weight: 600;">商品参数设置</view> <!-- 输入框--> <view v-for="(item,i) in currentCategory.params" :key="i" class="m-t-20"> <view class="title topic-font" style="font-size: 40rpx;font-weight: 600;">{{item.name}}</view> <view class="m-t-12 flex value-items"> <view class="value-item" @click="updateValue(item,each)" :class="[item.value===each?'cur':'']" v-for="(each, j) in item.values" :key="j"> {{each || '-'}} </view> </view> </view> <view class="button-space"></view> <view> <view class="button-green button-white" @click="closeParamPop">关闭</view> <view class="button-green" @click="updateParamsAndSearch">查询</view> </view> </view> </uni-popup> </view> </template> @@ -81,6 +101,9 @@ mapState } from 'vuex' export default { props: { hidefooter: false, }, data() { return { list: [], @@ -89,6 +112,7 @@ name: '', categoryId: '', }, currentCategory: {} } }, @@ -98,6 +122,7 @@ this.list = data || [] if (this.list.length > 0) { this.query.categoryId = this.list[0].id || '' this.currentCategory = this.list[0] || {} } }).finally(() => { uni.stopPullDownRefresh() @@ -111,10 +136,23 @@ this.list = data || [] if (this.list.length > 0) { this.query.categoryId = this.list[0].id || '' this.currentCategory = this.list[0] || {} } }) }, methods: { async updateParamsAndSearch(){ //todo 设置参数并查询 await this.refreshList() this.$refs.popup_param.close() }, openParamPop() { //todo 同时设置查询参数为空吧 this.$refs.popup_param.open() }, closeParamPop() { this.$refs.popup_param.close() }, buttonSearchFlow() { //根据名称查询 this.$message.showLoading() @@ -127,8 +165,10 @@ this.list = data || [] if (this.list.length > 0) { this.query.categoryId = this.list[0].id || '' this.currentCategory = this.list[0] || {} } else { this.query.categoryId = '' this.currentCategory = {} } }).finally(() => { this.$message.hideLoading() @@ -142,6 +182,7 @@ }, changeType(item) { this.query.categoryId = item.id || '' this.currentCategory = item }, sub_pages/supplier/flower-manage/flower-add.vue
@@ -179,27 +179,24 @@ :columns="columns_levels"></u-picker> <uni-popup ref="popup_param" type="top"> <view class="component-popup_input" v-if="dto.params"> <uni-popup ref="popup_param" type="bottom"> <view class="component-popup_input_all" v-if="dto.params"> <view class="text-center m-b-40" style="font-size: 48rpx;font-weight: 600;">商品参数设置</view> <!-- 输入框--> <view v-for="(item,i) in dto.params" :key="i" class="m-b-20"> <view class="title topic-font" style="font-size: 36rpx;font-weight: 600;">{{item.name}}</view> <view class="m-t-12"> <u-radio-group v-model="item.value" placement="row"> <u-radio :customStyle="{'margin-bottom': '16rpx','margin-right': '24rpx','font-size':'28rpx'}" v-for="(each, j) in item.values" :key="j" :label="each" :name="each"> </u-radio> </u-radio-group> <view v-for="(item,i) in dto.params" :key="i" class="m-t-20"> <view class="title topic-font" style="font-size: 40rpx;font-weight: 600;">{{item.name}}</view> <view class="m-t-12 flex value-items"> <view class="value-item" @click="updateValue(item,each)" :class="[item.value===each?'cur':'']" v-for="(each, j) in item.values" :key="j"> {{each || '-'}} </view> </view> <!-- 提交按钮 --> </view> <view class="button-space"></view> <view class="button-green" @click="closeParamPop">确定</view> </view> </uni-popup> <!-- <dying318picker :picker-list="columns_categorys" ref="picker_category" @confirm="confirmPickerCategory"> </dying318picker> --> </view> </template> @@ -312,6 +309,12 @@ }, methods: { updateValue(item, value) { item.value = value this.$set(item, 'value', value) this.$forceUpdate() console.log('updateValue') }, async updateSearch(search) { this.columns_categorys_search = search || '' this.columns_categorys_picker = []