style:模具组-详情-维修记录更换接口

main
黄伟杰 5 days ago
parent 2e6c78fb11
commit 5501c7983e

@ -62,6 +62,10 @@ export const MoldRepairApi = {
return await request.get({ url: `/mes/mold-repair/getRepairListByMoldId`, params })
},
getMoldRepairList: async (params: any) => {
return await request.get({ url: `/mes/mold-repair/list`, params })
},
exportRepairExcel: async (params: { moldId: number; startTime?: string; endTime?: string }) => {
return await request.download({ url: `/mes/mold-repair/export-repair-excel`, params })
}

@ -2573,6 +2573,20 @@ export default {
repairResult: 'Repair Result',
finishDate: 'Finish Date',
totalItems: '{count} items in total',
repairCode: 'Repair Code',
repairName: 'Repair Order',
moldCode: 'Mold Code',
repairStatus: 'Status',
repairStatusPending: 'Pending',
repairStatusDone: 'Completed',
repairResultPending: 'Pending Repair',
repairResultOk: 'Pass',
repairResultNg: 'Fail',
placeholderRepairCode: 'Please enter repair code',
selectRepairStatus: 'Please select status',
requireDate: 'Require Date',
finishDate: 'Finish Date',
acceptUser: 'Repair User',
maintainMethod: 'Maintenance Method',
maintainTime: 'Maintenance Time',
mold: 'Mold',
@ -5059,6 +5073,4 @@ export default {
empty: 'Please configure energy types first',
exportSuccess: 'Export started'
}
}
}
}

@ -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()
}

Loading…
Cancel
Save