index.vue 3.04 KB
<template>
  <div>
    <el-popover popper-class="fleet-popover-style" placement="top" :title="lineName" :width="300" :show-after="300"
      @after-enter="alterEnterHandler">
      <div v-loading="loading">
        <el-form :inline="true">
          <el-form-item label="工号" width="50px">
            <el-text type="primary" class="mx-1" size="large">{{ info.jobCode }}</el-text>
          </el-form-item>
          <el-form-item label="姓名" width="50px">
            <el-text type="primary" class="mx-1" size="large">{{ info.name }}</el-text>
          </el-form-item>
          <el-form-item label="路牌" width="50px">
            <el-text type="primary" class="mx-1" size="large">{{ info.lpName }}</el-text>
          </el-form-item>
          <el-form-item label="车队" width="50px">
            <el-text type="primary" class="mx-1" size="large">{{ info.fleetName }}</el-text>
          </el-form-item>
        </el-form>
        <el-divider></el-divider>
        <el-text type="primary" style="text-align: center;" class="mx-1" size="large">打卡详情</el-text>
        <el-table :data="tableData" style="width: 100%;background-color: aliceblue;">
          <el-table-column prop="date" label="Date" width="180" />
          <el-table-column prop="name" label="Name" width="180" />
          <el-table-column prop="address" label="Address" />
        </el-table>
      </div>
      <template #reference>
        <slot></slot>
      </template>
    </el-popover>
  </div>
</template>

<script setup>
const props = defineProps({
  jobCode: {
    type: String,
    required: true
  },
  lineName: {
    type: String,
    required: true
  }
})

/** 签到信息 */
const info = ref()
info.value = {
  name: "",
  lpName: "",
  jobCode: "",
  fleetName: ""
}

const tableData = ref(
  [
    {
      date: "2023-10-13",
      name: "张三",
      address: "背景"
    },
    {
      date: "2023-10-13",
      name: "张三",
      address: "背景"
    },
    {
      date: "2023-10-13",
      name: "张三",
      address: "背景"
    }
  ]
)

/** 处理信息 */
const handleInfo = (val) => {
  loading.value = true
  setTimeout(() => {
    loading.value = false;
    info.value = {
      name: "张三",
      lpName: "路牌",
      jobCode: val,
      fleetName: "三车队"
    }
  }, 1000);
}

/**
 * 显示弹窗
 * @param {*} val 工号
 */
const alterEnterHandler = () => {
  handleInfo(props.jobCode)
}
</script>
<style lang="scss">
.fleet-popover-style {
  color: white !important;
  margin: 10px 0 10px 0;
  min-width: 100px;
}

.el-popover.fleet-popover-style {
  border-color: #146ebd;
  background-color: #05417585;
  /* background:
    -webkit-linear-gradient(top, transparent 14px, blue 15px),
    -webkit-linear-gradient(left, transparent 14px, blue 15px);
  background-size: 15px 15px; */
}

.fleet-popover-style .el-popover__title {
  color: #FFFFF0;
  font-weight: bold;
}

.el-popper[data-popper-placement^=top]>.el-popper__arrow::before {
  border-top-color: #001bea21 !important;
  background-color: #001bea21 !important;
}

.el-form-item__label {
  color: white;
}
</style>