linwenxin 10 bulan lalu
induk
melakukan
af26bf1609
1 mengubah file dengan 507 tambahan dan 452 penghapusan
  1. 507 452
      src/packageWorkorder/pages/processFeedback.vue

+ 507 - 452
src/packageWorkorder/pages/processFeedback.vue

@@ -1,31 +1,46 @@
 <template>
-	<zj-page-layout :hasFooter="true">
-		<view class="all-container">
-			<view class="type-container mt30">
-				<view class="common-title"><text>*</text>反馈类型</view>
-				<view class="list">
-					<view class="item" v-for="(item, index) in typeList" :key="index" :class="typeVal === item.value ? 'active':''" @tap="changeType(item.value)">{{item.name}}</view>
-				</view>
-			</view>
-
-			<view class="date-conteiner mt30" v-if="typeVal == '2'">
-				<view class="item">
-				  <view class="label"><text>*</text>预约上门时间</view>
-				  <view class="picker" @tap="isShowDatePicker = true">
-				    <text class="value" v-if="date">{{date}}</text>
-				    <text class="placeholder" v-else>请选择</text>
-				    <text class="iconfont icon-jinru"></text>
-				  </view>
-				</view>
-			</view>
+  <zj-page-layout :hasFooter="true">
+    <view class="all-container">
+      <view class="type-container mt30">
+        <view class="common-title"><text>*</text>反馈类型</view>
+        <view class="list">
+          <view class="item" v-for="(item, index) in typeList" :key="index"
+            :class="typeVal === item.value ? 'active' : ''" @tap="changeType(item.value)">{{ item.name }}</view>
+        </view>
+      </view>
+
+      <view class="date-conteiner mt30" v-if="typeVal == '2'">
+        <view class="item">
+          <view class="label"><text>*</text>预约上门开始时间</view>
+          <view class="picker" @tap="isShowDatePicker = true">
+            <text class="value" v-if="date">{{ date }}</text>
+            <text class="placeholder" v-else>请选择</text>
+            <text class="iconfont icon-jinru"></text>
+          </view>
+        </view>
+      </view>
+
+      <view class="date-conteiner mt30" v-if="typeVal == '2'">
+        <view class="item">
+          <view class="label"><text>*</text>预约上门结束时间</view>
+          <view class="picker" @tap="isShowDatePicker2 = true">
+            <text class="value" v-if="date2">{{ date2 }}</text>
+            <text class="placeholder" v-else>请选择</text>
+            <text class="iconfont icon-jinru"></text>
+          </view>
+        </view>
+      </view>
 
       <view class="over-container mt30" v-if="typeVal == '3'">
         <view class="row">
           <view class="label"><text>*</text>完工采集</view>
-          <view class="btn"><u-button type="primary" :text="orderDetail && orderDetail.isGather == 'YES' ? '查看采集' : '数据采集'" @click="toCollect"></u-button></view>
+          <view class="btn"><u-button type="primary"
+              :text="orderDetail && orderDetail.isGather == 'YES' ? '查看采集' : '数据采集'" @click="toCollect"></u-button>
+          </view>
         </view>
         <view class="row">
-          <view class="label">收费项目<u-icon name="question-circle" color="#999999" @click="$tips('在服务过程中消耗的产品(配件)')"></u-icon></view>
+          <view class="label">收费项目<u-icon name="question-circle" color="#999999"
+              @click="$tips('在服务过程中消耗的产品(配件)')"></u-icon></view>
           <view class="btn"><u-button type="primary" text="添加" @click="toCharge"></u-button></view>
         </view>
       </view>
@@ -39,484 +54,524 @@
         </view>
       </view>
 
-			<view class="mt30 remark-container">
-				<view class="common-title"><text v-if="typeVal == '1' || typeVal == '4'">*</text>备注信息</view>
-				<u--textarea v-model="remarkVal" placeholder="请输入备注内容" fixed border="none" height="120"></u--textarea>
-			</view>
+      <view class="mt30 remark-container">
+        <view class="common-title"><text v-if="typeVal == '1' || typeVal == '4'">*</text>备注信息</view>
+        <u--textarea v-model="remarkVal" placeholder="请输入备注内容" fixed border="none" height="120"></u--textarea>
+      </view>
 
       <view class="mt30 image-container" v-if="typeVal == '1' || typeVal == '4'">
