提交udesk方案
parent
246ba9057f
commit
44facf549a
|
@ -81,3 +81,14 @@ export function articleDetail (id) {
|
||||||
method: Method.GET
|
method: Method.GET
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 获取IM接口前缀
|
||||||
|
export function getIMDetail () {
|
||||||
|
return request({
|
||||||
|
url: `${commonUrl}/common/IM`,
|
||||||
|
method: Method.GET
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
|
@ -224,7 +224,7 @@ export default {
|
||||||
count: 1, // 商品数量
|
count: 1, // 商品数量
|
||||||
imgIndex: 0, // 展示图片下标
|
imgIndex: 0, // 展示图片下标
|
||||||
currentSelceted: [], // 当前商品sku
|
currentSelceted: [], // 当前商品sku
|
||||||
imgList: [{}], // 商品图片列表
|
imgList: [{url:''}], // 商品图片列表
|
||||||
skuDetail: this.detail.data, // sku详情
|
skuDetail: this.detail.data, // sku详情
|
||||||
goodsSpecList: this.detail.specs, // 商品spec
|
goodsSpecList: this.detail.specs, // 商品spec
|
||||||
promotionMap: {
|
promotionMap: {
|
||||||
|
|
|
@ -13,14 +13,24 @@
|
||||||
</BreadcrumbItem>
|
</BreadcrumbItem>
|
||||||
</Breadcrumb>
|
</Breadcrumb>
|
||||||
<div class="store-collect">
|
<div class="store-collect">
|
||||||
<span class="mr_10" v-if="goodsMsg.data"><router-link
|
<span class="mr_10" v-if="goodsMsg.data">
|
||||||
:to="'Merchant?id=' + goodsMsg.data.storeId">{{ goodsMsg.data.storeName }}</router-link></span>
|
|
||||||
<span @click="collect"><Icon type="ios-heart"
|
<router-link :to="'Merchant?id=' + goodsMsg.data.storeId">{{ goodsMsg.data.storeName }}</router-link>
|
||||||
:color="storeCollected ? '#ed3f14' : '#666'"/>
|
</span>
|
||||||
{{storeCollected ? '已收藏店铺' : '收藏店铺'}}
|
<span @click="collect">
|
||||||
</span>
|
<Icon type="ios-heart" :color="storeCollected ? '#ed3f14' : '#666'" />
|
||||||
<span @click="connectCs(storeMsg.yzfSign)" class="ml_10"><Icon
|
{{storeCollected ? '已收藏店铺' : '收藏店铺'}}
|
||||||
custom="icomoon icon-customer-service"/>联系客服</span>
|
</span>
|
||||||
|
<!--
|
||||||
|
先看下udesk merchantEuid 是否有值
|
||||||
|
有的话 链接udesk
|
||||||
|
没有的话 显示云智服
|
||||||
|
-->
|
||||||
|
<span class="ml_10" v-if="storeMsg.merchantEuid" @click="IMService()">联系客服</span>
|
||||||
|
|
||||||
|
<span v-else @click="connectCs(storeMsg.yzfSign)" class="ml_10">
|
||||||
|
<Icon custom="icomoon icon-customer-service" />联系客服
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -35,128 +45,158 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Search from '@/components/Search';
|
import Search from "@/components/Search";
|
||||||
import ShopHeader from '@/components/header/ShopHeader';
|
import ShopHeader from "@/components/header/ShopHeader";
|
||||||
import ShowGoods from '@/components/goodsDetail/ShowGoods';
|
import ShowGoods from "@/components/goodsDetail/ShowGoods";
|
||||||
import ShowGoodsDetail from '@/components/goodsDetail/ShowGoodsDetail';
|
import ShowGoodsDetail from "@/components/goodsDetail/ShowGoodsDetail";
|
||||||
import {goodsSkuDetail} from '@/api/goods';
|
import { goodsSkuDetail } from "@/api/goods";
|
||||||
import {cancelCollect, collectGoods, isCollection, getGoodsDistribution} from '@/api/member';
|
import {
|
||||||
import {getDetailById} from '@/api/shopentry'
|
cancelCollect,
|
||||||
|
collectGoods,
|
||||||
|
isCollection,
|
||||||
|
getGoodsDistribution,
|
||||||
|
} from "@/api/member";
|
||||||
|
import { getDetailById } from "@/api/shopentry";
|
||||||
|
import { getIMDetail } from "@/api/common";
|
||||||
export default {
|
export default {
|
||||||
name: 'GoodsDetail',
|
name: "GoodsDetail",
|
||||||
beforeRouteEnter (to, from, next) {
|
beforeRouteEnter(to, from, next) {
|
||||||
window.scrollTo(0, 0);
|
window.scrollTo(0, 0);
|
||||||
next();
|
next();
|
||||||
},
|
},
|
||||||
created () {
|
created() {
|
||||||
this.getGoodsDetail();
|
this.getGoodsDetail();
|
||||||
|
this.getIMDetailMethods();
|
||||||
},
|
},
|
||||||
data () {
|
data() {
|
||||||
return {
|
return {
|
||||||
goodsMsg: {}, // 商品信息
|
goodsMsg: {}, // 商品信息
|
||||||
isLoading: false, // 加载状态
|
isLoading: false, // 加载状态
|
||||||
categoryBar: [], // 分类
|
categoryBar: [], // 分类
|
||||||
storeCollected: false, // 商品收藏
|
storeCollected: false, // 商品收藏
|
||||||
storeMsg: {} // 店铺信息
|
storeMsg: {}, // 店铺信息
|
||||||
|
IMLink: "",
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
// 跳转im客服
|
||||||
|
IMService() {
|
||||||
|
window.open(this.IM);
|
||||||
|
},
|
||||||
|
// 获取im信息
|
||||||
|
async getIMDetailMethods() {
|
||||||
|
let res = await getIMDetail();
|
||||||
|
if (res.success) {
|
||||||
|
this.IMLink = res.result;
|
||||||
|
}
|
||||||
|
},
|
||||||
// 获取商品详情
|
// 获取商品详情
|
||||||
getGoodsDetail () {
|
getGoodsDetail() {
|
||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
const params = this.$route.query;
|
const params = this.$route.query;
|
||||||
// 分销员id
|
// 分销员id
|
||||||
let distributionId = (params && params.distributionId) ? params.distributionId : this.Cookies.getItem('distributionId');
|
let distributionId =
|
||||||
|
params && params.distributionId
|
||||||
|
? params.distributionId
|
||||||
|
: this.Cookies.getItem("distributionId");
|
||||||
// 如果有分销信息
|
// 如果有分销信息
|
||||||
if (distributionId) {
|
if (distributionId) {
|
||||||
console.log(distributionId)
|
console.log(distributionId);
|
||||||
// 先存储
|
// 先存储
|
||||||
this.Cookies.setItem('distributionId', params.distributionId)
|
this.Cookies.setItem("distributionId", params.distributionId);
|
||||||
let _this = this;
|
let _this = this;
|
||||||
// 绑定关系
|
// 绑定关系
|
||||||
getGoodsDistribution(params.distributionId).then(res => {
|
getGoodsDistribution(params.distributionId).then((res) => {
|
||||||
// 绑定成功,则清除关系
|
// 绑定成功,则清除关系
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
_this.Cookies.removeItem('distributionId');
|
_this.Cookies.removeItem("distributionId");
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
goodsSkuDetail(params).then((res) => {
|
goodsSkuDetail(params)
|
||||||
this.isLoading = false;
|
.then((res) => {
|
||||||
if (res.success) {
|
this.isLoading = false;
|
||||||
const result = res.result;
|
if (res.success) {
|
||||||
const cateName = res.result.categoryName;
|
const result = res.result;
|
||||||
const cateId = result.data.categoryPath.split(',');
|
const cateName = res.result.categoryName;
|
||||||
const cateArr = [];
|
const cateId = result.data.categoryPath.split(",");
|
||||||
cateId.forEach((e, index) => { // 插入分类id和name
|
const cateArr = [];
|
||||||
cateArr.push({
|
cateId.forEach((e, index) => {
|
||||||
id: e,
|
// 插入分类id和name
|
||||||
name: cateName[index]
|
cateArr.push({
|
||||||
|
id: e,
|
||||||
|
name: cateName[index],
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
this.categoryBar = cateArr;
|
||||||
this.categoryBar = cateArr;
|
this.goodsMsg = res.result;
|
||||||
this.goodsMsg = res.result;
|
// 判断是否收藏
|
||||||
// 判断是否收藏
|
if (this.Cookies.getItem("userInfo")) {
|
||||||
if (this.Cookies.getItem('userInfo')) {
|
isCollection("STORE", this.goodsMsg.data.storeId).then((res) => {
|
||||||
isCollection('STORE', this.goodsMsg.data.storeId).then(res => {
|
if (res.success && res.result) {
|
||||||
if (res.success && res.result) {
|
this.storeCollected = true;
|
||||||
this.storeCollected = true;
|
}
|
||||||
}
|
});
|
||||||
})
|
|
||||||
}
|
|
||||||
// 获取店铺信息
|
|
||||||
getDetailById(this.goodsMsg.data.storeId).then(res => {
|
|
||||||
if (res.success) {
|
|
||||||
this.storeMsg = res.result
|
|
||||||
}
|
}
|
||||||
})
|
// 获取店铺信息
|
||||||
} else {
|
getDetailById(this.goodsMsg.data.storeId).then((res) => {
|
||||||
this.$Message.error(res.message)
|
if (res.success) {
|
||||||
this.$router.push('/')
|
this.storeMsg = res.result;
|
||||||
}
|
}
|
||||||
}).catch(() => {
|
});
|
||||||
this.$router.push('/')
|
} else {
|
||||||
});
|
this.$Message.error(res.message);
|
||||||
|
this.$router.push("/");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.$router.push("/");
|
||||||
|
});
|
||||||
},
|
},
|
||||||
goGoodsList (currIndex) { // 跳转商品列表
|
goGoodsList(currIndex) {
|
||||||
const arr = []
|
// 跳转商品列表
|
||||||
|
const arr = [];
|
||||||
this.categoryBar.forEach((e, index) => {
|
this.categoryBar.forEach((e, index) => {
|
||||||
if (index <= currIndex) {
|
if (index <= currIndex) {
|
||||||
arr.push(e.id)
|
arr.push(e.id);
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
return location.origin + '/goodsList?categoryId=' + arr.toString()
|
return location.origin + "/goodsList?categoryId=" + arr.toString();
|
||||||
},
|
},
|
||||||
async collect () { // 收藏店铺
|
async collect() {
|
||||||
|
// 收藏店铺
|
||||||
if (this.storeCollected) {
|
if (this.storeCollected) {
|
||||||
let cancel = await cancelCollect('STORE', this.goodsMsg.data.storeId)
|
let cancel = await cancelCollect("STORE", this.goodsMsg.data.storeId);
|
||||||
if (cancel.success) {
|
if (cancel.success) {
|
||||||
this.$Message.success('已取消收藏')
|
this.$Message.success("已取消收藏");
|
||||||
this.storeCollected = false;
|
this.storeCollected = false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let collect = await collectGoods('STORE', this.goodsMsg.data.storeId);
|
let collect = await collectGoods("STORE", this.goodsMsg.data.storeId);
|
||||||
if (collect.code === 200) {
|
if (collect.code === 200) {
|
||||||
this.storeCollected = true;
|
this.storeCollected = true;
|
||||||
this.$Message.success('收藏店铺成功,可以前往个人中心我的收藏查看');
|
this.$Message.success("收藏店铺成功,可以前往个人中心我的收藏查看");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
'$route.query.skuId': function (val) {
|
"$route.query.skuId": function (val) {
|
||||||
location.reload();
|
location.reload();
|
||||||
}
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
IM() {
|
||||||
|
return this.IMLink + this.storeMsg.merchantEuid;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
computed: {},
|
|
||||||
components: {
|
components: {
|
||||||
Search,
|
Search,
|
||||||
ShopHeader,
|
ShopHeader,
|
||||||
ShowGoods,
|
ShowGoods,
|
||||||
ShowGoodsDetail
|
ShowGoodsDetail,
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
|
Loading…
Reference in New Issue