| | |
| | | |
| | | import { Card, Col, Divider, Row } from 'ant-design-vue'; |
| | | |
| | | import { useHomeAccess } from '#/utils/use-home-access'; |
| | | |
| | | import { HOME_BLOCK_MENUS } from '../data'; |
| | | |
| | | defineOptions({ name: 'MesHomeKpiCards' }); |
| | | |
| | | const props = defineProps<{ |
| | |
| | | const emit = defineEmits<{ |
| | | navigate: [name: string]; |
| | | }>(); |
| | | |
| | | /** 菜单没开的模块,对应 KPI 卡不展示 */ |
| | | const { canSeeMenu } = useHomeAccess(); |
| | | |
| | | /** 是否有质量数据(合格品 + 不良品 > 0) */ |
| | | const hasQualityData = computed( |
| | |
| | | |
| | | <template> |
| | | <Row :gutter="16"> |
| | | <Col :lg="6" :md="12" :sm="12" :xl="6" :xs="24" class="mb-4"> |
| | | <Col |
| | | v-if="canSeeMenu(HOME_BLOCK_MENUS.workOrder)" |
| | | :lg="6" |
| | | :md="12" |
| | | :sm="12" |
| | | :xl="6" |
| | | :xs="24" |
| | | class="mb-4" |
| | | > |
| | | <Card |
| | | class="kpi-card cursor-pointer transition-all hover:-translate-y-1 hover:shadow-lg" |
| | | @click="emit('navigate', 'MesProWorkOrder')" |
| | | @click="emit('navigate', HOME_BLOCK_MENUS.workOrder)" |
| | | > |
| | | <div class="flex items-center gap-4"> |
| | | <div |
| | |
| | | </div> |
| | | </Card> |
| | | </Col> |
| | | <Col :lg="6" :md="12" :sm="12" :xl="6" :xs="24" class="mb-4"> |
| | | <Col |
| | | v-if="canSeeMenu(HOME_BLOCK_MENUS.feedback)" |
| | | :lg="6" |
| | | :md="12" |
| | | :sm="12" |
| | | :xl="6" |
| | | :xs="24" |
| | | class="mb-4" |
| | | > |
| | | <Card |
| | | class="kpi-card cursor-pointer transition-all hover:-translate-y-1 hover:shadow-lg" |
| | | @click="emit('navigate', 'MesProFeedback')" |
| | | @click="emit('navigate', HOME_BLOCK_MENUS.feedback)" |
| | | > |
| | | <div class="flex items-center gap-4"> |
| | | <div |
| | |
| | | </div> |
| | | </Card> |
| | | </Col> |
| | | <Col :lg="6" :md="12" :sm="12" :xl="6" :xs="24" class="mb-4"> |
| | | <Col |
| | | v-if="canSeeMenu(HOME_BLOCK_MENUS.feedback)" |
| | | :lg="6" |
| | | :md="12" |
| | | :sm="12" |
| | | :xl="6" |
| | | :xs="24" |
| | | class="mb-4" |
| | | > |
| | | <Card |
| | | class="kpi-card cursor-pointer transition-all hover:-translate-y-1 hover:shadow-lg" |
| | | @click="emit('navigate', 'MesProFeedback')" |
| | | @click="emit('navigate', HOME_BLOCK_MENUS.feedback)" |
| | | > |
| | | <div class="flex items-center gap-4"> |
| | | <div |
| | |
| | | </div> |
| | | </Card> |
| | | </Col> |
| | | <Col :lg="6" :md="12" :sm="12" :xl="6" :xs="24" class="mb-4"> |
| | | <Col |
| | | v-if="canSeeMenu(HOME_BLOCK_MENUS.machinery)" |
| | | :lg="6" |
| | | :md="12" |
| | | :sm="12" |
| | | :xl="6" |
| | | :xs="24" |
| | | class="mb-4" |
| | | > |
| | | <Card |
| | | class="kpi-card cursor-pointer transition-all hover:-translate-y-1 hover:shadow-lg" |
| | | @click="emit('navigate', 'MesDvMachinery')" |
| | | @click="emit('navigate', HOME_BLOCK_MENUS.machinery)" |
| | | > |
| | | <div class="flex items-center gap-4"> |
| | | <div |