228 lines
6.5 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="container">
<div
class="searchBox"
:style="{ height: localHeight + 'px', paddingTop: top + 'px' }"
>
<div class="searchBox_add">
<div class="searchBox_left">
<u-icon
bold
color="#000"
size="40"
name="arrow-left"
@click="back"
></u-icon>
</div>
<div class="searchBox_mid">报修信息</div>
<div class="searchBox_right"></div>
</div>
</div>
<div class="repairMsg">
<div :class="['orderItemTit', statusType[info.status].style]">
<div class="orderItemTit_left">工单编号{{ info.order_code }}</div>
<div class="orderItemTit_right">{{ statusType[info.status].desc }}</div>
</div>
<div class="row">
<div class="row_label">小区房源名称</div>
<div class="row_con">{{ info.room.name }}</div>
</div>
<div class="row">
<div class="row_label">报修类型</div>
<div class="row_con">{{ info.ac.category_name }}</div>
</div>
<div class="row">
<div class="row_label">问题描述</div>
<div class="row_con">{{ info.problem_description }}</div>
</div>
<div class="row">
<div class="row_label">联系人</div>
<div class="row_con">{{ info.contact_name }}</div>
</div>
<div class="row">
<div class="row_label">联系电话</div>
<div class="row_con">{{ info.contact_phone }}</div>
</div>
<div class="row">
<div class="row_label">上门时间</div>
<div class="row_con">{{ info.service_time }}</div>
</div>
</div>
<div class="repairMsg">
<div class="row">
<div class="row_label df">图片</div>
<div class="row_con">
<view v-if="info.imagesList && info.imagesList.length == 0">暂无图片</view>
<image
v-else
v-for="(item, index) in info.imagesList"
:key="index"
:src="item"
mode=""
@click="handlerPreviewImageClick(item)"
>
</image>
</div>
</div>
<div class="row">
<div class="row_label df">视频</div>
<div class="row_con">
<view v-if="info.videosList && info.videosList.length == 0">暂无视频</view>
<div v-else v-for="(item, index) in info.videosList" :key="index" class="videoBOX">
<video id="myVideo" :src="item" playsinline webkit-playsinline></video>
</div>
</div>
</div>
<div class="row" v-if="info.assign_time">
<div class="row_label">指派时间</div>
<div class="row_con noneBor">{{ info.assign_time }}</div>
</div>
</div>
<div class="repairMsg" v-if="info.status !== 1">
<div class="row">
<div class="row_label">维修师傅</div>
<div class="row_con">{{ info.repairman_worker.name }}</div>
</div>
<div class="row">
<div class="row_label">师傅手机号</div>
<div class="row_con">{{info.repairman_worker.mobile}}</div>
</div>
<div class="row">
<div class="row_label">师傅工号</div>
<div class="row_con noneBor">{{info.repairman_worker.emp_no}}</div>
</div>
</div>
<div class="repairMsg" v-if="info.status !== 1 && info.status !== 2">
<div class="row">
<div class="row_label df">维修图片</div>
<div class="row_con">
<view v-if="info.repairImagesList && info.repairImagesList.length == 0">暂无图片</view>
<image
v-for="(item, index) in info.repairImagesList"
:key="index"
:src="item"
mode=""
@click="headerRepairImagesClick(item)"
/>
</div>
</div>
<div class="row">
<div class="row_label df">维修视频</div>
<div class="row_con">
<view v-if="info.repairVideosList && info.repairVideosList.length == 0">暂无视频</view>
<div v-else v-for="(item, index) in info.repairVideosList" :key="index" class="videoBOX">
<video id="myVideo" :src="item" playsinline webkit-playsinline></video>
</div>
</div>
</div>
<div class="row">
<div class="row_label">维修描述</div>
<div class="row_con noneBor">{{ info.repair_description || '暂无描述' }}</div>
</div>
</div>
</div>
</template>
<script>
import {
request,
picUrl,
menuButtonInfo,
} from "../../../utils";
import { apiArr } from "../../../api/v2Community";
export default {
data() {
return {
active: "1",
top: "",
localHeight: "",
info: {},
// 状态枚举类型
statusType: {
1: {
desc: "待指派",
style: "orderItemTit_state1",
},
2: {
desc: "进行中",
style: "orderItemTit_state2",
},
3: {
desc: "已完成",
style: "orderItemTit_state3",
},
4: {
desc: "已作废",
style: "orderItemTit_state4",
},
},
};
},
methods: {
back() {
uni.navigateBack({
delta: 1,
});
},
changeAct(e) {
this.active = e;
},
handlerPreviewImageClick(item) {
uni.previewImage({
urls: this.info.imagesList,
current: item,
});
},
headerRepairImagesClick(item) {
uni.previewImage({
urls: this.info.repairImagesList,
current: item,
});
},
async init(id) {
const res = await request(apiArr.workOrderCrudInfo, "POST", {
id: Number(id),
});
const newRes = {
...res,
imagesList: res.images !== '' ? res.images.split(',').map(url => `${picUrl}${url}`) : [],
videosList: res.videos !== '' ? res.videos.split(',').map(url => `${picUrl}${url}`) : [],
repairImagesList: res.repair_images !== "" ? res.repair_images.split(",").map((url) => `${picUrl}${url}`) : [], // 上报图片
repairVideosList: res.repair_videos !== "" ? res.repair_videos.split(",").map((url) => `${picUrl}${url}`) : [], // 上报图片
}
this.info = newRes;
},
},
onLoad(options) {
const meun = menuButtonInfo();
this.top = meun.top;
this.localHeight = meun.height;
this.init(options.id);
},
onShow() {},
};
</script>
<style>
@import url("./index.css");
</style>