2025-11-15 23:38:08 +08:00
|
|
|
|
<template>
|
|
|
|
|
|
<div class="app-container">
|
|
|
|
|
|
<!-- 列表 -->
|
|
|
|
|
|
<el-card>
|
|
|
|
|
|
<el-row class="mb8" :gutter="10" justify="end">
|
|
|
|
|
|
<el-col :span="4">
|
|
|
|
|
|
<span style="font-size: 20px; font-weight: 800">申请列表</span>
|
|
|
|
|
|
</el-col>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
|
|
|
|
|
|
<el-table
|
|
|
|
|
|
v-loading="isLoading"
|
|
|
|
|
|
:data="tableList"
|
|
|
|
|
|
highlight-current-row
|
|
|
|
|
|
border
|
|
|
|
|
|
stripe
|
|
|
|
|
|
:max-height="650"
|
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
|
>
|
|
|
|
|
|
<!-- 序号列 -->
|
|
|
|
|
|
<el-table-column
|
|
|
|
|
|
type="index"
|
|
|
|
|
|
width="55"
|
|
|
|
|
|
label="序号"
|
|
|
|
|
|
align="center"
|
|
|
|
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 动态列 -->
|
|
|
|
|
|
<el-table-column
|
|
|
|
|
|
v-for="(column, index) in tableColumns"
|
|
|
|
|
|
:key="index"
|
|
|
|
|
|
:label="column.label"
|
|
|
|
|
|
:prop="column.prop"
|
|
|
|
|
|
:width="column.width"
|
|
|
|
|
|
:min-width="column.minWidth"
|
|
|
|
|
|
align="center"
|
|
|
|
|
|
show-overflow-tooltip
|
|
|
|
|
|
>
|
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
|
<span v-if="!column.render">{{ scope.row[column.prop] }}</span>
|
|
|
|
|
|
<component
|
|
|
|
|
|
v-else
|
|
|
|
|
|
:is="{ render: (h) => column.render(h, { row: scope.row }) }"
|
|
|
|
|
|
/>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
</el-table-column>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 附件列 -->
|
|
|
|
|
|
<el-table-column label="附件" align="center" width="90">
|
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
|
<el-button
|
|
|
|
|
|
size="mini"
|
|
|
|
|
|
type="text"
|
|
|
|
|
|
@click="picturePreview(scope.row)"
|
|
|
|
|
|
v-if="scope.row.url"
|
|
|
|
|
|
>
|
|
|
|
|
|
查看
|
|
|
|
|
|
</el-button>
|
|
|
|
|
|
<span v-else>无</span>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
</el-table-column>
|
2025-11-16 00:52:02 +08:00
|
|
|
|
<el-table-column label="状态" align="center" prop="status" width="90">
|
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
|
<el-tag
|
|
|
|
|
|
:type="scope.row.status === '通过' ? 'success' : scope.row.status === '驳回' ? 'danger' : 'warning'"
|
|
|
|
|
|
size="small"
|
|
|
|
|
|
>
|
|
|
|
|
|
{{ scope.row.status }}
|
|
|
|
|
|
</el-tag>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
</el-table-column>
|
2025-11-15 23:38:08 +08:00
|
|
|
|
|
|
|
|
|
|
</el-table>
|
|
|
|
|
|
</el-card>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 图片查看弹窗 -->
|
|
|
|
|
|
<el-dialog :visible.sync="dialogVisible" width="500px" height="500px">
|
|
|
|
|
|
<img width="100%" height="500px" :src="dialogImageUrl" />
|
|
|
|
|
|
</el-dialog>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
|
import { getRepairDetailsList } from "@/api/equipmentRepair";
|
|
|
|
|
|
|
|
|
|
|
|
export default {
|
|
|
|
|
|
name: 'ViewRepairListNoPagination',
|
|
|
|
|
|
data() {
|
|
|
|
|
|
return {
|
|
|
|
|
|
routerParams: {},
|
|
|
|
|
|
isLoading: false,
|
|
|
|
|
|
queryParams: {
|
|
|
|
|
|
parentTypeName: null,
|
|
|
|
|
|
typeName: null,
|
|
|
|
|
|
manageType: null,
|
|
|
|
|
|
applyId: null,
|
|
|
|
|
|
id: null
|
|
|
|
|
|
},
|
|
|
|
|
|
dialogImageUrl: '',
|
|
|
|
|
|
dialogVisible: false,
|
|
|
|
|
|
tableList: [],
|
|
|
|
|
|
tableColumns: [
|
|
|
|
|
|
{ label: '分类', prop: 'type', width: 75 },
|
|
|
|
|
|
{ label: '类目', prop: 'groupName' },
|
|
|
|
|
|
{ label: '名称', prop: 'typeName' },
|
|
|
|
|
|
{ label: '规格型号', prop: 'typeModelName' },
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '管理模式',
|
|
|
|
|
|
prop: 'manageType',
|
|
|
|
|
|
width: '80',
|
|
|
|
|
|
render: (h, { row }) => h('span', {}, row.manageType === '0' ? '数量管理' : '编码管理')
|
|
|
|
|
|
},
|
|
|
|
|
|
{ label: '设备编码', prop: 'code' },
|
|
|
|
|
|
{ label: '维修数量', prop: 'repairNum', width: 80 },
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '维修是否合格',
|
|
|
|
|
|
prop: 'isScrap',
|
|
|
|
|
|
width: '120',
|
|
|
|
|
|
render: (h, { row }) => h('span', {}, row.isScrap === '0' ? '是' : '否')
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '维修日期',
|
|
|
|
|
|
prop: 'repairTime',
|
|
|
|
|
|
width: '150',
|
|
|
|
|
|
render: (h, { row }) => h('span', {}, row.repairTime || '-')
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
label: '退役原因',
|
|
|
|
|
|
prop: 'reasonVal',
|
|
|
|
|
|
width: '120',
|
|
|
|
|
|
render: (h, { row }) => h('span', {}, row.reasonVal || '-')
|
|
|
|
|
|
},
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
created() {
|
|
|
|
|
|
this.routerParams = this.$route.query
|
|
|
|
|
|
const title = this.routerParams.isView ? '维修查看' : '列表查看'
|
|
|
|
|
|
this.queryParams.id = this.routerParams.applyId || ''
|
|
|
|
|
|
this.$tab.updatePage(Object.assign({}, this.$route, { title }))
|
|
|
|
|
|
this.getList()
|
|
|
|
|
|
},
|
|
|
|
|
|
methods: {
|
|
|
|
|
|
async getList() {
|
|
|
|
|
|
this.isLoading = true
|
|
|
|
|
|
try {
|
|
|
|
|
|
const res = await getRepairDetailsList({ ...this.queryParams })
|
|
|
|
|
|
this.tableList = res.data || []
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
this.isLoading = false
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
// 图片预览
|
|
|
|
|
|
picturePreview(row) {
|
|
|
|
|
|
if (row.url) {
|
|
|
|
|
|
this.dialogImageUrl = row.url.replaceAll('#', '%23')
|
|
|
|
|
|
// 从URL中提取文件名
|
|
|
|
|
|
const urlParts = row.url.split('/');
|
|
|
|
|
|
const fileNameWithParams = urlParts[urlParts.length - 1];
|
|
|
|
|
|
|
|
|
|
|
|
// 去除URL参数,获取纯文件名
|
|
|
|
|
|
const fileName = fileNameWithParams.split('?')[0];
|
|
|
|
|
|
const parts = fileName.split('.')
|
|
|
|
|
|
const extension = parts.pop().toLowerCase()
|
|
|
|
|
|
if (['doc', 'docx', 'pdf'].includes(extension)) {
|
|
|
|
|
|
window.open(row.url, fileName)
|
|
|
|
|
|
} else {
|
|
|
|
|
|
this.dialogVisible = true
|
|
|
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
|
|
|
this.$message.warning('该行没有附件')
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
</script>
|