<template>
|
<div id="comprice">
|
<div v-if="loading" class="loading">加载中...</div>
|
<image class="top-content"
|
src="https://yanfeiobpub.obs.cn-east-3.myhuaweicloud.com/dfg/compareprice_topimg.png"></image>
|
<div class="main-content">
|
<div class="mid-content">
|
<div class="mid-content-con">
|
<div class="content-tip">
|
<span @click="clear()">
|
清空
|
</span>
|
<span>
|
|
|
</span>
|
<span @click="fromcopy()">
|
粘贴
|
</span>
|
</div>
|
|
<div class="content-txtarea">
|
<textarea enterkeyhint="search" onkeydown="onTextareaKeyDown()" class="txtarea"
|
v-model="txtareatxt" :placeholder='txtplaceholder'></textarea>
|
<!-- <span class="copytxt" @click="fromcopy()">粘贴</span> -->
|
</div>
|
<div class="mid-button-content">
|
<div class="mid-button-content-img" @click="search()">
|
<image style="width: 100%; height: 2.8rem;"
|
src="https://yanfeiobpub.obs.cn-east-3.myhuaweicloud.com/dfg/compareprice_search.png">
|
</image>
|
</div>
|
</div>
|
</div>
|
<div class="cont-title">
|
{{showTxt}}
|
</div>
|
<div v-if="goodsItem.length==0" class="mid-content-none">
|
暂无数据~
|
</div>
|
<div v-else class="ulist">
|
<div class="plat-div" v-if="issearch">
|
<span>平台:</span>
|
<div @click="changeplat(item)" :class="item.choose?'plat-ite':'plat-unite'"
|
v-for="item in plat">
|
<span class="plat-span" v-if="item.choose">
|
√{{item.platname}}
|
</span>
|
<span class="plat-span" v-else>
|
{{item.platname}}
|
</span>
|
</div>
|
|
</div>
|
<a v-for="g in goodsItem" :key="g.id" @click="handleCdetailFavorite(g)">
|
<div class="detail___3ZQFW">
|
<img :src="g.mainPic" class="fadeIn picture___r4a1j">
|
<div class="choiceInfo___3ZuEa">
|
<div class="other___2Mv8Q">
|
<h2>
|
<div class="goodtitle">
|
<img :class="g.sourceType=='dy'?'shoplabel___dy':'shoplabel___1_Nv0'" :src="g.labelImg">
|
{{g.title}}
|
</div>
|
</h2>
|
<div v-if="g.couponPrice" class="coupon___2SVZi"
|
style="float: left; margin-right:10px"><span>券</span>{{g.couponPrice}}元</div>
|
<div v-if="isshowfan" class="coupon___2SVZi" style="background: #A429F3;"><span
|
style="color: #A429F3;">返</span>{{g.fanli}}元</div>
|
|
</div>
|
<div class="price___dfbCD">
|
<span class="price_font"
|
style="font-size: .66rem; font-weight: 500;">到手价</span><span
|
style="padding: 0;">¥</span>
|
<span
|
style="padding: 0 .08rem 0 0; margin-right: 0.25rem; font-size: 0.85rem;">{{g.actualPrice}}</span>
|
<span v-if="g.sourceType=='tb'||g.sourceType=='tm'" style="text-decoration:line-through;font-size: .66rem;
|
color: #787070">¥{{g.originalPrice}}</span>
|
</div>
|
<!-- <div class="operation___3KazI">
|
<button>立即购买</button>
|
</div> -->
|
<div class="showshop">月销{{g.monthSales}}</div>
|
<div class="showshop">{{g.shopName}}</div>
|
</div>
|
</div>
|
</a>
|
</div>
|
|
</div>
|
</div>
|
|
</div>
|
</template>
|
|
<script>
|
import api from '@/common/tk_api.js'
|
export default {
|
data() {
|
return {
|
api,
|
goodsItem: [],
|
loading: false,
|
isshowfan: false,
|
plat: [{
|
'platname': '淘宝',
|
'plat': 'tb',
|
'choose': true
|
},
|
{
|
'platname': '京东',
|
'plat': 'jd',
|
'choose': true
|
},
|
{
|
'platname': '抖音',
|
'plat': 'dy',
|
'choose': true
|
},
|
{
|
'platname': '拼多多',
|
'plat': 'pdd',
|
'choose': true
|
},
|
],
|
txtareatxt: '',
|
issearch: false,
|
showTxt: '猜你喜欢',
|
txtplaceholder: '1、支持淘宝、天猫、京东、抖音、拼多多等平台\r\n2、请粘贴您需要转换的分享文案/链接和口令/商品链接;不支持券链接'
|
}
|
},
|
onShareAppMessage: function() {
|
return {
|
title: '搜优惠券',
|
path: '/pages/comparePrice/index',
|
// promise
|
}
|
},
|
onShareTimeline() {
|
return {
|
title: '搜优惠券',
|
path: '/pages/comparePrice/index',
|
}
|
},
|
onLoad(options) {
|
var postData = {
|
postData: 'OAID',
|
deviceValue: ''
|
};
|
this.likeDataGet(postData);
|
},
|
methods: {
|
changeplat(item) {
|
var index = this.plat.findIndex(i => i.plat == item.plat);
|
item.choose = !item.choose;
|
this.plat[index] = item;
|
this.search();
|
},
|
//查询
|
search() {
|
if (this.txtareatxt == '') {
|
return;
|
}
|
this.showTxt = "查询结果";
|
this.goodsItem = [];
|
var that = this;
|
var postData = {
|
content: that.txtareatxt
|
};
|
uni.showLoading({
|
title: '加载中',
|
mask: true
|
});
|
//查看不看的平台
|
var cancelPlat = this.plat.filter(i => !i.choose);
|
if (cancelPlat && cancelPlat.length > 0) {
|
for (var i = 0; i < cancelPlat.length; i++) {
|
switch (cancelPlat[i].plat) {
|
case "tb":
|
postData.exclude_tb = 1;
|
break;
|
case "jd":
|
postData.exclude_jd = 1;
|
break;
|
case "pdd":
|
postData.exclude_pdd = 1;
|
break;
|
case "dy":
|
postData.exclude_dy = 1;
|
break;
|
}
|
}
|
}
|
|
this.api.post('/api/taoke/compare_good', postData).then(e => {
|
uni.hideLoading();
|
if (e.code != 0) {
|
uni.showToast({
|
title: e.data.msg,
|
icon: 'none'
|
});
|
return;
|
}
|
|
that.issearch = true;
|
if (e.code == 0) {
|
that.goodsItem = e.data.list;
|
}
|
}).catch(function(err) {
|
console.log(err);
|
})
|
},
|
Infoformat(info) {
|
info = info.replace(/\%/g, "%25")
|
info = info.replace(/\#/g, "%23")
|
info = info.replace(/\&/g, "%26")
|
info = info.replace(/\?/g, "%3F")
|
return info;
|
},
|
handleCdetailFavorite(item) {
|
//var itemsStr = this.Infoformat(JSON.stringify(item));
|
var type = 1;
|
switch (item.sourceType) {
|
case "jd":
|
type = 2;
|
break;
|
case "dy":
|
type = 3;
|
break;
|
case "pdd":
|
type=4;
|
break;
|
default:
|
break;
|
}
|
var itemsStr=encodeURIComponent(JSON.stringify(item));
|
console.log('/pages/goodDetail/index?type='+type+'&id=' + item.goodsId + '&info=' + itemsStr);
|
uni.navigateTo({
|
url: '/pages/goodDetail/index?type='+type+'&id=' + item.goodsId + '&info=' + itemsStr
|
});
|
},
|
likeDataGet(postData) {
|
var _this = this;
|
var data = {
|
deviceType: postData.postData,
|
deviceValue: postData.deviceValue,
|
pageId: 1,
|
pageSize: 10,
|
type: 1
|
};
|
|
uni.showLoading({
|
title: '加载中',
|
mask: true
|
});
|
this.api.post('/api/taoke/get_goods_things', data).then(e => {
|
uni.hideLoading();
|
if (e.code != 0) {
|
uni.showToast({
|
title: e.data.msg,
|
icon: 'none'
|
});
|
return;
|
}
|
|
_this.goodsItem = e.data.list;
|
}).catch(function(err) {
|
console.log(err);
|
})
|
},
|
clear() {
|
this.txtareatxt = '';
|
},
|
fromcopy() {
|
var that = this;
|
uni.getClipboardData({
|
success: function(res) {
|
if (res && res.data && res.data.length > 0) {
|
that.txtareatxt = res.data;
|
}
|
}
|
});
|
}
|
}
|
}
|
</script>
|
|
<style>
|
.top-content {
|
width: 100%;
|
position: absolute;
|
top: 0;
|
left: 0;
|
}
|
|
.mid-content {
|
width: 95%;
|
margin: 0 auto;
|
margin-top: 13.3rem;
|
position: relative;
|
}
|
|
.mid-content-con {
|
width: 100%;
|
background: #fff;
|
border-radius: .2rem;
|
margin-bottom: 0.2rem;
|
padding-top: .2rem;
|
}
|
|
.mid-content-list {
|
width: 100%;
|
background: #fff;
|
border-radius: .5rem;
|
height: 30rem;
|
}
|
|
.content-tip {
|
width: 88%;
|
font-size: 13px;
|
margin: 0 auto;
|
margin-bottom: 0.2rem;
|
font-weight: 500;
|
color: #958d8d;
|
text-align: right;
|
padding-right: 0.1rem;
|
}
|
|
.copytxt {
|
font-size: 13px;
|
position: absolute;
|
bottom: 0.1rem;
|
right: 0.1rem;
|
color: #958d8d;
|
}
|
|
.content-txtarea {
|
width: 88%;
|
margin: 0 auto;
|
height: 8.2rem;
|
position: relative;
|
}
|
|
.txtarea {
|
width: 100%;
|
height: 99%;
|
border: 0px;
|
background: #f5f5f9;
|
resize: none;
|
}
|
|
.mid-button-content {
|
display: flex;
|
flex-direction: row;
|
width: 100%;
|
justify-content: center;
|
margin-top: 0.2rem;
|
}
|
|
.mid-button-content-img {
|
width: 83%;
|
}
|
|
.cont-title {
|
margin: 0 0 0.2rem 0.2rem;
|
font-weight: 600;
|
font-size: .8rem;
|
}
|
|
.mid-content-none {
|
width: 100%;
|
width: 100%;
|
text-align: center;
|
margin: 0 auto;
|
line-height: 1.2rem;
|
color: #a69b9b;
|
font-size: 14px;
|
}
|
|
.ulist>a {
|
display: block;
|
text-decoration: none;
|
margin-bottom: 0.15rem;
|
}
|
|
.ulist {
|
display: block;
|
}
|
|
.detail___3ZQFW {
|
background-color: #fff;
|
border-radius: .16rem;
|
padding: .1rem;
|
position: relative;
|
box-sizing: border-box;
|
display: flex;
|
justify-content: space-between;
|
margin-bottom: 0.3rem;
|
}
|
|
.picture___r4a1j {
|
height: 5.8rem;
|
width: 26%;
|
border-radius: .1rem;
|
left: .1rem;
|
top: .1rem;
|
}
|
|
.choiceInfo___3ZuEa {
|
-webkit-justify-content: space-between;
|
-ms-flex-pack: justify;
|
justify-content: space-between;
|
width: 72%;
|
overflow: hidden;
|
-webkit-align-items: flex-start;
|
-ms-flex-align: start;
|
align-items: flex-start;
|
position: relative;
|
display: flex;
|
flex-wrap: nowrap;
|
flex-direction: column;
|
}
|
|
.other___2Mv8Q h2 span {
|
width: calc(100vw - 3.6rem);
|
overflow: hidden;
|
white-space: nowrap;
|
text-overflow: ellipsis;
|
}
|
|
.other___2Mv8Q h2 {
|
justify-content: flex-start;
|
padding: 0;
|
margin: 0;
|
height: .85rem;
|
font-size: .28rem;
|
font-family: PingFangSC-Regular, PingFang SC;
|
font-weight: 400;
|
line-height: .4rem;
|
color: #333;
|
display: flex;
|
flex-direction: row;
|
flex-wrap: nowrap;
|
width: 100%;
|
}
|
|
.shoplabel___1_Nv0 img {
|
margin-right: .05rem;
|
display: block;
|
height: 100%;
|
font-size: 100%;
|
font: inherit;
|
vertical-align: baseline;
|
}
|
|
.shoplabel___dy {
|
height: .8rem;
|
width: .86rem;
|
display: inline-block;
|
position: relative;
|
top: .05rem;
|
}
|
|
.shoplabel___1_Nv0 {
|
height: .8rem;
|
width: 1.46rem;
|
display: inline-block;
|
position: relative;
|
top: .05rem;
|
}
|
|
.coupon___2SVZi span {
|
display: inline-block;
|
font-size: .18rem;
|
font-family: PingFangSC-Regular, PingFang SC;
|
font-weight: 400;
|
color: #ff5351;
|
line-height: .20rem;
|
padding: .02rem .04rem;
|
background: #fff;
|
border-radius: .02rem 0 0 .02rem;
|
text-align: center;
|
margin-right: .06rem;
|
}
|
|
.coupon___2SVZi {
|
margin-top: 3px;
|
height: 0.65rem;
|
background: linear-gradient(90deg, #ff8873, #ff4f4f);
|
border-radius: .15rem;
|
display: inline-block;
|
line-height: .28rem;
|
padding: 0 .2rem 0 .2rem;
|
font-size: 0.56rem;
|
font-family: PingFangSC-Regular, PingFang SC;
|
color: #fff;
|
display: -webkit-flex;
|
display: -ms-flexbox;
|
display: flex;
|
-webkit-align-items: center;
|
-ms-flex-align: center;
|
align-items: center;
|
width: -webkit-max-content;
|
width: -moz-max-content;
|
width: max-content;
|
margin-bottom: 0.23rem;
|
}
|
|
.price___dfbCD u {
|
text-decoration: line-through;
|
width: .64rem;
|
font-size: .2rem;
|
color: #a7a7a7;
|
}
|
|
.price___dfbCD span {
|
font-size: .32rem;
|
line-height: .34rem;
|
padding: 0 .08rem 0 .04rem;
|
font-weight: 700;
|
}
|
|
.price___dfbCD {
|
font-family: PingFangSC-Regular, PingFang SC;
|
font-weight: 500;
|
color: #fe3738;
|
font-size: .22rem;
|
justify-content: flex-start;
|
margin: .04rem 0 .1rem;
|
-webkit-align-items: baseline;
|
-ms-flex-align: baseline;
|
align-items: baseline;
|
}
|
|
.detail___3ZQFW .choiceInfo___3ZuEa .operation___3KazI button {
|
border: none;
|
width: 1.36rem;
|
height: .4rem;
|
line-height: .4rem;
|
background: linear-gradient(270deg, #F7AD38, #F7AD38);
|
border-radius: .2rem;
|
text-align: center;
|
font-size: .22rem;
|
font-family: PingFangSC-Medium, PingFang SC;
|
font-weight: 500;
|
color: #fff;
|
line-height: .32rem;
|
}
|
|
.detail___3ZQFW .choiceInfo___3ZuEa .price___dfbCD {
|
|
-webkit-justify-content: flex-start;
|
-ms-flex-pack: start;
|
justify-content: flex-start;
|
-webkit-align-items: baseline;
|
-ms-flex-align: baseline;
|
align-items: baseline;
|
font-size: .74rem;
|
font-family: PingFangSC-Medium, PingFang SC;
|
font-weight: 500;
|
color: #fe3738;
|
line-height: .54rem;
|
}
|
|
.detail___3ZQFW .choiceInfo___3ZuEa .operation___3KazI {
|
position: absolute;
|
right: .1rem;
|
bottom: .06rem;
|
display: flex;
|
flex-direction: column;
|
flex-wrap: nowrap;
|
}
|
|
.loading {
|
display: flex;
|
position: fixed;
|
width: 100vw;
|
height: 100vh;
|
background: rgb(0 0 0 / 67%);
|
top: 0;
|
left: 0;
|
z-index: 10;
|
justify-content: center;
|
align-items: center;
|
font-size: .35rem;
|
color: #fff;
|
}
|
|
.showshop {
|
font-size: .66rem;
|
color: #787070;
|
}
|
|
.goodtitle {
|
overflow: hidden;
|
text-overflow: ellipsis;
|
display: -webkit-box;
|
-webkit-line-clamp: 2;
|
-webkit-box-orient: vertical;
|
font-size: 0.85rem;
|
}
|
|
.price_font {
|
font-size: .26rem;
|
color: #787070;
|
margin-right: 0.25rem;
|
}
|
|
.plat-div {
|
font-size: 0.8rem;
|
padding: 0.2rem;
|
background: #fff;
|
margin-bottom: 0.2rem;
|
display: flex;
|
border-radius: .16rem;
|
align-items: center;
|
}
|
|
.plat-ite {
|
width: 20%;
|
text-align: center;
|
margin-right: 0.1rem;
|
border-radius: 0.1rem;
|
color: #fff;
|
display: flex;
|
justify-content: center;
|
align-items: center;
|
background: #F79633;
|
padding: 0.1rem;
|
}
|
|
.plat-unite {
|
background: #fff;
|
border: 1px solid #F79633;
|
color: #F79633;
|
|
width: 20%;
|
text-align: center;
|
margin-right: 0.1rem;
|
border-radius: 0.1rem;
|
display: flex;
|
justify-content: center;
|
align-items: center;
|
padding: 0.1rem;
|
}
|
</style>
|