Răsfoiți Sursa

Merge branch 'dev' of http://www.baoxianzhanggui.com:8090/sxzgd/vue-insagent-pc into dev

lihongxiao 1 an în urmă
părinte
comite
a91f3cfcf2

+ 9 - 0
src/http/moudules/letter.js

@@ -1357,4 +1357,13 @@ export const getProductInfo = (data) => {
      url: '/subOrder/readPdfUrlList?subOrderId=' + params,
      method: 'get',
     })
+   }
+
+  //  补传影像
+  export const allSubmitImage = (data) => {
+    return axios({
+     url: '/quote/submitImage',
+     method: 'post',
+     data
+    })
    }

+ 9 - 2
src/views/AgreementManage/CarInsurance/AgreementUnderwritingRule.vue

@@ -83,7 +83,7 @@
       </div>
     </el-dialog>
 
-    <el-dialog title="协议承保规则复制" :visible.sync="showCopyDialog" width="60%">
+    <el-dialog title="协议承保规则复制" :visible.sync="showCopyDialog" width="60%" @closed="closeCopyDialog">
       <div style="padding: 30px;">
         <el-form>
           <el-form-item label="协议选择">
@@ -107,7 +107,7 @@
       </div>
       <span slot="footer" class="dialog-footer">
         <el-button size="small" style="background: #EAEDF1;color: #2D4D89;"
-          @click="showCopyDialog = false">取 消</el-button>
+          @click="closeCopyDialog">取 消</el-button>
         <el-button size="small" style="background: #2D4D89;color: #fff;border-color: #2D4D89;" type="primary"
           @click="subCopyDialog">确 定</el-button>
       </span>
