wuguojie 7 месяцев назад
Родитель
Сommit
4f13b380c4

+ 64 - 1
src/views/finance/index.vue

@@ -255,11 +255,12 @@
                     <el-table-column prop="jqPremium" label="交强险" width="120"></el-table-column>
                     <el-table-column prop="syPremium" label="商业险" width="120"></el-table-column>
                     <el-table-column prop="jyPremium" label="驾意险" width="120"></el-table-column>
-                    <el-table-column label="操作" fixed="right" width="100">
+                    <el-table-column label="操作" fixed="right" width="150">
                         <template #default="scope">
 <!--                            <el-button link type="primary" size="small" @click="auditReceive(scope.row)">领取</el-button>
                             <el-button link type="primary" size="small" @click="updateSigningTime(scope.row)">更新签单时间</el-button>-->
                             <el-button link type="primary" size="small" @click="handleToDetail(scope)">详情</el-button>
+                            <el-button link type="primary" size="small" @click="handleTrack(scope)">订单轨迹</el-button>
                         </template>
                     </el-table-column>
                 </el-table>
@@ -413,6 +414,36 @@
                 </div>
             </el-tab-pane>
         </el-tabs>
+        <el-dialog
+            v-model="trackShow"
+            width="1000"
+            title="订单轨迹"
+        >
+            <el-table
+                :data="orderData"
+                height="300"
+            >
+                <el-table-column label="变更信息">
+                    <template #default="scope">
+                        {{ `${scope.row.createBy}:${scope.row.createTime}` }}
+                    </template>
+                </el-table-column>
+                <el-table-column prop="optContent" label="变更内容"></el-table-column>
+                <el-table-column prop="changeBefore" label="变更前">
+                    <template #default="scope">
+                        <span v-if="scope.row.changeBefore">{{ scope.row.changeBefore }}</span>
+                        <el-button v-else type="primary" link size="small" @click="viewDetail(scope.row)">查看明细</el-button>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="changeAfter" label="变更后">
+                    <template #default="scope">
+                        <span v-if="scope.row.changeAfter">{{ scope.row.changeAfter }}</span>
+                        <el-button v-else type="primary" link size="small" @click="viewDetail(scope.row)">查看明细</el-button>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="result" label="保司反馈"></el-table-column>
+            </el-table>
+        </el-dialog>
     </div>
 </template>
 
@@ -568,6 +599,38 @@ const handleToDetail = (scope) => {
     })
 }
 
+let orderData = ref([])
+let trackShow = ref(false)
+const handleTrack = (scope) => {
+    api.insurancePolicyApi.orderTrack({
+        orderNo: scope.row.orderNo
+    }).then((res: any) => {
+        if(res.code == 200) {
+            orderData.value = res.data
+            trackShow.value = true
+        } else {
+            ElMessage({
+                message: res.msg,
+                type: 'warning'
+            })
+        }
+    })
+}
+const viewDetail = (row) => {
+    myRouter.push({
+        name: 'InsurancePolicyViewDetail',
+        query: {
+            module: row.module,
+            subModule: row.subModule,
+            optType: row.optType,
+            createBy: row.createBy,
+            createTime: row.createTime,
+            content: row.optContent,
+            obj: row.result
+        }
+    })
+}
+
 onMounted(() => {
     institutionList();
     initCompany();

+ 128 - 53
src/views/insurancePolicy/index.vue

@@ -1116,7 +1116,7 @@
                 </div>
               </template>
               <template #default="scope">
-                <div class="result" v-if="currentRow.some(a => a.id === scope.row.id)">
+                <div class="result" v-if="currentRow.some(a => a.id === scope.row.id) && !scope.row.loading">
                   <span class="resultItem">
                     <span v-if="scope.row.quoteResult?.costs?.sumPremium">总保费:{{ scope.row.quoteResult?.costs?.sumPremium }}</span>
                     <span class="resultTips" v-if="scope.row.quoteResult?.feeNoDescription" @click="handleOpen(scope)">
@@ -1416,7 +1416,7 @@
     >
       <detail ref="JYXDetail"></detail>
     </el-dialog>
-      <el-dialog
+    <el-dialog
         v-model="specialShow"
         width="700"
         title="选择特约"
@@ -1436,6 +1436,35 @@
               <el-button type="primary" @click="handleSpecialTableDataSubmit">确定</el-button>
           </div>
       </el-dialog>
+    <el-dialog
+      v-model="underwritingMsgShow"
+      title="核保信息"
+      width="400"
+    >
+        <div style="
+          font-size: 18px;
+          color: #d42426;
+          font-weight: 700;
+          padding: 10px 30px;
+        ">
+            订单状态:已核保待缴费
+        </div>
+        <template #footer>
+            <el-button size="small" type="primary" @click="handleGetPayCode">缴费二维码</el-button>
+        </template>
+    </el-dialog>
+      <el-dialog
+              v-model="payCodeShow"
+              title="支付码"
+              width="400"
+      >
+          <div style="display: flex; align-items: center; justify-content: center">
+              <img style="width: 200px; height: 200px" :src="payCodeSrc" />
+          </div>
+          <template #footer>
+              <el-button size="small" type="primary" @click="handlePayCodeClose">关闭</el-button>
+          </template>
+      </el-dialog>
   </div>
 </template>
 
@@ -2788,11 +2817,39 @@ const handleUnderwriting = (scope) => {
   })
 }
 
