| | |
| | | <div class="page-title"> |
| | | <div> |
| | | <h2>故障上报</h2> |
| | | <p>T员录入装备信息和修理要求,故障编号保存后按规则自动生成</p> |
| | | <p>rk_T员录入设备信息和修理要求,故障编号保存后按规则自动生成</p> |
| | | </div> |
| | | <el-button icon="el-icon-plus" type="primary" @click="openCreate">新增故障</el-button> |
| | | </div> |
| | | |
| | | <div class="toolbar query-toolbar"> |
| | | <span class="filter-label">X号</span> |
| | | <span class="filter-label">rk_X号</span> |
| | | <el-select v-model="query.xNo" placeholder="全部" clearable style="width:100px"> |
| | | <el-option v-for="item in xNumbers" :key="item" :label="item" :value="item"></el-option> |
| | | </el-select> |
| | | <span class="filter-label">T队专业</span> |
| | | <span class="filter-label">rk_T队专业</span> |
| | | <el-select v-model="query.teamMajor" placeholder="全部" clearable style="width:130px"> |
| | | <el-option v-for="item in teamMajors" :key="item.id" :label="item.name" :value="item.name"></el-option> |
| | | </el-select> |
| | |
| | | <el-select v-model="query.status" placeholder="全部" clearable style="width:160px"> |
| | | <el-option v-for="(meta, key) in taskStatuses" :key="key" :label="meta.text" :value="key"></el-option> |
| | | </el-select> |
| | | <el-input v-model="query.keyword" placeholder="故障编号/装备名称/工程名称及损坏情况" clearable style="width:320px" @keyup.enter.native="search"></el-input> |
| | | <el-input v-model="query.keyword" placeholder="故障编号/设备名称/工程名称及损坏情况" clearable style="width:320px" @keyup.enter.native="search"></el-input> |
| | | <el-button type="primary" icon="el-icon-search" @click="search">查询</el-button> |
| | | <el-button icon="el-icon-refresh-left" @click="resetQuery">重置</el-button> |
| | | <el-button icon="el-icon-refresh" @click="load">刷新</el-button> |
| | |
| | | </div> |
| | | |
| | | <div class="table-panel"> |
| | | <el-table :data="rows" border stripe height="calc(100vh - 355px)" :header-cell-style="{ textAlign: 'center' }" @selection-change="selection = $event"> |
| | | <el-table :data="rows" border stripe height="calc(100vh - 395px)" :header-cell-style="{ textAlign: 'center' }" @selection-change="selection = $event"> |
| | | <el-table-column type="selection" width="46" :selectable="row => canEdit(row)"></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="xNo" label="rk_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="teamMajor" label="rk_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 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"> |
| | | <el-table-column label="是否涉rk_H" width="90" align="center"> |
| | | <template slot-scope="{ row }">{{ yesNo(row.isHRelated) }}</template> |
| | | </el-table-column> |
| | | <el-table-column label="监测项目" width="90" align="center"> |
| | |
| | | <el-col :span="8"><el-form-item label="故障编号"><el-input v-model="form.faultCode" readonly placeholder="保存后自动生成"></el-input></el-form-item></el-col> |
| | | <el-col :span="8"><el-form-item label="上报单位"><el-input v-model="form.reportUnit"></el-input></el-form-item></el-col> |
| | | <el-col :span="8"><el-form-item label="上报日期"><el-date-picker v-model="form.reportDate" type="date" value-format="yyyy-MM-dd" style="width:100%"></el-date-picker></el-form-item></el-col> |
| | | <el-col :span="8"><el-form-item label="X号"><el-select v-model="form.xNo" filterable placeholder="请选择X号" style="width:100%"><el-option v-for="item in xNumbers" :key="item" :label="item" :value="item"></el-option></el-select></el-form-item></el-col> |
| | | <el-col :span="8"><el-form-item label="rk_X号"><el-select v-model="form.xNo" filterable placeholder="请选择rk_X号" style="width:100%"><el-option v-for="item in xNumbers" :key="item" :label="item" :value="item"></el-option></el-select></el-form-item></el-col> |
| | | <el-col :span="8"><el-form-item label="负责人"><el-input v-model="form.owner"></el-input></el-form-item></el-col> |
| | | <el-col :span="8"><el-form-item label="T队专业"><el-select v-model="form.teamMajor" style="width:100%"><el-option v-for="item in teamMajors" :key="item.id" :label="item.name" :value="item.name"></el-option></el-select></el-form-item></el-col> |
| | | <el-col :span="8"><el-form-item label="rk_T队专业"><el-select v-model="form.teamMajor" style="width:100%"><el-option v-for="item in teamMajors" :key="item.id" :label="item.name" :value="item.name"></el-option></el-select></el-form-item></el-col> |
| | | <el-col :span="8"><el-form-item label="工程专业"><el-select v-model="form.engineeringMajor" style="width:100%"><el-option v-for="item in engineeringMajors" :key="item.id" :label="item.name" :value="item.name"></el-option></el-select></el-form-item></el-col> |
| | | <el-col :span="16"> |
| | | <el-form-item label="装备名称" prop="equipmentName"> |
| | | <el-form-item label="设备名称" prop="equipmentName"> |
| | | <el-input v-model="form.equipmentName" readonly :title="form.equipmentName" placeholder="点击右侧按钮从产品结构树选设备,可多选"> |
| | | <el-button slot="append" icon="el-icon-s-grid" @click="pickerVisible = true">选择装备</el-button> |
| | | <el-button slot="append" icon="el-icon-s-grid" @click="pickerVisible = true">选择设备</el-button> |
| | | </el-input> |
| | | <div v-if="selectedEquipmentIds.length" class="field-tip">已选 {{ selectedEquipmentIds.length }} 台设备</div> |
| | | </el-form-item> |
| | |
| | | <el-col :span="8"><el-form-item label="是否自修"><el-switch v-model="form.isSelfRepair" :active-value="1" :inactive-value="0"></el-switch></el-form-item></el-col> |
| | | </el-row> |
| | | <el-row :gutter="16"> |
| | | <el-col :span="8"><el-form-item label="是否涉H"><el-switch v-model="form.isHRelated" :active-value="1" :inactive-value="0"></el-switch></el-form-item></el-col> |
| | | <el-col :span="8"><el-form-item label="是否涉rk_H"><el-switch v-model="form.isHRelated" :active-value="1" :inactive-value="0"></el-switch></el-form-item></el-col> |
| | | <el-col :span="8"><el-form-item label="是否监测项目"><el-switch v-model="form.isMonitorItem" :active-value="1" :inactive-value="0"></el-switch></el-form-item></el-col> |
| | | <el-col :span="8"><el-form-item label="监测数值"><el-input v-model="form.monitorValue" :disabled="form.isMonitorItem !== 1"></el-input></el-form-item></el-col> |
| | | <el-col :span="24"><el-form-item label="重大故障描述"><el-input v-model="form.majorFaultDesc" type="textarea" :rows="2"></el-input></el-form-item></el-col> |
| | |
| | | natures: ['一般', '重大'], |
| | | form: {}, |
| | | rules: { |
| | | equipmentName: [{ required: true, message: '请选择装备名称', trigger: 'change' }], |
| | | equipmentName: [{ required: true, message: '请选择设备名称', trigger: 'change' }], |
| | | engineeringNameDesc: [{ required: true, message: '请填写工程名称及损坏情况', trigger: 'blur' }] |
| | | } |
| | | } |
| | |
| | | }) |
| | | }, |
| | | loadXNumbers() { |
| | | api.get('/system/tree', { params: { type: 'product' } }).then(res => { |
| | | const values = [] |
| | | const walk = nodes => { |
| | | if (!nodes) return |
| | | nodes.forEach(node => { |
| | | if (node.nodeType === 'X_NO' || node.nodeLevel === 2) values.push(node.name) |
| | | walk(node.children) |
| | | }) |
| | | } |
| | | walk(res.data) |
| | | this.xNumbers = Array.from(new Set(values.filter(Boolean))).sort((a, b) => a.localeCompare(b, 'zh-CN')) |
| | | }) |
| | | api.get('/system/tree/product/x-numbers').then(res => { this.xNumbers = res.data || [] }) |
| | | }, |
| | | queryParams() { |
| | | const range = this.query.reportDateRange || [] |
| | |
| | | reportUnit: sessionStorage.getItem('deptName') || '', |
| | | reportDate: today, |
| | | xNo: '', |
| | | owner: sessionStorage.getItem('realName') || 'T员', |
| | | owner: sessionStorage.getItem('realName') || 'rk_T员', |
| | | teamMajor: (this.teamMajors[0] || {}).name || '', |
| | | engineeringMajor: (this.engineeringMajors[0] || {}).name || '', |
| | | equipmentIds: '', |
| | |
| | | exportCsv() { |
| | | api.get('/faults', { params: this.queryParams() }).then(res => { |
| | | const rows = res.data || [] |
| | | const headers = ['故障编号', 'X号', '装备名称', '任务状态', '工程名称及损坏情况', '上报单位', '上报日期'] |
| | | const headers = ['故障编号', 'rk_X号', '设备名称', '任务状态', '工程名称及损坏情况', '上报单位', '上报日期'] |
| | | const lines = [headers.join(',')].concat(rows.map(row => [ |
| | | row.faultCode, row.xNo, row.equipmentName, this.taskMeta(row.taskStatus).text, |
| | | row.engineeringNameDesc, row.reportUnit, row.reportDate |