luohairen
2024-11-14 80889e7f32480ae76896f3bd042baa82a0fc9e9e
src/views/train/data-list/index.vue
@@ -1,19 +1,30 @@
<template>
  <div class="list-container w-full h-full">
    <div class="list-content w-full overflow-x-hidden">
      <el-row :gutter="20">
      <el-row :gutter="10">
        <el-col :span="6" v-for="item in tableData" class="margin-col">
          <el-card shadow="hover" class="list-card cursor-pointer" :body-style="{ padding: 0 }">
            <div class="img-container w-full">
              <img src="@/assets/list-card-bg.jpg" class="width-img">
            </div>
            <div class="item-info p-3">
              <div class="info-title">{{ item.meetName }}</div>
              <div class="info-teacherName">
                <div class="info-label">主讲:</div>
                <div class="info-text">{{ item.teacherName }}</div>
            <div class="item-info p-3" style="position: relative">
              <div class="info-text" style="position: absolute; top: 2px; right: 2px">
                <el-tag type="info" effect="dark" v-if="item.status === 0">
                  待开始
                </el-tag>
                <el-tag type="danger" effect="dark" v-else-if="item.status === 1">
                  进行中
                </el-tag>
                <el-tag type="warning" effect="dark" v-else-if="item.status === 2">
                  已结束
                </el-tag>
              </div>
              <div class="info-time">
              <div class="info-title">{{ item.meetName }}</div>
              <div class="info-teacherName" style="margin-top: 5px">
                <div class="info-label" style="flex: 1">主讲:</div>
                <div class="info-text" style="flex:6">{{ item.teacherNamesStr }}</div>
              </div>
              <div class="info-time" style="margin-top: 10px">
                <div class="info-label">开始时间:</div>
                <div class="info-text">{{ item.startTime }}</div>
              </div>
@@ -22,9 +33,15 @@
                <div class="info-text">{{ item.endTime }}</div>
              </div>
              <div class="button-container">
                <el-button @click="start(item)">开始上课</el-button>
                <el-button @click="handleUpdate(item)">编辑</el-button>
                <el-button @click="remove(item)">删除</el-button>
                <el-button v-if="item.status!==2" @click="start(item)" type="primary" size="small">开始上课</el-button>
                <el-button @click="handleUpdate(item)" type="warning" size="small">编辑</el-button>
                <el-popconfirm
                  style="margin: 0 5px"
                  title="确定要删除该培训吗?"
                  @confirm="remove(item)"
                >
                  <el-button slot="reference" type="danger" size="small" >删除</el-button>
                </el-popconfirm>
              </div>
            </div>
          </el-card>
@@ -36,22 +53,39 @@
<script>
import examPaperApi from "@/api/examPaper";
export default {
  props: {
    tableData: []
  },
  methods: {
    handleUpdate (item) {
      this.$emit('handleUpdate',item)
      this.$emit('handleUpdate', item)
    },
    remove (item) {
      this.$emit('remove',item)
      this.$confirm('此操作将永久删除该成员, 是否继续?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        this.$emit('remove', item)
      })
    },
    start (item) {
      this.$emit('start',item)
      this.$emit('start', item)
    },
    translateStatus (status) {
      if (status === 0) {
        return '待开始'
      } else if (status === 1) {
        return '进行中'
      } else {
        return '已结束'
      }
    }
  }
};
}
</script>
<style lang="scss" scoped>
@@ -74,20 +108,29 @@
.list-card {
  border-radius: 10px;
  height: 330px;
}
.item-info {
  padding: 12px;
  color: #8a8a8a;
}
.info-teacherName {
  display: flex;
  flex-direction: row;
  font-size: 14px;
}
.info-label {
  display: flex;
  flex-wrap: nowrap;
}
.info-text {
  display: flex;
  flex-wrap: wrap;
}
.info-title {
  font-weight: bold;
}
.info-teacherName {
  display: flex;
  font-size: 14px;
}
.info-time {