实验室运维app端
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.
 
 
 
 

538 lines
18 KiB

<template>
<view class="page-css"
:style="{ 'padding-bottom': (detailForm.status == 5 && dataTypes == 1) ? '180rpx' : '20rpx' }"
ref="contentToExport">
<view class="">
<view class="repair_detail">
<view class="repair_title">{{ dataTypes == 1 ? '故障信息' : '故障详情' }}</view>
<view class="detail_item">
<text class="item_left_txt">故障描述</text>
<text class="item_right_txt reason">{{ detailForm.faultDescribe }}</text>
</view>
<view class="detail_item">
<text class="item_left_txt">故障位置</text>
<text class="item_right_txt">{{ detailForm.faultLocation }}</text>
</view>
<view class="detail_item">
<text class="item_left_txt">设备名称</text>
<text class="item_right_txt">{{ detailForm.deviceName }}</text>
</view>
<view class="detail_item">
<text class="item_left_txt">故障类别</text>
<text class="item_right_txt">{{ detailForm.faultType }}</text>
</view>
<view class="detail_item">
<text class="item_left_txt">故障视频</text>
<view class="item_right_txt video">
<video v-show="videoUrl != ''" :src="videoUrl" style="width: 450rpx; height: 320rpx"
controls></video>
<video v-if="detailForm.videoAttaches && detailForm.videoAttaches.length > 0"
:src="detailForm.videoAttaches[0].link" style="width: 148px; height: 148px"
controls></video>
</view>
</view>
<view class="detail_item">
<text class="item_left_txt">故障图片:</text>
<view class="item_right_txt video">
<image style="width: 130rpx;height: 140rpx;margin-bottom: 10rpx;"
v-for="item in detailForm.picAttaches" :key="item.id" :src="item.link" alt="" />
</view>
</view>
</view>
<!-- 维修详情 -->
<view class="repair_detail"
v-if="(dataTypes == 1 || dataTypes == 2) && (detailForm.status == 5 || detailForm.status == 6 || detailForm.status == 7 || detailForm.status == 8 || detailForm.status == 9) || (dataTypes == 4 && !(detailForm.status == 0 || detailForm.status == 1 || detailForm.status == 2)) || (dataTypes == 3) && (detailForm.closeReason == '')">
<view class="repair_title">维修详情</view>
<view class="detail_item">
<text class="item_left_txt">维修人:</text>
<text class="item_right_txt">{{ detailForm.repairPersonName }}</text>
</view>
<view class="detail_item">
<text class="item_left_txt">设备名称:</text>
<text class="item_right_txt">{{ detailForm.deviceName }}</text>
</view>
<view class="detail_item">
<text class="item_left_txt">故障原因:</text>
<text class="item_right_txt reason">{{ detailForm.faultCause }}</text>
</view>
<view class="detail_item" style="margin-top: 10rpx;">
<text class="item_left_txt">处理方法:</text>
<text class="item_right_txt reason">{{ detailForm.processMethod }}</text>
</view>
<view class="detail_item" v-show="detailForm.materials && detailForm.materials.length != 0">
<text class="item_left_txt">维修材料:</text>
<view class="item_right_table">
<view class="table_box">
<view class="table_txt left">物料名称</view>
<view class="table_txt right">金额</view>
</view>
<view class="table_box table_item" v-for="item in detailForm.materials" :key="item.id">
<view class="table_txt left">{{ item.materialName }}</view>
<view class="table_txt right">{{ item.materialPrice }}</view>
</view>
<view class="table_box table_sub">
<view class="table_txt left">合计</view>
<view class="table_txt right">{{ totalPrice }}</view>
</view>
<view class="table_box table_sub">
<view class="table_txt left">折扣</view>
<view class="table_txt right">{{ discount }}<text v-show="discount != ''">折</text></view>
</view>
<view class="table_box table_sub">
<view class="table_txt left">折后价格</view>
<view class="table_txt right">{{ discountPrice }}</view>
</view>
</view>
</view>
</view>
<!-- 客服查看派单详情 -->
<view class="repair_detail"
v-if="((detailForm.status != 0) && dataTypes == 2) || (dataTypes == 1 && !(detailForm.status == 0 || detailForm.status == -1)) || dataTypes == 4">
<view class="repair_title">处理情况</view>
<view class="detail_item">
<text class="item_left_txt">接单时间:</text>
<text class="item_right_txt reason">{{ detailForm.dispatchTime }}</text>
</view>
<view class="detail_item" v-if="dataTypes != 1">
<text class="item_left_txt">计划完成时间:</text>
<text class="item_right_txt reason">{{ detailForm.planCompleteTime }}</text>
</view>
<view class="detail_item">
<text class="item_left_txt">客服意见:</text>
<text class="item_right_txt reason">{{ detailForm.customerOpinion }}</text>
</view>
</view>
<!-- 关闭详情 -->
<view class="repair_detail" v-if="detailForm.closeReason != ''">
<view class="repair_title">关闭详情</view>
<view class="detail_item">
<text class="item_left_txt">关闭原因:</text>
<text class="item_right_txt">{{ detailForm.closeReason }}</text>
</view>
</view>
<!-- 驳回 -->
<view class="repair_detail" v-if="detailForm.repaiRejectReason != ''">
<view class="repair_title">驳回详情</view>
<view class="detail_item">
<text class="item_left_txt">驳回原因:</text>
<text class="item_right_txt">{{ detailForm.repaiRejectReason }}</text>
</view>
</view>
<view class="repair_detail" v-if="detailForm.status != -1">
<view class="repair_title">其他信息</view>
<view class="detail_item">
<text class="item_left_txt">提报人:</text>
<text class="item_right_txt">{{ detailForm.informantName }}</text>
</view>
<view class="detail_item">
<text class="item_left_txt">提报人电话:</text>
<text class="item_right_txt">{{ detailForm.informantPhone }}</text>
</view>
<view class="detail_item">
<text class="item_left_txt">提报单号:</text>
<text class="item_right_txt">{{ detailForm.requirementCode }}</text>
</view>
<view class="detail_item">
<text class="item_left_txt">提报时间:</text>
<text class="item_right_txt">{{ detailForm.createTime }}</text>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
props:{
data:{
type:Object,
default:{}
},
detailId:{
type:String,
default:''
}
},
computed: {
dataTypes() {
return this.$store.state.dataType
},
},
data() {
return {
totalPrice: '1084.00',
discount: '9',
discountPrice: '975.60',
detailForm: {},
videoUrl: '',
userInfo: {},
repairDetails: {
reportPeople: '',//填报人
deviceName: '',//设备名称
faultReason: '',//故障原因
dealMethods: '',//处理方法
isMaterial: null,//是否申领物料
materialTable: [],//物料数据
},
imageSrc: '',//图片路径
}
},
mounted() {
// 获取用户信息
this.userInfo = uni.getStorageSync("userinfo");
this.getDetail()
// 动态详情查看
},
methods: {
getDetail() {
let query_ = {
id: this.detailId
}
this.$u.api.getBreakdownInfo(query_).then(res => {
if (res.code == 200) {
this.detailForm = res.data
this.videoUrl = res.data.videoAttaches && res.data.videoAttaches.length > 0 ? res.data.videoAttaches[0].link : ''
this.totalPrice = res.data.totalPrice == -1 ? res.data.materials.reduce((sum, item) => sum + item.materialPrice, 0) : res.data.totalPrice
this.discount = res.data.discount == -1 ? '' : res.data.discount
this.discountPrice = res.data.discountPrice == -1 ? '' : res.data.discountPrice
this.repairDetails.reportPeople = this.detailForm.repairPersonName //填报人
this.repairDetails.deviceName = this.detailForm.deviceName //填报人
}
})
}
}
}
</script>
<style lang="scss" scoped>
.page-css {
width: 100%;
padding: 0;
padding-top: 26rpx;
padding-bottom: 180rpx;
.status_box {
margin: 0 24rpx 20rpx;
height: 180rpx;
border-radius: 20rpx;
background-color: rgba(255, 255, 255, 1);
color: rgba(16, 16, 16, 1);
font-size: 36rpx;
text-align: left;
font-family: -bold;
.status_top {
width: 100%;
padding: 40rpx 20rpx 30rpx 30rpx;
// background-color: red;
display: flex;
justify-content: space-between;
align-items: center;
.status_txt {
color: rgba(0, 0, 0, 1);
font-size: 36rpx;
text-align: left;
font-family: SourceHanSansSC-bold;
font-weight: bold;
}
.load_more {
color: rgba(108, 108, 108, 1);
font-size: 28rpx;
text-align: left;
font-family: SourceHanSansSC-regular;
display: flex;
align-items: center;
}
}
.status_bottom {
display: flex;
justify-content: space-between;
align-items: center;
color: rgba(190, 190, 190, 1);
font-size: 28rpx;
text-align: left;
font-family: SourceHanSansSC-regular;
.status_date {
margin-right: 22rpx;
}
}
}
.fault_detail {
margin: 0 24rpx 20rpx;
height: 180rpx;
border-radius: 20rpx;
background-color: rgba(255, 255, 255, 1);
}
.repair_detail {
margin: 0 24rpx 20rpx;
border-radius: 20rpx;
background-color: rgba(255, 255, 255, 1);
padding: 6rpx 0 34rpx;
.repair_title {
line-height: 60rpx;
color: rgba(0, 0, 0, 1);
font-size: 32rpx;
text-align: left;
font-family: SourceHanSansSC-bold;
margin: 18rpx 0 0rpx 20rpx;
font-weight: bold;
}
.detail_item {
padding: 4rpx 20rpx 0;
display: flex;
align-items: center;
justify-content: space-between;
.item_left_txt {
color: rgba(108, 108, 108, 1);
font-size: 28rpx;
text-align: left;
font-family: SourceHanSansSC-regular;
width: 210rpx;
margin-right: 20rpx;
line-height: 60rpx;
}
.item_right_txt {
max-width: calc(100% - 220rpx);
color: rgba(0, 0, 0, 1);
font-size: 28rpx;
// text-align: left;
text-align: justify;
font-family: SourceHanSansSC-regular;
}
.item_right_table {
width: calc(100% - 220rpx);
margin-top: 10rpx;
.table_box {
width: 100%;
height: 60rpx;
background-color: #e8e8e8;
border: 1px solid #bbbbbb;
font-size: 14px;
color: #101010;
line-height: 60rpx;
display: flex;
.left {
width: 72%;
height: 100%;
text-align: center;
border-right: 2rpx solid #bbbbbb;
}
.right {
width: 28%;
height: 100%;
text-align: center;
}
}
.table_item {
background-color: #fff;
border-top: none;
}
.table_sub {
border-top: none;
background-color: #fff;
}
}
.reason {
word-wrap: warp;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
/* 定义显示的行数 */
overflow: hidden;
text-overflow: ellipsis;
}
.video {
margin-top: 10rpx;
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
}
}
}
.evaluate_box {
width: 100%;
height: 154rpx;
bottom: 0;
position: fixed;
background: #fff;
display: flex;
align-items: center;
justify-content: flex-end;
.evaluate_btn {
width: 160rpx;
height: 60rpx;
border-radius: 8rpx;
background-color: rgba(255, 255, 255, 1);
color: rgba(58, 98, 215, 1);
font-size: 24rpx;
text-align: center;
font-family: PingFangSC-regular;
border: 2rpx solid rgba(58, 98, 215, 1);
margin-right: 26rpx;
display: flex;
align-items: center;
justify-content: center;
}
}
.repair_form {
padding: 0 32rpx;
}
.repair-btn {
width: 100%;
display: flex;
justify-content: space-around;
/* 水平均匀分布 */
margin-top: 32rpx;
padding: 0 32rpx;
/deep/.u-btn {
width: 100%;
}
}
/deep/.popup-content {
display: flex;
flex-direction: column;
overflow: hidden;
}
.select-box {
width: 100%;
.select-box-item {
width: 100%;
border-radius: 20rpx;
background-color: rgba(249, 249, 249, 1);
margin-bottom: 32rpx;
line-height: 60rpx;
color: rgba(108, 108, 108, 1);
font-size: 28rpx;
padding: 24rpx;
}
}
.material-box {
flex: 1;
background: #fff;
margin: 0;
overflow: auto;
// padding-bottom: 32rpx;
.material-item {
height: 300rpx;
border-radius: 20rpx;
background-color: rgba(249, 249, 249, 1);
margin: 32rpx 0 0;
padding: 32rpx;
display: flex;
flex-direction: row;
.title-wrapper {}
.item-right {
flex: 1;
.material-title {
display: flex;
flex-direction: row;
color: rgba(108, 108, 108, 1);
font-size: 28rpx;
line-height: 60rpx;
.material-title-name {
color: rgba(51, 51, 51, 1);
font-size: 36rpx;
font-weight: 550;
padding-right: 16rpx;
}
.material-title-code {
flex: 1;
}
}
.material-text {
line-height: 60rpx;
color: rgba(108, 108, 108, 1);
font-size: 28rpx;
}
.material-num {
display: flex;
flex-direction: row;
justify-content: space-between;
}
}
}
}
.material-btn {
width: 100%;
display: flex;
justify-content: space-between;
/* 水平均匀分布 */
margin-top: 32rpx;
padding: 0 32rpx;
/deep/.u-btn {
width: 48%;
}
}
.selectForm {
width: 100%;
padding: 26rpx;
.form-item {
float: left;
width: calc(100% - 26rpx - 26rpx - 140rpx);
.material-text {
width: 50%;
float: left;
}
}
.form-label {
width: 140rpx;
text-align: center;
}
}
}
</style>