feat: 实现商户导航功能涉及首页、发现、分类、购物车、商品;实现一键快速加购。

This commit is contained in:
mixtan 2025-07-09 09:17:45 +08:00
parent 0bcad2ecb1
commit b6c4e65ed9
16 changed files with 6685 additions and 3092 deletions

View File

@ -1,61 +0,0 @@
<template>
<view class="wf-item-page">
<image :src="item.story_file[0]" class="item-img" />
<view class="item-desc">
{{item.story_title || ''}}
</view>
<view class="item-info">
<image :src="item.user_avatar" mode="aspectFill" class="info-avatar" />
<view class="info-nickname">{{item.user_nickname}}</view>
</view>
</view>
</template>
<script>
export default {
props:{
item:{
type:Object,
require:true
}
}
}
</script>
<style lang="scss" scoped>
.wf-item-page{
background: #fff;
overflow: hidden;
border-radius: 5px;
position: relative;
}
.item-img{
width: 100%;
}
.item-info{
display: flex;
align-items: center;
padding: 5px;
}
.info-avatar{
width: 25px;
height: 25px;
border-radius: 50%;
margin-right: 5px;
}
.info-nickname{
font-size: 12px;
color: #333;
}
.item-desc{
display: flex;
align-items: center;
padding: 5px 5px 0px 5px;
font-size: 12px;
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -1,155 +0,0 @@
<template name="pay-box">
<block></block>
</template>
<script>
export default {
name: "pay-box",
props: {
shareDataDefault: {
type: Object,
default() {
return {
shareTitle: '',
shareText: '',
href: '',
image: ''
}
},
},
},
data(){
return {
showBoxView:false,
shareType:0
}
},
created() {
uni.getProvider({
service: "share",
success: (e) => {
//console.log("success", e);
let data = []
for (let i = 0; i < e.provider.length; i++) {
switch (e.provider[i]) {
case 'weixin':
data.push({
name: '分享到微信好友',
id: 'weixin',
sort: 0
})
data.push({
name: '分享到微信朋友圈',
id: 'weixin',
type: 'WXSenceTimeline',
sort: 1
})
break;
case 'sinaweibo':
data.push({
name: '分享到新浪微博',
id: 'sinaweibo',
sort: 2
})
break;
case 'qq':
data.push({
name: '分享到QQ',
id: 'qq',
sort: 3
})
break;
default:
break;
}
}
this.providerList = data.sort((x, y) => {
return x.sort - y.sort
});
},
fail: (e) => {
//console.log("", e);
uni.showModal({
content: "获取登录通道失败",
showCancel: false
})
}
});
},
methods:{
share() {
if (this.providerList.length === 0) {
uni.showModal({
title: '当前环境无分享渠道!',
showCancel: false
})
return;
}
let itemList = this.providerList.map(function (value) {
return value.name
})
var that = this;
uni.showActionSheet({
itemList: itemList,
success: (res) => {
uni.share({
provider: this.providerList[res.tapIndex].id,
scene: this.providerList[res.tapIndex].type && this.providerList[res.tapIndex].type === 'WXSenceTimeline' ? 'WXSenceTimeline' : "WXSceneSession",
type: this.shareType,
summary : this.shareDataDefault.shareText,
imageUrl : this.shareDataDefault.image,
title : this.shareDataDefault.shareTitle,
href : this.shareDataDefault.href,
success: (res) => {
//console.log("success:" + JSON.stringify(res));
},
fail: (e) => {
uni.showModal({
//content: e.errMsg,
content: '用户取消',
showCancel:false
})
}
});
}
})
},
save(){
uni.showActionSheet({
itemList:['保存图片到相册'],
success: () => {
plus.gallery.save('https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/app_download.png', function() {
uni.showToast({
title:'保存成功',
icon:'none'
})
}, function() {
uni.showToast({
title:'保存失败,请重试!',
icon:'none'
})
});
}
})
},
cancel() {
this.showBoxView = false;
this.$emit('onCancel');
},
show() {
this.share();
}
}
}
</script>
<style>
</style>

View File

@ -1,128 +0,0 @@
<template>
<view class="tagController">
<view class="tagContainer">
<view class="tagItem" :class="tagBgColor" v-bind:key="index" v-for="(tagText,index) in value">
<text @tap="tapTag" :data-text="tagText">{{tagText}}</text>
<text v-if="isShowDelIcon" class="tagDelIcon" @tap="delTag" :data-text="tagText">x</text>
</view>
</view>
<view class="tagInput" v-if="isShowAdd">
<input type="text" v-model="tagString" placeholder-class="placeholder-class" placeholder="输入新的标签" />
<button type="default" size="mini" @tap="createTags">添加</button>
</view>
</view>
</template>
<script>
export default {
name:'robby-tags',
props: ['enableDel','bgColorType','value', 'enableAdd'],
data() {
return {
tagString:'',
isShowDelIcon: this.enableDel || false,
isShowAdd: this.enableAdd || false
}
},
computed:{
tagBgColor: function(){
if(this.bgColorType === null){
return 'tagBgDefault'
}else if(this.bgColorType === 'primary'){
return 'tagBgPrimary'
}else if(this.bgColorType === 'success'){
return 'tagBgSuccess'
}else if(this.bgColorType === 'warn'){
return 'tagBgWarning'
}else if(this.bgColorType === 'error'){
return 'tagBgError'
}else{
return 'tagBgDefault'
}
}
},
methods: {
createTags: function(){
let tempTagArr = []
if(this.tagString.length>0){
let newvalue = this.tagString.split(/,|/)
for(let i=0;i<newvalue.length;i++){
let newTag = newvalue[i].trim()
if(newTag !== '' && this.value.indexOf(newTag) < 0){
tempTagArr.push(newTag)
}
}
}
this.tagString = ''
this.value.splice(this.value.length,0, ...tempTagArr)
this.$emit('add', {
currentTag: tempTagArr,
allTags: this.value
})
this.$emit('input', this.value)
},
delTag: function(e){
let delTagText = e.currentTarget.dataset.text
let delTagIndex = this.value.indexOf(delTagText)
this.value.splice(delTagIndex,1)
this.$emit("delete", {
currentTag: delTagText,
allTags: this.value
})
this.$emit('input', this.value)
},
tapTag: function(e){
let selTagText = e.currentTarget.dataset.text
this.$emit("click", selTagText)
}
}
}
</script>
<style>
.placeholder-class{
font-size: 24rpx;
}
.tagController{
padding: 10rpx;
}
.tagContainer{
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
}
.tagItem{
padding: 10rpx 20rpx;
margin: 10rpx;
border-radius: 40rpx;
color: white;
}
.tagBgDefault{
background-color: #cfcfcf;
color: black;
}
.tagBgPrimary{
background-color: #007aff;
}
.tagBgSuccess{
background-color: #4cd964;
}
.tagBgWarning{
background-color: #f0ad4e;
}
.tagBgError{
background-color: #dd524d;
}
.tagDelIcon{
padding-left: 20rpx;
}
.tagInput{
padding: 10rpx;
}
.tagInput input{
width: 60%;
display: inline-block;
}
</style>

View File

@ -1,351 +0,0 @@
<template>
<view>
<!-- 商品分类 -->
<uni-drawer :visible="rightDrawerVisible" mode="right" @close="closeDrawer()" >
<view class="m-tab">
<view class="m-navbar">
<view :class="['m-navbar-item', tapindex==1?'m-navbar-item-on':'']" @click="onecategorys">
{{__('一级分类')}}
</view>
<view :class="['m-navbar-item', tapindex==2?'m-navbar-item-on':'']">
{{__('二级分类')}}
</view>
<view :class="['m-navbar-item', tapindex==3?'m-navbar-item-on':'']">
{{__('三级分类')}}
</view>
</view>
</view>
<scroll-view scroll-y="true" style="height: 100%">
<view class="m-cells" style="padding:20rpx 20rpx;" v-for="(category,ii) in categorys" :key="ii">
<view class="m-cell m-cell-access m-info-sp" :data-category_id="category.category_id" :data-category_name="category.category_name" @click="getCate">
<view class="m-cell-bd">
<view class="m-order-title">
<label class="m-ber-n">{{category.category_name}}</label>
<label>
<image class="nav-image" lazy-load src="/static/images/nav.png" mode="scaleToFill" />
</label>
</view>
</view>
</view>
</view>
</scroll-view>
</uni-drawer>
</view>
</template>
<script>
import uniDrawer from '@/components/uni-drawer.vue';
import { mapState, mapMutations } from 'vuex';
export default {
props: {
rightDrawerVisible: {
type: Boolean,
default: false
}
},
data() {
return {
index:0,
tapindex: 1,
deep:0,
categorys:[]
};
},
components: {
uniDrawer
},
computed: mapState([
'Config',
'StateCode',
'notice',
'plantformInfo',
'shopInfo',
'userInfo',
'hasLogin'
]),
created() {
var that = this;
this.GetPlist(function() {
that.pdlist.length == 0 ? that.setData({ isdata: false }) : that.setData({ isdata: true });
});
},
methods: {
...mapMutations(['login', 'logout', 'getPlantformInfo', 'forceUserInfo', 'getUserInfo']),
onecategorys: function(){
this.setData({
deep:1,
category_id:0,
tapindex:1
})
this.getcategorys()
},
getCate: function(e){
var that = this;
switch (that.tapindex) {
case 1:
that.setData({
deep:that.tapindex,
category_id:e.currentTarget.dataset.category_id,
onecategory:e.currentTarget.dataset.category_name,
tapindex:2
})
that.getcategorys()
break;
case 2:
that.setData({
deep:that.tapindex,
category_id:e.currentTarget.dataset.category_id,
twocategory:e.currentTarget.dataset.category_name,
tapindex:3
})
that.getcategorys()
break;
case 3:
that.setData({
threecategory:e.currentTarget.dataset.category_name,
category_id:e.currentTarget.dataset.category_id,
tapindex:1,
deep:1,
rightDrawerVisible:false
})
that.commodity_name = that.onecategory + '>' + that.twocategory + '>' + that.threecategory
break;
}
},
getcategorys: function(e){
var that = this;
var params = {
deep:that.deep
};
if(that.category_id !== 0){
params.category_id= that.category_id
}
that.$.request({
url: that.Config.URL.product.category,
data: params,
success: function(data, status, msg, code) {
if(status == 200){
that.setData({
categorys:data.items
})
}
}
})
}
}
};
</script>
<style lang="scss" scoped>
@import '../styles/_variables.scss';
/*全部商品 start*/
.m-navbar-item {
padding: 20rpx 0;
font-size: 24rpx;
i {
font-size: 0rpx;
line-height: 0;
vertical-align: middle;
display: inline-block;
width: 0rpx;
height: 0rpx;
margin-left: 9.375rpx;
border-width: 9.375rpx;
border-color: #aaa transparent transparent transparent;
border-style: solid dashed dashed dashed;
}
}
.m-navbar-item:after {
border: none;
}
.m-navbar-item.m-navbar-item-on {
background-color: #fff;
color: $default-skin-bg;
i {
border-color: $default-skin-bg transparent transparent;
}
}
.m-navbar-item.m-navbar-item-on::before {
content: ' ';
position: absolute;
left: 0;
bottom: 0;
right: 0;
height: 6rpx;
border-bottom: 6rpx solid $default-skin-bg;
color: #cccccc;
-webkit-transform-origin: 0 100%;
transform-origin: 0 100%;
-webkit-transform: scaleY(0.5);
transform: scaleY(0.5);
z-index: 3;
}
.m-sort {
position: relative;
}
.m-sort image {
width: 24rpx;
height: 24rpx;
position: absolute;
/*top: 50%;*/
margin-top: 10rpx;
margin-left: 2rpx;
}
/*全部商品 end*/
.m-product-price1 {
width: 100%;
display: flex;
justify-content: space-between;
}
.num {
font-size: 24rpx;
color: #717171;
padding-right: 20rpx;
/*margin-left:260rpx; */
}
.u-pa .m-tab {
top: var(--window-top);
}
.u-pa .m-tab-top {
top: 0;
}
.filter-box {
top: var(--window-top);
}
.filter-box-top {
top: 0;
}
.tag-view {
margin: 10rpx 20rpx;
display: inline-block;
}
.uni-numbox-value {
border: 2rpx solid #cccccc;
background-color: #ffffff;
width: 150rpx;
height: 48rpx;
text-align: center;
display: inline-block;
}
.uni-dot {
width: 30rpx;
height: 100%;
text-align: center;
display: inline-block;
line-height: 44rpx;
height: 44rpx;
}
.uni-padding-wrap {
overflow: hidden;
max-width: 400rpx;
}
/* */
.product-list {
position: relative;
z-index: 1;
&:hover {
z-index: 2;
}
.flag {
position: absolute;
top: 0;
left: 50%;
z-index: 2;
width: 64px;
height: 20px;
margin-left: -32px;
font-size: 12px;
line-height: 20px;
text-align: center;
color: #fff;
}
.flag-reduction {
background-color: #e50dbb;
z-index: 8;
}
.flag-saleoff {
background-color: #e53935;
z-index: 7;
}
.flag-postfree {
background-color: #ffac13;
z-index: 6;
}
.flag-bargain {
background-color: #ffac13;
z-index: 4;
}
.flag-gift {
background-color: #2196f3;
z-index: 3;
}
.flag-new {
background-color: #83c44e;
z-index: 5;
}
.flag-selfsupport {
background-color: #f44336;
z-index: 10;
position: absolute;
top: 1px;
right: 5px;
left: auto;
width: 40px;
}
}
.placeholder-class{
font-size: 25rpx;
}
.button{
line-height: 2;
font-size: 34rpx;
}
.uni-common-mt{
margin-top: 20rpx;
}
.u-pa {
position: inherit!important;
}
.u-pa .m-product-list
{
padding-top:0rpx;
}
.u-pa .m-tab{
position: relative;
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
<template name="shoptheme1">
<view>
<view class="m-supermarket-ad">
<view class="m-supermarket-ad">11111
<view v-if="(commonTPL.AdContent.F1ProductContents.length>0)">
<view class="m-supermarket-tip-list">
<navigator :url="'/pages/product/list?is_store_flag=' + (commonTPL.isStoreFlag) + '&store_category_id=' + (item.store_product_cat_id) + '&cname=' + (item.name)"

View File

@ -29,6 +29,15 @@
}
}
},
{
"path": "pages/index/cart",
"style": {
"navigationBarTitleText": "购物车",
"app-plus": {
"titleNView": false
}
}
},
{
"path": "pages/index/index",
"style": {
@ -115,6 +124,7 @@
}
}
},
{
"path": "pages/index/member",
@ -831,17 +841,25 @@
{
"root": "pagesub",
"pages": [
/*
{
"path": "category/list",
"path": "index/category",
"style": {
"navigationBarTitleText": "分类",
"navigationBarTitleText": "",
"navigationStyle": "custom",
"app-plus": {
"titleNView": false
}
}
},
{
"path": "index/feed",
"style": {
"navigationBarTitleText": "发现",
"app-plus": {
"titleNView": false
}
}
},
*/
{
"path": "category/brands",
"style": {
@ -852,6 +870,13 @@
}
},
{
"path": "index/goods",
"style": {
"navigationBarTitleText": "全部商品"
}
},
{
"path": "index/store",
"style": {

View File

@ -1,7 +1,7 @@
<template>
<view class="page">
<!-- <status-bar :backgroundColor="'#fff'"></status-bar> -->
<!-- <uni-nav-bar title="购物车"></uni-nav-bar> -->
<!-- <status-bar :backgroundColor="'#fff'"></status-bar>
<uni-nav-bar title="购物车"></uni-nav-bar> -->
<view v-if="loadComplete">
<block v-if="isdata">
<view class="manage" @click="showDelBtn">{{
@ -910,11 +910,11 @@
<script>
import guessYouLike from "@/components/product-list.vue";
import statusBar from "../../components/status-bar.vue";
import statusBar from "@/components/status-bar.vue";
import { theme_bg } from "@/styles/_variables.scss";
import { mapState, mapMutations } from "vuex";
import statecode from "../../config/statecode";
import statecode from "@/config/statecode";
export default {
data: function () {

2190
pages/index/cart.vue Normal file

File diff suppressed because it is too large Load Diff

View File

@ -973,7 +973,7 @@
</view>
<text>{{ __('客服') }}</text>
</view>
<view data-url="/pages/cart/cart" class="m-footer-btn-item" @click="goTabBar">
<view data-url="/pages/index/cart" class="m-footer-btn-item" @click="goTabBar">
<view class="m-footer-btn-icon">
<label class="iconfont icon-cart "></label>
<uni-badge v-if="cartNum>0" :text="cartNum" type="danger" style="margin-top: -12rpx;margin-left: -12rpx;"></uni-badge>

1368
pagesub/index/category.vue Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,176 @@
<template>
<view class="sub__tabbar">
<view
:class="['item', { current: current == 1 }]"
@click="gopage(1, `/pagesub/index/store?store_id=${storeId}`)"
>
<view class="box">
<image
v-if="current == 1"
class="icon"
src="https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/static/icon/icon_home_cur.png"
/>
<image v-else class="icon" src="https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/static/icon/icon_home.png" />
<view class="desc">首页</view>
</view>
</view>
<view
:class="['item', { current: current == 2 }]"
@click="
gopage(
2,
`/pagesub/index/category?category_id=${categoryId}&store_id=${storeId}`
)
"
>
<view class="box">
<image
v-if="current == 2"
class="icon"
src="https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/static/icon/icon_category_cur.png"
/>
<image v-else class="icon" src="https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/static/icon/icon_category.png" />
<view class="desc">分类</view>
</view>
</view>
<!-- <view
:class="['item', { current: current == 3 }]"
@click="gopage(3,'/pagesub/index/feed')"
>发现</view
> -->
<view
:class="['item', { current: current == 4 }]"
@click="gopage(4, '/pages/index/cart')"
>
<view class="box">
<image
v-if="current == 4"
class="icon"
src="https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/static/icon/icon_shop_cur.png"
/>
<image v-else class="icon" src="https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/static/icon/icon_shop.png" />
<view class="desc">购物车</view>
<text class="icon_badge">{{ goodsNum }}</text>
</view>
</view>
<!-- <view
:class="['item', { current: current == 5 }]"
@click="gopage(5,`/pagesub/index/goods?store_id=${storeId}`)"
>商品</view
> -->
</view>
</template>
<script>
export default {
props: {
current: {
type: Number,
default: 1,
},
cartNum: {
type: Number,
default: 0,
},
storeId: {
type: Number,
default: 0,
},
categoryId: {
type: Number,
default: 0,
},
},
data() {
return {
goodsNum: 0,
};
},
watch: {
cartNum: {
handler(newVal) {
this.goodsNum = newVal;
},
immediate: true,
},
},
methods: {
gopage(tabIndex, url) {
if (tabIndex === this.current) {
console.log("当前页面,不执行跳转");
return;
}
this.$.navigateTo({
url,
});
},
},
};
</script>
<style lang="scss" scoped>
.sub__tabbar {
position: fixed;
bottom: 0;
right: 0;
left: 0;
z-index: 10;
display: flex;
align-items: center;
border-top: 1px solid rgba(0, 0, 0, 0.1);
padding: 4rpx 0;
padding-bottom: var(--safe-area-inset-bottom, 4);
height: 48px;
background: #fff;
.item {
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
flex: 1;
color: #666;
text-align: center;
position: relative;
.icon {
width: 48rpx;
height: 48rpx;
display: block;
}
.desc {
font-size: 24rpx;
line-height: 14rpx;
}
.icon_badge {
display: block;
position: absolute;
right: -5px;
top: -5px;
text-align: center;
line-height: 24rpx;
font-size: 24rpx;
padding: 4rpx 10rpx;
border-radius: 20rpx;
color: #fff;
background: #dd524d;
}
.box {
position: relative;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
gap: 10rpx;
}
&.current {
color: #dd524d;
font-weight: 900;
}
}
}
</style>

42
pagesub/index/feed.vue Normal file
View File

@ -0,0 +1,42 @@
<template>
<view class="my_feed">
<image
lazy-load
mode="widthFix"
class="my_feedimg"
src="https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/media/media/plantform/default/20250703/fbc317620e5d41e09589d4b81703372a.jpg"
/>
<MyTabbar current="3" :cartNum="cartNum" :storeId="shopInfo.store_id" :categoryId="shopInfo.category_id"></MyTabbar>
</view>
</template>
<script>
import { mapMutations, mapState } from "vuex";
import MyTabbar from "./components/tabbar.vue";
export default {
components: {
MyTabbar
},
computed: mapState([
"Config",
"StateCode",
"notice",
"plantformInfo",
"shopInfo",
"userInfo",
"hasLogin",
"cartNum",
]),
}
</script>
<style lang="scss" scoped>
.my_feed{
padding-bottom: 65px;
}
.my_feedimg{
width: 100%;
height: auto;
max-width: 100%
}
</style>

1750
pagesub/index/goods.vue Normal file

File diff suppressed because it is too large Load Diff

View File

@ -11,152 +11,91 @@
</view>
<view class="m-shopinfo">
<view style="display: flex">
<view
style="
<view style="
font-size: 36rpx;
color: #fff;
flex: 1;
height: 40rpx;
line-height: 40rpx;
"
>{{ store_info.store_name }}</view
>
">{{ store_info.store_name }}</view>
<view class="iconfont icon-qijiandian" v-if="false"></view>
<view class="service-star-box" v-if="store_info.store_star_num > 0">
<view>{{ __("综合体验") }}</view>
<view
class="m-startBox"
v-for="(itemIndex, ii) in [1, 2, 3, 4, 5]"
:key="ii"
:class="[
'iconfont',
'icon-start',
itemIndex <= store_info.store_star_num ? 'sel' : '',
]"
>
<view class="m-startBox" v-for="(itemIndex, ii) in [1, 2, 3, 4, 5]" :key="ii" :class="[
'iconfont',
'icon-start',
itemIndex <= store_info.store_star_num ? 'sel' : '',
]">
</view>
</view>
</view>
<view style="margin-left: 20rpx" v-if="false">{{
store_info.store_grade_name
}}</view>
<text
style="
<text style="
width: 56%;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
"
v-if="store_info.store_slogan != ''"
>{{ sprintf(__("公告:%s"), store_info.store_slogan) }}</text
>
" v-if="store_info.store_slogan != ''">{{ sprintf(__("公告%s"), store_info.store_slogan) }}</text>
</view>
<view class="tag-view">
<uni-tag
:text="__('已收藏')"
mark="right"
type="gray"
size="normal"
inverted="1"
circle="true"
data-type="groupbuy"
v-if="store_info.analytics.store_collect"
@click="onUnlikeStore(store_info.store_id)"
></uni-tag>
<uni-tag :text="__('已收藏')" mark="right" type="gray" size="normal" inverted="1" circle="true"
data-type="groupbuy" v-if="store_info.analytics.store_collect"
@click="onUnlikeStore(store_info.store_id)"></uni-tag>
<uni-tag
:text="__('收藏')"
mark="right"
type="lancerdt"
size="normal"
inverted="1"
circle="true"
data-type="groupbuy"
v-if="store_info.analytics.store_collect < 1"
@click="onLikeStore(store_info.store_id)"
></uni-tag>
<uni-tag :text="__('收藏')" mark="right" type="lancerdt" size="normal" inverted="1" circle="true"
data-type="groupbuy" v-if="store_info.analytics.store_collect < 1"
@click="onLikeStore(store_info.store_id)"></uni-tag>
<uni-tag
:text="
sprintf(__(' %d 次'), store_info.analytics.store_favorite_num)
"
mark="true"
type="lancerdt"
size="normal"
inverted="1"
circle="true"
data-type="groupbuy"
></uni-tag>
<uni-tag :text="sprintf(__(' %d '), store_info.analytics.store_favorite_num)
" mark="true" type="lancerdt" size="normal" inverted="1" circle="true" data-type="groupbuy"></uni-tag>
</view>
</view>
<view v-if="loadStoreConfigComplete">
<diy
v-if="commonTPL.TemplateKey == 'shopdiy'"
:BgConfig="BgConfig"
:PageContent="PageContent"
:pageId="pageId"
:PageNav="PageNav"
:StoreInfo="commonTPL.shopInfo"
:loadPageFlag="loadPageFlag"
></diy>
<diy v-if="commonTPL.TemplateKey == 'shopdiy'" :BgConfig="BgConfig" :PageContent="PageContent" :pageId="pageId"
:PageNav="PageNav" :StoreInfo="commonTPL.shopInfo" :loadPageFlag="loadPageFlag"></diy>
<block v-if="commonTPL.TemplateKey != 'shopdiy'">
<block v-else>
<view class="g-flex m-ba-tab" v-if="commonTPL.TemplateKey != ''">
<view
:class="[
'g-flex-item',
commonTPL.tapindex == 1 ? 'm-ba-item-select' : '',
]"
@click="clickRecommend"
v-if="commonTPL.TemplateKey != 'shop6'"
>
<!--我加的判断-->
<view :class="[
'g-flex-item',
commonTPL.tapindex == 1 ? 'm-ba-item-select' : '',
]" @click="clickRecommend" v-if="commonTPL.TemplateKey != 'shop6'">
<view class="m-ba-icon">
<label class="iconfont icon-discount"></label>
</view>
<view>{{ __("推荐") }}</view>
</view>
<view
:class="[
'g-flex-item',
commonTPL.tapindex == 2 ? 'm-ba-item-select' : '',
]"
@click="clickListAllProduct"
>
<view :class="[
'g-flex-item',
commonTPL.tapindex == 2 ? 'm-ba-item-select' : '',
]" @click="clickListAllProduct">
<view class="m-ba-icon">{{ commonTPL.shopInfo.AllProduct }}</view>
<view>{{ __("全部商品") }}</view>
</view>
<view
:class="[
'g-flex-item',
commonTPL.tapindex == 3 ? 'm-ba-item-select' : '',
]"
@click="clickListNewProduct"
>
<view :class="[
'g-flex-item',
commonTPL.tapindex == 3 ? 'm-ba-item-select' : '',
]" @click="clickListNewProduct">
<view class="m-ba-icon">{{ commonTPL.shopInfo.NewProduct }}</view>
<view>{{ __("上新") }}</view>
</view>
<view
:class="[
'g-flex-item',
commonTPL.tapindex == 4 ? 'm-ba-item-select' : '',
]"
@click="clickGetStoreData"
>
<view :class="[
'g-flex-item',
commonTPL.tapindex == 4 ? 'm-ba-item-select' : '',
]" @click="clickGetStoreData">
<view class="m-ba-icon">
<label class="iconfont icon-store"></label>
</view>
<view>{{ __("店铺简介") }}</view>
</view>
<view
:class="[
'g-flex-item',
commonTPL.tapindex == 4 ? 'm-ba-item-select hide' : 'hide',
]"
@click="showSupplyProducts"
>
<view :class="[
'g-flex-item',
commonTPL.tapindex == 4 ? 'm-ba-item-select hide' : 'hide',
]" @click="showSupplyProducts">
<view class="m-ba-icon">
<label class="iconfont icon-store"></label>
</view>
@ -164,129 +103,73 @@
</view>
</view>
<shoptheme1
v-if="commonTPL.tapindex == 1 && commonTPL.TemplateKey == 'shop1'"
:commonTPL="commonTPL"
>
<shoptheme1 v-if="commonTPL.tapindex == 1 && commonTPL.TemplateKey == 'shop1'" :commonTPL="commonTPL">
</shoptheme1>
<shoptheme2
v-if="commonTPL.tapindex == 1 && commonTPL.TemplateKey == 'shop2'"
:commonTPL="commonTPL"
>
<shoptheme2 v-if="commonTPL.tapindex == 1 && commonTPL.TemplateKey == 'shop2'" :commonTPL="commonTPL">
</shoptheme2>
<shoptheme3
v-if="commonTPL.tapindex == 1 && commonTPL.TemplateKey == 'shop3'"
:commonTPL="commonTPL"
>
<shoptheme3 v-if="commonTPL.tapindex == 1 && commonTPL.TemplateKey == 'shop3'" :commonTPL="commonTPL">
</shoptheme3>
<shoptheme4
v-if="commonTPL.tapindex == 1 && commonTPL.TemplateKey == 'shop4'"
:commonTPL="commonTPL"
>
<shoptheme4 v-if="commonTPL.tapindex == 1 && commonTPL.TemplateKey == 'shop4'" :commonTPL="commonTPL">
</shoptheme4>
<shoptheme5
v-if="commonTPL.tapindex == 1 && commonTPL.TemplateKey == 'shop5'"
:commonTPL="commonTPL"
>
<shoptheme5 v-if="commonTPL.tapindex == 1 && commonTPL.TemplateKey == 'shop5'" :commonTPL="commonTPL">
</shoptheme5>
<shoptheme6
v-if="commonTPL.tapindex == 1 && commonTPL.TemplateKey == 'shop6'"
:commonTPL="commonTPL"
>
<shoptheme6 v-if="commonTPL.tapindex == 1 && commonTPL.TemplateKey == 'shop6'" :commonTPL="commonTPL">
</shoptheme6>
<view v-if="loadStoreCategoryComplete">
<shoptheme6
v-if="commonTPL.tapindex == 2 && commonTPL.TemplateKey == 'shop6'"
:commonTPL="commonTPL"
ref="shop6"
></shoptheme6>
<shoptheme6 v-if="commonTPL.tapindex == 2 && commonTPL.TemplateKey == 'shop6'" :commonTPL="commonTPL"
ref="shop6"></shoptheme6>
<view v-else-if="commonTPL.tapindex == 2" class="m-scroll-box">
<scroll-view
scroll-y="true"
@scrolltolower="scrollbottom"
@scroll="scrollView"
@scrolltoupper="scrollTop"
class="m-product-all"
:class="[
<scroll-view scroll-y="true" @scrolltolower="scrollbottom" @scroll="scrollView" @scrolltoupper="scrollTop"
class="m-product-all" :class="[
'm-product-all',
'u-pa',
commonTPL.istop ? 'u-patop' : 'u-pabtn',
]"
>
]">
<view class="m-tab">
<view class="m-navbar">
<view
class="m-navbar-item"
:class="[
'm-navbar-item',
commonTPL.post.orderby == 'product_sale_num'
? 'm-navbar-item-on'
: '',
]"
@click="clickSortBySaleNum"
>
<view class="m-navbar-item" :class="[
'm-navbar-item',
commonTPL.post.orderby == 'product_sale_num'
? 'm-navbar-item-on'
: '',
]" @click="clickSortBySaleNum">
{{ __("销量") }}
</view>
<view
class="m-navbar-item"
:class="[
'm-navbar-item',
commonTPL.post.orderby == 'product_add_time'
? 'm-navbar-item-on'
: '',
]"
@click="clickNewpd"
>
<view class="m-navbar-item" :class="[
'm-navbar-item',
commonTPL.post.orderby == 'product_add_time'
? 'm-navbar-item-on'
: '',
]" @click="clickNewpd">
{{ __("新品") }}
</view>
<view
class="m-navbar-item"
:class="[
'm-navbar-item',
commonTPL.post.orderby == 'product_unit_price'
? 'm-navbar-item-on'
: '',
]"
@click="clickSortByPrice"
>
<view class="m-navbar-item" :class="[
'm-navbar-item',
commonTPL.post.orderby == 'product_unit_price'
? 'm-navbar-item-on'
: '',
]" @click="clickSortByPrice">
<label class="m-sort">
{{ __("价格") }}
<image
:src="
'https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/static/xcxfile/appicon/images/' +
(commonTPL.sort == 1 ? 'sort-desc' : 'sort-asc') +
'.png'
"
/>
<image :src="'https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/static/xcxfile/appicon/images/' +
(commonTPL.sort == 1 ? 'sort-desc' : 'sort-asc') +
'.png'
" />
</label>
</view>
</view>
</view>
<view
:class="[
'm-product-list',
commonTPL.viewtype == 1 ? 'fadeIn animated m-listv' : '',
]"
>
<navigator
v-for="(item, i) in commonTPL.pdlist"
:key="i"
:url="
'/pages/product/detail?is_store_flag=' +
commonTPL.isStoreFlag +
'&pid=' +
item.id
"
class="m-product-item"
style="border-radius: 19rpx"
>
<view :class="[
'm-product-list',
commonTPL.viewtype == 1 ? 'fadeIn animated m-listv' : '',
]">
<view v-for="(item, i) in commonTPL.pdlist" :key="i" @click="goShopDetail('/pages/product/detail?is_store_flag=' +
commonTPL.isStoreFlag +
'&pid=' +
item.id)" class="m-product-item" style="border-radius: 19rpx">
<view class="m-product-img">
<image
:src="item.ProductPic"
mode="aspectFill"
style="border-radius: 19rpx"
/>
<image :src="item.ProductPic" mode="aspectFill" style="border-radius: 19rpx" />
</view>
<view class="m-product-info">
<view class="m-product-name">
@ -294,39 +177,39 @@
</view>
<view class="m-product-price">
<block v-if="item.ItemSalePrice">
<label>{{ __("¥") }}</label
>{{ number_format(item.ItemSalePrice, 2) }}
<label>{{ __("¥")
}}{{ number_format(item.ItemSalePrice, 2) }}</label>
</block>
<view @click.stop="addCart(item, $event)">
<uni-icons type="plus-filled" size="30" color="#fe411b"></uni-icons>
</view>
<block v-if="item.product_unit_points">
<label style="margin: 0rpx 10rpx">+</label
><label style="font-size: 32rpx">{{
<label style="margin: 0rpx 10rpx">+</label><label style="font-size: 32rpx">{{
number_format(item.product_unit_points)
}}</label>
<label>{{ __("积分") }}</label>
</block>
<block v-if="item.product_unit_sp">
<label style="margin: 0rpx 10rpx">+</label
><label style="font-size: 32rpx">{{
<label style="margin: 0rpx 10rpx">+</label><label style="font-size: 32rpx">{{
item.product_unit_sp
}}</label>
<label>{{ __("众宝") }}</label>
</block>
</view>
</view>
</navigator>
</view>
</view>
<view class="u-top-default">
<view class="u-view" @click="onViewType">
<label
:class="[
'iconfont zc',
commonTPL.viewtype == 1
? 'zc-viewlist'
: 'zc-viewgallery',
]"
></label>
<label :class="[
'iconfont zc',
commonTPL.viewtype == 1
? 'zc-viewlist'
: 'zc-viewgallery',
]"></label>
</view>
<view class="u-back hide" @click="retruntop">
<label class="iconfont icon-fanhuidingbu"></label>
@ -352,47 +235,26 @@
</view>
<view v-if="loadStoreCategoryComplete">
<shoptheme6
v-if="commonTPL.tapindex == 3 && commonTPL.TemplateKey == 'shop6'"
:commonTPL="commonTPL"
@ckallPD6="ckallPD6"
>
<shoptheme6 v-if="commonTPL.tapindex == 3 && commonTPL.TemplateKey == 'shop6'" :commonTPL="commonTPL"
@ckallPD6="ckallPD6">
</shoptheme6>
<scroll-view
v-else-if="commonTPL.tapindex == 3"
scroll-y="true"
@scrolltolower="scrollbottom"
@scrolltoupper="scrollTop"
@scroll="scrollView"
:class="[
<scroll-view v-else-if="commonTPL.tapindex == 3" scroll-y="true" @scrolltolower="scrollbottom"
@scrolltoupper="scrollTop" @scroll="scrollView" :class="[
'm-product-all u-pa',
commonTPL.istop ? 'u-patop' : 'u-pabtn',
]"
>
<view
:class="[
'm-product-list',
'no-tap',
commonTPL.viewtype == 1 ? 'fadeIn animated m-listv' : '',
]"
>
]">
<view :class="[
'm-product-list',
'no-tap',
commonTPL.viewtype == 1 ? 'fadeIn animated m-listv' : '',
]">
<block v-for="(item, i) in commonTPL.pdlist" :key="i">
<navigator
:url="
'/pages/product/detail?is_store_flag=' +
commonTPL.isStoreFlag +
'&pid=' +
item.id
"
class="m-product-item"
style="border-radius: 19rpx"
>
<view @click="goShopDetail('/pages/product/detail?is_store_flag=' +
commonTPL.isStoreFlag +
'&pid=' +
item.id)" class="m-product-item" style="border-radius: 19rpx">
<view class="m-product-img">
<image
:src="item.ProductPic"
mode="aspectFill"
style="border-radius: 19rpx"
/>
<image :src="item.ProductPic" mode="aspectFill" style="border-radius: 19rpx" />
</view>
<view class="m-product-info">
<view class="m-product-name">
@ -400,44 +262,35 @@
</view>
<view class="m-product-price">
<block v-if="item.ItemSalePrice">
<label>{{ __("¥") }}</label
>{{ number_format(item.ItemSalePrice, 2) }}
<label>{{ __("¥") }}{{ number_format(item.ItemSalePrice, 2) }}</label>
</block>
<block v-if="item.product_unit_points">
<label style="margin: 0rpx 10rpx">+</label
><label style="font-size: 32rpx">{{
<label style="margin: 0rpx 10rpx">+</label><label style="font-size: 32rpx">{{
number_format(item.product_unit_points)
}}</label>
<label>{{ __("积分") }}</label>
</block>
<block v-if="item.product_unit_sp">
<label style="margin: 0rpx 10rpx">+</label
><label style="font-size: 32rpx">{{
<label style="margin: 0rpx 10rpx">+</label><label style="font-size: 32rpx">{{
item.product_unit_sp
}}</label>
<label>{{ __("众宝") }}</label>
</block>
</view>
</view>
</navigator>
</view>
</block>
</view>
<view class="u-top-default">
<view
class="u-view"
@click="onViewType"
style="line-height: 96rpx"
>
<label
:class="[
'iconfont zc',
commonTPL.viewtype == 1
? 'zc-viewlist'
: 'zc-viewgallery',
]"
></label>
<view class="u-view" @click="onViewType" style="line-height: 96rpx">
<label :class="[
'iconfont zc',
commonTPL.viewtype == 1
? 'zc-viewlist'
: 'zc-viewgallery',
]"></label>
</view>
<view class="u-back hide" @click="retruntop">
<label class="iconfont icon-fanhuidingbu"></label>
@ -464,49 +317,33 @@
<view v-if="commonTPL.tapindex == 4" class="m-ShopProfile">
<view class="m-cells" style="">
<view class="shop-address-content">
<view
class="shop-address-left-content"
@click.stop="gotomap"
:data-lat="commonTPL.shopInfo.store_latitude"
:data-address="commonTPL.shopInfo.LegalAdress"
:data-name="commonTPL.shopInfo.store_name"
:data-lng="commonTPL.shopInfo.store_longitude"
>
<view class="shop-address-left-content" @click.stop="gotomap"
:data-lat="commonTPL.shopInfo.store_latitude" :data-address="commonTPL.shopInfo.LegalAdress"
:data-name="commonTPL.shopInfo.store_name" :data-lng="commonTPL.shopInfo.store_longitude">
<label class="zc zc-shouhuodizhi address-icon"></label>
<view class="address-info">
<view class="address-item">
<text style="font-weight: 700">{{
commonTPL.shopInfo.LegalAdress
}}</text>
<text
v-if="distance"
@click.stop="gotomap"
:data-lat="commonTPL.shopInfo.store_latitude"
:data-address="commonTPL.shopInfo.LegalAdress"
:data-name="commonTPL.shopInfo.store_name"
:data-lng="commonTPL.shopInfo.store_longitude"
style="color: #999; font-size: 20rpx"
>{{ sprintf(__("距您 %s"), distance) }}</text
>
<text v-if="distance" @click.stop="gotomap" :data-lat="commonTPL.shopInfo.store_latitude"
:data-address="commonTPL.shopInfo.LegalAdress" :data-name="commonTPL.shopInfo.store_name"
:data-lng="commonTPL.shopInfo.store_longitude" style="color: #999; font-size: 20rpx">{{
sprintf(__("距您 %s"), distance) }}</text>
</view>
</view>
</view>
<span>
<image
src="https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/static/xcxfile/appicon/images/phone_sp.png"
style="width: 4rpx; height: 70rpx; border-radius: 24%"
/>
style="width: 4rpx; height: 70rpx; border-radius: 24%" />
</span>
<view
class="shop-address-right-content"
@click="callPhone(commonTPL.shopInfo.LegalNumber)"
>
<view class="shop-address-right-content" @click="callPhone(commonTPL.shopInfo.LegalNumber)">
<view class="shop-address-right-item">
<image
src="https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/static/xcxfile/appicon/images/phone.png"
class="phone-img"
/>
class="phone-img" />
<text style="font-size: 12px">{{ __("联系商家") }}</text>
</view>
</view>
@ -514,35 +351,16 @@
<view class="m-cell">
<view class="m-cell-bd">
<!-- <text>{{sprintf(__('店铺介绍:%s'), commonTPL.shopInfo.VendorInfo)}}</text> -->
<wxParse
:content="commonTPL.shopInfo.VendorInfo || ' '"
:imageProp="{ padding: 0 }"
/>
<wxParse :content="commonTPL.shopInfo.VendorInfo || ' '" :imageProp="{ padding: 0 }" />
</view>
</view>
<view class="m-cell" v-if="false" style="margin: 0 20rpx">
<view class="m-cell-bd">
<swiper
indicator-dots="true"
autoplay="true"
interval="3000"
duration="300"
>
<swiper-item
v-for="(item, ii) in commonTPL.shopInfo.info.store_slide"
:key="ii"
v-if="item.check"
>
<image
lazy-load
class="slide-image"
mode="aspectFill"
:src="item.img"
:data-src="item.img"
@click="previewProductImg"
/>
<swiper indicator-dots="true" autoplay="true" interval="3000" duration="300">
<swiper-item v-for="(item, ii) in commonTPL.shopInfo.info.store_slide" :key="ii" v-if="item.check">
<image lazy-load class="slide-image" mode="aspectFill" :src="item.img" :data-src="item.img"
@click="previewProductImg" />
</swiper-item>
</swiper>
</view>
@ -550,17 +368,12 @@
</view>
</view>
<!--评论-->
<view v-if="commonTPL.tapindex == 5">
<block v-if="comment_row.length > 0">
<view class="uni-padding-wrap">
<view class="uni-comment">
<view
v-for="(comment, cc) in comment_row"
:key="cc"
class="uni-comment-list"
style="border-bottom: 1px solid #eee"
>
<view v-for="(comment, cc) in comment_row" :key="cc" class="uni-comment-list"
style="border-bottom: 1px solid #eee">
<view class="uni-comment-face">
<image :src="comment.user_avatar" mode="widthFix"></image>
</view>
@ -574,22 +387,13 @@
<view class="uni-comment-content">{{
comment.comment_content
}}</view>
<view
v-if="comment.comment_image[0]"
class="m-cell-bd"
style="padding: 0; margin: 0; line-height: 1"
>
<view v-if="comment.comment_image[0]" class="m-cell-bd"
style="padding: 0; margin: 0; line-height: 1">
<view class="uni-uploader-body">
<view class="uni-uploader__files">
<block
v-for="(image, ii) in comment.comment_image"
:key="ii"
>
<block v-for="(image, ii) in comment.comment_image" :key="ii">
<view class="uni-uploader__file">
<image
class="uni-uploader__img"
:src="comment.comment_image[ii]"
></image>
<image class="uni-uploader__img" :src="comment.comment_image[ii]"></image>
</view>
</block>
</view>
@ -600,11 +404,8 @@
</view>
</view>
<navigator
:url="'/pages/index/addcomment?is_store=' + options.store_id"
class="m-nullpage"
style="height: 286rpx; margin-top: 0%"
>
<navigator :url="'/pages/index/addcomment?is_store=' + options.store_id" class="m-nullpage"
style="height: 286rpx; margin-top: 0%">
<view class="m-nullpage-middle">
<label class="iconfont icon-xiecomment"></label>
<view class="m-null-tip">
@ -615,10 +416,7 @@
</navigator>
</block>
<block v-else>
<navigator
:url="'/pages/index/addcomment?is_store=' + options.store_id"
class="m-nullpage"
>
<navigator :url="'/pages/index/addcomment?is_store=' + options.store_id" class="m-nullpage">
<view class="m-nullpage-middle">
<label class="iconfont icon-xiecomment"></label>
<view class="m-null-tip">
@ -629,11 +427,11 @@
</navigator>
</block>
</view>
<!--评论-->
</block>
</view>
</view>
<MyTabbar current="1" :cartNum="cartNum" :storeId="shopInfo.store_id" :categoryId="shopInfo.category_id"></MyTabbar>
</view>
</template>
@ -686,6 +484,7 @@ var thatProm = {
formdate: "",
pageId: 0,
};
import wxParse from "@/components/u-parse/u-parse.vue";
import paymentBox from "../../components/payment-box.vue";
@ -699,6 +498,7 @@ import shoptheme5 from "../../components/themes/shoptheme5.vue";
import shoptheme6 from "../../components/themes/shoptheme6.vue";
import diy from "../../components/themes/diy.vue";
import uniTag from "@/components/uni-tag/uni-tag.vue";
import MyTabbar from "./components/tabbar.vue";
import favorite from "@/helpers/favorite";
@ -771,6 +571,7 @@ export default {
"shopInfo",
"userInfo",
"hasLogin",
"cartNum",
]),
components: {
shoptheme1,
@ -782,7 +583,16 @@ export default {
diy,
uniTag,
wxParse,
MyTabbar,
},
onBackPress({ from }) {
console.log("=======", from);
if (from == "backbutton") {
uni.switchTab({ url: "/pages/index/index" });
}
},
onLoad: function (options) {
this.initStorePageData(options);
},
@ -818,7 +628,7 @@ export default {
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {},
onReachBottom: function () { },
/**
* 用户点击右上角分享
@ -859,7 +669,7 @@ export default {
/**
* 页面滚动触发事件的处理函数
*/
onPageScroll: function () {},
onPageScroll: function () { },
methods: {
...mapMutations([
@ -868,7 +678,46 @@ export default {
"forceUserInfo",
"getStoreInfo",
]),
ckLabel: function (e) {},
goShopDetail(url) {
this.$.gopage(url)
},
async addCart(item, event) {
var that = this;
var params = {
item_id: item.item_id,
proName: item.product_name,
cart_quantity: 1,
activity_id: 0,
SKU_Id: item.item_id,
};
event.stopPropagation()
await this.$store.dispatch(`addCart`, {
params: params,
callback: (data, status, msg, code) => {
if (status == 200) {
if (data.item_quantity != 0) {
that.$.alert(that.__("添加购物车成功"), function () { }, 400);
} else {
uni.showToast({
title: "亲~商品没有库存啦!",
icon: "error",
duration: 500,
});
// that.$.alert(that.__(""), function () {}, 500);
}
if (that.plantformInfo.prodcut_addcart_flag) {
that.$store.dispatch(`getCartList`, function (data) { });
}
}
},
});
},
ckLabel: function (e) { },
reloadShop6Data: function () {
let that = this;
if (this.$refs.shop6) {
@ -979,9 +828,9 @@ export default {
Math.asin(
Math.sqrt(
Math.pow(Math.sin(a / 2), 2) +
Math.cos(radLat1) *
Math.cos(radLat2) *
Math.pow(Math.sin(b / 2), 2)
Math.cos(radLat1) *
Math.cos(radLat2) *
Math.pow(Math.sin(b / 2), 2)
)
);
s = s * 6378.137; // EARTH_RADIUS;
@ -1047,11 +896,11 @@ export default {
RefreshProduct: function (e) {
e
? this.setData({
refresh: true,
})
refresh: true,
})
: this.setData({
refresh: false,
});
refresh: false,
});
},
//
@ -1108,7 +957,7 @@ export default {
that.$.hideLoading();
},
fail: function (err) {},
fail: function (err) { },
});
});
// todo
@ -1209,7 +1058,7 @@ export default {
that.getStoreData();
},
//
getStoreData: function () {},
getStoreData: function () { },
//
onViewType: function () {
var that = this;
@ -1483,7 +1332,7 @@ export default {
that.commonTPL.TemplateKey == "shopdiy" && that.getDivModel(); //shopdiyUI
resolve("success");
},
complete: function (res, status) {},
complete: function (res, status) { },
});
});
//
@ -1497,16 +1346,16 @@ export default {
t.length > 2 || t.length < 2
? that.$.alert("无法识别")
: t[0] == "productId"
? that.$.isNull(t[1])
? that.$.alert("无法识别")
: that.$.navigateTo("/pages/product/detail?pid=" + t[1])
: t[0] == "eventId"
? that.$.isNull(t[1])
? that.$.alert("无法识别")
: that.$.navigateTo(
"../activitycheckin/activitycheckin?eventId=" + t[1]
)
: that.$.alert("无法识别");
? that.$.isNull(t[1])
? that.$.alert("无法识别")
: that.$.navigateTo("/pages/product/detail?pid=" + t[1])
: t[0] == "eventId"
? that.$.isNull(t[1])
? that.$.alert("无法识别")
: that.$.navigateTo(
"../activitycheckin/activitycheckin?eventId=" + t[1]
)
: that.$.alert("无法识别");
},
fail: function (e) {
that.$.alert("无法识别");
@ -1528,17 +1377,17 @@ export default {
},
userReceiveCoupon: function () {
var e = {
CouponIds: "",
CouponIds: "",
user_is_new: this.user_is_new,
},
user_is_new: this.user_is_new,
},
that = this;
that.$.xsr(that.$.makeUrl(userapi.UserReceiveCoupon, e), function (e) {
e.Code == 0
? that.setData({
isCancelSuccess: false,
Coupons: e.Info,
})
isCancelSuccess: false,
Coupons: e.Info,
})
: that.$.alert(e.Msg);
});
},
@ -1602,13 +1451,29 @@ export default {
};
</script>
<style lang="scss">
<style lang="scss" scoped>
@import "../../styles/_variables";
@import "../../styles/layout.scss";
@import "../../styles/store_themes.scss";
@import "../../styles/store_tpl.scss";
.u-pabtn {
position: static;
}
.m-product-info {
width: auto;
.m-product-price {
display: flex;
justify-content: space-between;
}
}
.inddex-store-container {
padding-bottom: 64px;
}
.inddex-store-container {
.shop-address-content {
display: flex;
@ -1718,6 +1583,7 @@ export default {
height: 30rpx;
font-size: 20rpx;
}
.m-startBox label {
font-size: 20rpx;
}
@ -1725,7 +1591,7 @@ export default {
}
.u-pa .m-product-list {
padding-top: calc(82rpx) !important;
padding-top: calc(90rpx) !important;
}
.uni-comment-date {
@ -1782,4 +1648,8 @@ export default {
width: 182rpx;
height: 182rpx;
}
.u-top-default{
bottom: 150px;
}
</style>