瀏覽代碼

新增诚泰财险爬虫报价

@dongkboy 2 年之前
父節點
當前提交
b7677dba86
共有 2 個文件被更改,包括 708 次插入 和 21 次删除
  1. 67 2
      src/views/Task/daikeComponents/KtLetter.vue
  2. 641 19
      src/views/Task/daikeComponents/KtOrder.vue

+ 67 - 2
src/views/Task/daikeComponents/KtLetter.vue

@@ -1641,6 +1641,30 @@
                 </el-table>
               </div>
             </template>
+            <template v-if="reslistitem.namesimple == '诚泰财险' &&
+              reslistitem.checked &&
+              reslistitem.agreementId &&
+              isLetter !== '3'
+              ">
+              <div class="flex a-c">
+                <div style="margin: 15px 0 15px 100px">
+                <span>商业险折扣:</span>
+                <el-input style="width: 220px" :disabled="!lastCompanyId"  size="small" v-model="reslistitem.discount"
+                  placeholder="请输入内容" @input="
+                    reslistitem.discount = reslistitem.discount.replace(
+                      /[^\d.]/g,
+                      ''
+                    )
+                    "></el-input>
+              </div>
+              <div style="margin: 15px 0 15px 100px">
+                <span>自主定价系数:</span>
+                <el-input style="width: 220px" size="small" :disabled="!lastCompanyId"  v-model="reslistitem.coefficient"
+                  placeholder="请输入内容"></el-input>
+              </div>
+              </div>
+
+            </template>
             <template v-if="reslistitem.namesimple == '众安财险' &&
               reslistitem.checked &&
               reslistitem.agreementId &&
