sunran 3 жил өмнө
parent
commit
cce0fd1ced

+ 9 - 1
src/views/weibao/components/vanUploader.vue

@@ -4,7 +4,7 @@
       <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 v-if="text=='图片'" :before-read="beforeRead" multiple v-model="imgUrl" accept="image/png,image/jpeg,image/jpg" :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 }">
@@ -44,6 +44,14 @@ export default {
     }
   },
   methods: {
+    // 返回布尔值
+    beforeRead(file) {
+      if (file.type !== 'image/jpeg' || file.type !== 'image/png') {
+        this.$toast('请上传 jpg/png 格式图片')
+        return false
+      }
+      return true
+    },
     afterRead(file) {
       let formDate = new FormData()
       if (file.length) {

+ 23 - 46
src/views/weibao/views/followUp/addfollow.vue

@@ -114,22 +114,8 @@
             <van-field class="textarea" :rules="[{ required: true}]" v-model="form.remark" 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 style="text-align:center;">
           <van-button native-type="submit" :disabled="disabled">确 定</van-button>
         </div>
@@ -145,7 +131,9 @@ import {
   uploadImage,
   listChildInfoByName,
 } from '../../api/index.js'
+import vanUploader from '../../components/vanUploader.vue'
 export default {
+  components: { vanUploader },
   data() {
     return {
       show: false,
@@ -162,6 +150,8 @@ export default {
       maxDate: new Date(2025, 10, 1),
       positionSearch: '',
       childList: [],
+      pics: [],
+      videos: [],
     }
   },
   created() {
@@ -233,11 +223,12 @@ export default {
       this.show = false
     },
     async saveFollowUp(values) {
-      var appendFile = []
-      this.form.fileList.forEach((item) => {
-        appendFile.push(item.url)
-      })
-      this.form.appendFile = 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.followDate = data.followDate + ' 00:00:00'
       const res = await saveFollowUp(data)
@@ -251,35 +242,21 @@ export default {
       this.streetList = res.data
     },
     getPositionList() {},
-    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
+    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 {
-        file.status = 'failed'
-        file.message = '上传失败'
+        if (v == '图片') {
+          this.pics.splice(index, 1)
+        } else {
+          this.videos.splice(index, 1)
+        }
       }
     },
-    deleteUploader(v, index) {
-      console.log(index)
-      this.form.fileList.splice(index.index, 1)
-    },
   },
 }
 </script>

+ 17 - 12
src/views/weibao/views/followUp/details.vue

@@ -39,14 +39,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" style="object-fit:cover;" :src="item" poster='../../assets/video.png'></video>
+          <div v-for="(item,index) in pics" :key="index">
+            <van-image fit="contain" :src="item" alt="" @click="showPopup" />
+          </div>
+        </div>
+        <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>
-        <van-image-preview v-model="show" :images="appendFile" @change="onChange"></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>
@@ -67,6 +74,8 @@ export default {
       images: [],
       dataList: '',
       appendFile: '',
+      pics: [],
+      videos: [],
     }
   },
   created() {
@@ -77,13 +86,9 @@ export default {
     async followUpHistoryDetail() {
       const res = await followUpHistoryDetail({ id: this.id })
       this.dataList = res.data
-      if (!res.data.appendFile) return
-      this.appendFile = res.data.appendFile.split(',')
-      //   appendFile.forEach(item => {
-      //       if(){
-
-      //       }
-      //   });
+      this.pics = res.data.pics.split(',')
+      if (!res.data.videos) return
+      this.videos = res.data.videos.split(',')
     },
     showPopup() {
       this.show = true

+ 6 - 1
src/views/weibao/views/followUp/director.vue

@@ -48,19 +48,23 @@ export default {
     }
   },
   activated() {
+    this.loading = true
     this.followUpPage()
     this.historyFollowUp()
   },
   methods: {
     async followUpPage() {
+      console.log(this.followUpform.pageNum, 'this.followUpform.pageNum')
       const res = await followUpPage(this.followUpform)
       this.loading = false
       if (this.followUpform.pageNum == 1) {
+        console.log(this.followUpform.pageNum, 'this.followUpform.pageNum')
         this.planList = res.data.records
       } else {
+        console.log(this.followUpform.pageNum, 'this.followUpform.pageNum')
         this.planList = this.planList.concat(res.data.records)
       }
-      if (this.planList.length == res.data.total) {
+      if (this.planList.length >= res.data.total) {
         this.finished = true
       } else {
         this.finished = false
@@ -90,6 +94,7 @@ export default {
       }
     },
     changeonLoad() {
+      this.loading = true
       if (this.active == 0) {
         this.followUpform.pageNum = 1
         this.followUpPage()

+ 30 - 6
src/views/weibao/views/followUp/history.vue

@@ -1,10 +1,13 @@
 <template>
   <div :class="roleIdStr==14?'mt':''">
     <div class="list" v-for="item in historyList" :key="item.id" @click="$router.push({path:'/followUp/details',query:{id:item.id}})">
+      <div class="img">
+        <van-image fit="cover" :src="getpics(item.pics)" alt="" />
+      </div>
       <div class="text">
         <p class="title">{{item.name}}-{{item.sex}}-{{item.age}}<span class="mes">{{item.childTypeName}}</span></p>
         <p class="num">随访时间:{{item.followDate}}</p>
-        <p class="num">居住地址:{{item.address}}</p>
+        <p class="num adress">居住地址:{{item.address}}</p>
       </div>
     </div>
   </div>
@@ -15,9 +18,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>
@@ -29,22 +47,26 @@ export default {
   align-items: center;
   margin-bottom: 26px;
   .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;
       text-overflow: ellipsis;
       font-size: 30px;
     }
+    .adress {
+      overflow: hidden;
+      white-space: nowrap;
+      text-overflow: ellipsis;
+    }
     .mes {
       font-size: 26px;
       margin-left: 10px;
@@ -61,9 +83,11 @@ export default {
         border-radius: 8px;
       }
     }
+
     p {
       margin: 0;
       margin-bottom: 16px;
+      font-size: 26px;
     }
   }
   .van-button {

+ 8 - 1
src/views/weibao/views/followUp/historySupervisor.vue

@@ -40,13 +40,17 @@ export default {
     }
   },
   created() {
+    this.loading = true
     this.historyFollowUp()
   },
   methods: {
     async historyFollowUp() {
       const res = await historyFollowUp(this.historyform)
+      this.loading = false
+      console.log(this.historyform.pageNum, 'this.historyList')
       if (this.historyform.pageNum == 1) {
         this.historyList = res.data.records
+        console.log(this.historyList, 'this.historyList')
       } else {
         this.historyList = this.historyList.concat(res.data.records)
       }
@@ -54,10 +58,11 @@ export default {
       if (this.historyList.length >= res.data.total) {
         this.finished = true
       } else {
-        this.loading = false
+        this.finished = false
       }
     },
     onLoad() {
+      this.loading = true
       this.historyform.pageNum = this.historyform.pageNum + 1
       this.historyFollowUp()
     },
@@ -72,6 +77,8 @@ export default {
 .box {
   width: 100%;
   position: fixed;
+  background-color: #fff;
+  z-index: 9999;
 }
 .van-list {
   padding: 0 30px;

+ 23 - 52
src/views/weibao/views/followUp/record.vue

@@ -78,25 +78,8 @@
             <van-field class="textarea" :rules="[{ required: true}]" v-model="form.remark" 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">
-              <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>
-        </van-row>
+        <vanUploader :text="'图片'" @getfileList="getfileList"></vanUploader>
+        <vanUploader :text="'视频'" @getfileList="getfileList"></vanUploader>
       </div>
       <div class="but">
         <van-button native-type="submit" :disabled="disabled">确 定</van-button>
@@ -108,10 +91,11 @@
 import {
   saveFollowUp,
   getStreetList,
-  uploadImage,
   getChildInfo,
 } from '../../api/index.js'
+import vanUploader from '../../components/vanUploader.vue'
 export default {
+  components: { vanUploader },
   data() {
     return {
       show: false,
@@ -132,6 +116,8 @@ export default {
         id: 'id',
       },
       childInfo: '',
+      pics: [],
+      videos: [],
     }
   },
   created() {
@@ -192,13 +178,12 @@ export default {
       this.show = false
     },
     async saveFollowUp() {
-      var appendFile = []
-      this.form.fileList.forEach((item) => {
-        appendFile.push(item.url)
-      })
-
-      this.form.appendFile = appendFile.join(',')
-      console.log(this.form)
+      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.followDate = data.followDate + ' 00:00:00'
       const res = await saveFollowUp(data)
@@ -212,35 +197,21 @@ export default {
       const res = await getStreetList()
       this.streetList = res.data
     },
-    async afterRead(file) {
-      console.log(file.file)
-      //   this.$toast.success(file.file.type)
-      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
+    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 {
-        file.status = 'failed'
-        file.message = '上传失败'
+        if (v == '图片') {
+          this.pics.splice(index, 1)
+        } else {
+          this.videos.splice(index, 1)
+        }
       }
     },
-    deleteUploader(v, index) {
-      this.form.fileList.splice(index.index, 1)
-    },
   },
 }
 </script>

+ 0 - 2
src/views/weibao/views/reporting/initiateConsultation.vue

@@ -102,8 +102,6 @@ export default {
   },
   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)

+ 3 - 3
src/views/weibao/views/specialServices/serviceComplete.vue

@@ -5,7 +5,7 @@
         <van-image fit="cover" :src="getpics(item.imgUrl)" alt="" />
       </div>
       <div class="text">
-        <div class="num"><span>服务内容:</span>
+        <div class="num title"><span>服务内容:</span>
           <div class="over">{{item.content}}</div>
         </div>
         <div class="num"><span>服务对象:</span>
@@ -70,7 +70,7 @@ export default {
       overflow: hidden;
       white-space: nowrap;
       text-overflow: ellipsis;
-      font-size: 30px;
+      font-size: 30px !important;
     }
     .mes {
       font-size: 26px;
@@ -80,7 +80,7 @@ export default {
       color: #ff3b30;
     }
     .num {
-      font-size: 30px;
+      font-size: 26px;
       display: flex;
       //   justify-content: space-between;
       align-items: center;