You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

382 lines
11 KiB

3 months ago
<template>
<view class="record">
<!-- #ifdef H5 -->
<view class="top_nav acea-row row-center-wrapper">
<view class="navCon acea-row row-middle">
<view class="text" :class="active == 0 ? 'on' : ''" @click="switchTab(0)">购买记录</view>
<view class="text" :class="active == 1 ? 'on2' : ''" @click="switchTab(1)">浏览记录</view>
</view>
</view>
<view class="search acea-row row-center row-middle">
<input type="text" v-model="keywords" class="search_input" placeholder="搜索商品" placeholder-class="text_gray"
@blur="search()">
</view>
<Loading :loaded="loaded" :loading="loading"></Loading>
<view class="goods_list" v-if="goodsList.length">
<view class="item acea-row" v-for="(item,index) in goodsList" :key="index">
<view class="picture">
<image :src="item.image" mode="aspectFit"></image>
</view>
<view class="goods_info acea-row row-column row-between">
<view class="name line2">{{item.store_name}}</view>
<view class="stork acea-row row-between">
<text>库存 {{item.stock}}</text>
<text>销量 {{item.sales}}</text>
<text class="pushFn" @click="pushFn(item)">推送</text>
</view>
</view>
<view class="price_info acea-row row-column row-between">
<text class="price">{{item.price}}</text>
</view>
</view>
</view>
<view class="empty-box" v-else>
<image src="../static/shop_record.png" v-if="active == 0"></image>
<image src="../static/view_record.png" v-if="active == 1"></image>
<view>暂无 {{active ? '浏览' : '购买'}}记录</view>
</view>
<view class="ht100"></view>
<tNav :active="2"></tNav>
<!-- #endif -->
</view>
</template>
<script>
// #ifdef H5
import tNav from '../components/tabNav.vue';
import Loading from '@/components/Loading/index.vue';
import {
initWxConfig,
initAgentConfig,
} from "@/libs/work.js";
import {
getWorkCartList,
getWorkVisitInfo,
getWorkAgentConfig
} from "@/api/work.js"
// import {
// wx
// } from "@/utils/agent.js"
export default {
data() {
return {
keywords: "",
userId: "",
loaded: false,
loading: false, //是否加载中
loadend: false, //是否加载完毕
loadTitle: '加载更多', //提示语
goodsList: [], //商品数组
active: 0, //选项状态
page: 1,
limit: 10,
}
},
components: {
Loading,
tNav
},
onLoad() {
this.userId = this.$Cache.get('work_user_id')
this.getList();
getWorkAgentConfig(window.location.href.split('#')[0]).then(res => {
if (/(iPhone|iPad|iPod|iOS|macintosh|mac os x)/i.test(navigator.userAgent)){
wx.agentConfig({
corpid: res.data.corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致
agentid: res.data.agentid, // 必填,企业微信的应用id (e.g. 1000247)
timestamp: res.data.timestamp, // 必填,生成签名的时间戳
nonceStr: res.data.nonceStr, // 必填,生成签名的随机串
signature: res.data.signature, // 必填,签名,见附录-JS-SDK使用权限签名算法
jsApiList: ["getCurExternalContact", "getCurExternalChat", "getContext", "chooseImage", "sendChatMessage", ],
success: function(res) {
// console.log(res);
},
});
}else{
jWeixin.agentConfig({
corpid: res.data.corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致
agentid: res.data.agentid, // 必填,企业微信的应用id (e.g. 1000247)
timestamp: res.data.timestamp, // 必填,生成签名的时间戳
nonceStr: res.data.nonceStr, // 必填,生成签名的随机串
signature: res.data.signature, // 必填,签名,见附录-JS-SDK使用权限签名算法
jsApiList: ["getCurExternalContact", "getCurExternalChat", "getContext", "chooseImage", "sendChatMessage", ],
success: function(res) {
// console.log(res);
},
});
}
})
},
methods: {
// 推送到商品详情
pushFn(item) {
if (/(iPhone|iPad|iPod|iOS|macintosh|mac os x)/i.test(navigator.userAgent)){
wx.invoke('sendChatMessage', {
msgtype: "news", //消息类型,必填
enterChat: true, //为true时表示发送完成之后顺便进入会话,仅移动端3.1.10及以上版本支持该字段
news: {
link: location.protocol + '://' + location.host + "/pages/goods_details/index?id=" + item.id, //H5消息页面url 必填
title: item.store_name, //H5消息标题
desc: "", //H5消息摘要
imgUrl: item.image, //H5消息封面图片URL
},
}, function(res) {
if (res.err_msg == 'sendChatMessage:ok') {
console.log('发送成功', res)
//发送成功
} else {
//发送失败
console.log('发送失败', res)
}
})
}else{
jWeixin.invoke('sendChatMessage', {
msgtype: "news", //消息类型,必填
enterChat: true, //为true时表示发送完成之后顺便进入会话,仅移动端3.1.10及以上版本支持该字段
news: {
link: location.protocol + '://' + location.host + "/pages/goods_details/index?id=" + item.id, //H5消息页面url 必填
title: item.store_name, //H5消息标题
desc: "", //H5消息摘要
imgUrl: item.image, //H5消息封面图片URL
},
}, function(res) {
if (res.err_msg == 'sendChatMessage:ok') {
console.log('发送成功', res)
//发送成功
} else {
//发送失败
console.log('发送失败', res)
}
})
}
},
switchTab(index) {
if (this.loading) return
if (index === this.active) return;
this.active = index;
this.loadend = false;
this.page = 1;
this.$set(this, 'goodsList', []);
this.getList();
},
search() {
if (this.loading) return
this.loadend = false;
this.page = 1;
this.$set(this, 'goodsList', []);
this.getList();
},
getList() {
let that = this;
let params = {};
if (that.loadend) return;
if (that.loading) return;
that.loading = true;
that.loadTitle = '加载更多';
params = {
userid: that.userId,
store_name: that.keywords,
page: that.page,
limit: that.limit,
}
if (that.active == 0) {
getWorkCartList(params).then(res => {
let list = res.data || [];
let loadend = list.length < that.limit;
that.goodsList = that.$util.SplitArray(list, that.goodsList);
that.$set(that, 'goodsList', that.goodsList);
that.loadend = loadend;
that.loading = false;
that.loadTitle = loadend ? '没有更多内容啦~' : '加载更多';
that.page = that.page + 1;
}).catch(err => {
return that.$util.Tips({
title: err
});
})
} else if (that.active == 1) {
getWorkVisitInfo(params).then(res => {
let list = res.data || [];
let loadend = list.length < that.limit;
that.goodsList = that.$util.SplitArray(list, that.goodsList);
that.$set(that, 'goodsList', that.goodsList);
that.loadend = loadend;
that.loading = false;
that.loadTitle = loadend ? '没有更多内容啦~' : '加载更多';
that.page = that.page + 1;
}).catch(err => {
return that.$util.Tips({
title: err
});
})
}
}
},
onReachBottom: function() {
this.getList();
}
}
// #endif
</script>
<style lang="scss">
/* #ifdef H5 */
.top_nav {
background: #FFFFFF;
font-size: 28rpx;
// font-family: PingFangSC-Regular, PingFang SC;
// font-weight: 400;
color: #000000;
.navCon{
width: 440rpx;
height: 60rpx;
background: #F4FAFF;
border: 1rpx solid #1A90FE;
border-radius: 30rpx;
margin: 30rpx 0 10rpx 0;
color: #1A90FE;
.text{
width: 50%;
height: 60rpx;
line-height: 60rpx;
text-align: center;
}
.on {
color: #fff;
background-color: #1A90FE;
border-radius: 30rpx 0 0 30rpx;
}
.on2{
color: #fff;
background-color: #1A90FE;
border-radius: 0 30rpx 30rpx 0;
}
}
}
.search {
height: 100rpx;
background: #FFFFFF;
.search_input {
width: 690rpx;
height: 60rpx;
background: #F5F6F9;
border-radius: 34rpx;
padding-left: 20rpx;
}
}
.text_gray {
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #CCCCCC;
text-align: center;
}
.goods_list {
.item {
position: relative;
width: 710rpx;
height: 192rpx;
border-radius: 12rpx;
margin: 20rpx auto 0;
padding: 26rpx 24rpx 26rpx;
box-sizing: border-box;
background: #FFFFFF;
.pushFn {
position: absolute;
bottom: 28rpx;
right: 24rpx;
width: 112rpx;
height: 52rpx;
border-radius: 28rpx;
border: 2rpx solid #1890FF;
font-size: 26rpx;
font-weight: 400;
line-height: 52rpx;
text-align: center;
color: #1890FF;
}
.picture {
width: 140rpx;
height: 140rpx;
border-radius: 8rpx;
image {
width: 100%;
height: 100%;
}
}
.goods_info {
width: 280rpx;
margin-left: 22rpx;
.name {
height: 80rpx;
line-height: 40rpx;
font-size: 28rpx;
color: rgba(0, 0, 0, 0.85);
}
.stork {
font-size: 24rpx;
font-weight: 400;
color: #666666;
}
}
.price_info {
margin-left: 80rpx;
.price {
font-size: 28rpx;
font-weight: 500;
color: #E93323;
}
.send_btn {
width: 112rpx;
height: 52rpx;
display: inline-block;
margin-left: 20rpx;
line-height: 52rpx;
text-align: center;
border-radius: 28rpx;
border: 1px solid #1890FF;
font-size: 26rpx;
font-weight: 400;
color: #1890FF;
}
}
}
}
.empty-box {
height: 600rpx;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
image {
width: 390rpx;
height: 264rpx;
}
}
.ht100 {
height: 120rpx;
}
/* #endif */
</style>