|
|
|
|
@ -6,15 +6,15 @@
|
|
|
|
|
<div class="mold-brand-detail__image-card">
|
|
|
|
|
<el-image v-if="imageList.length" :src="imageList[0]" :preview-src-list="imageList" fit="cover"
|
|
|
|
|
preview-teleported class="mold-brand-detail__image" />
|
|
|
|
|
<el-empty v-else description="暂无图片" />
|
|
|
|
|
<el-empty v-else :description="t('MoldManagement.MoldBrandDetail.noImage')" />
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="mold-brand-detail__qr-card">
|
|
|
|
|
<div class="mold-brand-detail__qr-title">模具二维码</div>
|
|
|
|
|
<div class="mold-brand-detail__qr-title">{{ t('MoldManagement.MoldBrandDetail.qrcodeTitle') }}</div>
|
|
|
|
|
<QrcodeActionCard :image-url="detailData?.qrCodeUrl" :print-id="detailData?.id" :print-template-type="4"
|
|
|
|
|
:print-title="`${detailData?.name || '模具'}码打印预览`" :print-paper-width="80" :print-paper-height="80"
|
|
|
|
|
:print-max-width="220" empty-text="暂无二维码" error-text="二维码加载失败" :refresh-url="getQrcodeRefreshUrl()"
|
|
|
|
|
:refresh-disabled="!detailData?.id || !detailData?.code" refresh-confirm-text="确认刷新该模具二维码吗?"
|
|
|
|
|
:print-title="t('MoldManagement.MoldBrandDetail.qrcodePrintTitle', { name: detailData?.name || t('MoldManagement.MoldBrandDetail.qrcodeTitle') })" :print-paper-width="80" :print-paper-height="80"
|
|
|
|
|
:print-max-width="220" :empty-text="t('MoldManagement.MoldBrandDetail.qrcodeEmpty')" :error-text="t('MoldManagement.MoldBrandDetail.qrcodeLoadError')" :refresh-url="getQrcodeRefreshUrl()"
|
|
|
|
|
:refresh-disabled="!detailData?.id || !detailData?.code" :refresh-confirm-text="t('MoldManagement.MoldBrandDetail.qrcodeRefreshConfirm')"
|
|
|
|
|
@refresh-success="handleQrcodeRefreshSuccess" />
|
|
|
|
|
<div class="mold-brand-detail__qr-code">{{ detailData?.code || '-' }}</div>
|
|
|
|
|
</div>
|
|
|
|
|
@ -30,49 +30,50 @@
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="mold-brand-detail__actions">
|
|
|
|
|
<el-button @click="goBack"><Icon icon="ep:arrow-left" class="mr-5px" /> 返回</el-button>
|
|
|
|
|
<el-button type="primary" @click="handleReservedAction('上模')">上模</el-button>
|
|
|
|
|
<el-button type="success" @click="handleReservedAction('下模')">下模</el-button>
|
|
|
|
|
<el-button type="warning" @click="handleReservedAction('维修')">维修</el-button>
|
|
|
|
|
<el-button @click="goBack"><Icon icon="ep:arrow-left" class="mr-5px" /> {{ t('MoldManagement.MoldBrandDetail.back') }}</el-button>
|
|
|
|
|
<el-button type="primary" @click="goOperate(1)" v-if="detailData?.status === 1">{{ t('MoldManagement.MoldBrandDetail.moldUp') }}</el-button>
|
|
|
|
|
<el-button type="success" @click="goOperate(2)" v-if="detailData?.status === 0">{{ t('MoldManagement.MoldBrandDetail.moldDown') }}</el-button>
|
|
|
|
|
<el-button type="warning" @click="handleReservedAction(t('MoldManagement.MoldBrandDetail.repair'))">{{ t('MoldManagement.MoldBrandDetail.repair') }}</el-button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="mold-brand-detail__grid">
|
|
|
|
|
<div class="mold-brand-detail__field"><span>编码</span><strong>{{ detailData?.code || '-' }}</strong></div>
|
|
|
|
|
<div class="mold-brand-detail__field"><span>当前设备</span><strong>{{ detailData?.currentDevice ||
|
|
|
|
|
<div class="mold-brand-detail__field"><span>{{ t('MoldManagement.MoldBrandDetail.code') }}</span><strong>{{ detailData?.code || '-' }}</strong></div>
|
|
|
|
|
<div class="mold-brand-detail__field"><span>{{ t('MoldManagement.MoldBrandDetail.currentDevice') }}</span><strong>{{ detailData?.currentDevice ||
|
|
|
|
|
detailData?.machineName
|
|
|
|
|
|| '-' }}</strong></div>
|
|
|
|
|
<div class="mold-brand-detail__field"><span>产品型号</span><strong>{{ detailData?.productName || '-' }}</strong>
|
|
|
|
|
<div class="mold-brand-detail__field"><span>{{ t('MoldManagement.MoldBrandDetail.productName') }}</span><strong>{{ detailData?.productName || '-' }}</strong>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="mold-brand-detail__field"><span>版本</span><strong>{{ detailData?.version || '-' }}</strong></div>
|
|
|
|
|
<div class="mold-brand-detail__field"><span>{{ t('MoldManagement.MoldBrandDetail.version') }}</span><strong>{{ detailData?.version || '-' }}</strong></div>
|
|
|
|
|
<div class="mold-brand-detail__field mold-brand-detail__field--life">
|
|
|
|
|
<span>寿命状态</span>
|
|
|
|
|
<span>{{ t('MoldManagement.MoldBrandDetail.lifeStatus') }}</span>
|
|
|
|
|
<div v-if="lifeRate !== null" class="mold-brand-detail__life">
|
|
|
|
|
<el-progress :percentage="lifeRate" :stroke-width="10" :show-text="true" />
|
|
|
|
|
</div>
|
|
|
|
|
<strong v-else>-</strong>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="mold-brand-detail__field"><span>子模数量</span><strong>{{ childMolds.length || detailData?.moldSize
|
|
|
|
|
<div class="mold-brand-detail__field"><span>{{ t('MoldManagement.MoldBrandDetail.childMoldCount') }}</span><strong>{{ childMolds.length || detailData?.moldSize
|
|
|
|
|
|| 0
|
|
|
|
|
}}</strong></div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="mold-brand-detail__tabs">
|
|
|
|
|
<el-tabs v-model="activeTab">
|
|
|
|
|
<el-tab-pane label="子模具" name="molds">
|
|
|
|
|
<el-tab-pane :label="t('MoldManagement.MoldBrandDetail.tabMolds')" name="molds">
|
|
|
|
|
<component :is="MoldListComp" :brand-id="brandId" />
|
|
|
|
|
</el-tab-pane>
|
|
|
|
|
<el-tab-pane label="点检记录" name="inspection">
|
|
|
|
|
<el-tab-pane :label="t('MoldManagement.MoldBrandDetail.tabInspection')" name="inspection">
|
|
|
|
|
<div v-loading="inspectionLoading">
|
|
|
|
|
<el-form :inline="true" class="device-ledger-tab-toolbar">
|
|
|
|
|
<el-form-item label="时间">
|
|
|
|
|
<el-form-item :label="t('MoldManagement.MoldBrandDetail.time')">
|
|
|
|
|
<el-date-picker v-model="inspectionDateRange" type="daterange" value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
|
start-placeholder="开始时间" end-placeholder="结束时间" range-separator="至" :unlink-panels="true"
|
|
|
|
|
:start-placeholder="t('MoldManagement.MoldBrandDetail.startTime')" :end-placeholder="t('MoldManagement.MoldBrandDetail.endTime')" :range-separator="t('MoldManagement.MoldBrandDetail.to')" :unlink-panels="true"
|
|
|
|
|
style="width: 340px" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<el-button type="primary" plain @click="handleQueryInspection">查询</el-button>
|
|
|
|
|
<el-button @click="handleResetInspection">重置</el-button>
|
|
|
|
|
<el-button type="primary" plain @click="handleQueryInspection">{{ t('MoldManagement.MoldBrandDetail.query') }}</el-button>
|
|
|
|
|
<el-button @click="handleResetInspection">{{ t('MoldManagement.MoldBrandDetail.reset') }}</el-button>
|
|
|
|
|
<el-button type="success" plain :loading="inspectionExportLoading"
|
|
|
|
|
@click="handleExportInspection">导出</el-button>
|
|
|
|
|
@click="handleExportInspection">{{ t('MoldManagement.MoldBrandDetail.export') }}</el-button>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
<el-empty v-if="!inspectionStepGroups.length" />
|
|
|
|
|
@ -82,7 +83,7 @@
|
|
|
|
|
<template #title>
|
|
|
|
|
<div class="device-ledger-history-title">
|
|
|
|
|
<span class="device-ledger-history-time">[{{ group.time }}]</span>
|
|
|
|
|
<span class="device-ledger-history-operator">操作人: {{ group.operator }}</span>
|
|
|
|
|
<span class="device-ledger-history-operator">{{ t('MoldManagement.MoldBrandDetail.operator') }}: {{ group.operator }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<template #description>
|
|
|
|
|
@ -94,18 +95,18 @@
|
|
|
|
|
</div>
|
|
|
|
|
<div class="device-ledger-history-item-body">
|
|
|
|
|
<div class="device-ledger-history-item-row"><span
|
|
|
|
|
class="device-ledger-history-item-label">点检方式</span><span
|
|
|
|
|
class="device-ledger-history-item-label">{{ t('MoldManagement.MoldBrandDetail.inspectionMethod') }}</span><span
|
|
|
|
|
class="device-ledger-history-item-value"><dict-tag type="Inspection_method"
|
|
|
|
|
:value="item.method" /></span></div>
|
|
|
|
|
<div class="device-ledger-history-item-row"><span
|
|
|
|
|
class="device-ledger-history-item-label">判定标准</span><span
|
|
|
|
|
class="device-ledger-history-item-label">{{ t('MoldManagement.MoldBrandDetail.criteria') }}</span><span
|
|
|
|
|
class="device-ledger-history-item-value">{{ item.criteria ?? '-' }}</span></div>
|
|
|
|
|
<div class="device-ledger-history-item-row"><span
|
|
|
|
|
class="device-ledger-history-item-label">点检时间</span><span
|
|
|
|
|
class="device-ledger-history-item-label">{{ t('MoldManagement.MoldBrandDetail.inspectionTime') }}</span><span
|
|
|
|
|
class="device-ledger-history-item-value">{{ formatHistoryTime(item.taskTime) }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="device-ledger-history-item-row"><span
|
|
|
|
|
class="device-ledger-history-item-label">备注</span><span
|
|
|
|
|
class="device-ledger-history-item-label">{{ t('MoldManagement.MoldBrandDetail.remark') }}</span><span
|
|
|
|
|
class="device-ledger-history-item-value">{{ item.remark ?? '-' }}</span></div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
@ -113,19 +114,21 @@
|
|
|
|
|
</template>
|
|
|
|
|
</el-step>
|
|
|
|
|
</el-steps>
|
|
|
|
|
</div>
|
|
|
|
|
</el-tab-pane>
|
|
|
|
|
<el-tab-pane label="维修记录" name="repair">
|
|
|
|
|
<el-tab-pane :label="t('MoldManagement.MoldBrandDetail.tabRepair')" name="repair">
|
|
|
|
|
<div v-loading="repairLoading">
|
|
|
|
|
<el-form :inline="true" class="device-ledger-tab-toolbar">
|
|
|
|
|
<el-form-item label="时间">
|
|
|
|
|
<el-form-item :label="t('MoldManagement.MoldBrandDetail.time')">
|
|
|
|
|
<el-date-picker v-model="repairDateRange" type="daterange" value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
|
start-placeholder="开始时间" end-placeholder="结束时间" range-separator="至" :unlink-panels="true"
|
|
|
|
|
:start-placeholder="t('MoldManagement.MoldBrandDetail.startTime')" :end-placeholder="t('MoldManagement.MoldBrandDetail.endTime')" :range-separator="t('MoldManagement.MoldBrandDetail.to')" :unlink-panels="true"
|
|
|
|
|
style="width: 340px" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<el-button type="primary" plain @click="handleQueryRepair">查询</el-button>
|
|
|
|
|
<el-button @click="handleResetRepair">重置</el-button>
|
|
|
|
|
<el-button type="primary" plain @click="handleQueryRepair">{{ t('MoldManagement.MoldBrandDetail.query') }}</el-button>
|
|
|
|
|
<el-button @click="handleResetRepair">{{ t('MoldManagement.MoldBrandDetail.reset') }}</el-button>
|
|
|
|
|
<el-button type="success" plain :loading="repairExportLoading"
|
|
|
|
|
@click="handleExportRepair">导出</el-button>
|
|
|
|
|
@click="handleExportRepair">{{ t('MoldManagement.MoldBrandDetail.export') }}</el-button>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
<el-empty v-if="!repairGroups.length" />
|
|
|
|
|
@ -134,7 +137,7 @@
|
|
|
|
|
<template #title>
|
|
|
|
|
<div class="device-ledger-repair-title">
|
|
|
|
|
<span class="device-ledger-repair-name">{{ group.name }}</span>
|
|
|
|
|
<span class="device-ledger-repair-meta">共{{ group.items.length }}条</span>
|
|
|
|
|
<span class="device-ledger-repair-meta">{{ t('MoldManagement.MoldBrandDetail.totalItems', { count: group.items.length }) }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<div class="device-ledger-history-items">
|
|
|
|
|
@ -146,21 +149,21 @@
|
|
|
|
|
</div>
|
|
|
|
|
<div class="device-ledger-history-item-body">
|
|
|
|
|
<div class="device-ledger-history-item-row"><span
|
|
|
|
|
class="device-ledger-history-item-label">项目内容</span><span
|
|
|
|
|
class="device-ledger-history-item-label">{{ t('MoldManagement.MoldBrandDetail.projectContent') }}</span><span
|
|
|
|
|
class="device-ledger-history-item-value">{{ row.subjectContent ?? '-' }}</span></div>
|
|
|
|
|
<div class="device-ledger-history-item-row"><span
|
|
|
|
|
class="device-ledger-history-item-label">维修结果</span><span
|
|
|
|
|
class="device-ledger-history-item-label">{{ t('MoldManagement.MoldBrandDetail.repairResult') }}</span><span
|
|
|
|
|
class="device-ledger-history-item-value"><el-tag
|
|
|
|
|
:type="getResultTagType(row.result ?? row.repairResult)">{{
|
|
|
|
|
getResultLabel(row.repairResult ??
|
|
|
|
|
row.result) }}</el-tag></span></div>
|
|
|
|
|
<div class="device-ledger-history-item-row"><span
|
|
|
|
|
class="device-ledger-history-item-label">完成日期</span><span
|
|
|
|
|
class="device-ledger-history-item-label">{{ t('MoldManagement.MoldBrandDetail.finishDate') }}</span><span
|
|
|
|
|
class="device-ledger-history-item-value">{{
|
|
|
|
|
String(formatHistoryTime(row.finishDate)).split(' ')[0]
|
|
|
|
|
}}</span></div>
|
|
|
|
|
<div class="device-ledger-history-item-row"><span
|
|
|
|
|
class="device-ledger-history-item-label">备注</span><span
|
|
|
|
|
class="device-ledger-history-item-label">{{ t('MoldManagement.MoldBrandDetail.remark') }}</span><span
|
|
|
|
|
class="device-ledger-history-item-value">{{
|
|
|
|
|
row.remark ?? '-' }}</span></div>
|
|
|
|
|
</div>
|
|
|
|
|
@ -168,19 +171,21 @@
|
|
|
|
|
</div>
|
|
|
|
|
</el-collapse-item>
|
|
|
|
|
</el-collapse>
|
|
|
|
|
</div>
|
|
|
|
|
</el-tab-pane>
|
|
|
|
|
<el-tab-pane label="保养记录" name="maintain">
|
|
|
|
|
<el-tab-pane :label="t('MoldManagement.MoldBrandDetail.tabMaintain')" name="maintain">
|
|
|
|
|
<div v-loading="maintainLoading">
|
|
|
|
|
<el-form :inline="true" class="device-ledger-tab-toolbar">
|
|
|
|
|
<el-form-item label="时间">
|
|
|
|
|
<el-form-item :label="t('MoldManagement.MoldBrandDetail.time')">
|
|
|
|
|
<el-date-picker v-model="maintainDateRange" type="daterange" value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
|
start-placeholder="开始时间" end-placeholder="结束时间" range-separator="至" :unlink-panels="true"
|
|
|
|
|
:start-placeholder="t('MoldManagement.MoldBrandDetail.startTime')" :end-placeholder="t('MoldManagement.MoldBrandDetail.endTime')" :range-separator="t('MoldManagement.MoldBrandDetail.to')" :unlink-panels="true"
|
|
|
|
|
style="width: 340px" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<el-button type="primary" plain @click="handleQueryMaintain">查询</el-button>
|
|
|
|
|
<el-button @click="handleResetMaintain">重置</el-button>
|
|
|
|
|
<el-button type="primary" plain @click="handleQueryMaintain">{{ t('MoldManagement.MoldBrandDetail.query') }}</el-button>
|
|
|
|
|
<el-button @click="handleResetMaintain">{{ t('MoldManagement.MoldBrandDetail.reset') }}</el-button>
|
|
|
|
|
<el-button type="success" plain :loading="maintainExportLoading"
|
|
|
|
|
@click="handleExportMaintain">导出</el-button>
|
|
|
|
|
@click="handleExportMaintain">{{ t('MoldManagement.MoldBrandDetail.export') }}</el-button>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
<el-empty v-if="!maintainStepGroups.length" />
|
|
|
|
|
@ -190,7 +195,7 @@
|
|
|
|
|
<template #title>
|
|
|
|
|
<div class="device-ledger-history-title">
|
|
|
|
|
<span class="device-ledger-history-time">[{{ group.time }}]</span>
|
|
|
|
|
<span class="device-ledger-history-operator">操作人: {{ group.operator }}</span>
|
|
|
|
|
<span class="device-ledger-history-operator">{{ t('MoldManagement.MoldBrandDetail.operator') }}: {{ group.operator }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<template #description>
|
|
|
|
|
@ -202,18 +207,18 @@
|
|
|
|
|
</div>
|
|
|
|
|
<div class="device-ledger-history-item-body">
|
|
|
|
|
<div class="device-ledger-history-item-row"><span
|
|
|
|
|
class="device-ledger-history-item-label">保养方式</span><span
|
|
|
|
|
class="device-ledger-history-item-label">{{ t('MoldManagement.MoldBrandDetail.maintainMethod') }}</span><span
|
|
|
|
|
class="device-ledger-history-item-value"><dict-tag type="Inspection_method"
|
|
|
|
|
:value="item.method" /></span></div>
|
|
|
|
|
<div class="device-ledger-history-item-row"><span
|
|
|
|
|
class="device-ledger-history-item-label">判定标准</span><span
|
|
|
|
|
class="device-ledger-history-item-label">{{ t('MoldManagement.MoldBrandDetail.criteria') }}</span><span
|
|
|
|
|
class="device-ledger-history-item-value">{{ item.criteria ?? '-' }}</span></div>
|
|
|
|
|
<div class="device-ledger-history-item-row"><span
|
|
|
|
|
class="device-ledger-history-item-label">保养时间</span><span
|
|
|
|
|
class="device-ledger-history-item-label">{{ t('MoldManagement.MoldBrandDetail.maintainTime') }}</span><span
|
|
|
|
|
class="device-ledger-history-item-value">{{
|
|
|
|
|
String(formatHistoryTime(item.taskTime)).split(' ')[0] }}</span></div>
|
|
|
|
|
<div class="device-ledger-history-item-row"><span
|
|
|
|
|
class="device-ledger-history-item-label">备注</span><span
|
|
|
|
|
class="device-ledger-history-item-label">{{ t('MoldManagement.MoldBrandDetail.remark') }}</span><span
|
|
|
|
|
class="device-ledger-history-item-value">{{ item.remark ?? '-' }}</span></div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
@ -221,35 +226,38 @@
|
|
|
|
|
</template>
|
|
|
|
|
</el-step>
|
|
|
|
|
</el-steps>
|
|
|
|
|
</div>
|
|
|
|
|
</el-tab-pane>
|
|
|
|
|
<el-tab-pane label="安装记录" name="install">
|
|
|
|
|
<el-tab-pane :label="t('MoldManagement.MoldBrandDetail.tabInstall')" name="install">
|
|
|
|
|
<div v-loading="installLoading">
|
|
|
|
|
<el-form :inline="true" class="device-ledger-tab-toolbar">
|
|
|
|
|
<el-form-item label="模具"><el-select v-model="installMoldId" filterable clearable placeholder="选择模具"
|
|
|
|
|
<el-form-item :label="t('MoldManagement.MoldBrandDetail.mold')"><el-select v-model="installMoldId" filterable clearable :placeholder="t('MoldManagement.MoldBrandDetail.selectMold')"
|
|
|
|
|
class="!w-200px"><el-option v-for="item in childMolds" :key="item.id" :label="item.name"
|
|
|
|
|
:value="item.id" /></el-select></el-form-item>
|
|
|
|
|
<el-form-item label="备注"><el-input v-model="installRemark" placeholder="备注" clearable
|
|
|
|
|
<el-form-item :label="t('MoldManagement.MoldBrandDetail.remark')"><el-input v-model="installRemark" :placeholder="t('MoldManagement.MoldBrandDetail.remarkPlaceholder')" clearable
|
|
|
|
|
@keyup.enter="handleQueryInstall" /></el-form-item>
|
|
|
|
|
<el-form-item label="时间">
|
|
|
|
|
<el-form-item :label="t('MoldManagement.MoldBrandDetail.time')">
|
|
|
|
|
<el-date-picker v-model="installDateRange" type="daterange" value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
|
start-placeholder="开始时间" end-placeholder="结束时间" range-separator="至" :unlink-panels="true" />
|
|
|
|
|
:start-placeholder="t('MoldManagement.MoldBrandDetail.startTime')" :end-placeholder="t('MoldManagement.MoldBrandDetail.endTime')" :range-separator="t('MoldManagement.MoldBrandDetail.to')" :unlink-panels="true" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<el-button type="primary" plain @click="handleQueryInstall">查询</el-button>
|
|
|
|
|
<el-button @click="handleResetInstall">重置</el-button>
|
|
|
|
|
<el-button type="primary" plain @click="handleQueryInstall">{{ t('MoldManagement.MoldBrandDetail.query') }}</el-button>
|
|
|
|
|
<el-button @click="handleResetInstall">{{ t('MoldManagement.MoldBrandDetail.reset') }}</el-button>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
<el-table :data="installRecords" :stripe="true" :show-overflow-tooltip="true">
|
|
|
|
|
<el-table-column label="模具名称" prop="moldName" min-width="150" sortable />
|
|
|
|
|
<el-table-column label="设备" prop="deviceName" min-width="120" sortable />
|
|
|
|
|
<el-table-column label="操作人" prop="creatorName" min-width="100" sortable />
|
|
|
|
|
<el-table-column label="备注" prop="remark" min-width="140" />
|
|
|
|
|
<el-table-column label="操作时间" prop="createTime" min-width="180" sortable>
|
|
|
|
|
<el-table-column :label="t('MoldManagement.MoldBrandDetail.moldName')" prop="moldName" min-width="150" sortable />
|
|
|
|
|
<el-table-column :label="t('MoldManagement.MoldBrandDetail.deviceName')" prop="deviceName" min-width="120" sortable />
|
|
|
|
|
<el-table-column :label="t('MoldManagement.MoldBrandDetail.creatorName')" prop="creatorName" min-width="100" sortable />
|
|
|
|
|
<el-table-column :label="t('MoldManagement.MoldBrandDetail.remark')" prop="remark" min-width="140" />
|
|
|
|
|
<el-table-column :label="t('MoldManagement.MoldBrandDetail.createTime')" prop="createTime" min-width="180" sortable>
|
|
|
|
|
<template #default="scope">{{ formatHistoryTime(scope.row.createTime) }}</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
<el-empty v-if="!installRecords.length" description="暂无安装记录" />
|
|
|
|
|
<el-empty v-if="!installRecords.length" :description="t('MoldManagement.MoldBrandDetail.noInstallRecords')" />
|
|
|
|
|
<Pagination :total="installTotal" v-model:page="installPageNo" v-model:limit="installPageSize"
|
|
|
|
|
@pagination="fetchInstallRecords" />
|
|
|
|
|
</div>
|
|
|
|
|
</el-tab-pane>
|
|
|
|
|
</el-tabs>
|
|
|
|
|
</div>
|
|
|
|
|
@ -272,6 +280,7 @@ import QrcodeActionCard from '@/components/QrcodeActionCard/index.vue'
|
|
|
|
|
|
|
|
|
|
defineOptions({ name: 'ErpMoldBrandDetail' })
|
|
|
|
|
|
|
|
|
|
const { t } = useI18n()
|
|
|
|
|
const message = useMessage()
|
|
|
|
|
const route = useRoute()
|
|
|
|
|
const router = useRouter()
|
|
|
|
|
@ -281,6 +290,7 @@ const detailLoading = ref(false)
|
|
|
|
|
const detailData = ref<(MoldBrandVO & Record<string, any>) | null>(null)
|
|
|
|
|
const childMolds = ref<any[]>([])
|
|
|
|
|
const activeTab = ref('molds')
|
|
|
|
|
const loadedTabs = ref<Set<string>>(new Set(['molds']))
|
|
|
|
|
const inspectionHistory = ref<any[]>([])
|
|
|
|
|
const maintainHistory = ref<any[]>([])
|
|
|
|
|
const repairList = ref<any[]>([])
|
|
|
|
|
@ -298,6 +308,10 @@ const repairDateRange = ref<string[] | undefined>()
|
|
|
|
|
const inspectionExportLoading = ref(false)
|
|
|
|
|
const maintainExportLoading = ref(false)
|
|
|
|
|
const repairExportLoading = ref(false)
|
|
|
|
|
const inspectionLoading = ref(false)
|
|
|
|
|
const repairLoading = ref(false)
|
|
|
|
|
const maintainLoading = ref(false)
|
|
|
|
|
const installLoading = ref(false)
|
|
|
|
|
|
|
|
|
|
const imageList = computed(() => parseImages(detailData.value?.images))
|
|
|
|
|
const lifeRate = computed<number | null>(() => {
|
|
|
|
|
@ -340,9 +354,9 @@ const getResultLabel = (value: any) => {
|
|
|
|
|
const v = value === '' || value === null || value === undefined ? undefined : String(value)
|
|
|
|
|
if (!v) return '-'
|
|
|
|
|
const upper = v.toUpperCase()
|
|
|
|
|
if (v === '0') return '待检测'
|
|
|
|
|
if (v === '1' || upper === 'OK') return '通过'
|
|
|
|
|
if (v === '2' || upper === 'NG') return '不通过'
|
|
|
|
|
if (v === '0') return t('MoldManagement.MoldBrandDetail.pending')
|
|
|
|
|
if (v === '1' || upper === 'OK') return t('MoldManagement.MoldBrandDetail.pass')
|
|
|
|
|
if (v === '2' || upper === 'NG') return t('MoldManagement.MoldBrandDetail.fail')
|
|
|
|
|
return v
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -452,8 +466,12 @@ const goBack = () => {
|
|
|
|
|
router.push('/mold/mold-brand')
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const goOperate = (type: number) => {
|
|
|
|
|
router.push({ path: '/mold/mold-brand', query: { operateType: String(type), moldId: String(detailData.value?.id) } })
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const handleReservedAction = (action: string) => {
|
|
|
|
|
message.info(`${action}功能预留中`)
|
|
|
|
|
message.info(t('MoldManagement.MoldBrandDetail.reservedAction', { action }))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let getChildMoldsPromise: Promise<any[]> | null = null
|
|
|
|
|
@ -493,49 +511,69 @@ const collectByChildMolds = async (worker: (moldId: number) => Promise<any>, mer
|
|
|
|
|
|
|
|
|
|
const fetchInspectionHistory = async () => {
|
|
|
|
|
if (!brandId.value) return
|
|
|
|
|
const params: any = { moldId: brandId.value }
|
|
|
|
|
if (inspectionDateRange.value && inspectionDateRange.value.length === 2) {
|
|
|
|
|
params.startTime = inspectionDateRange.value[0]
|
|
|
|
|
params.endTime = inspectionDateRange.value[1]
|
|
|
|
|
inspectionLoading.value = true
|
|
|
|
|
try {
|
|
|
|
|
const params: any = { moldId: brandId.value }
|
|
|
|
|
if (inspectionDateRange.value && inspectionDateRange.value.length === 2) {
|
|
|
|
|
params.startTime = inspectionDateRange.value[0]
|
|
|
|
|
params.endTime = inspectionDateRange.value[1]
|
|
|
|
|
}
|
|
|
|
|
const data = await TicketManagementApi.getInspectionByMoldId(params)
|
|
|
|
|
inspectionHistory.value = Array.isArray(data) ? data : []
|
|
|
|
|
} finally {
|
|
|
|
|
inspectionLoading.value = false
|
|
|
|
|
}
|
|
|
|
|
const data = await TicketManagementApi.getInspectionByMoldId(params)
|
|
|
|
|
inspectionHistory.value = Array.isArray(data) ? data : []
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const fetchMaintainHistory = async () => {
|
|
|
|
|
if (!brandId.value) return
|
|
|
|
|
const params: any = { moldId: brandId.value }
|
|
|
|
|
if (maintainDateRange.value && maintainDateRange.value.length === 2) {
|
|
|
|
|
params.startTime = maintainDateRange.value[0]
|
|
|
|
|
params.endTime = maintainDateRange.value[1]
|
|
|
|
|
maintainLoading.value = true
|
|
|
|
|
try {
|
|
|
|
|
const params: any = { moldId: brandId.value }
|
|
|
|
|
if (maintainDateRange.value && maintainDateRange.value.length === 2) {
|
|
|
|
|
params.startTime = maintainDateRange.value[0]
|
|
|
|
|
params.endTime = maintainDateRange.value[1]
|
|
|
|
|
}
|
|
|
|
|
const data = await TicketManagementApi.getMaintenanceByMoldId(params)
|
|
|
|
|
maintainHistory.value = Array.isArray(data) ? data : []
|
|
|
|
|
} finally {
|
|
|
|
|
maintainLoading.value = false
|
|
|
|
|
}
|
|
|
|
|
const data = await TicketManagementApi.getMaintenanceByMoldId(params)
|
|
|
|
|
maintainHistory.value = Array.isArray(data) ? data : []
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const fetchRepairHistory = async () => {
|
|
|
|
|
if (!brandId.value) return
|
|
|
|
|
const params: any = { moldId: brandId.value }
|
|
|
|
|
if (repairDateRange.value && repairDateRange.value.length === 2) {
|
|
|
|
|
params.startTime = repairDateRange.value[0]
|
|
|
|
|
params.endTime = repairDateRange.value[1]
|
|
|
|
|
repairLoading.value = true
|
|
|
|
|
try {
|
|
|
|
|
const params: any = { moldId: brandId.value }
|
|
|
|
|
if (repairDateRange.value && repairDateRange.value.length === 2) {
|
|
|
|
|
params.startTime = repairDateRange.value[0]
|
|
|
|
|
params.endTime = repairDateRange.value[1]
|
|
|
|
|
}
|
|
|
|
|
const data = await MoldRepairApi.getRepairListByMoldId(params)
|
|
|
|
|
repairList.value = Array.isArray(data) ? data : []
|
|
|
|
|
repairActiveNames.value = repairGroups.value.map((item) => item.key)
|
|
|
|
|
} finally {
|
|
|
|
|
repairLoading.value = false
|
|
|
|
|
}
|
|
|
|
|
const data = await MoldRepairApi.getRepairListByMoldId(params)
|
|
|
|
|
repairList.value = Array.isArray(data) ? data : []
|
|
|
|
|
repairActiveNames.value = repairGroups.value.map((item) => item.key)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const fetchInstallRecords = async () => {
|
|
|
|
|
if (!brandId.value) return
|
|
|
|
|
const params: any = { pageNo: installPageNo.value, pageSize: installPageSize.value, brandId: brandId.value }
|
|
|
|
|
if (installMoldId.value) params.moldId = installMoldId.value
|
|
|
|
|
if (installRemark.value) params.remark = installRemark.value
|
|
|
|
|
if (installDateRange.value && installDateRange.value.length === 2) {
|
|
|
|
|
params.createTime = [installDateRange.value[0], installDateRange.value[1]]
|
|
|
|
|
installLoading.value = true
|
|
|
|
|
try {
|
|
|
|
|
const params: any = { pageNo: installPageNo.value, pageSize: installPageSize.value, brandId: brandId.value }
|
|
|
|
|
if (installMoldId.value) params.moldId = installMoldId.value
|
|
|
|
|
if (installRemark.value) params.remark = installRemark.value
|
|
|
|
|
if (installDateRange.value && installDateRange.value.length === 2) {
|
|
|
|
|
params.createTime = [installDateRange.value[0], installDateRange.value[1]]
|
|
|
|
|
}
|
|
|
|
|
const data = await MoldOperateApi.getMoldOperatePage(params)
|
|
|
|
|
installRecords.value = data?.list ?? []
|
|
|
|
|
installTotal.value = data?.total ?? 0
|
|
|
|
|
} finally {
|
|
|
|
|
installLoading.value = false
|
|
|
|
|
}
|
|
|
|
|
const data = await MoldOperateApi.getMoldOperatePage(params)
|
|
|
|
|
installRecords.value = data?.list ?? []
|
|
|
|
|
installTotal.value = data?.total ?? 0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const handleQueryInstall = () => {
|
|
|
|
|
@ -562,7 +600,7 @@ const handleResetInspection = async () => {
|
|
|
|
|
|
|
|
|
|
const handleExportInspection = async () => {
|
|
|
|
|
inspectionExportLoading.value = true
|
|
|
|
|
message.info('点检记录导出功能待后端确认后接入')
|
|
|
|
|
message.info(t('MoldManagement.MoldBrandDetail.inspectionExportTip'))
|
|
|
|
|
inspectionExportLoading.value = false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -577,7 +615,7 @@ const handleResetMaintain = async () => {
|
|
|
|
|
|
|
|
|
|
const handleExportMaintain = async () => {
|
|
|
|
|
maintainExportLoading.value = true
|
|
|
|
|
message.info('保养记录导出功能待后端确认后接入')
|
|
|
|
|
message.info(t('MoldManagement.MoldBrandDetail.maintainExportTip'))
|
|
|
|
|
maintainExportLoading.value = false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -592,25 +630,50 @@ const handleResetRepair = async () => {
|
|
|
|
|
|
|
|
|
|
const handleExportRepair = async () => {
|
|
|
|
|
repairExportLoading.value = true
|
|
|
|
|
message.info('维修记录导出功能待后端确认后接入')
|
|
|
|
|
message.info(t('MoldManagement.MoldBrandDetail.repairExportTip'))
|
|
|
|
|
repairExportLoading.value = false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const getDetail = async () => {
|
|
|
|
|
if (!brandId.value) {
|
|
|
|
|
message.error('缺少模具组ID')
|
|
|
|
|
message.error(t('MoldManagement.MoldBrandDetail.missingBrandId'))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
detailLoading.value = true
|
|
|
|
|
try {
|
|
|
|
|
detailData.value = await MoldBrandApi.getMoldBrand(brandId.value)
|
|
|
|
|
await getChildMolds()
|
|
|
|
|
await Promise.all([fetchInspectionHistory(), fetchMaintainHistory(), fetchRepairHistory(), fetchInstallRecords()])
|
|
|
|
|
} finally {
|
|
|
|
|
detailLoading.value = false
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const loadTabData = async (tab: string) => {
|
|
|
|
|
if (loadedTabs.value.has(tab)) return
|
|
|
|
|
loadedTabs.value.add(tab)
|
|
|
|
|
switch (tab) {
|
|
|
|
|
case 'inspection':
|
|
|
|
|
await getChildMolds()
|
|
|
|
|
fetchInspectionHistory()
|
|
|
|
|
break
|
|
|
|
|
case 'repair':
|
|
|
|
|
await getChildMolds()
|
|
|
|
|
fetchRepairHistory()
|
|
|
|
|
break
|
|
|
|
|
case 'maintain':
|
|
|
|
|
await getChildMolds()
|
|
|
|
|
fetchMaintainHistory()
|
|
|
|
|
break
|
|
|
|
|
case 'install':
|
|
|
|
|
await getChildMolds()
|
|
|
|
|
fetchInstallRecords()
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
watch(activeTab, (val) => {
|
|
|
|
|
loadTabData(val)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
getDetail()
|
|
|
|
|
})
|
|
|
|
|
|