serverCard.vue
2.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<!--
* @Date: 2023-12-13 13:42:23
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2024-09-13 15:48:27
* @FilePath: /meihuaApp/src/components/serverCard.vue
* @Description: 房间详情组件
-->
<template>
<view class="server-card-component">
<image class="server-cover" mode="scaleToFill" :src="cover" />
<view class="overlay">
<view class="text">{{ title }}</view>
<view class="more" @tap="getMore(id)">了解详情</view>
</view>
</view>
</template>
<script setup>
import { ref, defineProps, onMounted, watch } from 'vue'
import Taro from '@tarojs/taro'
const props = defineProps({
data: { // 详情
type: Object,
default: {},
},
});
const id = ref(''); // 房间id
const cover = ref(''); // 封面图
const title = ref(''); // 标题
onMounted(() => {
id.value = props.data.id;
cover.value = props.data.cover ? props.data.cover : 'https://cdn.ipadbiz.cn/meihua/img1@2x.png';
title.value = props.data.title;
});
watch(
() => props.data,
(val) => {
if (val) {
id.value = val.id;
cover.value = val.cover ? val.cover : 'https://cdn.ipadbiz.cn/meihua/img1@2x.png';
title.value = val.title;
}
},
{
deep: true,
immediate: true
}
);
const getMore = (id) => {
Taro.previewImage({
// 需要预览的图片链接列表
urls: ['https://cdn.ipadbiz.cn/meihua/temp/f600f0432b0b1cf075bdc1bcc24feb47.jpg'],
// 为当前显示图片的链接/索引值
current: 'https://cdn.ipadbiz.cn/meihua/temp/f600f0432b0b1cf075bdc1bcc24feb47.jpg',
// 图片指示器样式
indicator:'default',
// 是否可循环预览
loop:false,
// 长按图片显示操作菜单,如不填默认为保存相册
// longPressActions:{
// itemList:[this.l('发送给朋友'),this.l]
// },
success: res => {
console.warn('res', res);
},
fail: err => {
console.error('err', err);
}
})
}
</script>
<style lang="less">
:root,
page {
--nut-price-medium-size: 35rpx;
}
.server-card-component {
position: relative;
margin-bottom: 1rem;
background-color: white;
box-shadow: 0px 0px 8px 0px rgba(0,0,0,0.1);
border: 1px solid #f9f9f9;
border-radius: 0.5rem;
overflow: hidden;
display: flex;
align-items: flex-end; /* 图片底部对齐 */
.server-cover {
width: 100%;
height: 13rem;
}
.overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
background-color: rgba(0, 0, 0, 0.4); /* 半透明的黑色背景 */
color: #fff;
.text {
font-size: 1.5rem;
margin-bottom: 1.5rem;
}
.more {
font-size: 0.85rem;
background: rgba(106,73,37,0.35);
border-radius: 34rpx 34rpx 34rpx 34rpx;
border: 2rpx solid #94795C;
padding: 0.5rem 1.5rem;
}
}
}
</style>