+let underwritingMsgShow = ref(false)
+
 const handleUnderwritingClose = (bool, msg) => {
     underwritingShow.value = false
     if(msg) {
         quoteData.value[underwritingIndex.value].underwritingMsg = msg
     }
+    if(bool === 'success') {
+        underwritingMsgShow.value = true
+    }
+}
+
+let payCodeShow = ref(false)
+let payCodeSrc = ref('')
+const handleGetPayCode = () => {
+    api.insurancePolicyApi.getQrCode(
+        quoteData.value[underwritingIndex.value]?.quoteResult.ordersNo
+    ).then((res: any) => {
+        if(res.code == 200) {
+            payCodeSrc.value = res.data?.qrcode
+            payCodeShow.value = true
+        } else {
+            payCodeSrc.value = ''
+            ElMessage({
+                message: res.msg,
+                type: 'warning'
+            })
+        }
+    })
+}
+const handlePayCodeClose = () => {
+    payCodeSrc.value = ''
+    payCodeShow.value = false
 }
 
 // 证件识别
@@ -3124,66 +3181,84 @@ const handleSubmit = async (InsurancePolicyRefs: FormInstance | undefined, scope
         accidentalDrivings: [...brr],
         specialInfoVo: [...crr]
       }
-        api.insurancePolicyApi.quote(data).then((res: any) => {
+        api.insurancePolicyApi.imageSave({
+          order: {
+            quoteNo: insurancePolicyForm.value.order.quoteNo
+          },
+          imageVoList: insurancePolicyForm.value.imageVoList
+        }).then((res: any) => {
             if(res.code == 200) {
                 ElMessage({
-                    message: res.msg,
-                    type: 'success'
+                  message: res.msg,
+                  type: 'success'
+                })
+                api.insurancePolicyApi.quote(data).then((res: any) => {
+                    if(res.code == 200) {
+                        ElMessage({
+                            message: res.msg,
+                            type: 'success'
+                        })
+                        if(res.data) {
+                            let a = res.data.ciPremium?res.data.ciPremium:0
+                            let b = res.data.vvTax?res.data.vvTax:0
+                            let c = res.data.biPremium?res.data.biPremium:0
+                            let d = res.data.niPremium?res.data.niPremium:0
+                            res.data.quoteTotal = Number(a) + Number(b) + Number(c) + Number(d)
+                        }
+                        quoteData.value[scope.$index].discounts = [
+                            {
+                                name: '交强',
+                                additionalPremium: res.data?.feeOrders?.jqAdditionalPremium,
+                                additionalRatio:  res.data?.feeOrders?.jqAdditionalRatio,
+                                commissionPremium:  res.data?.feeOrders?.jqCommissionPremium,
+                                commissionRatio:  res.data?.feeOrders?.jqCommissionRatio,
+                                exportPremium:  res.data?.feeOrders?.jqExportPremium,
+                                exportRatio:  res.data?.feeOrders?.jqExportRatio,
+                            },{
+                                name: '商业',
+                                additionalPremium:  res.data?.feeOrders?.syAdditionalPremium,
+                                additionalRatio:  res.data?.feeOrders?.syAdditionalRatio,
+                                commissionPremium:  res.data?.feeOrders?.syCommissionPremium,
+                                commissionRatio:  res.data?.feeOrders?.syCommissionRatio,
+                                exportPremium:  res.data?.feeOrders?.syExportPremium,
+                                exportRatio:  res.data?.feeOrders?.syExportRatio,
+                            },{
+                                name: '驾意险',
+                                additionalPremium:  res.data?.feeOrders?.jyAdditionalPremium,
+                                additionalRatio:  res.data?.feeOrders?.jyAdditionalRatio,
+                                commissionPremium:  res.data?.feeOrders?.jyCommissionPremium,
+                                commissionRatio:  res.data?.feeOrders?.jyCommissionRatio,
+                                exportPremium:  res.data?.feeOrders?.jyExportPremium,
+                                exportRatio:  res.data?.feeOrders?.jyExportRatio,
+                            },
+                        ]
+                        quoteData.value[scope.$index].quoteResult = res.data
+                        loading.value = false
+                        quoteData.value[scope.$index].loading = false
+                        console.log('报价后的数据', quoteData.value)
+                    } else {
+                        ElMessage({
+                            message: res.msg,
+                            type: 'warning'
+                        })
+                        quoteData.value[scope.$index].quoteResult.failMsg = res.msg
+                        loading.value = false
+                        quoteData.value[scope.$index].loading = false
+                    }
+                    // InsurancePolicyRefs.resetFields()
+                }).catch(e => {
+                    loading.value = false
+                    quoteData.value[scope.$index].loading = false
+                    quoteData.value.forEach(a => {
+                        a.loading = false
+                    })
                 })
-                if(res.data) {
-                    let a = res.data.ciPremium?res.data.ciPremium:0
-                    let b = res.data.vvTax?res.data.vvTax:0
-                    let c = res.data.biPremium?res.data.biPremium:0
-                    let d = res.data.niPremium?res.data.niPremium:0
-                    res.data.quoteTotal = Number(a) + Number(b) + Number(c) + Number(d)
-                }
-                quoteData.value[scope.$index].discounts = [
-                    {
-                        name: '交强',
-                        additionalPremium: res.data?.feeOrders?.jqAdditionalPremium,
-                        additionalRatio:  res.data?.feeOrders?.jqAdditionalRatio,
-                        commissionPremium:  res.data?.feeOrders?.jqCommissionPremium,
-                        commissionRatio:  res.data?.feeOrders?.jqCommissionRatio,
-                        exportPremium:  res.data?.feeOrders?.jqExportPremium,
-                        exportRatio:  res.data?.feeOrders?.jqExportRatio,
-                    },{
-                        name: '商业',
-                        additionalPremium:  res.data?.feeOrders?.syAdditionalPremium,
-                        additionalRatio:  res.data?.feeOrders?.syAdditionalRatio,
-                        commissionPremium:  res.data?.feeOrders?.syCommissionPremium,
-                        commissionRatio:  res.data?.feeOrders?.syCommissionRatio,
-                        exportPremium:  res.data?.feeOrders?.syExportPremium,
-                        exportRatio:  res.data?.feeOrders?.syExportRatio,
-                    },{
-                        name: '驾意险',
-                        additionalPremium:  res.data?.feeOrders?.jyAdditionalPremium,
-                        additionalRatio:  res.data?.feeOrders?.jyAdditionalRatio,
-                        commissionPremium:  res.data?.feeOrders?.jyCommissionPremium,
-                        commissionRatio:  res.data?.feeOrders?.jyCommissionRatio,
-                        exportPremium:  res.data?.feeOrders?.jyExportPremium,
-                        exportRatio:  res.data?.feeOrders?.jyExportRatio,
-                    },
-                ]
-                quoteData.value[scope.$index].quoteResult = res.data
-                loading.value = false
-                quoteData.value[scope.$index].loading = false
-                console.log('报价后的数据', quoteData.value)
             } else {
                 ElMessage({
                     message: res.msg,
                     type: 'warning'
                 })
-                quoteData.value[scope.$index].quoteResult.failMsg = res.msg
-                loading.value = false
-                quoteData.value[scope.$index].loading = false
             }
-            // InsurancePolicyRefs.resetFields()
-        }).catch(e => {
-            loading.value = false
-            quoteData.value[scope.$index].loading = false
-            quoteData.value.forEach(a => {
-                a.loading = false
-            })
         })
       // api.insurancePolicyApi.imageSave({
       //   order: {

+ 6 - 6
src/views/insurancePolicy/modules/recognition.vue

@@ -199,9 +199,9 @@
               <el-option value="2" label="女"></el-option>
             </el-select>
           </el-form-item>
-          <el-form-item class="m-b-5" label="民族">
+<!--          <el-form-item class="m-b-5" label="民族">
             <el-input v-model="owerForm.nation" placeholder="请填写"></el-input>
-          </el-form-item>
+          </el-form-item>-->
           <el-form-item class="m-b-5" label="住址">
               <el-input v-model="owerForm.addr" placeholder="请填写" ></el-input>
           </el-form-item>
@@ -341,9 +341,9 @@
               <el-option value="2" label="女"></el-option>
             </el-select>
           </el-form-item>
-          <el-form-item class="m-b-5" label="民族">
+<!--          <el-form-item class="m-b-5" label="民族">
             <el-input v-model="ower1Form.nation" placeholder="请填写"></el-input>
-          </el-form-item>
+          </el-form-item>-->
           <el-form-item class="m-b-5" label="住址">
             <el-input v-model="ower1Form.addr" placeholder="请填写" ></el-input>
           </el-form-item>
@@ -483,9 +483,9 @@
               <el-option value="2" label="女"></el-option>
             </el-select>
           </el-form-item>
-          <el-form-item class="m-b-5" label="民族">
+<!--          <el-form-item class="m-b-5" label="民族">
             <el-input v-model="ower2Form.nation" placeholder="请填写"></el-input>
-          </el-form-item>
+          </el-form-item>-->
           <el-form-item class="m-b-5" label="住址">
             <el-input v-model="ower2Form.addr" placeholder="请填写" ></el-input>
           </el-form-item>

+ 3 - 3
src/views/insurancePolicy/modules/underwriting.vue

@@ -200,12 +200,12 @@ const handleSubmit = (bool) => {
           message: res.msg,
           type: 'success'
         })
-          emit('close', false)
+          emit('close', 'success')
       } else {
           if(res.code == 500) {
-              emit('close', false, res.msg)
+              emit('close', 'error', res.msg)
           } else {
-              emit('close', false)
+              emit('close', 'error')
           }
           ElMessage({
             message: res.msg,

+ 2 - 5
src/views/insurancePolicy/orderDetail.vue

@@ -1150,7 +1150,7 @@ let insuranceData = ref([])
 let drivingData = ref([])
 let qrImageUrl = ref('')
 const handleCode = async () => {
-    qrImageUrl.value = await QRCode.toDataURL('http://www.baidu.com', {
+    qrImageUrl.value = await QRCode.toDataURL(`http://test-tennat.baoxianzhanggui.com/h5/#/pages/quote/paymentCode?ordersNo=${detailData.value.ordersNo}`, {
         width: 150,
         margin: 2
     });
@@ -1163,7 +1163,7 @@ const handlePopoverCancel = async () => {
 }
 const handlePopoverConfirm = async () => {
     try {
-        await navigator.clipboard.writeText('你想要复制的文本');
+        await navigator.clipboard.writeText(`http://test-tennat.baoxianzhanggui.com/h5/#/pages/quote/paymentCode?ordersNo=${detailData.value.ordersNo}`);
         ElMessage({
             message: '复制成功!',
             type: 'success'
@@ -1176,9 +1176,6 @@ const handlePopoverConfirm = async () => {
     }
 }
 
-// 分享
-// 生成二维码
-
 // 投保人信息
 let tbList = ref([
     {

+ 10 - 1
src/views/insurancePolicy/viewDetail.vue

@@ -200,6 +200,15 @@ let detailData = ref(undefined)
 
 let moduleName = ref('')
 
+const JSONChange = (data) => {
+    try {
+        JSON.parse(data);
+        return true; // 如果没有抛出异常,说明可以解析
+    } catch (error) {
+        return false; // 如果抛出异常,说明不能解析
+    }
+}
+
 onBeforeMount(() => {
     detailData.value = {
         module: myRoute.query.module,
@@ -208,7 +217,7 @@ onBeforeMount(() => {
         createTime: myRoute.query.createTime,
         createBy: myRoute.query.createBy,
         content: myRoute.query.content,
-        list: JSON.parse(myRoute.query.obj)
+        list: JSONChange(myRoute.query.obj)?JSON.parse(myRoute.query.obj):myRoute.query.obj
     }
     if(detailData.value.module && detailData.value.subModule) {
         moduleName.value = `${detailData.value.module}/${detailData.value.subModule}`