| | |
| | | @keyup.enter.native="handleQuery" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="故障类型" prop="workOrderNo"> |
| | | <el-select v-model="queryParams.errorType" placeholder="故障类型" clearable @clear="handleQuery"> |
| | | <el-option label="市政施工" value="市政施工"></el-option> |
| | | <el-option label="设备遗失" value="设备遗失"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="运维处理时间"> |
| | | <el-date-picker |
| | | clearable |
| | |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | <el-row :gutter="10" class="mb8"> |
| | | <!-- <el-col :span="1.5">--> |
| | | <!-- <el-button--> |
| | | <!-- type="primary"--> |
| | | <!-- plain--> |
| | | <!-- icon="el-icon-plus"--> |
| | | <!-- size="mini"--> |
| | | <!-- @click="handleAdd"--> |
| | | <!-- v-hasPermi="['x:work-order:add']"--> |
| | | <!-- >新增</el-button>--> |
| | | <!-- </el-col>--> |
| | | <!-- <el-col :span="1.5">--> |
| | | <!-- <el-button--> |
| | | <!-- type="success"--> |
| | | <!-- plain--> |
| | | <!-- icon="el-icon-edit"--> |
| | | <!-- size="mini"--> |
| | | <!-- :disabled="single"--> |
| | | <!-- @click="handleUpdate"--> |
| | | <!-- v-hasPermi="['x:work-order:edit']"--> |
| | | <!-- >修改</el-button>--> |
| | | <!-- </el-col>--> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="danger" |
| | | plain |
| | | icon="el-icon-delete" |
| | | size="mini" |
| | | :disabled="multiple" |
| | | @click="handleDelete" |
| | | >删除</el-button> |
| | | <el-row> |
| | | <el-col :span="8" v-for="item in workOrderList" :key="item" style="width: 390px;margin-left: 40px;margin-top:20px;"> |
| | | <el-card :body-style="{ padding: '0px' }"> |
| | | <el-image :preview-src-list="['https://img2.baidu.com/it/u=68398439,1553004927&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=357']" fit="cover" src="https://img2.baidu.com/it/u=68398439,1553004927&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=357" class="image"/> |
| | | <div style="padding-right: 10px;padding-top: 10px;float: right;"> |
| | | <el-row> |
| | | <el-col :span="24" class="time">故障类型:<el-tag size="small" type="danger">市政施工</el-tag></el-col> |
| | | </el-row> |
| | | <el-row class="work-order-item"> |
| | | <el-col class="time" :span="24">运维人员:{{ item.ywPeopleName }}</el-col> |
| | | </el-row> |
| | | <el-row class="work-order-item"> |
| | | <el-col class="time" :span="24">运维单位:{{ item.unitName }}</el-col> |
| | | </el-row> |
| | | <el-row class="work-order-item"> |
| | | <el-col :span="24" class="time">工单编号:{{ item.workOrderNo }}</el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="24" class="time">处理时间:{{ item.ywHandleTime }}</el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | @click="handleAuditing(item)" |
| | | v-hasPermi="['work:order:audit']" |
| | | >审核</el-button> |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | @click="handleYwCondition(item)" |
| | | >运维情况</el-button> |
| | | <!-- <el-button--> |
| | | <!-- size="mini"--> |
| | | <!-- type="text"--> |
| | | <!-- @click="handleYwResult(scope.row)"--> |
| | | <!-- >运维结果</el-button>--> |
| | | <!-- <el-button--> |
| | | <!-- size="mini"--> |
| | | <!-- type="text"--> |
| | | <!-- @click="handleCheckResult(item)"--> |
| | | <!-- v-hasPermi="['work:order:result']"--> |
| | | <!-- >检测结果</el-button>--> |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | @click="handleFlow(item)" |
| | | >过程图</el-button> |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | @click="handleReport(item)" |
| | | >事后报备</el-button> |
| | | </el-row> |
| | | </div> |
| | | </el-card> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="warning" |
| | | plain |
| | | icon="el-icon-download" |
| | | size="mini" |
| | | @click="handleExport" |
| | | v-hasPermi="['x:work-order:export']" |
| | | >导出</el-button> |
| | | </el-col> |
| | | <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> |
| | | </el-row> |
| | | |
| | | <el-table v-loading="loading" :data="workOrderList" @selection-change="handleSelectionChange"> |
| | | <el-table-column type="selection" width="55" align="center" /> |
| | | <el-table-column label="工单号" align="center" prop="workOrderNo" width="170"/> |
| | | <el-table-column label="工单来源" align="center" prop="source" width="170"/> |
| | | <el-table-column label="故障类型" align="center" prop="errorType" width="170"/> |
| | | <el-table-column label="运维单位" align="center" prop="unitName" width="150"/> |
| | | <el-table-column label="运维人员" align="center" prop="ywPeopleName" /> |
| | | <el-table-column label="运维处理时间" align="center" prop="ywHandleTime" width="180"/> |
| | | <el-table-column label="运维结果" align="center" prop="ywResult" /> |
| | | <el-table-column label="运维情况" align="center" prop="ywCondition" width="150"/> |
| | | <el-table-column label="运维检测结果" align="center" prop="ywCheckResult" width="230"/> |
| | | <el-table-column label="创建时间" align="center" prop="createTime" width="180"/> |
| | | |
| | | <el-table-column label="操作" fixed="right" width="150" align="center" class-name="small-padding fixed-width"> |
| | | <template slot-scope="scope"> |
| | | <!-- <el-button--> |
| | | <!-- size="mini"--> |
| | | <!-- type="text"--> |
| | | <!-- icon="el-icon-edit"--> |
| | | <!-- @click="handleUpdate(scope.row)"--> |
| | | <!-- v-hasPermi="['x:work-order:edit']"--> |
| | | <!-- >修改</el-button>--> |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | @click="handleAuditing(scope.row)" |
| | | >审核</el-button> |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | @click="handleYwCondition(scope.row)" |
| | | >运维情况</el-button> |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | @click="handleYwResult(scope.row)" |
| | | >运维结果</el-button> |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | @click="handleCheckResult(scope.row)" |
| | | >检测结果</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <pagination |
| | | v-show="total>0" |
| | |
| | | :limit.sync="queryParams.pageSize" |
| | | @pagination="getList" |
| | | /> |
| | | |
| | | <!-- 事后报备 --> |
| | | <el-dialog title="事后报备" :visible.sync="reportOpen" width="600px" append-to-body> |
| | | <el-form ref="reportForm" :model="reportForm" :rules="reportFormRules" label-width="80px"> |
| | | <el-form-item label="点位" prop="pointId"> |
| | | <el-input v-model="reportForm.pointId" disabled /> |
| | | </el-form-item> |
| | | <el-form-item label="报备类型"> |
| | | <el-input v-model="reportForm.reportType" disabled /> |
| | | </el-form-item> |
| | | <el-form-item label="故障类型" prop="errorType"> |
| | | <el-select v-model="reportForm.errorType"> |
| | | <el-option label="市政施工" value="市政施工"/> |
| | | <el-option label="设备故障" value="设备故障"/> |
| | | <el-option label="设备遗失" value="设备遗失"/> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="报备内容" prop="reportContent"> |
| | | <editor v-model="reportForm.reportContent" :min-height="192"/> |
| | | </el-form-item> |
| | | <el-form-item label="上报材料" prop="reportMaterials"> |
| | | <file-upload v-model="reportForm.reportMaterials"/> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button type="primary" @click="submitReportForm">提 交</el-button> |
| | | <el-button @click="reportOpen = false">取 消</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | |
| | | <el-dialog title="工单审核" :visible.sync="auditingOpen" width="500px" append-to-body> |
| | | <el-form ref="auditingForm" :model="auditingForm" :rules="auditingRules" label-width="80px"> |
| | |
| | | <el-form-item label="运维人员" prop="ywPeopleName"> |
| | | <el-input v-model="ywConditionForm.ywPeopleName" disabled /> |
| | | </el-form-item> |
| | | <el-form-item label="现场图片" prop="picture"> |
| | | <el-upload |
| | | class="avatar-uploader" |
| | | action="/dev-api/common/upload" |
| | | name="file" |
| | | :headers="{'Authorization': 'Bearer ' + getToken()}" |
| | | :on-success="pictureUploadSuccess" |
| | | :on-remove="pictureRemove" |
| | | :file-list="pictureList" |
| | | list-type="picture"> |
| | | <el-button size="small" type="primary">点击上传</el-button> |
| | | <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> |
| | | </el-upload> |
| | | </el-form-item> |
| | | <el-form-item label="佐证材料" prop="certificates"> |
| | | <el-upload |
| | | class="avatar-uploader" |
| | | action="/dev-api/common/upload" |
| | | name="file" |
| | | :headers="{'Authorization': 'Bearer ' + getToken()}" |
| | | :on-success="certificateUploadSuccess" |
| | | :on-remove="certificateRemove" |
| | | :file-list="certificateList" |
| | | list-type="picture"> |
| | | <el-button size="small" type="primary">点击上传</el-button> |
| | | <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> |
| | | </el-upload> |
| | | </el-form-item> |
| | | <el-form-item label="运维情况" prop="ywCondition"> |
| | | <el-input v-model="ywConditionForm.ywCondition" type="textarea" maxlength="150" show-word-limit/> |
| | | </el-form-item> |
| | |
| | | </div> |
| | | </el-dialog> |
| | | |
| | | <el-dialog title="运维检测结果" :visible.sync="checkResultOpen" width="500px" append-to-body> |
| | | <el-dialog title="运维检测结果" :visible.sync="checkResultOpen" width="550px" append-to-body> |
| | | <el-form ref="ywResultForm" :model="checkResultForm" :rules="checkResultRules" label-width="120px"> |
| | | <el-form-item label="工单号" prop="workOrderNo"> |
| | | <el-input v-model="checkResultForm.workOrderNo" disabled /> |
| | |
| | | <el-input v-model="checkResultForm.ywPeopleName" disabled /> |
| | | </el-form-item> |
| | | <el-form-item label="运维检测结果" prop="ywCheckResult"> |
| | | <el-input v-model="checkResultForm.ywCheckResult" type="textarea" maxlength="150" show-word-limit/> |
| | | <file-upload v-model="checkResultForm.ywCheckResult"/> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button type="primary" @click="submitYwResult">确 定</el-button> |
| | | <el-button @click="cancelYwResult">取 消</el-button> |
| | | <el-button @click="cancelCheckResult">取 消</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | |
| | | <!-- 添加或修改运维工单对话框 --> |
| | | <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> |
| | | <el-dialog :title="title" :visible.sync="open" width="550px" append-to-body> |
| | | <el-form ref="form" :model="form" :rules="rules" label-width="80px"> |
| | | <el-form-item label="工单号" prop="workOrderNo"> |
| | | <el-input v-model="form.workOrderNo" placeholder="请输入工单号" /> |
| | |
| | | <el-button @click="cancel">取 消</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | |
| | | |
| | | <!-- 过程图 --> |
| | | <el-dialog title="过程图" :visible.sync="flowOpen" width="1200px" :close-on-click-modal="false" append-to-body> |
| | | <div> |
| | | <el-steps :active="2" :space="500"> |
| | | <el-step title="产生工单"> |
| | | <template slot="description"> |
| | | <div> |
| | | <div class="flow-item-x"> |
| | | 工单来源:<el-tag type="danger" size="small">{{flowForm.source}}</el-tag> |
| | | </div> |
| | | <div class="flow-item-x"> |
| | | 故障类型:{{flowForm.errorType}} |
| | | </div> |
| | | <div class="flow-item-x"> |
| | | 运维单位:{{flowForm.unitName}} |
| | | </div> |
| | | <div class="flow-item-x"> |
| | | 创建时间:{{flowForm.createTime}} |
| | | </div> |
| | | <div class="flow-item-x"> |
| | | 处理期限:<el-tag type="danger" size="small">12小时</el-tag> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | </el-step> |
| | | <el-step title="运维处理"> |
| | | <template slot="description"> |
| | | <div class="y-item"> |
| | | <div class="y-item-1"> |
| | | <div class="flow-item-x"> |
| | | 运维状态:<el-tag type="danger" size="small">结果上报</el-tag> |
| | | </div> |
| | | <div class="flow-item-x"> |
| | | 运维人员:<el-tag type="danger" size="small">{{flowForm.ywPeopleName}}</el-tag> |
| | | </div> |
| | | </div> |
| | | <div class="y-item-2"> |
| | | <div > |
| | | {{flowForm.ywHandleTime}} |
| | | </div> |
| | | <div > |
| | | 第几次:1 |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="y-item"> |
| | | <div class="y-item-1"> |
| | | <div class="flow-item-x"> |
| | | 运维状态:<el-tag type="danger" size="small">结果上报</el-tag> |
| | | </div> |
| | | <div class="flow-item-x"> |
| | | 运维人员:<el-tag type="danger" size="small">{{flowForm.ywPeopleName}}</el-tag> |
| | | </div> |
| | | </div> |
| | | <div class="y-item-2"> |
| | | <div > |
| | | {{flowForm.ywHandleTime}} |
| | | </div> |
| | | <div > |
| | | 第几次:2 |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | </template> |
| | | </el-step> |
| | | <el-step title="结果审核"> |
| | | <template slot="description"> |
| | | <div class="y-item"> |
| | | <div class="y-item-1"> |
| | | <div class="flow-item-x"> |
| | | 审核结果:<el-tag type="danger" size="small">驳回</el-tag> |
| | | </div> |
| | | <div class="flow-item-x"> |
| | | 审核说明:<el-tag type="danger" size="small">未成功处理</el-tag> |
| | | </div> |
| | | </div> |
| | | <div class="y-item-2"> |
| | | <div > |
| | | {{flowForm.ywHandleTime}} |
| | | </div> |
| | | <div > |
| | | 第几次:1 |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="y-item"> |
| | | <div class="y-item-1"> |
| | | <div class="flow-item-x"> |
| | | 审核状态:<el-tag type="info" size="small">审核中</el-tag> |
| | | </div> |
| | | <div class="flow-item-x"> |
| | | 审核说明: |
| | | </div> |
| | | </div> |
| | | <div class="y-item-2"> |
| | | <div > |
| | | {{flowForm.ywHandleTime}} |
| | | </div> |
| | | <div > |
| | | 第几次:2 |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | </el-step> |
| | | </el-steps> |
| | | </div> |
| | | </el-dialog> |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | .flow-item-x { |
| | | margin: 5px 0; |
| | | } |
| | | .y-item { |
| | | margin-bottom: 8px; |
| | | padding: 0 3px; |
| | | background-color: #d9d9d9; |
| | | display: flex; |
| | | flex-direction: row; |
| | | align-items: center |
| | | } |
| | | .y-item-2 { |
| | | flex: 1; |
| | | } |
| | | .y-item-1 { |
| | | flex: 2; |
| | | } |
| | | </style> |
| | | <script> |
| | | import { listWorkOrder, getWorkOrder, delWorkOrder, addWorkOrder, updateWorkOrder,auditing, ywCondition } from "@/api/platform/work-order"; |
| | | |
| | | export default { |
| | | name: "Work-order", |
| | | components: { |
| | | }, |
| | | data() { |
| | | return { |
| | | reportFormRules: { |
| | | reportContent: [ |
| | | { required: true, message: "报备内容不能为空", trigger: "blur" } |
| | | ], |
| | | reportMaterials: [ |
| | | { required: true, message: "上报材料不能为空", trigger: "blur" } |
| | | ], |
| | | }, |
| | | reportOpen: false, |
| | | reportForm: { |
| | | reportType: "事后报备", |
| | | pointId: "琼于镇3街1号摄像头", |
| | | errorType: "", |
| | | reportContent: "", |
| | | reportMaterials: "" |
| | | }, |
| | | // 过程图 |
| | | flowOpen: false, |
| | | flowForm: {}, |
| | | certificateList:[], |
| | | pictureList: [], |
| | | // 遮罩层 |
| | | loading: true, |
| | | // 选中数组 |
| | |
| | | this.getList(); |
| | | }, |
| | | methods: { |
| | | // 报备 |
| | | submitReportForm() { |
| | | this.$refs["reportForm"].validate(valid => { |
| | | if (valid) { |
| | | addReport(this.form).then(response => { |
| | | this.$modal.msgSuccess("成功提交报备"); |
| | | this.open = false; |
| | | this.getList(); |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | // 事后报备按钮 |
| | | handleReport(row) { |
| | | this.reportForm.pointId = row.source; |
| | | this.reportOpen = true; |
| | | }, |
| | | // 审核按钮 |
| | | handleAuditing(row) { |
| | | this.auditingForm = row; |
| | |
| | | this.checkResultForm = row; |
| | | this.checkResultOpen = true; |
| | | }, |
| | | // 过程图查看 |
| | | handleFlow(row) { |
| | | this.flowOpen = true; |
| | | this.flowForm = row; |
| | | }, |
| | | // 提交审核 |
| | | submitAuditing() { |
| | | this.$refs["auditingForm"].validate(valid => { |
| | |
| | | cancelAuditing() { |
| | | this.auditingForm = {}; |
| | | this.auditingOpen = false; |
| | | }, |
| | | pictureRemove(file, fileList) { |
| | | this.form.picture = null, |
| | | |
| | | this.pictureList = this.pictureList.filter(item => item.name !== file.name) |
| | | }, |
| | | certificateRemove(file, fileList) { |
| | | this.form.certificate = null, |
| | | |
| | | this.certificateList = this.certificateList.filter(item => item.name !== file.name) |
| | | }, |
| | | pictureUploadSuccess(response, file, fileList) { |
| | | this.form.picture = response.fileName, |
| | | this.pictureList.push({ |
| | | name: response.originalFilename, |
| | | url: response.url, |
| | | fileName: response.fileName |
| | | }) |
| | | }, |
| | | certificateUploadSuccess(response, file, fileList) { |
| | | this.form.certificate = response.fileName, |
| | | this.certificateList.push({ |
| | | name: response.originalFilename, |
| | | url: response.url, |
| | | fileName: response.fileName |
| | | }) |
| | | }, |
| | | // 提交运维情况 |
| | | submitYwCondition() { |
| | |
| | | this.form = response.data; |
| | | this.open = true; |
| | | this.title = "修改运维工单"; |
| | | this.pictureList = JSON.parse(response.data.picture).map(item => { |
| | | return { |
| | | name: item, |
| | | url: process.env.VUE_APP_FILE_API + '/' + item, |
| | | fileName: item |
| | | } |
| | | }) |
| | | this.certificateList = JSON.parse(row.certificate).map(item => { |
| | | return { |
| | | name: item, |
| | | url: process.env.VUE_APP_FILE_API + '/' + item, |
| | | fileName: item |
| | | } |
| | | }) |
| | | }); |
| | | }, |
| | | /** 提交按钮 */ |
| | |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .work-order-item { |
| | | margin-bottom: 5px; |
| | | } |
| | | .time { |
| | | font-size: 13px; |
| | | color: #999; |
| | | } |
| | | |
| | | .image { |
| | | width: 165px; |
| | | height: 150px; |
| | | padding: 10px; |
| | | } |
| | | </style> |