sunran 3 tahun lalu
induk
melakukan
ec4c45ec1a

File diff ditekan karena terlalu besar
+ 216 - 378
package-lock.json


+ 1 - 1
package.json

@@ -11,7 +11,7 @@
     "axios": "^0.27.2",
     "core-js": "^3.6.5",
     "lib-flexible": "^0.3.2",
-    "node-sass": "^7.0.1",
+    "node-sass": "^4.14.1",
     "sass-loader": "^7.0.0",
     "vant": "^2.12.48",
     "vue": "^2.6.11",

+ 126 - 0
src/views/weibao/components/vanUploader.vue

@@ -0,0 +1,126 @@
+<template>
+  <div class="upload">
+    <van-row class="cell">
+      <van-col span="6">{{text}}:</van-col>
+      <van-col span="18">
+        <div class="box">
+          <van-uploader v-if="text=='图片'" multiple v-model="imgUrl" accept="image/*" :after-read="afterRead" @delete='deleteUploader'>
+          </van-uploader>
+          <van-uploader v-else v-model="multiMediaUrl" multiple accept="video/*" :after-read="afterRead" @delete='deleteUploader'>
+            <template #preview-cover="{ file }">
+              <div v-if="file.type.indexOf('video') !== -1" class="none-box">
+                <img :src="require('../assets/video.png')">
+              </div>
+            </template>
+          </van-uploader>
+        </div>
+      </van-col>
+    </van-row>
+    <!-- <van-row class="cell">
+      <van-col span="6">视频:</van-col>
+      <van-col span="18">
+        <div class="box">
+          <van-uploader v-model="multiMediaUrl" accept="video/*" :after-read="afterRead" @delete='deleteUploader'>
+            <template #preview-cover="{ file }">
+              <div v-if="file.type.indexOf('video') !== -1" class="none-box">
+                <img :src="require('../assets/video.png')">
+              </div>
+            </template>
+          </van-uploader>
+        </div>
+      </van-col>
+    </van-row> -->
+  </div>
+</template>
+<script>
+import { uploadImage } from '../api/index.js'
+export default {
+  props: ['text'],
+  data() {
+    return {
+      multiMediaUrl: [],
+      imgUrl: [],
+      fileList: [],
+    }
+  },
+  methods: {
+    afterRead(file) {
+      let formDate = new FormData()
+      if (file.length) {
+        file.forEach((item) => {
+          item.status = 'uploading'
+          item.message = '上传中...'
+          //添加入参
+          formDate.append('file', item.file)
+          this.uploading(formDate, item)
+        })
+      } else {
+        file.status = 'uploading'
+        file.message = '上传中...'
+        //添加入参
+        formDate.append('file', file.file)
+        this.uploading(formDate, file)
+      }
+    },
+    async uploading(formDate, file) {
+      var res = await uploadImage(formDate)
+      if (res.code == '0000') {
+        file.status = 'success'
+        file.message = '成功'
+        this.$emit('getfileList', res.data)
+      } else {
+        file.status = 'failed'
+        file.message = '上传失败'
+      }
+      return res.code
+    },
+    deleteUploader(v, index) {
+      console.log(index, 'inde')
+      //   this.fileList.splice(index.index, 1)
+      this.$emit('getfileList', this.text, index.index)
+    },
+  },
+}
+</script>
+<style lang="scss" scoped>
+.cell {
+  border-bottom: 1px solid #eee;
+  margin-top: 16px;
+  font-size: 30px;
+  .van-col {
+    line-height: 80px;
+    min-height: 80px;
+  }
+  .van-cell {
+    padding: 0;
+    line-height: 80px;
+  }
+}
+.van-uploader {
+  /deep/.van-uploader__wrapper {
+    .van-uploader__upload {
+      width: 200px;
+      height: 200px;
+    }
+  }
+
+  /deep/.van-uploader__preview {
+    .van-uploader__file-icon,
+    .van-uploader__file-name {
+      display: none;
+    }
+    .van-image {
+      width: 200px;
+      height: 200px;
+    }
+    width: 200px;
+    height: 200px;
+  }
+  .none-box {
+    img {
+      width: 200px;
+      height: 200px;
+    }
+  }
+}
+</style>

