<template>
|
|
<view>
|
|
<navbar title="进度详情" leftClick @leftClick="$utils.navigateBack" />
|
|
|
|
<!-- 步骤切换头部 -->
|
|
<view class="head flex-sb">
|
|
<view class="items">
|
|
<view class="item-tab flex">
|
|
<view @click="clickTabOne">施工前</view>
|
|
<view @click="clickTabTwo">施工中</view>
|
|
<view @click="clickTabThr">施工后</view>
|
|
</view>
|
|
<view class="item-active" :style="{ '--step': step + 'rpx' }"></view>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 内容区域 -->
|
|
<view class="content">
|
|
<!-- 施工前 -->
|
|
<view v-if="status === 1" class="cr mt40">
|
|
<view class="re-card-p32">
|
|
<view class="flex-sb">
|
|
<view class="re-from-label">仪表盘照片</view>
|
|
</view>
|
|
<image v-if="froma.a" :src="froma.a" mode="widthFix" class="step-image" />
|
|
<view v-else class="no-image">暂无图片</view>
|
|
</view>
|
|
|
|
<view class="re-card-p32">
|
|
<view class="flex-sb">
|
|
<view class="re-from-label">车身前后左右</view>
|
|
</view>
|
|
<image v-if="froma.b" :src="froma.b" mode="widthFix" class="step-image" />
|
|
<image v-if="froma.c" :src="froma.c" mode="widthFix" class="step-image" />
|
|
<image v-if="froma.d" :src="froma.d" mode="widthFix" class="step-image" />
|
|
<image v-if="froma.e" :src="froma.e" mode="widthFix" class="step-image" />
|
|
<view v-if="!froma.b && !froma.c && !froma.d && !froma.e" class="no-image">暂无图片</view>
|
|
</view>
|
|
|
|
<view class="re-card-p32">
|
|
<view class="flex-sb">
|
|
<view class="re-from-label">当前工作环境</view>
|
|
</view>
|
|
<image v-if="froma.f" :src="froma.f" mode="widthFix" class="step-image" />
|
|
<view v-else class="no-image">暂无图片</view>
|
|
</view>
|
|
|
|
<view class="re-card-p32">
|
|
<view class="flex-sb">
|
|
<view class="re-from-label">水槽照片</view>
|
|
</view>
|
|
<image v-if="froma.g" :src="froma.g" mode="widthFix" class="step-image" />
|
|
<view v-else class="no-image">暂无图片</view>
|
|
</view>
|
|
|
|
<view class="re-card-p32">
|
|
<view class="flex-sb">
|
|
<view class="re-from-label">现场视频</view>
|
|
</view>
|
|
<video v-if="froma.h" :src="froma.h" class="step-video" controls />
|
|
<view v-else class="no-image">暂无视频</view>
|
|
</view>
|
|
|
|
<view class="re-card-p32">
|
|
<view class="re-from-label">备注</view>
|
|
<textarea
|
|
class="re-card-textarea"
|
|
placeholder=" 请在此处备注您的疑问或者特殊情况。"
|
|
v-model="froma.remark"
|
|
readonly
|
|
/>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 施工中 -->
|
|
<view v-if="status === 2" class="cr mt40">
|
|
<view class="re-card-p32">
|
|
<view class="flex-sb">
|
|
<view class="re-from-label">当前工作环境</view>
|
|
</view>
|
|
<image v-if="fromb.a" :src="fromb.a" mode="widthFix" class="step-image" />
|
|
<view v-else class="no-image">暂无图片</view>
|
|
</view>
|
|
|
|
<view class="re-card-p32">
|
|
<view class="flex-sb">
|
|
<view class="re-from-label">支腿照片</view>
|
|
</view>
|
|
<image v-if="fromb.b" :src="fromb.b" mode="widthFix" class="step-image" />
|
|
<image v-if="fromb.c" :src="fromb.c" mode="widthFix" class="step-image" />
|
|
<image v-if="fromb.d" :src="fromb.d" mode="widthFix" class="step-image" />
|
|
<image v-if="fromb.e" :src="fromb.e" mode="widthFix" class="step-image" />
|
|
<view v-if="!fromb.b && !fromb.c && !fromb.d && !fromb.e" class="no-image">暂无图片</view>
|
|
</view>
|
|
|
|
<view class="re-card-p32">
|
|
<view class="flex-sb">
|
|
<view class="re-from-label">水槽照片</view>
|
|
</view>
|
|
<image v-if="fromb.f" :src="fromb.f" mode="widthFix" class="step-image" />
|
|
<view v-else class="no-image">暂无图片</view>
|
|
</view>
|
|
|
|
<view class="re-card-p32">
|
|
<view class="flex-sb">
|
|
<view class="re-from-label">冷却箱</view>
|
|
</view>
|
|
<image v-if="fromb.g" :src="fromb.g" mode="widthFix" class="step-image" />
|
|
<view v-else class="no-image">暂无图片</view>
|
|
</view>
|
|
|
|
<view class="re-card-p32">
|
|
<view class="flex-sb">
|
|
<view class="re-from-label">计时开始照片</view>
|
|
</view>
|
|
<image v-if="fromb.h" :src="fromb.h" mode="widthFix" class="step-image" />
|
|
<view v-else class="no-image">暂无图片</view>
|
|
</view>
|
|
|
|
<view class="re-card-p32">
|
|
<view class="re-from-label">备注</view>
|
|
<textarea
|
|
class="re-card-textarea"
|
|
placeholder=" 请在此处备注您的疑问或者特殊情况。"
|
|
v-model="fromb.remark"
|
|
readonly
|
|
/>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 施工后 -->
|
|
<view v-if="status === 3" class="cr mt40">
|
|
<view class="re-card-p32">
|
|
<view class="flex-sb">
|
|
<view class="re-from-label">计时结束照片</view>
|
|
</view>
|
|
<image v-if="fromc.a" :src="fromc.a" mode="widthFix" class="step-image" />
|
|
<view v-else class="no-image">暂无图片</view>
|
|
</view>
|
|
|
|
<view class="re-card-p32">
|
|
<view class="flex-sb">
|
|
<view class="re-from-label">抖料清洗照片</view>
|
|
</view>
|
|
<image v-if="fromc.b" :src="fromc.b" mode="widthFix" class="step-image" />
|
|
<view v-else class="no-image">暂无图片</view>
|
|
</view>
|
|
|
|
<view class="re-card-p32">
|
|
<view class="flex-sb">
|
|
<view class="re-from-label">车身照片</view>
|
|
</view>
|
|
<image v-if="fromc.c" :src="fromc.c" mode="widthFix" class="step-image" />
|
|
<view v-else class="no-image">暂无图片</view>
|
|
</view>
|
|
|
|
<view class="re-card-p32">
|
|
<view class="flex-sb">
|
|
<view class="re-from-label">仪表盘照片</view>
|
|
</view>
|
|
<image v-if="fromc.d" :src="fromc.d" mode="widthFix" class="step-image" />
|
|
<view v-else class="no-image">暂无图片</view>
|
|
</view>
|
|
|
|
<view class="re-card-p32">
|
|
<view class="flex-sb">
|
|
<view class="re-from-label">补方小票照片</view>
|
|
</view>
|
|
<image v-if="fromc.e" :src="fromc.e" mode="widthFix" class="step-image" />
|
|
<view v-else class="no-image">暂无图片</view>
|
|
</view>
|
|
|
|
<view class="re-card-p32">
|
|
<view class="flex-sb">
|
|
<view class="re-from-label">车辆入库交车照片</view>
|
|
</view>
|
|
<image v-if="fromc.f" :src="fromc.f" mode="widthFix" class="step-image" />
|
|
<view v-else class="no-image">暂无图片</view>
|
|
</view>
|
|
|
|
<view class="re-card-p32">
|
|
<view class="re-from-label">备注</view>
|
|
<textarea
|
|
class="re-card-textarea"
|
|
placeholder=" 请在此处备注您的疑问或者特殊情况。"
|
|
v-model="fromc.remark"
|
|
readonly
|
|
/>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import navbar from '@/components/base/navbar.vue'
|
|
|
|
export default {
|
|
name: 'UserSteps',
|
|
components: {
|
|
navbar
|
|
},
|
|
data() {
|
|
return {
|
|
orderId: '',
|
|
step: 8, // 步骤指示器位置
|
|
status: 1, // 当前状态:1-施工前,2-施工中,3-施工后
|
|
// 施工前数据
|
|
froma: {
|
|
a: '', // 仪表盘照片
|
|
b: '', // 车身前
|
|
c: '', // 车身后
|
|
d: '', // 车身左
|
|
e: '', // 车身右
|
|
f: '', // 当前工作环境
|
|
g: '', // 水槽照片
|
|
h: '', // 现场视频
|
|
remark: '' // 备注
|
|
},
|
|
// 施工中数据
|
|
fromb: {
|
|
a: '', // 当前工作环境
|
|
b: '', // 支腿前
|
|
c: '', // 支腿后
|
|
d: '', // 支腿左
|
|
e: '', // 支腿右
|
|
f: '', // 水槽照片
|
|
g: '', // 冷却箱
|
|
h: '', // 计时开始照片
|
|
remark: '' // 备注
|
|
},
|
|
// 施工后数据
|
|
fromc: {
|
|
a: '', // 计时结束照片
|
|
b: '', // 抖料清洗照片
|
|
c: '', // 车身照片
|
|
d: '', // 仪表盘照片
|
|
e: '', // 补方小票照片
|
|
f: '', // 车辆入库交车照片
|
|
remark: '' // 备注
|
|
}
|
|
}
|
|
},
|
|
onLoad(options) {
|
|
if (options.id) {
|
|
this.orderId = options.id;
|
|
}
|
|
},
|
|
onShow() {
|
|
this.clickTabOne();
|
|
},
|
|
methods: {
|
|
// 点击施工前标签
|
|
clickTabOne() {
|
|
this.step = 8;
|
|
this.status = 1;
|
|
this.loadList();
|
|
},
|
|
|
|
// 点击施工中标签
|
|
clickTabTwo() {
|
|
this.step = 221;
|
|
this.status = 2;
|
|
this.loadList();
|
|
},
|
|
|
|
// 点击施工后标签
|
|
clickTabThr() {
|
|
this.step = 432;
|
|
this.status = 3;
|
|
this.loadList();
|
|
},
|
|
|
|
// 加载数据
|
|
loadList() {
|
|
// 模拟加载数据
|
|
uni.showLoading({
|
|
title: '加载中...'
|
|
});
|
|
|
|
setTimeout(() => {
|
|
uni.hideLoading();
|
|
|
|
// 模拟数据
|
|
if (this.status === 1) {
|
|
this.froma = {
|
|
a: 'https://relief.oss-cn-hangzhou.aliyuncs.com/one01.png',
|
|
b: 'https://relief.oss-cn-hangzhou.aliyuncs.com/one02.png',
|
|
c: 'https://relief.oss-cn-hangzhou.aliyuncs.com/one03.png',
|
|
d: 'https://relief.oss-cn-hangzhou.aliyuncs.com/one04.png',
|
|
e: 'https://relief.oss-cn-hangzhou.aliyuncs.com/one05.png',
|
|
f: 'https://relief.oss-cn-hangzhou.aliyuncs.com/one06.png',
|
|
g: 'https://relief.oss-cn-hangzhou.aliyuncs.com/one07.png',
|
|
h: '',
|
|
remark: '施工前检查完成,设备状态良好。'
|
|
};
|
|
} else if (this.status === 2) {
|
|
this.fromb = {
|
|
a: 'https://relief.oss-cn-hangzhou.aliyuncs.com/one08.png',
|
|
b: 'https://relief.oss-cn-hangzhou.aliyuncs.com/one11.png',
|
|
c: 'https://relief.oss-cn-hangzhou.aliyuncs.com/one12.png',
|
|
d: 'https://relief.oss-cn-hangzhou.aliyuncs.com/one13.png',
|
|
e: 'https://relief.oss-cn-hangzhou.aliyuncs.com/one14.png',
|
|
f: 'https://relief.oss-cn-hangzhou.aliyuncs.com/one05.png',
|
|
g: 'https://relief.oss-cn-hangzhou.aliyuncs.com/one07.png',
|
|
h: 'https://relief.oss-cn-hangzhou.aliyuncs.com/one15.png',
|
|
remark: '施工中,设备运行正常。'
|
|
};
|
|
} else if (this.status === 3) {
|
|
this.fromc = {
|
|
a: 'https://relief.oss-cn-hangzhou.aliyuncs.com/one19.png',
|
|
b: 'https://relief.oss-cn-hangzhou.aliyuncs.com/one17.png',
|
|
c: 'https://relief.oss-cn-hangzhou.aliyuncs.com/one19.png',
|
|
d: 'https://relief.oss-cn-hangzhou.aliyuncs.com/one01.png',
|
|
e: 'https://relief.oss-cn-hangzhou.aliyuncs.com/one16.png',
|
|
f: 'https://relief.oss-cn-hangzhou.aliyuncs.com/one18.png',
|
|
remark: '施工完成,设备清洗完毕,交车状态良好。'
|
|
};
|
|
}
|
|
}, 1000);
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
page {
|
|
background-color: #F5F5F5;
|
|
}
|
|
|
|
.content {
|
|
min-height: 100vh;
|
|
background-color: #F5F5F5;
|
|
}
|
|
|
|
.cr {
|
|
min-height: calc(88vh);
|
|
}
|
|
|
|
.mt40 {
|
|
margin-top: 40rpx;
|
|
}
|
|
|
|
// 头部样式
|
|
.head {
|
|
height: 68rpx;
|
|
padding: 10rpx 40rpx;
|
|
background-color: #fff;
|
|
}
|
|
|
|
.items {
|
|
width: 687rpx;
|
|
height: 52rpx;
|
|
padding: 8rpx 8rpx;
|
|
border-radius: 34rpx;
|
|
background-color: #f2f4f9;
|
|
position: relative;
|
|
}
|
|
|
|
.item-tab {
|
|
line-height: 52rpx;
|
|
background-color: transparent;
|
|
|
|
view {
|
|
width: 33%;
|
|
text-align: center;
|
|
font-size: 26rpx;
|
|
font-weight: normal;
|
|
letter-spacing: -0.16px;
|
|
color: #152748;
|
|
background-color: transparent;
|
|
z-index: 1;
|
|
position: relative;
|
|
transition: color 0.3s;
|
|
|
|
&:active {
|
|
color: #007AFF;
|
|
}
|
|
}
|
|
}
|
|
|
|
.item-active {
|
|
width: 229rpx;
|
|
height: 52rpx;
|
|
border-radius: 26rpx;
|
|
background-color: #ffffff;
|
|
position: absolute;
|
|
left: var(--step);
|
|
top: 8rpx;
|
|
transition: .3s ease-in;
|
|
z-index: 0;
|
|
}
|
|
|
|
// 弹性布局
|
|
.flex {
|
|
display: flex;
|
|
}
|
|
|
|
.flex-sb {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
margin-bottom: 24rpx;
|
|
}
|
|
|
|
// 卡片样式
|
|
.re-card-p32 {
|
|
background-color: #FFFFFF;
|
|
border-radius: 20rpx;
|
|
width: calc(690rpx - 64rpx);
|
|
min-height: 120rpx;
|
|
margin: 0 calc(50vw - 690rpx / 2);
|
|
margin-bottom: 30rpx;
|
|
padding: 32rpx;
|
|
position: relative;
|
|
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.06);
|
|
}
|
|
|
|
// 标签样式
|
|
.re-from-label {
|
|
font-size: 28rpx;
|
|
font-weight: normal;
|
|
letter-spacing: 0px;
|
|
color: #1c1c1c;
|
|
}
|
|
|
|
// 图片样式
|
|
.step-image {
|
|
width: 100%;
|
|
max-width: 626rpx;
|
|
border-radius: 16rpx;
|
|
margin: 15rpx auto;
|
|
display: block;
|
|
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1);
|
|
}
|
|
|
|
// 视频样式
|
|
.step-video {
|
|
width: 100%;
|
|
max-width: 626rpx;
|
|
height: 342rpx;
|
|
border-radius: 16rpx;
|
|
margin: 15rpx auto;
|
|
display: block;
|
|
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1);
|
|
}
|
|
|
|
// 无图片提示
|
|
.no-image {
|
|
width: 100%;
|
|
height: 200rpx;
|
|
line-height: 200rpx;
|
|
text-align: center;
|
|
color: #999;
|
|
font-size: 28rpx;
|
|
background-color: #f8f9fa;
|
|
border: 2rpx dashed #ddd;
|
|
border-radius: 16rpx;
|
|
margin: 15rpx auto;
|
|
}
|
|
|
|
// 文本域样式
|
|
.re-card-textarea {
|
|
width: 570rpx;
|
|
height: 152rpx;
|
|
border-radius: 8rpx;
|
|
padding: 20rpx;
|
|
background: #EEEEEE;
|
|
font-size: 26rpx;
|
|
line-height: normal;
|
|
letter-spacing: 0em;
|
|
color: #0d0d0d;
|
|
border: none;
|
|
box-sizing: border-box;
|
|
resize: none;
|
|
|
|
&::placeholder {
|
|
color: #999;
|
|
}
|
|
|
|
&[readonly] {
|
|
background-color: #f5f5f5;
|
|
color: #666;
|
|
}
|
|
}
|
|
</style>
|