<template>
|
<div class="page">
|
<div class="page-title">
|
<div>
|
<h2>{{ pageTitle }}</h2>
|
<p>{{ subtitle }}</p>
|
</div>
|
<el-button type="primary" icon="el-icon-s-check" :disabled="selection.length === 0" @click="openApproval">批量审批</el-button>
|
</div>
|
|
<div class="toolbar">
|
<el-input v-model="keyword" placeholder="故障编号 / 装备名称 / 工程名称及损坏情况" clearable style="width:320px" @keyup.enter.native="load"></el-input>
|
<el-button icon="el-icon-search" type="primary" @click="load">查询</el-button>
|
<el-button icon="el-icon-refresh" @click="load">刷新</el-button>
|
<div class="spacer"></div>
|
<span class="selection-tip">已选择 {{ selection.length }} 条</span>
|
</div>
|
|
<div class="table-panel">
|
<el-table :data="rows" border stripe height="calc(100vh - 230px)" :header-cell-style="{ textAlign: 'center' }" @selection-change="selection = $event">
|
<el-table-column type="selection" width="46"></el-table-column>
|
<el-table-column prop="taskStatus" label="任务状态" width="145" fixed>
|
<template slot-scope="{ row }"><el-tag size="mini" :type="taskMeta(row.taskStatus).type">{{ taskMeta(row.taskStatus).text }}</el-tag></template>
|
</el-table-column>
|
<el-table-column prop="faultCode" label="故障编号" width="180" fixed></el-table-column>
|
<el-table-column prop="xNo" label="X号" width="64"></el-table-column>
|
<el-table-column prop="equipmentName" label="装备名称" min-width="210" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="parentSystem" label="所属上级系统" min-width="120"></el-table-column>
|
<el-table-column prop="engineeringNameDesc" label="工程名称及损坏情况" min-width="210" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="repairRequirement" label="修理技术要求" min-width="200" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="engineeringMajor" label="工程专业" width="100"></el-table-column>
|
<el-table-column prop="teamMajor" label="T队专业" width="100"></el-table-column>
|
<el-table-column prop="owner" label="负责人" width="90"></el-table-column>
|
<el-table-column prop="reportUnit" label="上报单位" min-width="130"></el-table-column>
|
<el-table-column prop="reportDate" label="上报日期" width="110" align="center"></el-table-column>
|
<el-table-column prop="faultImpact" label="故障影响" width="100"></el-table-column>
|
<el-table-column prop="faultNature" label="故障性质" width="100" align="center"></el-table-column>
|
<el-table-column prop="majorFaultDesc" label="重大故障描述" min-width="200" show-overflow-tooltip></el-table-column>
|
<el-table-column label="是否自修" width="90" align="center">
|
<template slot-scope="{ row }">{{ yesNo(row.isSelfRepair) }}</template>
|
</el-table-column>
|
<el-table-column label="是否涉H" width="90" align="center">
|
<template slot-scope="{ row }">{{ yesNo(row.isHRelated) }}</template>
|
</el-table-column>
|
<el-table-column label="监测项目" width="90" align="center">
|
<template slot-scope="{ row }">{{ yesNo(row.isMonitorItem) }}</template>
|
</el-table-column>
|
<el-table-column prop="monitorValue" label="监测数值" width="110" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="requestedFinishDate" label="要求完工日期" width="120" align="center"></el-table-column>
|
<el-table-column prop="remark" label="备注" min-width="130" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="contractorNames" label="承修单位" min-width="160" show-overflow-tooltip></el-table-column>
|
</el-table>
|
</div>
|
|
<el-dialog :title="pageTitle + '表单'" :visible.sync="dialogVisible" width="620px" append-to-body>
|
<el-form label-width="90px">
|
<el-form-item label="审批故障">
|
<div class="selected-list">{{ selectedCodes }}</div>
|
</el-form-item>
|
<el-form-item label="审批结果">
|
<el-radio-group v-model="form.result">
|
<el-radio-button label="PASS">通过</el-radio-button>
|
<el-radio-button label="REJECT">不通过</el-radio-button>
|
</el-radio-group>
|
</el-form-item>
|
<el-form-item label="审批意见">
|
<el-input v-model="form.opinion" type="textarea" :rows="3" placeholder="请填写审批意见"></el-input>
|
</el-form-item>
|
<el-alert v-if="form.result === 'REJECT'" :closable="false" type="warning" show-icon title="审批不通过时直接退回XCB助理,任务状态变为“上级打回”。"></el-alert>
|
</el-form>
|
<template slot="footer">
|
<el-button @click="dialogVisible = false">取消</el-button>
|
<el-button type="primary" :loading="saving" @click="submit">提交审批</el-button>
|
</template>
|
</el-dialog>
|
</div>
|
</template>
|
<script>
|
import api from '@/api'
|
import { taskStatuses, statusMeta } from '@/utils/dict'
|
|
export default {
|
name: 'SimpleApproval',
|
data() {
|
return { rows: [], selection: [], keyword: '', dialogVisible: false, saving: false, form: { result: 'PASS', opinion: '' } }
|
},
|
computed: {
|
stage() { return this.$route.meta.stage },
|
pageTitle() {
|
return { CMB: 'CMB领导审批', JCC_ASSISTANT: 'JCC助理审批', JCC_DIRECTOR: 'JCC处长审批' }[this.stage]
|
},
|
subtitle() {
|
return {
|
CMB: '对XCB助理审核完成的故障进行批量通过或退回',
|
JCC_ASSISTANT: '对CMB领导审批完成的故障进行批量通过或退回',
|
JCC_DIRECTOR: '对JCC助理审批完成的故障进行最终审批,通过后进入派单'
|
}[this.stage]
|
},
|
status() {
|
return { CMB: 'XCB_REVIEWED', JCC_ASSISTANT: 'CMB_APPROVED', JCC_DIRECTOR: 'JCC_ASSISTANT_APPROVED' }[this.stage]
|
},
|
selectedCodes() { return this.selection.map(item => item.faultCode).join('、') }
|
},
|
created() { this.load() },
|
methods: {
|
taskMeta(value) { return statusMeta(taskStatuses, value) },
|
yesNo(value) { return Number(value) === 1 ? '是' : '否' },
|
load() {
|
api.get('/faults', { params: { status: this.status, keyword: this.keyword } }).then(res => { this.rows = res.data || [] })
|
},
|
openApproval() {
|
this.form = { ids: this.selection.map(item => item.id), stage: this.stage, result: 'PASS', opinion: '' }
|
this.dialogVisible = true
|
},
|
submit() {
|
this.saving = true
|
api.post('/faults/approve', this.form).then(() => {
|
this.$message.success('审批完成')
|
this.dialogVisible = false
|
this.load()
|
}).finally(() => { this.saving = false })
|
}
|
}
|
}
|
</script>
|
<style scoped>
|
.selection-tip { color: #6d7f91; font-size: 13px; }
|
.selected-list { color: #2c5278; font-weight: 600; }
|
</style>
|