lilishop-ui/im/src/components/chat/panel/template/footPrint.vue

410 lines
9.2 KiB
Vue

<template>
<div class="box" @scroll="scrollBottom">
<div class="tab">
<el-tabs v-model="activeName" @tab-click="handleClick" :stretch=true>
<el-tab-pane label="最近浏览" name="goods">
<dl>
<dd v-for="item in list" v-infinite-scroll="loadMore">
<div class="base">
<div>
<img style="width: 60px; height: 60px;margin-left: 40px;box-sizing: border-box;" :src="item.thumbnail"
class="image" />
</div>
<div class="recent_views">
<el-tooltip class="item" effect="dark" :content="item.goodsName" placement="top-start">
<a class="goods_name" @click="linkToGoods(item.goodsId, item.id)">{{ item.goodsName }}</a>
</el-tooltip>
<div style="display: flex;">
<div style="margin-top: 20px;">
<span style="color: red;">{{ item.price | unitPrice("¥") }}</span>
<div class="goods_store_button">
<el-button type="danger" v-if="item.btnHide == 1 && toUser.storeFlag" size="mini"
@click="submitSendGoodsMessage(item)" plain>发送</el-button>
</div>
</div>
</div>
</div>
</div>
<div class="Underline"></div>
</dd>
</dl>
</el-tab-pane>
<el-tab-pane label="订单列表" name="orders">
<dl>
<dd v-for="(item, index) in orderList" v-infinite-scroll="loadMore" :key="index">
<div class="orderlist">
<div class="order_top order_padding">
<span class="order_sn" @click="linkToOrders(item.sn)">:{{ item.sn }}</span>
</div>
<div class="order_section order_padding">
<img :src="item.groupImages" alt="">
<el-tooltip class="item" effect="dark" :content="item.groupName" placement="top-start">
<span class="orderGoodsName" @click="linkToOrders(item.sn)"> {{ item.groupName }}</span>
</el-tooltip>
<div class="orderBtn ">
<el-button type="danger" class="store-button" v-if="item.btnHide == 1 && toUser.storeFlag"
size="mini" @click="submitSendOrderMessage(item, index)" plain>发送</el-button>
</div>
</div>
<div class="order_footer order_padding">
<span> 订单金额: <span style="color: red;">{{
item.orderItems[0].goodsPrice | unitPrice("¥")
}}</span></span>
<el-tag :type="col[item.orderStatus]">{{
item.orderStatus == 'STAY_PICKED_UP' ? '待自提'
: item.orderStatus == 'CANCELLED' ? '已取消' : item.orderStatus == 'UNPAID' ? '未付款' : item.orderStatus
==
'PAID' ? '已付款' : item.orderStatus == 'UNDELIVERED' ? '待发货' : item.orderStatus == 'DELIVERED'
? '已发货' : item.orderStatus == 'COMPLETED' ? '已完成' : item.orderStatus == 'TAKE' ? '待校验' :
''
}}</el-tag>
</div>
</div>
<div class="Underline"></div>
</dd>
</dl>
</el-tab-pane>
</el-tabs>
</div>
</div>
</template>
<script>
import { Tag, button, Tabs, TabPane, InfiniteScroll } from 'element-ui'
import { mapState, mapGetters } from "vuex";
import { unitPrice } from '@/plugins/filters';
export default {
directives: {
"infinite-scroll": InfiniteScroll,
},
data () {
return {
activeName: 'goods',
btnHide: undefined,
hide: true,
col: {
CANCELLED: 'error',
PAID: 'error',
TAKE: '',
COMPLETED: 'success',
DELIVERED: 'danger',
UNDELIVERED: 'warning',
UNPAID: '',
STAY_PICKED_UP: ''
},
}
},
computed: {
...mapGetters(["talkItems"]),
...mapState({
id: (state) => state.user.id,
toUser: (state) => state.user.toUser,
}),
},
components: {
"el-tag": Tag,
"el-button": button,
"el-tabs": Tabs,
"el-tab-pane": TabPane,
},
methods: {
//跳转订单列表
scrollBottom (e) {
const { scrollTop, scrollHeight, clientHeight } = e.srcElement
if (scrollTop + clientHeight >= scrollHeight) {
this.$emit('loadMore')
}
},
loadMore () {
},
// 发送消息回调事件
submitSendGoodsMessage (item) {
const context = {
id: item.id,
goodsId: item.goodsId,
thumbnail: item.thumbnail,
price: item.price,
goodsName: item.goodsName
}
const record = {
operation_type: "MESSAGE",
to: this.toUser.userId,
from: this.id,
message_type: "GOODS",
context: context,
talk_id: this.toUser.id,
};
this.$emit('sendMessage', record, context, 'GOODS');
localStorage.setItem(item.goodsId, 0)
item.btnHide = 0
},
// 发送订单列表
submitSendOrderMessage (item, index) {
console.log(item, 'item');
const context = {
sn: item.sn,
groupImages: item.groupImages,
paymentTime: item.paymentTime,
groupName: item.groupName,
flowPrice: item.flowPrice,
orderStatus: item.orderStatus
}
const record = {
operation_type: "MESSAGE",
to: this.toUser.userId,
from: this.id,
message_type: "ORDER",
context: context,
talk_id: this.toUser.id,
};
this.$emit('sendMessage', record, context, 'ORDER');
localStorage.setItem(item.goodsId, 0)
item.btnHide = 0
},
handleClick (tab, event) {
console.log(tab, event);
}
},
props: {
list: {
type: Array,
default: [],
},
orderList: {
type: Array,
default: []
},
},
mounted () {
// state.user.toUser
console.log(this.orderList, ' this.$store.state.user.toUser this.$store.state.user.toUser this.$store.state.user.toUser');
this.btnHide = localStorage.getItem('btnHide')
}
}
</script>
<style scoped lang="less">
.order_status {
height: 25px;
width: 60px;
background: #ffeded;
margin-right: 20px;
text-align: center;
line-height: 25px;
}
.Underline {
border: 1px solid silver;
// width: 90%;
margin: 0 auto;
}
.recent_views {
margin-left: 13px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
width: 232px;
}
.box {
max-width: 362px;
.top {
text-align: center;
}
.left {
float: left;
width: 60px;
}
.right {
float: right;
width: 60px;
}
.bottom {
clear: both;
text-align: center;
}
.item {
// margin: 4px;
margin-top: 16px
}
.left .el-tooltip__popper,
.right .el-tooltip__popper {
padding: 8px 10px;
}
}
.Underline {
// border: 5px solid red;
}
.orderlist {
max-width: 352px;
margin-bottom: 10px;
background: #fff;
color: #5a606b;
box-sizing: border-box;
}
.box::-webkit-scrollbar {
width: 0px !important;
}
.order_top {
border-bottom: 1px solid #f2f2f2;
.order_sn {}
}
.order_section {
border-bottom: 1px solid #f2f2f2;
height: 100px;
img {
width: 60px;
height: 60px;
margin-top: 20px;
}
}
.order_footer {
border-bottom: 1px solid #f2f2f2;
display: flex;
justify-content: space-between;
}
.orderGoodsName {
width: 200px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
position: absolute;
margin-left: 10px;
margin-top: 10px;
font-weight: 500;
}
.orderSn {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap
}
.orderBtn {
display: flex;
justify-content: flex-end;
margin-right: 15px;
position: relative;
bottom: 55px;
}
.goods_name {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap
}
/deep/ .el-tabs__header {
position: absolute;
width: 362px;
height: 50px;
left: 0;
z-index: 2;
background: #ffffff;
}
// /deep/ .el-tabs__item.is-top:last-child {
// color: black;
// }
/deep/.is-active {
color: #f23030;
}
/deep/.el-tabs__active-bar {
background-color: #f23030;
}
/deep/ .el-tabs__nav.is-top {
height: 50px;
}
.tab {
display: flex;
justify-content: center;
align-items: center;
}
/deep/.el-tabs__content {
margin-top: 50px;
}
.box {
height: 700px;
overflow: auto;
// margin-top: 50px;
// width: 350px;
}
.order_padding {
padding: 0 10px;
}
.store-button {
background-color: white;
border-color: #F56C6C;
margin-top: 10px;
}
.goods_store_button {
display: inline;
background-color: white;
border-color: #F56C6C;
position: absolute;
left: 70%;
}
.base {
margin-top: 5px;
height: 80px;
display: flex;
.price {
color: red;
margin-top: 15px;
}
.image {
height: 100px;
margin-top: 3px;
width: 100px;
}
}
.separate {
margin-top: 8px;
}
// .el-tabs--card {
// height: calc(100vh - 110px);
// overflow-y: auto;
// }
// /deep/.el-tab-pane {
// height: calc(100vh - 110px);
// overflow-y: auto;
// }
</style>