<template>
|
<div class="list-container w-full h-full">
|
<el-scrollbar>
|
<div class="list-content w-full overflow-x-hidden">
|
<el-row :gutter="20">
|
<el-col :span="6" v-for="item in props.dataList" class="mb-5">
|
<el-card
|
shadow="hover"
|
class="list-card cursor-pointer"
|
:body-style="{ padding: 0 }"
|
@click="itemClick(item)"
|
>
|
<div class="img-container w-full">
|
<img src="@/assets/image/list-card-bg.jpg" class="w-full" />
|
</div>
|
<div class="item-info p-3">
|
<div class="info-title font-bold">{{ item.meetName }}</div>
|
<div class="info-teacher flex text-sm text-gray-500">
|
<div class="info-label">主讲:</div>
|
<div class="info-text">{{ item.teacherName }}</div>
|
</div>
|
<div class="info-time flex text-sm text-gray-500">
|
<div class="info-label">开始时间:</div>
|
<div class="info-text">{{ item.startTime }}</div>
|
</div>
|
<div class="info-time flex text-sm text-gray-500">
|
<div class="info-label">结束时间:</div>
|
<div class="info-text">{{ item.endTime }}</div>
|
</div>
|
</div>
|
</el-card>
|
</el-col>
|
</el-row>
|
</div>
|
</el-scrollbar>
|
</div>
|
</template>
|
|
<script setup>
|
import { storeToRefs } from "pinia";
|
import { useRouter } from "vue-router";
|
import { useUserStore } from "@/store/index.js";
|
import { classMeet } from "@/api/modules/meet.js";
|
|
const userStore = useUserStore();
|
const { userInfo } = storeToRefs(userStore);
|
const router = useRouter();
|
const props = defineProps({
|
dataList: {
|
type: Array,
|
default: () => [],
|
},
|
});
|
|
const itemClick = (item) => {
|
classMeet(item.id)
|
.then((res) => {
|
if (window.webBridge) {
|
window.webBridge.openNewWindow(JSON.stringify(item));
|
} else {
|
let path = router.resolve({
|
path: "/meet",
|
query: {
|
meetName: item.meetName,
|
id: item.id,
|
userName: userInfo.value?.realName + "_" + item.id || "",
|
userCode: userInfo.value?.phone + "_" + item.id || "",
|
},
|
});
|
window.open(path.href, "_blank");
|
}
|
})
|
.catch((err) => {});
|
};
|
</script>
|
|
<style lang="scss" scoped>
|
.item {
|
width: 100%;
|
min-height: 120px;
|
}
|
|
.bottom-item {
|
margin-right: 30px;
|
}
|
|
.img-container {
|
object-fit: cover;
|
object-position: center;
|
width: 100%;
|
max-height: 160px;
|
overflow: hidden;
|
}
|
|
.list-card {
|
border-radius: 10px;
|
}
|
</style>
|