+ 9 - 8
src/views/weibao/views/consultation/index.vue

@@ -31,9 +31,9 @@
             <van-image fit="cover" :src="getpics(item.pics)" alt="" />
           </div>
           <div class="text">
-            <p class="title">会商议题:{{item.name}}</p>
-            <p class="mes">会商时间:{{item.workDate}}</p>
-            <p class="date">发起单位:{{item.orgName}}</p>
+            <p class="title">会商议题{{item.name}}</p>
+            <p class="mes">会商时间{{item.workDate}}</p>
+            <p class="date">发起单位{{item.orgName}}</p>
           </div>
         </div>
       </van-list>
@@ -70,8 +70,7 @@ export default {
   },
   methods: {
     onLoad() {
-      this.loading = true
-      this.finished = false
+      this.consultationPage()
     },
     changactive(v) {
       console.log(v)
@@ -82,16 +81,17 @@ export default {
     changetabs() {},
     async consultationPage() {
       const res = await consultationPage(this.historyform)
+      this.loading = false
       if (this.historyform.pageNum == 1) {
         this.historyList = res.data.records
       } else {
-        console.log(this.historyform.pageNum, 'this.historyform.pageNum')
         this.historyList = this.historyList.concat(res.data.records)
       }
       if (this.historyList.length >= res.data.total) {
         this.finished = true
       } else {
-        this.loading = false
+        this.historyform.pageNum++
+        this.finished = false
       }
     },
     getpics(item) {
@@ -152,7 +152,8 @@ export default {
       text-overflow: ellipsis;
       font-size: 30px;
     }
-    .mes {
+    .mes,
+    .date {
       font-size: 26px;
     }
     p {

+ 1 - 1
src/views/weibao/views/followUp/plan.vue

@@ -2,7 +2,7 @@
   <div>
     <div class="list" v-for="item in planList" :key="item.id">
       <div class="img">
-        <img class="tx" src="../../assets/tx.png" alt="">
+        <img class="tx" :src="item.photoImgUrl?item.photoImgUrl:require('../../assets/tx.png')" alt="">
         <img v-if="item.followNum == 0" class="warning" src="../../assets/warning.png" alt="">
       </div>
       <div class="text">

+ 13 - 10
src/views/weibao/views/followUp/record.vue

@@ -79,16 +79,20 @@
           </van-col>
         </van-row>
         <van-row class="cell">
-          <van-col span="6">图片视频:</van-col>
+          <van-col span="6">图片:</van-col>
           <van-col span="18">
-            <div class="box" ref="boxlist">
-              <div class="boxlist">
-                <div v-for="(item,index) in form.fileList" :key="index">
-                  <img v-if="item.type.indexOf('image') !== -1" :src="item.url" alt="">
-                  <video v-else style="object-fit:cover;" :src="item.url" poster='../../assets/video.png'></video>
-                </div>
-              </div>
-              <van-uploader v-model="fileList" accept="*" :after-read="afterRead" @delete='deleteUploader'>
+            <div class="box">
+              <van-uploader v-model="fileList" accept="image/*" :after-read="afterRead" @delete='deleteUploader'>
+              </van-uploader>
+            </div>
+          </van-col>
+        </van-row>
+        <van-row class="cell">
+          <van-col span="6">视频:</van-col>
+          <van-col span="18">
+            <div class="box">
+              <van-uploader v-model="fileList" accept="video/*" :after-read="afterRead" @delete='deleteUploader'>
+              
               </van-uploader>
             </div>
           </van-col>
@@ -207,7 +211,6 @@ export default {
     async getStreetList() {
       const res = await getStreetList()
       this.streetList = res.data
-      console.log(this.streetList, 'this.streetList')
     },
     async afterRead(file) {
       console.log(file.file)

+ 51 - 31
src/views/weibao/views/loveHelp/details.vue

@@ -84,32 +84,33 @@
             <van-field class="textarea" :rules="[{ required: true}]" :disabled="id!=undefined" v-model="form.content" rows="1" type="textarea" placeholder="请输入活动详情" />
           </van-col>
         </van-row>
-        <van-row v-if="!id" class="cell">
-          <van-col span="6">图片视频:</van-col>
-          <van-col span="18">
-            <div class="box" ref="boxlist">
-              <div class="boxlist">
-                <div v-for="(item,index) in form.fileList" :key="index">
-                  <img v-if="item.type.indexOf('image') !== -1" :src="item.url" alt="">
-                  <video v-else style="object-fit:cover;" :src="item.url" poster='../../assets/video.png'></video>
-                </div>
+        <div v-if="!id">
+          <vanUploader :text="'图片'" @getfileList="getfileList"></vanUploader>
+          <vanUploader :text="'视频'" @getfileList="getfileList"></vanUploader>
+        </div>
+        <div v-else class="imgvideo">
+          <div>
+            <p>照片:</p>
+            <div class="boximg">
+              <div v-for="(item,index) in pics" :key="index">
+                <van-image fit="contain" :src="item" alt="" @click="showPopup" />
               </div>
-              <van-uploader v-model="fileList" accept="*" :after-read="afterRead" @delete='deleteUploader'>
-              </van-uploader>
             </div>
-          </van-col>
-        </van-row>
-        <div v-else class="imgvideo">
-          <p>图片视频:</p>
-          <div class="boximg">
-            <div v-for="(item,index) in appendFile" :key="index">
-              <van-image v-if="item.indexOf('.png')==-1||item.indexOf('.jpg')==-1" fit="contain" :src="item" alt="" @click="showPopup" />
-              <video v-else @click="showvideoplay=true" style="object-fit:cover;" :src="item"></video>
+            <van-image-preview v-model="show" :images="pics"></van-image-preview>
+          </div>
+          <div>
+            <p>视频:</p>
+            <div class="boximg">
+              <div v-for="(item,index) in videos" :key="index">
+                <video @click="showvideoplay=true,videourl=item" style="object-fit:cover;" :src="item" poster='../../assets/video.png'></video>
+              </div>
             </div>
           </div>
-          <van-image-preview v-model="show" :images="appendFile"></van-image-preview>
         </div>
       </div>
+      <van-dialog style="width:100%;border-radius:0;height:200px" v-model="showvideoplay" :show-cancel-button="false" :show-confirm-button="false" closeOnClickOverlay>
+        <video controls preload="auto" style="width:100%;height:200px;object-fit: contain;" :src="videourl" v-if="videourl"></video>
+      </van-dialog>
       <div style="text-align:center;" v-if="!id">
         <van-button native-type="submit">确 定</van-button>
       </div>
@@ -125,9 +126,12 @@ import {
   getStreetList,
   lovingHelpDetail,
 } from '../../api/index.js'
+import vanUploader from '../../components/vanUploader.vue'
 export default {
+  components: { vanUploader },
   data() {
     return {
+      showvideoplay: false,
       streetshowPopup: false,
       streetShow: false,
       show: false,
@@ -149,6 +153,8 @@ export default {
       childList: [],
       id: '',
       orgId: '',
+      pics: [],
+      videos: [],
     }
   },
   created() {
@@ -189,8 +195,9 @@ export default {
     async lovingHelpDetail() {
       const res = await lovingHelpDetail({ id: this.id })
       this.form = res.data
-      if (!res.data.pics) return
-      this.appendFile = this.form.pics.split(',')
+      this.pics = res.data.pics.split(',')
+      if (!res.data.videos) return
+      this.videos = res.data.videos.split(',')
     },
     async listChildInfoByName() {
       if (!this.positionSearch) return
@@ -218,13 +225,28 @@ export default {
       this.childList = []
       this.positionSearch = ''
     },
+    getfileList(v, index) {
+      if (index == undefined) {
+        if (v.indexOf('.png') != -1 || v.indexOf('.jpg') != -1) {
+          this.pics.push(v)
+        } else {
+          this.videos.push(v)
+        }
+      } else {
+        if (v == '图片') {
+          this.pics.splice(index, 1)
+        } else {
+          this.videos.splice(index, 1)
+        }
+      }
+    },
     async lovingHelpSave() {
-      var appendFile = []
-      this.form.fileList.forEach((item) => {
-        appendFile.push(item.url)
-      })
-
-      this.form.pics = appendFile.join(',')
+      if (this.pics.length == 0) {
+        this.$toast.fail('请选择至少一张图片')
+        return
+      }
+      this.form.pics = this.pics.join(',')
+      this.form.videos = this.videos.join(',')
       var data = JSON.parse(JSON.stringify(this.form))
       data.workDate = data.workDate + ' 00:00:00'
       const res = await lovingHelpSave(data)
@@ -415,11 +437,9 @@ export default {
   -webkit-text-fill-color: unset;
 }
 .imgvideo {
-  //   padding: 0 30px;
   font-size: 30px;
   text-align: left;
   margin-bottom: 30px;
-
   .boximg {
     min-height: 100px;
     border: 1px solid #eee;
@@ -431,7 +451,7 @@ export default {
     // justify-content: space-between;
     .van-image {
       max-width: 200px;
-      max-height: 200px;
+      //   max-height: 200px;
       //   margin-right: 16px;
       margin: 0 10px;
       margin-bottom: 16px;

+ 3 - 5
src/views/weibao/views/loveHelp/index.vue

@@ -48,17 +48,17 @@ export default {
   methods: {
     async lovingHelpPage() {
       const res = await lovingHelpPage(this.form)
+      this.loading = false
       if (this.form.pageNum == 1) {
         this.dataList = res.data.records
       } else {
-        this.dataList = this.newsList.concat(res.data.records)
+        this.dataList = this.dataList.concat(res.data.records)
       }
       this.form.pageNum = this.form.pageNum + 1
       if (this.dataList.length >= res.data.total) {
-        console.log(this.dataList.length, 'this.dataList.length')
         this.finished = true
       } else {
-        this.loading = false
+        this.finished = false
       }
     },
     onLoad() {
@@ -71,7 +71,6 @@ export default {
       this.lovingHelpPage()
     },
     getpics(item) {
-      console.log(item)
       if (!item) return this.bgimg
       var url = ''
       var arr = item.split(',')
@@ -82,7 +81,6 @@ export default {
           return
         }
       })
-      console.log(url, 'url')
       return url
     },
   },

+ 30 - 10
src/views/weibao/views/reporting/index.vue

@@ -2,7 +2,7 @@
   <div>
     <van-nav-bar title="强制报告" @click-left="$router.back()" left-arrow fixed placeholder safe-area-inset-top />
     <div class="box" v-if="roleIdStr==14||roleIdStr==15">
-      <van-tabs v-model="active" @change="changetabs">
+      <van-tabs v-model="active" @change="changetabs" sticky offset-top="46">
         <van-tab title="发起报告">
           <initiateConsultation @changactive="changactive"></initiateConsultation>
         </van-tab>
@@ -10,11 +10,14 @@
           <div class="casebox">
             <van-list v-model="loading" :immediate-check="false" :finished="finished" finished-text="没有更多了" @load="onLoad">
               <div class="list" v-for="item in historyList" :key="item.id" @click="$router.push({path:'/reporting/details',query:{id:item.id}})">
+                <div class="img">
+                  <van-image fit="cover" :src="getpics(item.appendFile)" alt="" />
+                </div>
                 <div class="text">
-                  <p class="title">报告事件:{{item.event}}</p>
-                  <p class="mes">报告人:{{item.operator}}</p>
-                  <p class="date">报告时间:{{item.mandatoryDate}}</p>
-                  <p class="date">报告简介:{{item.content}}</p>
+                  <p class="title">报告事件{{item.event}}</p>
+                  <p class="mes">报告人{{item.operator}}</p>
+                  <p class="date">报告时间{{item.mandatoryDate}}</p>
+                  <p class="date">报告简介{{item.content}}</p>
                 </div>
               </div>
             </van-list>
@@ -26,10 +29,10 @@
       <van-list v-model="loading" :immediate-check="false" :finished="finished" finished-text="没有更多了" @load="onLoad">
         <div class="list" v-for="item in historyList" :key="item.id" @click="$router.push({path:'/reporting/details',query:{id:item.id}})">
           <div class="text">
-            <p class="title">报告事件:{{item.event}}</p>
-            <p class="mes">报告人:{{item.operator}}</p>
-            <p class="date">报告时间:{{item.mandatoryDate}}</p>
-            <p class="date">报告简介:{{item.content}}</p>
+            <p class="title">报告事件{{item.event}}</p>
+            <p class="mes">报告人{{item.operator}}</p>
+            <p class="date">报告时间{{item.mandatoryDate}}</p>
+            <p class="date">报告简介{{item.content}}</p>
           </div>
         </div>
       </van-list>
@@ -43,6 +46,7 @@ export default {
   components: { initiateConsultation },
   data() {
     return {
+      bgimg: require('../../assets/newsbg.png'),
       roleIdStr: JSON.parse(sessionStorage.getItem('userInfo')).roleIdStr,
       active: 0,
       value: '',
@@ -76,6 +80,7 @@ export default {
     changetabs() {},
     async mandatoryPage() {
       const res = await mandatoryPage(this.historyform)
+      this.loading = false
       if (this.historyform.pageNum == 1) {
         this.historyList = res.data.records
       } else {
@@ -84,9 +89,21 @@ export default {
       if (this.historyList.length >= res.data.total) {
         this.finished = true
       } else {
-        this.loading = false
+        this.finished = false
       }
     },
+    getpics(item) {
+      if (!item) return this.bgimg
+      var url = ''
+      var arr = item.split(',')
+      arr.forEach((item, index) => {
+        if (item.indexOf('.jpg') || item.indexOf('.png')) {
+          url = arr[index]
+          return
+        }
+      })
+      return url
+    },
   },
 }
 </script>
@@ -139,6 +156,9 @@ export default {
     p {
       margin: 0;
       margin-bottom: 16px;
+      overflow: hidden;
+      white-space: nowrap;
+      text-overflow: ellipsis;
     }
   }
 }

+ 21 - 17
src/views/weibao/views/reporting/initiateConsultation.vue

@@ -46,22 +46,8 @@
             <van-field class="textarea" v-model="form.content" :rules="[{ required: true}]" rows="1" type="textarea" placeholder="请输入报告内容" />
           </van-col>
         </van-row>
-        <van-row class="cell">
-          <van-col span="6">图片视频:</van-col>
-          <van-col span="18">
-            <div class="box" ref="boxlist">
-              <div class="boxlist">
-                <div v-for="(item,index) in form.fileList" :key="index">
-                  <img v-if="item.type.indexOf('image') !== -1" :src="item.url" alt="">
-                  <video v-else style="object-fit:cover;" :src="item.url" poster='../../assets/video.png'></video>
-                </div>
-              </div>
-              <van-uploader v-model="fileList" accept="*" :after-read="afterRead" @delete='deleteUploader'>
-              </van-uploader>
-            </div>
-
-          </van-col>
-        </van-row>
+        <vanUploader :text="'图片'" @getfileList="getfileList"></vanUploader>
+        <vanUploader :text="'视频'" @getfileList="getfileList"></vanUploader>
       </div>
       <div style="text-align:center;">
         <van-button native-type="submit">确 定</van-button>
@@ -76,7 +62,9 @@ import {
   getStreetList,
   organizationList,
 } from '../../api/index.js'
+import vanUploader from '../../components/vanUploader.vue'
 export default {
+  components: { vanUploader },
   data() {
     return {
       streetshowPopup: false,
@@ -109,11 +97,27 @@ export default {
     })
   },
   created() {
-    console.log('123')
     this.getStreetList()
     this.organizationList()
   },
   methods: {
+    getfileList(v, index) {
+      console.log(v)
+      console.log(index)
+      if (index == undefined) {
+        if (v.indexOf('.png') != -1 || v.indexOf('.jpg') != -1) {
+          this.imgUrl.push(v)
+        } else {
+          this.multiMediaUrl.push(v)
+        }
+      } else {
+        if (v == '图片') {
+          this.imgUrl.splice(index, 1)
+        } else {
+          this.multiMediaUrl.splice(index, 1)
+        }
+      }
+    },
     validator(val) {
       return /^1(3|4|5|6|7|8|9)\d{9}$/.test(val)
     },

+ 16 - 11
src/views/weibao/views/specialServices/details.vue

@@ -46,14 +46,21 @@
           </div>
         </div>
         <div>
-          <p>照片与视频:</p>
+          <p>照片:</p>
           <div class="boximg">
-            <div v-for="(item,index) in appendFile" :key="index">
-              <van-image v-if="item.indexOf('.png')!=-1||item.indexOf('.jpg')!=-1" fit="contain" :src="item" alt="" @click="showPopup" />
-              <video v-else @click="showvideoplay=true,videourl=item" style="object-fit:cover;" :src="item" poster='../../assets/video.png'></video>
+            <div v-for="(item,index) in imgUrl" :key="index">
+              <van-image fit="contain" :src="item" alt="" @click="showPopup" />
+            </div>
+          </div>
+          <van-image-preview v-model="show" :images="imgUrl"></van-image-preview>
+        </div>
+        <div>
+          <p>视频:</p>
+          <div class="boximg">
+            <div v-for="(item,index) in multiMediaUrl" :key="index">
+              <video @click="showvideoplay=true,videourl=item" style="object-fit:cover;" :src="item" poster='../../assets/video.png'></video>
             </div>
           </div>
-          <van-image-preview v-model="show" :images="filterimg()"></van-image-preview>
         </div>
         <van-dialog style="width:100%;border-radius:0;height:200px" v-model="showvideoplay" :show-cancel-button="false" :show-confirm-button="false" closeOnClickOverlay>
           <video controls preload="auto" style="width:100%;height:200px;object-fit: contain;" :src="videourl" v-if="videourl"></video>
@@ -71,6 +78,8 @@ export default {
       searchshow: false,
       showvideoplay: false,
       appendFile: [],
+      imgUrl: [],
+      multiMediaUrl: '',
       form: {
         fileList: [],
       },
@@ -92,13 +101,9 @@ export default {
       const res = await getProjectHistory({ id: this.id })
       this.form = res.data
       this.address = this.form.streetName + this.form.address
+      this.imgUrl = res.data.imgUrl.split(',')
       if (!res.data.multiMediaUrl) return
-      this.appendFile = this.form.multiMediaUrl.split(',')
-    },
-    filterimg() {
-      var img = this.appendFile.filter((item) => item.indexOf('mp4') < 0)
-      console.log(img, 'img')
-      return img
+      this.multiMediaUrl = res.data.multiMediaUrl.split(',')
     },
   },
 }

+ 6 - 6
src/views/weibao/views/specialServices/index.vue

@@ -56,8 +56,6 @@ export default {
       this.pageProjectHistory()
     },
     onLoad() {
-      this.loading = true
-      this.finished = false
       if (this.active == 0) {
         this.planform.pageNum = this.planform.pageNum + 1
         this.pageAppProject()
@@ -67,6 +65,8 @@ export default {
       }
     },
     changetabs() {
+      this.loading = false
+      this.finished = false
       if (this.active == 0) {
         this.planform.pageNum = 1
         this.pageAppProject()
@@ -77,30 +77,30 @@ export default {
     },
     async pageAppProject() {
       const res = await pageAppProject(this.planform)
+      this.loading = false
       if (this.planform.pageNum == 1) {
         this.planformList = res.data.records
-        console.log(this.planformList, 'this.planformList')
       } else {
         this.planformList = this.planformList.concat(res.data.records)
       }
       if (this.planformList.length >= res.data.total) {
         this.finished = true
       } else {
-        this.loading = false
+        this.finished = false
       }
     },
     async pageProjectHistory() {
       const res = await pageProjectHistory(this.historyform)
+      this.loading = false
       if (this.historyform.pageNum == 1) {
         this.historyList = res.data.records
       } else {
-        console.log(this.historyform.pageNum, 'this.historyform.pageNum')
         this.historyList = this.historyList.concat(res.data.records)
       }
       if (this.historyList.length >= res.data.total) {
         this.finished = true
       } else {
-        this.loading = false
+        this.finished = false
       }
     },
     // async pageAppProject() {

+ 22 - 6
src/views/weibao/views/specialServices/serviceComplete.vue

@@ -1,6 +1,9 @@
 <template>
   <div :class="roleIdStr==21?'div' :''">
     <div class="list" v-for="item in historyList" :key="item.id" @click="$router.push({path:'/specialServices/details',query:{id:item.historyId}})">
+      <div class="img">
+        <van-image fit="cover" :src="getpics(item.imgUrl)" alt="" />
+      </div>
       <div class="text">
         <div class="num"><span>服务内容:</span>
           <div class="over">{{item.content}}</div>
@@ -24,9 +27,24 @@ export default {
   props: ['historyList'],
   data() {
     return {
+      bgimg: require('../../assets/newsbg.png'),
       roleIdStr: JSON.parse(sessionStorage.getItem('userInfo')).roleIdStr,
     }
   },
+  methods: {
+    getpics(item) {
+      if (!item) return this.bgimg
+      var url = ''
+      var arr = item.split(',')
+      arr.forEach((item, index) => {
+        if (item.indexOf('.jpg') || item.indexOf('.png')) {
+          url = arr[index]
+          return
+        }
+      })
+      return url
+    },
+  },
 }
 </script>
 <style lang="scss" scoped>
@@ -38,18 +56,16 @@ export default {
   align-items: center;
   margin-bottom: 26px;
   padding: 0 30px;
-
   .img {
-    img {
-      width: 100px;
-      height: 100px;
-      border-radius: 50%;
+    .van-image {
+      width: 260px;
+      height: 160px;
     }
   }
   .text {
     text-align: left;
     margin-left: 26px;
-    width: calc(100% - 116px);
+    width: calc(100% - 300px);
     .title {
       overflow: hidden;
       white-space: nowrap;

+ 28 - 83
src/views/weibao/views/specialServices/startServiceplay.vue

@@ -91,22 +91,8 @@
             <van-field class="textarea" v-model="form.serviceRecord" :rules="[{ required: true}]" rows="1" type="textarea" placeholder="请输入服务记录" />
           </van-col>
         </van-row>
-        <van-row class="cell">
-          <van-col span="6">图片视频:</van-col>
-          <van-col span="18">
-            <div class="box" ref="boxlist">
-              <div class="boxlist">
-                <div v-for="(item,index) in form.fileList" :key="index">
-                  <img v-if="item.type.indexOf('image') !== -1" :src="item.url" alt="">
-                  <video v-else style="object-fit:cover;" :src="item.url" poster='../../assets/video.png'></video>
-                </div>
-              </div>
-              <van-uploader v-model="multiMediaUrl" accept="*" :after-read="afterRead" @delete='deleteUploader'>
-              </van-uploader>
-            </div>
-
-          </van-col>
-        </van-row>
+        <vanUploader :text="'图片'" @getfileList="getfileList"></vanUploader>
+        <vanUploader :text="'视频'" @getfileList="getfileList"></vanUploader>
       </div>
       <div class="but">
         <van-button native-type="submit">确 定</van-button>
@@ -118,11 +104,12 @@
 import {
   addProjectHistory,
   getStreetList,
-  uploadImage,
   listChildInfoByName,
   getEmployeeList,
 } from '../../api/index.js'
+import vanUploader from '../../components/vanUploader.vue'
 export default {
+  components: { vanUploader },
   data() {
     return {
       tionList: '',
@@ -130,10 +117,11 @@ export default {
       streetShow: false,
       serviceTargetShow: false,
       serviceShow: false,
+      imgUrl: [],
       multiMediaUrl: [],
       form: {
         fileList: [],
-        serviceTarget: '123',
+        serviceTarget: '',
       },
       streetList: '',
       servicetTime: new Date(),
@@ -243,12 +231,28 @@ export default {
       this.form.servicetTime = this.timeFormat(v)
       this.show = false
     },
+    getfileList(v, index) {
+      if (index == undefined) {
+        if (v.indexOf('.png') != -1 || v.indexOf('.jpg') != -1) {
+          this.imgUrl.push(v)
+        } else {
+          this.multiMediaUrl.push(v)
+        }
+      } else {
+        if (v == '图片') {
+          this.imgUrl.splice(index, 1)
+        } else {
+          this.multiMediaUrl.splice(index, 1)
+        }
+      }
+    },
     async addProjectHistory() {
-      var appendFile = []
-      this.form.fileList.forEach((item) => {
-        appendFile.push(item.url)
-      })
-      this.form.multiMediaUrl = appendFile.join(',')
+      if (this.imgUrl.length == 0) {
+        this.$toast.fail('请选择至少一张图片')
+        return
+      }
+      this.form.multiMediaUrl = this.multiMediaUrl.join(',')
+      this.form.imgUrl = this.imgUrl.join(',')
       var data = JSON.parse(JSON.stringify(this.form))
       data.servicetTime = data.servicetTime + ' 00:00:00'
       const res = await addProjectHistory(data)
@@ -262,35 +266,6 @@ export default {
       this.streetList = res.data
       console.log(this.streetList, 'this.streetList')
     },
-    async afterRead(file) {
-      console.log(file.file)
-      file.status = 'uploading'
-      file.message = '上传中...'
-      let formDate = new FormData()
-      //添加入参
-      formDate.append('file', file.file)
-      const res = await uploadImage(formDate)
-      if (res.code == '0000') {
-        file.status = 'success'
-        file.message = '成功'
-        this.form.fileList.push({
-          url: res.data,
-          type: file.file.type,
-        })
-        // 上传图片 设置col高度
-        if (this.form.fileList.length % 2 == 0) {
-          var index = 3.2 * (this.form.fileList.length / 2 + 1) + 'rem'
-          this.$refs.boxlist.style.height = index
-        }
-      } else {
-        file.status = 'failed'
-        file.message = '上传失败'
-      }
-    },
-    deleteUploader(v, index) {
-      console.log(index)
-      this.form.fileList.splice(index.index, 1)
-    },
   },
 }
 </script>
@@ -359,13 +334,9 @@ export default {
   margin-top: 25px;
 }
 .box {
-  position: relative;
-  height: 240px;
+  min-height: 240px;
   .boxlist {
     display: flex;
-    position: absolute;
-    top: 0;
-    left: 0;
     flex-wrap: wrap;
     div {
       width: 200px;
@@ -383,32 +354,6 @@ export default {
     }
     // background-color: chocolate;
   }
-  .van-uploader {
-    position: absolute;
-    top: 0;
-    left: 0;
-    /deep/.van-uploader__wrapper {
-      .van-uploader__upload {
-        width: 200px;
-        height: 200px;
-      }
-    }
-
-    /deep/.van-uploader__preview {
-      margin: 20px;
-      .van-uploader__file {
-        opacity: 0;
-      }
-      .van-image {
-        width: 200px;
-        height: 200px;
-        opacity: 0;
-        // margin: 20px;
-      }
-      width: 200px;
-      height: 200px;
-    }
-  }
 }
 .serviceTarget {
   min-height: 80px;

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini