Files
dtx_store/components/oct-order-pin/index.vue

328 lines
9.6 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>
<view class="order--content" :class="[pattern ? 'chunk': 'broad']">
<view class="order--group--header" @click="$emit('onBtn', {type: 'shopsDetail', order: orderInfo})">
<image class="logo" v-if="orderInfo.shop.cover != ''" :src="orderInfo.shop.cover" mode="aspectFill">
</image>
<view class="store">
{{orderInfo.shop.name}}
<uni-icons type="right" size="16" color="#666" />
</view>
<view class="stateText" :style="{color: stateColor}">
{{orderInfo.collage.status_text}}
</view>
</view>
<view class="order--header">
<view class="order--no">
订单号{{orderInfo.no}}
</view>
</view>
<view class="order--flex" @click="$emit('onBtn', {type: 'goodsDetail', order: orderInfo})">
<image class="order--cover" :src="orderInfo.cover" mode="aspectFill"></image>
<view class="order--title">
{{orderInfo.name}}
<view class="unit"> {{orderInfo.unit}} </view>
</view>
<view class="order--count">
<view class="order--price">{{orderInfo.price}}<text>DT积分</text></view>
<view class="order--sum">{{orderInfo.sum}} </view>
</view>
</view>
<slot name="btns">
<view class="flexrow">
<view class="">
<u-avatar-group :random-bg-color="true" :urls="orderInfo.users" size="26" gap="0.4"
class="avatar-group" />
</view>
<view class="order--btns">
<view v-if="orderInfo.collage.status =='3'" class="item item--sign"
@click="$emit('onBtn', {type: 'share', order: orderInfo})">
分享拼团
</view>
<view class="item item--cancel" @click="$emit('onBtn', {type: 'goInfo', order: orderInfo})">
查看详情
</view>
</view>
</view>
</slot>
</view>
</view>
</template>
<script>
export default {
props: {
// 订单样式否为块
pattern: {
type: Boolean,
default: true
},
// 店铺模式
stores: {
type: Boolean,
default: false
},
// 订单信息
orderInfo: {
type: Object,
default: () => {
return {
cover: "",
name: "",
price: "",
sum: 1,
collage: {},
users: [],
invite: '',
order: {},
}
}
},
// 状态标签颜色
stateColor: {
type: String,
default: "#FF6160"
},
// 可操作按钮组
orderBtns: {
type: Array,
default: () => {
return [{
text: "订单详情",
type: "info"
}, {
text: "删除订单",
type: "delete",
style: {
color: "#FF6160"
}
}]
}
}
}
}
</script>
<style scoped lang="scss">
$margin: 30rpx;
$radius: 10rpx;
.text-nowrap {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.text-ellipsis {
display: -webkit-box;
overflow: hidden;
text-overflow: ellipsis;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
.order--content {
background: white;
&.chunk {
margin: $margin $margin;
border-radius: $radius;
padding: $margin;
}
&.broad {
padding: $margin;
border-bottom: solid 1rpx #ddd;
}
.order--header {
display: flex;
justify-content: space-between;
padding-bottom: $margin;
border-top: solid 1rpx #f9f9f9;
align-items: center;
&>.order--no {
flex: 1;
margin-right: $margin;
font-size: 26rpx;
line-height: 40rpx;
color: #555;
@extend .text-nowrap;
padding-top: 10rpx;
}
&>.stateText {
font-size: 26rpx;
color: $text-price;
}
}
.order--flex {
display: flex;
align-items: center;
.order--cover {
vertical-align: top;
width: 128rpx;
height: 128rpx;
}
.order--title {
@extend .text-ellipsis;
text-align: left;
flex: 1;
padding-left: $margin;
font-size: 28rpx;
line-height: 40rpx;
display: flex;
flex-direction: column;
align-items: flex-start;
justify-content: center;
box-sizing: border-box;
.unit {
color: #999;
font-size: 26rpx;
padding-top: 10rpx;
}
}
.order--count {
text-align: right;
padding-left: $margin;
line-height: 40rpx;
// color: $text-price;
.order--price {
font-size: 30rpx;
font-weight: bold;
&>text {
font-size: 24rpx;
font-weight: normal;
padding-left: 10rpx;
}
}
.order--sum {
font-size: 26rpx;
color: #777;
}
}
}
.order--group {
.order--group--header {
padding-bottom: $margin;
display: flex;
justify-content: space-between;
align-items: center;
&>.logo {
width: 38rpx;
height: 38rpx;
vertical-align: middle;
margin-right: $margin/2;
}
&>.store {
@extend .text-nowrap;
flex: 1;
margin-right: $margin;
font-size: 28rpx;
line-height: 40rpx;
color: #555;
}
&>.stateText {
font-size: 26rpx;
}
}
.order--group--flex {
@extend .order--flex;
margin-bottom: $margin - 10;
&:last-child {
margin: 0;
}
}
}
.order--group--header {
padding-bottom: $margin;
display: flex;
justify-content: space-between;
align-items: center;
&>.logo {
width: 38rpx;
height: 38rpx;
vertical-align: middle;
margin-right: $margin/2;
}
&>.store {
@extend .text-nowrap;
flex: 1;
margin-right: $margin;
font-size: 28rpx;
line-height: 40rpx;
color: #555;
}
&>.stateText {
font-size: 26rpx;
}
}
.order--group--flex {
@extend .order--flex;
margin-bottom: $margin - 10;
&:last-child {
margin: 0;
}
}
.flexrow {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
padding-top: $margin - 10;
border-top: solid 1rpx #f9f9f9;
margin-top: $margin - 10;
}
.order--btns {
display: flex;
justify-content: flex-end;
// padding-top: $margin - 10;
&>.item {
font-size: 26rpx;
margin-left: $margin/2;
color: #333;
line-height: 56rpx;
border: solid 1rpx #ddd;
padding: 0 ($margin - 10);
border-radius: 28rpx;
&--cancel,
&--delete,
&--logistic {
color: #666;
}
&--pay,
&--sign {
color: #34CE98;
border-color: #34CE98;
}
}
}
}
</style>