feat:设备台账-关键件/备件添加导出按钮

main
黄伟杰 2 weeks ago
parent b20046c3a1
commit 338c26c943

@ -28,6 +28,9 @@ export const CriticalComponentApi = {
exportCriticalComponent: async (params: any) => {
return await request.download({ url: `/mes/critical-component/export-excel`, params })
},
exportDeviceComponent: async (params: any) => {
return await request.download({ url: `/mes/critical-component/export-device-component`, params })
}
}

@ -73,5 +73,7 @@ export const DeviceLedgerApi = {
exportDeviceLedger: async (params) => {
return await request.download({ url: `/mes/device-ledger/export-excel`, params })
},
exportSpareBased: async (params) => {
return await request.download({ url: `/mes/device-ledger/export-spare-based`, params })
}
}

@ -127,18 +127,18 @@ link type="danger" @click="handleDelete(scope.row.id)"
<el-descriptions-item label="设备状态">
<dict-tag type="mes_tz_status" :value="detailData?.deviceStatus" />
</el-descriptions-item>
<el-descriptions-item label="设备品牌">{{ detailData?.deviceBrand ?? '' }}</el-descriptions-item>
<!-- <el-descriptions-item label="设备品牌">{{ detailData?.deviceBrand ?? '' }}</el-descriptions-item> -->
<el-descriptions-item label="设备型号">{{ detailData?.deviceModel ?? '' }}</el-descriptions-item>
<el-descriptions-item label="设备规格">{{ detailData?.deviceSpec ?? '' }}</el-descriptions-item>
<el-descriptions-item label="设备类型">
<el-tag effect="light">{{ getDeviceTypeName(detailData?.deviceTypeName ?? detailData?.deviceType)
}}</el-tag>
</el-descriptions-item>
<el-descriptions-item label="供应商">{{ detailData?.supplier ?? '' }}</el-descriptions-item>
<!-- <el-descriptions-item label="供应商">{{ detailData?.supplier ?? '' }}</el-descriptions-item> -->
<el-descriptions-item label="所属车间">{{ detailData?.workshop ?? '' }}</el-descriptions-item>
<el-descriptions-item label="所属系统组织">{{ detailData?.systemOrg ?? '' }}</el-descriptions-item>
<!-- <el-descriptions-item label="所属系统组织">{{ detailData?.systemOrg ?? '' }}</el-descriptions-item> -->
<el-descriptions-item label="设备位置">{{ detailData?.deviceLocation ?? '' }}</el-descriptions-item>
<el-descriptions-item label="设备负责人">{{ detailData?.deviceManager ?? '' }}</el-descriptions-item>
<el-descriptions-item label="设备负责人">{{ detailData?.deviceManagerName ?? '' }}</el-descriptions-item>
<el-descriptions-item label="设备生产日期">{{ formatDetailDate(detailData?.productionDate) }}</el-descriptions-item>
<el-descriptions-item label="设备入厂日期">{{ formatDetailDate(detailData?.factoryEntryDate)
}}</el-descriptions-item>
@ -334,35 +334,66 @@ link type="danger" @click="handleDelete(scope.row.id)"
</el-collapse>
</el-tab-pane>
<el-tab-pane label="关键件" name="criticalComponent">
<el-table v-loading="loading" :data="detailData?.componentList" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="编码" align="center" prop="code" min-width="140" />
<el-table-column label="名称" align="center" prop="name" min-width="140" />
<el-table-column label="描述" align="center" prop="description" min-width="180" />
<el-table-column label="备注" align="center" prop="remark" min-width="180" />
<el-table-column label="创建时间" align="center" prop="createTime" :formatter="dateFormatter" width="180" />
</el-table>
<div class="device-ledger-tab-toolbar">
<el-button
type="success"
plain
:loading="criticalExportLoading"
@click="handleExportCriticalComponent"
v-hasPermi="['mes:device-ledger:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button>
</div>
<el-table
v-loading="loading"
:data="detailData?.componentList"
:stripe="true"
:show-overflow-tooltip="true"
>
<el-table-column label="编码" align="center" prop="code" min-width="140" />
<el-table-column label="名称" align="center" prop="name" min-width="140" />
<el-table-column label="描述" align="center" prop="description" min-width="180" />
<el-table-column label="备注" align="center" prop="remark" min-width="180" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180"
/>
</el-table>
</el-tab-pane>
<el-tab-pane label="备件" name="component">
<el-table v-loading="loading" :data="detailData?.beijianList" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="备件编码" align="center" prop="barCode" />
<el-table-column label="备件名称" align="left" prop="name" width="220px"/>
<!-- <el-table-column v-if="checkPermi(['erp:component:standard'])" label="规格" align="center" prop="standard" /> -->
<el-table-column label="分类" align="center" prop="categoryName" />
<el-table-column label="单位" align="center" prop="unitName" />
<!-- <el-table-column label="预警库存" align="center" prop="safetyNumber" /> -->
<!-- <el-table-column label="状态" align="center" prop="status">
<template #default="scope">
<dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
</template>
</el-table-column> -->
<el-table-column
label="创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180px"
/>
</el-table>
<div class="device-ledger-tab-toolbar">
<el-button
type="success"
plain
:loading="spareExportLoading"
@click="handleExportSpareBased"
v-hasPermi="['mes:device-ledger:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button>
</div>
<el-table
v-loading="loading"
:data="detailData?.beijianList"
:stripe="true"
:show-overflow-tooltip="true"
>
<el-table-column label="备件编码" align="center" prop="barCode" />
<el-table-column label="备件名称" align="left" prop="name" width="220px" />
<el-table-column label="分类" align="center" prop="categoryName" />
<el-table-column label="单位" align="center" prop="unitName" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180px"
/>
</el-table>
</el-tab-pane>
<el-tab-pane label="模具" name="mold">
<el-table v-loading="loading" :data="detailData?.moldList" :stripe="true" :show-overflow-tooltip="true">
@ -387,6 +418,7 @@ import { dateFormatter, dateFormatter2, formatDate } from '@/utils/formatTime'
import download from '@/utils/download'
import { DeviceLedgerApi, DeviceLedgerVO } from '@/api/mes/deviceledger'
import { DeviceTypeApi, DeviceTypeTreeVO } from '@/api/mes/devicetype'
import { CriticalComponentApi } from '@/api/mes/criticalComponent'
import DeviceLedgerForm from './DeviceLedgerForm.vue'
import { getIntDictOptions } from '@/utils/dict'
import { isHexColor } from '@/utils/color'
@ -411,6 +443,8 @@ const queryParams = reactive({
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const criticalExportLoading = ref(false)
const spareExportLoading = ref(false)
const tableRef = ref()
const selectedIds = ref<number[]>([])
@ -775,6 +809,38 @@ const handleExport = async () => {
}
}
const handleExportCriticalComponent = async () => {
if (!selectedDetailId.value) {
message.error('请先选择设备')
return
}
try {
await message.exportConfirm()
criticalExportLoading.value = true
const data = await CriticalComponentApi.exportDeviceComponent({ id: selectedDetailId.value })
download.excel(data, '关键件.xls')
} catch {
} finally {
criticalExportLoading.value = false
}
}
const handleExportSpareBased = async () => {
if (!selectedDetailId.value) {
message.error('请先选择设备')
return
}
try {
await message.exportConfirm()
spareExportLoading.value = true
const data = await DeviceLedgerApi.exportSpareBased({ id: selectedDetailId.value })
download.excel(data, '备件.xls')
} catch {
} finally {
spareExportLoading.value = false
}
}
/** 初始化 **/
onMounted(async () => {
await dictStore.setDictMap()
@ -831,6 +897,11 @@ onMounted(async () => {
color: var(--el-text-color-secondary);
}
.device-ledger-tab-toolbar {
margin-bottom: 8px;
text-align: right;
}
.device-ledger-history-items {
display: flex;
flex-direction: column;

Loading…
Cancel
Save