java-mall-app/pagesub/westore/index.vue
2024-11-01 16:35:40 +08:00

580 lines
18 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view>
<scroll-view v-if="true" scroll-y="true" class="m-orderlist" @scrolltolower="scrollbottom">
<!-- banner -->
<view class="sstouch-main-layout fixed-Width">
<view id="store-wrapper" class="sstouch-store-con">
<!-- banner -->
<view class="sstouch-store-top" id="store_banner">
<!-- banner tpl -->
<view class="store-top-bg"><view class="img" nc_type="store_banner_img" style="background-image:url(https://test.lancerdt.com/wap/images/storebg.png);"></view></view>
<view class="store-top-mask"></view>
<view @click='previewImg'><image id="qrcode" :src="store_data.invite_info.qrcode" class="store-avatar" /></view>
<view class="store-name">
{{store_data.westore_name}}
</view>
<view class="store-favorate">
<label class="num">
<em id="store_favornum">
{{store_data.product_num}}</em>
<p>{{__('商品')}}</p>
</label>
</view>
</view>
</view>
</view>
<view class="goods-search-list-nav posr" style="top:0px;">
<view id="nav_ul">
<view><label :class="['nav-a', (post.sidx=='' || post.sidx=='product_unit_price') ? 'current' : '']" id="sort_default" @click="sortOpt">{{__('综合排序~')}}<view class="aa"></view></label></view>
<view><label :class="['nav-a', post.sidx=='product_sale_num' ? 'current' : '']" @click="sealnum">{{__('销量')}}</label></view>
<view><label :class="['nav-a', post.sidx=='product_favorite_num' ? 'current' : '']" @click="favoritenum">{{__('人气')}}</label></view>
</view>
<view class="browse-mode"><label id="show_style" @click.stop="viewType"><view :class="viewtype==0? 'browse-grid' : 'browse-list'"></view></label></view>
</view>
<view id="sort_inner" :class="['goods-sort-inner', isInnerFlag ? '' : 'hide']" style="position:static">
<view><label :class="post.sidx=='' ? 'cur' : ''" @click="sortDefault">{{__('综合排序~')}}<view class="aa"></view></label></view>
<view><label :class="post.sidx=='product_unit_price' && post.sord=='DESC' ? 'cur' : ''" @click="pdprice">{{__('价格从高到低')}}<view class="aa"></view></label></view>
<view><label :class="post.sidx=='product_unit_price' && post.sord=='ASC' ? 'cur' : ''" @click="upPrice">{{__('价格从低到高')}}<view class="aa"></view></label></view>
</view>
<view class="sstouch-main-layout mb20" style="margin-top:0;">
<view id="product_list" :class="viewtype==0? 'grid' : 'list'">
<view class="goods-secrch-list">
<view class="goods-item" :item_id="item['item_color'][0].item_id" :data-item_id="item['item_id']" :data-product_id="item['product_id']" v-for="(item, i) in store_data.items" :key="i" @longpress="modify">
<view class="goods-pic">
<navigator :url="'/pages/product/detail?pid=' + item['item_id']" class="a" >
<image :src="item.product_image" />
</navigator>
</view>
<dl class="goods-info">
<dt class="goodsName">
<navigator :url="'/pages/product/detail?pid=' + item['item_id']" class="a">
<h4>{{item.product_name}}</h4>
</navigator>
</dt>
<p><view class="goods-price">{{__('¥')}}<label>{{item.product_unit_price}}</label></view> </p>
</dl>
</view>
</view>
</view>
</view>
<view class="m-loading-box">
<block v-if="(ispage)">
<view class="u-loadmore">
<view class="u-loading"></view>
<text class="u-loadmore-tips">{{__('正在加载')}}</text>
</view>
</block>
<block v-else>
<view class="u-loadmore u-loadmore-line">
<text class="u-loadmore-tips">{{__('没有更多数据啦!')}}</text>
</view>
</block>
</view>
</scroll-view>
<!-- #ifdef APP-PLUS -->
<share-box-app :shareDataDefault="shareData" ref="shareBoxApp"></share-box-app>
<!-- #endif -->
<!-- #ifdef MP-WEIXIN -->
<share-box-mp :shareDataDefault="shareData" @cancelShare="cancelShare" @showCodeImg="showCodeImg" @shareQRCode="shareQRCode"
@saveImg="saveImg" ref="shareBoxMp"></share-box-mp>
<!-- #endif -->
</view>
</template>
<script>
import shareBoxMp from '../../components/share-box-mp.vue'
import shareBoxApp from '../../components/share-box-app.vue'
import {
mapState,
mapMutations
} from 'vuex'
export default {
data() {
return {
options:{},
isStoreFlag: 0,
viewtype: 1,
pdlist: [],
fglist: [],
sort: 2,
flag: true,
ispage: true,
scposition: "",
istop: false,
isdata: false,
isVirtual: false,
isInnerFlag: false,
post: {
sidx: '',
sord: '',
isnew: false,
keywords: "",
store_category_ids: 0,
page: 1,
wd_id: null
},
store_data:{invite_info:{}},
PageQRCodeInfo: {
Path: "",
IsShare: false,
IsShareBox: false,
IsJT: false
},
shareData:{}
}
},
computed: mapState(['Config', 'StateCode', 'notice', 'plantformInfo', 'shopInfo', 'userInfo', 'hasLogin']),
components: {
shareBoxMp,
shareBoxApp
},
onLoad(options) {
uni.setNavigationBarTitle({
title:this.__('微小店')
});
var that = this;
if (options.scene) {
var scene = decodeURIComponent(options.scene);
var opts = {};
opts = that.$.parse_str(scene);
options = Object.assign(options, opts);
}
this.setData({
options:options,
isStoreFlag: options.is_store_flag ? parseInt(options.is_store_flag) : 0
})
this.setData({
post: {
wd_id: options.wd_id || this.userInfo.user_id,
sidx: 'product_sale_num',
sord: 'DESC',
keywords: options.pname,
store_category_ids: options.store_category_id,
category_id: options.category_id,
kind_id: options.kind_id,
page: 1
}
});
this.GetPlist(function() {
that.pdlist.length == 0 ? that.setData({
isdata: false
}) : that.setData({
isdata: true
})
setTimeout(function() {
//初始化微信分享
let $title = that.store_data.westore_name;
let $desc = that.store_data.westore_name;
let $link = that.$.sprintf('%s/h5/pagesub/westore/index?wd_id=%s', that.Config.SiteUrl, that.post.wd_id);
//let $img_url = that.store_data.invite_info.qrcode;
let $img_url = that.userInfo.user_avatar
//初始化微信分享
that.$.wxShare($title, $desc, $link, $img_url)
}, 100);
})
},
onShareAppMessage() {
return {
title: this.store_data.westore_name,
path: "/pagesub/westore/index?wd_id=" + this.post.wd_id
}
},
onBackPress() {
// #ifdef APP-PLUS
if (this.$refs.shareBoxApp.showBoxView) {
this.$refs.shareBoxApp.cancel();
return true;
}
// #endif
// #ifdef MP-WEIXIN
if (this.$refs.shareBoxMp.showBoxView) {
this.$refs.shareBoxMp.cancel();
return true;
}
// #endif
},
onUnload() {
// #ifdef APP-PLUS
if (this.$refs.shareBoxApp.showBoxView) {
this.$refs.shareBoxApp.cancel();
}
// #endif
// #ifdef MP-WEIXIN
if (this.$refs.shareBoxMp.showBoxView) {
this.$refs.shareBoxMp.cancel();
}
// #endif
},
onNavigationBarButtonTap(e) {
var that = this;
if (e.index === 0) {
that.onShareBox(e);
} else {
uni.showToast({
title: this.__("你点了收藏按钮"),
icon: "none"
})
}
},
methods: {
...mapMutations(['login', 'logout', 'getPlantformInfo', 'forceUserInfo', 'getUserInfo']),
viewType: function(e) {
this.viewtype == 0 ? this.setData({
viewtype: 1
}) : this.setData({
viewtype: 0
})
},
/**
* 销量排序
*/
sortOpt: function() {
this.setData({
isInnerFlag:true
})
},
/**
* 销量排序
*/
sortDefault: function() {
this.setData({
isInnerFlag:false
})
var post = this.post
post.sidx = '';
post.sord = '';
post.page = 1;
this.setData({
pdlist: [],
post: post
}), this.GetPlist()
},
/**
* 销量排序
*/
sealnum: function() {
this.setData({
isInnerFlag:false
})
var post = this.post
post.sidx = 'product_sale_num';
post.sord = 'DESC';
post.page = 1;
this.setData({
pdlist: [],
post: post
}), this.GetPlist()
},
/**
* 销量排序
*/
favoritenum: function() {
this.setData({
isInnerFlag:false
})
var post = this.post
post.sidx = 'product_favorite_num';
post.sord = 'DESC';
post.page = 1;
this.setData({
pdlist: [],
post: post
}), this.GetPlist()
},
/**
* 新品排序
*/
newpd: function() {
this.setData({
isInnerFlag:false
})
var post = this.post
post.sidx = 'product_add_time';
post.sord = 'DESC';
post.page = 1;
this.setData({
pdlist: [],
post: post
}), this.GetPlist()
},
/**
* 价格排序
*/
pdprice: function() {
this.setData({
isInnerFlag:false
})
var post = this.post
post.sidx = 'product_unit_price';
post.sord = this.sort == 1 ? 'DESC' : 'ASC';
post.page = 1;
this.sort == 1 ? this.setData({
sort: 2,
pdlist: [],
post: post
}) : this.setData({
pdlist: [],
sort: 1,
post: post
});
this.GetPlist()
},
/**
* 价格排序
*/
upPrice: function() {
this.setData({
isInnerFlag:false
})
var post = this.post
post.sidx = 'product_unit_price';
post.sord = this.sort == 1 ? 'DESC' : 'ASC';
post.page = 1;
this.sort == 1 ? this.setData({
sort: 2,
pdlist: [],
post: post
}) : this.setData({
pdlist: [],
sort: 1,
post: post
});
this.GetPlist()
},
scrollbottom: function(e) {
if (this.flag) {
var that = this;
that.setData({
flag: false
}), clearTimeout(n);
var post = this.post
post.sidx = 'product_unit_price';
post.sord = this.sort == 1 ? 'DESC' : 'ASC';
post.page = parseInt(that.post.page) + 1;
var n = setTimeout(function() {
that.setData({
post: post
}), that.GetPlist()
},
500)
}
},
/*
* 读取商品数据
*/
GetPlist: function(callback) {
this.setData({
flag: false
});
var that = this;
let params = that.post;
params.u_id = that.post.wd_id;
// #ifdef H5
params['poster_type'] = 1
// #endif
// #ifdef MP-WEIXIN
params['poster_type'] = 2
// #endif
// #ifdef APP-PLUS
params['poster_type'] = 1
// #endif
that.$.request({
url: this.Config.URL.user.direct_store_index,
data: params,
/* ajaxCache: {
timeout: this.Config.CACHE_EXPIRE
}, */
success: function(data, status, msg, code) {
that.$.setNavigationBarTitle({
title: data.westore_name
});
that.setData({
store_data: data
})
if (data.page >= data.total) {
that.setData({
flag: false,
ispage: false,
pdlist: that.pdlist.concat(data.items)
})
} else {
that.setData({
flag: true,
ispage: true,
pdlist: that.pdlist.concat(data.items)
})
}
}
});
},
modify: function(e) {
var that = this;
e.currentTarget.dataset.item_id;
let itemList = ['删除']
uni.showActionSheet({
itemList: itemList,
success: (res) => {
if (res.tapIndex == 0)
{
that.removeFromWestore(e);
}
else
{
}
}
})
},
removeFromWestore: function(e) {
var that = this;
var params = {
product_id:e.currentTarget.dataset.product_id
};
that.$.request({
url: this.Config.URL.user.direct_store_remove,
data: params,
success: function(data, status, msg, code) {
if(status == 200)
{
that.$.alert(msg);
that.GetPlist()
}
else
{
that.$.alert(msg);
}
}
});
},
onShareBox: function(e) {
let that = this;
var $href = that.$.sprintf('%s/tmpl/member/directseller_store.html?u_id=%d&FX=%d', this.Config.WapSiteUrl, this.post.wd_id, this.userInfo
.user_id);
$href = that.$.sprintf('%s/h5/pagesub/westore/index?wd_id=%s&uid=%d', that.Config.SiteUrl, this.post.wd_id, this.userInfo.user_id);
// 如允许点击超链接跳转则应该打开一个新页面并传入href由新页面内嵌webview组件负责显示该链接内容
// #ifdef APP-PLUS
// #endif
// #ifdef MP-WEIXIN
$href = "/pagesub/westore/index?wd_id=" + this.post.wd_id;
// #endif
this.setData({
shareData: {
shareTitle: this.store_data.westore_name,
shareText: this.store_data.westore_name,
href: $href,
image: this.store_data.invite_info.qrcode
}
});
// 如允许点击超链接跳转则应该打开一个新页面并传入href由新页面内嵌webview组件负责显示该链接内容
// #ifdef APP-PLUS
this.$refs.shareBoxApp.show();
// #endif
// #ifdef MP-WEIXIN
this.$refs.shareBoxMp.show();
// #endif
},
returnTop: function() {
this.setData({
scposition: 0
})
},
previewImg: function() {
let that = this;
that.$.previewImage({
current: that.store_data.invite_info.qrcode,
urls: [that.store_data.invite_info.qrcode]
})
}
}
}
</script>
<style lang="scss">
@import "../../styles/base.scss";
@import "../../styles/sstouch_products_list.scss";
@import "../../styles/sstouch_common.scss";
@import "../../styles/sstouch_directseller_store.scss";
.u-loadmore
{
width: 100%;
}
</style>