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.
1543 lines
54 KiB
1543 lines
54 KiB
<template> |
|
<basic-container style="max-height: 790px;overflow: hidden; " class="no-print"> |
|
<avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" v-model="form" |
|
:search.sync="searchForm" :permission="permissionList" :before-open="beforeOpen" :before-close="beforeClose" |
|
@search-change="searchChange" @search-reset="searchReset" @current-change="currentChange" |
|
@size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad" @selection-change="selectionChange"> |
|
<template slot-scope="{row}" slot="timeRangeSearch"> |
|
<el-date-picker v-model="searchForm.timeRange" type="daterange" format="yyyy-MM-dd" value-format="yyyy-MM-dd" |
|
range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"> |
|
</el-date-picker> |
|
</template> |
|
<!-- <template slot-scope="{row}" slot="repairStatusSearch"> |
|
|
|
</template> --> |
|
<template slot-scope="{ row }" slot="status"> |
|
|
|
<el-tag :type="getStatus('maintain', role_id, row.status).type">{{ getStatus('maintain', role_id, |
|
row.status).name |
|
}}</el-tag> |
|
</template> |
|
<template slot-scope="{ type, disabled }" slot="statusForm"> |
|
<div v-if="type == 'view'"> |
|
<el-tag size="small" :type="form.status == 1 |
|
? 'success' |
|
: form.status == 2 |
|
? '' |
|
: form.status == 3 |
|
? 'info' |
|
: '' |
|
"> |
|
{{ |
|
form.status == 1 |
|
? "待接单" |
|
: form.status == 2 |
|
? "维修完成" |
|
: form.status == 3 |
|
? "已完成" |
|
: "" |
|
}} |
|
</el-tag> |
|
</div> |
|
</template> |
|
<template slot-scope="{ type, disabled }" slot="errorVideoForm"> |
|
<div v-if="type == 'view' && form.errorVideo != ''"> |
|
<video :src="form.errorVideo" muted autoplay style="width: 200px; height: 200px"></video> |
|
</div> |
|
</template> |
|
<template slot-scope="{ type, disabled }" slot="errorImgForm"> |
|
<div v-if="type == 'view'"> |
|
<!-- {{from.errorImg}} --> |
|
<img v-for="item in form.errorImg" :key="item" :src="item" alt="" |
|
style="width: 180px; height: 180px; margin: 0 5px" /> |
|
</div> |
|
</template> |
|
<template slot-scope="scope" slot="menuLeft"> |
|
<el-button type="primary" size="small" @click="addOperation" v-show="permission.handAdd">需求提报</el-button> |
|
<el-button type="primary" size="small" @click="allExportReport">批量导出报告</el-button> |
|
<!-- <el-button size="small" @click="clickInvoice">开具发票</el-button> |
|
<el-button size="small" @click="clickPrint">打印</el-button> --> |
|
</template> |
|
<template slot-scope="{ row }" slot="menu"> |
|
<el-button @click="handleView(row)">查看</el-button> |
|
<el-button v-show="row.status == 200 || row.status == 100" @click="handleEdit(row)">编辑</el-button> |
|
<el-button v-show="row.status == 200 || row.status == 100" @click="handleSubmit(row)">提交</el-button> |
|
<el-button v-show="row.status == 301" @click="confirmOrder(row)">确认</el-button> |
|
<el-button v-show="row.status == 403 || row.status == 202 || row.status == 406" |
|
@click="handleEvaluate(row)">评价</el-button> |
|
<!-- 客户确认维修效果 --> |
|
<el-button v-show="row.status == 405" @click="urgentRepair(row)">确认</el-button> |
|
<el-button @click="viewLog(row)">日志</el-button> |
|
<el-button @click="handleExport(row)" |
|
v-show="row.status == 403 || row.status == 104 ||row.status == 202 || row.status == 203 || row.status == 204">报告</el-button> |
|
</template> |
|
</avue-crud> |
|
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible" :append-to-body="true" width="50%" :close-on-click-modal="false"> |
|
<div style="height: 500px; overflow: auto"> |
|
<requestSub @close="closeRequest" :title="dialogTitle" :form="requestForm"></requestSub> |
|
</div> |
|
</el-dialog> |
|
<el-dialog :title="detailTitle" :visible.sync="detailVisible" :append-to-body="true" width="50%" :close-on-click-modal="false"> |
|
<div style="height:500px;overflow:auto;"> |
|
<el-form ref="form" :model="detailForm" label-width="150px" label-position="left"> |
|
<div> |
|
<div style=" |
|
color: #101010; |
|
font-size: 20px; |
|
font-weight: 550; |
|
margin-bottom: 20px; |
|
"> |
|
故障信息 |
|
</div> |
|
<el-form-item label="填报人" prop="informantName" v-show="viewType == 'view'"> |
|
<el-input placeholder="请输入填报人" disabled v-model="detailForm.informantName" style="width: 98%;"></el-input> |
|
</el-form-item> |
|
<el-form-item label="填报人电话" prop="informantPhone" v-show="viewType == 'view'"> |
|
<el-input placeholder="请输入填报人电话" disabled v-model="detailForm.informantPhone" |
|
style="width: 98%;"></el-input> |
|
</el-form-item> |
|
<el-form-item label="故障现象描述" prop="faultDescribe"> |
|
<el-input placeholder="请输入故障现象描述" disabled type="textarea" v-model="detailForm.faultDescribe" |
|
style="width: 98%;"></el-input> |
|
</el-form-item> |
|
<el-form-item label="故障位置" prop="faultLocation" v-show="viewType == 'view'"> |
|
<el-input placeholder="请输入故障位置" disabled v-model="detailForm.faultLocation" |
|
style="width: 98%;"></el-input> |
|
</el-form-item> |
|
<el-form-item label="设备名称" prop="deviceName" v-show="viewType == 'view'"> |
|
<!-- <el-select |
|
placeholder="请选择设备名称" |
|
disabled |
|
v-model="detailForm.deviceId" |
|
style="width: 100%" |
|
> |
|
<el-option |
|
v-for="item in deviceList" |
|
:key="item.id" |
|
:value="item.id" |
|
:label="item.name" |
|
></el-option> |
|
</el-select> --> |
|
<el-input placeholder="请输入设备名称" v-model="detailForm.deviceName" disabled style="width: 98%;"></el-input> |
|
</el-form-item> |
|
<el-form-item label="故障专业类型" prop="faultType" v-show="viewType == 'view'"> |
|
<el-input placeholder="请输入故障专业类型" v-model="detailForm.faultType" disabled style="width: 98%;"></el-input> |
|
</el-form-item> |
|
|
|
<el-form-item label="故障视频" v-show="viewType == 'view' && detailForm.errorVideo != ''"> |
|
<video v-show="detailForm.errorVideo != ''" :src="detailForm.errorVideo" |
|
style="width: 148px; height: 148px" controls></video> |
|
</el-form-item> |
|
<el-form-item label="故障图片" |
|
v-show="viewType == 'view' && detailForm.errorImg && detailForm.errorImg.length != 0"> |
|
<img v-for="item in detailForm.errorImg" :key="item" :src="item.url" alt="" |
|
style="width: 148px; height: 148px;margin-right:10px;"> |
|
</el-form-item> |
|
<el-form-item label="提报时间"> |
|
<el-date-picker v-model="detailForm.fillingTime" type="datetime" style="width:98%;" disabled |
|
placeholder="选择日期时间"> |
|
</el-date-picker> |
|
</el-form-item> |
|
</div> |
|
<div v-show="rowStatus == 202 && detailForm.closeReason != ''"> |
|
<div style=" |
|
color: #101010; |
|
font-size: 20px; |
|
font-weight: 550; |
|
margin-bottom: 20px; |
|
"> |
|
处理情况 |
|
</div> |
|
<el-form-item label="关闭原因"> |
|
<el-input type="textarea" v-model="detailForm.closeReason" disabled style="width:98%;"></el-input> |
|
</el-form-item> |
|
</div> |
|
<div v-show="(rowStatus != 101 && rowStatus != 100 && rowStatus != 202 &&rowStatus != 205)&& detailForm.closeReason == ''"> |
|
<div style=" |
|
color: #101010; |
|
font-size: 20px; |
|
font-weight: 550; |
|
margin-bottom: 20px; |
|
"> |
|
处理情况 |
|
</div> |
|
<el-form-item label="接单时间"> |
|
<el-date-picker v-model="detailForm.dispatchTime" type="datetime" disabled style="width:98%;" |
|
placeholder="选择日期时间"> |
|
</el-date-picker> |
|
</el-form-item> |
|
<el-form-item label="客服意见"> |
|
<el-input type="textarea" v-model="detailForm.customerOpinion" disabled style="width: 98%;"></el-input> |
|
</el-form-item> |
|
</div> |
|
<div |
|
v-show="rowStatus != 205 &&rowStatus != 100 && rowStatus != 202 && rowStatus != 101 && rowStatus != 401 && rowStatus != 402 && detailForm.closeReason == ''"> |
|
<div style="z |
|
color: #101010; |
|
font-size: 20px; |
|
font-weight: 550; |
|
margin-bottom: 20px; |
|
"> |
|
维修详情 |
|
</div> |
|
<el-form-item label="填报人" prop="repairPersonName"> |
|
<el-input placeholder="请输入填报人" disabled v-model="detailForm.repairPersonName" |
|
style="width: 98%;"></el-input> |
|
</el-form-item> |
|
<el-form-item label="设备名称" prop="deviceId"> |
|
<!-- <el-select placeholder="请选择设备名称" disabled v-model="detailForm.deviceId" style="width: 100%"> |
|
<el-option v-for="item in deviceList" :key="item.id" :value="item.id" :label="item.name"></el-option> |
|
</el-select> --> |
|
<el-input placeholder="请输入设备名称" v-model="detailForm.deviceName" disabled style="width: 98%;"></el-input> |
|
</el-form-item> |
|
<el-form-item label="故障原因" prop="faultCause"> |
|
<el-input placeholder="请输入故障原因" disabled type="textarea" v-model="detailForm.faultCause" |
|
style="width: 98%;"></el-input> |
|
</el-form-item> |
|
<el-form-item label="处理方法" prop="processMethod"> |
|
<el-input placeholder="请输入处理方法" disabled type="textarea" v-model="detailForm.processMethod" |
|
style="width: 98%;"></el-input> |
|
</el-form-item> |
|
<!-- <el-form-item label="是否需要申领物料" prop="isNeedMaterial"> |
|
<el-select v-model="detailForm.isNeedMaterial" placeholder="请选择是否申领物料" disabled style="width:98%;"> |
|
<el-option label="是" :value="1"></el-option> |
|
<el-option label="否" :value="0"></el-option> |
|
</el-select> |
|
</el-form-item> --> |
|
<el-form-item label="人工费" prop="laborCost"> |
|
<el-input placeholder="请输入人工费" |
|
disabled v-model="detailForm.laborCost" style="width:98%;"><template slot="append">元</template> |
|
</el-input> |
|
</el-form-item> |
|
<el-form-item label="差旅费" prop="travelExpense"> |
|
<el-input placeholder="请输入差旅费" |
|
disabled v-model="detailForm.travelExpense" style="width:98%;"><template slot="append">元</template></el-input> |
|
</el-form-item> |
|
<el-form-item label="维修材料" v-show="detailForm.isNeedMaterial == 1"> |
|
<el-table :data="detailForm.materials" border style="width: 98%"> |
|
<el-table-column prop="materialName" align="center" label="物料名称"> |
|
</el-table-column> |
|
<el-table-column prop="materialCount" align="center" label="数量"> |
|
</el-table-column> |
|
<el-table-column prop="materialPrice" align="center" label="金额"> |
|
</el-table-column> |
|
<template slot="append"> |
|
<tr> |
|
<td style="padding: 10px;padding-right: 0;font-size: 14px;color: #909399;font-weight: 600;">总计:</td> |
|
<td>{{ totalPrice }} 元</td> |
|
<td style="padding: 10px 0px 10px 100px; font-size: 14px;color: #909399;font-weight: 600;">折扣:</td> |
|
<td> |
|
<el-input v-model="discount" controls-position="right" @input="handleInput" |
|
@change="changeDiscount" disabled> |
|
<template slot="append">折</template> |
|
</el-input> |
|
</td> |
|
<td style="padding: 10px 0px 10px 100px;font-size: 14px;color: #909399;font-weight: 600;">折后金额:</td> |
|
<td>{{ discountPrice }}<span v-show="discountPrice != ''">元</span></td> |
|
</tr> |
|
</template> |
|
</el-table> |
|
</el-form-item> |
|
</div> |
|
<div v-show="detailForm.approvePoint == '主管审批维修方案' && detailForm.approveResult == -1"> |
|
<div style=" |
|
color: #101010; |
|
font-size: 20px; |
|
font-weight: 550; |
|
margin-bottom: 20px; |
|
"> |
|
主管审批 |
|
</div> |
|
<el-form-item label="审批结果" prop="approveResult"> |
|
<el-select style="width: 98%;" placeholder="请选择审批结果" v-model="detailForm.approveResult" disabled> |
|
<el-option label="通过" :value="1"></el-option> |
|
<el-option label="驳回" :value="0"></el-option> |
|
</el-select> |
|
</el-form-item> |
|
<el-form-item label="审批意见" prop="approveRemark"> |
|
<el-input type="textarea" v-model="detailForm.approveRemark" style="width: 98%;" disabled></el-input> |
|
</el-form-item> |
|
<el-form-item v-show="rowStatus == 5" label="审批人" prop="approvePersonName"> |
|
<el-input v-model="detailForm.approvePersonName" style="width: 98%;" disabled></el-input> |
|
</el-form-item> |
|
<el-form-item v-show="rowStatus == 5" label="审批时间" prop="approveTime"> |
|
<el-input v-model="detailForm.approveTime" style="width: 98%;" disabled></el-input> |
|
</el-form-item> |
|
</div> |
|
<div v-show="(rowStatus == 301 || rowStatus == 5) && viewType != 'view'"> |
|
<div style=" |
|
color: #101010; |
|
font-size: 20px; |
|
font-weight: 550; |
|
margin-bottom: 20px; |
|
"> |
|
客户审批 |
|
</div> |
|
<el-form-item label="审批结果" prop="approveResult"> |
|
<el-select style="width: 98%;" placeholder="请选择审批结果" v-model="detailForm.approveResult" |
|
:disabled="rowStatus == 5"> |
|
<el-option label="通过" :value="1"></el-option> |
|
<el-option label="驳回" :value="0"></el-option> |
|
</el-select> |
|
</el-form-item> |
|
<el-form-item label="审批意见" prop="approveRemark"> |
|
<el-input type="textarea" v-model="detailForm.approveRemark" style="width: 98%;" |
|
:disabled="rowStatus == 5"></el-input> |
|
</el-form-item> |
|
<el-form-item v-show="rowStatus == 5" label="审批人" prop="approvePersonName"> |
|
<el-input v-model="detailForm.approvePersonName" style="width: 98%;" disabled></el-input> |
|
</el-form-item> |
|
<el-form-item v-show="rowStatus == 5" label="审批时间" prop="approveTime"> |
|
<el-input v-model="detailForm.approveTime" style="width: 98%;" disabled></el-input> |
|
</el-form-item> |
|
</div> |
|
<div v-show="rowStatus == 403 || rowStatus == 406"> |
|
<div style=" |
|
color: #101010; |
|
font-size: 20px; |
|
font-weight: 550; |
|
margin-bottom: 20px; |
|
"> |
|
维修效果确认 |
|
</div> |
|
<el-form-item label="是否维修完成"> |
|
<el-select placeholder="请确认是否维修完成" style="width: 98%;" v-model="detailForm.approveResult1" |
|
@change="changeResult" :disabled="viewType == 'view'"> |
|
<el-option label="是" :value="1"></el-option> |
|
<el-option label="否" :value="0"></el-option> |
|
</el-select> |
|
</el-form-item> |
|
<el-form-item label="维修未完成原因" v-show="rowStatus == 403 && detailForm.approveResult1 == 0"> |
|
<el-input type="textarea" v-model="detailForm.approveRemark" placeholder="请输入维修未完成原因" style="width: 98%;" |
|
:disabled="viewType == 'view'"></el-input> |
|
</el-form-item> |
|
</div> |
|
<div v-show="((rowStatus == 403 || rowStatus == 406) && detailForm.approveResult1 == 0)"></div> |
|
<!-- || (rowStatus == 20 || isEvalute) || rowStatus == 7 || rowStatus == 8 || rowStatus == 9" --> |
|
<div |
|
v-show="((rowStatus == 403 || rowStatus == 406 || isEvalute) && detailForm.approveResult1 == 1) || rowStatus == 104 || rowStatus == 203 || rowStatus == 202"> |
|
<div style=" |
|
color: #101010; |
|
font-size: 20px; |
|
font-weight: 550; |
|
margin-bottom: 20px; |
|
"> |
|
评价 |
|
</div> |
|
<div> |
|
<p>1.您对本次维修的质量方面满意吗?</p> |
|
<div style="display:flex;"> |
|
<div style="width: 150px; |
|
border-radius: 5px; |
|
height: 30px; |
|
text-align: center; |
|
line-height: 30px; |
|
margin-right: 20px; |
|
cursor:pointer;" |
|
:style="{ background: detailForm.isOkQuality == '1' ? '#3a62d733' : 'rgb(239, 239, 239)', color: detailForm.isOkQuality == '1' ? '#3a62d7' : '#4f4f4f' }" |
|
@click="clickQualityYes">满意</div> |
|
<div style="width: 150px; |
|
border-radius: 5px; |
|
height: 30px; |
|
background: rgb(239, 239, 239); |
|
text-align: center; |
|
line-height: 30px; |
|
margin-right: 20px;cursor:pointer;" |
|
:style="{ background: detailForm.isOkQuality == '0' ? '#3a62d733' : 'rgb(239, 239, 239)', color: detailForm.isOkQuality == '0' ? '#3a62d7' : '#4f4f4f' }" |
|
@click="clickQualityNo">不满意</div> |
|
</div> |
|
</div> |
|
<div> |
|
<p>2.您对本次维修的安全方面满意吗?</p> |
|
<div style="display:flex;"> |
|
<div style="width: 150px; |
|
border-radius: 5px; |
|
height: 30px; |
|
background: rgb(239, 239, 239); |
|
text-align: center; |
|
line-height: 30px; |
|
margin-right: 20px;cursor:pointer;" |
|
:style="{ background: detailForm.isOkSecure == '1' ? '#3a62d733' : 'rgb(239, 239, 239)', color: detailForm.isOkSecure == '1' ? '#3a62d7' : '#4f4f4f' }" |
|
@click="clickSafeYes">满意</div> |
|
<div style="width: 150px; |
|
border-radius: 5px; |
|
height: 30px; |
|
background: rgb(239, 239, 239); |
|
text-align: center; |
|
line-height: 30px; |
|
margin-right: 20px;cursor:pointer;" |
|
:style="{ background: detailForm.isOkSecure == '0' ? '#3a62d733' : 'rgb(239, 239, 239)', color: detailForm.isOkSecure == '0' ? '#3a62d7' : '#4f4f4f' }" |
|
@click="clickSafeNo">不满意</div> |
|
</div> |
|
</div> |
|
<div> |
|
<p>3.您对本次维修的时效方面满意吗?</p> |
|
<div style="display:flex;margin-bottom:30px;"> |
|
<div style="width: 150px; |
|
border-radius: 5px; |
|
height: 30px; |
|
background: rgb(239, 239, 239); |
|
text-align: center; |
|
line-height: 30px; |
|
margin-right: 20px;cursor:pointer;" |
|
:style="{ background: detailForm.isOkValidity == '1' ? '#3a62d733' : 'rgb(239, 239, 239)', color: detailForm.isOkValidity == '1' ? '#3a62d7' : '#4f4f4f' }" |
|
@click="clickTimeYes">满意</div> |
|
<div style="width: 150px; |
|
border-radius: 5px; |
|
height: 30px; |
|
background: rgb(239, 239, 239); |
|
text-align: center; |
|
line-height: 30px; |
|
margin-right: 20px;cursor:pointer;" |
|
:style="{ background: detailForm.isOkValidity == '0' ? '#3a62d733' : 'rgb(239, 239, 239)', color: detailForm.isOkValidity == '0' ? '#3a62d7' : '#4f4f4f' }" |
|
@click="clickTimeNo">不满意</div> |
|
</div> |
|
</div> |
|
</div> |
|
<div |
|
v-show="((rowStatus == 6 || isEvalute) && detailForm.approveResult1 == 1) || rowStatus == 104 || rowStatus == 203 || rowStatus == 202"> |
|
<div style=" |
|
color: #101010; |
|
font-size: 20px; |
|
font-weight: 550; |
|
margin-bottom: 20px; |
|
"> |
|
签名 |
|
</div> |
|
<div style="margin-bottom: 10px;cursor: pointer;" @click="clickAssign" |
|
v-show="nameImg == '' && rowStatus != 104 && rowStatus != 203 && rowStatus != 9"> |
|
<img src="@/assets/images/assign.png" alt=""> |
|
</div> |
|
<div v-show="nameImg != ''" @click="clickAssign"> |
|
<img :src="nameImg" alt=""> |
|
</div> |
|
<div v-show="detailForm.signatureUrl != '' && (rowStatus == 104 || rowStatus == 203 || rowStatus == 9)"> |
|
<img :src="detailForm.signatureUrl" alt=""> |
|
</div> |
|
<!-- <div v-show="isEvalute"> |
|
<avue-sign ref="sign"></avue-sign> |
|
<el-button @click="clearName">清空</el-button> |
|
<el-button @click="confirmName">确定</el-button> |
|
</div> |
|
<div v-show="!isEvalute"> |
|
<img :src="detailForm.signatureUrl" alt=""> |
|
</div> --> |
|
<!-- <el-form-item label="签名人" prop="signaturePerson"> |
|
<el-input :disabled="!isEvalute" placeholder="请输入签名人" v-model="detailForm.signaturePerson"></el-input> |
|
</el-form-item> --> |
|
</div> |
|
</el-form> |
|
</div> |
|
<span slot="footer" class="dialog-footer"> |
|
<el-button @click="handleClose">关闭</el-button> |
|
<el-button v-show="isEvalute" type="primary" @click="handleConfirm">{{ detailForm.approveResult1 == 0 ? '提交' : |
|
'评价并签字' }}</el-button> |
|
<el-button v-show="viewType == 'confirm'" type="primary" @click="confirmWork">提交</el-button> |
|
</span> |
|
</el-dialog> |
|
<!-- <el-dialog title="发票内容打印" :visible.sync="printVisible" :append-to-body="true" width="70%"> |
|
<div id="printBox"> |
|
<div class="pageCodeDiv" > |
|
需要打印的内容部分 |
|
</div> |
|
</div> |
|
<span slot="footer" class="dialog-footer"> |
|
<el-button type="primary" @click="clickPrient">打 印</el-button> |
|
</span> |
|
</el-dialog> --> |
|
<el-dialog title="签名" :visible.sync="assignVisible" :append-to-body="true" width="50%" :close-on-click-modal="false"> |
|
<div v-show="isEvalute"> |
|
<avue-sign ref="sign"></avue-sign> |
|
</div> |
|
<span slot="footer" class="dialog-footer"> |
|
<el-button @click="closeName">关闭</el-button> |
|
<el-button @click="clearName">清空</el-button> |
|
<el-button @click="confirmName" type="primary">确定</el-button> |
|
</span> |
|
</el-dialog> |
|
<!-- 流程日志 --> |
|
<logDialog :orderId="logOrderId" :infoDialog="infoDialog" @closeLog="closeLog"></logDialog> |
|
<!-- |
|
<div id="pdfDom" v-show="pdfDomShow" style="padding:20px"> |
|
<requirement :detailForm="requireForm"></requirement> |
|
</div> --> |
|
</basic-container> |
|
</template> |
|
|
|
<script> |
|
import vueEasyPrint from "vue-easy-print" |
|
import printJS from 'print-js' |
|
import { mapGetters } from "vuex"; |
|
import moment from "moment"; |
|
import { dateFormat } from "../../util/date"; |
|
import requestSub from '../components/requestSub.vue' |
|
import requirement from '../components/requirement.vue' |
|
import { servicePage, getList, getDetail, evaluateSign, addFile, saveData, customerConfirm, customerReject, customerRepairConfirm, customerRepairReject, serviceInvoice, getAllUser, urgentRepairConfirm, urgentRepairReject } from '@/api/operation/hand' |
|
import { getDeviceList } from '@/api/device/device' |
|
import { getChildList } from '@/api/system/dictbiz' |
|
import statusData from "@/assets/json/status.json"; // 引入状态数据 |
|
import logDialog from '../../components/order/logDialog.vue' |
|
import { color } from "echarts"; |
|
import { exportBlob, exportBlob1, zipDownload } from "@/api/common"; |
|
import { downloadXls } from "@/util/util"; |
|
let action = "https://api.avuejs.com/imgupload"; |
|
import { applyGoods } from '@/api/goodsManagement/goods' |
|
|
|
export default { |
|
components: { |
|
requestSub, |
|
requirement, |
|
vueEasyPrint, |
|
logDialog |
|
}, |
|
// directives: { print }, |
|
data() { |
|
return { |
|
searchForm: { |
|
timeRange: [] |
|
}, |
|
requireForm: {}, |
|
showPrint: false, |
|
dialogTitle: "需求填报", |
|
dialogVisible: false, |
|
detailTitle: "需求详情", |
|
detailVisible: false, |
|
uploadUrl: "", |
|
form: {}, |
|
query: {}, |
|
loading: true, |
|
parentId: 0, |
|
direction: "rtl", |
|
page: { |
|
pageSize: 10, |
|
currentPage: 1, |
|
total: 0, |
|
}, |
|
deviceList: [], |
|
errorList: [], |
|
isRegister: false, |
|
option: { |
|
height: "auto", |
|
calcHeight: 30, |
|
tip: false, |
|
selection: true, |
|
searchShow: true, |
|
searchMenuSpan: 6, |
|
searchEnter:true, |
|
border: true, |
|
index: true, |
|
dialogType: "dialog", |
|
dialogClickModal: false, |
|
addBtn: false, |
|
viewBtn: false, |
|
editBtn: false, |
|
delBtn: false, |
|
searchShowBtn: false, |
|
refreshBtn: false, |
|
columnBtn: false, |
|
menuWidth: 380, |
|
gridBtn:false, |
|
column: [ |
|
{ |
|
label: "提报时间", |
|
prop: "timeRange", |
|
type: "date", |
|
format: "yyyy-MM-dd", |
|
valueFormat: "yyyy-MM-dd", |
|
search: true, |
|
hide: true, |
|
viewDisplay: false, |
|
searchValue: dateFormat(new Date(), "yyyy-MM-dd"), |
|
searchClearable: false, |
|
}, |
|
{ |
|
label: "需求单号", |
|
labelWidth: 120, |
|
prop: "requirementCode", |
|
overHidden: true, |
|
search: true |
|
}, |
|
{ |
|
label: "设备名称", |
|
labelWidth: 120, |
|
prop: "deviceName", |
|
overHidden: true, |
|
}, |
|
{ |
|
label: "故障位置", |
|
labelWidth: 120, |
|
prop: "faultLocation", |
|
// type: "select", |
|
overHidden: true, |
|
// hide: true, |
|
// search: true, |
|
// viewDisplay: false, |
|
// dicUrl: '/lab/blade-system/dict-biz/get-hc-project', |
|
// props: { |
|
// label: "dictValue", |
|
// value: "dictValue", |
|
// }, |
|
}, |
|
{ |
|
label: "故障专业类型", |
|
labelWidth: 120, |
|
prop: "faultType", |
|
overHidden: true, |
|
type: "input", |
|
searchLabelWidth: 100, |
|
// hide: true, |
|
// search: true, |
|
viewDisplay: false, |
|
// dicUrl: '/lab/blade-system/dict-biz/get-hc-project', |
|
props: { |
|
label: "dictValue", |
|
value: "dictValue", |
|
}, |
|
}, |
|
{ |
|
label: "故障现象描述", |
|
labelWidth: 120, |
|
prop: "faultDescribe", |
|
overHidden: true, |
|
slot: true, |
|
}, |
|
{ |
|
label: "故障视频", |
|
labelWidth: 120, |
|
prop: "errorVideo", |
|
hide: true, |
|
// propsHttp: { |
|
// res: 'data', |
|
// url:'url', |
|
// name:'name', |
|
// home: 'https://www.w3school.com.cn' |
|
// }, |
|
// action: 'https://api.avuejs.com/imgupload', |
|
// listType: 'picture-img', |
|
// formslot:true, |
|
}, |
|
{ |
|
label: "故障图片", |
|
labelWidth: 120, |
|
prop: "errorImg", |
|
type: "upload", |
|
hide: true, |
|
formslot: true, |
|
}, |
|
{ |
|
label: "提报时间", |
|
labelWidth: 120, |
|
prop: "fillingTime", |
|
slot: true, |
|
}, |
|
{ |
|
label: "状态", |
|
labelWidth: 120, |
|
prop: "status", |
|
slot: true, |
|
formslot: true, |
|
}, |
|
// { |
|
// label: "状态", |
|
// labelWidth: 120, |
|
// prop: "repairStatus", |
|
// hide:true, |
|
// slot: true, |
|
// search:true, |
|
// formslot: true, |
|
// }, |
|
{ |
|
label: "完成时间", |
|
labelWidth: 120, |
|
prop: "finishTime", |
|
slot: true, |
|
}, |
|
], |
|
}, |
|
totalPrice: '', |
|
discount: '', |
|
discountPrice: '', |
|
data: [], |
|
videoList: "", //上传成功的视频 |
|
form2Option: { |
|
emptyBtn: false, |
|
submitBtn: false, |
|
column: [ |
|
{ |
|
label: "故障位置", |
|
labelWidth: 120, |
|
prop: "faultLocation", |
|
type: "input", |
|
span: 24, |
|
}, |
|
{ |
|
label: "设备名称", |
|
labelWidth: 120, |
|
span: 24, |
|
prop: "deviceName", |
|
type: "select", |
|
dicData: [ |
|
{ |
|
label: "名称1", |
|
value: 0, |
|
}, |
|
{ |
|
label: "名称2", |
|
value: 1, |
|
}, |
|
], |
|
}, |
|
{ |
|
label: "故障专业类型", |
|
labelWidth: 120, |
|
span: 24, |
|
prop: "faultType", |
|
type: "select", |
|
dicData: [ |
|
{ |
|
label: "类型1", |
|
value: 0, |
|
}, |
|
{ |
|
label: "类型2", |
|
value: 1, |
|
}, |
|
], |
|
}, |
|
{ |
|
label: "故障现象描述", |
|
labelWidth: 120, |
|
span: 24, |
|
prop: "faultDescribe", |
|
type: "textarea", |
|
minRows: 3, |
|
maxRows: 5, |
|
}, |
|
{ |
|
label: "故障视频", |
|
labelWidth: 120, |
|
prop: "errorVideo", |
|
type: "upload", |
|
propsHttp: { |
|
res: "data", |
|
url: "url", |
|
name: "name", |
|
home: "https://www.w3school.com.cn", |
|
}, |
|
fileType: "video", //img/video/audio |
|
listType: "picture-img", |
|
span: 24, |
|
action: action, |
|
}, |
|
{ |
|
label: "照片墙", |
|
labelWidth: 120, |
|
span: 24, |
|
prop: "imgUrl", |
|
listType: "picture-card", |
|
type: "upload", |
|
fileType: "img", //img/video/audio |
|
action: action, |
|
}, |
|
], |
|
}, |
|
detailForm: {}, |
|
rowStatus: '', |
|
isEvalute: false, |
|
isOkQuality: 0, |
|
isOkSecure: 0, |
|
isOkValidity: 0, |
|
nameImg: '', |
|
requestForm: {}, |
|
viewType: '', |
|
selectionList: [], |
|
printVisible: false, |
|
assignVisible: false, |
|
tableData: [], |
|
isFinish: '', |
|
role_id: '', |
|
isClear: false, |
|
htmlTitle: '运维服务单', |
|
logOrderId: '',//获取id |
|
infoDialog: false, |
|
pdfDomShow: false |
|
}; |
|
}, |
|
|
|
computed: { |
|
...mapGetters(["userInfo", "permission", "systemTime"]), |
|
permissionList() { |
|
return { |
|
addBtn: this.vaildData(this.permission.notice_add, false), |
|
viewBtn: this.vaildData(this.permission.notice_view, false), |
|
delBtn: this.vaildData(this.permission.notice_delete, false), |
|
editBtn: this.vaildData(this.permission.notice_edit, false), |
|
}; |
|
}, |
|
getStatus() { |
|
return (type, id, status) => { |
|
for (let i in statusData[type]) { |
|
let val |
|
statusData[type][id].map(item => { |
|
if (item.status == status) { |
|
val = item |
|
} |
|
}) |
|
return val ? val : '' |
|
} |
|
} |
|
}, |
|
}, |
|
created() { |
|
|
|
this.searchForm.requirementCode = this.$route.query.requirementCode |
|
this.role_id = this.userInfo.role_id |
|
// 获取设备列表 |
|
// getDeviceList({ current: 1, size: 100 }).then(res => { |
|
// this.deviceList = res.data.data.records |
|
// }) |
|
// 获取故障类型 |
|
getChildList(1, 100, '1846802246527463425').then(res => { |
|
this.typeList = res.data.data |
|
}) |
|
// this.searchForm.timeRange = [moment().subtract(7, 'days').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')] |
|
}, |
|
mounted() { }, |
|
methods: { |
|
// 批量导出报告 |
|
allExportReport() { |
|
if (this.selectionList.length == 0) { |
|
this.$message.warning('请至少选择一条数据') |
|
} else { |
|
let tmp = this.selectionList.filter(item => { return (item.status == 104||item.status == 202 || item.status == 203 || item.status == 204) }) |
|
if (tmp.length != this.selectionList.length) { |
|
this.$message.warning('请选择状态为已完成的数据') |
|
} else { |
|
console.log('批量导出报告', this.selectionList) |
|
let query = { |
|
workOrderList: this.selectionList |
|
} |
|
zipDownload('/api/lab-ops/work-order/batch-report-service', this.selectionList) |
|
.then((response) => { |
|
const blob = new Blob([response.data]) |
|
const fileName = '运维服务单.zip' |
|
if ('download' in document.createElement('a')) { // 非IE下载 |
|
const elink = document.createElement('a') |
|
elink.download = fileName |
|
elink.style.display = 'none' |
|
elink.href = URL.createObjectURL(blob) |
|
document.body.appendChild(elink) |
|
elink.click() |
|
URL.revokeObjectURL(elink.href)// 释放URL 对象 |
|
document.body.removeChild(elink) |
|
} else { // IE10+下载 |
|
navigator.msSaveBlob(blob, fileName) |
|
} |
|
}) |
|
.catch((err) => { |
|
console.log(err); |
|
}); |
|
|
|
} |
|
} |
|
}, |
|
// 打开流程弹框 |
|
viewLog(row) { |
|
this.infoDialog = true |
|
this.logOrderId = row.requirementCode |
|
}, |
|
// 查看流程 关闭 |
|
closeLog() { |
|
this.infoDialog = false |
|
}, |
|
// 点击签名 |
|
clickAssign() { |
|
this.assignVisible = true |
|
}, |
|
// 多选选择 |
|
selectionChange(val) { |
|
this.selectionList = val |
|
}, |
|
// 客户选择是否维修完成 |
|
changeResult(val) { |
|
this.isFinish = val |
|
if (val == 0) { |
|
this.detailForm.approveRemark = '' |
|
} |
|
console.log(this.isFinish) |
|
}, |
|
// 开具发票 |
|
clickInvoice() { |
|
if (this.selectionList.length == 0) { |
|
this.$message.warning('请至少选择一条数据') |
|
} else { |
|
let tmp = this.selectionList.find(item => item.status != 8) |
|
if (tmp) { |
|
this.$message.warning('请选择状态为待开发票的数据') |
|
} else { |
|
this.$confirm('请确认是否为已选择数据开具发票?', '提示', { |
|
confirmButtonText: '确定', |
|
cancelButtonText: '取消', |
|
type: 'warning' |
|
}).then(() => { |
|
let queryData = [] |
|
this.selectionList.forEach(item => { |
|
queryData.push({ |
|
id: item.id |
|
}) |
|
}) |
|
serviceInvoice(queryData).then(res => { |
|
this.$message.success('发票开具成功') |
|
this.onLoad() |
|
}) |
|
}).catch(() => { |
|
|
|
}) |
|
} |
|
} |
|
}, |
|
// 需求提报 |
|
addOperation() { |
|
this.dialogTitle = "需求填报"; |
|
this.requestForm = {} |
|
this.dialogVisible = true; |
|
}, |
|
// 点击关闭按钮 |
|
handleClose() { |
|
// this.$refs.sign.clear() |
|
this.nameImg = '' |
|
this.detailForm = {} |
|
this.detailVisible = false |
|
}, |
|
// 需求填报子组件关闭父组件弹窗触发 |
|
closeRequest() { |
|
this.dialogVisible = false |
|
this.onLoad() |
|
}, |
|
// 点击编辑按钮 |
|
handleEdit(row) { |
|
getDetail({ id: row.id }).then(res => { |
|
this.dialogTitle = "编辑"; |
|
this.requestForm = res.data.data; |
|
this.dialogVisible = true |
|
}) |
|
}, |
|
|
|
// 点击行内提交按钮 |
|
handleSubmit(row) { |
|
console.log('row----------------->', row) |
|
getDetail({ id: row.id }).then(res => { |
|
let form = res.data.data |
|
console.log('form----------->', form) |
|
let data = [] |
|
data.push({ |
|
faultLocation: form.faultPosition, |
|
deviceName: form.deviceName, |
|
faultType: form.faultType, |
|
videoAttaches: form.videoAttaches, |
|
picAttaches: form.picAttaches, |
|
faultDescribe: form.faultDescribe, |
|
submitType: 1, |
|
id: form.id |
|
}) |
|
console.log('data---------->', data) |
|
saveData(data).then(res => { |
|
console.log('res------------------->', res) |
|
if (res.data.code == 200) { |
|
this.$message.success('新增成功') |
|
this.onLoad() |
|
} |
|
}) |
|
}) |
|
|
|
|
|
}, |
|
|
|
clickQualityYes() { |
|
if (this.viewType == 'evaluate') { |
|
this.detailForm.isOkQuality = 1 |
|
} |
|
}, |
|
clickQualityNo() { |
|
if (this.viewType == 'evaluate') { |
|
this.detailForm.isOkQuality = 0 |
|
} |
|
}, |
|
clickSafeYes() { |
|
if (this.viewType == 'evaluate') { |
|
this.detailForm.isOkSecure = 1 |
|
} |
|
}, |
|
clickSafeNo() { |
|
if (this.viewType == 'evaluate') { |
|
this.detailForm.isOkSecure = 0 |
|
} |
|
}, |
|
clickTimeYes() { |
|
if (this.viewType == 'evaluate') { |
|
this.detailForm.isOkValidity = 1 |
|
} |
|
}, |
|
clickTimeNo() { |
|
if (this.viewType == 'evaluate') { |
|
this.detailForm.isOkValidity = 0 |
|
} |
|
}, |
|
confirmName() { |
|
if (this.isClear && this.nameImg == '') { |
|
this.nameImg = '' |
|
} else { |
|
this.nameImg = this.$refs.sign.submit(80, 50); |
|
} |
|
this.assignVisible = false |
|
}, |
|
closeName() { |
|
if (this.nameImg == '') { |
|
this.$refs.sign.clear() |
|
} |
|
this.assignVisible = false |
|
}, |
|
clearName() { |
|
this.$refs.sign.clear() |
|
this.nameImg = '' |
|
this.assignVisible = false |
|
}, |
|
base64toFile(dataurl, filename = 'file') { |
|
let arr = dataurl.split(',') |
|
let mime = arr[0].match(/:(.*?);/)[1] |
|
let suffix = mime.split('/')[1] |
|
let bstr = atob(arr[1]) |
|
let n = bstr.length |
|
let u8arr = new Uint8Array(n) |
|
|
|
while (n--) { |
|
u8arr[n] = bstr.charCodeAt(n) |
|
} |
|
|
|
let file = new File([u8arr], `${filename}.${suffix}`, { |
|
type: mime |
|
}) |
|
console.log(file) |
|
return file |
|
}, |
|
// 客户确认方案 |
|
confirmOrder(row) { |
|
getDetail({ id: row.id }).then(res => { |
|
this.rowStatus = res.data.data.status |
|
this.viewType = 'confirm' |
|
this.detailVisible = true |
|
this.detailForm = res.data.data |
|
this.detailForm.errorVideo = this.detailForm.videoAttaches.length > 0 ? this.detailForm.videoAttaches[0].link : '' |
|
this.detailForm.approveResult = '' |
|
this.detailForm.approveRemark = '' |
|
this.detailForm.errorImg = this.detailForm.picAttaches.map(item => { |
|
return { |
|
url: item.link, |
|
name: item.name |
|
} |
|
}) |
|
this.totalPrice = res.data.data.totalPrice |
|
this.discount = res.data.data.discount |
|
this.discountPrice = res.data.data.discountPrice |
|
}) |
|
}, |
|
// 点击行内的评价并签字按钮 |
|
handleEvaluate(row) { |
|
getDetail({ id: row.id }).then(res => { |
|
this.rowStatus = res.data.data.status |
|
this.viewType = 'evaluate' |
|
this.detailVisible = true |
|
this.detailForm = res.data.data |
|
this.detailForm.errorVideo = this.detailForm.videoAttaches.length > 0 ? this.detailForm.videoAttaches[0].link : '' |
|
this.detailForm.errorImg = this.detailForm.picAttaches.map(item => { |
|
return { |
|
url: item.link, |
|
name: item.name |
|
} |
|
}) |
|
this.detailForm.signaturePerson = '' |
|
this.isEvalute = true |
|
this.detailForm.isOkValidity = '' |
|
this.detailForm.isOkQuality = '' |
|
this.detailForm.isOkSecure = '' |
|
this.totalPrice = res.data.data.totalPrice |
|
this.discount = res.data.data.discount |
|
this.discountPrice = res.data.data.discountPrice |
|
}) |
|
}, |
|
handleExport(row) { |
|
// /report-service |
|
let query = JSON.parse(JSON.stringify(row)) |
|
exportBlob1(`/api/lab-ops/work-order/report-service`, query).then(res => { |
|
downloadXls(res.data, "运维服务单.xlsx"); |
|
}) |
|
// this.pdfDomShow = true |
|
// getDetail({ id: row.id }).then(res => { |
|
// this.requireForm = JSON.parse(JSON.stringify(res.data.data)) |
|
// setTimeout(() => { |
|
// this.getPdf() |
|
// }, 100) |
|
// }) |
|
}, |
|
// 评价并签字提交 |
|
handleConfirm() { |
|
console.log('this.detailForm.approveResult1', this.detailForm.approveResult1) |
|
if (this.detailForm.approveResult1 == 0) { |
|
let query = { |
|
id: this.detailForm.id, |
|
approveResult: this.detailForm.approveResult1, |
|
approvePerson: this.userInfo.user_id, |
|
approveTime: moment().format('YYYY-MM-DD HH:mm:ss'), |
|
approveRemark: this.detailForm.approveRemark |
|
} |
|
customerRepairReject(query).then(res => { |
|
if (res.data.code == 200) { |
|
this.$message.success('提交成功') |
|
this.detailVisible = false |
|
this.onLoad() |
|
} |
|
}) |
|
} else { |
|
if (this.nameImg != '') { |
|
const formData = new FormData(); |
|
formData.append('file', this.base64toFile(this.nameImg)); |
|
addFile(formData).then(res => { |
|
console.log('res----------->', res) |
|
let query = { |
|
id: this.detailForm.id, |
|
isOkValidity: this.detailForm.isOkValidity, |
|
isOkQuality: this.detailForm.isOkQuality, |
|
isOkSecure: this.detailForm.isOkSecure, |
|
signatureUrl: res.data.data.link, |
|
signaturePerson: this.detailForm.signaturePerson, |
|
// signatureTime: this.detailForm.signatureTime, |
|
signatureTime: moment().format('YYYY-MM-DD HH:mm:ss'), |
|
} |
|
customerRepairConfirm(query).then(res => { |
|
console.log('res ========>', res) |
|
if (res.data.code == 200) { |
|
this.$message.success('评价成功') |
|
this.detailVisible = false |
|
this.onLoad() |
|
} |
|
}) |
|
}) |
|
|
|
|
|
} else { |
|
this.$message.warning("请进行手写签名并点击确定按钮") |
|
} |
|
} |
|
|
|
|
|
}, |
|
// 客户方案确认 |
|
confirmWork() { |
|
let query = { |
|
id: this.detailForm.id, |
|
approvePerson: this.userInfo.user_id, |
|
approveResult: this.detailForm.approveResult, |
|
approveTime: moment().format('YYYY-MM-DD HH:mm:ss'), |
|
approveRemark: this.detailForm.approveRemark |
|
} |
|
if (query.approveResult == 0) { |
|
customerReject(query).then(res => { |
|
if (res.data.code == 200) { |
|
this.$message.success('审批成功') |
|
this.detailVisible = false |
|
this.onLoad() |
|
} |
|
}) |
|
} else { |
|
let goodsList = [] |
|
this.detailForm.materials && this.detailForm.materials.length != 0 && this.detailForm.materials.map(item =>{ |
|
goodsList.push({ |
|
productId: item.id, |
|
productName: item.materialName, |
|
applyNum: item.materialCount, |
|
orderId: this.detailForm.id, |
|
materialName: item.materialName, |
|
materialCount: item.materialCount, |
|
materialPrice: item.materialPrice, |
|
bigClassId: item.bigClassId, |
|
rule: item.rule, |
|
unit: item.unit, |
|
xh: item.xh, |
|
inventoryId: item.inventoryId, |
|
productCode:item.inventoryId |
|
}) |
|
}) |
|
let query1 = { |
|
details: goodsList, |
|
applyUserId: this.detailForm.repairPerson, //申领人Id |
|
applyUser: this.detailForm.repairPersonName, //申领人 |
|
applyTime: moment().format('YYYY-MM-DD HH:mm:ss'), //申领时间(yyyy-MM-dd HH:mm:ss) |
|
status: 0, |
|
workId: this.detailForm.id, |
|
remark: '维修单申领' |
|
} |
|
customerConfirm(query).then(res => { |
|
if (res.data.code == 200) { |
|
if(this.detailForm.isNeedMaterial == 1){ |
|
applyGoods(query1).then(res =>{ |
|
if (res.data.code == 200) { |
|
this.$message.success('审批成功') |
|
this.detailVisible = false |
|
this.onLoad() |
|
} |
|
}) |
|
}else{ |
|
this.$message.success('审批成功') |
|
this.detailVisible = false |
|
this.onLoad() |
|
} |
|
} |
|
}) |
|
} |
|
}, |
|
// 查看 |
|
handleView(row) { |
|
getDetail({ id: row.id }).then(res => { |
|
this.rowStatus = res.data.data.status |
|
this.detailVisible = true |
|
this.viewType = 'view' |
|
this.isEvalute = false |
|
this.detailForm = res.data.data |
|
this.detailForm.errorVideo = res.data.data.videoAttaches.length > 0 ? res.data.data.videoAttaches[0].link : '' |
|
this.detailForm.errorImg = [] |
|
this.totalPrice = res.data.data.totalPrice |
|
this.discount = res.data.data.discount |
|
this.discountPrice = res.data.data.discountPrice |
|
res.data.data.picAttaches.map(item => { |
|
this.detailForm.errorImg.push({ |
|
name: item.originalName, |
|
url: item.link |
|
}) |
|
}) |
|
this.nameImg = '' |
|
if (this.rowStatus == 3) { |
|
this.isOkValidity = 1 |
|
this.isOkQuality = 1 |
|
this.isOkSecure = 1 |
|
} |
|
}) |
|
}, |
|
beforeOpen(done, type) { |
|
done(); |
|
}, |
|
|
|
beforeClose(done) { |
|
done(); |
|
}, |
|
searchReset(params, done) { |
|
this.searchForm = { |
|
// timeRange: [moment().subtract(7, 'days').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')], |
|
faultLocation: '', |
|
faultType: '' |
|
} |
|
this.onLoad(this.page); |
|
}, |
|
searchChange(params, done) { |
|
this.query = params; |
|
this.page.currentPage = 1; |
|
this.onLoad(this.page, params); |
|
done(); |
|
}, |
|
closeDraw() { |
|
this.isRegister = false; |
|
}, |
|
currentChange(currentPage) { |
|
this.page.currentPage = currentPage; |
|
}, |
|
sizeChange(pageSize) { |
|
this.page.pageSize = pageSize; |
|
}, |
|
refreshChange() { |
|
this.onLoad(this.page, this.query); |
|
}, |
|
onLoad(page, params = {}) { |
|
let query = { |
|
current: this.page.currentPage, //页数 |
|
size: this.page.pageSize, //条数 |
|
startTime: this.searchForm.timeRange && this.searchForm.timeRange.length != 0 ? this.searchForm.timeRange[0].toString() + ' 00:00:00' : '', //开始时间 |
|
endTime: this.searchForm.timeRange && this.searchForm.timeRange.length != 0 ? this.searchForm.timeRange[1].toString() + ' 23:59:59' : '', //结束时间 |
|
faultLocation: this.searchForm.faultLocation ? this.searchForm.faultLocation : '', //设备位置 |
|
faultType: this.searchForm.faultType ? this.searchForm.faultType : '', //故障类型 |
|
dataType: this.role_id=='1123598816738675201'?'':1, |
|
requirementCode: this.searchForm.requirementCode |
|
} |
|
console.log('query--------->', query) |
|
if (this.role_id == '1839536982874193922') { |
|
servicePage(query).then(res => { |
|
console.log('res------------->', res.data.data) |
|
this.data = res.data.data.records |
|
this.page.total = res.data.data.total |
|
this.loading = false |
|
}) |
|
} else { |
|
getList(query).then(res => { |
|
console.log('res------------->', res.data.data) |
|
this.data = res.data.data.records |
|
this.page.total = res.data.data.total |
|
this.loading = false |
|
}) |
|
} |
|
|
|
}, |
|
urgentRepair(row) { |
|
let query = { |
|
id: row.id, |
|
repairType: row.repairType |
|
} |
|
this.$confirm('请确认当前工单是否维修完成?', '提示', { |
|
confirmButtonText: '是', |
|
cancelButtonText: '否', |
|
type: 'warning' |
|
}).then(() => { |
|
console.log('是') |
|
|
|
urgentRepairConfirm(query).then(res => { |
|
if (res.data.code == 200) { |
|
this.$message.success('操作成功') |
|
this.onLoad() |
|
} |
|
}) |
|
|
|
}).catch(() => { |
|
|
|
|
|
urgentRepairReject(query).then(res => { |
|
if (res.data.code == 200) { |
|
this.$message.success('操作成功') |
|
this.onLoad() |
|
} |
|
}) |
|
}) |
|
}, |
|
}, |
|
}; |
|
</script> |
|
|
|
<style lang="scss" scoped></style> |
|
<style lang="scss"> |
|
.el-drawer__wrapper { |
|
.register_box { |
|
width: 800px !important; |
|
// padding: 0 40px; |
|
|
|
.title_box { |
|
// padding: 0 40px; |
|
// margin-top: 40px; |
|
|
|
.title_txt { |
|
display: flex; |
|
height: 30px; |
|
align-items: center; |
|
justify-content: space-between; |
|
|
|
.txt { |
|
color: rgba(0, 0, 0, 0.85); |
|
font-weight: 500; |
|
line-height: 24px; |
|
} |
|
|
|
.img_box { |
|
img { |
|
width: 30px; |
|
height: 30px; |
|
} |
|
} |
|
} |
|
|
|
.sub_txt { |
|
font-size: 12px; |
|
font-family: Microsoft YaHei-Regular, Microsoft YaHei; |
|
font-weight: 400; |
|
color: #999999; |
|
line-height: 16px; |
|
} |
|
} |
|
|
|
.tip_box { |
|
display: flex; |
|
align-items: center; |
|
justify-content: center; |
|
margin: 60px 0 20px 0; |
|
|
|
.img { |
|
width: 30px; |
|
height: 30px; |
|
} |
|
|
|
.tip_txt { |
|
font-size: 24px; |
|
font-family: Microsoft YaHei-Bold, Microsoft YaHei; |
|
font-weight: bold; |
|
color: #00b578; |
|
margin-left: 10px; |
|
} |
|
|
|
.fail_txt { |
|
color: #f93a4a; |
|
} |
|
|
|
.warn_txt { |
|
color: #ff6010; |
|
} |
|
} |
|
|
|
.tips_txt { |
|
display: flex; |
|
align-items: center; |
|
justify-content: center; |
|
font-size: 14px; |
|
font-family: Microsoft YaHei-Regular, Microsoft YaHei; |
|
font-weight: 400; |
|
color: #f93a4a; |
|
} |
|
|
|
.tips_warn { |
|
color: #ff6010; |
|
} |
|
|
|
.fail_tip { |
|
color: #ff6010; |
|
} |
|
|
|
.account_mess { |
|
.mess_tit { |
|
font-size: 16px; |
|
font-family: Microsoft YaHei-Bold, Microsoft YaHei; |
|
font-weight: bold; |
|
color: #333333; |
|
margin: 40px 0 20px 0; |
|
} |
|
|
|
.mess_box { |
|
width: 100%; |
|
min-height: 123px; |
|
background: #f5f6fa; |
|
border-radius: 8px; |
|
display: flex; |
|
justify-content: space-between; |
|
align-items: center; |
|
|
|
.left_box { |
|
width: 25%; |
|
margin-left: 30px; |
|
|
|
.acc_text { |
|
font-size: 14px; |
|
font-family: Microsoft YaHei-Regular, Microsoft YaHei; |
|
font-weight: 400; |
|
color: #999999; |
|
margin-bottom: 14px; |
|
} |
|
|
|
.acc_txt { |
|
font-size: 16px; |
|
font-family: Microsoft YaHei-Bold, Microsoft YaHei; |
|
font-weight: bold; |
|
color: #00b578; |
|
} |
|
} |
|
|
|
.fail_box { |
|
.acc_txt { |
|
color: #333333; |
|
} |
|
} |
|
|
|
.warn_box { |
|
.acc_txt { |
|
color: #333333; |
|
} |
|
} |
|
|
|
.right_box { |
|
display: flex; |
|
width: 75%; |
|
align-items: center; |
|
justify-content: space-between; |
|
|
|
.acc_box { |
|
.acc_text { |
|
font-size: 14px; |
|
font-family: Microsoft YaHei-Regular, Microsoft YaHei; |
|
font-weight: 400; |
|
color: #999999; |
|
margin-bottom: 14px; |
|
} |
|
|
|
.acc_txt { |
|
font-size: 16px; |
|
font-family: Microsoft YaHei-Bold, Microsoft YaHei; |
|
font-weight: bold; |
|
color: #00b578; |
|
} |
|
} |
|
} |
|
|
|
.fail_right { |
|
.acc_box { |
|
.acc_txt { |
|
color: #333333; |
|
} |
|
} |
|
} |
|
|
|
.warn_right { |
|
.acc_box { |
|
.acc_txt { |
|
color: #333333; |
|
} |
|
} |
|
} |
|
} |
|
|
|
.reg_box { |
|
justify-content: start; |
|
|
|
.left_box { |
|
.acc_txt { |
|
color: #333333; |
|
} |
|
} |
|
|
|
.right_box { |
|
.acc_box { |
|
.acc_txt { |
|
color: #333333; |
|
} |
|
|
|
.acc_warn { |
|
color: #ff6010; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
|
|
.btn { |
|
width: 151px; |
|
height: 50px; |
|
background: #1677ff; |
|
border-radius: 2px 2px 2px 2px; |
|
margin: 0 auto; |
|
display: flex; |
|
align-items: center; |
|
justify-content: center; |
|
font-size: 16px; |
|
font-family: Microsoft YaHei-Regular, Microsoft YaHei; |
|
font-weight: 400; |
|
color: #ffffff; |
|
cursor: pointer; |
|
margin-top: 50px; |
|
} |
|
} |
|
|
|
.prin_table table tr td { |
|
padding: 4px 0; |
|
} |
|
} |
|
</style>
|
|
|