29 lines
2.1 KiB
Vue
29 lines
2.1 KiB
Vue
<template>
|
||
<view v-if="user && currentModule" class="page-shell portal-page">
|
||
<PortalHeader title="业务模块" :user="user" />
|
||
<view class="portal-content">
|
||
<view class="module-hero" :class="`module-hero-${currentModule.key}`"><view class="module-hero-icon">{{ currentModule.icon }}</view><view><text class="module-hero-title">{{ currentModule.name }}</text><text class="module-hero-desc">{{ currentModule.description }}</text></view></view>
|
||
<text class="group-title">业务功能</text>
|
||
<view class="operation-list"><button v-for="operation in currentModule.operations" :key="operation.name" class="operation-item" :class="{ 'operation-item-disabled': !operation.available }" :disabled="!operation.available" @tap="openOperation(operation)"><view class="operation-icon">{{ operation.icon }}</view><view class="operation-info"><text class="operation-name">{{ operation.name }}</text><text class="operation-desc">{{ operation.description }}</text></view><text v-if="operation.available" class="operation-count">{{ overview.pendingBoxCount }}</text><text v-else class="operation-prototype">未开放</text><text v-if="operation.available" class="operation-arrow">›</text></button></view>
|
||
<view class="module-empty-note">第一版本仅开放“出库 → 集装箱拣货”,其他业务将在后续版本接入。</view>
|
||
</view>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import PortalHeader from '@/components/PortalHeader.vue'
|
||
import { MODULES } from '@/data/demo-data.js'
|
||
import { session, requireSession } from '@/stores/session.js'
|
||
import { getPickingOverview } from '@/stores/picking.js'
|
||
export default {
|
||
components: { PortalHeader },
|
||
data() { return { user: session.currentUser, moduleKey: 'outbound', overview: getPickingOverview() } },
|
||
computed: { currentModule() { return MODULES.find((module) => module.key === this.moduleKey) || MODULES[0] } },
|
||
onLoad(options) { this.moduleKey = options.key || 'outbound' },
|
||
onShow() { if (!requireSession()) return; this.user = session.currentUser; this.overview = getPickingOverview() },
|
||
methods: {
|
||
openOperation(operation) { if (operation.available) uni.navigateTo({ url: '/pages/picking/picking' }) }
|
||
}
|
||
}
|
||
</script>
|