@@ -5292,7 +5316,7 @@ export default {
           res.data.forEach((val, index) => {
             data.insAreaCompanyEditingDtos.forEach((ele) => {
               if (val.namesimple == ele.inscompany) {
-                if (ele.inscompany == "中国人寿" && ele.companyId) {
+                if (["中国人寿","诚泰财险"].includes(ele.inscompany) && ele.companyId) {
                   this.lastCompanyId = ele.companyId;
                 }
                 res.data[index].quoteCode = 200;
@@ -5484,6 +5508,7 @@ export default {
                 case "泰康财险":
                   this.taikangaccidentDataList = res.data;
                   break;
+                case "诚泰财险":
                 case "中国人寿":
                 case "恒邦财险":
                 case "太平财险":
@@ -5835,6 +5860,7 @@ export default {
                   case "大家财险":
                     this.dajiaInsuranceData = res.data;
                     break;
+                  case "诚泰财险":
                   case "中国人寿":
                   case "恒邦财险":
                   case "太平财险":
@@ -7077,6 +7103,8 @@ export default {
         accidentalDrivingVo,
         orderNo: this.orderno,
         companyId: id,
+        kinds: this.kindList,
+        risks: this.riskList,
         agreementId: this.totalCompanyList[num].agreementId,
         isTaxSource: isTaxSource == 1 ? isTaxSource : null,
       };
@@ -7150,6 +7178,8 @@ export default {
       let params = {
         orderNo: this.orderno,
         companyId: id,
+        kinds: this.kindList,
+        risks: this.riskList,
         agreementId: this.totalCompanyList[num].agreementId,
       };
       this.$api.letter.yonganquote(params).then((res) => {
@@ -7299,6 +7329,8 @@ export default {
         accidentalDrivingVo,
         orderNo: this.orderno,
         companyId: id,
+        kinds: this.kindList,
+        risks: this.riskList,
         agreementId: this.totalCompanyList[num].agreementId,
         isTaxSource: isTaxSource == 1 ? isTaxSource : null,
       };
@@ -7379,6 +7411,8 @@ export default {
         accidentalDrivingVo: this.dajiaaccidentalDrivingVo,
         orderNo: this.orderno,
         companyId: id,
+        kinds: this.kindList,
+        risks: this.riskList,
         agreementId: this.totalCompanyList[num].agreementId,
         isTaxSource: isTaxSource == 1 ? isTaxSource : null,
       };
@@ -7452,6 +7486,8 @@ export default {
       let params = {
         orderNo: this.orderno,
         companyId: id,
+        kinds: this.kindList,
+        risks: this.riskList,
         agreementId: this.totalCompanyList[num].agreementId,
         isTaxSource: isTaxSource == 1 ? isTaxSource : null,
       };
@@ -7517,6 +7553,8 @@ export default {
         accidentalDrivingVo: this.accidentalDrivingVo,
         orderNo: this.orderno,
         companyId: id,
+        kinds: this.kindList,
+        risks: this.riskList,
         agreementId: this.totalCompanyList[num].agreementId,
         isTaxSource: isTaxSource == 1 ? isTaxSource : null,
         coefficient: this.totalCompanyList[num].coefficient,
@@ -7604,6 +7642,8 @@ export default {
         accidentalDrivingVo,
         orderNo: this.orderno,
         companyId: id,
+        kinds: this.kindList,
+        risks: this.riskList,
         cqryCdeJq: this.cqryCdeJq,
         cqryCdeSy: this.cqryCdeSy,
         renewalCodeJq: this.renewalCodeJq,
@@ -7709,6 +7749,8 @@ export default {
         accidentalDrivingVo,
         orderNo: this.orderno,
         companyId: id,
+        kinds: this.kindList,
+        risks: this.riskList,
         cqryCdeJq: this.cqryCdeJq,
         cqryCdeSy: this.cqryCdeSy,
         renewalCodeJq: this.renewalCodeJq,
@@ -7811,6 +7853,8 @@ export default {
         accidentalDrivingVo,
         orderNo: this.orderno,
         companyId: id,
+        kinds: this.kindList,
+        risks: this.riskList,
         cqryCdeJq: this.cqryCdeJq,
         cqryCdeSy: this.cqryCdeSy,
         renewalCodeJq: this.renewalCodeJq,
@@ -7898,6 +7942,7 @@ export default {
 
     // 爬虫对接
     quoteInsurance(num, id, namesimple, apiType) {
+      console.log(namesimple)
       let api = apiType == 2 ? "pythonquote" : "  ";
       let ccidenttype = this.totalCompanyList[num].cnName;
       let isTaxSource = this.totalCompanyList[num].isTaxSource;
@@ -7906,6 +7951,8 @@ export default {
         accidentalDrivingVo: this[ccidenttype + "accidentalDrivingVo"],
         orderNo: this.orderno,
         companyId: id,
+        kinds: this.kindList,
+        risks: this.riskList,
         userId: this.userId,
         agreementId: this.totalCompanyList[num].agreementId,
         isTaxSource: isTaxSource == 1 ? isTaxSource : null,
@@ -7914,6 +7961,11 @@ export default {
         params.discount = this.totalCompanyList[num].discount;
         params.lastCompanyId = this.lastCompanyId;
       }
+      if (namesimple == "诚泰财险" && this.lastCompanyId) {
+        params.coefficient = this.totalCompanyList[num].coefficient;
+        params.discount = this.totalCompanyList[num].discount;
+        params.lastCompanyId = this.lastCompanyId;
+      }
       if (
         namesimple == "华农财险" &&
         this.huanongaccidentalDrivingVo.quantity
@@ -7924,6 +7976,7 @@ export default {
       this.$api.letter[api](params).then((res) => {
         this.totalCompanyList[num].msg = res.msg;
         switch (namesimple) {
+          case "诚泰财险":
           case "安盛天平":
           case "泰康财险":
           case "中国人寿":
@@ -7949,6 +8002,9 @@ export default {
               if (namesimple == "中国人寿" && res.data.companyId) {
                 this.lastCompanyId = res.data.companyId;
               }
+              if (namesimple == "诚泰财险" && res.data.companyId) {
+                this.lastCompanyId = res.data.companyId;
+              }
               this.QuotationHistory();
             } else {
               this.totalCompanyList[num].quoteCode = "3";
@@ -7996,6 +8052,15 @@ export default {
         }
       });
     },
+    //诚泰
+    chengtai(num, id, namesimple) {
+      this.quoteInsurance(
+        num,
+        id,
+        namesimple,
+        this.totalCompanyList[num].apiType
+      );
+    },
     //安盛天平
     ansheng(num, id, namesimple) {
       this.quoteInsurance(
@@ -8712,6 +8777,7 @@ export default {
                     }
                   });
                 break;
+              case "诚泰财险":
               case "恒邦财险":
               case "华农财险":
               case "太平财险":
@@ -9250,7 +9316,6 @@ export default {
         this.carInfo.transferDate = "";
       }
     },
-
     //影像上传
     drivingupload(file, imageIdList, imgurl, type) {
       let that = this;

+ 641 - 19
src/views/Task/daikeComponents/KtOrder.vue

@@ -131,6 +131,7 @@
                   '太平财险',
                   '华农财险',
                   '恒邦财险',
+                  '诚泰财险',
                   '众安财险',
                   '中国人寿',
                   '安盛天平',
@@ -143,8 +144,8 @@
               <el-button size="mini" type="text" v-if="item.orderstatus == '4' && item.inscompany == '华泰财险'"
                 @click="updateStatusHuatai(item)" class="red_color">更新订单</el-button>
               <el-button size="mini" type="text" v-if="(item.orderstatus == '1' ||
-                  item.orderstatus == '2' ||
-                  item.orderstatus == '4') &&
+                item.orderstatus == '2' ||
+                item.orderstatus == '4') &&
                 ['紫金财险'].includes(item.inscompany)
                 " @click="cancelorder(item)" class="red_color">撤单</el-button>
               <el-button size="mini" type="text" v-if="item.orderstatus == '2'" @click="carcode(item)"
@@ -156,6 +157,7 @@
                   '太平财险',
                   '华农财险',
                   '恒邦财险',
+                  '诚泰财险',
                   '众安财险',
                   '中国人寿',
                   '安盛天平',
@@ -250,8 +252,10 @@
       <el-table-column prop="createtime" label="录单日期" align="center" width="200"></el-table-column>
       <el-table-column prop="insureTime" label="承保确认时间" align="center" width="200"></el-table-column>
 
-      <el-table-column label="操作" align="center"  fixed="right" min-width="200">
+      <el-table-column label="操作" align="center" fixed="right" min-width="250">
         <template slot-scope="scope">
+          <el-button v-if="scope.row.orderstatus != '3'" size="mini" type="text" style="color: #2d4d89"
+            @click="resendData(scope.$index, scope.row)">补传资料</el-button>
           <el-button v-if="scope.row.orderstatus != '3'" size="mini" type="text" style="color: #2d4d89"
             @click="CloseEdit(scope.$index, scope.row)">重新报价</el-button>
           <el-button size="mini" style="color: #2d4d89" type="text"
@@ -448,8 +452,8 @@
               <el-button size="small" v-show="scope.row.orderstatus == '2'" type="text"
                 @click="carcode(scope.row)">付款码</el-button>
               <el-button size="mini" type="text" v-if="(scope.row.orderstatus == '1' ||
-                  scope.row.orderstatus == '2' ||
-                  scope.row.orderstatus == '4') &&
+                scope.row.orderstatus == '2' ||
+                scope.row.orderstatus == '4') &&
                 ['紫金财险'].includes(scope.row.inscompany)
                 " @click="cancelorder(scope.row)">撤单</el-button>
               <el-button type="text" size="mini" style="color: #2d4d89" v-if="scope.row.orderstatus == '2'"
@@ -459,6 +463,7 @@
                   '太平财险',
                   '华农财险',
                   '恒邦财险',
+                  '诚泰财险',
                   '众安财险',
                   '中国人寿',
                   '安盛天平',
@@ -480,9 +485,277 @@
     </el-dialog>
     <el-dialog :visible.sync="signaturedialogVisible" title="生成签章" width="14%">
       <div style="padding:0 20px">
-        <div  id="signaturecode" ref="signaturecode"></div>
+        <div id="signaturecode" ref="signaturecode"></div>
       </div>
     </el-dialog>
+    <el-dialog :visible.sync="imageUploaddialogVisible" width="1070px">
+      <div slot="title" class="dialog-title">
+        <span>影像上传</span>
+      </div>
+      <el-row>
+        <el-col :span="3">
+          <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="21" 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 class="aaa">
+              <span>1.新车合格证</span>
+              <el-upload action="#" list-type="picture-card" :auto-upload="false" :limit="1" drag :on-change="(file) =>
+                drivingupload(file, 'imageList5', 'imgList9', 'XC00')
+                " :file-list="imgList9" multiple ref="upload3" :class="{ styleB: imgList9.length === 1 }">
+                <img v-show="imgList9.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, 'imageList5', 'imgList9')">
+                      <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, 'imageList5', 'imgList10', 'GC00')
+                " :file-list="imgList10" multiple ref="upload4" :class="{ styleB: imgList10.length === 1 }">
+                <img v-show="imgList10.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, 'imageList5', 'imgList10')">
+                      <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 class="aaa">
+              <span>3.营业执照</span>
+              <el-upload action="#" list-type="picture-card" :auto-upload="false" :limit="1" drag multiple ref="upload4">
+                <img 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', '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 class="aaa">
+              <span>3.营业执照</span>
+              <el-upload action="#" list-type="picture-card" :auto-upload="false" :limit="1" drag multiple ref="upload4">
+                <img 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', '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">
+            <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 class="aaa">
+              <span>3.营业执照</span>
+              <el-upload action="#" list-type="picture-card" :auto-upload="false" :limit="1" drag multiple ref="upload4">
+                <img 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', '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="relationship">
+            <div class="aaa">
+              <span>1.关系证明</span>
+              <el-upload action="#" list-type="picture-card" :auto-upload="false" :limit="1" drag :on-change="(file) =>
+                drivingupload(file, 'imageList5', 'imgList11', 'GX00')
+                " :file-list="imgList11" multiple ref="upload3" :class="{ styleB: imgList11.length === 1 }">
+                <img v-show="imgList11.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, 'imageList5', 'imgList11')">
+                      <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" @click="imageUploaddialogVisible = false">取 消</el-button>
+        <el-button size="small" type="primary" @click="uploadinformation">上传资料</el-button>
+      </span>
+    </el-dialog>
+    <el-image-viewer v-if="showViewer" :on-close="closeViewer" :z-index="9999" :url-list="[ProViewImg]" />
     <!-- 报价单 -->
     <quotationDialog ref="quotationDialog" :queryOrders="queryOrders"></quotationDialog>
     <quotationDialogPro ref="quotationDialogPro" :queryOrders="queryOrders"></quotationDialogPro>
@@ -505,8 +778,8 @@ export default {
       qrcodeHeight: "180",
       qrCodeId: Cookies.get("user"),
       ddgjdialogVisible: false,
-      signaturedialogVisible:false,
-      signaturecode:null,
+      signaturedialogVisible: false,
+      signaturecode: null,
       trajectoryTable: [],
       queryOrders: {
         carinfo: {},
@@ -600,9 +873,57 @@ export default {
       statusPor: "",
       deptIdPor: "",
       apiType: "",
+      imageUploaddialogVisible: false,
+      tabLiIndex: 0,
+      tabLimenu: [
+        {
+          name: "车辆信息",
+          scroll: "vehicle",
+        },
+        {
+          name: "车主信息",
+          scroll: "owner",
+        },
+        {
+          name: "投保人信息",
+          scroll: "applicant",
+        },
+        {
+          name: "被保人信息",
+          scroll: "insured",
+        },
+        {
+          name: "关系证明",
+          scroll: "relationship",
+        },
+      ],
+      //影像回显列表
+      imgList1: [],
+      imgList2: [],
+      imgList3: [],
+      imgList4: [],
+      imgList5: [],
+      imgList6: [],
+      imgList7: [],
+      imgList8: [],
+      imgList9: [],
+      imgList10: [],
+      imgList11: [],
+      //影像上传列表
+      imageList1: [],
+      imageList2: [],
+      imageList3: [],
+      imageList4: [],
+      imageList5: [],
+      showViewer: false,
+      ProViewImg: "",
+
     };
   },
-  components: { quotationDialog, detailsDialog, quotationDialogPro },
+  components: {
+    quotationDialog, detailsDialog, quotationDialogPro, "el-image-viewer": () =>
+      import("element-ui/packages/image/src/image-viewer"),
+  },
   created() {
     this.getDicType("natureOfVehicleUse"); //车辆使用性质
     this.getDicType("vehicleType"); //车辆种类
@@ -611,10 +932,10 @@ export default {
     this.getDicType("businessVehicleUse"); //(车辆用途)营业
     this.getDicType("outOfBusinessVehicleUse"); //(车辆用途)非营业
     this.getDicType("productsType"); //(车辆用途)非营业
-
     this.$api.letter.gainTopList().then((res) => {
       this.companyList = res.data;
     });
+
     this.$api.insCompany.dicType("insOrderStatus").then((res) => {
       this.optionsStatus = res.data.ddList;
     });
@@ -691,6 +1012,217 @@ export default {
     },
   },
   methods: {
+    // 关闭查看器
+    closeViewer() {
+      this.showViewer = false;
+    },
+    handlePictureCardPreview(img) {
+      this.ProViewImg = img;
+      this.showViewer = true;
+    },
+
+    //影像上传
+    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;
+        });
+      }
+    },
+    //影像上传
+    uploadinformation() {
+      // //上传图片
+      const mergedArray = [
+        ...this.imageList1,
+        ...this.imageList2,
+        ...this.imageList3,
+        ...this.imageList4,
+        ...this.imageList5,
+      ];
+      let imageparam = {
+        imageList: mergedArray,
+        quoteNo: this.quoteno,
+      };
+      this.$api.letter.uploadImages(imageparam).then((responses) => {
+        if (responses.code == "200") {
+          this.imageEcho(this.quoteno);
+          this.$message({ message: responses.msg, type: "success" });
+        } else {
+          this.$message({ message: responses.msg, type: "error" });
+        }
+      });
+      this.imageUploaddialogVisible = false;
+    },
+    tabLiScroll(id, idx) {
+      this.tabLiIndex = idx;
+      document.getElementById(id).scrollIntoView({ behavior: "smooth" });
+    },
+    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" });
+        }
+      });
+    },
     //报价历史点击事件
     onoffQuotationHistory(row) {
       this.quotationhistoryRow = row;
@@ -838,6 +1370,11 @@ export default {
         }
       });
     },
+    resendData(index, row) {
+      this.quoteno = row.quoteno;
+      this.imageEcho(row.quoteno)
+      this.imageUploaddialogVisible = true;
+    },
     //二维码生成插件
     creatQrCode(text) {
       // 查找并删除旧的二维码DOM元素
@@ -867,6 +1404,7 @@ export default {
         众安财险: "auditStatusQuery",
         中国人寿: "auditStatusQuery",
         安盛天平: "auditStatusQuery",
+        诚泰财险: "auditStatusQuery",
         紫金财险: "auditStatusQueryZijin",
         渤海财险: "orderStatusbohai",
       };
@@ -1070,6 +1608,7 @@ export default {
         });
       }
       if (
+        item.inscompany == "诚泰财险" ||
         item.inscompany == "恒邦财险" ||
         item.inscompany == "众安财险" ||
         item.inscompany == "中国人寿" ||
@@ -1240,27 +1779,27 @@ export default {
       //   }
       // })
     },
-   
-    signature(row){
-      this.$api.letter.pingAnsignEleApply({companyId:row.id}).then((res) => {
+
+    signature(row) {
+      this.$api.letter.pingAnsignEleApply({ companyId: row.id }).then((res) => {
         if (res.code == 200 && res.data) {
           this.signaturedialogVisible = true;
-              // 查找并删除旧的二维码DOM元素
+          // 查找并删除旧的二维码DOM元素
           let element = document.getElementById("signaturecode");
           while (element.firstChild) {
             element.removeChild(element.firstChild);
           }
           this.signaturecode = new QRCode("signaturecode", {
-            text:  res.data.resultMessage, 
+            text: res.data.resultMessage,
             width: 180,
             height: 180,
             colorDark: "#000000",
             colorLight: "#ffffff",
             correctLevel: QRCode.CorrectLevel.H,
           });
-         
-        } else { 
-          this.$message({ 
+
+        } else {
+          this.$message({
             message: res.msg || "暂无数据!",
             type: "warning",
           });
@@ -2028,6 +2567,7 @@ export default {
                       });
                   }
                   break;
+                case "诚泰财险":
                 case "恒邦财险":
                 case "安盛天平":
                 case "中国人寿":
@@ -2980,5 +3520,87 @@ export default {
       color: #fff;
     }
   }
+
+  .styleB {
+    height: 128px;
+  }
+
+  .styleB .el-upload--picture-card {
+    display: none;
+  }
 }
-</style>
+
+.tab-style {
+  width: 110px;
+
+  li {
+    text-align: right;
+    padding-right: 20px;
+    line-height: 40px;
+    cursor: pointer;
+    box-sizing: border-box;
+    border-right: 1px solid #e2e5eb;
+  }
+
+  li:focus {
+    background: rgba(212, 36, 38, 0.1);
+    border-right: 2px solid var(--themeColor);
+    color: var(--themeColor);
+  }
+}
+
+.tabLi-style {
+  background: rgba(212, 36, 38, 0.1);
+  border-right: 2px solid var(--themeColor);
+  color: var(--themeColor);
+}
+
+.aaa {
+  /deep/ {
+    margin-bottom: 20px;
+    margin-right: 50px;
+
+    span {
+      display: inline-block;
+      margin-bottom: 10px;
+    }
+
+    .el-upload .el-upload-dragger {
+      width: 180px;
+      height: 120px;
+      border: 1px dashed #c0ccda;
+      padding: 0;
+    }
+
+    .el-upload-list--picture-card .el-upload-list__item {
+      width: 180px;
+      height: 120px;
+    }
+
+    .el-upload-list__item:first-child {
+      margin-top: 0;
+    }
+
+    .el-upload--picture-card {
+      width: 180px;
+      height: 120px;
+    }
+
+    .el-upload-list__item {
+      width: 180px;
+      height: 120px;
+      margin: 0 !important;
+      display: block !important;
+    }
+
+    .el-upload-list--picture-card .el-upload-list__item-thumbnail {
+      width: 180px;
+      height: 120px;
+    }
+  }
+}
+
+.styleB .el-upload--picture-card {
+  // display: none;
+  opacity: 0;
+}</style>