|
|
|
|
@ -119,6 +119,17 @@
|
|
|
|
|
<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="t('MoldManagement.MoldBrandDetail.repairCode')">
|
|
|
|
|
<el-input v-model="repairQueryCode" :placeholder="t('MoldManagement.MoldBrandDetail.placeholderRepairCode')" clearable
|
|
|
|
|
@keyup.enter="handleQueryRepair" class="!w-200px" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item :label="t('MoldManagement.MoldBrandDetail.repairStatus')">
|
|
|
|
|
<el-select v-model="repairQueryStatus" :placeholder="t('MoldManagement.MoldBrandDetail.selectRepairStatus')"
|
|
|
|
|
clearable class="!w-150px">
|
|
|
|
|
<el-option :label="t('MoldManagement.MoldBrandDetail.repairStatusPending')" value="0" />
|
|
|
|
|
<el-option :label="t('MoldManagement.MoldBrandDetail.repairStatusDone')" value="1" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<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="t('MoldManagement.MoldBrandDetail.startTime')" :end-placeholder="t('MoldManagement.MoldBrandDetail.endTime')" :range-separator="t('MoldManagement.MoldBrandDetail.to')" :unlink-panels="true"
|
|
|
|
|
@ -131,41 +142,36 @@
|
|
|
|
|
@click="handleExportRepair">{{ t('MoldManagement.MoldBrandDetail.export') }}</el-button>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
<el-empty v-if="!repairGroups.length" />
|
|
|
|
|
<el-empty v-if="!repairList.length" />
|
|
|
|
|
<el-collapse v-else v-model="repairActiveNames" class="device-ledger-repair-collapse">
|
|
|
|
|
<el-collapse-item v-for="group in repairGroups" :key="group.key" :name="group.key">
|
|
|
|
|
<el-collapse-item v-for="row in repairList" :key="row.id ?? row.repairCode" :name="String(row.id ?? row.repairCode)">
|
|
|
|
|
<template #title>
|
|
|
|
|
<div class="device-ledger-repair-title">
|
|
|
|
|
<span class="device-ledger-repair-name">{{ group.name }}</span>
|
|
|
|
|
<span class="device-ledger-repair-meta">{{ t('MoldManagement.MoldBrandDetail.totalItems', { count: group.items.length }) }}</span>
|
|
|
|
|
<span class="device-ledger-repair-name">{{ row.repairCode ?? '-' }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<div class="device-ledger-history-items">
|
|
|
|
|
<div v-for="row in group.items" :key="String(row.id ?? row.subjectId ?? row.subjectCode)"
|
|
|
|
|
class="device-ledger-history-item">
|
|
|
|
|
<div class="device-ledger-history-item-head">
|
|
|
|
|
<el-tag type="info" effect="light">{{ row.subjectCode ?? '-' }}</el-tag>
|
|
|
|
|
<span class="device-ledger-history-item-text">{{ row.subjectName ?? '-' }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="device-ledger-history-item">
|
|
|
|
|
<div class="device-ledger-history-item-body">
|
|
|
|
|
<div class="device-ledger-history-item-row"><span
|
|
|
|
|
class="device-ledger-history-item-label">{{ t('MoldManagement.MoldBrandDetail.projectContent') }}</span><span
|
|
|
|
|
class="device-ledger-history-item-value">{{ row.subjectContent ?? '-' }}</span></div>
|
|
|
|
|
class="device-ledger-history-item-label">{{ t('MoldManagement.MoldBrandDetail.moldCode') }}</span><span
|
|
|
|
|
class="device-ledger-history-item-value">{{ row.moldCode ?? '-' }}</span></div>
|
|
|
|
|
<div class="device-ledger-history-item-row"><span
|
|
|
|
|
class="device-ledger-history-item-label">{{ t('MoldManagement.MoldBrandDetail.repairResult') }}</span><span
|
|
|
|
|
class="device-ledger-history-item-label">{{ t('MoldManagement.MoldBrandDetail.repairStatus') }}</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>
|
|
|
|
|
:type="getRepairStatusTagType(row.status)">{{
|
|
|
|
|
getRepairStatusLabel(row.status) }}</el-tag></span></div>
|
|
|
|
|
<div class="device-ledger-history-item-row"><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>
|
|
|
|
|
class="device-ledger-history-item-label">{{ t('EquipmentManagement.DvRepair.repairStatus') }}</span><span
|
|
|
|
|
class="device-ledger-history-item-value"><el-tag
|
|
|
|
|
:type="getRepairResultTagType(row.repairStatus)">{{
|
|
|
|
|
getRepairResultLabel(row.repairStatus) }}</el-tag></span></div>
|
|
|
|
|
<div class="device-ledger-history-item-row"><span
|
|
|
|
|
class="device-ledger-history-item-label">{{ t('MoldManagement.MoldBrandDetail.requireDate') }}</span><span
|
|
|
|
|
class="device-ledger-history-item-value">{{ formatHistoryTime(row.requireDate) }}</span></div>
|
|
|
|
|
<div class="device-ledger-history-item-row"><span
|
|
|
|
|
class="device-ledger-history-item-label">{{ t('MoldManagement.MoldBrandDetail.remark') }}</span><span
|
|
|
|
|
class="device-ledger-history-item-value">{{
|
|
|
|
|
row.remark ?? '-' }}</span></div>
|
|
|
|
|
class="device-ledger-history-item-label">{{ t('MoldManagement.MoldBrandDetail.finishDate') }}</span><span
|
|
|
|
|
class="device-ledger-history-item-value">{{ formatHistoryTime(row.finishDate) }}</span></div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
@ -232,7 +238,7 @@
|
|
|
|
|
<div v-loading="installLoading">
|
|
|
|
|
<el-form :inline="true" class="device-ledger-tab-toolbar">
|
|
|
|
|
<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"
|
|
|
|
|
class="!w-240px"><el-option v-for="item in moldList" :key="item.id" :label="item.name"
|
|
|
|
|
:value="item.id" /></el-select></el-form-item>
|
|
|
|
|
<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>
|
|
|
|
|
@ -263,10 +269,10 @@
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<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>
|
|
|
|
|
<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-column :label="t('MoldManagement.MoldBrandDetail.remark')" prop="remark" min-width="140" />
|
|
|
|
|
</el-table>
|
|
|
|
|
<el-empty v-if="!installRecords.length" :description="t('MoldManagement.MoldBrandDetail.noInstallRecords')" />
|
|
|
|
|
<Pagination :total="installTotal" v-model:page="installPageNo" v-model:limit="installPageSize"
|
|
|
|
|
@ -308,6 +314,8 @@ const loadedTabs = ref<Set<string>>(new Set(['molds']))
|
|
|
|
|
const inspectionHistory = ref<any[]>([])
|
|
|
|
|
const maintainHistory = ref<any[]>([])
|
|
|
|
|
const repairList = ref<any[]>([])
|
|
|
|
|
const repairQueryCode = ref<string | undefined>()
|
|
|
|
|
const repairQueryStatus = ref<string | undefined>()
|
|
|
|
|
const installRecords = ref<any[]>([])
|
|
|
|
|
const installTotal = ref(0)
|
|
|
|
|
const installPageNo = ref(1)
|
|
|
|
|
@ -316,6 +324,7 @@ const installMoldId = ref<number | undefined>()
|
|
|
|
|
const installRemark = ref<string | undefined>()
|
|
|
|
|
const installDateRange = ref<string[] | undefined>()
|
|
|
|
|
const installOperateType = ref<string | undefined>()
|
|
|
|
|
const moldList = ref<any[]>([])
|
|
|
|
|
const repairActiveNames = ref<string[]>([])
|
|
|
|
|
const inspectionDateRange = ref<string[] | undefined>()
|
|
|
|
|
const maintainDateRange = ref<string[] | undefined>()
|
|
|
|
|
@ -384,6 +393,36 @@ const getResultTagType = (value: any) => {
|
|
|
|
|
return 'info'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const getRepairStatusLabel = (value: any) => {
|
|
|
|
|
const v = value === '' || value === null || value === undefined ? undefined : String(value)
|
|
|
|
|
if (v === '0') return t('MoldManagement.MoldBrandDetail.repairStatusPending')
|
|
|
|
|
if (v === '1') return t('MoldManagement.MoldBrandDetail.repairStatusDone')
|
|
|
|
|
return '-'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const getRepairStatusTagType = (value: any) => {
|
|
|
|
|
const v = value === '' || value === null || value === undefined ? undefined : String(value)
|
|
|
|
|
if (v === '1') return 'success'
|
|
|
|
|
if (v === '0') return 'warning'
|
|
|
|
|
return 'info'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const getRepairResultLabel = (value: any) => {
|
|
|
|
|
const v = value === '' || value === null || value === undefined ? undefined : String(value)
|
|
|
|
|
if (v === '0') return t('MoldManagement.MoldBrandDetail.repairResultPending')
|
|
|
|
|
if (v === '1') return t('MoldManagement.MoldBrandDetail.repairResultOk')
|
|
|
|
|
if (v === '2') return t('MoldManagement.MoldBrandDetail.repairResultNg')
|
|
|
|
|
return '-'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const getRepairResultTagType = (value: any) => {
|
|
|
|
|
const v = value === '' || value === null || value === undefined ? undefined : String(value)
|
|
|
|
|
if (v === '1') return 'success'
|
|
|
|
|
if (v === '2') return 'danger'
|
|
|
|
|
if (v === '0') return 'info'
|
|
|
|
|
return 'info'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type HistoryStepItem = {
|
|
|
|
|
key: string
|
|
|
|
|
name: string
|
|
|
|
|
@ -449,18 +488,6 @@ const maintainStepGroups = computed(() =>
|
|
|
|
|
})
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
const repairGroups = computed(() => {
|
|
|
|
|
const groupsMap = new Map<string, { key: string; name: string; items: any[] }>()
|
|
|
|
|
for (const row of repairList.value ?? []) {
|
|
|
|
|
const key = String(row.repairCode ?? row.repairId ?? row.subjectName ?? '-')
|
|
|
|
|
if (!groupsMap.has(key)) {
|
|
|
|
|
groupsMap.set(key, { key, name: String(row.repairName ?? row.repairCode ?? key), items: [] })
|
|
|
|
|
}
|
|
|
|
|
groupsMap.get(key)!.items.push(row)
|
|
|
|
|
}
|
|
|
|
|
return Array.from(groupsMap.values())
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
const getQrcodeRefreshUrl = () => {
|
|
|
|
|
if (!detailData.value?.id || !detailData.value?.code) return ''
|
|
|
|
|
return `/erp/mold-brand/regenerate-code?id=${detailData.value.id}&code=${encodeURIComponent(String(detailData.value.code))}`
|
|
|
|
|
@ -561,13 +588,14 @@ const fetchRepairHistory = async () => {
|
|
|
|
|
repairLoading.value = true
|
|
|
|
|
try {
|
|
|
|
|
const params: any = { moldId: brandId.value }
|
|
|
|
|
if (repairQueryCode.value) params.repairCode = repairQueryCode.value
|
|
|
|
|
if (repairQueryStatus.value) params.status = repairQueryStatus.value
|
|
|
|
|
if (repairDateRange.value && repairDateRange.value.length === 2) {
|
|
|
|
|
params.startTime = repairDateRange.value[0]
|
|
|
|
|
params.endTime = repairDateRange.value[1]
|
|
|
|
|
params.requireDate = [repairDateRange.value[0], repairDateRange.value[1]]
|
|
|
|
|
}
|
|
|
|
|
const data = await MoldRepairApi.getRepairListByMoldId(params)
|
|
|
|
|
const data = await MoldRepairApi.getMoldRepairList(params)
|
|
|
|
|
repairList.value = Array.isArray(data) ? data : []
|
|
|
|
|
repairActiveNames.value = repairGroups.value.map((item) => item.key)
|
|
|
|
|
repairActiveNames.value = repairList.value.map((row: any) => String(row.id ?? row.repairCode))
|
|
|
|
|
} finally {
|
|
|
|
|
repairLoading.value = false
|
|
|
|
|
}
|
|
|
|
|
@ -577,6 +605,7 @@ const fetchInstallRecords = async () => {
|
|
|
|
|
if (!brandId.value) return
|
|
|
|
|
installLoading.value = true
|
|
|
|
|
try {
|
|
|
|
|
moldList.value = await MoldBrandApi.getBrandList()
|
|
|
|
|
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
|
|
|
|
|
@ -641,6 +670,8 @@ const handleQueryRepair = async () => {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const handleResetRepair = async () => {
|
|
|
|
|
repairQueryCode.value = undefined
|
|
|
|
|
repairQueryStatus.value = undefined
|
|
|
|
|
repairDateRange.value = undefined
|
|
|
|
|
await fetchRepairHistory()
|
|
|
|
|
}
|
|
|
|
|
|