Ver código fonte

图片上传接口及保存

zhouna 5 anos atrás
pai
commit
672be4daaa
4 arquivos alterados com 60 adições e 10 exclusões
  1. 52 7
      src/common/UploadImg.vue
  2. 1 0
      src/components/MainPage.vue
  3. 4 3
      src/components/Preview.vue
  4. 3 0
      src/store.js

+ 52 - 7
src/common/UploadImg.vue

@@ -42,6 +42,7 @@
 import {isIos,isWX,isQQ} from '../utils/tools';
 import api from '../utils/api.js';
 import $ from 'jquery';
+import {mapState} from 'vuex';
 export default {
   name: 'UploadImg',
   data() {
@@ -54,6 +55,11 @@ export default {
     }
   },
   props: ['item', 'moduleType', 'imgList','num'],
+  computed:{
+    ...mapState({
+      imgUpList: state => state.diagnose.imgFile,
+    }),
+  },
   mounted() {
     this.imgs = this.imgList; //回读
     this.imgLen = Object.keys(this.imgList).length;
@@ -72,19 +78,58 @@ export default {
     }
   },
   methods: {
-    saveAllImage() {
+    async saveAllImage() {
       let n = this.num;
+      let uploadFail = false;
+      const data = await this.uploadImgs(this.$store.state.diagnose.imgFile).then((res)=>{
+        let data = res.data;
+        if (data.code == 0) {//图片提交成功再保存数据
+          this.saveImgs(data);
+        } else {//提交失败提示
+          this.$emit('warning',data.msg);
+          uploadFail=true;
+        }
+      });
+      if(uploadFail){   //上传失败,暂停
+        return;
+      }
       if(Object.keys(this.imgs).length===0){
         return;
       }
       this.$emit("updataResult",this.item,{val:this.imgs,valp:this.imgs},++n);
     },
-    /*handleUpload() {
-      const inp = this.$refs.inp;
-      if(this.flag){
-        inp.click();
+    uploadImgs() {
+      const imgList = this.imgUpList;
+     return new Promise((resolve,reject)=>{
+        let formData = new FormData();
+        if (imgList.length > 0) {//有图片先上传图片
+          for (let i = 0; i < imgList.length; i++) {
+            let pageFile = imgList[i].file;
+            formData.append('upfiles', imgList[i].file);
+            formData.append('type', imgList[i].type);
+          }
+          api.uploadImageThums(formData).then((res) => {//获取图片
+              resolve(res)
+          }).catch((err)=>{
+            this.$emit('warning','上传失败,请稍后重试!');
+          });
+        }
+      });
+    },
+    saveImgs(data){
+      const imgList = this.imgUpList;
+      let reportList = [];
+      let result = data.data;
+      for(let i = 0;i < result.length;i++){
+        let obg = {}
+        obg.originalImage = result[i].url+'?width='+imgList[i].imgWidth+'&height='+imgList[i].imgHeight
+        obg.originalName = result[i].original
+        obg.orderNum = i+1
+        obg.type = result[i].type
+        reportList.push(obg)
       }
-    },*/
+      this.$store.commit("setUploadImgs",reportList);
+    },
     delImg(key) {
       let obj = this.imgs;
       delete (obj[key]);
@@ -125,7 +170,7 @@ export default {
           that.imgLen++;
           // 将图片信息存到store
           that.$store.commit('setImgFile', { type: that.moduleType, pId: that.item.id, key: key, file: uploadFile,imgWidth:imgWidth, imgHeight:imgHeight})
-          that.$store.commit('setImgSrc', { key: key, src: uploadSrc, type: that.moduleType })
+          that.$store.commit('setImgSrc', { key: key, src: uploadSrc, type: that.moduleType });
           that.$previewRefresh(); //异步获取的图片需要刷新下
         }
         // that.$refs.inp.value = '';

+ 1 - 0
src/components/MainPage.vue

@@ -64,6 +64,7 @@
                :num="num"
                :item="symptomResult"
                :moduleType="symptomResult.type"
+               @warning="showWarn"
                @updataResult="updataResultSingle"
                :imgList="imgs"/>
     <!-- 输入框 -->

+ 4 - 3
src/components/Preview.vue

@@ -166,7 +166,7 @@ export default {
       symLast:"",     //除主诉伴随剩余的症状详情内容
       submit: false,
       showType: 'fail',
-      imgList:[],
+      //imgList:[],
       tmpNum:0,
       moduleCP:moduleCP,
       showDoc:false,
@@ -177,10 +177,11 @@ export default {
     ...mapState({
       tabType: state => state.tabType,
       config: state => state.sysConfig,
-      addBuriedSomeList:state=>state.addBuriedSomeList
+      addBuriedSomeList:state=>state.addBuriedSomeList,
+      imgList:state=>state.uploadImgs
     })
   },
-  created(){console.log(this.$store.state)
+  created(){
     this.getTime();
     if (this.config.length == 0) {//登录进去返回到列表页,扫码返回到开始页
       let scan = localStorage.getItem('scan');

+ 3 - 0
src/store.js

@@ -473,6 +473,9 @@ const store = new Vuex.Store({
       state.diagnose.imgFile=[];
       state.diagnose.imgSrc = {};
     },
+    setUploadImgs(state,list){
+      state.uploadImgs=list;
+    },
     deleSrc(state,param){
       const key = param.key;
       const type = parseInt(param.type);