Explorar el Código

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

lihongxiao hace 2 años
padre
commit
ac80649a1b
Se han modificado 21 ficheros con 1390 adiciones y 589 borrados
  1. 10 0
      src/http/moudules/task.js
  2. 10 0
      src/http/moudules/user.js
  3. 1 1
      src/views/AgreementManage/InsuranceCompany/CargoTruck/BusinessOperation/Fuel/OptionalsolutionConfig.vue
  4. 1 1
      src/views/AgreementManage/InsuranceCompany/CargoTruck/BusinessOperation/NewEnergy/OptionalsolutionConfig.vue
  5. 1 1
      src/views/AgreementManage/InsuranceCompany/CargoTruck/NonBusiness/Fuel/OptionalsolutionConfig.vue
  6. 1 1
      src/views/AgreementManage/InsuranceCompany/CargoTruck/NonBusiness/NewEnergy/OptionalsolutionConfig.vue
  7. 1 1
      src/views/AgreementManage/InsuranceCompany/PassengerBus/BusinessOperation/Fuel/OptionalsolutionConfig.vue
  8. 1 1
      src/views/AgreementManage/InsuranceCompany/PassengerBus/BusinessOperation/NewEnergy/OptionalsolutionConfig.vue
  9. 1 1
      src/views/AgreementManage/InsuranceCompany/PassengerBus/NonBusiness/Fuel/OptionalsolutionConfig.vue
  10. 1 1
      src/views/AgreementManage/InsuranceCompany/PassengerBus/NonBusiness/NewEnergy/OptionalsolutionConfig.vue
  11. 432 237
      src/views/Core/components/quotationDialog.vue
  12. 431 228
      src/views/Core/components/quotationDialogPro.vue
  13. 59 0
      src/views/FinancialManagement/CarInsurance/CompanySettlement/CarInsurance/DocumentaryFeesDetail.vue
  14. 64 4
      src/views/FinancialManagement/CarInsurance/CompanySettlement/CarInsurance/HandlingFees.vue
  15. 59 0
      src/views/FinancialManagement/CarInsurance/CompanySettlement/NoCarInsurance/DocumentaryFeesDetail.vue
  16. 65 4
      src/views/FinancialManagement/CarInsurance/CompanySettlement/NoCarInsurance/HandlingFees.vue
  17. 63 5
      src/views/FinancialManagement/CarInsurance/PlatformSettlement/NonVehicleBalance.vue
  18. 44 0
      src/views/FinancialManagement/CarInsurance/Verifytasks/Verifyintasks.vue
  19. 47 49
      src/views/Login.vue
  20. 76 45
      src/views/Task/daikeComponents/KtLetter1.vue
  21. 22 9
      src/views/Task/daikeComponents/KtOrder.vue

+ 10 - 0
src/http/moudules/task.js

@@ -1841,3 +1841,13 @@ export const findOrderCompanyList = () => {
   })
 }
 
+//增加类型导入
+export const addTypeImportExcel = (data) => {
+  return axios({
+    url: "/fnc/plyFee/importDataAddType",
+    method: "post",
+    data
+  })
+}
+
+

+ 10 - 0
src/http/moudules/user.js

