You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3003 lines
105 KiB
3003 lines
105 KiB
<template>
|
|
<div class="mod-config">
|
|
<el-form :inline="true" label-position="top" :model="searchData">
|
|
<el-form-item :label="'BU'">
|
|
<el-select v-model="searchData.buDesc" placeholder="请选择" clearable style="width: 80px">
|
|
<el-option
|
|
v-for = "i in userBuList"
|
|
:key = "i.buNo"
|
|
:label = "i.buDesc"
|
|
:value = "i.buDesc">
|
|
</el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
<el-form-item :label="'报修方式'">
|
|
<el-select v-model="searchData.repairReportingType" placeholder="请选择" clearable style="width: 100px">
|
|
<el-option label="设备故障" value="设备故障"></el-option>
|
|
<el-option label="TPM红牌" value="TPM红牌"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
<el-form-item :label="'紧急程度'">
|
|
<el-select v-model="searchData.urgency" placeholder="请选择" clearable style="width: 80px">
|
|
<el-option label="特急" value="特急"></el-option>
|
|
<el-option label="紧急" value="紧急"></el-option>
|
|
<el-option label="一般" value="一般"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
<el-form-item :label="'是否退回'">
|
|
<el-select v-model="searchData.isReturn" placeholder="请选择" clearable style="width: 100px">
|
|
<el-option label="Y" value="Y"></el-option>
|
|
<el-option label="N" value="N"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
<el-form-item :label="'反馈单号'">
|
|
<el-input v-model="searchData.planID" clearable style="width: 120px"></el-input>
|
|
</el-form-item>
|
|
<el-form-item :label="'工单编码'">
|
|
<el-input v-model="searchData.orderNo" clearable style="width: 120px"></el-input>
|
|
</el-form-item>
|
|
<el-form-item :label="'设备编码'">
|
|
<el-input ref="objectID" @focus="cancelKeyboard" v-model="searchData.objectID" placeholder="请扫描设备" @keyup.native.enter="objectIdEnter" clearable style="width: 100px"></el-input>
|
|
</el-form-item>
|
|
<!-- <el-form-item style="margin-left: 0px" >-->
|
|
<!-- <span slot="label" style="" @click="getBaseList(201)"><a herf="#">计划执行人员编码</a></span>-->
|
|
<!-- <el-input v-model="searchData.planOperator" clearable style="width: 120px"></el-input>-->
|
|
<!-- </el-form-item>-->
|
|
</el-form>
|
|
<el-form :inline="true" label-position="top" :model="searchData">
|
|
<el-form-item :label="'状态'">
|
|
<el-select v-model="searchData.status" clearable style="width: 100px">
|
|
<el-option label="未开工" value="未开工"></el-option>
|
|
<el-option label="已到达" value="已到达"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
<el-form-item :label="'单据来源'">
|
|
<el-select v-model="searchData.documentSource" clearable style="width: 100px">
|
|
<el-option label="设备点检" value="设备点检"></el-option>
|
|
<el-option label="设备维修" value="设备维修"></el-option>
|
|
<el-option label="维修失败" value="维修失败"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
<el-form-item :label="'计划执行日期:'">
|
|
<el-date-picker
|
|
style="width: 120px"
|
|
v-model="searchData.startDate"
|
|
type="date"
|
|
value-format="yyyy-MM-dd"
|
|
placeholder="选择日期">
|
|
</el-date-picker>
|
|
</el-form-item>
|
|
<el-form-item style="margin-top: 23px;">
|
|
<laber style="margin-left: -9px;font-size: 19px">➞</laber>
|
|
</el-form-item>
|
|
<el-form-item :label="' '">
|
|
<el-date-picker
|
|
style="width: 120px"
|
|
v-model="searchData.endDate"
|
|
type="date"
|
|
value-format="yyyy-MM-dd"
|
|
placeholder="选择日期">
|
|
</el-date-picker>
|
|
</el-form-item>
|
|
<el-form-item label=" ">
|
|
<el-button v-if="!authSearch" @click="getDataList()">查询</el-button>
|
|
<el-button @click="exportExcel()" type="primary" style="margin-left: 2px">{{'导出'}}</el-button>
|
|
<!-- <download-excel-->
|
|
<!-- :fields="fields()"-->
|
|
<!-- :data="exportData"-->
|
|
<!-- type="xls"-->
|
|
<!-- :name="exportName"-->
|
|
<!-- :header="exportHeader"-->
|
|
<!-- :footer="exportFooter"-->
|
|
<!-- :fetch="createExportData"-->
|
|
<!-- :before-generate="startDownload"-->
|
|
<!-- :before-finish="finishDownload"-->
|
|
<!-- worksheet="导出信息"-->
|
|
<!-- class="el-button el-button--primary el-button--medium">-->
|
|
<!-- {{ "导出" }}-->
|
|
<!-- </download-excel>-->
|
|
<el-button type="primary" v-if="!authSearch" @click="transferOrderHandle()">转单</el-button>
|
|
</el-form-item>
|
|
</el-form>
|
|
|
|
<el-table
|
|
:height="height"
|
|
:data="dataList"
|
|
@selection-change="selectionChangeHandle"
|
|
border
|
|
style="width: 100%;"
|
|
:row-style="rowStyle">
|
|
<el-table-column
|
|
type="selection"
|
|
header-align="center"
|
|
align="center"
|
|
width="50">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="buDesc"
|
|
header-align="center"
|
|
align="center"
|
|
label="BU"
|
|
width="60">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="urgency"
|
|
header-align="center"
|
|
align="center"
|
|
label="紧急程度"
|
|
width="70">
|
|
<template slot-scope="scope">
|
|
<div :style="{fontWeight:'bold', color: scope.row.urgency === '特急' ? 'red' : scope.row.urgency === '紧急' ? '#ffa500e0' : scope.row.urgency === '一般' ? '#47B0FF' : ''}">
|
|
{{ scope.row.urgency }}
|
|
</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column
|
|
v-for="(item,index) in columnList" :key="index"
|
|
:sortable="item.columnSortable"
|
|
:prop="item.columnProp"
|
|
:header-align="item.headerAlign"
|
|
:show-overflow-tooltip="item.showOverflowTooltip"
|
|
:align="item.align"
|
|
:fixed="item.fixed==''?false:item.fixed"
|
|
:min-width="item.columnWidth"
|
|
:label="item.columnLabel">
|
|
<template slot-scope="scope">
|
|
<span v-if="!item.columnHidden">{{scope.row[item.columnProp]}}</span>
|
|
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop=""
|
|
header-align="center"
|
|
align="center"
|
|
min-width="100"
|
|
fixed="right"
|
|
label="操作">
|
|
<template slot-scope="scope">
|
|
<el-link style="cursor: pointer" v-if="scope.row.status=='未开工' && !authReach" @click="chooseReachOperator(scope.row)">到达</el-link>
|
|
<el-link style="cursor: pointer" v-if="scope.row.status=='已到达' && !authReport" @click="reportModal(scope.row)">执行</el-link>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
|
|
<el-pagination
|
|
@size-change="sizeChangeHandle"
|
|
@current-change="currentChangeHandle"
|
|
:current-page="pageIndex"
|
|
:page-sizes="[20, 50, 100, 200, 500]"
|
|
:page-size="pageSize"
|
|
:total="totalPage"
|
|
layout="total, sizes, prev, pager, next, jumper">
|
|
</el-pagination>
|
|
|
|
<el-dialog top="18vh" :close-on-click-modal="false" v-drag :visible.sync="detailModelFlag" width="940px">
|
|
<template v-slot:title>
|
|
<div style="padding-top: 5px;padding-left: 15px">
|
|
<span :style="{ fontSize: '15px', fontWeight: 'bold' }">维修工单</span>
|
|
<span :style="{
|
|
marginTop: '-5px',
|
|
marginLeft: '5px',
|
|
fontSize: '15px',
|
|
verticalAlign: 'middle',
|
|
display: 'inline-block',
|
|
width: '17px',
|
|
height: '17px',
|
|
borderRadius: '50%',
|
|
background: saveData.urgency === '特急' ? 'red' : saveData.urgency === '紧急' ? '#ffa500e0' : saveData.urgency === '一般' ? '#47B0FF' : ''}">
|
|
</span>
|
|
</div>
|
|
</template>
|
|
<div style="margin-left: 10px">
|
|
<el-form :inline="true" label-position="top" style="margin-top: 10px">
|
|
<el-form-item label="工单号">
|
|
<el-input v-model="saveData.orderNo" disabled style="width: 100px"></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="计划执行人员" style="margin-left: 30px">
|
|
<el-input v-model="saveData.planOperatorName" disabled style="width: 100px"></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="设备编码" style="margin-left: 30px">
|
|
<el-input v-model="saveData.objectID" disabled style="width: 100px"></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="设备名称" style="margin-left: 30px">
|
|
<el-input v-model="saveData.objectDesc" disabled style="width: 150px"></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="报修人" style="margin-left: 30px">
|
|
<el-input v-model="saveData.createBy" disabled style="width: 100px"></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="报修时间" style="margin-left: 30px">
|
|
<el-input v-model="saveData.createdDate" disabled style="width: 130px"></el-input>
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-form :inline="true" label-position="top">
|
|
<el-form-item label="响应人">
|
|
<el-input v-model="saveData.reachOperatorName" disabled style="width: 100px"></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="响应时间" style="margin-left: 30px">
|
|
<el-input v-model="saveData.reachDate" disabled style="width: 130px"></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="响应时长(m)">
|
|
<el-input v-model="saveData.responseTime" disabled style="width: 100px"></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="停机维修" style="margin-left: 30px">
|
|
<el-input v-model="saveData.shutdownWarranty" disabled style="width: 68px"></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="审核退回" style="margin-left: 0px">
|
|
<el-input v-model="saveData.isReturn" disabled style="width: 68px"></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="维修结果" prop="result" style="margin-left: 30px">
|
|
<el-select v-model="saveData.result" style="width: 100px">
|
|
<el-option label="维修完成" value="维修完成"></el-option>
|
|
<el-option label="维修失败" value="维修失败"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
<el-form-item v-if="this.saveData.result === '维修失败'" label="处置措施" style="margin-left: 30px">
|
|
<el-select v-model="saveData.disposalMeasures" style="width: 130px">
|
|
<el-option label="缺少备件" value="缺少备件"></el-option>
|
|
<el-option label="等待售后" value="等待售后"></el-option>
|
|
<el-option label="远程协助" value="远程协助"></el-option>
|
|
<el-option label="换班换人" value="换班换人"></el-option>
|
|
<el-option label="设备维修组" value="设备维修组"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-form :inline="true" :model="saveData" label-position="top">
|
|
<el-form-item label="报修反馈描述">
|
|
<el-input type="textarea" v-model="saveData.feedBackDesc" :rows="3" resize='none' show-word-limit style="width: 900px"></el-input>
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-tabs v-model="activeTable" style="margin-top: 55px; width: 99%; height: 100%;" @tab-click="tabClick" class="customer-tab">
|
|
<el-tab-pane label="维修单" name="inspection_form" style="height: 275px">
|
|
<el-form :inline="true" :model="saveData" label-position="top" :rules="rules" style="margin-top: 5px">
|
|
<el-form-item prop="defectID" :rules="rules.defectID">
|
|
<span style="cursor: pointer" slot="label" @click="getBaseList(1033)"><a>故障编码</a></span>
|
|
<el-input v-model="saveData.defectID" style="width: 120px"></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="故障名称" style="margin-left: -10px">
|
|
<el-input v-model="saveData.defectDesc" disabled style="width: 200px"></el-input>
|
|
</el-form-item>
|
|
<el-form-item prop="operatorName">
|
|
<span style="cursor: pointer" slot="label" @click="getOperatorList"><a>实际维修人员</a></span>
|
|
<el-input v-model="saveData.operatorName" style="width: 285px"></el-input>
|
|
</el-form-item>
|
|
<el-form-item :label="' '">
|
|
<el-button type="primary" @click="uploadFaultImageModal">故障图片</el-button>
|
|
</el-form-item>
|
|
<el-form-item :label="' '">
|
|
<el-button type="primary" @click="uploadSparPartImageModal">备件图片</el-button>
|
|
</el-form-item>
|
|
<el-form-item :label="' '">
|
|
<el-button type="primary" @click="coreComponentModal">核心备件</el-button>
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-form :inline="true" :model="saveData" label-position="top" :rules="rules" style="margin-top: 15px">
|
|
<el-form-item :label="'故障原因'">
|
|
<el-input type="textarea" v-model="saveData.faultReason" :rows="3" resize='none' show-word-limit style="width: 431px"></el-input>
|
|
</el-form-item>
|
|
<el-form-item :label="'处理方式'" prop="handlingMethod" :rules="rules.handlingMethod">
|
|
<el-input type="textarea" v-model="saveData.handlingMethod" :rows="3" resize='none' show-word-limit style="width: 431px"></el-input>
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-form :inline="true" label-position="top" style="margin-top: 65px">
|
|
<el-form-item :label="'预防措施'">
|
|
<el-input type="textarea" v-model="saveData.preventiveMeasure" :rows="3" resize='none' show-word-limit style="width: 431px"></el-input>
|
|
</el-form-item>
|
|
<el-form-item :label="'备注说明'">
|
|
<el-input type="textarea" v-model="saveData.remark" :rows="3" resize='none' show-word-limit style="width: 431px"></el-input>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="故障图片" name="feed_back_img">
|
|
<div class="rq ">
|
|
<el-table
|
|
:height="280"
|
|
:data="feedBackImages"
|
|
border
|
|
style="width: 100%;">
|
|
<el-table-column
|
|
v-for="(item,index) in columnFeedBackImages" :key="index"
|
|
:sortable="item.columnSortable"
|
|
:prop="item.columnProp"
|
|
:header-align="item.headerAlign"
|
|
:show-overflow-tooltip="item.showOverflowTooltip"
|
|
:align="item.align"
|
|
:fixed="item.fixed==''?false:item.fixed"
|
|
:min-width="item.columnWidth"
|
|
:label="item.columnLabel">
|
|
<template slot-scope="scope">
|
|
<span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
|
|
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column
|
|
fixed="right"
|
|
header-align="center"
|
|
align="center"
|
|
width="120"
|
|
label="操作">
|
|
<template slot-scope="scope">
|
|
<el-link style="cursor:pointer" @click="previewFile(scope.row)">预览</el-link>
|
|
<el-link style="cursor:pointer" @click="downloadFile(scope.row)">下载</el-link>
|
|
<el-link style="cursor:pointer" @click="deleteFile(scope.row)">删除</el-link>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
</div>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="备件图片" name="spar_part_img">
|
|
<div class="rq ">
|
|
<el-table
|
|
:height="280"
|
|
:data="sparPartImages"
|
|
border
|
|
style="width: 100%;">
|
|
<el-table-column
|
|
v-for="(item,index) in columnSparPartImages" :key="index"
|
|
:sortable="item.columnSortable"
|
|
:prop="item.columnProp"
|
|
:header-align="item.headerAlign"
|
|
:show-overflow-tooltip="item.showOverflowTooltip"
|
|
:align="item.align"
|
|
:fixed="item.fixed==''?false:item.fixed"
|
|
:min-width="item.columnWidth"
|
|
:label="item.columnLabel">
|
|
<template slot-scope="scope">
|
|
<span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
|
|
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column
|
|
fixed="right"
|
|
header-align="center"
|
|
align="center"
|
|
width="120"
|
|
label="操作">
|
|
<template slot-scope="scope">
|
|
<el-link style="cursor:pointer" @click="previewFile(scope.row)">预览</el-link>
|
|
<el-link style="cursor:pointer" @click="downloadFile(scope.row)">下载</el-link>
|
|
<el-link style="cursor:pointer" @click="deleteFile(scope.row)">删除</el-link>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
</div>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="备品备件清单" name="part_spare_list">
|
|
<div class="rq ">
|
|
<el-table
|
|
:height="280"
|
|
:data="partSpareList"
|
|
border
|
|
style="width: 100%;">
|
|
<el-table-column
|
|
v-for="(item,index) in columnPartSpareList" :key="index"
|
|
:sortable="item.columnSortable"
|
|
:prop="item.columnProp"
|
|
:header-align="item.headerAlign"
|
|
:show-overflow-tooltip="item.showOverflowTooltip"
|
|
:align="item.align"
|
|
:fixed="item.fixed==''?false:item.fixed"
|
|
:min-width="item.columnWidth"
|
|
:label="item.columnLabel">
|
|
<template slot-scope="scope">
|
|
<span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
|
|
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column
|
|
fixed="right"
|
|
header-align="center"
|
|
align="center"
|
|
width="100"
|
|
label="操作">
|
|
<template slot-scope="scope">
|
|
<el-link style="cursor:pointer" @click="defectExWarehouseModal()">维修出库</el-link>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
</div>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="维修记录" name="history_record">
|
|
<div class="rq ">
|
|
<el-table
|
|
:height="250"
|
|
:data="historyRecordList"
|
|
border
|
|
style="width: 100%;">
|
|
<el-table-column
|
|
v-for="(item,index) in columnHistoryList" :key="index"
|
|
:sortable="item.columnSortable"
|
|
:prop="item.columnProp"
|
|
:header-align="item.headerAlign"
|
|
:show-overflow-tooltip="item.showOverflowTooltip"
|
|
:align="item.align"
|
|
:fixed="item.fixed==''?false:item.fixed"
|
|
:min-width="item.columnWidth"
|
|
:label="item.columnLabel">
|
|
<template slot-scope="scope">
|
|
<span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
|
|
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column
|
|
fixed="right"
|
|
header-align="center"
|
|
align="center"
|
|
width="120"
|
|
label="图片">
|
|
<template slot-scope="scope">
|
|
<el-button v-if="scope.row.reportFaultFlag === 'Y'"
|
|
@click="checkFaultImageModal(scope.row)" style="background-color: #16df9e;color: white">故障
|
|
</el-button>
|
|
<el-button type="primary" v-else @click="checkFaultImageModal(scope.row)">故障</el-button>
|
|
<el-button v-if="scope.row.reportSparPartFlag === 'Y'" style="background-color: #16df9e;color: white"
|
|
@click="checkSparPartImageModal(scope.row)">备件</el-button>
|
|
<el-button type="primary" v-else @click="checkSparPartImageModal(scope.row)">备件</el-button>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<!-- 分页插件 -->
|
|
<el-pagination
|
|
style="margin-top: 0px"
|
|
@size-change="sizeChangeHandle2"
|
|
@current-change="currentChangeHandle2"
|
|
:current-page="pageIndex2"
|
|
:page-sizes="[20, 50, 100, 200, 500]"
|
|
:page-size="pageSize2"
|
|
:total="totalPage2"
|
|
layout="total, sizes, prev, pager, next, jumper">
|
|
</el-pagination>
|
|
</div>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="核心备品备件更换记录" name="core_component">
|
|
<el-button @click="insertCoreComponents()" type="primary" style="margin-left: 2px">{{'新增'}}</el-button>
|
|
<div class="rq ">
|
|
<el-table
|
|
:height="280"
|
|
:data="corePartSpareList"
|
|
border
|
|
style="width: 100%;">
|
|
<el-table-column
|
|
v-for="(item,index) in columnCoreComponent" :key="index"
|
|
:sortable="item.columnSortable"
|
|
:prop="item.columnProp"
|
|
:header-align="item.headerAlign"
|
|
:show-overflow-tooltip="item.showOverflowTooltip"
|
|
:align="item.align"
|
|
:fixed="item.fixed==''?false:item.fixed"
|
|
:min-width="item.columnWidth"
|
|
:label="item.columnLabel">
|
|
<template slot-scope="scope">
|
|
<span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
|
|
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="操作">
|
|
<template slot-scope="scope">
|
|
<a @click="updateCoreComponents(scope.row)">编辑</a>
|
|
<a @click="deleteCoreComponents(scope.row)">删除</a>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
</div>
|
|
</el-tab-pane>
|
|
<!-- <el-tab-pane label="设备知识库" name="eam_knowledge">-->
|
|
<!-- <div class="rq ">-->
|
|
<!-- <el-table-->
|
|
<!-- :height="250"-->
|
|
<!-- :data="knowledgeRecordList"-->
|
|
<!-- border-->
|
|
<!-- style="width: 100%;">-->
|
|
<!-- <el-table-column-->
|
|
<!-- v-for="(item,index) in columnKnowledgeList" :key="index"-->
|
|
<!-- :sortable="item.columnSortable"-->
|
|
<!-- :prop="item.columnProp"-->
|
|
<!-- :header-align="item.headerAlign"-->
|
|
<!-- :show-overflow-tooltip="item.showOverflowTooltip"-->
|
|
<!-- :align="item.align"-->
|
|
<!-- :fixed="item.fixed==''?false:item.fixed"-->
|
|
<!-- :min-width="item.columnWidth"-->
|
|
<!-- :label="item.columnLabel">-->
|
|
<!-- <template slot-scope="scope">-->
|
|
<!-- <span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>-->
|
|
<!-- <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>-->
|
|
<!-- </template>-->
|
|
<!-- </el-table-column>-->
|
|
<!-- <el-table-column-->
|
|
<!-- fixed="right"-->
|
|
<!-- header-align="center"-->
|
|
<!-- align="center"-->
|
|
<!-- min-width="80"-->
|
|
<!-- label="操作">-->
|
|
<!-- <template slot-scope="scope">-->
|
|
<!-- <el-link style="cursor:pointer" @click="getFileContentData(scope.row)">文档</el-link>-->
|
|
<!-- </template>-->
|
|
<!-- </el-table-column>-->
|
|
<!-- </el-table>-->
|
|
<!-- <!– 分页插件 –>-->
|
|
<!-- <el-pagination-->
|
|
<!-- style="margin-top: 0px"-->
|
|
<!-- @size-change="sizeChangeHandle3"-->
|
|
<!-- @current-change="currentChangeHandle3"-->
|
|
<!-- :current-page="pageIndex3"-->
|
|
<!-- :page-sizes="[20, 50, 100, 200, 500]"-->
|
|
<!-- :page-size="pageSize3"-->
|
|
<!-- :total="totalPage3"-->
|
|
<!-- layout="total, sizes, prev, pager, next, jumper">-->
|
|
<!-- </el-pagination>-->
|
|
<!-- </div>-->
|
|
<!-- </el-tab-pane>-->
|
|
</el-tabs>
|
|
</div>
|
|
<el-footer style="height:35px;margin-top: 5px;text-align:center">
|
|
<el-button type="primary" @click="saveCheckReport">保存</el-button>
|
|
<el-button type="primary" @click="detailModelFlag = false">关闭</el-button>
|
|
</el-footer>
|
|
</el-dialog>
|
|
|
|
<!-- 执行人员清单 -->
|
|
<el-dialog title="执行人员清单" :close-on-click-modal="false" v-drag :visible.sync="operatorModelFlag" width="820px">
|
|
<div class="rq">
|
|
<el-form :inline="true" label-position="top" :model="operatorData">
|
|
<el-form-item :label="'所属角色'">
|
|
<el-select v-model="operatorData.roleId" placeholder="请选择" style="width: 120px">
|
|
<el-option
|
|
v-for = "i in roleList"
|
|
:key = "i.roleId"
|
|
:label = "i.roleName"
|
|
:value = "i.roleId">
|
|
</el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
<el-form-item :label="'人员编码'">
|
|
<el-input v-model="operatorData.adminID" clearable style="width: 120px"></el-input>
|
|
</el-form-item>
|
|
<el-form-item :label="'人员姓名'">
|
|
<el-input v-model="operatorData.adminName" clearable style="width: 120px"></el-input>
|
|
</el-form-item>
|
|
<el-form-item :label="' '">
|
|
<el-button type="primary" @click="getOperatorList2">查询</el-button>
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-table
|
|
:height="300"
|
|
:data="operatorList"
|
|
ref="operatorTable"
|
|
@row-click="operatorClickRow"
|
|
@selection-change="selectionChangeHandle2"
|
|
border
|
|
style="width: 100%;">
|
|
<el-table-column
|
|
type="selection"
|
|
header-align="center"
|
|
align="center"
|
|
width="50">
|
|
</el-table-column>
|
|
<el-table-column
|
|
v-for="(item,index) in operatorDetailList" :key="index"
|
|
:sortable="item.columnSortable"
|
|
:prop="item.columnProp"
|
|
:header-align="item.headerAlign"
|
|
:show-overflow-tooltip="item.showOverflowTooltip"
|
|
:align="item.align"
|
|
:fixed="item.fixed==''?false:item.fixed"
|
|
:min-width="item.columnWidth"
|
|
:label="item.columnLabel">
|
|
<template slot-scope="scope">
|
|
<span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
|
|
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
</div>
|
|
<el-footer style="height:40px;margin-top: 20px;text-align:center">
|
|
<el-button type="primary" @click="confirmOperator()">确认</el-button>
|
|
<el-button type="primary" @click="operatorModelFlag = false">关闭</el-button>
|
|
</el-footer>
|
|
</el-dialog>
|
|
|
|
<el-dialog title="到达" :close-on-click-modal="false" v-drag :visible.sync="chooseReachModelFlag" width="410px">
|
|
<el-form :inline="true" label-position="top">
|
|
<el-form-item >
|
|
<span style="cursor: pointer" slot="label" @click="getOperatorList()"><a>选择到达人员</a></span>
|
|
<el-input v-model="saveData.operatorName" style="width: 389px"></el-input>
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-footer style="height:40px;margin-top: 20px;text-align:center">
|
|
<el-button type="primary" @click="reach()">保存</el-button>
|
|
<el-button type="primary" @click="chooseReachModelFlag = false">关闭</el-button>
|
|
</el-footer>
|
|
</el-dialog>
|
|
|
|
<el-dialog title="核心备件" :close-on-click-modal="false" v-drag :visible.sync="coreComponentFlag" width="450px">
|
|
<el-form :inline="true" label-position="top">
|
|
<el-form-item label="备件编码">
|
|
<span slot="label" @click="getBaseList(1059)" v-if="updateCoreComponentsFlag"><a href="#">备件编码</a></span>
|
|
<el-input v-model="coreComponentData.partNo" @blur="partNoBlur(1059)" :disabled="!updateCoreComponentsFlag" style="width: 120px"></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="备件名称">
|
|
<el-input v-model="coreComponentData.partDescription" disabled style="width: 280px"></el-input>
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-form :inline="true" label-position="top">
|
|
<el-form-item label="老序列号">
|
|
<el-input v-model="coreComponentData.oldSerialNo" style="width: 200px"></el-input>
|
|
</el-form-item>
|
|
<el-form-item label="新序列号">
|
|
<el-input v-model="coreComponentData.newSerialNo" style="width: 200px"></el-input>
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-footer style="height:40px;margin-top: 20px;text-align:center">
|
|
<el-button type="primary" @click="saveCoreComponent()">保存</el-button>
|
|
<el-button type="primary" @click="coreComponentFlag = false">关闭</el-button>
|
|
</el-footer>
|
|
</el-dialog>
|
|
|
|
<el-dialog title="图片查看" :close-on-click-modal="false" v-drag :visible.sync="imageModalFlag" width="390px" style="height: 550px;">
|
|
<div v-viewer>
|
|
<img v-for="(item, index) in descImages" :src="item" :key="index" style="width: 100px;height: 100px"/>
|
|
</div>
|
|
<el-footer style="height:40px;margin-top: 20px;text-align:center">
|
|
<el-button type="primary" @click="imageModalFlag = false">关闭</el-button>
|
|
</el-footer>
|
|
</el-dialog>
|
|
|
|
<el-dialog title="维修出库" top="25vh" :close-on-click-modal="false" v-drag :visible.sync="exWarehouseModalFlag" width="600px">
|
|
<el-form :inline="true" label-position="top" style="margin-top: -5px">
|
|
<el-form-item label=" " style="width: 100px">
|
|
请扫描条码
|
|
</el-form-item>
|
|
<el-form-item label=" ">
|
|
<el-input ref="serialNoRef" v-model="exWarehouseData.serialNo" @keyup.native.enter="serialNoEnter" style="width: 450px"></el-input>
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-form :inline="true" label-position="top" style="margin-top: -5px">
|
|
<el-form-item label=" " style="width: 100px">
|
|
备品备件编码
|
|
</el-form-item>
|
|
<el-form-item label=" ">
|
|
<el-input v-model="exWarehouseData.partNo" disabled style="width: 450px"></el-input>
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-form :inline="true" label-position="top" style="margin-top: -5px">
|
|
<el-form-item label=" " style="width: 100px">
|
|
名称/规格
|
|
</el-form-item>
|
|
<el-form-item label=" ">
|
|
<el-input v-model="exWarehouseData.partDescription" disabled style="width: 450px"></el-input>
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-form :inline="true" label-position="top" style="margin-top: -5px">
|
|
<el-form-item label=" " style="width: 100px">
|
|
序列号
|
|
</el-form-item>
|
|
<el-form-item label=" ">
|
|
<el-input v-model="exWarehouseData.batchNo" disabled style="width: 450px"></el-input>
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-form :inline="true" label-position="top" style="margin-top: -5px">
|
|
<el-form-item label=" " style="width: 100px">
|
|
出库数量
|
|
</el-form-item>
|
|
<el-form-item label=" ">
|
|
<el-input v-model="exWarehouseData.qtyRequired" type="number" style="width: 450px"></el-input>
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-form :inline="true" label-position="top" style="margin-top: -5px">
|
|
<el-form-item label=" " style="width: 100px">
|
|
供应商
|
|
</el-form-item>
|
|
<el-form-item label=" ">
|
|
<el-input v-model="exWarehouseData.supplierDesc" disabled style="width: 450px"></el-input>
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-form :inline="true" label-position="top" style="margin-top: -5px">
|
|
<el-form-item label=" " style="width: 100px">
|
|
备注
|
|
</el-form-item>
|
|
<el-form-item label=" ">
|
|
<el-input v-model="exWarehouseData.remark" style="width: 450px"></el-input>
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-footer style="height:35px;margin-top: 15px;text-align:center">
|
|
<el-button type="primary" @click="saveSfdcTh">保存</el-button>
|
|
<el-button type="primary" @click="exWarehouseModalFlag = false">关闭</el-button>
|
|
</el-footer>
|
|
</el-dialog>
|
|
|
|
<Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
|
|
|
|
<!-- 上传文件的modal -->
|
|
<reportImageUpload ref="reportImageUpload" @refreshPageTables="getDataList()" v-drag></reportImageUpload>
|
|
|
|
<upload-file-list ref="defectRef" :folder="uploadData.folder" :title="uploadData.title" :upload-status="true" :label="'工单编码:'" :file-list.sync="fileData.file" :no="uploadData.orderNo" :upload-dialog.sync="uploadDialog" path="/base/uploadFileList"></upload-file-list>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import {
|
|
eamWorkOrderSearch2,
|
|
eamWorkOrderItemSearch,
|
|
saveOrderReportForDefect,
|
|
checkSparPartImage,
|
|
getOperatorList, // 获取机修人员列表
|
|
queryHistoryRecord, // 查看维修历史
|
|
searchFileUrl, // 查询文件路径
|
|
reach, // 到达
|
|
getSiteAndBuByUserName, // 获取用户的site和bu
|
|
getUserRoleList, // 获取用户角色列表
|
|
getFeedBackImages, // 获取故障图片
|
|
deleteObjectFile,
|
|
getInventoryStockList, // 获取领用出库信息
|
|
saveTrans, // 维修出库
|
|
saveCoreComponent,
|
|
getSparPartImages, // 获取备件图片
|
|
deleteCoreComponents,//删除核心备件
|
|
} from "@/api/eam/eam.js"
|
|
import {
|
|
downLoadObjectFile,
|
|
getDeviceCorePartListAll,
|
|
getDeviceCorePartList,
|
|
getDevicePartList,
|
|
getKnowledgeBaseList,
|
|
getFileContentList
|
|
} from '@/api/eam/eam_object_list.js';
|
|
import {getTableDefaultListLanguage, getTableUserListLanguage} from "@/api/table.js"
|
|
import Chooselist from '@/views/modules/common/Chooselist_eam'
|
|
import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/userFavorite.js'
|
|
import reportImageUpload from "./report_image_upload.vue"
|
|
import UploadFileList from "../common/uploadFileList.vue";
|
|
import {updateRepairTypes} from "../../../api/eam/eam";
|
|
import {verifyData} from "../../../api/part/partInformation";
|
|
import excel from "@/utils/excel-util.js";
|
|
export default {
|
|
components: {
|
|
Chooselist,
|
|
reportImageUpload,
|
|
UploadFileList
|
|
},
|
|
watch: {
|
|
saveData: {
|
|
deep: true,
|
|
handler: function (newV, oldV) {
|
|
this.saveData.workTime = Math.ceil(Math.floor(this.dayjs(this.saveData.endDate).diff(this.saveData.startDate, 'seconds') / 30) / 2)
|
|
}
|
|
},
|
|
exWarehouseData: {
|
|
deep: true,
|
|
handler: function (newV, oldV) {
|
|
this.exWarehouseData.serialNo = this.exWarehouseData.serialNo.toUpperCase()
|
|
}
|
|
},
|
|
},
|
|
data () {
|
|
return {
|
|
coreComponentFlag: false,
|
|
uploadDialog: false,
|
|
planPeople:'',
|
|
uploadData: {
|
|
folder: '',
|
|
title: '',
|
|
orderNo: ''
|
|
},
|
|
corePartSpareList: [],
|
|
corePartSpareListAll: [],
|
|
updateCoreComponentsFlag: false,
|
|
coreComponentData: {
|
|
site: '',
|
|
orderNo: '',
|
|
buNo: '',
|
|
objectID: '',
|
|
partNo: '',
|
|
partDescription: '',
|
|
createdBy: '',
|
|
oldSerialNo: '',
|
|
newSerialNo: '',
|
|
},
|
|
fileData: {
|
|
file: [],
|
|
orderRef1: '',
|
|
orderRef2: '',
|
|
orderRef3: '',
|
|
orderRef4: '',
|
|
folder: ''
|
|
},
|
|
// 是否收藏
|
|
favorite: false,
|
|
tagNo:'',
|
|
// 导出 start
|
|
userBuList: [],
|
|
exportData: [],
|
|
exportName: "维修执行" + this.dayjs().format('YYYYMMDDHHmmss'),
|
|
exportHeader: ["维修执行"],
|
|
exportFooter: [],
|
|
exportList: [],
|
|
// 导出 end
|
|
searchData: {
|
|
site: '',
|
|
userName: this.$store.state.user.name,
|
|
orderNo: '',
|
|
planID: '',
|
|
objectID: '',
|
|
buNo: '',
|
|
planOperator: '',
|
|
buDesc: '',
|
|
functionType: 'C',
|
|
status: '',
|
|
startDate: '',
|
|
endDate: '',
|
|
page: 1,
|
|
limit: 10,
|
|
searchType: 'reportDefect',
|
|
documentSource: '',
|
|
urgency: '',
|
|
repairReportingType: '',
|
|
repairType: '换线专家组'
|
|
},
|
|
height: 200,
|
|
pageIndex: 1,
|
|
pageSize: 20,
|
|
totalPage: 0,
|
|
pageIndex2: 1,
|
|
pageSize2: 20,
|
|
totalPage2: 0,
|
|
pageIndex3: 1,
|
|
pageSize3: 20,
|
|
totalPage3: 0,
|
|
dataList: [],
|
|
dataListLoading: false,
|
|
dataListSelections: [],
|
|
modalFlag: false,
|
|
modalDisableFlag: false,
|
|
departmentList: [],
|
|
// 展示列集
|
|
columnList: [
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 101004003,
|
|
serialNumber: '101004003Table1OrderNo',
|
|
tableId: "101004003Table1",
|
|
tableName: "维修执行表",
|
|
columnProp: 'orderNo',
|
|
headerAlign: "center",
|
|
align: "left",
|
|
columnLabel: '工单编码',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 100,
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 101004003,
|
|
serialNumber: '101004003Table1PlanID',
|
|
tableId: "101004003Table1",
|
|
tableName: "维修执行表",
|
|
columnProp: 'planID',
|
|
headerAlign: "center",
|
|
align: "left",
|
|
columnLabel: '反馈单号',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 100,
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 101004003,
|
|
serialNumber: '101004003Table1FeedBackDesc',
|
|
tableId: "101004003Table1",
|
|
tableName: "维修执行表",
|
|
columnProp: 'feedBackDesc',
|
|
headerAlign: "center",
|
|
align: "left",
|
|
columnLabel: '反馈描述',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 200,
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 101004003,
|
|
serialNumber: '101004003Table1DefectID',
|
|
tableId: "101004003Table1",
|
|
tableName: "维修执行表",
|
|
columnProp: 'defectID',
|
|
headerAlign: "center",
|
|
align: "left",
|
|
columnLabel: '故障编码',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 80,
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 101004003,
|
|
serialNumber: '101004003Table1DefectDesc',
|
|
tableId: "101004003Table1",
|
|
tableName: "维修执行表",
|
|
columnProp: 'defectDesc',
|
|
headerAlign: "center",
|
|
align: "left",
|
|
columnLabel: '故障名称',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120,
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 101004003,
|
|
serialNumber: '101004003Table1ObjectID',
|
|
tableId: "101004003Table1",
|
|
tableName: "维修执行表",
|
|
columnProp: 'objectID',
|
|
headerAlign: "center",
|
|
align: "left",
|
|
columnLabel: '设备编码',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 100,
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 101004003,
|
|
serialNumber: '101004003Table1ObjectDesc',
|
|
tableId: "101004003Table1",
|
|
tableName: "维修执行表",
|
|
columnProp: 'objectDesc',
|
|
headerAlign: "center",
|
|
align: "left",
|
|
columnLabel: '设备名称',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 150,
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 101004003,
|
|
serialNumber: '101004003Table1CreateBy',
|
|
tableId: "101004003Table1",
|
|
tableName: "维修执行表",
|
|
columnProp: 'createBy',
|
|
headerAlign: "center",
|
|
align: "center",
|
|
columnLabel: '报修人员名称',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 100,
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 101004003,
|
|
serialNumber: '101004003Table1Status',
|
|
tableId: "101004003Table1",
|
|
tableName: "维修执行表",
|
|
columnProp: 'status',
|
|
headerAlign: "center",
|
|
align: "center",
|
|
columnLabel: '状态',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 80,
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 101004003,
|
|
serialNumber: '101004003Table1PlanOperatorName',
|
|
tableId: "101004003Table1",
|
|
tableName: "维修执行表",
|
|
columnProp: 'planOperatorName',
|
|
headerAlign: "center",
|
|
align: "center",
|
|
columnLabel: '计划执行人员',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 100,
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 101004003,
|
|
serialNumber: '101004003Table1PlanDate',
|
|
tableId: "101004003Table1",
|
|
tableName: "维修执行表",
|
|
columnProp: 'planDate',
|
|
headerAlign: "center",
|
|
align: "center",
|
|
columnLabel: '计划执行日期',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 100,
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 101004003,
|
|
serialNumber: '101004003Table1DifficultyRemark',
|
|
tableId: "101004003Table1",
|
|
tableName: "维修执行表",
|
|
columnProp: 'difficultyRemark',
|
|
headerAlign: "center",
|
|
align: "left",
|
|
columnLabel: '审核备注',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 200,
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 101004003,
|
|
serialNumber: '101004003Table1Remark',
|
|
tableId: "101004003Table1",
|
|
tableName: "维修执行表",
|
|
columnProp: 'remark',
|
|
headerAlign: "center",
|
|
align: "left",
|
|
columnLabel: '备注说明',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 200,
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 101004003,
|
|
serialNumber: '101004003Table1DocumentSource',
|
|
tableId: "101004003Table1",
|
|
tableName: "维修执行表",
|
|
columnProp: 'documentSource',
|
|
headerAlign: "center",
|
|
align: "center",
|
|
columnLabel: '单据来源',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 100,
|
|
},
|
|
],
|
|
detailModelFlag: false,
|
|
detailList: [],
|
|
saveData: {
|
|
site: '',
|
|
buNo: '',
|
|
functionType: 'C',
|
|
orderNo: '',
|
|
planOperator: '',
|
|
planOperatorName: '',
|
|
startDate: '',
|
|
endDate: '',
|
|
workTime: '',
|
|
remark: '',
|
|
mesUser: '',
|
|
planID: '',
|
|
itemList: [],
|
|
result: '',
|
|
defectID: '',
|
|
defectDesc: '',
|
|
operator: '',
|
|
operatorName: '',
|
|
disposalMeasures: '',
|
|
objectID: '',
|
|
objectDesc: '',
|
|
checkWorkPlanId: '',
|
|
checkItemNo: '',
|
|
reachDate: '',
|
|
finishDate: '',
|
|
handlingMethod: '',
|
|
feedBackDesc: '',
|
|
faultReason: '',
|
|
preventiveMeasure: '',
|
|
repairReportingType: '',
|
|
repairType: '',
|
|
createBy: '',
|
|
createdDate: '',
|
|
reachOperator: '',
|
|
reachOperatorName: '',
|
|
urgency: '',
|
|
responseTime: '',
|
|
shutdownWarranty: ''
|
|
},
|
|
operatorData: {
|
|
site: '',
|
|
bu: '',
|
|
adminID: '',
|
|
adminName: '',
|
|
roleId: '',
|
|
roleName: '',
|
|
},
|
|
operatorModelFlag: false,
|
|
operatorList: [],
|
|
roleList: [],
|
|
dataListSelections2: [],
|
|
operatorDetailList: [
|
|
{
|
|
columnProp: 'adminID',
|
|
headerAlign: "center",
|
|
align: "center",
|
|
columnLabel: '用户账号',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
},
|
|
{
|
|
columnProp: 'adminName',
|
|
headerAlign: "center",
|
|
align: "center",
|
|
columnLabel: '用户名称',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
},
|
|
{
|
|
columnProp: 'email',
|
|
headerAlign: "center",
|
|
align: "center",
|
|
columnLabel: '邮箱',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
},
|
|
{
|
|
columnProp: 'phone',
|
|
headerAlign: "center",
|
|
align: "center",
|
|
columnLabel: '手机号',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
},
|
|
],
|
|
columnFeedBackImages: [
|
|
{
|
|
columnProp: 'fileName',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '文件名称',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
status: true,
|
|
fixed: false
|
|
},
|
|
{
|
|
columnProp: 'typeFlag',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '图片来源',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
status: true,
|
|
fixed: false
|
|
},
|
|
{
|
|
columnProp: 'createdBy',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '上传人',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
status: true,
|
|
fixed: false
|
|
},
|
|
{
|
|
columnProp: 'createDate',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '上传时间',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
status: true,
|
|
fixed: false
|
|
}
|
|
],
|
|
columnSparPartImages: [
|
|
{
|
|
columnProp: 'fileName',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '文件名称',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
status: true,
|
|
fixed: false
|
|
},
|
|
{
|
|
columnProp: 'createdBy',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '上传人',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
status: true,
|
|
fixed: false
|
|
},
|
|
{
|
|
columnProp: 'createDate',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '上传时间',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
status: true,
|
|
fixed: false
|
|
}
|
|
],
|
|
columnPartSpareList: [
|
|
{
|
|
columnProp: 'partNo',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '备品备件编码',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
status: true,
|
|
fixed: false,
|
|
columnWidth: 120,
|
|
},
|
|
{
|
|
columnProp: 'partDescription',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '备品备件名称',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
status: true,
|
|
fixed: false,
|
|
columnWidth: 150,
|
|
},
|
|
{
|
|
columnProp: 'spec',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '规格型号',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
status: true,
|
|
fixed: false,
|
|
columnWidth: 120,
|
|
},
|
|
{
|
|
columnProp: 'umid',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '单位',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
status: true,
|
|
fixed: false,
|
|
columnWidth: 100,
|
|
},
|
|
],
|
|
columnCoreComponent: [
|
|
{
|
|
columnProp: 'partNo',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '备件编码',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
status: true,
|
|
fixed: false,
|
|
columnWidth: 120,
|
|
},
|
|
{
|
|
columnProp: 'partDescription',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '备件名称',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
status: true,
|
|
fixed: false,
|
|
columnWidth: 200,
|
|
},
|
|
{
|
|
columnProp: 'oldSerialNo',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '老序列号',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
status: true,
|
|
fixed: false,
|
|
columnWidth: 120,
|
|
},
|
|
{
|
|
columnProp: 'newSerialNo',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '新序列号',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
status: true,
|
|
fixed: false,
|
|
columnWidth: 120,
|
|
},
|
|
],
|
|
// 日期限制
|
|
pickerOptions: {
|
|
disabledDate(time) {
|
|
return time.getTime() > Date.now();
|
|
},
|
|
},
|
|
activeTable: 'inspection_form',
|
|
historyRecordList: [],
|
|
feedBackImages: [],
|
|
sparPartImages: [],
|
|
partSpareList: [],
|
|
coreComponentList: [],
|
|
columnHistoryList: [
|
|
{
|
|
columnWidth: 100,
|
|
columnProp: 'orderNo',
|
|
headerAlign: "center",
|
|
align: "left",
|
|
columnLabel: '工单编号',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
},
|
|
{
|
|
columnWidth: 200,
|
|
columnProp: 'planDesc',
|
|
headerAlign: "center",
|
|
align: "left",
|
|
columnLabel: '故障描述',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
},
|
|
{
|
|
columnWidth: 120,
|
|
columnProp: 'defectDesc',
|
|
headerAlign: "center",
|
|
align: "left",
|
|
columnLabel: '故障名称',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
},
|
|
{
|
|
columnWidth: 100,
|
|
columnProp: 'result',
|
|
headerAlign: "center",
|
|
align: "center",
|
|
columnLabel: '维修结论',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
},
|
|
{
|
|
columnWidth: 100,
|
|
columnProp: 'disposalMeasures',
|
|
headerAlign: "center",
|
|
align: "left",
|
|
columnLabel: '处置措施',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
},
|
|
{
|
|
columnWidth: 100,
|
|
columnProp: 'actualOperatorName',
|
|
headerAlign: "center",
|
|
align: "center",
|
|
columnLabel: '维修人员',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
},
|
|
{
|
|
columnWidth: 80,
|
|
columnProp: 'workTime',
|
|
headerAlign: "center",
|
|
align: "right",
|
|
columnLabel: '工作时长(m)',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
},
|
|
{
|
|
columnWidth: 130,
|
|
columnProp: 'actualDate',
|
|
headerAlign: "center",
|
|
align: "center",
|
|
columnLabel: '维修时间',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
},
|
|
{
|
|
columnWidth: 200,
|
|
columnProp: 'remark',
|
|
headerAlign: "center",
|
|
align: "left",
|
|
columnLabel: '备注说明',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
},
|
|
],
|
|
descImages: [],
|
|
imageModalFlag: false,
|
|
chooseReachModelFlag: false,
|
|
reachData: {},
|
|
authSearch: false,
|
|
authReach: false,
|
|
authReport: false,
|
|
menuId: this.$route.meta.menuId,
|
|
exWarehouseData: {
|
|
site: '',
|
|
serialNo: '',
|
|
partNo: '',
|
|
partDescription: '',
|
|
batchNo: '',
|
|
qtyRequired: '',
|
|
supplierId: '',
|
|
supplierDesc: '',
|
|
remark: '',
|
|
locationId: '',
|
|
warehouseId: '',
|
|
sCodeControlFlag: ''
|
|
},
|
|
exWarehouseModalFlag: false,
|
|
currentPartSpareData: {},
|
|
rules: {
|
|
defectID: [
|
|
{
|
|
required: true,
|
|
message: ' ',
|
|
trigger: ['blur','change']
|
|
}
|
|
],
|
|
operatorName: [
|
|
{
|
|
required: true,
|
|
message: ' ',
|
|
trigger: ['blur','change']
|
|
}
|
|
],
|
|
result: [
|
|
{
|
|
required: true,
|
|
message: ' ',
|
|
trigger: ['blur','change']
|
|
}
|
|
],
|
|
handlingMethod: [
|
|
{
|
|
required: true,
|
|
message: ' ',
|
|
trigger: ['blur','change']
|
|
}
|
|
]
|
|
},
|
|
columnKnowledgeList: [
|
|
{
|
|
columnProp: 'defectId',
|
|
headerAlign: "center",
|
|
align: "center",
|
|
columnLabel: '故障编码',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 100,
|
|
},
|
|
{
|
|
columnProp: 'defectDesc',
|
|
headerAlign: "center",
|
|
align: "left",
|
|
columnLabel: '故障原因',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 150,
|
|
},
|
|
{
|
|
columnProp: 'defectDescribe',
|
|
headerAlign: "center",
|
|
align: "left",
|
|
columnLabel: '故障描述',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 200,
|
|
},
|
|
{
|
|
columnProp: 'disposalMeasures',
|
|
headerAlign: "center",
|
|
align: "left",
|
|
columnLabel: '处置措施',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},
|
|
{
|
|
columnProp: 'orderNo',
|
|
align: 'left',
|
|
columnLabel: '单据号',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 100,
|
|
},
|
|
{
|
|
columnProp: 'remark',
|
|
headerAlign: "center",
|
|
align: "left",
|
|
columnLabel: '备注',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 200,
|
|
},
|
|
{
|
|
columnProp: 'createDate',
|
|
align: 'center',
|
|
columnLabel: '上传时间',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 130,
|
|
},
|
|
{
|
|
columnProp: 'createBy',
|
|
headerAlign: "center",
|
|
align: "center",
|
|
columnLabel: '上传人',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 100,
|
|
},
|
|
{
|
|
columnProp: 'updateDate',
|
|
align: 'center',
|
|
columnLabel: '更新时间',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 150,
|
|
},
|
|
{
|
|
columnProp: 'updateBy',
|
|
headerAlign: "center",
|
|
align: "center",
|
|
columnLabel: '更新人',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 100,
|
|
},
|
|
],
|
|
knowledgeRecordList: []
|
|
}
|
|
},
|
|
|
|
mounted () {
|
|
this.$nextTick(() => {
|
|
this.height = window.innerHeight - 212
|
|
})
|
|
this.$refs.objectID.focus()
|
|
},
|
|
|
|
created() {
|
|
// 按钮控制
|
|
this.getButtonAuthData()
|
|
this.getSiteAndBuByUserName()
|
|
this.favoriteIsOk()
|
|
// 动态列
|
|
this.getTableUserColumn(this.$route.meta.menuId+'table1',1)
|
|
this.getTableUserColumn(this.$route.meta.menuId+'table2',2)
|
|
if (!this.authSearch) {
|
|
// 获取数据列表
|
|
this.getDataList()
|
|
}
|
|
// 获取用户角色
|
|
this.getUserRoleList()
|
|
},
|
|
|
|
methods: {
|
|
// 取消小键盘
|
|
cancelKeyboard (e) {
|
|
// this.$refs.objectID
|
|
e.target.setAttribute('readonly', true);
|
|
setTimeout(() => {
|
|
e.target.removeAttribute('readonly');
|
|
}, 100);
|
|
},
|
|
|
|
// 设备编码回车事件
|
|
objectIdEnter () {
|
|
this.searchData.limit = this.pageSize
|
|
this.searchData.page = this.pageIndex
|
|
eamWorkOrderSearch2(this.searchData).then(({data}) => {
|
|
if (data.code === 0) {
|
|
this.dataList = data.page.list
|
|
this.pageIndex = data.page.currPage
|
|
this.pageSize = data.page.pageSize
|
|
this.totalPage = data.page.totalCount
|
|
if (this.searchData.objectID != null && this.searchData.objectID !== '' && this.dataList.length > 0) {
|
|
if (this.dataList[0].status == '未开工') {
|
|
this.saveData.site = this.dataList[0].site
|
|
this.saveData.buNo = this.dataList[0].buNo
|
|
this.saveData.operator = ''
|
|
this.saveData.operatorName = ''
|
|
this.operatorData.bu = this.dataList[0].site + '_' + this.dataList[0].buNo
|
|
this.reachData = this.dataList[0]
|
|
this.chooseReachModelFlag = true
|
|
} else if (this.dataList[0].status == '已到达') {
|
|
this.reportModal(this.dataList[0])
|
|
}
|
|
}
|
|
}
|
|
})
|
|
},
|
|
|
|
// 请扫描条码回车事件
|
|
serialNoEnter () {
|
|
if (this.exWarehouseData.serialNo === '' || this.exWarehouseData.serialNo == null) {
|
|
this.$message.warning('请输入序列号!')
|
|
this.exWarehouseData.batchNo = ''
|
|
this.exWarehouseData.serialNo = ''
|
|
this.exWarehouseData.partNo = ''
|
|
this.exWarehouseData.partDescription = ''
|
|
this.exWarehouseData.qtyRequired = ''
|
|
this.exWarehouseData.supplierId = ''
|
|
this.exWarehouseData.supplierDesc = ''
|
|
this.exWarehouseData.remark = ''
|
|
this.exWarehouseData.locationId = ''
|
|
this.exWarehouseData.warehouseId = ''
|
|
this.exWarehouseData.sCodeControlFlag = ''
|
|
this.$nextTick(() => {
|
|
this.$refs.serialNoRef.focus()
|
|
})
|
|
return
|
|
}
|
|
let serialNoSplit = this.exWarehouseData.serialNo.split(";")
|
|
let jsonData
|
|
if (serialNoSplit.length > 1) {
|
|
jsonData = {
|
|
site: this.exWarehouseData.site,
|
|
partNo: serialNoSplit[0],
|
|
batchNo: serialNoSplit[1],
|
|
active: 'Y',
|
|
}
|
|
} else {
|
|
jsonData = {
|
|
site: this.exWarehouseData.site,
|
|
serialNo: this.exWarehouseData.serialNo,
|
|
active: 'Y',
|
|
}
|
|
}
|
|
this.getPartSpareData(jsonData)
|
|
},
|
|
|
|
// 获取领用出库信息
|
|
getPartSpareData (jsonData) {
|
|
getInventoryStockList(jsonData).then(({data}) => {
|
|
if (data.code === 0) {
|
|
if (data.rows.length === 0) {
|
|
this.$message.error('无此记录!')
|
|
this.$nextTick(() => {
|
|
this.$refs.serialNoRef.focus()
|
|
})
|
|
} else {
|
|
if (!this.partSpareList.some(item => item.partNo === data.rows[0].partNo)) {
|
|
this.$message.warning('设备中不包含该备品备件!')
|
|
this.exWarehouseData.serialNo = ''
|
|
return false;
|
|
}
|
|
this.exWarehouseData.partNo = data.rows[0].partNo
|
|
this.exWarehouseData.batchNo = data.rows[0].batchNo
|
|
this.exWarehouseData.qtyRequired = data.rows[0].qtyOnHand
|
|
this.exWarehouseData.partDescription = data.rows[0].partDescription
|
|
this.exWarehouseData.supplierId = data.rows[0].supplierId
|
|
this.exWarehouseData.supplierDesc = data.rows[0].supplierDesc
|
|
this.exWarehouseData.locationId = data.rows[0].locationId
|
|
this.exWarehouseData.warehouseId = data.rows[0].warehouseId
|
|
this.exWarehouseData.sCodeControlFlag = data.rows[0].sCodeControlFlag
|
|
}
|
|
} else {
|
|
this.$alert(data.msg, '错误', {
|
|
confirmButtonText: '确定'
|
|
})
|
|
}
|
|
})
|
|
},
|
|
|
|
// 维修出库
|
|
saveSfdcTh () {
|
|
if (this.exWarehouseData.partNo === '' || this.exWarehouseData.partNo == null) {
|
|
this.$message.warning('请输入备品备件编码!')
|
|
return;
|
|
}
|
|
if (this.exWarehouseData.qtyRequired === '' || this.exWarehouseData.qtyRequired == null || this.exWarehouseData.qtyRequired < 1) {
|
|
this.$message.warning('供应商不能为空值,或者小于1!')
|
|
return;
|
|
}
|
|
if (this.exWarehouseData.supplierId === '' || this.exWarehouseData.supplierId == null) {
|
|
this.$message.warning('供应商不能为空值!')
|
|
return;
|
|
}
|
|
let jsonData = {
|
|
site: this.exWarehouseData.site,
|
|
userName: this.$store.state.user.name,
|
|
transTypeDB: 'WXCK',
|
|
partNo: this.exWarehouseData.partNo,
|
|
transType: '维修出库',
|
|
erpFlag: 'N',
|
|
locationId: this.exWarehouseData.locationId,
|
|
direction: '-',
|
|
inQty: 0,
|
|
outQty: this.exWarehouseData.qtyRequired,
|
|
useLocation: 'N',
|
|
status: '已录入',
|
|
remark: this.exWarehouseData.remark,
|
|
warehouseId: this.exWarehouseData.warehouseId,
|
|
supplierId: this.exWarehouseData.supplierId,
|
|
sCodeControlFlag: this.exWarehouseData.sCodeControlFlag,
|
|
resourceId: '',
|
|
batchNo: this.exWarehouseData.batchNo,
|
|
buNo: this.saveData.buNo,
|
|
orderNo: this.saveData.orderNo,
|
|
outType: '维修出库'
|
|
}
|
|
saveTrans(jsonData).then(({data}) => {
|
|
if (data.code === 0) {
|
|
this.$message({
|
|
message: '操作成功',
|
|
type: 'success',
|
|
duration: 1500,
|
|
onClose: () => {}
|
|
})
|
|
this.exWarehouseData = {
|
|
site: this.saveData.site,
|
|
serialNo: '',
|
|
partNo: '',
|
|
partDescription: '',
|
|
batchNo: '',
|
|
qtyRequired: '',
|
|
supplierId: '',
|
|
supplierDesc: '',
|
|
remark: '',
|
|
locationId: '',
|
|
warehouseId: '',
|
|
sCodeControlFlag: ''
|
|
}
|
|
this.$nextTick(() => {
|
|
this.$refs.serialNoRef.focus()
|
|
})
|
|
} else {
|
|
this.$alert(data.msg, '错误', {
|
|
confirmButtonText: '确定'
|
|
})
|
|
}
|
|
})
|
|
},
|
|
|
|
// 获取用户的bu
|
|
getSiteAndBuByUserName () {
|
|
let tempData = {
|
|
username: this.$store.state.user.name,
|
|
}
|
|
getSiteAndBuByUserName(tempData).then(({data}) => {
|
|
if (data.code === 0) {
|
|
this.userBuList = data.rows
|
|
}
|
|
})
|
|
},
|
|
|
|
// 时间处理函数
|
|
getStandTime (data) {
|
|
let value =
|
|
data.getFullYear() +
|
|
"-" +
|
|
this.checkTime(data.getMonth() + 1) +
|
|
"-" +
|
|
this.checkTime(data.getDate()) +
|
|
" " +
|
|
this.checkTime(data.getHours()) +
|
|
":" +
|
|
this.checkTime(data.getMinutes()) +
|
|
":" +
|
|
this.checkTime(data.getSeconds());
|
|
return value;
|
|
},
|
|
|
|
// 时间处理,如果时间小于10 则再前面加一个'0'
|
|
checkTime (i) {
|
|
if (i < 10) {
|
|
i = "0" + i
|
|
}
|
|
return i
|
|
},
|
|
|
|
// 日期时间选择器改变
|
|
handleChangeTime () {
|
|
// 当选择的时间大于当前时间,自动填充为当前时间
|
|
// 设备开始时间
|
|
let start = (new Date(this.saveData.startDate) * 1000) / 1000
|
|
if (start > Date.now()) {
|
|
this.saveData.startDate = this.getStandTime(new Date())
|
|
this.$message({
|
|
message: "时间超出范围!",
|
|
type: "warning",
|
|
})
|
|
}
|
|
// 设备结束时间
|
|
let end = (new Date(this.saveData.endDate) * 1000) / 1000
|
|
if (end > Date.now()) {
|
|
this.saveData.endDate = this.getStandTime(new Date())
|
|
this.$message({
|
|
message: "时间超出范围!",
|
|
type: "warning",
|
|
})
|
|
}
|
|
// 结束时间小于开始时间
|
|
if (start > end) {
|
|
this.saveData.endDate = this.saveData.startDate
|
|
this.$message({
|
|
message: "结束时间小于开始时间!",
|
|
type: "warning",
|
|
})
|
|
}
|
|
},
|
|
|
|
// 点击行选中复选框
|
|
operatorClickRow (row) {
|
|
this.$refs.operatorTable.toggleRowSelection(row)
|
|
},
|
|
|
|
// 获取用户角色
|
|
getUserRoleList () {
|
|
getUserRoleList().then(({data}) => {
|
|
if (data.code === 0) {
|
|
this.roleList = data.rows
|
|
} else {
|
|
this.roleList = []
|
|
}
|
|
})
|
|
},
|
|
|
|
// 获取机修人员列表
|
|
getOperatorList () {
|
|
this.operatorData.bu = this.saveData.site + '_' + this.saveData.buNo
|
|
if (this.roleList.length > 0) {
|
|
let filterList = this.roleList.filter(item => item.roleName === '机修人员')
|
|
if (filterList.length > 0) {
|
|
this.operatorData.roleId = filterList[0].roleId
|
|
} else {
|
|
this.operatorData.roleId = this.roleList[0].roleId
|
|
}
|
|
} else {
|
|
this.operatorData.roleId = ''
|
|
}
|
|
// 先清空缓存选中
|
|
this.$nextTick(() => this.$refs.operatorTable.clearSelection())
|
|
// 拿到选中的人员编号
|
|
let tempDataList = (this.saveData.operator == null ? '' : this.saveData.operator).split(';')
|
|
// 查询人员
|
|
getOperatorList(this.operatorData).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.operatorList = data.rows
|
|
this.operatorList.forEach(val => {
|
|
// 回显选中的人员
|
|
if (tempDataList.includes(val.adminID)) {
|
|
this.$nextTick(() => this.$refs.operatorTable.toggleRowSelection(val, true))
|
|
}
|
|
})
|
|
this.operatorModelFlag = true
|
|
} else {
|
|
this.$alert(data.msg, '错误', {
|
|
confirmButtonText: '确定'
|
|
})
|
|
}
|
|
})
|
|
if (this.saveData.operator == null) {
|
|
this.saveData.operator = ''
|
|
this.saveData.operatorName = ''
|
|
}
|
|
},
|
|
|
|
// 查询机修人员列表
|
|
getOperatorList2 () {
|
|
// // 先清空缓存选中
|
|
// this.$nextTick(() => this.$refs.operatorTable.clearSelection())
|
|
// 查询人员
|
|
getOperatorList(this.operatorData).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.operatorList = data.rows
|
|
} else {
|
|
this.operatorList = []
|
|
}
|
|
})
|
|
},
|
|
|
|
// // 获取数据列表
|
|
// getRoleNameList () {
|
|
// this.$http({
|
|
// url: this.$http.adornUrl('/sys/role/list2'),
|
|
// method: 'get',
|
|
// params: this.$http.adornParams({
|
|
// 'page': this.pageIndex,
|
|
// 'limit': this.pageSize,
|
|
// })
|
|
// }).then(({data}) => {
|
|
// let temp = []
|
|
// if (data && data.code === 0) {
|
|
// this.roleList = data.page.list
|
|
// temp = this.roleList[0]
|
|
// this.roleList[0] = this.roleList[1]
|
|
// this.roleList[1] = temp
|
|
// } else {
|
|
// this.roleList = []
|
|
// }
|
|
// })
|
|
// },
|
|
|
|
// 多选
|
|
selectionChangeHandle2 (val) {
|
|
this.dataListSelections2 = val
|
|
},
|
|
|
|
// 确认多选机修人员
|
|
confirmOperator () {
|
|
this.saveData.operatorName = ''
|
|
this.saveData.operator = ''
|
|
for (let i = 0; i < this.dataListSelections2.length; i++) {
|
|
this.saveData.operatorName = this.saveData.operatorName + ";" + this.dataListSelections2[i].adminName
|
|
this.saveData.operator = this.saveData.operator + ";" + this.dataListSelections2[i].adminID
|
|
}
|
|
this.saveData.operator = this.saveData.operator.substring(1)
|
|
this.saveData.operatorName = this.saveData.operatorName.substring(1)
|
|
this.operatorModelFlag = false
|
|
},
|
|
|
|
// 校验用户是否收藏
|
|
favoriteIsOk () {
|
|
let userFavorite = {
|
|
userId: this.$store.state.user.id,
|
|
languageCode: this.$i18n.locale
|
|
}
|
|
userFavoriteList(userFavorite).then(({data}) => {
|
|
for (let i = 0; i < data.list.length; i++) {
|
|
if(this.$route.meta.menuId === data.list[i].menuId){
|
|
this.favorite = true
|
|
}
|
|
}
|
|
})
|
|
},
|
|
|
|
// 收藏 OR 取消收藏
|
|
favoriteFunction () {
|
|
let userFavorite = {
|
|
userId: this.$store.state.user.id,
|
|
functionId: this.$route.meta.menuId,
|
|
}
|
|
if (this.favorite) {
|
|
removeUserFavorite(userFavorite).then(({data}) => {
|
|
this.$message.success(data.msg)
|
|
this.favorite = false
|
|
})
|
|
} else {
|
|
// 收藏
|
|
saveUserFavorite(userFavorite).then(({data}) => {
|
|
this.$message.success(data.msg)
|
|
this.favorite = true
|
|
})
|
|
}
|
|
},
|
|
|
|
// 获取基础数据列表S
|
|
getBaseList (val,type) {
|
|
this.tagNo = val
|
|
this.$nextTick(() => {
|
|
let strVal = ''
|
|
let conSql = ''
|
|
if (val === 201) {
|
|
strVal = this.searchData.planOperator
|
|
this.$refs.baseList.init(val, strVal)
|
|
}
|
|
if (val === 1033) {
|
|
strVal = this.saveData.defectID
|
|
this.$refs.baseList.init(val, strVal)
|
|
}
|
|
if (val === 1059) {
|
|
strVal = this.coreComponentData.partNo
|
|
let tempData = {
|
|
site: this.saveData.site,
|
|
buNo: this.saveData.buNo,
|
|
objectID: this.saveData.objectID,
|
|
orderNo: this.saveData.orderNo,
|
|
}
|
|
conSql = " and rs.bu_no = '" + tempData.buNo + "' and rs.site = '" + tempData.site +
|
|
"' and rs.resource_id = '" +
|
|
tempData.objectID +"'"
|
|
this.$refs.baseList.init(val, strVal, conSql)
|
|
}
|
|
})
|
|
},
|
|
|
|
/* 列表方法的回调 */
|
|
getBaseData (val) {
|
|
if (this.tagNo === 201) {
|
|
this.searchData.planOperator = val.username
|
|
}
|
|
if (this.tagNo === 1033) {
|
|
this.saveData.defectID = val.DefectID
|
|
this.saveData.defectDesc = val.DefectDesc
|
|
}
|
|
if (this.tagNo === 1059) {
|
|
this.coreComponentData.partNo = val.part_no
|
|
this.coreComponentData.partDescription = val.part_description
|
|
}
|
|
},
|
|
|
|
partNoBlur (tagNo) {
|
|
if (this.coreComponentData.partNo != null && this.coreComponentData.partNo !== '') {
|
|
let tempData = {
|
|
tagno: tagNo,
|
|
conditionSql: " and rs.part_no = '" + this.coreComponentData.partNo + "' and rs.bu_no = '" +
|
|
this.saveData.buNo +
|
|
"' and rs.site = '" + this.saveData.site +
|
|
"' and rs.resource_id = '" +
|
|
this.saveData.objectID + "'",
|
|
}
|
|
verifyData(tempData).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
if (data.baseListData.length > 0) {
|
|
this.coreComponentData.partNo = data.baseListData[0].part_no
|
|
this.coreComponentData.partDescription = data.baseListData[0].part_description
|
|
return
|
|
}
|
|
}
|
|
})
|
|
}
|
|
this.coreComponentData.partDescription = ''
|
|
},
|
|
|
|
async exportExcel() {
|
|
this.searchData.limit = -1
|
|
this.searchData.page = 1
|
|
excel.exportTable({
|
|
url: "/pms/eam/eamWorkOrderSearch2",
|
|
columnMapping: this.columnList,//可以直接用table,不需要的列就剔除
|
|
mergeSetting: [],//需要合并的列
|
|
params: this.searchData,
|
|
fileName: this.exportName+".xlsx",
|
|
rowFetcher: res => res.data,
|
|
columnFormatter: [],
|
|
dropColumns: [],//需要剔除的列,例如dropColumns: ["netWeight"],即剔除净重列
|
|
});
|
|
},
|
|
|
|
//导出excel
|
|
// async createExportData () {
|
|
// this.searchData.limit = -1
|
|
// this.searchData.page = 1
|
|
// await eamWorkOrderSearch2(this.searchData).then(({data}) => {
|
|
// this.exportList= data.page.list
|
|
// })
|
|
// return this.exportList
|
|
// },
|
|
//
|
|
// startDownload () {},
|
|
//
|
|
// finishDownload () {},
|
|
//
|
|
// fields () {
|
|
// let json = "{"
|
|
// this.columnList.forEach((item, index) => {
|
|
// if (index == this.columnList.length - 1) {
|
|
// json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
|
|
// } else {
|
|
// json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
|
|
// }
|
|
// })
|
|
// json += "}"
|
|
// let s = eval("(" + json + ")")
|
|
// return s
|
|
// },
|
|
|
|
// 获取数据列表
|
|
getDataList () {
|
|
this.searchData.limit = this.pageSize
|
|
this.searchData.page = this.pageIndex
|
|
eamWorkOrderSearch2(this.searchData).then(({data}) => {
|
|
if (data.code === 0) {
|
|
this.dataList = data.page.list
|
|
this.pageIndex = data.page.currPage
|
|
this.pageSize = data.page.pageSize
|
|
this.totalPage = data.page.totalCount
|
|
}
|
|
})
|
|
},
|
|
|
|
// 每页数
|
|
sizeChangeHandle (val) {
|
|
this.pageSize = val
|
|
this.pageIndex = 1
|
|
this.getDataList()
|
|
},
|
|
|
|
// 当前页
|
|
currentChangeHandle (val) {
|
|
this.pageIndex = val
|
|
this.getDataList()
|
|
},
|
|
|
|
// 每页数
|
|
sizeChangeHandle2 (val) {
|
|
this.pageSize2 = val
|
|
this.pageIndex2 = 1
|
|
this.queryHistoryRecord()
|
|
},
|
|
|
|
// 当前页
|
|
currentChangeHandle2 (val) {
|
|
this.pageIndex2 = val
|
|
this.queryHistoryRecord()
|
|
},
|
|
|
|
// 每页数
|
|
sizeChangeHandle3 (val) {
|
|
this.pageSize3 = val
|
|
this.pageIndex3 = 1
|
|
this.queryKnowledgeRecord()
|
|
},
|
|
|
|
// 当前页
|
|
currentChangeHandle3 (val) {
|
|
this.pageIndex3 = val
|
|
this.queryKnowledgeRecord()
|
|
},
|
|
|
|
// 多选
|
|
selectionChangeHandle (val) {
|
|
this.dataListSelections = val
|
|
},
|
|
rowStyle({row}){
|
|
let isReturn = row.isReturn
|
|
// 区分不同的样式对应不同的颜色
|
|
if (isReturn=='Y') {
|
|
return { 'background-color': '#FFD3D3', cursor: 'pointer' }
|
|
}
|
|
},
|
|
|
|
// 选择到达人员
|
|
chooseReachOperator (row) {
|
|
this.saveData.site = row.site
|
|
this.saveData.buNo = row.buNo
|
|
this.saveData.operator = ''
|
|
this.saveData.operatorName = ''
|
|
this.operatorData.bu = row.site + '_' + row.buNo
|
|
this.reachData = row
|
|
this.chooseReachModelFlag = true
|
|
this.planPeople = row.planOperatorName
|
|
this.buNo = row.buNo
|
|
},
|
|
|
|
// 到达
|
|
reach () {
|
|
if (this.saveData.operator === '' || this.saveData.operator == null) { // 2025-02-13 海波要求
|
|
this.$message.warning('请选择到达人员!')
|
|
return
|
|
}
|
|
if (this.buNo != '01-Label' && this.planPeople){
|
|
if (!this.saveData.operatorName.includes(this.planPeople)){
|
|
this.$message.warning('到达人员中不包含计划人员!')
|
|
return
|
|
}
|
|
}
|
|
let tempData = {
|
|
site: this.saveData.site,
|
|
buNo: this.saveData.buNo,
|
|
functionType: 'C',
|
|
orderNo: this.reachData.orderNo,
|
|
feedBackId: this.reachData.feedBackId,
|
|
objectID: this.reachData.objectID,
|
|
status: '已到达',
|
|
reachOperator: this.saveData.operator,
|
|
reachOperatorName: this.saveData.operatorName
|
|
}
|
|
reach(tempData).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.getDataList()
|
|
this.chooseReachModelFlag = false
|
|
this.$message({
|
|
message: '操作成功',
|
|
type: 'success',
|
|
duration: 1500,
|
|
onClose: () => {}
|
|
})
|
|
} else {
|
|
this.$alert(data.msg, '错误', {
|
|
confirmButtonText: '确定'
|
|
})
|
|
}
|
|
})
|
|
},
|
|
insertCoreComponents(){
|
|
this.coreComponentData = {
|
|
site: this.saveData.site,
|
|
buNo: this.saveData.buNo,
|
|
orderNo: this.saveData.orderNo,
|
|
objectID: this.saveData.objectID,
|
|
createdBy: this.$store.state.user.name,
|
|
partNo: '',
|
|
partDescription: '',
|
|
oldSerialNo: '',
|
|
newSerialNo: '',
|
|
}
|
|
this.updateCoreComponentsFlag = true
|
|
this.coreComponentFlag = true
|
|
},
|
|
updateCoreComponents(row){
|
|
this.coreComponentData = {
|
|
site: this.saveData.site,
|
|
buNo: this.saveData.buNo,
|
|
orderNo: this.saveData.orderNo,
|
|
objectID: this.saveData.objectID,
|
|
createdBy: this.$store.state.user.name,
|
|
partNo: row.partNo,
|
|
partDescription: row.partDescription,
|
|
oldSerialNo: row.oldSerialNo,
|
|
newSerialNo: row.newSerialNo,
|
|
}
|
|
this.updateCoreComponentsFlag = false
|
|
this.coreComponentFlag = true
|
|
},
|
|
deleteCoreComponents(row){
|
|
this.$confirm('确定删除该核心备件吗?',{
|
|
confirmButtonText: '确定',
|
|
cancelButtonText: '取消',
|
|
type: 'warning'
|
|
}).then(()=>{
|
|
this.coreComponentData = {
|
|
site: this.saveData.site,
|
|
buNo: this.saveData.buNo,
|
|
orderNo: this.saveData.orderNo,
|
|
objectID: this.saveData.objectID,
|
|
createdBy: this.$store.state.user.name,
|
|
partNo: row.partNo,
|
|
partDescription: row.partDescription,
|
|
oldSerialNo: row.oldSerialNo,
|
|
newSerialNo: row.newSerialNo,
|
|
}
|
|
deleteCoreComponents(this.coreComponentData).then(({data})=>{
|
|
if (data && data.code === 0) {
|
|
this.getCorePartSpareList()
|
|
this.$message.success(data.msg)
|
|
} else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
}).catch((error)=>{
|
|
this.$message.error(error)
|
|
})
|
|
})
|
|
|
|
},
|
|
|
|
// 执行
|
|
reportModal (row) {
|
|
this.saveData = {
|
|
site: row.site,
|
|
buNo: row.buNo,
|
|
functionType: 'C',
|
|
orderNo: row.orderNo,
|
|
planID: row.planID,
|
|
planOperator: row.planOperator,
|
|
planOperatorName: row.planOperatorName,
|
|
workTime: '',
|
|
remark: row.remark,
|
|
disposalMeasures: row.disposalMeasures,
|
|
mesUser: this.$store.state.user.name,
|
|
itemList: [],
|
|
defectID: row.defectID,
|
|
defectDesc: row.defectDesc,
|
|
objectID: row.objectID,
|
|
objectDesc: row.objectDesc,
|
|
checkWorkPlanId: row.checkWorkPlanId,
|
|
checkItemNo: row.checkItemNo,
|
|
reachDate: row.reachDate,
|
|
operator: row.result == null ? row.reachOperator : row.adminID,
|
|
operatorName: row.result == null ? row.reachOperatorName : row.operator,
|
|
handlingMethod: row.handlingMethod,
|
|
feedBackDesc: row.feedBackDesc,
|
|
faultReason: row.faultReason,
|
|
preventiveMeasure: row.preventiveMeasure,
|
|
result: row.result,
|
|
repairReportingType: row.repairReportingType,
|
|
repairType: row.repairType,
|
|
createBy: row.createBy,
|
|
createdDate: row.createdDate,
|
|
reachOperator: row.reachOperator,
|
|
reachOperatorName: row.reachOperatorName,
|
|
urgency: row.urgency,
|
|
responseTime: row.responseTime,
|
|
shutdownWarranty: row.repairReportingType === '设备故障' ? '是' : '否',
|
|
isReturn: row.isReturn
|
|
}
|
|
this.buNo = row.buNo
|
|
this.activeTable = 'inspection_form'
|
|
this.detailModelFlag = true
|
|
},
|
|
|
|
saveCheckReport () {
|
|
if (this.saveData.defectID === '' || this.saveData.defectID == null) {
|
|
this.$message.warning('请选择故障编码!')
|
|
return
|
|
}
|
|
if (this.saveData.result === '' || this.saveData.result == null) {
|
|
this.$message.warning('请选择维修结果!')
|
|
return
|
|
}
|
|
if (this.saveData.result === '维修失败' && (this.saveData.disposalMeasures == null || this.saveData.disposalMeasures === '')) {
|
|
this.$message.warning('请选择处置措施!')
|
|
return
|
|
}
|
|
if (this.saveData.operator == null || this.saveData.operator === '') {
|
|
this.$message.warning('请选择维修人员!')
|
|
return
|
|
}
|
|
if (this.saveData.faultReason === '' || this.saveData.faultReason == null || this.saveData.faultReason.length < 11) {
|
|
this.$message.warning('请填写故障原因,且大于十个字数!')
|
|
return
|
|
}
|
|
if (this.saveData.handlingMethod === '' || this.saveData.handlingMethod == null || this.saveData.handlingMethod.length < 11) {
|
|
this.$message.warning('请填写处理方式,且大于十个字数!')
|
|
return
|
|
}
|
|
if (this.buNo != '01-Label' && this.saveData.planOperatorName){
|
|
if (!this.saveData.operatorName.includes(this.saveData.planOperatorName)){
|
|
this.$message.warning('实际执行人员中不包含计划人员,请检查!')
|
|
return
|
|
}
|
|
}
|
|
saveOrderReportForDefect(this.saveData).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.getDataList()
|
|
this.detailModelFlag = false
|
|
this.$message({
|
|
message: '操作成功',
|
|
type: 'success',
|
|
duration: 1500,
|
|
onClose: () => {}
|
|
})
|
|
} else {
|
|
this.$alert(data.msg, '错误', {
|
|
confirmButtonText: '确定'
|
|
})
|
|
}
|
|
})
|
|
},
|
|
|
|
// 上传维修故障图片
|
|
uploadFaultImageModal () {
|
|
let currentData = {
|
|
site: this.saveData.site,
|
|
buNo: this.saveData.buNo,
|
|
createBy: this.$store.state.user.name,
|
|
orderNo: this.saveData.orderNo,
|
|
folder: 'reportFault',
|
|
}
|
|
// 打开组件 去做新增业务
|
|
this.$nextTick(() => {
|
|
this.$refs.reportImageUpload.init(currentData)
|
|
})
|
|
},
|
|
|
|
// 上传备件图片
|
|
uploadSparPartImageModal () {
|
|
let currentData = {
|
|
site: this.saveData.site,
|
|
buNo: this.saveData.buNo,
|
|
createBy: this.$store.state.user.name,
|
|
orderNo: this.saveData.orderNo,
|
|
folder: 'reportSparPart',
|
|
}
|
|
// 打开组件 去做新增业务
|
|
this.$nextTick(() => {
|
|
this.$refs.reportImageUpload.init(currentData)
|
|
})
|
|
},
|
|
|
|
// 列表表格选择替换
|
|
tabClick (tab, event) {
|
|
// 刷新列表数据
|
|
this.refreshCurrentTabTable()
|
|
},
|
|
|
|
// 刷新页签的table数据
|
|
refreshCurrentTabTable () {
|
|
// 区分不同的页签刷新不同的列表数据
|
|
if (this.activeTable === 'inspection_form') {
|
|
//this.getInspectionFormData()
|
|
} else if (this.activeTable === 'history_record') {
|
|
this.queryHistoryRecord()
|
|
} else if (this.activeTable === 'feed_back_img') {
|
|
this.getFeedBackImages()
|
|
} else if (this.activeTable === 'part_spare_list') {
|
|
this.getPartSpareList()
|
|
} else if (this.activeTable === 'eam_knowledge') {
|
|
this.queryKnowledgeRecord()
|
|
} else if (this.activeTable === 'spar_part_img') {
|
|
this.getSparPartImages()
|
|
} else if (this.activeTable === 'core_component') {
|
|
this.getCorePartSpareList()
|
|
}
|
|
},
|
|
|
|
// 维修记录
|
|
queryHistoryRecord () {
|
|
let tempData = {
|
|
site: this.saveData.site,
|
|
buNo: this.saveData.buNo,
|
|
objectID: this.saveData.objectID,
|
|
functionType: 'C',
|
|
limit: this.pageSize2,
|
|
page: this.pageIndex2
|
|
}
|
|
queryHistoryRecord(tempData).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.historyRecordList = data.page.list
|
|
this.pageIndex2 = data.page.currPage
|
|
this.pageSize2 = data.page.pageSize
|
|
this.totalPage2 = data.page.totalCount
|
|
} else {
|
|
this.historyRecordList = []
|
|
}
|
|
})
|
|
},
|
|
|
|
// 知识库记录
|
|
queryKnowledgeRecord () {
|
|
let tempData = {
|
|
site: this.saveData.site,
|
|
buNo: this.saveData.buNo,
|
|
objectId: this.saveData.objectID,
|
|
fileType: '维修',
|
|
limit: this.pageSize3,
|
|
page: this.pageIndex3
|
|
}
|
|
getKnowledgeBaseList(tempData).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.knowledgeRecordList = data.page.list
|
|
this.pageIndex3 = data.page.currPage
|
|
this.pageSize3 = data.page.pageSize
|
|
this.totalPage3 = data.page.totalCount
|
|
} else {
|
|
this.knowledgeRecordList = []
|
|
}
|
|
})
|
|
},
|
|
|
|
// 刷新派设备文档的列表
|
|
getFileContentData (row) {
|
|
let currentData = {
|
|
orderRef1: row.site,
|
|
orderRef2: row.num,
|
|
}
|
|
getFileContentList(currentData).then(({data}) => {
|
|
//区分请求成功和失败的状况
|
|
if (data && data.code == 200) {
|
|
this.fileContentList = data.rows
|
|
} else {
|
|
this.fileContentList = []
|
|
}
|
|
})
|
|
},
|
|
|
|
// 获取故障图片
|
|
getFeedBackImages () {
|
|
let tempData = {
|
|
site: this.saveData.site,
|
|
buNo: this.saveData.buNo,
|
|
orderNo: this.saveData.orderNo,
|
|
planID: this.saveData.planID
|
|
}
|
|
getFeedBackImages(tempData).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.feedBackImages = data.rows
|
|
} else {
|
|
this.feedBackImages = []
|
|
}
|
|
})
|
|
},
|
|
|
|
// 获取备件图片
|
|
getSparPartImages () {
|
|
let tempData = {
|
|
site: this.saveData.site,
|
|
buNo: this.saveData.buNo,
|
|
orderNo: this.saveData.orderNo,
|
|
folder: 'reportSparPart'
|
|
}
|
|
getSparPartImages(tempData).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.sparPartImages = data.rows
|
|
} else {
|
|
this.sparPartImages = []
|
|
}
|
|
})
|
|
},
|
|
|
|
// 获取备品备件信息
|
|
getPartSpareList () {
|
|
let tempData = {
|
|
site: this.saveData.site,
|
|
objectID: this.saveData.objectID
|
|
}
|
|
getDevicePartList(tempData).then(({data}) => {
|
|
// 区分请求成功和失败的状况
|
|
if (data && data.code === 200) {
|
|
this.partSpareList = data.rows
|
|
} else {
|
|
this.partSpareList = []
|
|
}
|
|
})
|
|
},
|
|
|
|
// 预览
|
|
previewFile (row) {
|
|
// 预览文件
|
|
let image = ['jpg', 'jpeg', 'png', 'gif', 'bmp']
|
|
let type = ''
|
|
if (image.includes(row.fileType.toLowerCase())) {
|
|
type = 'image/' + row.fileType
|
|
}
|
|
let video = ['mp4', 'avi', 'mov', 'wmv', 'flv']
|
|
if (video.includes(row.fileType.toLowerCase())) {
|
|
type = 'video/' + row.fileType
|
|
}
|
|
let txt = ['txt']
|
|
if (txt.includes(row.fileType.toLowerCase())) {
|
|
type = 'text/plain;charset=utf-8'
|
|
}
|
|
let office = ['doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx']
|
|
if (office.includes(row.fileType.toLowerCase())) {
|
|
if (row.fileType.toLowerCase() === 'doc' || row.fileType.toLowerCase() === 'docx') {
|
|
type = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
|
|
} else if (row.fileType.toLowerCase() === 'ppt' || row.fileType.toLowerCase() === 'pptx') {
|
|
type = 'application/vnd.openxmlformats-officedocument.presentationml.presentation'
|
|
} else {
|
|
type = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
|
|
}
|
|
}
|
|
let pdf = ['pdf']
|
|
if (pdf.includes(row.fileType.toLowerCase())) {
|
|
type = 'application/pdf'
|
|
}
|
|
downLoadObjectFile(row).then(({data}) => {
|
|
const blob = new Blob([data], { type: type });
|
|
// 创建URL来生成预览
|
|
const fileURL = URL.createObjectURL(blob);
|
|
// 在新标签页中打开文件预览
|
|
const newTab = window.open(fileURL, '_blank')
|
|
})
|
|
},
|
|
|
|
// 下载
|
|
downloadFile (row) {
|
|
downLoadObjectFile(row)
|
|
.then(({data}) => {
|
|
// 不限制文件下载类型
|
|
const blob = new Blob([data], {type:'application/octet-stream;charset=utf-8'})
|
|
// 下载文件名称
|
|
const fileName = row.fileName
|
|
// a标签下载
|
|
const linkNode = document.createElement('a')
|
|
linkNode.download = fileName // a标签的download属性规定下载文件的名称
|
|
linkNode.style.display = 'none'
|
|
linkNode.href = URL.createObjectURL(blob) // 生成一个Blob URL
|
|
document.body.appendChild(linkNode)
|
|
linkNode.click() // 模拟在按钮上的一次鼠标单击
|
|
URL.revokeObjectURL(linkNode.href) // 释放URL 对象
|
|
document.body.removeChild(linkNode)
|
|
})
|
|
},
|
|
|
|
// 删除文件
|
|
deleteFile (row) {
|
|
this.$confirm('确定要删除此文件?', '提示', {
|
|
confirmButtonText: '确定',
|
|
cancelButtonText: '取消',
|
|
type: 'warning'
|
|
}).then(() => {
|
|
deleteObjectFile(row).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.getFeedBackImages()
|
|
this.$message({
|
|
message: '操作成功',
|
|
type: 'success',
|
|
duration: 1500,
|
|
onClose: () => {
|
|
}
|
|
})
|
|
} else {
|
|
this.$alert(data.msg, '错误', {
|
|
confirmButtonText: '确定'
|
|
})
|
|
}
|
|
})
|
|
})
|
|
},
|
|
|
|
// 查看故障图片
|
|
checkFaultImageModal (row) {
|
|
this.descImages = []
|
|
let tempData = {
|
|
site: this.saveData.site,
|
|
buNo: this.saveData.buNo,
|
|
orderNo: row.orderNo,
|
|
folder: 'reportFault',
|
|
}
|
|
searchFileUrl(tempData).then(({data}) => {
|
|
if (data.code === 0) {
|
|
for (let i = 0; i < data.rows.length; i++) {
|
|
this.descImages.push(data.rows[i].url)
|
|
}
|
|
} else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
})
|
|
this.imageModalFlag = true
|
|
},
|
|
|
|
// 查看备件图片
|
|
checkSparPartImageModal (row) {
|
|
this.descImages = []
|
|
let tempData = {
|
|
site: this.saveData.site,
|
|
buNo: this.saveData.buNo,
|
|
orderNo: row.orderNo,
|
|
folder: 'reportSparPart',
|
|
}
|
|
searchFileUrl(tempData).then(({data}) => {
|
|
if (data.code === 0) {
|
|
for (let i = 0; i < data.rows.length; i++) {
|
|
this.descImages.push(data.rows[i].url)
|
|
}
|
|
} else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
})
|
|
this.imageModalFlag = true
|
|
},
|
|
|
|
// 维修出库
|
|
defectExWarehouseModal () {
|
|
this.exWarehouseData = {
|
|
site: this.saveData.site,
|
|
serialNo: '',
|
|
partNo: '',
|
|
partDescription: '',
|
|
batchNo: '',
|
|
qtyRequired: '',
|
|
supplierId: '',
|
|
supplierDesc: '',
|
|
remark: '',
|
|
locationId: '',
|
|
warehouseId: '',
|
|
sCodeControlFlag: ''
|
|
}
|
|
this.exWarehouseModalFlag = true
|
|
this.$nextTick(() => {
|
|
this.$refs.serialNoRef.focus()
|
|
})
|
|
},
|
|
|
|
//去掉input框获得的焦点
|
|
elDatePickerOnFocus () {
|
|
document.activeElement.blur()
|
|
},
|
|
|
|
// closeDialog () {
|
|
// this.operatorData = {
|
|
// site: '',
|
|
// adminName: '',
|
|
// adminID: '',
|
|
// roleName: '机修人员',
|
|
// }
|
|
// },
|
|
|
|
// 动态列开始 获取 用户保存的 格式列
|
|
async getTableUserColumn (tableId, columnId) {
|
|
let queryTableUser = {
|
|
userId: this.$store.state.user.name,
|
|
functionId: this.$route.meta.menuId,
|
|
tableId: tableId,
|
|
status: true,
|
|
languageCode: this.$i18n.locale
|
|
}
|
|
await getTableUserListLanguage(queryTableUser).then(({data}) => {
|
|
if (data.rows.length > 0) {
|
|
switch (columnId) {
|
|
case 1:
|
|
this.columnList = data.rows
|
|
break;
|
|
case 2:
|
|
this.columnHistoryList = data.rows
|
|
break;
|
|
}
|
|
} else {
|
|
this.getColumnList(tableId, columnId)
|
|
}
|
|
})
|
|
},
|
|
|
|
// 获取 tableDefault 列
|
|
async getColumnList (tableId, columnId) {
|
|
let queryTable = {
|
|
functionId: this.$route.meta.menuId,
|
|
tableId: tableId,
|
|
languageCode: this.$i18n.locale
|
|
}
|
|
await getTableDefaultListLanguage(queryTable).then(({data}) => {
|
|
if (!data.rows.length === 0) {
|
|
switch (columnId) {
|
|
case 1:
|
|
this.columnList = data.rows
|
|
break;
|
|
case 2:
|
|
this.columnHistoryList = data.rows
|
|
break;
|
|
}
|
|
}
|
|
})
|
|
},
|
|
|
|
//获取按钮的权限数据
|
|
getButtonAuthData () {
|
|
let searchFlag = this.isAuth(this.menuId+":search")
|
|
let reachFlag = this.isAuth(this.menuId+":reach")
|
|
let reportFlag = this.isAuth(this.menuId+":report")
|
|
//处理页面的权限数据
|
|
this.authSearch = !searchFlag
|
|
this.authReach = !reachFlag
|
|
this.authReport = !reportFlag
|
|
},
|
|
|
|
// 获取核心备件列表
|
|
getCorePartSpareListAll () {
|
|
let tempData = {
|
|
site: this.saveData.site,
|
|
buNo: this.saveData.buNo,
|
|
objectID: this.saveData.objectID,
|
|
orderNo: this.saveData.orderNo,
|
|
}
|
|
getDeviceCorePartList(tempData).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.corePartSpareListAll = data.rows
|
|
} else {
|
|
this.corePartSpareListAll = []
|
|
}
|
|
})
|
|
},
|
|
|
|
async getCorePartSpareList () {
|
|
let tempData = {
|
|
site: this.saveData.site,
|
|
buNo: this.saveData.buNo,
|
|
objectID: this.saveData.objectID,
|
|
orderNo: this.saveData.orderNo,
|
|
}
|
|
await getDeviceCorePartList(tempData).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.corePartSpareList = data.rows
|
|
} else {
|
|
this.corePartSpareList = []
|
|
}
|
|
})
|
|
},
|
|
|
|
async coreComponentModal () {
|
|
await this.getCorePartSpareList()
|
|
this.coreComponentData = {
|
|
site: this.saveData.site,
|
|
buNo: this.saveData.buNo,
|
|
orderNo: this.saveData.orderNo,
|
|
objectID: this.saveData.objectID,
|
|
createdBy: this.$store.state.user.name,
|
|
partNo: '',
|
|
partDescription: '',
|
|
oldSerialNo: '',
|
|
newSerialNo: '',
|
|
}
|
|
this.updateCoreComponentsFlag = true
|
|
this.coreComponentFlag = true
|
|
},
|
|
|
|
async saveCoreComponent () {
|
|
await this.partNoBlur(1059)
|
|
if (this.coreComponentData.orderNo === '' || this.coreComponentData.orderNo == null) {
|
|
this.$message.warning('未绑定维修工单号!')
|
|
return
|
|
}
|
|
if (this.coreComponentData.partNo === '' || this.coreComponentData.partNo == null) {
|
|
this.$message.warning('请选择备件!')
|
|
return
|
|
}
|
|
saveCoreComponent(this.coreComponentData).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.getCorePartSpareList()
|
|
this.coreComponentFlag = false
|
|
this.$message({
|
|
message: '操作成功',
|
|
type: 'success',
|
|
duration: 1500,
|
|
onClose: () => {}
|
|
})
|
|
} else {
|
|
this.$alert(data.msg, '错误', {
|
|
confirmButtonText: '确定'
|
|
})
|
|
}
|
|
})
|
|
},
|
|
|
|
componentChange (value) {
|
|
if (value && value !== '') {
|
|
let tempData = this.corePartSpareList.filter(item => item.partNo === value)[0]
|
|
this.coreComponentData.partDescription = tempData.partDescription
|
|
} else {
|
|
this.coreComponentData.partDescription = ''
|
|
}
|
|
},
|
|
|
|
// 转单方法
|
|
transferOrderHandle () {
|
|
if (this.dataListSelections.length === 0) {
|
|
this.$message.warning('请选择要转单的工单!')
|
|
return
|
|
}
|
|
this.dataListSelections[0].repairType = '设备维修组'
|
|
updateRepairTypes(this.dataListSelections).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.$message({
|
|
message: '转单成功',
|
|
type: 'success',
|
|
duration: 1500,
|
|
onClose: () => {}
|
|
})
|
|
this.getDataList()
|
|
} else {
|
|
this.$alert(data.msg, '错误', {
|
|
confirmButtonText: '确定'
|
|
})
|
|
}
|
|
})
|
|
},
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
/deep/ .customer-tab .el-tabs__content {
|
|
padding: 5px !important;
|
|
}
|
|
/deep/ .el-table .cell {
|
|
line-height: 14px;
|
|
font-size: 12px;
|
|
height: auto;
|
|
}
|
|
</style>
|