|
|
- <template>
- <view class="content">
- <navbar title="施工确认" leftClick @leftClick="$utils.navigateBack" />
- <view class="cr mt40">
- <!-- 当前工作环境 -->
- <view class="re-card-p32">
- <view class="flex-sb">
- <view class="re-from-label">请拍摄当前工作环境</view>
- <view class="re-card-show" @click="clickShowExample('https://relief.oss-cn-hangzhou.aliyuncs.com/one07.png')">查看示例</view>
- </view>
- <input-image
- :height="456"
- @uploadSuccess="(data) => form.workEnvironment = data.ossUrl"
- />
- <view class="re-card-context">
- 需拍摄<label>车辆四周</label>照片,以保证场地满足施工。
- </view>
- </view>
-
- <!-- 支腿前方照片 -->
- <view class="re-card-p32">
- <view class="flex-sb">
- <view class="re-from-label">请拍摄支腿前方照片</view>
- <view class="re-card-show" @click="clickShowExample('https://relief.oss-cn-hangzhou.aliyuncs.com/one11.png')">查看示例</view>
- </view>
- <input-image
- :height="456"
- @uploadSuccess="(data) => form.frontLeg = data.ossUrl"
- />
- <view class="re-card-context">
- 需拍摄<label>车辆支腿前方</label>照片,以保证车辆交车状况。
- </view>
- </view>
-
- <!-- 支腿后方照片 -->
- <view class="re-card-p32">
- <view class="flex-sb">
- <view class="re-from-label">请拍摄支腿后方照片</view>
- <view class="re-card-show" @click="clickShowExample('https://relief.oss-cn-hangzhou.aliyuncs.com/one12.png')">查看示例</view>
- </view>
- <input-image
- :height="456"
- @uploadSuccess="(data) => form.backLeg = data.ossUrl"
- />
- <view class="re-card-context">
- 需拍摄<label>车辆支腿后方</label>照片,以保证车辆交车状况。
- </view>
- </view>
-
- <!-- 支腿左侧方照片 -->
- <view class="re-card-p32">
- <view class="flex-sb">
- <view class="re-from-label">请拍摄支腿左侧方照片</view>
- <view class="re-card-show" @click="clickShowExample('https://relief.oss-cn-hangzhou.aliyuncs.com/one13.png')">查看示例</view>
- </view>
- <input-image
- :height="456"
- @uploadSuccess="(data) => form.leftLeg = data.ossUrl"
- />
- <view class="re-card-context">
- 需拍摄<label>车辆支腿左侧方</label>照片,以保证车辆交车状况。
- </view>
- </view>
-
- <!-- 支腿右侧方照片 -->
- <view class="re-card-p32">
- <view class="flex-sb">
- <view class="re-from-label">请拍摄支腿右侧方照片</view>
- <view class="re-card-show" @click="clickShowExample('https://relief.oss-cn-hangzhou.aliyuncs.com/one14.png')">查看示例</view>
- </view>
- <input-image
- :height="456"
- @uploadSuccess="(data) => form.rightLeg = data.ossUrl"
- />
- <view class="re-card-context">
- 需拍摄<label>车辆支腿右侧方</label>照片,以保证车辆交车状况。
- </view>
- </view>
-
- <!-- 水槽照片 -->
- <view class="re-card-p32">
- <view class="flex-sb">
- <view class="re-from-label">请拍摄水槽照片</view>
- <view class="re-card-show" @click="clickShowExample('https://relief.oss-cn-hangzhou.aliyuncs.com/one05.png')">查看示例</view>
- </view>
- <input-image
- :height="456"
- @uploadSuccess="(data) => form.waterTank = data.ossUrl"
- />
- <view class="re-card-context">
- 需拍摄<label>车辆油箱、水箱</label>照片,以保证车辆安全状况。
- </view>
- </view>
-
- <!-- 冷却箱 -->
- <view class="re-card-p32">
- <view class="flex-sb">
- <view class="re-from-label">请拍摄冷却箱</view>
- <view class="re-card-show" @click="clickShowExample('https://relief.oss-cn-hangzhou.aliyuncs.com/one07.png')">查看示例</view>
- </view>
- <input-image
- :height="456"
- @uploadSuccess="(data) => form.coolingBox = data.ossUrl"
- />
- <view class="re-card-context">
- 需拍摄<label>车辆冷却箱</label>照片,以保证车辆安全状况。
- </view>
- </view>
-
- <!-- 液压油位 -->
- <view class="re-card-p32">
- <view class="flex-sb">
- <view class="re-from-label">请拍摄液压油位</view>
- <view class="re-card-show" @click="clickShowExample('https://relief.oss-cn-hangzhou.aliyuncs.com/one06.png')">查看示例</view>
- </view>
- <input-image
- :height="456"
- @uploadSuccess="(data) => form.hydraulicOil = data.ossUrl"
- />
- <view class="re-card-context">
- 需拍摄<label>车辆液压油位</label>照片,以保证车辆安全状况。
- </view>
- </view>
-
- <!-- 计时开始照片 -->
- <view class="re-card-p32">
- <view class="flex-sb">
- <view class="re-from-label">请拍摄计时开始照片</view>
- <view class="re-card-show" @click="clickShowExample('https://relief.oss-cn-hangzhou.aliyuncs.com/one15.png')">查看示例</view>
- </view>
- <input-image
- :height="456"
- @uploadSuccess="(data) => form.timingStart = data.ossUrl"
- />
- <view class="re-card-context">
- 需拍摄<label>开始计时的照片</label>以保证您的利益。
- </view>
- </view>
-
- <!-- 备注 -->
- <view class="re-card-p32">
- <view class="re-from-label">备注<label>(选填)</label></view>
- <textarea
- class="re-card-textarea"
- placeholder=" 如在施工过程中发现问题,请用文字描述。"
- v-model="form.remark"
- />
- </view>
- </view>
-
- <!-- 底部提交按钮 -->
- <view class="re-end-pand">
- <button @click="submitForm">提交保存</button>
- </view>
-
- <!-- 示例弹窗 -->
- <show-example
- v-if="showExample"
- :show="showExample"
- :url="exampleUrl"
- @close="showExample = false"
- />
- </view>
- </template>
-
- <script>
- import navbar from '@/components/base/navbar.vue'
- import InputImage from '@/components/base/input-image.vue'
- import ShowExample from '@/components/base/show-example.vue'
-
- export default {
- name: 'UserStep1',
- components: {
- navbar,
- InputImage,
- ShowExample
- },
- data() {
- return {
- orderId: '',
- showExample: false,
- exampleUrl: '',
- form: {
- workEnvironment: '', // 当前工作环境
- frontLeg: '', // 支腿前方照片
- backLeg: '', // 支腿后方照片
- leftLeg: '', // 支腿左侧方照片
- rightLeg: '', // 支腿右侧方照片
- waterTank: '', // 水槽照片
- coolingBox: '', // 冷却箱
- hydraulicOil: '', // 液压油位
- timingStart: '', // 计时开始照片
- remark: '' // 备注
- }
- }
- },
- onLoad(options) {
- if (options.id) {
- this.orderId = options.id;
- }
- },
- methods: {
- // 显示示例图片
- clickShowExample(url) {
- this.exampleUrl = url || 'https://relief.oss-cn-hangzhou.aliyuncs.com/yx.jpg';
- this.showExample = true;
- },
-
- // 提交表单
- submitForm() {
- // 验证必填项
- const requiredFields = [
- 'workEnvironment', 'frontLeg', 'backLeg', 'leftLeg',
- 'rightLeg', 'waterTank', 'coolingBox', 'hydraulicOil', 'timingStart'
- ];
-
- for (let field of requiredFields) {
- if (!this.form[field]) {
- uni.showToast({
- icon: 'none',
- title: '请按照要求拍摄上传照片'
- });
- return;
- }
- }
-
- this.doSubmit();
- },
-
- // 执行提交
- doSubmit() {
- // 模拟提交数据
- const submitData = {
- id: this.$utils?.generateUUID() || Date.now().toString(),
- status: 1,
- step: 2,
- orderId: this.orderId,
- ...this.form
- };
-
- console.log('提交数据:', submitData);
-
- // 模拟API调用
- uni.showLoading({
- title: '提交中...'
- });
-
- setTimeout(() => {
- uni.hideLoading();
- uni.showToast({
- icon: 'success',
- title: '提交成功'
- });
-
- setTimeout(() => {
- uni.navigateBack({
- delta: 1
- });
- }, 1500);
- }, 1000);
- }
- }
- }
- </script>
-
- <style scoped lang="scss">
- page {
- background-color: #F5F5F5;
- }
-
- .content {
- min-height: 100vh;
- background-color: #F5F5F5;
- padding-bottom: 200rpx; // 为底部按钮留出空间
- }
-
- .cr {
- min-height: calc(88vh);
- }
-
- .mt40 {
- margin-top: 40rpx;
- }
-
- // 卡片样式
- .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);
- }
-
- // 弹性布局
- .flex-sb {
- display: flex;
- justify-content: space-between;
- align-items: center;
- margin-bottom: 24rpx;
- }
-
- // 标签样式
- .re-from-label {
- font-size: 28rpx;
- font-weight: normal;
- letter-spacing: 0px;
- color: #1c1c1c;
- }
-
- // 查看示例按钮
- .re-card-show {
- color: #9E9E9E;
- font-size: 24rpx;
- font-weight: normal;
- line-height: normal;
- letter-spacing: 0em;
- padding: 8rpx 16rpx;
- border: 1rpx solid #9E9E9E;
- border-radius: 20rpx;
- background-color: rgba(158, 158, 158, 0.1);
- transition: all 0.3s;
-
- &:active {
- background-color: rgba(158, 158, 158, 0.2);
- transform: scale(0.95);
- }
- }
-
- // 说明文字
- .re-card-context {
- font-size: 24rpx;
- font-weight: normal;
- line-height: 36rpx;
- letter-spacing: 0em;
- color: #9E9E9E;
- margin-top: 16rpx;
-
- label {
- color: #F40000;
- font-weight: 500;
- }
- }
-
- // 文本域样式
- .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;
- }
- }
-
- // 底部按钮区域
- .re-end-pand {
- position: fixed;
- bottom: 0;
- left: 0;
- right: 0;
- width: 100vw;
- height: 88rpx;
- opacity: 1;
- background: #FFFFFF;
- box-shadow: 0rpx 2rpx 20rpx 0rpx rgba(0, 0, 0, 0.2);
- padding: 30rpx 0;
- padding-bottom: calc(30rpx + env(safe-area-inset-bottom));
- z-index: 100;
-
- button {
- width: 620rpx;
- height: 88rpx;
- line-height: 88rpx;
- border-radius: 10rpx;
- background: #F40000;
- color: #FFF;
- text-align: center;
- margin: 0 auto;
- font-size: 30rpx;
- font-weight: 400;
- transition: all 0.2s ease-in-out;
- border: none;
-
- &:active {
- transform: translateY(2rpx) translateX(1rpx);
- background: #d63031;
- }
- }
- }
-
- // 高亮文字
- .highlight {
- color: #F40000;
- font-weight: 500;
- }
-
- // 可选标识
- .optional {
- color: #999;
- font-weight: normal;
- }
- </style>
|