-      	<view class="common-title">上传图片(最多6张)</view>
-      	<view class="images">
-      		<block v-for="(item, index) in imageList" :key='index'>
-      			<view class="img">
-      				<image :src="item.url" mode="aspectFill" @tap="prevImg(item.url)"></image>
-      				<text class="iconfont icon-guanbi1" @tap="delImage(index)"></text>
-      			</view>
-      		</block>
-      		<view class="add"  @tap="addImage" v-if="imageList.length < 6">
-      			<text class="iconfont icon-xiangji"></text>
-      			<text class="text">添加图片</text>
-      		</view>
-      	</view>
+        <view class="common-title">上传图片(最多6张)</view>
+        <view class="images">
+          <block v-for="(item, index) in imageList" :key='index'>
+            <view class="img">
+              <image :src="item.url" mode="aspectFill" @tap="prevImg(item.url)"></image>
+              <text class="iconfont icon-guanbi1" @tap="delImage(index)"></text>
+            </view>
+          </block>
+          <view class="add" @tap="addImage" v-if="imageList.length < 6">
+            <text class="iconfont icon-xiangji"></text>
+            <text class="text">添加图片</text>
+          </view>
+        </view>
+      </view>
+    </view>
+
+    <template slot="footer">
+      <view class="footer-btn-group">
+        <u-button text="确定" type="primary" size="large" @click="submitData"></u-button>
       </view>
-		</view>
-
-		<template slot="footer">
-			<view class="footer-btn-group">
-				<u-button text="确定" type="primary" size="large" @click="submitData"></u-button>
-			</view>
-		</template>
-
-    <u-datetime-picker
-      :show="isShowDatePicker"
-      v-model="datePickerValue"
-      mode="date"
-      :formatter="formatter"
-      @cancel="isShowDatePicker = false"
-      @close="isShowDatePicker = false"
-      @confirm="confirmDate"
-      :minDate="minDate"
-    ></u-datetime-picker>
+    </template>
+
+    <u-datetime-picker mode="dateTime" v-model="datePickerValue" :show="isShowDatePicker" :formatter="formatter"
+      @cancel="isShowDatePicker = false" @close="isShowDatePicker = false" @confirm="confirmDate"
+      :minDate="minDate"></u-datetime-picker>
+
+    <u-datetime-picker mode="dateTime" v-model="datePickerValue2" :show="isShowDatePicker2" :formatter="formatter"
+      @cancel="isShowDatePicker2 = false" @close="isShowDatePicker2 = false" @confirm="confirmDate2"
+      :minDate="Number(new Date(this.date))"></u-datetime-picker>
   </zj-page-layout>
 </template>
 
 <script>
