AIoT前端公共UI

CardGroup.vue 2.2KB

    <!-- * @Author: Devin * @Date: 2023-01-11 17:12:51 * @LastEditors: Devin * @LastEditTime: 2023-02-22 14:51:15 * @Description: 卡片集合 --> <template> <common-panel> <el-row :gutter="gutter"> <el-col v-if="hasAdd" :span="span"> <div class="__group-card" @click.stop="handelClickCreateCard"> <!-- <common-icon name="common-yuanxingxinzeng" :size="28"></common-icon> --> <span class="__group-card-plus">+</span> {{ cardText }} </div> </el-col> <el-col v-for="(card, index) in cards" :key="index" :span="span"> <common-card :card-info="card" :btns="btns" :infos="infos" :card-infos="cardInfos" :card-numbers="cardNumbers" @click.stop="handelCardClick(card)" ></common-card> </el-col> </el-row> </common-panel> </template> <script setup lang="ts"> import { defineEmits, defineProps } from 'vue'; const emits = defineEmits(['handelClickCreateCard', 'handelCardClick']); defineProps({ cards: { type: Array, default: () => [] }, hasAdd: { type: Boolean, default: () => true }, span: { type: Number, default: () => 8 }, gutter: { type: Number, default: () => 20 }, cardText: { type: String, default: () => '新增' }, infos: { type: Array, default: () => [] }, layer: { type: String, default: () => 'col' }, cardInfos: { type: Array, default: () => [] }, btns: { type: Array, default: () => [] }, cardNumbers: { type: Array, default: () => [] } }); // 新增事件暴露 function handelClickCreateCard() { emits('handelClickCreateCard'); } function handelCardClick(data: any) { emits('handelCardClick', data); } </script> <script lang="ts"> export default { name: 'CommonCardGroup' }; </script> <style scoped lang="scss"> .__group-card { display: flex; justify-content: center; align-items: center; width: 100%; height: calc(100% - 16px); min-height: 150px; font-size: 16px; color: #7b93a7; background: #ffffff; border: 2px dashed #ebebeb; border-radius: 4px; box-sizing: border-box; line-height: 28px; .__group-card-plus { font-size: 24px; line-height: 28px; } } </style>