diff --git a/App.vue b/App.vue index 8f0cb7e..ae008cb 100644 --- a/App.vue +++ b/App.vue @@ -1,12 +1,10 @@ - diff --git a/packages/packageCarecenter/pages/careCenter/serviceDetail.vue b/packages/packageCarecenter/pages/careCenter/serviceDetail.vue index 860e14d..34a4ccd 100644 --- a/packages/packageCarecenter/pages/careCenter/serviceDetail.vue +++ b/packages/packageCarecenter/pages/careCenter/serviceDetail.vue @@ -4,7 +4,7 @@ - + @@ -26,7 +26,8 @@ - + @@ -54,7 +55,7 @@ {{detail.address}} - + @@ -82,8 +83,110 @@ label-color="#fff"> + + + + + + + + + 孕育帮探店 + + + + + + + + + {{item.label}} + + + + + + {{item.label}} + + + + + 本店商品 + + 更多 + + + + + + + + + + + {{item.name}} + + + + {{label}} + + + + + ¥ + {{item.price}} + + + + + + + + 本店活动 + + 更多 + + + + + + + + + + + 商户简介 + + + + + + + + {{item.name}} + {{item.content}} + + + + + + + + + 预约探店 + @@ -95,10 +198,73 @@ data() { return { showFlag: 1, - detail: {} + barIndex: 0, + barTop: 667, + barFixed: false, + bar: [{ + label: '本店商品', + height: 0, + class: '.service-product' + }, { + label: '本店活动', + height: 0, + class: '.service-activity' + }, { + label: '商户简介', + height: 0, + class: '.service-info' + }, { + label: '图文详情', + height: 0, + class: '.service-imageinfo' + }], + barHeight: 0, + detail: {}, + btnStyle: { + marginRight: '46rpx', + height: '60rpx', + width: '180rpx', + color: '#fff', + background: '#FF578A', + } } }, methods: { + init() { + const query = uni.createSelectorQuery().in(this); + query.select(".service-bar").boundingClientRect(res => { + this.barTop = res.top + }).exec(); + for (let i = 0; i < this.bar.length; i++) { + query.select(this.bar[i].class).boundingClientRect(res => { + this.bar[i].height = res.top + }).exec(); + } + }, + toMap() { + this.$u.throttle(() => { + uni.openLocation({ + latitude: Number(this.detail.latitude), + longitude: Number(this.detail.longitude), + name: this.detail.name + }) + }) + }, + toProduct(id) { + this.$u.throttle(() => { + uni.navigateTo({ + url: `/packages/packageCarecenter/pages/careCenter/productDetail?id=${id}` + }) + }) + }, + barClick(item, index) { + this.barIndex = index + + uni.pageScrollTo({ + scrollTop: item.height + }) + }, + featuredLabelSplit(res) { if (res) { return res.split(",") @@ -114,7 +280,6 @@ id }, utilSuccess: (res) => { - console.log(res); this.detail = res } }) @@ -125,6 +290,20 @@ }, onLoad(option) { this.getServiceDetail(option.id) + }, + mounted() { + this.$nextTick(() => { + this.init() + }) + }, + onPageScroll(e) { + this.$u.throttle(() => { + if (e.scrollTop > this.barTop) { + this.barFixed = true + } else { + this.barFixed = false + } + }, 100) } } @@ -158,7 +337,7 @@ color: #fff; height: 47rpx; background: #252526; - border-radius: 16px; + border-radius: 16rpx; opacity: 0.3; display: flex; align-items: center; @@ -186,7 +365,7 @@ color: #fff; height: 47rpx; background: #252526; - border-radius: 16px; + border-radius: 16rpx; opacity: 0.3; display: flex; align-items: center; @@ -211,10 +390,11 @@ } .service-baseinfo { - height: 917rpx; width: 100%; background: linear-gradient(90deg, #555455 0%, #1F1D1D 100%); + padding-bottom: 38rpx; + &-top { display: flex; @@ -266,8 +446,8 @@ &__item { color: #fff; counter-reset: #fff; - border-radius: 12px; - border: 2px solid #FF578A; + border-radius: 12rpx; + border: 2rpx solid #FF578A; padding: 10rpx 20rpx; margin-left: 10rpx; @@ -325,6 +505,243 @@ &__icon {} } + + &-store { + + position: relative; + margin-top: 30rpx; + padding: 0 33rpx; + + &-tag { + display: flex; + align-items: center; + background: linear-gradient(90deg, #FFFFFF 0%, #FFF0F0 100%); + border-bottom-left-radius: 20rpx; + border-bottom-right-radius: 20rpx; + + padding: 9rpx 18rpx; + position: absolute; + top: 0; + left: 76rpx; + + &>image { + width: 25rpx; + height: 25rpx; + } + + &-text { + font-size: 24rpx; + font-weight: 400; + color: #FF578A; + + padding-left: 11rpx; + } + } + } + } + } + + .service-bar { + display: flex; + align-items: center; + justify-content: space-evenly; + border-top-left-radius: 20rpx; + border-top-right-radius: 20rpx; + background: #fff; + + margin-top: -20rpx; + + &-fixed { + z-index: 4; + position: fixed; + top: 0; + left: 0; + right: 0; + } + + &-item { + font-size: 30rpx; + font-weight: 400; + color: #999999; + + padding: 40rpx 0 23rpx 0; + position: relative; + + &-active { + + color: #333333; + } + + &-icon { + + transform: translateX(-50%); + position: absolute; + top: 72rpx; + left: 50%; + } + } + } + + .service-product { + + &-title { + display: flex; + justify-content: space-between; + align-items: center; + + padding-top: 37rpx; + + &>text { + color: #333333; + font-size: 34rpx; + + padding-left: 32rpx; + } + + &-more { + + font-size: 24rpx; + color: #333333; + + padding-right: 47rpx; + } + } + + &-detail { + flex-shrink: 0; + flex-basis: 330rpx; + display: flex; + flex-wrap: wrap; + justify-content: space-between; + + margin-top: 36rpx; + padding: 0 32rpx; + + &-item { + border-radius: 20rpx; + background: #FFFFFF; + + padding-bottom: 21rpx; + + &-name { + color: #333333; + font-weight: 400; + font-size: 24rpx; + + padding: 0 24rpx; + padding-top: 21rpx; + + } + + &-label { + display: flex; + flex-wrap: wrap; + + padding: 0 24rpx; + margin-top: 13rpx; + + &-item { + background: rgba(255, 87, 138, 0.1); + border-radius: 12rpx; + font-size: 24rpx; + font-weight: 400; + color: #FF578A; + + margin-right: 10rpx; + padding: 6rpx 15rpx; + } + } + + &-price { + font-weight: 400; + color: #FF578A; + font-size: 24rpx; + + padding: 0 24rpx; + padding-top: 13rpx; + } + } } } + + .service-activity { + background: #fff; + + margin-top: 34rpx; + padding-bottom: 83rpx; + + &-title { + @extend .service-product-title; + padding-bottom: 33rpx; + + &-more { + @extend .service-product-title-more; + } + } + } + + .service-info { + background-color: #fff; + + margin-top: 30rpx; + + &-title { + @extend .service-product-title; + padding-bottom: 29rpx; + + &-more { + @extend .service-product-title-more; + } + } + + &-content { + + padding: 0 34rpx 20rpx 40rpx; + + &-item { + display: flex; + + margin-bottom: 20rpx; + + &-name { + font-size: 24rpx; + font-weight: 400; + color: #999999; + flex-basis: 120rpx; + } + + &-content { + flex: 1; + font-weight: 400; + color: #333333; + font-size: 24rpx; + + margin-left: 18rpx; + } + } + } + } + + .service-imageinfo { + + padding-bottom: 100rpx; + } + + .bottom-btn { + height: 100rpx; + background: #fff; + border-top: 1rpx solid rgba(180, 180, 180, 0.4); + display: flex; + align-items: center; + justify-content: flex-end; + + position: fixed; + bottom: 0; + left: 0; + right: 0; + } + + ::v-deep .u-image__image { + display: block !important; + } diff --git a/packages/packageCarecenter/static/huangguan.png b/packages/packageCarecenter/static/huangguan.png new file mode 100644 index 0000000..9532a88 Binary files /dev/null and b/packages/packageCarecenter/static/huangguan.png differ diff --git a/static/iconfont/iconfont.css b/static/iconfont/iconfont.css new file mode 100644 index 0000000..f2dbf6d --- /dev/null +++ b/static/iconfont/iconfont.css @@ -0,0 +1,71 @@ +@font-face { + font-family: "iconfont"; + /* Project id 3656970 */ + src: url('/static/iconfont/iconfont.woff2?t=1663572150648') format('woff2'), + url('/static/iconfont/iconfont.woff?t=1663572150648') format('woff'), + url('/static/iconfont/iconfont.ttf?t=1663572150648') format('truetype'); +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16rpx; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-lingdang:before { + content: "\e600"; +} + +.icon-weiyuyongpin:before { + content: "\e68b"; +} + +.icon-yinshuiji:before { + content: "\e69e"; +} + +.icon-dianshi:before { + content: "\e707"; +} + +.icon-bingxiang:before { + content: "\ec4f"; +} + +.icon-xiyiji:before { + content: "\ec78"; +} + +.icon-wifi:before { + content: "\e6a4"; +} + +.icon-jiashiqi:before { + content: "\e61e"; +} + +.icon-kongtiao:before { + content: "\e680"; +} + +.icon-chuifengji:before { + content: "\e6b6"; +} + +.icon-shuangluoxuanxinfengxitong:before { + content: "\e612"; +} + +.icon-shaoshuihu:before { + content: "\e7f2"; +} + +.icon-blood:before { + content: "\e918"; +} + +.icon-liangyijia:before { + content: "\e7a3"; +} diff --git a/static/iconfont/iconfont.ttf b/static/iconfont/iconfont.ttf new file mode 100644 index 0000000..fb77e33 Binary files /dev/null and b/static/iconfont/iconfont.ttf differ diff --git a/static/iconfont/iconfont.woff b/static/iconfont/iconfont.woff new file mode 100644 index 0000000..9f4729c Binary files /dev/null and b/static/iconfont/iconfont.woff differ diff --git a/static/iconfont/iconfont.woff2 b/static/iconfont/iconfont.woff2 new file mode 100644 index 0000000..37aa11d Binary files /dev/null and b/static/iconfont/iconfont.woff2 differ