-	import { uploadImgFull } from '@/common/utils/util.js';
-
-	export default {
-		data() {
-			return {
-				id: '',
-        orderDetail: {},
-				typeList: [
-					{name: '其他', value: '1'},
-					{name: '改约', value: '2'},
-					{name: '完工反馈', value: '3'},
-					{name: '异常反馈', value: '4'},
-				],
-				typeVal: '1',
-				date: '',
-				datePickerValue: Number(new Date()),
-				minDate: Number(new Date()),
-				isShowDatePicker: false,
-				remarkVal: '', // 备注值
-
-        imageList: [],
-
-        signNameUrl: '',
-
-        canClickBtn: true,
-			};
-		},
-
-		async onLoad({ id }) {
-			this.id = id;
+import { uploadImgFull } from '@/common/utils/util.js';
+
+export default {
+  data() {
+    return {
+      id: '',
+      orderDetail: {},
+      typeList: [
+        { name: '其他', value: '1' },
+        { name: '改约', value: '2' },
+        { name: '完工反馈', value: '3' },
+        { name: '异常反馈', value: '4' },
+      ],
+      typeVal: '1',
+      minDate: (new Date()).getTime(),
+      date: '',
+      datePickerValue: (new Date()).getTime(),
+      isShowDatePicker: false,
+      date2: '',
+      datePickerValue2: (new Date()).getTime(),
+      isShowDatePicker2: false,
+      remarkVal: '', // 备注值
+      imageList: [],
+      signNameUrl: '',
+      canClickBtn: true,
+    };
+  },
+
+  async onLoad({ id }) {
+    this.id = id;
+    this.getOrderDetail();
+
+    this.crossPage.$on('finishSign', async (data) => {
+      // this.$showLoading();
+      this.signNameUrl = data;
+    })
+
+    this.crossPage.$on('refreshFeedbackForm', () => {
       this.getOrderDetail();
+    })
+  },
+
+  onUnload() {
+    this.crossPage.$off('finishSign');
+    this.crossPage.$off('refreshFeedbackForm');
+  },
+
+  methods: {
+    formatter(type, value) {
+      if (type === 'year') {
+        return `${value}年`
+      }
+      if (type === 'month') {
+        return `${value}月`
+      }
+      if (type === 'day') {
+        return `${value}日`
+      }
+      if (type === 'hour') {
+        return `${value}时`
+      }
+      if (type === 'minute') {
+        return `${value}分`
+      }
+      return value
+    },
 
-      this.crossPage.$on('finishSign', async (data) => {
-      	// this.$showLoading();
-      	this.signNameUrl = data;
-      })
+    // 获取详情
+    getOrderDetail() {
+      return new Promise((resolve, reject) => {
+        this.$api.post('/pg/order/base/detail', {
+          orderBaseId: this.id,
+        }).then((res) => {
+          this.orderDetail = res.data;
+          if (res.data.appointmentTime) {
+            this.typeList[1].name = '改约';
+          } else {
+            this.typeList[1].name = '预约';
+          }
+          resolve(1);
+        })
+          .catch((res) => {
+            reject(0);
+          });
+      });
+    },
+
+    changeType(val) {
+      if (!this.orderDetail.appointmentTime && val == 3) {
+        return this.$tips('请先预约工单再完工反馈');
+      }
+      this.typeVal = val;
+    },
 
-      this.crossPage.$on('refreshFeedbackForm', () => {
-      	this.getOrderDetail();
+    // 去采集
+    toCollect() {
+      this.$navToPage({
+        url: `/packageWorkorder/pages/infoCollect/list?id=${this.id}`
       })
-		},
+    },
 
-    onUnload() {
-    	this.crossPage.$off('finishSign');
-    	this.crossPage.$off('refreshFeedbackForm');
+    confirmDate(e) {
+      this.isShowDatePicker = false;
+      this.date = this.formatTimestamp(e.value)
+      this.date2 = ""
+      this.datePickerValue2 = (new Date(e.value)).getTime()
     },
 
-		methods: {
-      formatter(type, value) {
-        if (type === 'year') {
-          return `${value}年`
-        }
-        if (type === 'month') {
-          return `${value}月`
-        }
-        if (type === 'day') {
-          return `${value}日`
-        }
-        return value
-      },
-
-      // 获取详情
-      getOrderDetail() {
-      	return new Promise((resolve, reject) => {
-      		this.$api.post('/pg/order/base/detail', {
-            orderBaseId: this.id,
-          }).then((res) => {
-            this.orderDetail = res.data;
-            if(res.data.appointmentTime) {
-              this.typeList[1].name = '改约';
-            }else {
-              this.typeList[1].name = '预约';
-            }
-            resolve(1);
-          })
-          .catch((res) => {
-            reject(0);
+    confirmDate2(e) {
+      this.isShowDatePicker2 = false;
+      this.date2 = this.formatTimestamp(e.value)
+    },
+
+    formatTimestamp(timestamp) {
+      const date = new Date(timestamp);
+      const year = date.getFullYear();
+      const month = (date.getMonth() + 1).toString().padStart(2, '0');
+      const day = date.getDate().toString().padStart(2, '0');
+      const hours = date.getHours().toString().padStart(2, '0');
+      const minutes = date.getMinutes().toString().padStart(2, '0');
+      const seconds = date.getSeconds().toString().padStart(2, '0');
+      return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
+    },
+
+    // 添加图片
+    async addImage() {
+      uni.chooseImage({
+        count: 6 - this.imageList.length,
+        success: res => {
+          uni.showLoading();
+          res.tempFilePaths.forEach(async item => {
+            let data = await uploadImgFull(item);
+            this.imageList.push(data);
           });
-      	});
-      },
-
-      changeType(val) {
-        if(!this.orderDetail.appointmentTime && val == 3) {
-          return this.$tips('请先预约工单再完工反馈');
-        }
-        this.typeVal = val;
-      },
-
-      // 去采集
-      toCollect() {
-        this.$navToPage({
-          url: `/packageWorkorder/pages/infoCollect/list?id=${this.id}`
-        })
-      },
-
-      confirmDate(e) {
-        this.isShowDatePicker = false;
-        let time = new Date(e.value);
-        let y = time.getFullYear();
-        let m = (time.getMonth()+1) < 10 ? '0' + (time.getMonth()+1) : time.getMonth()+1;
-        let d = (time.getDate()) < 10 ? '0' + (time.getDate()) : time.getDate();
-        let hh = (time.getHours()) < 10 ? '0' + (time.getHours()) : time.getHours();
-        let mm = (time.getMinutes()) < 10 ? '0' + (time.getMinutes()) : time.getMinutes();
-        let ss = (time.getSeconds()) < 10 ? '0' + (time.getSeconds()) : time.getSeconds();
-        this.date = `${y}-${m}-${d}`;
-      },
-
-      // 添加图片
-      async addImage() {
-      	uni.chooseImage({
-      		count: 6 - this.imageList.length,
-      		success: res => {
-      			uni.showLoading();
-      			res.tempFilePaths.forEach(async item => {
-      				let data = await uploadImgFull(item);
-      				this.imageList.push(data);
-      			});
-      			uni.hideLoading();
-      		},
-      		fail: err => {}
-      	})
-      },
-
-      // 删除图片
-      delImage(index) {
-      	this.imageList.splice(index, 1);
-      },
-
-      //预览图片
-      prevImg(current) {
-      	uni.previewImage({
-      		current,
-      		urls: this.imageList.map(item => {
-      			return item.url
-      		})
-      	})
-      },
-
-      prevSignImg(url) {
-        uni.previewImage({
-        	current: url,
-        	urls: [url]
-        })
-      },
+          uni.hideLoading();
+        },
+        fail: err => { }
+      })
+    },
 
-      // 去收费
-      toCharge() {
-        this.$navToPage({
-          url: `/packageMaterial/pages/sale/index?type=${this.orderDetail.orderType == 'INSTALL' ? 'M' : 'P'}&oid=${this.id}`
-        })
-      },
+    // 删除图片
+    delImage(index) {
+      this.imageList.splice(index, 1);
+    },
 
-      toSignName() {
-        this.$navToPage({
-          url: `/packageWorkorder/pages/signName`
+    //预览图片
+    prevImg(current) {
+      uni.previewImage({
+        current,
+        urls: this.imageList.map(item => {
+          return item.url
         })
-      },
-
-			// 提交
-			async submitData() {
-        if (!this.canClickBtn) return this.$toast('请勿频繁操作');
-        this.canClickBtn = false;
-        setTimeout(() => { this.canClickBtn = true }, 3000)
-
-				if (this.typeVal == '2' && !this.date) return this.$toast('请选择改约时间');
-				if (this.typeVal == '3' && !this.signNameUrl) return this.$toast('请签名');
-				if ((this.typeVal == '1' || this.typeVal == '4') && !this.remarkVal) return this.$toast('请填写备注信息');
-
-				let params = {};
-
-				if (this.typeVal == '2') {
-          params.id = this.id;
-					params.appointmentTime = this.date + ' 00:00:00';
-					params.appointmentEndTime = this.date + ' 23:59:59';
-          params.remark = this.remarkVal;
-				}else {
-          params.orderBaseId = this.id;
-          params.content = this.remarkVal;
-        }
-
-        if (this.typeVal == '1') {
-          params.type = '其他';
-          params.typeText = '其他';
-        }
-        if (this.typeVal == '4') {
-          params.type = '异常反馈';
-          params.typeText = '异常反馈';
-        }
-        if (this.typeVal == '1' || this.typeVal == '4') {
-          params.imgSrc = this.imageList.map(item => {
-            return item.url
-          }).join(',')
-        }
-
-        if(this.typeVal == '3') {
-          const lo = await this.$getAddress();
-
-          params.orderBaseId = this.id;
-          params.overRemark = this.remarkVal;
-          params.userSign = this.signNameUrl;
-          params.address = lo.address || '';
-        }
-
-        // 其他/异常反馈
-        if (this.typeVal == '1' || this.typeVal == '4') {
-          this.$api.postJson('/pg/order/base/operator/add', {
-            ...params
-          }).then((res) => {
-          	this.submitSuccess();
-          });
-        }
-        // 改约
-        else if(this.typeVal == '2') {
-          this.$api.post('/changeOrder/changeAppointmentTime', {
-            ...params
-          }).then((res) => {
-          	this.submitSuccess();
-          });
-        }
-        // 完工反馈
-        else if(this.typeVal == '3') {
-          this.$api.post('/changeOrder/submitAll', {
-            ...params
-          }).then((res) => {
-          	this.submitSuccess('YWG');
-          });
-        }
-			},
-
-      submitSuccess(tab = '') {
-        this.$successToast('反馈成功');
-        this.crossPage.$emit('refreshWorkorderList', {tab: tab});
-        this.crossPage.$emit('refreshWorkorderDetail', '');
-        setTimeout(() => {
-          this.$navToPage({
-          	delta: 1
-          }, 'navigateBack')
-        }, 500)
+      })
+    },
+
+    prevSignImg(url) {
+      uni.previewImage({
+        current: url,
+        urls: [url]
+      })
+    },
+
+    // 去收费
+    toCharge() {
+      this.$navToPage({
+        url: `/packageMaterial/pages/sale/index?type=${this.orderDetail.orderType == 'INSTALL' ? 'M' : 'P'}&oid=${this.id}`
+      })
+    },
+
+    toSignName() {
+      this.$navToPage({
+        url: `/packageWorkorder/pages/signName`
+      })
+    },
+
+    // 提交
+    async submitData() {
+      if (!this.canClickBtn) return this.$toast('请勿频繁操作');
+      this.canClickBtn = false;
+      setTimeout(() => { this.canClickBtn = true }, 3000)
+
+      if (this.typeVal == '2' && !this.date) return this.$toast('请选择改约时间');
+      if (this.typeVal == '2' && !this.date2) return this.$toast('请选择改约时间');
+      if (this.typeVal == '3' && !this.signNameUrl) return this.$toast('请签名');
+      if ((this.typeVal == '1' || this.typeVal == '4') && !this.remarkVal) return this.$toast('请填写备注信息');
+
+      let params = {};
+
+      if (this.typeVal == '2') {
+        params.id = this.id;
+        params.appointmentTime = this.date;
+        params.appointmentEndTime = this.date2;
+        params.remark = this.remarkVal;
+      } else {
+        params.orderBaseId = this.id;
+        params.content = this.remarkVal;
+      }
+
+      if (this.typeVal == '1') {
+        params.type = '其他';
+        params.typeText = '其他';
+      }
+      if (this.typeVal == '4') {
+        params.type = '异常反馈';
+        params.typeText = '异常反馈';
       }
-		},
-	};
+      if (this.typeVal == '1' || this.typeVal == '4') {
+        params.imgSrc = this.imageList.map(item => {
+          return item.url
+        }).join(',')
+      }
+
+      if (this.typeVal == '3') {
+        const lo = await this.$getAddress();
+
+        params.orderBaseId = this.id;
+        params.overRemark = this.remarkVal;
+        params.userSign = this.signNameUrl;
+        params.address = lo.address || '';
+      }
+
+      // 其他/异常反馈
+      if (this.typeVal == '1' || this.typeVal == '4') {
+        this.$api.postJson('/pg/order/base/operator/add', {
+          ...params
+        }).then((res) => {
+          this.submitSuccess();
+        });
+      }
+      // 改约
+      else if (this.typeVal == '2') {
+        this.$api.post('/changeOrder/changeAppointmentTime', {
+          ...params
+        }).then((res) => {
+          this.submitSuccess();
+        });
+      }
+      // 完工反馈
+      else if (this.typeVal == '3') {
+        this.$api.post('/changeOrder/submitAll', {
+          ...params
+        }).then((res) => {
+          this.submitSuccess('YWG');
+        });
+      }
+    },
+
+    submitSuccess(tab = '') {
+      this.$successToast('反馈成功');
+      this.crossPage.$emit('refreshWorkorderList', { tab: tab });
+      this.crossPage.$emit('refreshWorkorderDetail', '');
+      setTimeout(() => {
+        this.$navToPage({
+          delta: 1
+        }, 'navigateBack')
+      }, 500)
+    }
+  },
+};
 </script>
 
 <style lang="scss" scoped>
-	.all-container {
-		padding-bottom: 30rpx;
-	}
-
-  .common-title {
-  	font-size: 32rpx;
-  	font-weight: 600;
-    padding: 30rpx 0;
-    text {
-    	color: $minor-color;
-    }
+.all-container {
+  padding-bottom: 30rpx;
+}
+
+.common-title {
+  font-size: 32rpx;
+  font-weight: 600;
+  padding: 30rpx 0;
+
+  text {
+    color: $minor-color;
   }
+}
+
+.type-container {
+  background: #ffffff;
+  padding: 0 30rpx;
+
+  .list {
+    display: flex;
+    flex-wrap: wrap;
 
-	.type-container {
-		background: #ffffff;
-		padding: 0 30rpx;
-
-		.list {
-			display: flex;
-			flex-wrap: wrap;
-			.item {
-				width: calc((100% - 30rpx) / 2);
-				height: 80rpx;
-				line-height: 80rpx;
-				text-align: center;
-				border-radius: 20rpx;
-				background: #F4F5F9;
-				margin-bottom: 30rpx;
-				&:nth-child(2n) {
-					margin-left: 30rpx;
-				}
-				&.active {
-					background: $theme-color;
-					color: #ffffff;
-				}
-			}
-		}
-	}
-
-  .date-conteiner {
-    background: #ffffff;
-    padding: 30rpx 30rpx;
     .item {
-      display: flex;
-      align-items: center;
-      justify-content: space-between;
-      height: 50rpx;
-      .label {
-        margin-right: 30rpx;
-        text {
-          color: $error-color;
-        }
+      width: calc((100% - 30rpx) / 2);
+      height: 80rpx;
+      line-height: 80rpx;
+      text-align: center;
+      border-radius: 20rpx;
+      background: #F4F5F9;
+      margin-bottom: 30rpx;
+
+      &:nth-child(2n) {
+        margin-left: 30rpx;
+      }
+
+      &.active {
+        background: $theme-color;
+        color: #ffffff;
+      }
+    }
+  }
+}
+
+.date-conteiner {
+  background: #ffffff;
+  padding: 30rpx 30rpx;
+
+  .item {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    height: 50rpx;
+
+    .label {
+      margin-right: 30rpx;
+
+      text {
+        color: $error-color;
       }
-      .picker {
-        .placeholder {
-          color: $sec-font;
-        }
-        .iconfont {
-          margin-left: 12rpx;
-          color: $sec-font;
-        }
+    }
+
+    .picker {
+      .placeholder {
+        color: $sec-font;
+      }
+
+      .iconfont {
+        margin-left: 12rpx;
+        color: $sec-font;
       }
     }
   }
+}
 
-	.over-container {
-		background: #ffffff;
-		padding: 10rpx 30rpx;
-    .row {
-      height: 100rpx;
+.over-container {
+  background: #ffffff;
+  padding: 10rpx 30rpx;
+
+  .row {
+    height: 100rpx;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+
+    .label {
+      font-size: 32rpx;
+      font-weight: 600;
       display: flex;
       align-items: center;
-      justify-content: space-between;
-      .label {
-      	font-size: 32rpx;
-      	font-weight: 600;
-        display: flex;
-        align-items: center;
-      	text {
-      		color: $minor-color;
-      	}
-        ::v-deep .u-icon {
-          margin-left: 8rpx;
-        }
+      text {
+        color: $minor-color;
+      }
+
+      ::v-deep .u-icon {
+        margin-left: 8rpx;
       }
-      .btn {
-        ::v-deep .u-button {
-          height: 60rpx;
-        }
+    }
+
+    .btn {
+      ::v-deep .u-button {
+        height: 60rpx;
       }
     }
-	}
+  }
+}
+
+.sign-container {
+  background: #ffffff;
+  padding: 0 30rpx 30rpx;
+
+  .empty {
+    height: 200rpx;
+    background: #f4f5f9;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    border-radius: 12rpx;
+    color: $sec-font;
+  }
+
+  .img {
+    position: relative;
 
-  .sign-container {
-    background: #ffffff;
-    padding: 0 30rpx 30rpx;
-    .empty {
+    image {
+      width: 100%;
       height: 200rpx;
-      background: #f4f5f9;
+    }
+
+    text {
+      position: absolute;
+      right: -10rpx;
+      top: -10rpx;
+      width: 40rpx;
+      height: 40rpx;
+      border-radius: 50%;
+      background: #FF3F42;
+      font-size: 24rpx;
+      color: #FFFFFF;
+      text-align: center;
+      line-height: 40rpx;
+      display: block;
+    }
+  }
+}
+
+.remark-container {
+  padding: 1rpx 30rpx 30rpx;
+  background: #ffffff;
+
+  ::v-deep .u-textarea {
+    background: #f4f5f9;
+  }
+}
+
+.image-container {
+  padding: 1rpx 30rpx 30rpx;
+  background: #ffffff;
+
+  .images {
+    display: flex;
+    flex-wrap: wrap;
+
+    .add {
       display: flex;
+      flex-direction: column;
       align-items: center;
       justify-content: center;
-      border-radius: 12rpx;
-      color: $sec-font;
+      width: 146rpx;
+      height: 146rpx;
+      border: 2rpx dashed #dadada;
+      border-radius: 10rpx;
+      margin-top: 20rpx;
+
+      .iconfont {
+        font-size: 48rpx;
+        color: #999999;
+      }
+
+      .text {
+        font-size: 24rpx;
+        color: #999999;
+        margin-top: 10rpx;
+      }
     }
+
     .img {
       position: relative;
+      margin-right: 20rpx;
+      margin-top: 20rpx;
+
+      &:nth-child(4n) {
+        margin-right: 0;
+      }
+
       image {
-        width: 100%;
-        height: 200rpx;
+        width: 150rpx;
+        height: 150rpx;
+        border-radius: 10rpx;
+        overflow: hidden;
+        display: block;
       }
+
       text {
-      	position: absolute;
-      	right: -10rpx;
-      	top: -10rpx;
-      	width: 40rpx;
-      	height: 40rpx;
-      	border-radius: 50%;
-      	background: #FF3F42;
-      	font-size: 24rpx;
-      	color: #FFFFFF;
-      	text-align: center;
-      	line-height: 40rpx;
-      	display: block;
+        position: absolute;
+        right: -10rpx;
+        top: -10rpx;
+        width: 40rpx;
+        height: 40rpx;
+        border-radius: 50%;
+        background: #FF3F42;
+        font-size: 24rpx;
+        color: #FFFFFF;
+        text-align: center;
+        line-height: 40rpx;
+        display: block;
       }
     }
   }
-
-	.remark-container {
-		padding: 1rpx 30rpx 30rpx;
-		background: #ffffff;
-
-		::v-deep .u-textarea {
-			background: #f4f5f9;
-		}
-	}
-
-  .image-container {
-		padding: 1rpx 30rpx 30rpx;
-		background: #ffffff;
-    .images {
-    	display: flex;
-    	flex-wrap: wrap;
-    	.add {
-    		display: flex;
-    		flex-direction: column;
-    		align-items: center;
-    		justify-content: center;
-    		width: 146rpx;
-    		height: 146rpx;
-    		border: 2rpx dashed #dadada;
-    		border-radius: 10rpx;
-    		margin-top: 20rpx;
-    		.iconfont {
-    			font-size: 48rpx;
-    			color: #999999;
-    		}
-    		.text {
-    			font-size: 24rpx;
-    			color: #999999;
-    			margin-top: 10rpx;
-    		}
-    	}
-    	.img {
-    		position: relative;
-    		margin-right: 20rpx;
-    		margin-top: 20rpx;
-    		&:nth-child(4n) {
-    			margin-right: 0;
-    		}
-    		image {
-    			width: 150rpx;
-    			height: 150rpx;
-    			border-radius: 10rpx;
-    			overflow: hidden;
-    			display: block;
-    		}
-    		text {
-    			position: absolute;
-    			right: -10rpx;
-    			top: -10rpx;
-    			width: 40rpx;
-    			height: 40rpx;
-    			border-radius: 50%;
-    			background: #FF3F42;
-    			font-size: 24rpx;
-    			color: #FFFFFF;
-    			text-align: center;
-    			line-height: 40rpx;
-    			display: block;
-    		}
-    	}
-    }
-  }
+}
 </style>