@@ -262,6 +262,13 @@ export default {
     handleSelectionChange(val) {
       this.selectionList = val
     },
+    closeCopyDialog() {
+      this.copyAgreementId = ''
+      this.selectionList = []
+      this.copyTableDataList = []
+      this.allAgreementList = []
+      this.showCopyDialog = false
+    },
     copyAgreementIdChange() {
       this.$api.insCompany.rulesList({
         agreementId: this.copyAgreementId

+ 488 - 10
src/views/Core/components/detailsDialog.vue

@@ -252,7 +252,9 @@
             <OpenCloseBox id="xzxx">
               <span slot="title">险种信息</span>
               <span slot="extension" style="color: #2D4D89;margin-right: 10px;"
-                @click="imageQuery('allImageVisible')">全部影像</span>
+                @click="imageQuery('imageUploaddialogVisible')">全部影像</span>
+                <!-- @click="imageQuery('allImageVisible')">全部影像</span> -->
+                
               <div slot="boby">
                 <div class="quotation-style kind-arrears">
                   <b>产品类型</b>
@@ -1019,7 +1021,7 @@
           style="background: #EAEDF1;color:#D42426;border-color:#EAEDF1">关闭</el-button>
       </span>
     </el-dialog>
-    <el-dialog title="全部影像" :visible.sync="allImageVisible" width="50%" v-if="obj && obj.carImageList">
+    <!-- <el-dialog title="全部影像" :visible.sync="allImageVisible" width="50%" v-if="obj && obj.carImageList">
       <el-row>
         <el-col :span="4">
           <div class="tab-style">
@@ -1116,13 +1118,184 @@
         <el-button size="small" @click="allImageVisible = false"
           style="background: #EAEDF1;color:#D42426;border-color:#EAEDF1">关闭</el-button>
       </span>
+    </el-dialog> -->
+
+    <!-- 影像上传 -->
+    <el-dialog title="全部影像" :visible.sync="imageUploaddialogVisible" width="50%">
+      <el-row>
+        <el-col :span="4">
+          <div class="tab-style">
+            <li class="liMenu" :class="idx == tabLiIndex ? 'tabLi-style' : ''" @click="tabLiScroll(item.scroll, idx)"
+              v-for="(item, idx) in tabLimenu" :key="idx">
+              {{ item.name }}
+            </li>
+          </div>
+        </el-col>
+        <el-col :span="20" style="height: 320px; overflow-y: auto">
+          <div class="flex" id="vehicle">
+            <div class="aaa">
+              <span>1.行驶证主页</span>
+              <el-upload action="#" list-type="picture-card" :auto-upload="false" :limit="1" drag :on-change="(file) => drivingupload(file, 'imageList1', 'imgList1', 'C01')
+                " :file-list="imgList1" ref="upload1" :class="{ styleB: imgList1.length == 1 }">
+                <img v-show="imgList1.length == 0" src="../../../../static/carfront.png"
+                  style="width: 100%; height: 100%" />
+                <div slot="file" slot-scope="{ file }" v-if="imgList1.length > 0">
+                  <img class="el-upload-list__item-thumbnail" :src="file.url" alt />
+                  <span class="el-upload-list__item-actions">
+                    <span class="el-upload-list__item-delete" @click="handleRemove1(file, 'imageList1', 'imgList1')">
+                      <i class="el-icon-zoom-in" @click.stop="handlePictureCardPreview(file.url)"></i>
+                      <i class="el-icon-delete"></i>
+                    </span>
+                  </span>
+                </div>
+              </el-upload>
+            </div>
+            <div class="aaa">
+              <span>2.行驶证副页</span>
+              <el-upload action="#" list-type="picture-card" :auto-upload="false" :limit="1" drag :on-change="(file) => drivingupload(file, 'imageList1', 'imgList2', 'D01')
+                " :file-list="imgList2" ref="upload2" :class="{ styleB: imgList2.length === 1 }">
+                <img v-show="imgList2.length == 0" src="../../../../static/carback.png"
+                  style="width: 100%; height: 100%" />
+                <div slot="file" slot-scope="{ file }">
+                  <img class="el-upload-list__item-thumbnail" :src="file.url" alt />
+                  <span class="el-upload-list__item-actions">
+                    <span class="el-upload-list__item-delete" @click="handleRemove1(file, 'imageList1', 'imgList2')">
+                      <i class="el-icon-zoom-in" @click.stop="handlePictureCardPreview(file.url)"></i>
+                      <i class="el-icon-delete"></i>
+                    </span>
+                  </span>
+                </div>
+              </el-upload>
+            </div>
+          </div>
+          <div class="flex" id="owner">
+            <div class="aaa">
+              <span>1.车主身份证(正面)</span>
+              <el-upload action="#" list-type="picture-card" :auto-upload="false" :limit="1" drag :on-change="(file) => drivingupload(file, 'imageList2', 'imgList3', 'C02')
+                " :file-list="imgList3" multiple ref="upload3" :class="{ styleB: imgList3.length === 1 }">
+                <img v-show="imgList3.length == 0" src="../../../../static/userfront.png"
+                  style="width: 100%; height: 100%" />
+                <div slot="file" slot-scope="{ file }">
+                  <img class="el-upload-list__item-thumbnail" :src="file.url" alt />
+                  <span class="el-upload-list__item-actions">
+                    <span class="el-upload-list__item-delete" @click="handleRemove1(file, 'imageList2', 'imgList3')">
+                      <i class="el-icon-zoom-in" @click.stop="handlePictureCardPreview(file.url)"></i>
+                      <i class="el-icon-delete"></i>
+                    </span>
+                  </span>
+                </div>
+              </el-upload>
+            </div>
+            <div class="aaa">
+              <span>2.车主身份证(反面)</span>
+              <el-upload action="#" list-type="picture-card" :auto-upload="false" :limit="1" drag :on-change="(file) => drivingupload(file, 'imageList2', 'imgList4', 'D02')
+                " :file-list="imgList4" multiple ref="upload4" :class="{ styleB: imgList4.length === 1 }">
+                <img v-show="imgList4.length == 0" src="../../../../static/userback.png"
+                  style="width: 100%; height: 100%" />
+                <div slot="file" slot-scope="{ file }">
+                  <img class="el-upload-list__item-thumbnail" :src="file.url" alt />
+                  <span class="el-upload-list__item-actions">
+                    <span class="el-upload-list__item-delete" @click="handleRemove1(file, 'imageList2', 'imgList4')">
+                      <i class="el-icon-zoom-in" @click.stop="handlePictureCardPreview(file.url)"></i>
+                      <i class="el-icon-delete"></i>
+                    </span>
+                  </span>
+                </div>
+              </el-upload>
+            </div>
+          </div>
+          <div class="flex" id="applicant">
+            <div class="aaa">
+              <span>1.投保人身份证(正面)</span>
+              <el-upload action="#" list-type="picture-card" :auto-upload="false" :limit="1" drag :on-change="(file) => drivingupload(file, 'imageList3', 'imgList5', 'C03')
+                " :file-list="imgList5" multiple ref="upload5" :class="{ styleB: imgList5.length === 1 }">
+                <img v-show="imgList5.length == 0" src="../../../../static/userfront.png"
+                  style="width: 100%; height: 100%" />
+                <div slot="file" slot-scope="{ file }">
+                  <img class="el-upload-list__item-thumbnail" :src="file.url" alt />
+                  <span class="el-upload-list__item-actions">
+                    <span class="el-upload-list__item-delete" @click="handleRemove1(file, 'imageList3', 'imgList5')">
+                      <i class="el-icon-zoom-in" @click.stop="handlePictureCardPreview(file.url)"></i>
+                      <i class="el-icon-delete"></i>
+                    </span>
+                  </span>
+                </div>
+              </el-upload>
+            </div>
+            <div class="aaa">
+              <span>2.投保人身份证(反面)</span>
+              <el-upload action="#" list-type="picture-card" :auto-upload="false" :limit="1" drag :on-change="(file) => drivingupload(file, 'imageList3', 'imgList6', 'D03')
+                " :file-list="imgList6" multiple ref="upload6" :class="{ styleB: imgList6.length === 1 }">
+                <img v-show="imgList6.length == 0" src="../../../../static/userback.png"
+                  style="width: 100%; height: 100%" />
+                <div slot="file" slot-scope="{ file }">
+                  <img class="el-upload-list__item-thumbnail" :src="file.url" alt />
+                  <span class="el-upload-list__item-actions">
+                    <span class="el-upload-list__item-delete" @click="handleRemove1(file, 'imageList3', 'imgList6')">
+                      <i class="el-icon-zoom-in" @click.stop="handlePictureCardPreview(file.url)"></i>
+                      <i class="el-icon-delete"></i>
+                    </span>
+                  </span>
+                </div>
+              </el-upload>
+            </div>
+          </div>
+          <div class="flex">
+            <div class="aaa">
+              <span id="insured">1.被保人身份证(正面)</span>
+              <el-upload action="#" list-type="picture-card" :auto-upload="false" :limit="1" drag :on-change="(file) => drivingupload(file, 'imageList4', 'imgList7', 'C04')
+                " :file-list="imgList7" multiple ref="upload7" :class="{ styleB: imgList7.length === 1 }">
+                <img v-show="imgList7.length == 0" src="../../../../static/userfront.png"
+                  style="width: 100%; height: 100%" />
+                <div slot="file" slot-scope="{ file }">
+                  <img class="el-upload-list__item-thumbnail" :src="file.url" alt />
+                  <span class="el-upload-list__item-actions">
+                    <span class="el-upload-list__item-delete" @click="handleRemove1(file, 'imageList4', 'imgList7')">
+                      <i class="el-icon-zoom-in" @click.stop="handlePictureCardPreview(file.url)"></i>
+                      <i class="el-icon-delete"></i>
+                    </span>
+                  </span>
+                </div>
+              </el-upload>
+            </div>
+            <div class="aaa">
+              <span>2.被保人身份证(反面)</span>
+              <el-upload action="#" list-type="picture-card" :auto-upload="false" :limit="1" drag :on-change="(file) => drivingupload(file, 'imageList4', 'imgList8', 'D04')
+                " :file-list="imgList8" multiple ref="upload8" :class="{ styleB: imgList8.length === 1 }">
+                <img v-show="imgList8.length == 0" src="../../../../static/userback.png"
+                  style="width: 100%; height: 100%" />
+                <div slot="file" slot-scope="{ file }">
+                  <img class="el-upload-list__item-thumbnail" :src="file.url" alt />
+                  <span class="el-upload-list__item-actions">
+                    <span class="el-upload-list__item-delete" @click="handleRemove1(file, 'imageList4', 'imgList8')">
+                      <i class="el-icon-zoom-in" @click.stop="handlePictureCardPreview(file.url)"></i>
+                      <i class="el-icon-delete"></i>
+                    </span>
+                  </span>
+                </div>
+              </el-upload>
+            </div>
+          </div>
+        </el-col>
+      </el-row>
+
+      <span slot="footer" class="dialog-footer">
+        <el-button size="small" type="primary" @click="uploadinformation">补传影像</el-button>
+        <!-- <el-button size="small" type="primary" @click="addImage">补传影像</el-button> -->
+        <el-button size="small" @click="imageUploaddialogVisible = false"
+        style="background: #EAEDF1;color:#D42426;border-color:#EAEDF1">关闭</el-button>
+        <!-- <el-button size="small" @click="imageUploaddialogVisible = false">取 消</el-button> -->
+      </span>
     </el-dialog>
+
+    <el-image-viewer v-if="showViewer" :on-close="closeViewer" :z-index="9999" :url-list="[ProViewImg]" />
+
   </div>
 </template>
 <script>
 import OpenCloseBox from './openclose.vue'
 import ProductCostForm from '@/components/Form/ProductCostForm.vue';//表单组件
-import axios from 'axios'
+import imageDialog from "@/views/Core/components/imageDialog.vue";
 export default {
   name: "detailsDialog",
   data() {
@@ -1236,7 +1409,31 @@ export default {
 
       ],
       itemRefs: [],
-      itemPositions: []
+      itemPositions: [],
+      // 全部影像上传
+      imageUploaddialogVisible: false,
+      //影像回显列表
+      imgList1: [],
+      imgList2: [],
+      imgList3: [],
+      imgList4: [],
+      imgList5: [],
+      imgList6: [],
+      imgList7: [],
+      imgList8: [],
+      imgList9: [],
+      imgList10: [],
+      imgList11: [],
+      //影像上传列表
+      imageList1: [],
+      imageList2: [],
+      imageList3: [],
+      imageList4: [],
+      // imageList5: [],
+      showViewer: false,
+      ProViewImg: "",
+      managementSource:"",
+      quoteno: '',
     };
   },
   props: {
@@ -1277,7 +1474,6 @@ export default {
     }
   },
   created() {
-    console.log(this.isAuditing)
     //获取操作符
     this.$api.dict.findPage(this.operator).then(res => {
       this.operatorlist = res.data.content;
@@ -1288,15 +1484,245 @@ export default {
 
     this.getFactorTemplate();
   },
-  components: { OpenCloseBox, ProductCostForm },
+  components: { OpenCloseBox, ProductCostForm,  "el-image-viewer": () =>
+      import("element-ui/packages/image/src/image-viewer")
+   },
   methods: {
-    tabLiScroll(id, idx) {
-      this.tabLiIndex = idx;
-      document.getElementById(id).scrollIntoView({ behavior: "smooth" });
+    // 补传影像
+    addImage() {
+      // this.orderInfo.id
+      this.$api.letter.allSubmitImage({
+        companyId: this.orderInfo.id
+      }).then((res) => {
+        if (res.code == 200) {
+          this.$message({ message: responses.msg, type: "success" });
+          this.imageUploaddialogVisible = false;
+        }
+      })
+    },
+    // //上传图片
+    uploadinformation() {
+      const mergedArray = [
+        ...this.imageList1,
+        ...this.imageList2,
+        ...this.imageList3,
+        ...this.imageList4,
+        // ...this.imageList5,
+      ];
+      let imageparam = {
+        imageList: mergedArray,
+        quoteNo: this.quoteno,
+      };
+      console.log(imageparam, 'imageparam1111111111111')
+      this.$api.letter.uploadImages(imageparam).then((responses) => {
+        if (responses.code == "200") {
+          this.imageEcho(this.quoteno);
+          // this.$message({ message: responses.msg, type: "success" });
+          this.addImage()
+        } else {
+          this.$message({ message: responses.msg, type: "error" });
+        }
+      });
+    },
+    drivingupload(file, imageIdList, imgurl, type) {
+      let that = this;
+      let size = file.size / 1024 / 1024 < 5;
+      const isJPG =
+        file.raw.type === "image/jpeg" || file.raw.type === "image/png";
+      if (!size) {
+        this.$message.error("上传图片大小不能超过 5MB!");
+        this[imgurl] = [];
+        return false;
+      }
+      if (!isJPG) {
+        this.$message.error("上传图片只能是 JPG、PNG 格式!");
+        this[imgurl] = [];
+        return false;
+      }
+      this[imgurl].push(file);
+
+      var file = file.raw;
+      const params = new FormData(); // 声明formData数据类型
+      params.append("multipartFile", file);
+      params.append("type", "image");
+      this.$api.letter.uploadFile(params).then((res) => {
+        if (res.code == "200") {
+          if (this[imageIdList].some((v) => v.imageType == type)) {
+            this[imageIdList].map((val) => {
+              if (val.imageType == type) {
+                val.imageId = res.data.id;
+              }
+            });
+          } else {
+            this[imageIdList].push({
+              imageId: res.data.id,
+              imageType: type,
+            });
+          }
+        }
+      });
+    },
+
+    handleRemove1(file, imageIdList, imgList) {
+      this[imageIdList].map((ele, index) => {
+        if (file.imageId === ele.imageId) {
+          this[imageIdList].splice(index, 1);
+        }
+        return ele;
+      });
+      if (file.imageId) {
+        this[imgList].map((ele, index) => {
+          if (file.imageId === ele.imageId) {
+            this[imgList].splice(index, 1);
+          }
+          return ele;
+        });
+      } else {
+        this[imgList].map((ele, index) => {
+          if (file.uid === ele.uid) {
+            this[imgList].splice(index, 1);
+          }
+          return ele;
+        });
+      }
+    },
+    handlePictureCardPreview(img) {
+      this.ProViewImg = img;
+      this.showViewer = true;
+    },
+
+    // 关闭查看器
+    closeViewer() {
+      this.showViewer = false;
     },
     imageQuery(Visible) {
+      if (Visible == 'imageUploaddialogVisible') {
+        this.quoteno = this.orderInfo.quoteno;
+        // // 281089964966547456
+        this.imageEcho(this.orderInfo.quoteno)
+        console.log(this.orderInfo, 'orderinfo1111111')
+      }
       this[Visible] = true;
     },
+    
+    imageEcho(quotenos) {
+      //影像查询
+      this.$api.letter.findByQuoteNo(quotenos).then((res) => {
+        if (res.code == "200") {
+          this.imageList1 = [];
+          this.imageList2 = [];
+          this.imageList3 = [];
+          this.imageList4 = [];
+          // this.imageList5 = [];
+          this.imgList1 = [];
+          this.imgList2 = [];
+          this.imgList3 = [];
+          this.imgList4 = [];
+          this.imgList5 = [];
+          this.imgList6 = [];
+          this.imgList7 = [];
+          this.imgList8 = [];
+          this.imgList9 = [];
+          this.imgList10 = [];
+          this.imgList11 = [];
+          Object.keys(res.data).forEach((keys) => {
+            if (res.data[keys].url) {
+              res.data[keys].url = process.env.BASE_URL + res.data[keys].url;
+              switch (keys) {
+                case "C01":
+                  this.imageList1.push({
+                    imageId: res.data[keys].imageId,
+                    imageType: res.data[keys].imageType,
+                  });
+                  this.imgList1.push(res.data[keys]);
+                  break;
+                case "D01":
+                  this.imageList1.push({
+                    imageId: res.data[keys].imageId,
+                    imageType: res.data[keys].imageType,
+                  });
+                  this.imgList2.push(res.data[keys]);
+                  break;
+                case "C02":
+                  this.imageList2.push({
+                    imageId: res.data[keys].imageId,
+                    imageType: res.data[keys].imageType,
+                  });
+                  this.imgList3.push(res.data[keys]);
+                  break;
+
+                case "D02":
+                  this.imageList2.push({
+                    imageId: res.data[keys].imageId,
+                    imageType: res.data[keys].imageType,
+                  });
+                  this.imgList4.push(res.data[keys]);
+                  break;
+                case "C03":
+                  this.imageList3.push({
+                    imageId: res.data[keys].imageId,
+                    imageType: res.data[keys].imageType,
+                  });
+                  this.imgList5.push(res.data[keys]);
+                  break;
+                case "D03":
+                  this.imageList3.push({
+                    imageId: res.data[keys].imageId,
+                    imageType: res.data[keys].imageType,
+                  });
+                  this.imgList6.push(res.data[keys]);
+                  break;
+                case "C04":
+                  this.imageList4.push({
+                    imageId: res.data[keys].imageId,
+                    imageType: res.data[keys].imageType,
+                  });
+                  this.imgList7.push(res.data[keys]);
+                  break;
+                case "D04":
+                  this.imageList4.push({
+                    imageId: res.data[keys].imageId,
+                    imageType: res.data[keys].imageType,
+                  });
+                  this.imgList8.push(res.data[keys]);
+                  break;
+                // case "XC00":
+                //   this.imageList5.push({
+                //     imageId: res.data[keys].imageId,
+                //     imageType: res.data[keys].imageType,
+                //   });
+                //   this.imgList9.push(res.data[keys]);
+                //   break;
+                // case "GC00":
+                //   this.imageList5.push({
+                //     imageId: res.data[keys].imageId,
+                //     imageType: res.data[keys].imageType,
+                //   });
+                //   this.imgList10.push(res.data[keys]);
+                //   break;
+                // case "GX00":
+                //   this.imageList5.push({
+                //     imageId: res.data[keys].imageId,
+                //     imageType: res.data[keys].imageType,
+                //   });
+                //   this.imgList11.push(res.data[keys]);
+                //   break;
+                default:
+                  break;
+              }
+            }
+          });
+        } else {
+          this.$message({ message: res.msg, type: "info" });
+        }
+      });
+    },
+
+    
+    tabLiScroll(id, idx) {
+      this.tabLiIndex = idx;
+      document.getElementById(id).scrollIntoView({ behavior: "smooth" });
+    },
     feeOrderNewVomergeRows({ row, column, rowIndex, columnIndex }) {
       if (columnIndex === 0) {
         if (rowIndex === 0 || this.feeOrderNewVoList.list[rowIndex].type !== this.feeOrderNewVoList.list[rowIndex - 1].type) {
@@ -1472,7 +1898,7 @@ export default {
     },
     imageFun(param) {
       console.log(this.isAuditing)
-      console.log(param)
+      console.log(param, '111111111111111111111111111111')
       this.obj = param
     },
     warrantyFun(param) {
@@ -1741,6 +2167,58 @@ export default {
   }
 
 }
+.avatar-uploader .el-upload {
+  border: 1px dashed #d9d9d9;
+  border-radius: 6px;
+  cursor: pointer;
+  position: relative;
+  overflow: hidden;
+}
+
+.aaa {
+  /deep/ {
+    // margin-bottom: 20px;
+    // margin-right: 50px;
+    margin: 0 50px 60px 10px;
+    span {
+      display: inline-block;
+      margin-bottom: 10px;
+    }
+
+    .el-upload .el-upload-dragger {
+      width: 260px;
+      height: 180px;
+      border: 1px dashed #c0ccda;
+      padding: 0;
+    }
+
+    .el-upload-list--picture-card .el-upload-list__item {
+      width: 260px;
+      height: 180px;
+    }
+
+    .el-upload-list__item:first-child {
+      margin-top: 0;
+    }
+
+    .el-upload--picture-card {
+      width: 260px;
+      height: 180px;
+    }
+
+    .el-upload-list__item {
+      width: 260px;
+      height: 180px;
+      margin: 0 !important;
+      display: block !important;
+    }
+
+    .el-upload-list--picture-card .el-upload-list__item-thumbnail {
+      width: 260px;
+      height: 180px;
+    }
+  }
+}
 
 .imageStyle {
   width: 260px;