sl-express/project-wl-siji-uniapp-vue3/components/Card/index.vue

221 lines
5.2 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 class="card" @click="goDetailsSucc()">
<view class="topCont"> <text>任务编号{{item.transportTaskId}}</text> <text v-if="item.isDelay == 1 && type == 0" class="label">已延期</text> </view>
<view class="addrCont">
<view class="startAddr">{{item.startAddress}}</view>
<view class="endAddr">{{item.endAddress}}</view>
</view>
<view class="botCont" v-show="type == 0">
<view class="timeCont">
<view class="tit"> <text>提货时间</text> </view>
<view class="time"> <text>{{item.planDepartureTime}}</text> </view>
</view>
<view class="ButCont">
<text class="butRed" v-if="item.enablePickUp" @click="goDetails(item)" >提货</text>
<text class="butRed butDis" v-else >提货</text>
</view>
</view>
<view class="botCont" v-show="type == 1">
<view class="timeCont">
<view class="tit"> <text>预计到达时间 </text> </view>
<view class="time"> <text>{{item.planArrivalTime}}</text> </view>
</view>
<view class="ButCont" v-if="item.status <= 3 "> <text class="butRed" @click="goDetails(item)" >交付</text> </view>
<view class="ButCont" v-if="item.status == 4 "> <text class="butRed" @click="goDetails(item)" >回车登记</text> </view>
</view>
<view class="botCont " v-show="type == 2">
<view class="timeCont finish">
<view class="tit"> <text>交货时间</text> </view>
<view class="time"> <text>{{item.actualArrivalTime}}</text> </view>
</view>
</view>
</view>
<!-- end -->
</template>
<script setup>
import { ref, reactive, onMounted } from 'vue';
import { useStore } from 'vuex';
// 获取父组件值、方法
const props = defineProps({
data: {
type: Object,
default: () => {}
},
type: {
type: Number,
default: 0
},
src:{
type: String,
default: ''
}
});
const item = ref({...props.data})
// 去往详情页
function goDetails(item){
if(props.src){
uni.navigateTo({
url: props.src,
success: function(res) {
// 通过eventChannel向被打开页面传送数据
res.eventChannel.emit('acceptDataFromOpenerPage', { data: item })
}
});
}
}
// 已完成详情
function goDetailsSucc(){
if (props.src && props.type == 2){
uni.navigateTo({
url: props.src,
// success: function(res) {
// // 通过eventChannel向被打开页面传送数据
// res.eventChannel.emit('acceptDataFromOpenerPage', { data: item })
// }
});
}
}
</script>
<style lang="scss" scoped>
@import url(@/styles/theme.scss);
.card{
padding: 30rpx 40rpx;
margin: 30rpx 0;
border-radius: 20rpx;
background: var(--neutral-color-white);
.topCont{
display: flex;
justify-content: space-between;
font-weight: 500;
line-height: 60rpx;
font-size: 32rpx;
color: #2A2929;
margin-bottom: 20rpx;
.label{
display: inline-block;
padding: 16rpx 10rpx 12rpx 10rpx;
border: 2rpx solid #EF4F3F;
border-radius: 6rpx;
font-weight: 400;
font-size: 28rpx;
line-height: 28rpx;
color: #EF4F3F;
letter-spacing: 0.32rpx;
}
}
.addrCont{
font-weight: 400;
font-size: 28rpx;
color: #818181;
letter-spacing: 0.32rpx;
padding-bottom: 40rpx;
margin-bottom: 20rpx;
border-bottom: 1px solid #EEEEEE;
position: relative;
&:before{
position: absolute;
left: 18rpx;
color:var(--neutral-color-white);
text-align: center;
content: '';
display: inline-block;
width: 0px;
height: 56%;
border-left: dashed 2px #D9D9D9;
border-radius: 11px;
}
.startAddr{
padding-left: 66rpx;
position: relative;
margin-bottom: 20rpx;
line-height: 44rpx;
&:before{
position: absolute;
font-size: 22rpx;
left: 0;
color:var(--neutral-color-white);
text-align: center;
content: '起';
display: inline-block;
width: 22px;
height: 22px;
background: #2A2929;
border-radius: 11px;
}
}
.endAddr{
padding-left: 66rpx;
position: relative;
line-height: 44rpx;
// height: 44rpx;
// overflow: hidden;
&:before{
font-size: 22rpx;
position: absolute;
left: 0;
color: var(--neutral-color-white);
text-align: center;
content: '止';
display: inline-block;
width: 22px;
height: 22px;
background: #EF4F3F;
border-radius: 11px;
}
}
}
.botCont{
position: relative;
display: flex;
justify-content: space-between;
align-items: center;
.timeCont{
.tit{
font-weight: 400;
font-size: 28rpx;
margin-bottom: 20rpx;
color: #818181;
}
.time{
font-size: 28rpx;
color: #2A2929;
}
}
.finish{
display: flex;
align-items: center;
.tit{
margin-bottom: 0;
margin-right: 18rpx;
}
}
.butRed, .butDis{
display: inline-block;
min-width: 80px;
line-height: 32px;
background: #EF4F3F;
border-radius: 16px;
font-size: var(--font-size-14);
text-align: center;
color: var(--neutral-color-white)
}
.butDis{
background: #DEDEDE;
}
.butAsh{
display: inline-block;
min-width: 80px;
line-height: 32px;
background: #EF4F3F;
border-radius: 16px;
text-align: center;
color: var(--neutral-color-white)
}
}
}
</style>