Ver Fonte

feat(client): 新增上传组件,待完善

yizhiyang há 10 meses atrás
pai
commit
4bb42ad186

+ 2 - 2
src/PageMine/feedback/index.vue

@@ -5,7 +5,7 @@
     <view class="feedback">
       <u--form labelPosition="top" ref="uForm" labelWidth="auto">
         <base-card marginBottom="24rpx" padding="24rpx">
-          <u-form-item label="姓名" prop="userInfo.name" ref="item1">
+          <u-form-item label="意见反馈" prop="userInfo.name" ref="item1">
             <u--textarea
               v-model="model1.userInfo.name"
               placeholder="请输入内容"
@@ -15,7 +15,7 @@
             />
           </u-form-item>
           <u-form-item>
-            <u-upload> </u-upload>
+            <upload-img> </upload-img>
           </u-form-item>
         </base-card>
         <base-card>

+ 7 - 2
src/PageMine/gotoEvaluate/index.vue

@@ -5,7 +5,12 @@
       <base-card padding="24rpx">
         <view class="f-s-32 text-333 text-bold u-m-b-24">服务项目</view>
         <view class="fl-flex u-m-b-10" v-for="(item, index) in 2" :key="index">
-          <base-img :src="src" width="150rpx" height="150rpx" borderRadius="16rpx"></base-img>
+          <base-img
+            :src="src"
+            width="150rpx"
+            height="150rpx"
+            borderRadius="16rpx"
+          ></base-img>
           <view class="u-m-l-32">
             <view class="f-s-30 text-333 u-m-b-8">汽车服务服务</view>
             <view class="f-s-26 text-333 u-m-b-20">X1</view>
@@ -36,7 +41,7 @@
             />
           </u-form-item>
           <u-form-item>
-            <u-upload> </u-upload>
+            <upload-img> </upload-img>
           </u-form-item>
         </u--form>
       </base-card>

+ 5 - 0
src/PageMine/serviceCenter/index.vue

@@ -50,6 +50,11 @@
           >
           </u-cell>
         </u-cell-group>
+
+        <view class="fl-flex fl-align-center fl-justify-center u-m-t-32">
+          <view class="fl-text-999 u-m-r-10">展开更多</view>
+          <u-icon name="arrow-down" color="#999" size="13"></u-icon>
+        </view>
       </base-card>
     </view>
     <view class="service-bottom">

+ 106 - 1
src/components/upload-img/upload-img.vue

@@ -5,14 +5,119 @@
 -->
 
 <template>
-  <view> 图片 </view>
+  <u-upload
+    :fileList="fileList1"
+    @afterRead="afterRead"
+    @delete="deletePic"
+    :multiple="multiple"
+    :maxCount="maxCount"
+    :accept="accept"
+    :deletable="deletable"
+    :previewFullImage="previewFullImage"
+  >
+    <view class="upload-img direction fl-justify-center">
+      <u--image
+        src="/static/components/upload-img.png"
+        width="48rpx"
+        height="48rpx"
+      ></u--image>
+      <view class="f-s-28 u-m-t-16" style="color: #9fa0a6">{{ text }}</view>
+    </view>
+  </u-upload>
 </template>
 
 <script>
 export default {
   name: 'upload-img',
+  props: {
+    text: {
+      type: String,
+      default: '上传图片',
+    },
+    accept: {
+      type: String,
+      default: 'image', //all | media | image | file | video
+    },
+    maxCount: {
+      type: String | Number,
+      default: 1,
+    },
+    previewFullImage: {
+      type: Boolean,
+      default: true,
+    },
+    multiple: {
+      type: Boolean,
+      default: false,
+    },
+    deletable: {
+      type: Boolean,
+      default: false,
+    },
+  },
+  data() {
+    return {
+      fileList1: [],
+    };
+  },
+  methods: {
+    // 删除图片
+    deletePic(event) {
+      this[`fileList${event.name}`].splice(event.index, 1);
+    },
+    // 新增图片
+    async afterRead(event) {
+      // 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
+      let lists = [].concat(event.file);
+      let fileListLen = this[`fileList${event.name}`].length;
+      lists.map(item => {
+        this[`fileList${event.name}`].push({
+          ...item,
+          status: 'uploading',
+          message: '上传中',
+        });
+      });
+      for (let i = 0; i < lists.length; i++) {
+        const result = await this.uploadFilePromise(lists[i].url);
+        let item = this[`fileList${event.name}`][fileListLen];
+        this[`fileList${event.name}`].splice(
+          fileListLen,
+          1,
+          Object.assign(item, {
+            status: 'success',
+            message: '',
+            url: result,
+          }),
+        );
+        fileListLen++;
+      }
+    },
+    uploadFilePromise(url) {
+      return new Promise((resolve, reject) => {
+        let a = uni.uploadFile({
+          url: 'http://192.168.2.21:7001/upload', // 仅为示例,非真实的接口地址
+          filePath: url,
+          name: 'file',
+          formData: {
+            user: 'test',
+          },
+          success: res => {
+            setTimeout(() => {
+              resolve(res.data.data);
+            }, 1000);
+          },
+        });
+      });
+    },
+  },
 };
 </script>
 
 <style lang="scss" scoped>
+.upload-img {
+  width: 214rpx;
+  height: 210rpx;
+  border-radius: 8rpx;
+  border: 2rpx dashed #e6e6e6;
+}
 </style>

+ 0 - 1
src/design/common.css

@@ -141,7 +141,6 @@
   font-weight: bold;
 }
 
-
 .fl-text-999 {
   font-size: 24rpx;
   color: #999999;

BIN
src/static/components/upload-img.png