@@ -1,3 +1,4 @@
+import { param } from 'jquery'
 import axios from '../axios'
 
 /*
@@ -170,6 +171,15 @@ export const deleteFlag = (data) => {
   })
 }
 
+// 查询修改历史  人员管理通用
+export const queryHistory = (params) => {
+  return axios({
+    url: '/user/getUserModificationRecords',
+    method: 'get',
+    params
+  })
+}
+
 
 
 // 查找用户的菜单权限标识集合

+ 1 - 1
src/views/AgreementManage/InsuranceCompany/CargoTruck/BusinessOperation/Fuel/OptionalsolutionConfig.vue

@@ -33,7 +33,7 @@
               </el-col>
               <el-col :span="20">
                 <el-form-item label="投保指引">
-                  <el-input type="textarea" v-model="CustomPlanData.description" placeholder="输入投保指引" maxlength="100"
+                  <el-input type="textarea" v-model="CustomPlanData.description" placeholder="输入投保指引" maxlength="200"
                     show-word-limit></el-input>
                 </el-form-item>
               </el-col>

+ 1 - 1
src/views/AgreementManage/InsuranceCompany/CargoTruck/BusinessOperation/NewEnergy/OptionalsolutionConfig.vue

@@ -33,7 +33,7 @@
               </el-col>
               <el-col :span="20">
                 <el-form-item label="投保指引">
-                  <el-input type="textarea" v-model="CustomPlanData.description" placeholder="输入投保指引" maxlength="100"
+                  <el-input type="textarea" v-model="CustomPlanData.description" placeholder="输入投保指引" maxlength="200"
                     show-word-limit></el-input>
                 </el-form-item>
               </el-col>

+ 1 - 1
src/views/AgreementManage/InsuranceCompany/CargoTruck/NonBusiness/Fuel/OptionalsolutionConfig.vue

@@ -33,7 +33,7 @@
               </el-col>
               <el-col :span="20">
                 <el-form-item label="投保指引">
-                  <el-input type="textarea" v-model="CustomPlanData.description" placeholder="输入投保指引" maxlength="100"
+                  <el-input type="textarea" v-model="CustomPlanData.description" placeholder="输入投保指引" maxlength="200"
                     show-word-limit></el-input>
                 </el-form-item>
               </el-col>

+ 1 - 1
src/views/AgreementManage/InsuranceCompany/CargoTruck/NonBusiness/NewEnergy/OptionalsolutionConfig.vue

@@ -33,7 +33,7 @@
               </el-col>
               <el-col :span="20">
                 <el-form-item label="投保指引">
-                  <el-input type="textarea" v-model="CustomPlanData.description" placeholder="输入投保指引" maxlength="100"
+                  <el-input type="textarea" v-model="CustomPlanData.description" placeholder="输入投保指引" maxlength="200"
                     show-word-limit></el-input>
                 </el-form-item>
               </el-col>

+ 1 - 1
src/views/AgreementManage/InsuranceCompany/PassengerBus/BusinessOperation/Fuel/OptionalsolutionConfig.vue

@@ -33,7 +33,7 @@
               </el-col>
               <el-col :span="20">
                 <el-form-item label="投保指引">
-                  <el-input type="textarea" v-model="CustomPlanData.description" placeholder="输入投保指引" maxlength="100"
+                  <el-input type="textarea" v-model="CustomPlanData.description" placeholder="输入投保指引" maxlength="200"
                     show-word-limit></el-input>
                 </el-form-item>
               </el-col>

+ 1 - 1
src/views/AgreementManage/InsuranceCompany/PassengerBus/BusinessOperation/NewEnergy/OptionalsolutionConfig.vue

@@ -33,7 +33,7 @@
               </el-col>
               <el-col :span="20">
                 <el-form-item label="投保指引">
-                  <el-input type="textarea" v-model="CustomPlanData.description" placeholder="输入投保指引" maxlength="100"
+                  <el-input type="textarea" v-model="CustomPlanData.description" placeholder="输入投保指引" maxlength="200"
                     show-word-limit></el-input>
                 </el-form-item>
               </el-col>

+ 1 - 1
src/views/AgreementManage/InsuranceCompany/PassengerBus/NonBusiness/Fuel/OptionalsolutionConfig.vue

@@ -33,7 +33,7 @@
               </el-col>
               <el-col :span="20">
                 <el-form-item label="投保指引">
-                  <el-input type="textarea" v-model="CustomPlanData.description" placeholder="输入投保指引" maxlength="100"
+                  <el-input type="textarea" v-model="CustomPlanData.description" placeholder="输入投保指引" maxlength="200"
                     show-word-limit></el-input>
                 </el-form-item>
               </el-col>

+ 1 - 1
src/views/AgreementManage/InsuranceCompany/PassengerBus/NonBusiness/NewEnergy/OptionalsolutionConfig.vue

@@ -33,7 +33,7 @@
               </el-col>
               <el-col :span="20">
                 <el-form-item label="投保指引">
-                  <el-input type="textarea" v-model="CustomPlanData.description" placeholder="输入投保指引" maxlength="100"
+                  <el-input type="textarea" v-model="CustomPlanData.description" placeholder="输入投保指引" maxlength="200"
                     show-word-limit></el-input>
                 </el-form-item>
               </el-col>

+ 432 - 237
src/views/Core/components/quotationDialog.vue

@@ -1,47 +1,121 @@
 <template>
-    <el-dialog :visible.sync="dialogVisible" width="1080px" class="quotation_style">
-        <div id="pdfContentsDiv" style="padding: 25px;height: auto;" v-watermark='userId'>
-            <div slot="title" class="dialog-title quotation-title">
-                <img :src="queryOrders.logoImg" class="align" alt
-                    style="width: 28px; height: 28px;vertical-align: middle" />
-                <span>{{ queryOrders.inscompany }}-报价单</span>
-            </div>
-            <div class="vehicle">
-                <li>
-                    <span>订单号:</span>{{ queryOrders.orderno }}
-                </li>
-                <li>
-                    <span>发动机号:</span>{{ queryOrders.carinfo.engineNo }}
-                </li>
-                <li>
-                    <span>车主姓名:</span>{{ queryOrders.ownerinfo.name }}
-                </li>
-                <li>
-                    <span>车牌号:</span>{{ queryOrders.carinfo.licenseNo }}
-                </li>
-                <li>
-                    <span>车架号:</span>{{ queryOrders.carinfo.vinNo }}
-                </li>
-                <li>
-                    <span>投保人姓名:</span>{{ queryOrders.applyinfo.name }}
-                </li>
-                <li>
-                    <span>车型:</span>{{ queryOrders.carinfo.modelcname }}
-                </li>
-                <li>
-                    <span>座位数:</span>{{ queryOrders.carinfo.seatCount }}
-                </li>
-                <li>
-                    <span>被保人姓名:</span>{{ queryOrders.insureinfo.name }}
-                </li>
-                <li style="width: 100%;">
-                    <span>车辆交强险保险期间:</span>{{ queryOrders.jqstartdate }} 至 {{ queryOrders.jqenddate }}
-                </li>
-                <li style="width: 100%;" v-if="queryOrders.systartdate && queryOrders.syenddate">
-                    <span>车辆商业险保险期间:</span>{{ queryOrders.systartdate }} 至 {{ queryOrders.syenddate }}
-                </li>
-            </div>
-            <!-- <el-descriptions :column="5" border direction="vertical">
+  <el-dialog :visible.sync="dialogVisible" width="1080px" class="quotation_style">
+    <div id="pdfContentsDiv" style="padding: 25px;height: auto;" v-watermark='userId'>
+      <div slot="title" class="dialog-title quotation-title flex a-c j-s">
+        <div>
+          <img :src="queryOrders.logoImg" class="align" alt style="width: 28px; height: 28px;vertical-align: middle" />
+          <span>{{ queryOrders.inscompany }}-报价单</span>
+        </div>
+        <span style="margin-right: 30px;">{{ queryOrders.orderno }}</span>
+      </div>
+      <div class="tableInfo">
+        <div class="header">车辆信息</div>
+        <el-descriptions :column="3" border>
+          <el-descriptions-item label="车牌号">{{
+            queryOrders.carinfo.licenseNo }}</el-descriptions-item>
+          <el-descriptions-item label="车架号">{{ queryOrders.carinfo.vinNo }}</el-descriptions-item>
+          <el-descriptions-item label="发动机号">{{ queryOrders.carinfo.engineNo }}</el-descriptions-item>
+          <el-descriptions-item label="座位数">
+            {{ queryOrders.carinfo.seatCount }}
+          </el-descriptions-item>
+          <el-descriptions-item label="车型" :span="2">{{ queryOrders.carinfo.modelcname }}</el-descriptions-item>
+          <el-descriptions-item label="注册日期" :span="1.5">{{ queryOrders.carinfo.registerDate }}</el-descriptions-item>
+          <el-descriptions-item label="发证日期" :span="1.5">{{ queryOrders.carinfo.issueDate }}</el-descriptions-item>
+        </el-descriptions>
+      </div>
+      <div class="tableInfo">
+        <div class="header">投被保人信息</div>
+        <el-descriptions :column="3" border>
+          <el-descriptions-item label="车主姓名">{{
+            queryOrders.ownerinfo.name }}</el-descriptions-item>
+          <el-descriptions-item label="投保人姓名">{{ queryOrders.applyinfo.name }}</el-descriptions-item>
+          <el-descriptions-item label="被保人姓名">{{ queryOrders.insureinfo.name }}</el-descriptions-item>
+          <el-descriptions-item label="车主身份证号">
+            {{ queryOrders.ownerinfo.identifyNumber}}
+          </el-descriptions-item>
+          <el-descriptions-item label="投保人身份证号">{{ queryOrders.applyinfo.identifyNumber }}</el-descriptions-item>
+          <el-descriptions-item label="被保人身份证号">{{ queryOrders.insureinfo.identifyNumber }}</el-descriptions-item>
+        </el-descriptions>
+      </div>
+      <div class="tableInfo">
+        <div class="header">投保信息</div>
+        <el-descriptions :column="2" border>
+          <el-descriptions-item v-if="queryOrders.jqstartdate && queryOrders.jqenddate" label="交强险起保日期">{{
+            queryOrders.jqstartdate }}</el-descriptions-item>
+          <el-descriptions-item v-if="queryOrders.jqstartdate && queryOrders.jqenddate" label="交强险终保日期">{{
+            queryOrders.jqenddate }}</el-descriptions-item>
+          <el-descriptions-item v-if="queryOrders.systartdate && queryOrders.syenddate" label="商业险起保日期">{{
+            queryOrders.systartdate }}</el-descriptions-item>
+          <el-descriptions-item v-if="queryOrders.systartdate && queryOrders.syenddate" label="商业险终保日期">
+            {{ queryOrders.syenddate }}
+          </el-descriptions-item>
+        </el-descriptions>
+      </div>
+
+      <!-- <div class="tableInfo">
+        <div class="header flex a-c j-start">
+          <span>车辆信息</span>
+        </div>
+        <div class="content flex a-c  f-wrap">
+          <div class="flex a-c">
+            <div class="textBlock flex j-c a-c">车牌号</div>
+            <div class="dataBlock flex j-c a-c"></div>
+          </div>
+          <div class="flex a-c">
+            <div class="textBlock flex j-c a-c">车架号</div>
+            <div class="dataBlock flex j-c a-c">{{ queryOrders.carinfo.vinNo }}</div>
+          </div>
+          <div class="flex a-c">
+            <div class="textBlock flex j-c a-c">发动机号</div>
+            <div class="dataBlock flex j-c a-c">{{ queryOrders.carinfo.engineNo }}</div>
+          </div>
+          <div class="flex a-c">
+            <div class="textBlock flex j-c a-c" >座位数</div>
+            <div class="dataBlock flex j-c a-c">{{ queryOrders.carinfo.seatCount }}</div>
+          </div>
+          <div class="flex a-c">
+            <div class="textBlock flex j-c a-c">车型</div>
+            <div class="dataBlock flex j-c a-c">{{ queryOrders.carinfo.modelcname }}</div>
+          </div>
+        </div>
+      </div> -->
+
+      <!-- <div class="vehicle">
+        <li>
+          <span>订单号:</span>
+        </li>
+        <li>
+          <span>发动机号:</span>{{ queryOrders.carinfo.engineNo }}
+        </li>
+        <li>
+          <span>车主姓名:</span>{{ queryOrders.ownerinfo.name }}
+        </li>
+        <li>
+          <span>车牌号:</span>{{ queryOrders.carinfo.licenseNo }}
+        </li>
+        <li>
+          <span>车架号:</span>{{ queryOrders.carinfo.vinNo }}
+        </li>
+        <li>
+          <span>投保人姓名:</span>{{ queryOrders.applyinfo.name }}
+        </li>
+        <li>
+          <span>车型:</span>{{ queryOrders.carinfo.modelcname }}
+        </li>
+        <li>
+          <span>座位数:</span>{{ queryOrders.carinfo.seatCount }}
+        </li>
+        <li>
+          <span>被保人姓名:</span>{{ queryOrders.insureinfo.name }}
+        </li>
+        <li style="width: 100%;">
+          <span>车辆交强险保险期间:</span>{{ queryOrders.jqstartdate }} 至 {{ queryOrders.jqenddate }}
+        </li>
+        <li style="width: 100%;" v-if="queryOrders.systartdate && queryOrders.syenddate">
+          <span>车辆商业险保险期间:</span>{{ queryOrders.systartdate }} 至 {{ queryOrders.syenddate }}
+        </li>
+      </div> -->
+      <!-- <el-descriptions :column="5" border direction="vertical">
                 <el-descriptions-item label="交强险">{{ queryOrders.jqpremium ? '¥' + queryOrders.jqpremium : '-'
                 }}</el-descriptions-item>
                 <el-descriptions-item label="车船税">{{ queryOrders.taxamount ? '¥' + queryOrders.taxamount : '-'
@@ -54,57 +128,99 @@
                     <span style="color:#D42426">¥{{ queryOrders.sumpremium }}</span>
                 </el-descriptions-item>
             </el-descriptions> -->
-            <el-table :data="allProducts" stripe border :span-method="objectSpanMethod"
-                :header-cell-style="{ background: '#D42426 ', fontWeight: '500', color: '#fff' }" style="width: 100%">
-                <el-table-column width="100" prop="label" align="center" label="产品类型">
-                </el-table-column>
-                <el-table-column width="450" prop="name" align="center" label="险别/名称">
-                </el-table-column>
-                <el-table-column align="center" prop="amount" label="保额">
-                    <template slot-scope="scope">
-                        <div v-if="['D4', 'SY_FJ_YBW2'].includes(scope.row.kindCode)">
-                            <span>{{ scope.row.unitAmount }}</span>/<span>{{ queryOrders.carinfo.seatCount - 1 }}座</span>
-                        </div>
-                        <div v-else-if="['MJ1', 'MJ2', 'MJ3', 'MJ4'].includes(
-                            scope.row.kindCode
-                        )
-                            ">
-                            <span>{{ scope.row.deductibleRate }}</span>
-                        </div>
-                        <div v-else-if="['TY1', 'TY2', 'TY3', 'TY4'].includes(
-                            scope.row.kindCode
-                        )
-                            ">
-                            <span>{{ scope.row.serviceTimes }}/次</span>
-                        </div>
-                        <div v-else>
-                            <span>{{ scope.row.amount }}</span>
-                        </div>
-                    </template>
-                </el-table-column>
-                <el-table-column align="center" prop="coveragePremium" label="保费(元)">
-                    <template slot-scope="scope">
-                        {{ scope.row.label=='商业险'?scope.row.coveragePremium:scope.row.label=='驾意险'?scope.row.premium!=0?scope.row.premium:'-':'-' }}
-                    </template>
-                </el-table-column>
-                <el-table-column align="center" prop="totalPremium" label="总计(元)">
-                    <template slot-scope="scope">
-                        <span style="color:#D42426;font-weight: bold;">{{ scope.row.totalPremium }}</span>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <div class="payable_amount">
-                <h3>
-                  <span v-if="queryOrders.jqpremium">交强险:{{  queryOrders.jqpremium + '元' }}</span>
-                    <span v-if="queryOrders.sypremium">车辆商业险:{{  queryOrders.sypremium +  '元' }}</span>
-                    <span v-if="queryOrders.jypremium">驾意险:{{  queryOrders.jypremium +  '元' }}</span>
-                    <span v-if="queryOrders.taxamount">车船税:{{  queryOrders.taxamount +  '元' }}</span>
-                </h3>
-                <h2>
-                    <span v-if="queryOrders.sumpremium">应缴金额:<b style="color:#D42426;font-size:26px">{{  queryOrders.sumpremium }}</b> <span style="color:#D42426;font-size:20px">元</span></span>
-                </h2>
+      <el-table :data="allProducts" stripe border :span-method="objectSpanMethod"
+        :header-cell-style="{ background: '#D42426 ', fontWeight: '500', color: '#fff' }" style="width: 100%">
+        <el-table-column width="100" prop="label" align="center" label="产品类型">
+        </el-table-column>
+        <el-table-column width="450" prop="name" align="center" label="险别/名称">
+        </el-table-column>
+        <el-table-column align="center" prop="amount" label="保额">
+          <template slot-scope="scope">
+            <div v-if="['D4', 'SY_FJ_YBW2'].includes(scope.row.kindCode)">
+              <span>{{ scope.row.unitAmount }}</span>/<span>{{ queryOrders.carinfo.seatCount - 1 }}座</span>
+            </div>
+            <div v-else-if="['MJ1', 'MJ2', 'MJ3', 'MJ4'].includes(
+              scope.row.kindCode
+            )
+              ">
+              <span>{{ scope.row.deductibleRate }}</span>
+            </div>
+            <div v-else-if="['TY1', 'TY2', 'TY3', 'TY4'].includes(
+              scope.row.kindCode
+            )
+              ">
+              <span>{{ scope.row.serviceTimes }}/次</span>
             </div>
-            <!-- <el-table v-if="queryOrders.jqInsuranceType && queryOrders.jqInsuranceType.length > 0"
+            <div v-else>
+              <span>{{ scope.row.amount }}</span>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" prop="coveragePremium" label="保费(元)">
+          <template slot-scope="scope">
+            {{
+              scope.row.label == '商业险' ? scope.row.coveragePremium : '-'
+            }}
+          </template>
+        </el-table-column>
+        <el-table-column align="center" prop="totalPremium" label="总计(元)">
+          <template slot-scope="scope">
+            <span style="color:#D42426;font-weight: bold;font-size: 16px;">{{ scope.row.totalPremium }}</span>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-table :data="jyProducts" stripe border :span-method="objectSpanMethod1"
+        :header-cell-style="{ background: '#D42426 ', fontWeight: '500', color: '#fff' }" style="width: 100%;margin-top:20px;">
+        <el-table-column width="100" prop="label" align="center" label="驾意险名称">
+        </el-table-column>
+        <el-table-column width="450" prop="name" align="center" label="保险责任">
+        </el-table-column>
+        <el-table-column align="center" prop="amount" label="保额"></el-table-column>
+        <el-table-column align="center" prop="premium" label="保费(元)">
+          <template slot-scope="scope">
+            {{
+              scope.row.premium && scope.row.premium != 0 ? scope.row.premium : '-'
+            }}
+          </template>
+        </el-table-column>
+        <el-table-column align="center" prop="each" label="每份">
+        </el-table-column>
+        <el-table-column align="center" prop="totalPremium" label="总计(元)">
+          <template slot-scope="scope">
+            <span style="color:#D42426;font-weight: bold;font-size: 16px;">{{ queryOrders.jypremium /
+            (queryOrders.jyQuantity ? queryOrders.jyQuantity : 1)
+          }}/每份</span>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="tableInfo" style="margin-top:20px;">
+        <el-descriptions direction="vertical" :column="5" border>
+          <el-descriptions-item label="驾意险名称" label-class-name="my-label">{{ queryOrders.jyName }}</el-descriptions-item>
+          <el-descriptions-item label="座位数" label-class-name="my-label">{{ queryOrders.carinfo.seatCount
+          }}座</el-descriptions-item>
+          <el-descriptions-item label="份数" label-class-name="my-label">{{ queryOrders.jyQuantity ? queryOrders.jyQuantity : 1
+          }}份</el-descriptions-item>
+          <el-descriptions-item label="每份" label-class-name="my-label">{{ queryOrders.jypremium /
+            (queryOrders.jyQuantity ? queryOrders.jyQuantity : 1)
+          }}/每份
+          </el-descriptions-item>
+          <el-descriptions-item label="合计(元)" label-class-name="my-label" content-class-name="my-content">合计:{{
+            queryOrders.jypremium }}</el-descriptions-item>
+        </el-descriptions>
+      </div>
+      <div class="payable_amount">
+        <h3>
+          <span v-if="queryOrders.jqpremium">交强险:{{ queryOrders.jqpremium + '元' }}</span>
+          <span v-if="queryOrders.sypremium">车辆商业险:{{ queryOrders.sypremium + '元' }}</span>
+          <span v-if="queryOrders.jypremium">驾意险:{{ queryOrders.jypremium + '元' }}</span>
+          <span v-if="queryOrders.taxamount">车船税:{{ queryOrders.taxamount + '元' }}</span>
+        </h3>
+        <h2>
+          <span v-if="queryOrders.sumpremium">应缴金额:<b style="color:#D42426;font-size:26px">{{ queryOrders.sumpremium
+          }}</b> <span style="color:#D42426;font-size:20px">元</span></span>
+        </h2>
+      </div>
+      <!-- <el-table v-if="queryOrders.jqInsuranceType && queryOrders.jqInsuranceType.length > 0"
                 :data="queryOrders.jqInsuranceType" stripe border
                 :header-cell-style="{ background: '#F7F7F9 ', fontWeight: '500', color: '#333333' }" style="width: 100%">
                 <el-table-column prop="name" align="center" label="交强险名称">
@@ -173,185 +289,264 @@
                     </template>
                 </el-table-column>
             </el-table> -->
-            <div style="margin: 10px 0;">报价时间:{{ queryOrders.createtime }}</div>
-            <div>注:本报价单仅供参考,最终以出单价格为准。</div>
-        </div>
-        <span slot="footer" class="dialog-footer">
-            <el-button type="primary" size="small" @click="copybjd()">截图</el-button>
-            <el-button size="small" type="primary" plain @click="dialogVisible = false;allProducts=[]">关闭</el-button>
-        </span>
-    </el-dialog>
+      <div style="margin: 10px 0;">报价时间:{{ queryOrders.createtime }}</div>
+      <div>注:本报价单仅供参考,最终以出单价格为准。</div>
+    </div>
+    <span slot="footer" class="dialog-footer">
+      <el-button type="primary" size="small" @click="copybjd()">截图</el-button>
+      <el-button size="small" type="primary" plain @click="dialogVisible = false; allProducts = []">关闭</el-button>
+    </span>
+  </el-dialog>
 </template>
 <script>
 import html2Canvas from "html2canvas";
 import Cookies from "js-cookie";
 
 export default {
-    name: "quotationDialog",
-    props: {
-        queryOrders: {
-            type: Object,
-            default: {}
-        }
-    },
-    data() {
-        return {
-            dialogVisible: false,
-            logoImg: '',
-            userId: Cookies.get("user"),
-            allProducts: []
-        }
-    },
+  name: "quotationDialog",
+  props: {
+    queryOrders: {
+      type: Object,
+      default: {}
+    }
+  },
+  data() {
+    return {
+      dialogVisible: false,
+      logoImg: '',
+      userId: Cookies.get("user"),
+      allProducts: [],
+      jyProducts: [],
+    }
+  },
 
-    created() {
+  created() {
 
+  },
+  methods: {
+    setBackupVisible: function (backupVisible) {
+      this.dialogVisible = backupVisible
+      this.queryOrders.ownerinfo.identifyNumber=this.queryOrders.ownerinfo.identifyNumber.slice(0,4)+'******'+this.queryOrders.ownerinfo.identifyNumber.slice(14,18);
+      this.queryOrders.applyinfo.identifyNumber=this.queryOrders.applyinfo.identifyNumber.slice(0,4)+'******'+this.queryOrders.applyinfo.identifyNumber.slice(14,18);
+      this.queryOrders.insureinfo.identifyNumber=this.queryOrders.insureinfo.identifyNumber.slice(0,4)+'******'+this.queryOrders.insureinfo.identifyNumber.slice(14,18);
+      let data = JSON.parse(JSON.stringify(this.queryOrders))
+      data.jqInsuranceType.forEach(e => { e.label = '交强险'; e.totalPremium = data.jqpremium });
+      if ((data.kindinfo && data.kindinfo.length > 0) || (data.accidentInfo && data.accidentInfo.length > 0)) {
+        data.kindinfo && data.kindinfo.length > 0 ? data.kindinfo.forEach(el => { el.label = '商业险', el.name = el.kindName; el.totalPremium = data.sypremium }) : data.kindinfo
+        data.accidentInfo && data.accidentInfo.length > 0 ? data.accidentInfo.forEach(e => { e.label = '驾意险'; e.totalPremium = data.jypremium; e.each = "每份" }) : data.accidentInfo
+        this.allProducts = data.jqInsuranceType.concat(data.kindinfo && data.kindinfo.length > 0 ? data.kindinfo : [])
+        this.jyProducts = data.accidentInfo && data.accidentInfo.length > 0 ? data.accidentInfo : [];
+      }
+      else {
+        this.allProducts = data.jqInsuranceType
+      }
     },
-    methods: {
-        setBackupVisible: function (backupVisible) {
-            this.dialogVisible = backupVisible
-            let data = JSON.parse(JSON.stringify(this.queryOrders))
-            data.jqInsuranceType.forEach(e => {e.label = '交强险';e.totalPremium=data.jqpremium});
-            if((data.kindinfo && data.kindinfo.length > 0)  || (data.accidentInfo && data.accidentInfo.length > 0)){
-                data.kindinfo && data.kindinfo.length > 0 ? data.kindinfo.forEach(el => {el.label = '商业险', el.name = el.kindName;el.totalPremium=data.sypremium}) : data.kindinfo
-                data.accidentInfo && data.accidentInfo.length > 0 ? data.accidentInfo.forEach(e => {e.label = '驾意险';e.totalPremium=data.jypremium}) : data.accidentInfo
-                this.allProducts =data.jqInsuranceType.concat(data.kindinfo && data.kindinfo.length > 0?data.kindinfo:[],data.accidentInfo && data.accidentInfo.length > 0? data.accidentInfo:[])
-
+    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
+      if (columnIndex === 0) { // 假设我们要合并第三列(类型列)
+        const rows = this.allProducts;
+        let prevRow = rows[rowIndex - 1];
+        if (prevRow && row.label === prevRow.label) {
+          return [1, 0]; // 上一行与当前行相同,合并当前单元格
+        } else {
+          let rowspan = 1;
+          for (let i = rowIndex + 1; i < rows.length; i++) {
+            if (rows[i].label === row.label) {
+              rowspan++;
+            } else {
+              break;
             }
-            else{
-                this.allProducts=data.jqInsuranceType
+          }
+          return [rowspan, 1]; // 返回行合并数目和列合并数目
+        }
+      }
+      if (columnIndex === 4) { // 假设我们要合并第三列(类型列)
+        const rows = this.allProducts;
+        let prevRow = rows[rowIndex - 1];
+        if (prevRow && row.totalPremium === prevRow.totalPremium) {
+          return [1, 0]; // 上一行与当前行相同,合并当前单元格
+        } else {
+          let rowspan = 1;
+          for (let i = rowIndex + 1; i < rows.length; i++) {
+            if (rows[i].totalPremium === row.totalPremium) {
+              rowspan++;
+            } else {
+              break;
+            }
+          }
+          return [rowspan, 1]; // 返回行合并数目和列合并数目
+        }
+      }
+    },
+    objectSpanMethod1({ row, column, rowIndex, columnIndex }) {
+      if (columnIndex === 0) { // 假设我们要合并第三列(类型列)
+        const rows = this.jyProducts;
+        let prevRow = rows[rowIndex - 1];
+        if (prevRow && row.label === prevRow.label) {
+          return [1, 0]; // 上一行与当前行相同,合并当前单元格
+        } else {
+          let rowspan = 1;
+          for (let i = rowIndex + 1; i < rows.length; i++) {
+            if (rows[i].label === row.label) {
+              rowspan++;
+            } else {
+              break;
             }
-        },
-        objectSpanMethod({ row, column, rowIndex, columnIndex }) {
-            if (columnIndex === 0) { // 假设我们要合并第三列(类型列)
-                const rows = this.allProducts;
-                let prevRow = rows[rowIndex - 1];
-                if (prevRow && row.label === prevRow.label) {
-                    return [1, 0]; // 上一行与当前行相同,合并当前单元格
-                } else {
-                    let rowspan = 1;
-                    for (let i = rowIndex + 1; i < rows.length; i++) {
-                        if (rows[i].label === row.label) {
-                            rowspan++;
-                        } else {
-                        break;
-                        }
-                    }
-                return [rowspan, 1]; // 返回行合并数目和列合并数目
-                }
+          }
+          return [rowspan, 1]; // 返回行合并数目和列合并数目
+        }
+      }
+      if (columnIndex === 4) { // 假设我们要合并第三列(类型列)
+        const rows = this.jyProducts;
+        let prevRow = rows[rowIndex - 1];
+        if (prevRow && row.each === prevRow.each) {
+          return [1, 0]; // 上一行与当前行相同,合并当前单元格
+        } else {
+          let rowspan = 1;
+          for (let i = rowIndex + 1; i < rows.length; i++) {
+            if (rows[i].each === row.each) {
+              rowspan++;
+            } else {
+              break;
             }
-            if (columnIndex === 4) { // 假设我们要合并第三列(类型列)
-                const rows = this.allProducts;
-                let prevRow = rows[rowIndex - 1];
-                if (prevRow && row.totalPremium === prevRow.totalPremium) {
-                    return [1, 0]; // 上一行与当前行相同,合并当前单元格
-                } else {
-                    let rowspan = 1;
-                    for (let i = rowIndex + 1; i < rows.length; i++) {
-                        if (rows[i].totalPremium === row.totalPremium) {
-                            rowspan++;
-                        } else {
-                        break;
-                        }
-                    }
-                return [rowspan, 1]; // 返回行合并数目和列合并数目
-                }
+          }
+          return [rowspan, 1]; // 返回行合并数目和列合并数目
+        }
+      }
+      if (columnIndex === 5) { // 假设我们要合并第三列(类型列)
+        const rows = this.jyProducts;
+        let prevRow = rows[rowIndex - 1];
+        if (prevRow && row.totalPremium === prevRow.totalPremium) {
+          return [1, 0]; // 上一行与当前行相同,合并当前单元格
+        } else {
+          let rowspan = 1;
+          for (let i = rowIndex + 1; i < rows.length; i++) {
+            if (rows[i].totalPremium === row.totalPremium) {
+              rowspan++;
+            } else {
+              break;
             }
-        },
-
-        // 截图粘贴
-        copybjd() {
-            html2Canvas(document.getElementById("pdfContentsDiv"), {
-                allowTaint: true,
-                taintTest: false,
-                // useCORS: true
-            }).then(function (canvas) {
-                let base64Data = "";
-                base64Data = canvas.toDataURL("image/png", 1);
-                const date = new Date();
-                const saveInfo = {
-                    download: date.getTime() + `.png`,
-                    href: base64Data,
-                };
-                const element = document.createElement("a");
-                element.style.display = "none";
-                for (const key in saveInfo) {
-                    element.setAttribute(key, saveInfo[key]);
-                }
-                document.body.appendChild(element);
-                element.click();
-                setTimeout(() => {
-                    document.body.removeChild(element);
-                }, 300);
-            });
-        },
-    }
+          }
+          return [rowspan, 1]; // 返回行合并数目和列合并数目
+        }
+      }
+    },
+    // 截图粘贴
+    copybjd() {
+      html2Canvas(document.getElementById("pdfContentsDiv"), {
+        allowTaint: true,
+        taintTest: false,
+        // useCORS: true
+      }).then(function (canvas) {
+        let base64Data = "";
+        base64Data = canvas.toDataURL("image/png", 1);
+        const date = new Date();
+        const saveInfo = {
+          download: date.getTime() + `.png`,
+          href: base64Data,
+        };
+        const element = document.createElement("a");
+        element.style.display = "none";
+        for (const key in saveInfo) {
+          element.setAttribute(key, saveInfo[key]);
+        }
+        document.body.appendChild(element);
+        element.click();
+        setTimeout(() => {
+          document.body.removeChild(element);
+        }, 300);
+      });
+    },
+  }
 }
 </script>
+
 <style scoped lang="scss">
+.tableInfo {
+  margin-bottom: 20px;
+
+  .header {
+    background: #FFD6D7;
+    color: #000;
+    font-size: 16px;
+    font-weight: bold;
+    padding: 18px 20px;
+    box-sizing: border-box;
+    border: 1px solid #000;
+    border-bottom: none;
+  }
+}
+
 .vehicle {
-    li {
-        width: 33%;
-        padding-top: 13px;
-        display: inline-block;
-    }
+  li {
+    width: 33%;
+    padding-top: 13px;
+    display: inline-block;
+  }
 
-    span {
-        color: #868B98;
-    }
+  span {
+    color: #868B98;
+  }
 
-    margin: 10px 0 20px 0
+  margin: 10px 0 20px 0
 }
 
 .dialog-footer {
-    button {
-        width: 96px;
-        text-align: center;
-    }
+  button {
+    width: 96px;
+    text-align: center;
+  }
 }
 
 .quotation-title {
-    color: var(--themeColor);
-    font-weight: bold;
-    font-size: 16px;
+  color: var(--themeColor);
+  font-weight: bold;
+  font-size: 16px;
 }
-.payable_amount{
-    margin-top: 15px;
-    text-align: right;
-    padding: 5px 10px 0 0;
-    background: rgba(212,36,38,0.06);
-    border-bottom: 4px  #D42426 solid;
-    h3>span{
-        margin-left: 50px;
-    }
+
+.payable_amount {
+  margin-top: 15px;
+  text-align: right;
+  padding: 5px 10px 0 0;
+  background: rgba(212, 36, 38, 0.06);
+  border-bottom: 4px #D42426 solid;
+
+  h3>span {
+    margin-left: 50px;
+  }
 }
+
 /deep/ {
-    .el-dialog__header {
-        padding: 0;
+  .el-dialog__header {
+    padding: 0;
 
-    }
+  }
 
-    .el-dialog__body {
-        padding: 0;
-        border-bottom: 1px solid #EEF1F6
-    }
+  .el-dialog__body {
+    padding: 0;
+    border-bottom: 1px solid #EEF1F6
+  }
 
-    .el-descriptions__body {
-        padding: 0
-    }
+  .el-descriptions-item__label.is-bordered-label {
+    color: #000;
+    font-weight: bold;
+  }
 
-    .el-descriptions__body .el-descriptions__table .el-descriptions-item__cell {
-        text-align: center;
-    }
+  .el-descriptions .is-bordered .el-descriptions-item__cell {
+    text-align: center;
+    border: 1px solid #000;
+  }
 
-    .el-descriptions-item__content {
-        color: #333333;
-        font-weight: bold;
+  .el-descriptions-row {
+    .my-label {
+      background: #FFD6D7;
+      color: #000;
+      font-weight: bold;
     }
 
-    .el-descriptions-item__label.is-bordered-label {
-        background: var(--themeColor);
-        color: #fff;
+    .my-content {
+      color: #D42426;
+      font-weight: bold;
     }
-
+  }
 }
 </style>

+ 431 - 228
src/views/Core/components/quotationDialogPro.vue

@@ -1,25 +1,65 @@
 <template>
-     <el-dialog
-      :visible.sync="dialogVisible"
-      width="1080px"
-      class="quotation_style"
-    >
-        <div id="pdfContentsDiv" style="padding: 25px;">
-            <div slot="title" class="dialog-title quotation-title">
-                <img
-                :src="queryOrders.logoImg"
-                class="align"
-                alt
-                style="width: 28px; height: 28px;vertical-align: middle;"
-            />
-                <span style="color:#000">{{queryOrders.inscompany}}-报价单</span>
-            </div>
-            <div style="border: 1px solid #000000;margin:10px 0">
-                <div  class="quotation_title">
-                    <div style="font-weight: 500;font-size: 24px;margin-bottom:5px">{{queryOrders.inscompany}}报价单</div>
-                    <div>报价时间:{{ queryOrders.createtime }}</div>
-                </div>
-            <div class="vehicle">
+  <el-dialog :visible.sync="dialogVisible" width="1080px" class="quotation_style">
+    <div id="pdfContentsDiv" style="padding: 25px;">
+      <div slot="title" class="dialog-title quotation-title">
+        <img :src="queryOrders.logoImg" class="align" alt style="width: 28px; height: 28px;vertical-align: middle;" />
+        <span style="color:#000">{{ queryOrders.inscompany }}-报价单</span>
+      </div>
+      <div style="border: 1px solid #000000;margin:10px 0">
+        <div class="quotation_title">
+          <div style="font-weight: 500;font-size: 24px;margin-bottom:5px">{{ queryOrders.inscompany }}报价单</div>
+          <div class="flex j-s a-c" style="padding:0 20px">
+            <div>订单号:{{ queryOrders.orderno }}</div>
+            <div>报价时间:{{ queryOrders.createtime }}</div>
+          </div>
+        </div>
+        <div style="margin:16px 0">
+          <div class="tableInfo flex ">
+            <div class="header flex a-c j-c">车辆信息</div>
+            <el-descriptions :column="3" border style="width: calc(100% - 100px);">
+              <el-descriptions-item label="车牌号">{{
+                queryOrders.carinfo.licenseNo }}</el-descriptions-item>
+              <el-descriptions-item label="车架号">{{ queryOrders.carinfo.vinNo }}</el-descriptions-item>
+              <el-descriptions-item label="发动机号">{{ queryOrders.carinfo.engineNo }}</el-descriptions-item>
+              <el-descriptions-item label="座位数">
+                {{ queryOrders.carinfo.seatCount }}
+              </el-descriptions-item>
+              <el-descriptions-item label="车型" :span="2">{{ queryOrders.carinfo.modelcname }}</el-descriptions-item>
+              <el-descriptions-item label="注册日期" :span="1.5">{{ queryOrders.carinfo.registerDate }}</el-descriptions-item>
+              <el-descriptions-item label="发证日期" :span="1.5">{{ queryOrders.carinfo.issueDate }}</el-descriptions-item>
+            </el-descriptions>
+          </div>
+          <div class="tableInfo flex ">
+            <div class="header flex a-c j-c">投被保人信息</div>
+            <el-descriptions :column="3" border style="width: calc(100% - 100px);">
+              <el-descriptions-item label="车主姓名">{{
+                queryOrders.ownerinfo.name }}</el-descriptions-item>
+              <el-descriptions-item label="投保人姓名">{{ queryOrders.applyinfo.name }}</el-descriptions-item>
+              <el-descriptions-item label="被保人姓名">{{ queryOrders.insureinfo.name }}</el-descriptions-item>
+              <el-descriptions-item label="车主身份证号">
+                {{ queryOrders.ownerinfo.identifyNumber }}
+              </el-descriptions-item>
+              <el-descriptions-item label="投保人身份证号">{{ queryOrders.applyinfo.identifyNumber }}</el-descriptions-item>
+              <el-descriptions-item label="被保人身份证号">{{ queryOrders.insureinfo.identifyNumber }}</el-descriptions-item>
+            </el-descriptions>
+          </div>
+          <div class="tableInfo flex ">
+            <div class="header flex a-c j-c">投保信息</div>
+            <el-descriptions :column="2" border style="width: calc(100% - 100px);">
+              <el-descriptions-item v-if="queryOrders.jqstartdate && queryOrders.jqenddate" label="交强险起保日期">{{
+                queryOrders.jqstartdate }}</el-descriptions-item>
+              <el-descriptions-item v-if="queryOrders.jqstartdate && queryOrders.jqenddate" label="交强险终保日期">{{
+                queryOrders.jqenddate }}</el-descriptions-item>
+              <el-descriptions-item v-if="queryOrders.systartdate && queryOrders.syenddate" label="商业险起保日期">{{
+                queryOrders.systartdate }}</el-descriptions-item>
+              <el-descriptions-item v-if="queryOrders.systartdate && queryOrders.syenddate" label="商业险终保日期">
+                {{ queryOrders.syenddate }}
+              </el-descriptions-item>
+            </el-descriptions>
+          </div>
+        </div>
+
+        <!-- <div class="vehicle">
                 <li>
                     <span>订单号:</span>{{ queryOrders.orderno }}
                 </li>
@@ -47,15 +87,15 @@
                 <li>
                     <span>座位数:</span>{{ queryOrders.carinfo.seatCount }}
                 </li>
-               
+
                 <li style="width: 100%;">
                     <span>车辆交强险保险期间:</span>{{ queryOrders.jqstartdate }} 至 {{ queryOrders.jqenddate }}
                 </li>
                 <li style="width: 100%;" v-if="queryOrders.systartdate &&queryOrders.syenddate">
                     <span>车辆商业险保险期间:</span>{{ queryOrders.systartdate }} 至 {{ queryOrders.syenddate }}
                 </li>
-            </div>
-            <!-- <div class="quotation-style tax-arrears" v-if="queryOrders.kindinfo && queryOrders.kindinfo.length>0">
+            </div> -->
+        <!-- <div class="quotation-style tax-arrears" v-if="queryOrders.kindinfo && queryOrders.kindinfo.length>0">
                 <b>商业险险别</b>
                 <b>保额(元)</b>
                 <b style=" border-right:0">保费(元)</b>
@@ -85,138 +125,238 @@
                 <div v-if="queryOrders.jypremium">驾意险:<span>¥{{ queryOrders.jypremium }}</span></div>
                 <div style="font-weight: bold;">应缴金额:<span>¥{{ queryOrders.sumpremium }}</span></div>
             </div> -->
-            <el-table :data="allProducts" stripe border :span-method="objectSpanMethod"
-                :header-cell-style="{ background: 'rgba(45,77,137,0.1) ', fontWeight: 'bold', color: '#333333' }" style="width: 100%">
-                <el-table-column width="100" prop="label" align="center" label="产品类型">
-                </el-table-column>
-                <el-table-column width="450" prop="name" align="center" label="险别/名称">
-                </el-table-column>
-                <el-table-column align="center" prop="amount" label="保额">
-                    <template slot-scope="scope">
-                        <div v-if="['D4', 'SY_FJ_YBW2'].includes(scope.row.kindCode)">
-                            <span>{{ scope.row.unitAmount }}</span>/<span>{{ queryOrders.carinfo.seatCount - 1 }}座</span>
-                        </div>
-                        <div v-else-if="['MJ1', 'MJ2', 'MJ3', 'MJ4'].includes(
-                            scope.row.kindCode
-                        )
-                            ">
-                            <span>{{ scope.row.deductibleRate }}</span>
-                        </div>
-                        <div v-else-if="['TY1', 'TY2', 'TY3', 'TY4'].includes(
-                            scope.row.kindCode
-                        )
-                            ">
-                            <span>{{ scope.row.serviceTimes }}/次</span>
-                        </div>
-                        <div v-else>
-                            <span>{{ scope.row.amount }}</span>
-                        </div>
-                    </template>
-                </el-table-column>
-                <el-table-column align="center" prop="coveragePremium" label="保费(元)">
-                    <template slot-scope="scope">
-                        {{ scope.row.label=='商业险'?scope.row.coveragePremium:scope.row.label=='驾意险'?scope.row.premium:'-' }}
-                    </template>
-                </el-table-column>
-                <el-table-column align="center" prop="totalPremium" label="总计(元)">
-                    <template slot-scope="scope">
-                        <span style="color:#2D4D89 ;font-weight: bold;">{{ scope.row.totalPremium }}</span>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <div class="payable_amount">
-                <h3>
-                    <span v-if="queryOrders.sypremium">车辆商业险:{{ '¥'+ queryOrders.sypremium  }}</span>
-                    <span v-if="queryOrders.jqpremium">交强险:{{ '¥'+  queryOrders.jqpremium }}</span>
-                    <span v-if="queryOrders.taxamount">车船税:{{ '¥'+  queryOrders.taxamount  }}</span>
-                    <span v-if="queryOrders.jypremium">驾意险:{{'¥'+   queryOrders.jypremium }}</span>
-                </h3>
-                <h2>
-                    <span v-if="queryOrders.sumpremium">应缴金额:<span style="color:#2D4D89;font-size:20px">¥</span><b style="color:#2D4D89 ;font-size:26px">{{  queryOrders.sumpremium }}</b> </span>
-                </h2>
-            </div>
+        <el-table :data="allProducts" stripe border :span-method="objectSpanMethod"
+          :header-cell-style="{ background: 'rgba(45,77,137,0.1) ', fontWeight: 'bold', color: '#333333' }"
+          style="width: 100%">
+          <el-table-column width="100" prop="label" align="center" label="产品类型">
+          </el-table-column>
+          <el-table-column width="450" prop="name" align="center" label="险别/名称">
+          </el-table-column>
+          <el-table-column align="center" prop="amount" label="保额">
+            <template slot-scope="scope">
+              <div v-if="['D4', 'SY_FJ_YBW2'].includes(scope.row.kindCode)">
+                <span>{{ scope.row.unitAmount }}</span>/<span>{{ queryOrders.carinfo.seatCount - 1 }}座</span>
+              </div>
+              <div v-else-if="['MJ1', 'MJ2', 'MJ3', 'MJ4'].includes(
+                scope.row.kindCode
+              )
+                ">
+                <span>{{ scope.row.deductibleRate }}</span>
+              </div>
+              <div v-else-if="['TY1', 'TY2', 'TY3', 'TY4'].includes(
+                scope.row.kindCode
+              )
+                ">
+                <span>{{ scope.row.serviceTimes }}/次</span>
+              </div>
+              <div v-else>
+                <span>{{ scope.row.amount }}</span>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="coveragePremium" label="保费(元)">
+            <template slot-scope="scope">
+              {{ scope.row.label == '商业险' ? scope.row.coveragePremium : '-'
+              }}
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="totalPremium" label="总计(元)">
+            <template slot-scope="scope">
+              <span style="color:#2D4D89 ;font-weight: bold;font-size: 16px;">{{ scope.row.totalPremium }}</span>
+            </template>
+          </el-table-column>
+        </el-table>
+        <el-table :data="jyProducts" stripe border :span-method="objectSpanMethod1"
+        :header-cell-style="{ background: 'rgba(45,77,137,0.1) ', fontWeight: 'bold', color: '#333333' }" style="width: 100%">
+        <el-table-column width="100" prop="label" align="center" label="驾意险名称">
+        </el-table-column>
+        <el-table-column width="450" prop="name" align="center" label="保险责任">
+        </el-table-column>
+        <el-table-column align="center" prop="amount" label="保额"></el-table-column>
+        <el-table-column align="center" prop="premium" label="保费(元)">
+          <template slot-scope="scope">
+            {{
+              scope.row.premium && scope.row.premium != 0 ? scope.row.premium : '-'
+            }}
+          </template>
+        </el-table-column>
+        <el-table-column align="center" prop="each" label="每份">
+        </el-table-column>
+        <el-table-column align="center" prop="totalPremium" label="总计(元)">
+          <template slot-scope="scope">
+            <span style="color:#2D4D89;font-weight: bold;font-size: 16px;">{{ queryOrders.jypremium /
+            (queryOrders.jyQuantity ? queryOrders.jyQuantity : 1)
+          }}/每份</span>
+          </template>
+        </el-table-column>
+      </el-table>
+        <div class="tableInfo">
+          <el-descriptions direction="vertical" :column="5" border>
+            <el-descriptions-item label="驾意险名称" label-class-name="my-label">{{ queryOrders.jyName
+            }}</el-descriptions-item>
+            <el-descriptions-item label="座位数" label-class-name="my-label">{{ queryOrders.carinfo.seatCount
+            }}座</el-descriptions-item>
+            <el-descriptions-item label="份数" label-class-name="my-label">{{ queryOrders.jyQuantity ? queryOrders.jyQuantity : 1
+            }}份</el-descriptions-item>
+            <el-descriptions-item label="每份" label-class-name="my-label">{{ queryOrders.jypremium /
+              (queryOrders.jyQuantity ? queryOrders.jyQuantity : 1)
+            }}/每份
+            </el-descriptions-item>
+            <el-descriptions-item label="合计(元)" label-class-name="my-label" content-class-name="my-content">合计:{{
+              queryOrders.jypremium }}</el-descriptions-item>
+          </el-descriptions>
+        </div>
+        <div class="payable_amount">
+          <h3>
+            <span v-if="queryOrders.sypremium">车辆商业险:{{ '¥' + queryOrders.sypremium }}</span>
+            <span v-if="queryOrders.jqpremium">交强险:{{ '¥' + queryOrders.jqpremium }}</span>
+            <span v-if="queryOrders.taxamount">车船税:{{ '¥' + queryOrders.taxamount }}</span>
+            <span v-if="queryOrders.jypremium">驾意险:{{ '¥' + queryOrders.jypremium }}</span>
+          </h3>
+          <h2>
+            <span v-if="queryOrders.sumpremium">应缴金额:<span style="color:#2D4D89;font-size:20px">¥</span><b
+                style="color:#2D4D89 ;font-size:26px">{{ queryOrders.sumpremium }}</b> </span>
+          </h2>
         </div>
-        <div >注:本报价单仅供参考,最终以出单价格为准。</div>
+      </div>
+      <div>注:本报价单仅供参考,最终以出单价格为准。</div>
 
     </div>
     <span slot="footer" class="dialog-footer">
-        <el-button type="primary" class="blue_color" size="small" @click="copybjd()">截图</el-button>
-        <el-button size="small" class="blueplain_color"  @click="dialogVisible = false">关闭</el-button>
+      <el-button type="primary" class="blue_color" size="small" @click="copybjd()">截图</el-button>
+      <el-button size="small" class="blueplain_color" @click="dialogVisible = false">关闭</el-button>
     </span>
-    </el-dialog>
+  </el-dialog>
 </template>
 <script>
 import html2Canvas from "html2canvas";
 
 export default {
   name: "quotationDialog",
-    props:{
-        queryOrders:{
-            type:Object,
-            default:{}
-        }
+  props: {
+    queryOrders: {
+      type: Object,
+      default: {}
+    }
+  },
+  data() {
+    return {
+      dialogVisible: false,
+      logoImg: '',
+      allProducts: [],
+      jyProducts: [],
+    }
+  },
+  created() {
+  },
+  methods: {
+    setBackupVisible: function (backupVisible) {
+      this.dialogVisible = backupVisible
+      this.queryOrders.ownerinfo.identifyNumber=this.queryOrders.ownerinfo.identifyNumber.slice(0,4)+'******'+this.queryOrders.ownerinfo.identifyNumber.slice(14,18);
+      this.queryOrders.applyinfo.identifyNumber=this.queryOrders.applyinfo.identifyNumber.slice(0,4)+'******'+this.queryOrders.applyinfo.identifyNumber.slice(14,18);
+      this.queryOrders.insureinfo.identifyNumber=this.queryOrders.insureinfo.identifyNumber.slice(0,4)+'******'+this.queryOrders.insureinfo.identifyNumber.slice(14,18);
+      let data = JSON.parse(JSON.stringify(this.queryOrders))
+      data.jqInsuranceType.forEach(e => { e.label = '交强险'; e.totalPremium = data.jqpremium });
+      if ((data.kindinfo && data.kindinfo.length > 0) || (data.accidentInfo && data.accidentInfo.length > 0)) {
+        data.kindinfo && data.kindinfo.length > 0 ? data.kindinfo.forEach(el => { el.label = '商业险', el.name = el.kindName; el.totalPremium = data.sypremium }) : data.kindinfo
+        data.accidentInfo && data.accidentInfo.length > 0 ? data.accidentInfo.forEach(e => { e.label = '驾意险'; e.totalPremium = data.jypremium; e.each = "每份" }) : data.accidentInfo
+        this.allProducts = data.jqInsuranceType.concat(data.kindinfo && data.kindinfo.length > 0 ? data.kindinfo : [])
+        this.jyProducts = data.accidentInfo && data.accidentInfo.length > 0 ? data.accidentInfo : [];
+      }
+      else {
+        this.allProducts = data.jqInsuranceType
+      }
     },
-    data(){
-        return{
-            dialogVisible:false,
-            logoImg:'',
-            allProducts:[]
+    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
+      if (columnIndex === 0) { // 假设我们要合并第三列(类型列)
+        const rows = this.allProducts;
+        let prevRow = rows[rowIndex - 1];
+        if (prevRow && row.label === prevRow.label) {
+          return [1, 0]; // 上一行与当前行相同,合并当前单元格
+        } else {
+          let rowspan = 1;
+          for (let i = rowIndex + 1; i < rows.length; i++) {
+            if (rows[i].label === row.label) {
+              rowspan++;
+            } else {
+              break;
+            }
+          }
+          return [rowspan, 1]; // 返回行合并数目和列合并数目
         }
-    },
-    created(){
-    },
-    methods:{
-        setBackupVisible: function (backupVisible) {
-            this.dialogVisible = backupVisible
-            let data = JSON.parse(JSON.stringify(this.queryOrders))
-            data.jqInsuranceType.forEach(e => {e.label = '交强险';e.totalPremium=data.jqpremium});
-            if((data.kindinfo && data.kindinfo.length > 0)  || (data.accidentInfo && data.accidentInfo.length > 0)){
-                data.kindinfo && data.kindinfo.length > 0 ? data.kindinfo.forEach(el => {el.label = '商业险', el.name = el.kindName;el.totalPremium=data.sypremium}) : data.kindinfo
-                data.accidentInfo && data.accidentInfo.length > 0 ? data.accidentInfo.forEach(e => {e.label = '驾意险';e.totalPremium=data.jypremium}) : data.accidentInfo
-                this.allProducts =data.jqInsuranceType.concat(data.kindinfo && data.kindinfo.length > 0?data.kindinfo:[],data.accidentInfo && data.accidentInfo.length > 0? data.accidentInfo:[])
-
+      }
+      if (columnIndex === 4) { // 假设我们要合并第三列(类型列)
+        const rows = this.allProducts;
+        let prevRow = rows[rowIndex - 1];
+        if (prevRow && row.totalPremium === prevRow.totalPremium) {
+          return [1, 0]; // 上一行与当前行相同,合并当前单元格
+        } else {
+          let rowspan = 1;
+          for (let i = rowIndex + 1; i < rows.length; i++) {
+            if (rows[i].totalPremium === row.totalPremium) {
+              rowspan++;
+            } else {
+              break;
             }
-            else{
-                this.allProducts=data.jqInsuranceType
+          }
+          return [rowspan, 1]; // 返回行合并数目和列合并数目
+        }
+      }
+    },
+    objectSpanMethod1({ row, column, rowIndex, columnIndex }) {
+      if (columnIndex === 0) { // 假设我们要合并第三列(类型列)
+        const rows = this.jyProducts;
+        let prevRow = rows[rowIndex - 1];
+        if (prevRow && row.label === prevRow.label) {
+          return [1, 0]; // 上一行与当前行相同,合并当前单元格
+        } else {
+          let rowspan = 1;
+          for (let i = rowIndex + 1; i < rows.length; i++) {
+            if (rows[i].label === row.label) {
+              rowspan++;
+            } else {
+              break;
             }
-        },
-        objectSpanMethod({ row, column, rowIndex, columnIndex }) {
-            if (columnIndex === 0) { // 假设我们要合并第三列(类型列)
-                const rows = this.allProducts;
-                let prevRow = rows[rowIndex - 1];
-                if (prevRow && row.label === prevRow.label) {
-                    return [1, 0]; // 上一行与当前行相同,合并当前单元格
-                } else {
-                    let rowspan = 1;
-                    for (let i = rowIndex + 1; i < rows.length; i++) {
-                        if (rows[i].label === row.label) {
-                            rowspan++;
-                        } else {
-                        break;
-                        }
-                    }
-                return [rowspan, 1]; // 返回行合并数目和列合并数目
-                }
+          }
+          return [rowspan, 1]; // 返回行合并数目和列合并数目
+        }
+      }
+      if (columnIndex === 4) { // 假设我们要合并第三列(类型列)
+        const rows = this.jyProducts;
+        let prevRow = rows[rowIndex - 1];
+        if (prevRow && row.each === prevRow.each) {
+          return [1, 0]; // 上一行与当前行相同,合并当前单元格
+        } else {
+          let rowspan = 1;
+          for (let i = rowIndex + 1; i < rows.length; i++) {
+            if (rows[i].each === row.each) {
+              rowspan++;
+            } else {
+              break;
             }
-            if (columnIndex === 4) { // 假设我们要合并第三列(类型列)
-                const rows = this.allProducts;
-                let prevRow = rows[rowIndex - 1];
-                if (prevRow && row.totalPremium === prevRow.totalPremium) {
-                    return [1, 0]; // 上一行与当前行相同,合并当前单元格
-                } else {
-                    let rowspan = 1;
-                    for (let i = rowIndex + 1; i < rows.length; i++) {
-                        if (rows[i].totalPremium === row.totalPremium) {
-                            rowspan++;
-                        } else {
-                        break;
-                        }
-                    }
-                return [rowspan, 1]; // 返回行合并数目和列合并数目
-                }
+          }
+          return [rowspan, 1]; // 返回行合并数目和列合并数目
+        }
+      }
+      if (columnIndex === 5) { // 假设我们要合并第三列(类型列)
+        const rows = this.jyProducts;
+        let prevRow = rows[rowIndex - 1];
+        if (prevRow && row.totalPremium === prevRow.totalPremium) {
+          return [1, 0]; // 上一行与当前行相同,合并当前单元格
+        } else {
+          let rowspan = 1;
+          for (let i = rowIndex + 1; i < rows.length; i++) {
+            if (rows[i].totalPremium === row.totalPremium) {
+              rowspan++;
+            } else {
+              break;
             }
-        },
-        // 截图粘贴
+          }
+          return [rowspan, 1]; // 返回行合并数目和列合并数目
+        }
+      }
+    },
+    // 截图粘贴
     copybjd() {
       html2Canvas(document.getElementById("pdfContentsDiv"), {
         allowTaint: true,
@@ -242,116 +382,179 @@ export default {
         }, 300);
       });
     },
-    }
+  }
 }
 </script>
 <style scoped lang="scss">
-.vehicle{
-    li{
-        width: 49%;
-        padding-top: 13px;
-        display: inline-block;
-    }
-    span{
-       color: #868B98 ;
-    }
-    margin: 10px 0 20px 5px
-}
-.dialog-footer{
-    button{
-        width: 96px;
-        text-align: center;
-    }
-}
-.quotation-title{
-    color: var(--themeColor);
-    font-weight: bold;
+.tableInfo {
+  .header {
+    width: 100px;
+    background: #EAEDF3;
+    color: #000;
+    padding: 0 18px;
+    box-sizing: border-box;
+    text-align: center;
     font-size: 16px;
+    font-weight: bold;
+    border: 1px solid #000;
+    border-left: none;
+    border-right: none;
+  }
 }
-.quotation_title{
+
+.vehicle {
+  li {
+    width: 49%;
+    padding-top: 13px;
+    display: inline-block;
+  }
+
+  span {
+    color: #868B98;
+  }
+
+  margin: 10px 0 20px 5px
+}
+
+.dialog-footer {
+  button {
+    width: 96px;
     text-align: center;
-    padding: 10px 0;
-    border-bottom: 1px solid #000000;
+  }
 }
-.tax-arrears{
-    b,span{
-        width: 33.3%;
-    }
+
+.quotation-title {
+  color: var(--themeColor);
+  font-weight: bold;
+  font-size: 16px;
 }
-.quotation-style{
-    font-size: 0;
-    b{
-        font-size: 14px;
-        border-top: 1px solid #000 ;
-    }
-    b,span{
-        display: inline-block;
-        box-sizing: border-box;
-        width: 33.3%;
-        text-align: center;
-        line-height: 40px;
-        border-bottom: 1px solid #000 ;
-        border-right: 1px solid #000 ;
-        font-size: 14px;
-    }
-    span:last-child{
-        border-right:0;
-        // border-bottom: 1px solid #000 ;
-    }
+
+.quotation_title {
+  text-align: center;
+  padding: 10px 0;
+  color: #000;
+  border-bottom: 1px solid #000000;
+}
+
+.tax-arrears {
+
+  b,
+  span {
+    width: 33.3%;
+  }
 }
-.blue_color{
+
+.quotation-style {
+  font-size: 0;
+
+  b {
+    font-size: 14px;
+    border-top: 1px solid #000;
+  }
+
+  b,
+  span {
+    display: inline-block;
+    box-sizing: border-box;
+    width: 33.3%;
+    text-align: center;
+    line-height: 40px;
+    border-bottom: 1px solid #000;
+    border-right: 1px solid #000;
+    font-size: 14px;
+  }
+
+  span:last-child {
+    border-right: 0;
+    // border-bottom: 1px solid #000 ;
+  }
+}
+
+.blue_color {
   color: #fff;
   background: #2D4D89;
   border: 1px solid #2D4D89;
 }
-.blueplain_color{
+
+.blueplain_color {
   color: #2D4D89;
   background: #EAEDF1;
   border: 1px solid #EAEDF1;
 }
-.money_style{
-    text-align: right ;
-    div{
-        line-height: 30px;
-    }
-    span{
-        display: inline-block;
-        width: 100px;
-        text-align: left;
-    }
+
+.money_style {
+  text-align: right;
+
+  div {
+    line-height: 30px;
+  }
+
+  span {
+    display: inline-block;
+    width: 100px;
+    text-align: left;
+  }
 }
-.payable_amount{
-    margin-top: 15px;
-    text-align: right;
-    padding-right: 10px;
-    // padding: 5px 10px 0 0;
-    h3>span{
-        margin-left: 50px;
-    }
+
+.payable_amount {
+  margin-top: 15px;
+  text-align: right;
+  padding-right: 10px;
+
+  // padding: 5px 10px 0 0;
+  h3>span {
+    margin-left: 50px;
+  }
 }
+
 /deep/ {
-    .el-dialog__header{
-        padding: 0 ;
+  .el-table td.el-table__cell,
+  .el-table th.el-table__cell.is-leaf {
+    border-bottom: 1px solid #000;
+  }
 
+  .el-table--border .el-table__cell,
+  .el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed {
+    border-right: 1px solid #000;
+  }
+
+  .el-table--border,
+  .el-table--group {
+    border-top: 1px solid #000;
+  }
+
+  .el-dialog__header {
+    padding: 0;
+
+  }
+
+  .el-dialog__body {
+    padding: 0;
+    border-bottom: 1px solid #EEF1F6
+  }
+
+  .el-descriptions-item__label.is-bordered-label {
+    color: #000;
+    font-weight: bold;
+  }
+
+  .el-descriptions .is-bordered .el-descriptions-item__cell {
+    text-align: center;
+    border: 1px solid #000;
+  }
+
+  .el-descriptions-row {
+    .my-label {
+      background: #EAEDF3;
+      color: #000;
+      font-weight: bold;
     }
-    .el-dialog__body{
-        padding: 0;
-        border-bottom: 1px solid #EEF1F6
-    }
-     .el-descriptions__body{
-        padding:0
-     }
-    .el-descriptions__body .el-descriptions__table .el-descriptions-item__cell{
-        text-align: center;
-    }
-    .el-descriptions-item__content{
-        color: #333333 ;
-        font-weight: bold;
-    }
-    .el-descriptions-item__label.is-bordered-label{
-        background: var(--themeColor);
-        color: #fff;
+
+    .my-content {
+      color: #2D4D89;
+      font-weight: bold;
+      font-size: 18px;
     }
+  }
 
-}
-</style>
+}</style>

+ 59 - 0
src/views/FinancialManagement/CarInsurance/CompanySettlement/CarInsurance/DocumentaryFeesDetail.vue

@@ -434,6 +434,23 @@
         >
       </span>
     </el-dialog>
+    <el-dialog :visible.sync="importVisible" title="批量导入" width="25%">
+      <el-upload
+        style="margin-bottom: 10px"
+        action="#"
+        class="upload-demo"
+        :limit="1"
+        :auto-upload="false"
+        :on-change="drivinguploadExcel"
+        ref="upload3"
+        :file-list="excelFileList"
+      >
+        <el-button size="small" type="primary">点击上传</el-button>
+      </el-upload>
+      <el-button size="small" type="primary" @click="templateDownload(1)"
+        >模板下载</el-button
+      >
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -676,6 +693,12 @@ export default {
             return this.handExport();
           },
         },
+        {
+          name: "增加类型导入",
+          click: (row, index) => {
+            return this.addTypeImport();
+          },
+        },
       ],
       tableData: [],
       pageData: {
@@ -965,6 +988,8 @@ export default {
         isPaginationShow: true,
       },
       addTypeList: [],
+      importVisible: false,
+      excelFileList: [],
     };
   },
   created() {
@@ -1023,6 +1048,37 @@ export default {
     });
   },
   methods: {
+    drivinguploadExcel(file, fileList) {
+      this.progressPercent = 0;
+      const params = new FormData(); // 声明formData数据类型
+
+      params.append("file", file.raw);
+      params.append("type", "2");
+
+      this.$api.task.addTypeImportExcel(params).then((res) => {
+        if (res.code == "200") {
+          this.excelFileList = fileList;
+          this.progressPercent = 100;
+          this.findPage();
+          this.importVisible = false;
+        } else {
+          this.excelFileList = [];
+          this.progressPercent = 0;
+          this.$message.error(res.msg);
+          this.findPage();
+        }
+      });
+    },
+    //增加类型批量导入
+    addTypeImport() {
+      this.importVisible = true;
+      this.excelFileList = [];
+    },
+    templateDownload() {
+      let a = document.createElement("a");
+      a.href = `${process.env.BASE_URL}/template/js/cxgd.xls`;
+      a.click();
+    },
     haldDelete(row) {
       this.$confirm("是否确认删除?", "提示", {
         confirmButtonText: "确定",
@@ -1509,6 +1565,9 @@ export default {
 </script>
 
 <style scoped>
+.upload-demo {
+  /* display: inline-block; */
+}
 .avatar {
   border: 1px dashed #d9d9d9;
   padding: 5px;

+ 64 - 4
src/views/FinancialManagement/CarInsurance/CompanySettlement/CarInsurance/HandlingFees.vue

@@ -467,6 +467,23 @@
       >
       </el-progress>
     </el-dialog>
+    <el-dialog :visible.sync="importVisible" title="批量导入" width="25%">
+      <el-upload
+        style="margin-bottom: 10px"
+        action="#"
+        class="upload-demo"
+        :limit="1"
+        :auto-upload="false"
+        :on-change="drivinguploadExcel"
+        ref="upload4"
+        :file-list="excelFileList"
+      >
+        <el-button size="small" type="primary">点击上传</el-button>
+      </el-upload>
+      <el-button size="small" type="primary" @click="templateDownload(1)"
+        >模板下载</el-button
+      >
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -485,6 +502,7 @@ export default {
   },
   data() {
     return {
+      excelFileList: [],
       confirmDisabled: false,
       riskcodeList: [],
       formListbatch: [
@@ -997,7 +1015,14 @@ export default {
             return this.handExport();
           },
         },
+        {
+          name: "增加类型导入",
+          click: (row, index) => {
+            return this.addTypeImport();
+          },
+        },
       ],
+      importVisible: false,
       tableData: [],
       dialogVisible: false,
       pageData: {
@@ -1082,6 +1107,32 @@ export default {
     });
   },
   methods: {
+    drivinguploadExcel(file, fileList) {
+      this.progressPercent = 0;
+      const params = new FormData(); // 声明formData数据类型
+
+      params.append("file", file.raw);
+      params.append("type", "1");
+
+      this.$api.task.addTypeImportExcel(params).then((res) => {
+        if (res.code == "200") {
+          this.excelFileList = fileList;
+          this.progressPercent = 100;
+          this.findPage();
+          this.importVisible = false;
+        } else {
+          this.excelFileList = [];
+          this.progressPercent = 0;
+          this.$message.error(res.msg);
+          this.findPage();
+        }
+      });
+    },
+    //增加类型批量导入
+    addTypeImport() {
+      this.importVisible = true;
+      this.excelFileList = [];
+    },
     agrmentlist() {
       this.$api.task.findPtlAgreementListNew({ type: "2" }).then((res) => {
         this.agreementTypeoptions = res.data;
@@ -1519,10 +1570,16 @@ export default {
     handleSearchListbatch(data) {
       this.findPagegbatch(data);
     },
-    templateDownload() {
-      let a = document.createElement("a");
-      a.href = `${process.env.BASE_URL}/template/handlingFeeTemplate.xlsx`;
-      a.click();
+    templateDownload(type) {
+      if (type != 1) {
+        let a = document.createElement("a");
+        a.href = `${process.env.BASE_URL}/template/handlingFeeTemplate.xlsx`;
+        a.click();
+      } else {
+        let a = document.createElement("a");
+        a.href = `${process.env.BASE_URL}/template/js/cxsxf.xls`;
+        a.click();
+      }
     },
     haldUpload(row) {
       this.formDataId = row.id;
@@ -1560,6 +1617,9 @@ export default {
 </script>
 
 <style scoped>
+.upload-demo {
+  /* display: inline-block; */
+}
 .customStyle {
   margin-bottom: 20px;
   font-size: 14px;

+ 59 - 0
src/views/FinancialManagement/CarInsurance/CompanySettlement/NoCarInsurance/DocumentaryFeesDetail.vue

@@ -398,6 +398,23 @@
         >
       </span>
     </el-dialog>
+    <el-dialog :visible.sync="importVisible" title="批量导入" width="25%">
+      <el-upload
+        style="margin-bottom: 10px"
+        action="#"
+        class="upload-demo"
+        :limit="1"
+        :auto-upload="false"
+        :on-change="drivinguploadExcel"
+        ref="upload3"
+        :file-list="excelFileList"
+      >
+        <el-button size="small" type="primary">点击上传</el-button>
+      </el-upload>
+      <el-button size="small" type="primary" @click="templateDownload(1)"
+        >模板下载</el-button
+      >
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -638,7 +655,14 @@ export default {
             return this.handExport();
           },
         },
+        {
+          name: "增加类型导入",
+          click: (row, index) => {
+            return this.addTypeImport();
+          },
+        },
       ],
+      importVisible: false,
       tableData: [],
       pageData: {
         pageNum: 1,
@@ -880,6 +904,7 @@ export default {
         },
       ],
       addTypeList: [],
+      excelFileList: [],
     };
   },
   created() {
@@ -929,6 +954,37 @@ export default {
     });
   },
   methods: {
+    drivinguploadExcel(file, fileList) {
+      this.progressPercent = 0;
+      const params = new FormData(); // 声明formData数据类型
+
+      params.append("file", file.raw);
+      params.append("type", "4");
+
+      this.$api.task.addTypeImportExcel(params).then((res) => {
+        if (res.code == "200") {
+          this.excelFileList = fileList;
+          this.progressPercent = 100;
+          this.findPage();
+          this.importVisible = false;
+        } else {
+          this.excelFileList = [];
+          this.progressPercent = 0;
+          this.$message.error(res.msg);
+          this.findPage();
+        }
+      });
+    },
+    //增加类型批量导入
+    addTypeImport() {
+      this.importVisible = true;
+      this.excelFileList = [];
+    },
+    templateDownload() {
+      let a = document.createElement("a");
+      a.href = `${process.env.BASE_URL}/template/js/fcgd.xls`;
+      a.click();
+    },
     haldDelete(row) {
       this.$confirm("是否确认删除?", "提示", {
         confirmButtonText: "确定",
@@ -1392,6 +1448,9 @@ export default {
 </script>
 
 <style scoped>
+.upload-demo {
+  /* display: inline-block; */
+}
 .avatar {
   border: 1px dashed #d9d9d9;
   padding: 5px;

+ 65 - 4
src/views/FinancialManagement/CarInsurance/CompanySettlement/NoCarInsurance/HandlingFees.vue

@@ -441,6 +441,23 @@
         >
       </span>
     </el-dialog>
+    <el-dialog :visible.sync="importVisible" title="批量导入" width="25%">
+      <el-upload
+        style="margin-bottom: 10px"
+        action="#"
+        class="upload-demo"
+        :limit="1"
+        :auto-upload="false"
+        :on-change="drivinguploadExcel"
+        ref="upload4"
+        :file-list="excelFileList"
+      >
+        <el-button size="small" type="primary">点击上传</el-button>
+      </el-upload>
+      <el-button size="small" type="primary" @click="templateDownload(1)"
+        >模板下载</el-button
+      >
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -458,6 +475,7 @@ export default {
   },
   data() {
     return {
+      excelFileList: [],
       confirmDisabled: false,
       rulesAdd: {
         agreeId: [
@@ -907,7 +925,15 @@ export default {
             return this.handExport();
           },
         },
+        {
+          name: "增加类型导入",
+          click: (row, index) => {
+            return this.addTypeImport();
+          },
+        },
       ],
+      importVisible: false,
+
       tableData: [],
       selectionList: [],
       dialogVisible: false,
@@ -988,6 +1014,32 @@ export default {
     this.agrmentlist();
   },
   methods: {
+    drivinguploadExcel(file, fileList) {
+      this.progressPercent = 0;
+      const params = new FormData(); // 声明formData数据类型
+
+      params.append("file", file.raw);
+      params.append("type", "3");
+
+      this.$api.task.addTypeImportExcel(params).then((res) => {
+        if (res.code == "200") {
+          this.excelFileList = fileList;
+          this.progressPercent = 100;
+          this.findPage();
+          this.importVisible = false;
+        } else {
+          this.excelFileList = [];
+          this.progressPercent = 0;
+          this.$message.error(res.msg);
+          this.findPage();
+        }
+      });
+    },
+    //增加类型批量导入
+    addTypeImport() {
+      this.importVisible = true;
+      this.excelFileList = [];
+    },
     // 编辑
     editBtn(row) {
       this.formDataEdit = {
@@ -1277,10 +1329,16 @@ export default {
         createTimeEnd,
       });
     },
-    templateDownload() {
-      let a = document.createElement("a");
-      a.href = `${process.env.BASE_URL}/template/noHandlingFeeTemplate.xlsx`;
-      a.click();
+    templateDownload(type) {
+      if (type != 1) {
+        let a = document.createElement("a");
+        a.href = `${process.env.BASE_URL}/template/noHandlingFeeTemplate.xlsx`;
+        a.click();
+      } else {
+        let a = document.createElement("a");
+        a.href = `${process.env.BASE_URL}/template/js/fcsxf.xls`;
+        a.click();
+      }
     },
     //列表数据
     findPage(data) {
@@ -1429,6 +1487,9 @@ export default {
 </script>
 
 <style scoped>
+.upload-demo {
+  /* display: inline-block; */
+}
 .customStyle {
   margin-bottom: 20px;
   font-size: 14px;

+ 63 - 5
src/views/FinancialManagement/CarInsurance/PlatformSettlement/NonVehicleBalance.vue

@@ -881,6 +881,23 @@
         </el-table-column>
       </el-table>
     </el-dialog>
+    <el-dialog :visible.sync="importVisible" title="批量导入" width="25%">
+      <el-upload
+        style="margin-bottom: 10px"
+        action="#"
+        class="upload-demo"
+        :limit="1"
+        :auto-upload="false"
+        :on-change="drivinguploadExcel"
+        ref="upload3"
+        :file-list="excelFileList"
+      >
+        <el-button size="small" type="primary">点击上传</el-button>
+      </el-upload>
+      <el-button size="small" type="primary" @click="templateDownload(1)"
+        >模板下载</el-button
+      >
+    </el-dialog>
   </div>
 </template>
   <script>
@@ -900,6 +917,7 @@ export default {
   },
   data() {
     return {
+      excelFileList: [],
       dialogVisibleradio: false,
       tableDataRadio: {},
       fileListRadio: [],
@@ -1066,6 +1084,12 @@ export default {
             return this.handExport();
           },
         },
+        {
+          name: "增加类型导入",
+          click: (row, index) => {
+            return this.addTypeImport();
+          },
+        },
       ],
       tableConfig: {
         columns: [
@@ -1451,6 +1475,7 @@ export default {
         ],
       },
       addTypeList: [],
+      importVisible: false,
     };
   },
 
@@ -1505,6 +1530,32 @@ export default {
   },
 
   methods: {
+    drivinguploadExcel(file, fileList) {
+      this.progressPercent = 0;
+      const params = new FormData(); // 声明formData数据类型
+
+      params.append("file", file.raw);
+      params.append("type", "5");
+
+      this.$api.task.addTypeImportExcel(params).then((res) => {
+        if (res.code == "200") {
+          this.excelFileList = fileList;
+          this.progressPercent = 100;
+          this.findPage();
+          this.importVisible = false;
+        } else {
+          this.excelFileList = [];
+          this.progressPercent = 0;
+          this.$message.error(res.msg);
+          this.findPage();
+        }
+      });
+    },
+    //增加类型批量导入
+    addTypeImport() {
+      this.importVisible = true;
+      this.excelFileList = [];
+    },
     //重置表单查询信息
     handleResetForm() {
       this.formData = {};
@@ -1658,10 +1709,17 @@ export default {
           }
         });
     },
-    templateDownload() {
-      let a = document.createElement("a");
-      a.href = `${process.env.BASE_URL}/template/SettlementTemplate.xlsx`;
-      a.click();
+
+    templateDownload(type) {
+      if (type != 1) {
+        let a = document.createElement("a");
+        a.href = `${process.env.BASE_URL}/template/SettlementTemplate.xlsx`;
+        a.click();
+      } else {
+        let a = document.createElement("a");
+        a.href = `${process.env.BASE_URL}/template/js/ptjs.xls`;
+        a.click();
+      }
     },
     selectionChange(row) {
       this.selectionList = [];
@@ -1986,7 +2044,7 @@ export default {
   display: none;
 }
 .upload-demo {
-  display: inline-block;
+  // display: inline-block;
 }
 .inputType {
   width: 180px;

+ 44 - 0
src/views/FinancialManagement/CarInsurance/Verifytasks/Verifyintasks.vue

@@ -137,6 +137,27 @@
           >
         </template>
       </el-table-column>
+      <el-table-column
+        prop="checkType"
+        label="审核方式"
+        align="center"
+        width="100"
+      >
+        <template slot-scope="scope">
+          <el-tag
+            v-if="scope.row.checkType == '2'"
+            type="success"
+            size="small"
+            >自动审核</el-tag
+          >
+          <el-tag
+            v-if="scope.row.checkType == '1'"
+            type="warning"
+            size="small"
+            >人工审核</el-tag
+          >
+        </template>
+      </el-table-column>
       <el-table-column
         prop="auditUser"
         label="审核人"
@@ -483,6 +504,29 @@ export default {
           type: 'input',
           Retained: true,
         },
+        {
+          name: 'checkType',
+          label: '审核方式',
+          type: "select",
+          optionsIabel: "label",
+          optionsValue: "value",
+          options: [
+            {
+              label: "人工审核",
+              value: "1",
+            },
+            {
+              label: "自动审核",
+              value: "2",
+            },
+          ],
+        },
+        {
+          name: 'checkUser',
+          label: '审核人',
+          type: 'input',
+          Retained: true,
+        },
       ],
       orderInfo: {
         //选中的订单

+ 47 - 49
src/views/Login.vue

@@ -159,18 +159,18 @@ import { login } from "@/api/user";
 import CryptoJS from "crypto-js";
 // import { getSysList } from "../http/moudules/sys";
 
-import { sendWebsocket,closeWebsocket  } from '@/utils/websocket.js'
+import { sendWebsocket, closeWebsocket } from "@/utils/websocket.js";
 import {
   getUserIP,
   getUserLocation,
-  getAddressLocation
+  getAddressLocation,
 } from "@/utils/ipAndAddress.js";
 export default {
   name: "Login",
   inject: ["reload"],
   components: {
     ThemePicker,
-    LangSelector
+    LangSelector,
   },
   data() {
     return {
@@ -182,12 +182,12 @@ export default {
         account: "",
         password: "",
         captcha: "",
-        src: ""
+        src: "",
       },
       fieldRules: {
         account: [{ required: true, message: "请输入账号", trigger: "blur" }],
         password: [{ required: true, message: "请输入密码", trigger: "blur" }],
-        captcha: [{ required: true, message: "请输入验证码", trigger: "blur" }]
+        captcha: [{ required: true, message: "请输入验证码", trigger: "blur" }],
       },
       checked: true,
       toggleQrCode: false,
@@ -197,7 +197,7 @@ export default {
       optionList: [],
       sysId: null,
       systemType: "1", //系统类型
-      addressInfo: {} //当前登录信息
+      addressInfo: {}, //当前登录信息
     };
   },
   created() {
@@ -213,7 +213,7 @@ export default {
   },
   methods: {
     getSysList() {
-      this.$api.sys.sysDictList().then(res => {
+      this.$api.sys.sysDictList().then((res) => {
         if (res.code === 200) {
           this.optionList = [...res.data];
           this.sysId = res.data && res.data.length > 0 && res.data[0].id;
@@ -222,7 +222,7 @@ export default {
     },
     enterEvent() {
       if (this.$route.name === "登录") {
-        document.onkeydown = e => {
+        document.onkeydown = (e) => {
           const url = e.target.baseURI.match(/login/);
           if (e.keyCode == 13 && url.includes("login")) {
             this.login();
@@ -231,7 +231,6 @@ export default {
       }
     },
     login(formName) {
-      
       // let token = CryptoJS.AES.encrypt(
       //   "2856c49f-7b34-4e83-b3c8-2c37dba7cb3b",
       //   "token"
@@ -239,7 +238,7 @@ export default {
       // console.log(token);
       // window.location.href =
       //   "http://localhost:8080/#/form/agreement?token=" + token;
-      this.$refs[formName].validate(valid => {
+      this.$refs[formName].validate((valid) => {
         if (valid) {
           this.loading = true;
           let userInfo = {
@@ -247,7 +246,7 @@ export default {
             password: this.loginForm.password,
             captcha: this.loginForm.captcha.toLowerCase(),
             captchaId: this.loginForm.captchaId,
-            sysId: this.sysId
+            sysId: this.sysId,
             // systemType: this.systemType
           };
 
@@ -275,12 +274,12 @@ export default {
 
           this.$api.login
             .login2(userInfo)
-            .then(res => {
+            .then((res) => {
               if (res.code != 200) {
                 this.$message({
                   message: res.msg,
                   type: "error",
-                  duration: 2000
+                  duration: 2000,
                 });
                 if (res.code == 500 && res.msg == "验证码不正确") {
                   this.refreshCaptcha();
@@ -290,7 +289,7 @@ export default {
                   //是否保存密码
                   Cookies.set("accountInfo", {
                     account: this.loginForm.account,
-                    password: this.loginForm.password
+                    password: this.loginForm.password,
                   });
                 } else {
                   Cookies.remove("accountInfo");
@@ -302,36 +301,35 @@ export default {
                   ).toString();
 
                   window.location.href =
-                    process.env.CONSOLE_BASE_URL +
-                    "/#/agreement/index?token=" +
-                    token;
+                    process.env.CONSOLE_BASE_URL + "/#/index?token=" + token;
                   // alert(res.data);
                 } else {
                   this.getUser();
                   Cookies.set("token", res.data); // 放置token到Cookie
                   // this.submitLocation();
                   this.getDictItems();
-                  setTimeout(()=>{
-                    let userId=sessionStorage.getItem("user")
-                    let data={
-                    ...this.addressInfo,
-                    userId,
-                    systemType:this.systemType
-                  }
-                  sendWebsocket(`${process.env.SOCKET_Url}/pcWebsocket/${userId}`,data)
-                  // sendWebsocket(`/pcWebsocket/${userId}`,data)
-                  },1000)
-                  
-
+                  setTimeout(() => {
+                    let userId = sessionStorage.getItem("user");
+                    let data = {
+                      ...this.addressInfo,
+                      userId,
+                      systemType: this.systemType,
+                    };
+                    sendWebsocket(
+                      `${process.env.SOCKET_Url}/pcWebsocket/${userId}`,
+                      data
+                    );
+                    // sendWebsocket(`/pcWebsocket/${userId}`,data)
+                  }, 1000);
                 }
               }
               this.loading = false;
             })
-            .catch(res => {
+            .catch((res) => {
               this.$message({
                 message: res.message,
                 type: "error",
-                duration: 2000
+                duration: 2000,
               });
             });
         } else {
@@ -343,13 +341,13 @@ export default {
     submitLocation() {
       let location = {
         systemType: this.systemType,
-        ...this.addressInfo
+        ...this.addressInfo,
       };
-      this.$api.login.uploadLocationInfo(location).then(res => {
+      this.$api.login.uploadLocationInfo(location).then((res) => {
         if (res.code !== 200) {
           this.$message({
             message: res.msg,
-            type: "error"
+            type: "error",
           });
         }
       });
@@ -358,11 +356,11 @@ export default {
     getDictItems() {
       //--数据字典--
       // 性别
-      this.$api.dict.findByLableName("sex").then(response => {
+      this.$api.dict.findByLableName("sex").then((response) => {
         localStorage.setItem("sexOptions", JSON.stringify(response.data)); // 保存用户到本地会话
       });
       // 状态
-      this.$api.dict.findByLableName("user_status").then(response => {
+      this.$api.dict.findByLableName("user_status").then((response) => {
         localStorage.setItem(
           "user_statusoptions",
           JSON.stringify(response.data)
@@ -371,7 +369,7 @@ export default {
     },
     // 用户信息
     getUser() {
-      this.$api.user.getLoginUser().then(response => {
+      this.$api.user.getLoginUser().then((response) => {
         if (response.code == 200) {
           //头像地址拼接
           if (
@@ -394,7 +392,7 @@ export default {
           this.$message.error(response.msg);
         }
       });
-      this.$api.role.findAll().then(res => {
+      this.$api.role.findAll().then((res) => {
         localStorage.setItem("find_all", JSON.stringify(res.data));
       });
     },
@@ -412,7 +410,7 @@ export default {
       this.$refs.loginForm.resetFields();
     },
     // 切换主题
-    onThemeChange: function(themeColor) {
+    onThemeChange: function (themeColor) {
       this.$store.commit("setThemeColor", themeColor);
     },
     switchLogin() {
@@ -429,14 +427,14 @@ export default {
       let url = process.env.BASE_URL + "/scanQrCode?uuid=" + uuid;
       this.$nextTick(() => {
         this.creatQrCode(url);
-        this.$api.login.getQRCode(uuid).then(res => {
+        this.$api.login.getQRCode(uuid).then((res) => {
           this.uuid = res.data.uuid;
           this.startPolling();
         });
       });
     },
     checkScanStatus() {
-      this.$api.login.QrCodeStatusQuery(this.uuid).then(res => {
+      this.$api.login.QrCodeStatusQuery(this.uuid).then((res) => {
         if (res.data.statusCode == 20000) {
           this.tipVisibility = true;
           this.loadingCode = true;
@@ -477,10 +475,10 @@ export default {
           height: 200,
           colorDark: "#000000",
           colorLight: "#ffffff",
-          correctLevel: QRCode.CorrectLevel.H
+          correctLevel: QRCode.CorrectLevel.H,
         });
       }
-    }
+    },
   },
 
   beforeDestroy() {
@@ -490,22 +488,22 @@ export default {
   mounted() {
     this.refreshCaptcha();
     /**获取当前登录的ip地址 */
-    getUserIP(ip => {
-      getAddressLocation(ip, info => {
-        console.log(info,22222222222);
+    getUserIP((ip) => {
+      getAddressLocation(ip, (info) => {
+        console.log(info, 22222222222);
         this.addressInfo = info;
       });
     });
   },
   computed: {
     ...mapState({
-      themeColor: state => state.app.themeColor
-    })
+      themeColor: (state) => state.app.themeColor,
+    }),
   },
   //销毁函数
   destroyed() {
     document.onkeydown = null;
-  }
+  },
 };
 </script>
 

+ 76 - 45
src/views/Task/daikeComponents/KtLetter1.vue

@@ -1129,7 +1129,7 @@
                             <div class="table-list-line" style="border-right: none; padding-left: 0;" v-show="reslistitem.programme.description != '单交'">
                               <span style="margin-left: 0; font-size: 10px;">商业险</span>
                             </div>
-                            <div class="table-list-line table-list-line-last" style="border-right: none; padding-left: 0;" v-show="reslistitem.result.noExportFee">
+                            <div class="table-list-line table-list-line-last" style="border-right: none; padding-left: 0;" v-show="reslistitem.result.jyPremium">
                               <span style="margin-left: 0; font-size: 10px;">驾意险</span>
                             </div>
                           </div>
@@ -1140,7 +1140,7 @@
                             <div class="table-list-line" style="border-right: none;" v-show="reslistitem.programme.description != '单交'">
                               <span style="margin-left: 0;">{{ reslistitem.result.syExportFee ? reslistitem.result.syExportRadio : '无' }}</span>
                             </div>
-                            <div class="table-list-line table-list-line-last" style="border-right: none;"  v-show="reslistitem.result.noExportFee">
+                            <div class="table-list-line table-list-line-last" style="border-right: none;"  v-show="reslistitem.result.jyPremium">
                               <span style="margin-left: 0;">{{ reslistitem.result.noExportRadio }}</span>
                             </div>
                           </div>
@@ -1151,7 +1151,7 @@
                             <div class="table-list-line"  v-show="reslistitem.programme.description != '单交'">
                               <span style="margin-left: 0;">{{ reslistitem.result.syExportFee ? reslistitem.result.syExportFee : '无' }}</span>
                             </div>
-                            <div class="table-list-line table-list-line-last" v-show="reslistitem.result.noExportFee">
+                            <div class="table-list-line table-list-line-last" v-show="reslistitem.result.jyPremium">
                               <span style="margin-left: 0;">{{ reslistitem.result.noExportFee ? reslistitem.result.noExportFee : '无' }}</span>
                             </div>
                           </div>
@@ -1176,7 +1176,7 @@
                             <div class="table-list-line" style="border-right: none; padding-left: 0;" v-show="reslistitem.programme.description != '单交'">
                               <span style="margin-left: 0; font-size: 10px;">商业险</span>
                             </div>
-                            <div class="table-list-line table-list-line-last" style="border-right: none; padding-left: 0;" v-show="reslistitem.result.noExportFee">
+                            <div class="table-list-line table-list-line-last" style="border-right: none; padding-left: 0;" v-show="reslistitem.result.jyPremium">
                               <span style="margin-left: 0; font-size: 10px;">驾意险</span>
                             </div>
                           </div>
@@ -1376,7 +1376,7 @@
                         " v-show="reslistitem.quoteCode == '200' &&
                         !('editStatus' in reslistitem.result)
                         " type="text" size="small" style="color: #2d4d89; font-size: 14px"
-                        @click="hbsubmitdialog(reslistitem)">下单</el-button>
+                        @click="hbsubmitdialog(reslistitem, reslistindex)">下单</el-button>
                       <el-button v-show="reslistitem.quoteCode == '200'" type="text" size="small"
                         style="color: #2d4d89; font-size: 14px"
                         @click="qoutedetail(reslistitem.result.companyId)">查看详情</el-button>
@@ -3615,7 +3615,7 @@
                       </el-select>
                     </el-col>
                   </el-row>
-                  <el-table v-if="item.tableData" :data="item.tableData" border style="width: 100%; margin-top: 20px;" stripe
+                  <el-table v-if="item.tableData && item.tableData.length" :data="item.tableData" border style="width: 100%; margin-top: 20px;" stripe
                     header-cell-class-name="table-header">
                     <el-table-column prop="name" label="保险责任" align="center">
                       <template slot-scope="scope">
@@ -3730,7 +3730,7 @@
     </el-dialog>
 
     <!-- 驾意险 -->
-    <el-dialog title="调整险种" :visible.sync="addYiwaiDialogVisible" width="60%" top="5vh"
+    <el-dialog title="驾意险" :visible.sync="addYiwaiDialogVisible" width="60%" top="5vh"
     :before-close="handleCloseAddYiwai" class="addyiwai">
       <div class="typedialog-style">
         <el-card>
@@ -5665,9 +5665,13 @@ export default {
     this.getCompanyList(this.$route.query.data)
     this.onScroll();
     if (this.$route.query.data) {
-      this.jqstartDate = this.$route.query.data.jqstartdate;
-      this.jqendDate = this.$route.query.data.jqenddate;
-
+      if(this.isDateBeforeToday(this.$route.query.data.jqstartdate)){
+        this.jqstartDate = this.transformTime1();
+        this.jqendDate = this.oneYearPast1(this.jqstartDate);
+      }else{
+          this.jqstartDate = this.$route.query.data.jqstartdate;
+          this.jqendDate = this.$route.query.data.jqenddate;
+      }
       if (this.$route.query.data.jqstartdate.split(" ")[1] == "00:00:00") {
         this.immediatelyValue = false;
       } else {
@@ -5984,6 +5988,7 @@ export default {
       })
       this.totalCompanyList[this.typeDialogIndex].zxProgramme.drivingList = arr;
       this.totalCompanyList[this.typeDialogIndex].programme.drivingList = arr
+      console.log(arr, 'arr')
       this.handleCloseAddYiwai()
     },
     // 驾意输入框按钮
@@ -6010,12 +6015,11 @@ export default {
     },
     // 选中驾意
     handleChangeSelect(index) {
-      console.log(index)
       if (this.totalCompanyList[this.typeDialogIndex].cnName == 'zijin') {
         this.checkList[index].tableData = []
         this.checkList[index].detail.forEach((val) => {
           this.checkList[index].selectList.forEach((value) => {
-            if (val.projectName == value) {
+            if (val.alias == value) {
               this.checkList[index].tableData.push(val)
               this.$forceUpdate()
             }
@@ -7555,7 +7559,22 @@ export default {
     //紫金特约选择
     zijinengageChange(select, row) {
       this.zijinengageList = [];
-      this.totalCompanyList[this.typeDialogIndex].zxProgramme.teyue = []
+      if (!this.totalCompanyList[this.typeDialogIndex].zxProgramme) {
+        this.totalCompanyList[this.typeDialogIndex].zxProgramme = {       // 自选方案详情
+          description: '',
+          drivingList: [],
+          jqx: {
+            name: '交通事故强制责任险'
+          },
+          kinds: {
+            additional: [],
+            main: [],
+            service: []
+          },
+          teyue: [],
+        }
+      }
+      // this.totalCompanyList[this.typeDialogIndex].programme = {}
       this.totalCompanyList[this.typeDialogIndex].programme.teyue = []
       select.map((val) => {
         this.zijinengageList.push({
@@ -10316,7 +10335,8 @@ export default {
       });
     },
 
-    hbsubmitdialog(data) {
+    hbsubmitdialog(data, index) {
+      this.typeDialogIndex = index     // 当前的公司index
       if (this.imageList1.length == 0 && this.imageList2.length == 0) {
         this.$message({ message: "影像不全,先上传影像", type: "error" });
         return;
@@ -10593,6 +10613,7 @@ export default {
                           companyId: this.companyId,
                           engageList: this.zijinengageList,
                         })
+
                         .then((res) => {
                           if (res.code == "200") {
                             loading.close();
@@ -11064,6 +11085,16 @@ export default {
       var datastr = strYear + "-" + strMonth + "-" + strDay + " " + "00:00:00";
       return datastr;
     },
+    isDateBeforeToday(date) {
+				const inputDate = new Date(date); // 将输入的日期转换为 Date 对象
+				const today = new Date(); // 获取当前日期
+				// 比较日期是否小于当前日期
+				if (inputDate < today) {
+					return true; // 输入日期小于当前日期
+				} else {
+					return false; // 输入日期大于等于当前日期
+				}
+			},
     //时间转换
     transformTime(date) {
       var d = new Date(date);
@@ -12131,7 +12162,7 @@ export default {
       this.syendDate = this.jqendDate;
     },
     add() {
-      this.obtainProtocol();
+      // this.obtainProtocol();
       if (this.isLetter == "1") {
         this.$router.push({ path: "/letter/letter" });
       }
@@ -12164,35 +12195,35 @@ export default {
         this.bbtbcarShow = true //被保人同投保人
         // this.$refs.imageDialog.emptyList()
         this.imageList1 = [];
-            this.imageList2 = [];
-            this.imageList3 = [];
-            this.imageList4 = [];
-            this.imageList5 = [];
-            this.imageList6 = [];
-            this.imgList1 = [];
-            this.imgList2 = [];
-            this.imgList3 = [];
-            this.imgList4 = [];
-            this.imgList5 = [];
-            this.imgList6 = [];
-            this.imgList7 = [];
-            this.imgList8 = [];
-            this.imgList9 = [];
-            this.imgList10 = [];
-            this.imgList11 = [];
-            this.imgList12 = [];
-            this.imgList13 = [];
-            this.imgList14 = [];
-            this.imgList15 = [];
-            this.imgList16 = [];
-            this.imgList17 = [];
-            this.imgList18 = [];
-            this.imgList19 = [];
-            this.imgList20 = [];
-            this.imgList21 = [];
-            this.imgList22 = [];
-            this.imgList23 = [];
-            this.imgList24 = [];
+        this.imageList2 = [];
+        this.imageList3 = [];
+        this.imageList4 = [];
+        this.imageList5 = [];
+        this.imageList6 = [];
+        this.imgList1 = [];
+        this.imgList2 = [];
+        this.imgList3 = [];
+        this.imgList4 = [];
+        this.imgList5 = [];
+        this.imgList6 = [];
+        this.imgList7 = [];
+        this.imgList8 = [];
+        this.imgList9 = [];
+        this.imgList10 = [];
+        this.imgList11 = [];
+        this.imgList12 = [];
+        this.imgList13 = [];
+        this.imgList14 = [];
+        this.imgList15 = [];
+        this.imgList16 = [];
+        this.imgList17 = [];
+        this.imgList18 = [];
+        this.imgList19 = [];
+        this.imgList20 = [];
+        this.imgList21 = [];
+        this.imgList22 = [];
+        this.imgList23 = [];
+        this.imgList24 = [];
       // 清空保险公司选中的意外险
       this.zijintemplateSelection = "";
       this.zhongantemplateSelection = "";
@@ -12209,7 +12240,7 @@ export default {
         allQuantity: "1",
         quantity: "1",
       };
-
+      this.productId = ''
       this.hengbangaccidentalDrivingVo = {};
       this.huanongaccidentalDrivingVo = {};
       this.taipingaccidentalDrivingVo = {};

+ 22 - 9
src/views/Task/daikeComponents/KtOrder.vue

@@ -1294,16 +1294,29 @@ export default {
     },
     // 撤销二维码
     revokeCode(id) {
-      this.$api.letter.getRevokeQrCode(id).then((res) => {
-        if (res.code == 200) {
-          this.$message({
-            message: res.msg,
-            type: "success",
+      this.$confirm('确定撤销二维码?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          this.$api.letter.getRevokeQrCode(id).then((res) => {
+            if (res.code == 200) {
+              this.$message({
+                message: res.msg,
+                type: "success",
+              });
+              this.quotationhistorydialogVisible ? this.RadioHistoryChange() : "";
+              this.findPage();
+            }
           });
-          this.quotationhistorydialogVisible ? this.RadioHistoryChange() : "";
-          this.findPage();
-        }
-      });
+        }).catch(() => {
+          this.$message({
+            type: 'info',
+            message: '已取消撤销二维码'
+          });          
+        });
+
+      
     },
     bjdpreview(companyId, userId) {
       let params = {