默认提交
Showing
25 changed files
with
455 additions
and
149 deletions
| 1 | <template> | 1 | <template> |
| 2 | <div id="app"> | 2 | <div id="app"> |
| 3 | <router-view/> | 3 | <router-view class="router-view" /> |
| 4 | <van-tabbar route v-model="active" @change="onTabbarChange()"> | ||
| 5 | <van-tabbar-item to="/" icon="wap-home-o">首页</van-tabbar-item> | ||
| 6 | <van-tabbar-item icon="cluster-o">分类</van-tabbar-item> | ||
| 7 | <van-tabbar-item icon="balance-list-o">订单</van-tabbar-item> | ||
| 8 | <van-tabbar-item to="/favorite" icon="manager-o">我的</van-tabbar-item> | ||
| 9 | </van-tabbar> | ||
| 4 | </div> | 10 | </div> |
| 5 | </template> | 11 | </template> |
| 6 | 12 | ||
| 13 | |||
| 14 | <script> | ||
| 15 | import { Toast } from "vant"; | ||
| 16 | |||
| 17 | export default { | ||
| 18 | data() { | ||
| 19 | return { | ||
| 20 | key: "value", | ||
| 21 | active: 0 | ||
| 22 | }; | ||
| 23 | }, | ||
| 24 | methods: { | ||
| 25 | onTabbarChange() { | ||
| 26 | if (this.active != 0 && this.active != 3) { | ||
| 27 | Toast("该场景暂未开放,敬请期待"); | ||
| 28 | } | ||
| 29 | } | ||
| 30 | } | ||
| 31 | }; | ||
| 32 | </script> | ||
| 33 | |||
| 7 | <style lang="scss"> | 34 | <style lang="scss"> |
| 8 | @import "@/styles/_support"; | 35 | @import "@/styles/_support"; |
| 9 | 36 | ||
| 37 | .van-tabbar-item--active { | ||
| 38 | // color: #e10f02 !important; | ||
| 39 | } | ||
| 40 | |||
| 10 | #app { | 41 | #app { |
| 11 | /* font-family: 'Avenir', Helvetica, Arial, sans-serif; | 42 | /* font-family: 'Avenir', Helvetica, Arial, sans-serif; |
| 12 | -webkit-font-smoothing: antialiased; | 43 | -webkit-font-smoothing: antialiased; |
| ... | @@ -21,6 +52,10 @@ | ... | @@ -21,6 +52,10 @@ |
| 21 | color: #333333; | 52 | color: #333333; |
| 22 | } | 53 | } |
| 23 | 54 | ||
| 55 | .router-view { | ||
| 56 | margin-bottom: 80px; | ||
| 57 | } | ||
| 58 | |||
| 24 | body, | 59 | body, |
| 25 | div { | 60 | div { |
| 26 | border: 0; | 61 | border: 0; |
| ... | @@ -83,6 +118,10 @@ input { | ... | @@ -83,6 +118,10 @@ input { |
| 83 | position: relative; | 118 | position: relative; |
| 84 | } | 119 | } |
| 85 | 120 | ||
| 121 | .van-popup { | ||
| 122 | background-color: transparent !important; | ||
| 123 | } | ||
| 124 | |||
| 86 | // index页面 | 125 | // index页面 |
| 87 | .page-index { | 126 | .page-index { |
| 88 | .van-swipe__indicator { | 127 | .van-swipe__indicator { |
| ... | @@ -111,7 +150,6 @@ input { | ... | @@ -111,7 +150,6 @@ input { |
| 111 | .van-tabs__wrap { | 150 | .van-tabs__wrap { |
| 112 | } | 151 | } |
| 113 | .van-tab { | 152 | .van-tab { |
| 114 | |||
| 115 | } | 153 | } |
| 116 | } | 154 | } |
| 117 | </style> | 155 | </style> | ... | ... |
| 1 | module.exports = { | 1 | module.exports = { |
| 2 | testListGet: '/xxx/xxx/list' | ||
| 3 | } | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 2 | bannerList: "/banner/list", // get 轮播图 | ||
| 3 | typeList: "/type/list", // get 类型列表 | ||
| 4 | productList: "/product/list", // get 产品列表 | ||
| 5 | productDetail: "/product/detail", // get 产品详情 | ||
| 6 | storeDetail: "/store/detail", // get 获得店铺详情 | ||
| 7 | productStore: "/product/store", // get 店铺产品列表 | ||
| 8 | collectStore: "/collect/store", // get 收藏的店铺 | ||
| 9 | collectProduct: "/collect/product", // get 收藏的产品 | ||
| 10 | collectProductChange: "/collect/product/change", // POST 加入我的收藏--产品 | ||
| 11 | collectStoreChange: "/collect/store/change", // POST 加入我的收藏--店铺 | ||
| 12 | } | ... | ... |
| ... | @@ -11,7 +11,7 @@ function Toast(msg) { | ... | @@ -11,7 +11,7 @@ function Toast(msg) { |
| 11 | // axios.defaults.baseURL = "" | 11 | // axios.defaults.baseURL = "" |
| 12 | 12 | ||
| 13 | // 服务器地址 | 13 | // 服务器地址 |
| 14 | let base = "https://ow.go.qudone.com"; | 14 | let base = "https://ow.go.qudone.com/baohui_jewelry_api/h5"; |
| 15 | if (location.href.indexOf("//k.wxpai.cn") > 0) { | 15 | if (location.href.indexOf("//k.wxpai.cn") > 0) { |
| 16 | base = "https://api.k.wxpai.cn/bizproxy" | 16 | base = "https://api.k.wxpai.cn/bizproxy" |
| 17 | } | 17 | } |
| ... | @@ -117,10 +117,17 @@ let formDataHeaders = { | ... | @@ -117,10 +117,17 @@ let formDataHeaders = { |
| 117 | export const httpGet = params => { | 117 | export const httpGet = params => { |
| 118 | let { | 118 | let { |
| 119 | url, | 119 | url, |
| 120 | data | 120 | data, |
| 121 | sid = false, | ||
| 121 | } = params; | 122 | } = params; |
| 123 | let headers = {} | ||
| 124 | if (sid) { | ||
| 125 | headers.sid = ""; | ||
| 126 | } | ||
| 122 | return axios.get(`${base}${url}`, { | 127 | return axios.get(`${base}${url}`, { |
| 123 | params: data | 128 | params: data |
| 129 | }, { | ||
| 130 | headers: headers | ||
| 124 | }).then(res => res.data.content); | 131 | }).then(res => res.data.content); |
| 125 | } | 132 | } |
| 126 | 133 | ||
| ... | @@ -131,9 +138,16 @@ export const httpGet = params => { | ... | @@ -131,9 +138,16 @@ export const httpGet = params => { |
| 131 | export const httpPost = params => { | 138 | export const httpPost = params => { |
| 132 | let { | 139 | let { |
| 133 | url, | 140 | url, |
| 134 | data | 141 | data, |
| 142 | sid = false, | ||
| 135 | } = params; | 143 | } = params; |
| 136 | return axios.post(`${base}${url}`, data).then(res => res.data.content); | 144 | let headers = {} |
| 145 | if (sid) { | ||
| 146 | headers.sid = ""; | ||
| 147 | } | ||
| 148 | return axios.post(`${base}${url}`, data, { | ||
| 149 | headers: headers | ||
| 150 | }).then(res => res.data.content); | ||
| 137 | } | 151 | } |
| 138 | 152 | ||
| 139 | 153 | ||
| ... | @@ -153,4 +167,4 @@ export const formdata = params => { | ... | @@ -153,4 +167,4 @@ export const formdata = params => { |
| 153 | data | 167 | data |
| 154 | } = params; | 168 | } = params; |
| 155 | return axios.post(`${base}${url}`, data, formDataHeaders).then(res => res.data); | 169 | return axios.post(`${base}${url}`, data, formDataHeaders).then(res => res.data); |
| 156 | } | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 170 | } | ... | ... |
src/assets/images/temp/qrcode.png
0 → 100644
5.75 KB
| 1 | @import '@/styles/_support'; | ||
| 2 | |||
| 3 | .comp{ | ||
| 4 | |||
| 5 | } | ||
| 6 | |||
| 7 | .contact-us-comp{ | ||
| 8 | @extend .bb; | ||
| 9 | padding: 64px 54px; | ||
| 10 | width: 588px; | ||
| 11 | height: 772px; | ||
| 12 | border-radius: 8px; | ||
| 13 | background-color: #ffffff; | ||
| 14 | } | ||
| 15 | |||
| 16 | .shop{ | ||
| 17 | &-tit{ | ||
| 18 | display: flex; | ||
| 19 | justify-content: space-between; | ||
| 20 | align-items: center; | ||
| 21 | } | ||
| 22 | &-icon { | ||
| 23 | width: 120px; | ||
| 24 | height: 120px; | ||
| 25 | border-radius: 120px; | ||
| 26 | border: solid 1px #333333; | ||
| 27 | } | ||
| 28 | &-desc{ | ||
| 29 | margin-top: 4px; | ||
| 30 | } | ||
| 31 | |||
| 32 | &-qrcode{ | ||
| 33 | text-align: center; | ||
| 34 | margin-top: 48px; | ||
| 35 | .qr{ | ||
| 36 | width: 240px; | ||
| 37 | } | ||
| 38 | } | ||
| 39 | |||
| 40 | &-tips{ | ||
| 41 | margin-top: 24px; | ||
| 42 | text-align: center; | ||
| 43 | color: #909090; | ||
| 44 | } | ||
| 45 | } |
| 1 | |||
| 2 | <template> | ||
| 3 | <div class="comp contact-us-comp"> | ||
| 4 | <div class="shop"> | ||
| 5 | <div class="shop-tit"> | ||
| 6 | <div class="cTitle">宝汇珠宝有限公司</div> | ||
| 7 | <img class="shop-icon" src="https://kd.cdn.xyiyang.com/pro/zlzm/8dd50cc01c03400fb567fd165ddd5016.jpg" alt=""> | ||
| 8 | </div> | ||
| 9 | <div class="shop-desc"> | ||
| 10 | <div class="t1">电话:15818886669</div> | ||
| 11 | <div class="t1">地址:天河中山大道西</div> | ||
| 12 | <div class="t1">邮箱:88866999@qq.com</div> | ||
| 13 | </div> | ||
| 14 | <div class="shop-qrcode"> | ||
| 15 | <img class="qr" src="@/assets/images/temp/qrcode.png" alt=""> | ||
| 16 | </div> | ||
| 17 | <div class="shop-tips"> | ||
| 18 | <div class="t1">长按识别以上微信二维码<br>添加店铺为好友即可进行询价</div> | ||
| 19 | </div> | ||
| 20 | </div> | ||
| 21 | </div> | ||
| 22 | </template> | ||
| 23 | |||
| 24 | <script src="./contact-us-comp.js"></script> | ||
| 25 | <style lang="scss" scoped> | ||
| 26 | @import "./contact-us-comp.scss"; | ||
| 27 | </style> |
src/components/shop-card/shop-card.js
0 → 100644
src/components/shop-card/shop-card.scss
0 → 100644
File mode changed
src/components/shop-card/shop-card.vue
0 → 100644
| 1 | |||
| 2 | <template> | ||
| 3 | <div class="page"> | ||
| 4 | <div class="app__bgc bgc"></div> | ||
| 5 | <div class="app__bg bg"></div> | ||
| 6 | <div class="app__content main"> | ||
| 7 | <div class="top-space"></div> | ||
| 8 | <div class="content"> | ||
| 9 | </div> | ||
| 10 | </div> | ||
| 11 | </div> | ||
| 12 | </template> | ||
| 13 | |||
| 14 | <script src="./demo.js"></script> | ||
| 15 | <style lang="scss" scoped> | ||
| 16 | @import "./demo.scss"; | ||
| 17 | </style> | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| ... | @@ -16,13 +16,22 @@ import { | ... | @@ -16,13 +16,22 @@ import { |
| 16 | Lazyload, | 16 | Lazyload, |
| 17 | Tab, | 17 | Tab, |
| 18 | Tabs, | 18 | Tabs, |
| 19 | Sticky | 19 | Sticky, |
| 20 | Popup, | ||
| 21 | Tabbar, | ||
| 22 | TabbarItem, | ||
| 23 | Icon, | ||
| 24 | Toast | ||
| 20 | } from 'vant'; | 25 | } from 'vant'; |
| 21 | 26 | ||
| 22 | Vue.use(Swipe).use(SwipeItem); | 27 | Vue.use(Swipe).use(SwipeItem); |
| 23 | Vue.use(Lazyload); | 28 | Vue.use(Lazyload); |
| 24 | Vue.use(Tab).use(Tabs); | 29 | Vue.use(Tab).use(Tabs); |
| 25 | Vue.use(Sticky); | 30 | Vue.use(Sticky); |
| 31 | Vue.use(Popup); | ||
| 32 | Vue.use(Tabbar).use(TabbarItem); | ||
| 33 | Vue.use(Icon); | ||
| 34 | Vue.use(Toast); | ||
| 26 | 35 | ||
| 27 | 36 | ||
| 28 | new Vue({ | 37 | new Vue({ | ... | ... |
| 1 | import api from '../../api/api' | 1 | import api from '@/api/api' |
| 2 | import { | 2 | import { |
| 3 | httpGet, | 3 | httpGet, |
| 4 | httpPost | 4 | httpPost |
| 5 | } from '../../api/fetch-api.js' | 5 | } from '@/api/fetch-api.js' |
| 6 | 6 | ||
| 7 | export default { | 7 | export default { |
| 8 | data() { | 8 | data() { |
| ... | @@ -16,4 +16,4 @@ export default { | ... | @@ -16,4 +16,4 @@ export default { |
| 16 | }, | 16 | }, |
| 17 | mounted() {}, | 17 | mounted() {}, |
| 18 | created() {} | 18 | created() {} |
| 19 | } | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 19 | } | ... | ... |
| ... | @@ -18,14 +18,14 @@ | ... | @@ -18,14 +18,14 @@ |
| 18 | </div> | 18 | </div> |
| 19 | <div class="content"> | 19 | <div class="content"> |
| 20 | <div class="shop-list"> | 20 | <div class="shop-list"> |
| 21 | <div class="shop" v-for="(item,index) in 4" :key="index"> | 21 | <div class="shop" v-for="(item,index) in 1" :key="index"> |
| 22 | <div class="shop-icon"></div> | 22 | <img class="shop-icon" src="https://kd.cdn.xyiyang.com/pro/zlzm/8dd50cc01c03400fb567fd165ddd5016.jpg" alt=""> |
| 23 | <div class="shop-detail"> | 23 | <div class="shop-detail"> |
| 24 | <div class="cTitle shop-detail-title">xxx珠宝首饰有限公司</div> | 24 | <div class="cTitle shop-detail-title">宝汇珠宝有限公司</div> |
| 25 | <div class="shop-detail-desc"> | 25 | <div class="shop-detail-desc"> |
| 26 | <div class="t1">15012341234</div> | 26 | <div class="t1">15818886669</div> |
| 27 | <div class="t1">广州市番禺区xx路宝汇珠宝交易中心888号</div> | 27 | <div class="t1">天河中山大道西</div> |
| 28 | <div class="t1">mail@baohui.com</div> | 28 | <div class="t1">88866999@qq.com</div> |
| 29 | </div> | 29 | </div> |
| 30 | </div> | 30 | </div> |
| 31 | <div class="shop-btn-wrap"> | 31 | <div class="shop-btn-wrap"> | ... | ... |
| 1 | import api from '../../api/api' | 1 | import api from '@/api/api' |
| 2 | import { | 2 | import { |
| 3 | httpGet, | 3 | httpGet, |
| 4 | httpPost | 4 | httpPost |
| 5 | } from '../../api/fetch-api.js' | 5 | } from '@/api/fetch-api.js' |
| 6 | 6 | ||
| 7 | export default { | 7 | export default { |
| 8 | data() { | 8 | data() { |
| 9 | return { | 9 | return { |
| 10 | key: 'value', | 10 | key: 'value', |
| 11 | images: [ | 11 | page: 1, |
| 12 | 'https://img.yzcdn.cn/vant/apple-1.jpg', | 12 | size: 10, |
| 13 | 'https://img.yzcdn.cn/vant/apple-2.jpg' | 13 | total: 0, |
| 14 | ] | 14 | typeCode: "", |
| 15 | bannerList: [], | ||
| 16 | typeList: [], | ||
| 17 | productList: [], | ||
| 15 | } | 18 | } |
| 16 | }, | 19 | }, |
| 17 | components: {}, | 20 | components: {}, |
| 18 | methods: { | 21 | methods: { |
| 19 | toProduct(item) { | 22 | toProduct(item) { |
| 20 | this.$router.push({ | 23 | this.$router.push({ |
| 21 | path: "/product/detail" | 24 | path: "/product/detail", |
| 25 | query: { | ||
| 26 | c: item.productCode | ||
| 27 | } | ||
| 22 | }) | 28 | }) |
| 23 | }, | 29 | }, |
| 24 | toMyFavorite(){ | 30 | toMyFavorite() { |
| 25 | this.$router.push({ | 31 | this.$router.push({ |
| 26 | path:"/favorite" | 32 | path: "/favorite" |
| 27 | }) | 33 | }) |
| 28 | }, | 34 | }, |
| 29 | initData() {} | 35 | // 请求banner列表 |
| 36 | queryBannerList() { | ||
| 37 | httpGet({ | ||
| 38 | url: api.bannerList, | ||
| 39 | data: {} | ||
| 40 | }).then((result) => { | ||
| 41 | this.bannerList = result && result.bannerImages || []; | ||
| 42 | }) | ||
| 43 | }, | ||
| 44 | // 请求type列表 | ||
| 45 | queryTypeList() { | ||
| 46 | httpGet({ | ||
| 47 | url: api.typeList, | ||
| 48 | data: {} | ||
| 49 | }).then((result) => { | ||
| 50 | this.typeList = result; | ||
| 51 | }) | ||
| 52 | }, | ||
| 53 | // 请求产品列表 | ||
| 54 | queryProductList() { | ||
| 55 | httpGet({ | ||
| 56 | url: api.productList, | ||
| 57 | data: { | ||
| 58 | page: this.page, | ||
| 59 | size: this.size, | ||
| 60 | typeCode: this.typeCode | ||
| 61 | } | ||
| 62 | }).then((result) => { | ||
| 63 | this.productList = result.list; | ||
| 64 | this.total = result.total; | ||
| 65 | console.log("this.productList:", this.productList); | ||
| 66 | }) | ||
| 67 | }, | ||
| 68 | initData() { | ||
| 69 | this.queryBannerList(); | ||
| 70 | this.queryTypeList(); | ||
| 71 | this.queryProductList(); | ||
| 72 | } | ||
| 30 | }, | 73 | }, |
| 31 | mounted() {}, | 74 | mounted() {}, |
| 32 | created() {} | 75 | created() { |
| 76 | this.initData(); | ||
| 77 | } | ||
| 33 | } | 78 | } | ... | ... |
| ... | @@ -2,7 +2,9 @@ | ... | @@ -2,7 +2,9 @@ |
| 2 | 2 | ||
| 3 | .page {} | 3 | .page {} |
| 4 | 4 | ||
| 5 | .bgc {} | 5 | .bgc { |
| 6 | background-color: #f7f7f7; | ||
| 7 | } | ||
| 6 | 8 | ||
| 7 | // 轮播banner | 9 | // 轮播banner |
| 8 | .banner { | 10 | .banner { |
| ... | @@ -29,9 +31,9 @@ | ... | @@ -29,9 +31,9 @@ |
| 29 | 31 | ||
| 30 | &-item { | 32 | &-item { |
| 31 | @extend .fcc; | 33 | @extend .fcc; |
| 32 | // @extend .bb; | 34 | @extend .bb; |
| 35 | padding: 0 14px; | ||
| 33 | text-align: center; | 36 | text-align: center; |
| 34 | // padding: 0 12px; | ||
| 35 | margin: 0 22px; | 37 | margin: 0 22px; |
| 36 | color: #ffffff; | 38 | color: #ffffff; |
| 37 | width: 92px; | 39 | width: 92px; |
| ... | @@ -54,7 +56,7 @@ | ... | @@ -54,7 +56,7 @@ |
| 54 | background-color: #cccc99; | 56 | background-color: #cccc99; |
| 55 | } | 57 | } |
| 56 | 58 | ||
| 57 | &-item-5 { | 59 | &-item-my { |
| 58 | background-color: #ffcc99; | 60 | background-color: #ffcc99; |
| 59 | } | 61 | } |
| 60 | } | 62 | } |
| ... | @@ -79,26 +81,30 @@ | ... | @@ -79,26 +81,30 @@ |
| 79 | $itemWid: 330px; | 81 | $itemWid: 330px; |
| 80 | 82 | ||
| 81 | .item { | 83 | .item { |
| 84 | background-color: #ffffff; | ||
| 82 | width: $itemWid; | 85 | width: $itemWid; |
| 83 | // height: 440px; | 86 | border-radius: 8px; |
| 84 | background: #F8F8F8; | ||
| 85 | border-radius: 4px; | ||
| 86 | margin-bottom: 32px; | 87 | margin-bottom: 32px; |
| 87 | padding-bottom: 12px; | 88 | |
| 89 | .image-wrap { | ||
| 90 | width: $itemWid; | ||
| 91 | height: $itemWid; | ||
| 92 | } | ||
| 88 | 93 | ||
| 89 | .image { | 94 | .image { |
| 90 | width: $itemWid; | 95 | width: $itemWid; |
| 91 | height: $itemWid; | 96 | height: $itemWid; |
| 97 | @include border-top-radius(8px); | ||
| 92 | } | 98 | } |
| 93 | 99 | ||
| 94 | .desc { | 100 | .desc { |
| 101 | border-top: solid 1px #f7f7f7; | ||
| 95 | @extend .bb; | 102 | @extend .bb; |
| 96 | width: 325px; | 103 | width: 325px; |
| 97 | padding: 4px 20px; | 104 | padding: 12px 20px; |
| 98 | font-size: 24px; | 105 | font-size: 24px; |
| 99 | // line-height: 32px; | ||
| 100 | color: #333333; | 106 | color: #333333; |
| 101 | // @include ellipsis(3); | 107 | @include ellipsis(1); |
| 102 | } | 108 | } |
| 103 | } | 109 | } |
| 104 | } | 110 | } | ... | ... |
| ... | @@ -8,26 +8,17 @@ | ... | @@ -8,26 +8,17 @@ |
| 8 | <!-- 轮播banner --> | 8 | <!-- 轮播banner --> |
| 9 | <div class="banner"> | 9 | <div class="banner"> |
| 10 | <van-swipe indicator-color="#ffcc00" class="swiper" :autoplay="3000"> | 10 | <van-swipe indicator-color="#ffcc00" class="swiper" :autoplay="3000"> |
| 11 | <van-swipe-item v-for="(image, index) in images" :key="index"> | 11 | <van-swipe-item v-for="(image, index) in bannerList" :key="index"> |
| 12 | <img class="img" v-lazy="image" /> | 12 | <img class="img" v-lazy="image" /> |
| 13 | </van-swipe-item> | 13 | </van-swipe-item> |
| 14 | </van-swipe> | 14 | </van-swipe> |
| 15 | </div> | 15 | </div> |
| 16 | <!-- 类别选择 --> | 16 | <!-- 类别选择 --> |
| 17 | <div class="sel"> | 17 | <div class="sel"> |
| 18 | <div class="sel-item sel-item-1"> | 18 | <div v-for="(item,index) in typeList" :key="item.id" class="sel-item " :class="'sel-item-'+(index+1)"> |
| 19 | 黄金<br>首饰 | 19 | {{ item.typeName }} |
| 20 | </div> | 20 | </div> |
| 21 | <div class="sel-item sel-item-2"> | 21 | <div class="sel-item sel-item-my" @click="toMyFavorite"> |
| 22 | 翡翠<br>玉石 | ||
| 23 | </div> | ||
| 24 | <div class="sel-item sel-item-3"> | ||
| 25 | 钻石<br>宝石 | ||
| 26 | </div> | ||
| 27 | <div class="sel-item sel-item-4"> | ||
| 28 | K金<br>首饰 | ||
| 29 | </div> | ||
| 30 | <div class="sel-item sel-item-5" @click="toMyFavorite"> | ||
| 31 | 我的<br>收藏 | 22 | 我的<br>收藏 |
| 32 | </div> | 23 | </div> |
| 33 | </div> | 24 | </div> |
| ... | @@ -36,9 +27,11 @@ | ... | @@ -36,9 +27,11 @@ |
| 36 | <div class="product"> | 27 | <div class="product"> |
| 37 | <div class="product-title">-- 产品推荐 --</div> | 28 | <div class="product-title">-- 产品推荐 --</div> |
| 38 | <div class="product-list"> | 29 | <div class="product-list"> |
| 39 | <div @click="toProduct(item)" v-for="(item,index) in 6" :key="index" class="item"> | 30 | <div @click="toProduct(item)" v-for="(item,index) in productList" :key="index" class="item"> |
| 40 | <img class="image" src="https://img.yzcdn.cn/vant/apple-1.jpg" alt=""> | 31 | <div class="image-wrap"> |
| 41 | <div class="desc">黄金吊坠</div> | 32 | <img class="image" :src="item.imageUrl" alt=""> |
| 33 | </div> | ||
| 34 | <div class="desc">{{item.productName}}</div> | ||
| 42 | </div> | 35 | </div> |
| 43 | </div> | 36 | </div> |
| 44 | </div> | 37 | </div> | ... | ... |
| 1 | import api from '../../api/api' | 1 | import api from '@/api/api' |
| 2 | import { | 2 | import { |
| 3 | httpGet, | 3 | httpGet, |
| 4 | httpPost | 4 | httpPost |
| 5 | } from '../../api/fetch-api.js' | 5 | } from '@/api/fetch-api.js' |
| 6 | 6 | ||
| 7 | export default { | 7 | export default { |
| 8 | data() { | 8 | data() { |
| 9 | return { | 9 | return { |
| 10 | key: 'value', | 10 | key: 'value', |
| 11 | product: {}, | ||
| 12 | store: {}, | ||
| 13 | params: {}, | ||
| 14 | imageUrls: [], | ||
| 11 | active: 0, | 15 | active: 0, |
| 12 | images: [ | ||
| 13 | 'https://img.yzcdn.cn/vant/apple-1.jpg', | ||
| 14 | 'https://img.yzcdn.cn/vant/apple-2.jpg' | ||
| 15 | ], | ||
| 16 | sticky: true, | 16 | sticky: true, |
| 17 | } | 17 | } |
| 18 | }, | 18 | }, |
| ... | @@ -28,13 +28,40 @@ export default { | ... | @@ -28,13 +28,40 @@ export default { |
| 28 | behavior: "smooth", | 28 | behavior: "smooth", |
| 29 | }); | 29 | }); |
| 30 | }, | 30 | }, |
| 31 | toShopDetail(){ | 31 | // 进入店铺 |
| 32 | this.$router.push({ | 32 | toShopDetail() { |
| 33 | path:"/shop/detail" | 33 | let c = this.store.storeCode || ""; |
| 34 | if (c) { | ||
| 35 | this.$router.push({ | ||
| 36 | path: "/shop/detail", | ||
| 37 | query: { | ||
| 38 | c: c, | ||
| 39 | } | ||
| 40 | }) | ||
| 41 | } | ||
| 42 | |||
| 43 | }, | ||
| 44 | // 请求产品详情 | ||
| 45 | queryProductDetail() { | ||
| 46 | let c = this.$route.query.c; | ||
| 47 | httpGet({ | ||
| 48 | url: api.productDetail, | ||
| 49 | data: { | ||
| 50 | productCode: c, | ||
| 51 | } | ||
| 52 | }).then((result) => { | ||
| 53 | this.product = result.product || {}; | ||
| 54 | this.store = result.store || {}; | ||
| 55 | this.params = result.params || {}; | ||
| 56 | this.imageUrls = result && result.product && result.product.imageUrls || []; | ||
| 34 | }) | 57 | }) |
| 35 | }, | 58 | }, |
| 36 | initData() {} | 59 | initData() { |
| 60 | this.queryProductDetail(); | ||
| 61 | } | ||
| 37 | }, | 62 | }, |
| 38 | mounted() {}, | 63 | mounted() {}, |
| 39 | created() {} | 64 | created() { |
| 65 | this.initData(); | ||
| 66 | } | ||
| 40 | } | 67 | } | ... | ... |
| ... | @@ -18,7 +18,7 @@ | ... | @@ -18,7 +18,7 @@ |
| 18 | <!-- banner --> | 18 | <!-- banner --> |
| 19 | <div class="banner"> | 19 | <div class="banner"> |
| 20 | <van-swipe indicator-color="#ffcc00" class="swiper" :autoplay="3000"> | 20 | <van-swipe indicator-color="#ffcc00" class="swiper" :autoplay="3000"> |
| 21 | <van-swipe-item v-for="(image, index) in images" :key="index"> | 21 | <van-swipe-item v-for="(image, index) in imageUrls" :key="index"> |
| 22 | <img class="img" v-lazy="image" /> | 22 | <img class="img" v-lazy="image" /> |
| 23 | </van-swipe-item> | 23 | </van-swipe-item> |
| 24 | </van-swipe> | 24 | </van-swipe> |
| ... | @@ -27,8 +27,8 @@ | ... | @@ -27,8 +27,8 @@ |
| 27 | <!-- 功能导航 --> | 27 | <!-- 功能导航 --> |
| 28 | <div class="func"> | 28 | <div class="func"> |
| 29 | <div class="desc"> | 29 | <div class="desc"> |
| 30 | <div class="cTitle desc-title ">黄金吊坠 - 黄金饰品</div> | 30 | <div class="cTitle desc-title">{{product.productName}}</div> |
| 31 | <div class="cFontGray desc-desc">商品关键词描述</div> | 31 | <div class="cFontGray desc-desc">{{product.productBrief}}</div> |
| 32 | </div> | 32 | </div> |
| 33 | <div class="fav"> | 33 | <div class="fav"> |
| 34 | <div class="fav-icon"> | 34 | <div class="fav-icon"> |
| ... | @@ -39,52 +39,37 @@ | ... | @@ -39,52 +39,37 @@ |
| 39 | </div> | 39 | </div> |
| 40 | <!-- 店铺信息 --> | 40 | <!-- 店铺信息 --> |
| 41 | <div class="shop"> | 41 | <div class="shop"> |
| 42 | <div class="shop-icon"></div> | 42 | <img class="shop-icon" :src="store.logoImage" alt=""> |
| 43 | <div class="shop-detail"> | 43 | <div class="shop-detail"> |
| 44 | <div class="cTitle shop-detail-title">xxx珠宝首饰有限公司</div> | 44 | <div class="cTitle shop-detail-title">{{store.storeName || "-"}}</div> |
| 45 | <div class="shop-detail-phone">15012341234</div> | 45 | <div class="shop-detail-phone">{{store.storeMobile || "-"}}</div> |
| 46 | </div> | 46 | </div> |
| 47 | <div @click="toShopDetail" class="shop-btn">进入店铺</div> | 47 | <div @click="toShopDetail" class="shop-btn">进入店铺</div> |
| 48 | </div> | 48 | </div> |
| 49 | <!-- 商铺详情 --> | 49 | <!-- 商铺详情 --> |
| 50 | <div class="detail" id="scroll1"> | 50 | <div class="detail" id="scroll1"> |
| 51 | <div class="cTitle detail-title">商品详情</div> | 51 | <div class="cTitle detail-title">商品详情</div> |
| 52 | <div class="cFontGray detail-desc">暂无详情介绍</div> | 52 | <div class="cFontGray detail-desc">{{product.description}}</div> |
| 53 | </div> | 53 | </div> |
| 54 | <!-- 商品参数 --> | 54 | <!-- 商品参数 --> |
| 55 | <div class="parameter" id="scroll2"> | 55 | <div class="parameter" id="scroll2"> |
| 56 | <div class="cTitle parameter-title">商品参数 </div> | 56 | <div class="cTitle parameter-title">商品参数 </div> |
| 57 | <div class="cFontGray parameter-table"> | 57 | <div v-if="params.length>0" class="cFontGray parameter-table"> |
| 58 | <div class="parameter-table-item"> | 58 | <div v-for="item in params" :key="item.id" class="parameter-table-item"> |
| 59 | <div class="label">label1</div> | 59 | <div class="label">{{item.paramName}}</div> |
| 60 | <div class="val">val1</div> | 60 | <div class="val">{{item.value}}</div> |
| 61 | </div> | ||
| 62 | <div class="parameter-table-item"> | ||
| 63 | <div class="label">label2</div> | ||
| 64 | <div class="val">val12</div> | ||
| 65 | </div> | ||
| 66 | <div class="parameter-table-item"> | ||
| 67 | <div class="label">label3</div> | ||
| 68 | <div class="val">val13</div> | ||
| 69 | </div> | 61 | </div> |
| 70 | <div class="parameter-table-item"> | 62 | <!-- <div class="parameter-table-item"> |
| 71 | <div class="label">label1</div> | 63 | <div class="label">label1</div> |
| 72 | <div class="val">val1</div> | 64 | <div class="val">val1</div> |
| 73 | </div> | 65 | </div> --> |
| 74 | <div class="parameter-table-item"> | ||
| 75 | <div class="label">label2</div> | ||
| 76 | <div class="val">val12</div> | ||
| 77 | </div> | ||
| 78 | <div class="parameter-table-item"> | ||
| 79 | <div class="label">label3</div> | ||
| 80 | <div class="val">val13</div> | ||
| 81 | </div> | ||
| 82 | </div> | 66 | </div> |
| 67 | <div v-else class="cFontGray detail-desc">无</div> | ||
| 83 | </div> | 68 | </div> |
| 84 | 69 | ||
| 85 | </div> | 70 | </div> |
| 86 | <!-- 返回顶部 --> | 71 | <!-- 返回顶部 --> |
| 87 | <div class="top-btn" @click="toTop">返回顶部</div> | 72 | <!-- <div class="top-btn" @click="toTop">返回顶部</div> --> |
| 88 | </div> | 73 | </div> |
| 89 | </div> | 74 | </div> |
| 90 | </template> | 75 | </template> | ... | ... |
| 1 | import api from '../../api/api' | 1 | import api from '@/api/api' |
| 2 | import { | 2 | import { |
| 3 | httpGet, | 3 | httpGet, |
| 4 | httpPost | 4 | httpPost |
| 5 | } from '../../api/fetch-api.js' | 5 | } from '@/api/fetch-api.js' |
| 6 | |||
| 7 | import ContactUsComp from '@/components/contact-us-comp/contact-us-comp.vue' | ||
| 6 | 8 | ||
| 7 | export default { | 9 | export default { |
| 8 | data() { | 10 | data() { |
| 9 | return { | 11 | return { |
| 10 | key: 'value' | 12 | key: 'value', |
| 13 | contactUsVisible: true, | ||
| 14 | store: {}, | ||
| 15 | storeCollect: 0, | ||
| 16 | page: 1, | ||
| 17 | size: 10, | ||
| 18 | total: 0, | ||
| 19 | productList: [], | ||
| 20 | } | ||
| 21 | }, | ||
| 22 | components: { | ||
| 23 | ContactUsComp | ||
| 24 | }, | ||
| 25 | methods: { | ||
| 26 | toProduct(item) { | ||
| 27 | this.$router.push({ | ||
| 28 | path: "/product/detail", | ||
| 29 | query: { | ||
| 30 | c: item.productCode | ||
| 11 | } | 31 | } |
| 32 | }) | ||
| 12 | }, | 33 | }, |
| 13 | components: {}, | 34 | onFavoriteHandler() { |
| 14 | methods: { | 35 | // this./ |
| 15 | onFavoriteHandler(){ | 36 | }, |
| 16 | 37 | onContactUsHandler() { | |
| 17 | }, | 38 | this.contactUsVisible = true; |
| 18 | onContactUsHandler(){ | 39 | }, |
| 19 | 40 | // 店铺产品列表 | |
| 20 | }, | 41 | queryProductStore() { |
| 21 | initData() {} | 42 | httpGet({ |
| 43 | url: api.productStore, | ||
| 44 | data: { | ||
| 45 | page: this.page, | ||
| 46 | size: this.size, | ||
| 47 | storeCode: this.$route.query.c | ||
| 48 | } | ||
| 49 | }).then((result) => { | ||
| 50 | this.productList = result.list; | ||
| 51 | this.total = result.total; | ||
| 52 | // console.log("productList:", this.productList); | ||
| 53 | console.log("productList item:", this.productList[0]); | ||
| 54 | }); | ||
| 55 | }, | ||
| 56 | // 店铺详情 | ||
| 57 | queryStoreDetail() { | ||
| 58 | httpGet({ | ||
| 59 | url: api.storeDetail, | ||
| 60 | data: { | ||
| 61 | storeCode: this.$route.query.c | ||
| 62 | } | ||
| 63 | }).then((result) => { | ||
| 64 | this.store = result.store || {}; | ||
| 65 | this.storeCollect = result.storeCollect || 0; | ||
| 66 | console.log("this.store:", this.store); | ||
| 67 | console.log("this.storeCollect:", this.storeCollect); | ||
| 68 | }); | ||
| 22 | }, | 69 | }, |
| 23 | mounted() {}, | 70 | initData() { |
| 24 | created() { | 71 | this.queryStoreDetail(); |
| 72 | this.queryProductStore(); | ||
| 25 | } | 73 | } |
| 74 | }, | ||
| 75 | mounted() {}, | ||
| 76 | created() { | ||
| 77 | this.initData(); | ||
| 78 | } | ||
| 26 | } | 79 | } | ... | ... |
| 1 | @import './../../styles/support'; | 1 | @import '@/styles/_support'; |
| 2 | 2 | ||
| 3 | 3 | ||
| 4 | .page {} | 4 | .page {} |
| 5 | 5 | ||
| 6 | .bgc { | ||
| 7 | background-color: #f7f7f7; | ||
| 8 | } | ||
| 9 | |||
| 10 | |||
| 6 | .top { | 11 | .top { |
| 7 | width: $screenWidth; | 12 | width: $screenWidth; |
| 8 | // height: 300px; | 13 | // height: 300px; |
| ... | @@ -79,26 +84,30 @@ | ... | @@ -79,26 +84,30 @@ |
| 79 | $itemWid: 330px; | 84 | $itemWid: 330px; |
| 80 | 85 | ||
| 81 | .item { | 86 | .item { |
| 87 | background-color: #ffffff; | ||
| 82 | width: $itemWid; | 88 | width: $itemWid; |
| 83 | // height: 440px; | 89 | border-radius: 8px; |
| 84 | background: #F8F8F8; | ||
| 85 | border-radius: 4px; | ||
| 86 | margin-bottom: 32px; | 90 | margin-bottom: 32px; |
| 87 | padding-bottom: 12px; | 91 | |
| 92 | .image-wrap { | ||
| 93 | width: $itemWid; | ||
| 94 | height: $itemWid; | ||
| 95 | } | ||
| 88 | 96 | ||
| 89 | .image { | 97 | .image { |
| 90 | width: $itemWid; | 98 | width: $itemWid; |
| 91 | height: $itemWid; | 99 | height: $itemWid; |
| 100 | @include border-top-radius(8px); | ||
| 92 | } | 101 | } |
| 93 | 102 | ||
| 94 | .desc { | 103 | .desc { |
| 104 | border-top: solid 1px #f7f7f7; | ||
| 95 | @extend .bb; | 105 | @extend .bb; |
| 96 | width: 325px; | 106 | width: 325px; |
| 97 | padding: 4px 20px; | 107 | padding: 12px 20px; |
| 98 | font-size: 24px; | 108 | font-size: 24px; |
| 99 | // line-height: 32px; | ||
| 100 | color: #333333; | 109 | color: #333333; |
| 101 | // @include ellipsis(3); | 110 | @include ellipsis(1); |
| 102 | } | 111 | } |
| 103 | } | 112 | } |
| 104 | } | 113 | } | ... | ... |
| ... | @@ -17,13 +17,13 @@ | ... | @@ -17,13 +17,13 @@ |
| 17 | </div> | 17 | </div> |
| 18 | </div> | 18 | </div> |
| 19 | <div class="shop"> | 19 | <div class="shop"> |
| 20 | <div class="shop-icon"></div> | 20 | <img class="shop-icon" :src="store.logoImage" alt=""> |
| 21 | <div class="shop-detail"> | 21 | <div class="shop-detail"> |
| 22 | <div class="shop-detail-title">xxx珠宝首饰有限公司</div> | 22 | <div class="shop-detail-title">{{store.storeName}}</div> |
| 23 | <div class="shop-detail-desc"> | 23 | <div class="shop-detail-desc"> |
| 24 | <div class="t1">15012341234</div> | 24 | <div class="t1">{{store.storeMobile}}</div> |
| 25 | <div class="t1">广州市番禺区xx路宝汇珠宝交易中心888号</div> | 25 | <div class="t1">{{store.storeAddress}}</div> |
| 26 | <div class="t1">mail@baohui.com</div> | 26 | <div class="t1">{{store.email}}</div> |
| 27 | </div> | 27 | </div> |
| 28 | </div> | 28 | </div> |
| 29 | <div class="shop-btn-wrap"> | 29 | <div class="shop-btn-wrap"> |
| ... | @@ -37,26 +37,17 @@ | ... | @@ -37,26 +37,17 @@ |
| 37 | <div class="product"> | 37 | <div class="product"> |
| 38 | <div class="product-title">-- 全部商品 --</div> | 38 | <div class="product-title">-- 全部商品 --</div> |
| 39 | <div class="product-list"> | 39 | <div class="product-list"> |
| 40 | <div class="item"> | 40 | <div @click="toProduct(item)" v-for="item in productList" :key="item.id" class="item"> |
| 41 | <img class="image" src="https://img.yzcdn.cn/vant/apple-1.jpg" alt=""> | 41 | <img class="image" :src="item.imageUrl" alt=""> |
| 42 | <div class="desc">黄金吊坠</div> | 42 | <div class="desc">{{item.productName}}</div> |
| 43 | </div> | ||
| 44 | <div class="item"> | ||
| 45 | <img class="image" src="https://img.yzcdn.cn/vant/apple-1.jpg" alt=""> | ||
| 46 | <div class="desc">黄金吊坠</div> | ||
| 47 | </div> | ||
| 48 | <div class="item"> | ||
| 49 | <img class="image" src="https://img.yzcdn.cn/vant/apple-1.jpg" alt=""> | ||
| 50 | <div class="desc">黄金吊坠</div> | ||
| 51 | </div> | ||
| 52 | <div class="item"> | ||
| 53 | <img class="image" src="https://img.yzcdn.cn/vant/apple-1.jpg" alt=""> | ||
| 54 | <div class="desc">黄金吊坠</div> | ||
| 55 | </div> | 43 | </div> |
| 56 | </div> | 44 | </div> |
| 57 | </div> | 45 | </div> |
| 58 | </div> | 46 | </div> |
| 59 | </div> | 47 | </div> |
| 48 | <van-popup v-model="contactUsVisible"> | ||
| 49 | <contact-us-comp></contact-us-comp> | ||
| 50 | </van-popup> | ||
| 60 | </div> | 51 | </div> |
| 61 | </template> | 52 | </template> |
| 62 | 53 | ... | ... |
-
Please register or sign in to post a comment