فهرست منبع

OCR识别接口前后增加loading缓冲

@dongkboy 3 هفته پیش
والد
کامیت
5063e2c665
3فایلهای تغییر یافته به همراه844 افزوده شده و 807 حذف شده
  1. 50 15
      components/uni-OCRUploadPopup/uni-OCRUploadPopup.vue
  2. 2 1
      pages.json
  3. 792 791
      pages/quote/premiumCalc1.vue

+ 50 - 15
components/uni-OCRUploadPopup/uni-OCRUploadPopup.vue

@@ -1,6 +1,7 @@
 <template>
 	<view class='uni-page'>
 		<u-popup :show="OCRUploadPopup" @close="close" closeable round="20rpx">
+
 			<view class="dis dis header a-end j-c">
 				<u-tabs :list="list" @click="click" :activeStyle="{color:'#333',fontWeight:'bold'}"
 					:inactiveStyle="{color:'#999'}" :current="current" :scrollable="true" lineColor="#FDE935"
@@ -14,22 +15,26 @@
 							 而是走 mounted 里 document 级原生监听(见 onDocumentDragOver/onDocumentDrop);
 							 click 为点击选图兜底,data-kind 标记本区域对应的影像场景 -->
 						<!-- #ifdef H5 -->
-						<view class="drop-wrap" :class="{'drop-active': dragOver}" @click="chooseFile('carfront')" data-kind="carfront">
+						<view class="drop-wrap" :class="{'drop-active': dragOver}" @click="chooseFile('carfront')"
+							data-kind="carfront">
 							<image :src="carfrontImg?carfrontImg:'/static/image/carbackimg.png'" mode=""></image>
 						</view>
 						<!-- #endif -->
 						<!-- #ifdef APP-PLUS || MP -->
-						<image :src="carfrontImg?carfrontImg:'/static/image/carbackimg.png'" mode="" @click="carfrontChange"></image>
+						<image :src="carfrontImg?carfrontImg:'/static/image/carbackimg.png'" mode=""
+							@click="carfrontChange"></image>
 						<!-- #endif -->
 					</view>
 					<view class="img" v-else>
 						<!-- #ifdef H5 -->
-						<view class="drop-wrap" :class="{'drop-active': dragOver}" @click="chooseFile('carback')" data-kind="carback">
+						<view class="drop-wrap" :class="{'drop-active': dragOver}" @click="chooseFile('carback')"
+							data-kind="carback">
 							<image :src="carbackImg?carbackImg:'/static/image/carbackimg.png'" mode=""></image>
 						</view>
 						<!-- #endif -->
 						<!-- #ifdef APP-PLUS || MP -->
-						<image :src="carbackImg?carbackImg:'/static/image/carbackimg.png'" mode="" @click="carbackChange"></image>
+						<image :src="carbackImg?carbackImg:'/static/image/carbackimg.png'" mode=""
+							@click="carbackChange"></image>
 						<!-- #endif -->
 					</view>
 				</template>
@@ -45,34 +50,43 @@
 						</view>
 						<view class="img" v-if="toggleModeIndex==0">
 							<!-- #ifdef H5 -->
-							<view class="drop-wrap" :class="{'drop-active': dragOver}" @click="chooseFile('userfront')" data-kind="userfront">
-								<image :src="userfrontImg?userfrontImg:'/static/image/userfrontImg.png'" mode=""></image>
+							<view class="drop-wrap" :class="{'drop-active': dragOver}" @click="chooseFile('userfront')"
+								data-kind="userfront">
+								<image :src="userfrontImg?userfrontImg:'/static/image/userfrontImg.png'" mode="">
+								</image>
 							</view>
 							<!-- #endif -->
 							<!-- #ifdef APP-PLUS || MP -->
-							<image :src="userfrontImg?userfrontImg:'/static/image/userfrontImg.png'" mode="" @click="userfrontChange"></image>
+							<image :src="userfrontImg?userfrontImg:'/static/image/userfrontImg.png'" mode=""
+								@click="userfrontChange"></image>
 							<!-- #endif -->
 						</view>
 						<view class="img" v-else>
 							<!-- #ifdef H5 -->
-							<view class="drop-wrap" :class="{'drop-active': dragOver}" @click="chooseFile('userback')" data-kind="userback">
+							<view class="drop-wrap" :class="{'drop-active': dragOver}" @click="chooseFile('userback')"
+								data-kind="userback">
 								<image :src="userbackImg?userbackImg:'/static/image/userbackImg.png'" mode=""></image>
 							</view>
 							<!-- #endif -->
 							<!-- #ifdef APP-PLUS || MP -->
-							<image :src="userbackImg?userbackImg:'/static/image/userbackImg.png'" mode="" @click="userbackChange"></image>
+							<image :src="userbackImg?userbackImg:'/static/image/userbackImg.png'" mode=""
+								@click="userbackChange"></image>
 							<!-- #endif -->
 						</view>
 					</template>
 					<template v-else>
 						<view class="img">
 							<!-- #ifdef H5 -->
-							<view class="drop-wrap" :class="{'drop-active': dragOver}" @click="chooseFile('businessLicense')" data-kind="businessLicense">
-								<image :src="businessLicenseImg?businessLicenseImg:'/static/image/businessLicenseimg.png'" mode=""></image>
+							<view class="drop-wrap" :class="{'drop-active': dragOver}"
+								@click="chooseFile('businessLicense')" data-kind="businessLicense">
+								<image
+									:src="businessLicenseImg?businessLicenseImg:'/static/image/businessLicenseimg.png'"
+									mode=""></image>
 							</view>
 							<!-- #endif -->
 							<!-- #ifdef APP-PLUS || MP -->
-							<image :src="businessLicenseImg?businessLicenseImg:'/static/image/businessLicenseimg.png'" mode="" @click="businessLicenseChange"></image>
+							<image :src="businessLicenseImg?businessLicenseImg:'/static/image/businessLicenseimg.png'"
+								mode="" @click="businessLicenseChange"></image>
 							<!-- #endif -->
 						</view>
 					</template>
@@ -96,9 +110,16 @@
 						:disabled="!userfrontImg && !userbackImg && !businessLicenseImg" :hairline="false"
 						@click="insuredPersonInfoInt"></u-button>
 				</view>
-			</view>
 
+			</view>
+			<view class="loading" style="" v-if="loadingShow">
+				<view class="dis f-c a-c j-c " style="height: 100%;">
+					<u-loading-icon></u-loading-icon>
+					<text style="color: #909399;" class="mt-1">{{ loadingText }}</text>
+				</view>
+			</view>
 		</u-popup>
+
 	</view>
 </template>
 <script>
@@ -168,8 +189,7 @@
 			}
 			return {
 				identifyValidDate: identifyValidDate, //起期
-				identifyValidEndDate: identifyValidEndDate == '长期--' ? '9999-12-31' :
-					identifyValidEndDate, //止期
+				identifyValidEndDate: identifyValidEndDate == '长期--' ? '9999-12-31' : identifyValidEndDate, //止期
 			}
 		},
 		// 营业执照
@@ -203,6 +223,8 @@
 		},
 		data() {
 			return {
+				loadingShow: false,
+				loadingText: '加载中',
 				OCRUploadPopup: this.show,
 				current: 0,
 				carfrontImg: null, //行驶证正面
@@ -427,6 +449,7 @@
 			 * 串行 await 与原嵌套回调逻辑等价;任一步失败统一被 catch 捕获打日志,不阻断页面。
 			 */
 			async uploadAndIdentify(source, kind) {
+				this.loadingShow = true;
 				const cfg = this.getOcrConfig(kind);
 				try {
 					const imgRes = await this.uploadFileGeneric(this.$base.baseUrl + '/file/upload',
@@ -441,6 +464,7 @@
 						const ocrData = JSON.parse(ocrRes).data;
 						this[cfg.target] = cfg.parse(ocrData);
 					}
+					this.loadingShow = false;
 				} catch (e) {
 					console.log('uploadAndIdentify error', kind, e);
 				}
@@ -523,6 +547,7 @@
 			},
 			// #endif
 			Subsectionclick(item) {
+				console.log(item);
 				this.toggleModeIndex = item;
 			},
 			ocrInt() {
@@ -706,6 +731,7 @@
 
 			},
 			click(item) {
+				console.log(item);
 				this.current = item.index;
 			},
 			close() {
@@ -858,4 +884,13 @@
 			}
 		}
 	}
+
+	.loading {
+		position: absolute;
+		width: 100%;
+		height: 100%;
+		background-color: rgba(255, 255, 255, 0.6);
+		z-index: 99999;
+		border-radius: 20rpx;
+	}
 </style>

+ 2 - 1
pages.json

@@ -1,7 +1,8 @@
 {
 	"easycom": {
 		"^uni-(.*)": "@/components/uni-$1/uni-$1.vue", // 匹配components目录内的vue文件
-		"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
+		"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue",
+		"^global-(.*)": "@/components/global-$1/global-$1.vue" // 全局loading组件
 	},
 	"pages": [
 		//pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages

+ 792 - 791
pages/quote/premiumCalc1.vue

@@ -189,8 +189,8 @@
 		</view>
 		<!-- 查看方案弹窗 -->
 		<uni-Popup v-if="currentCompanyInfo" :show="checkSelectionPopup" @close="checkSelectionPopup = false"
-			:closeable="false" headerTitle="厂牌型号" :headerSlot="true" overflow="auto" :headerStyle="{ fontSize: '36rpx' }"
-			maxHeight="1160rpx" mode="bottom" class="checkSelectionPopupClass">
+			:closeable="false" headerTitle="厂牌型号" :headerSlot="true" overflow="auto"
+			:headerStyle="{ fontSize: '36rpx' }" maxHeight="1160rpx" mode="bottom" class="checkSelectionPopupClass">
 			<template #header>
 				<view class="dis a-c j-c">
 					<image class="company-icon" :src="currentCompanyInfo.logo" mode=""></image>
@@ -219,8 +219,8 @@
 										@click="vehicleTaxIsExpanded = !vehicleTaxIsExpanded">
 										<text>{{ vehicleTaxIsExpanded ? '收起' : '展开' }}</text>
 										<text>{{ vehicleAndVesselTaxModel.taxRelifFlag }}信息</text>
-										<u-icon :name="vehicleTaxIsExpanded ? 'arrow-up' : 'arrow-down'" class="ml-1 mr-1"
-											color="#333" size="12"></u-icon>
+										<u-icon :name="vehicleTaxIsExpanded ? 'arrow-up' : 'arrow-down'"
+											class="ml-1 mr-1" color="#333" size="12"></u-icon>
 									</view>
 								</view>
 								<view class="vehicleTaxInfo" v-if="vehicleTaxIsExpanded">
@@ -346,8 +346,9 @@
 		</uni-Popup>
 		<!-- 报价失败原因弹窗 -->
 		<uni-Popup v-if="currentCompanyInfo" :show="quoteFailedReasonPopup" @close="quoteFailedReasonPopup = false"
-			:closeable="false" headerTitle="厂牌型号" :headerSlot="true" overflow="auto" :headerStyle="{ fontSize: '36rpx' }"
-			maxHeight="980rpx" mode="center" width="90%" class="quoteFailedReasonClass">
+			:closeable="false" headerTitle="厂牌型号" :headerSlot="true" overflow="auto"
+			:headerStyle="{ fontSize: '36rpx' }" maxHeight="980rpx" mode="center" width="90%"
+			class="quoteFailedReasonClass">
 			<template #header>
 				<!-- 保险公司信息 -->
 				<view class=" dis a-c ">
@@ -384,269 +385,208 @@
 		</uni-Popup>
 		<!-- 交强起保日期 -->
 		<u-datetime-picker :show="jqstartShow" v-model="jqstartvalue" mode="datetime" :formatter="formatter"
-			@cancel="jqstartShow = false" @close="jqstartShow = false" :closeOnClickOverlay="true" @confirm="jqstartconfirm"
-			confirmText="确定"></u-datetime-picker>
+			@cancel="jqstartShow = false" @close="jqstartShow = false" :closeOnClickOverlay="true"
+			@confirm="jqstartconfirm" confirmText="确定"></u-datetime-picker>
 		<!-- 商业起保日期 -->
 		<u-datetime-picker :show="systartShow" v-model="systartvalue" mode="datetime" :formatter="formatter"
-			@cancel="systartShow = false" @close="systartShow = false" :closeOnClickOverlay="true" @confirm="systartconfirm"
-			confirmText="确定"></u-datetime-picker>
+			@cancel="systartShow = false" @close="systartShow = false" :closeOnClickOverlay="true"
+			@confirm="systartconfirm" confirmText="确定"></u-datetime-picker>
 		<!-- 自定义加载动画 -->
 		<global-loading :show="loadingShow" :text="loadingText"></global-loading>
 	</view>
 </template>
 
 <script>
-import lsLoading from '@/components/ls-loading/ls-loading.vue';
-import Mixin from './Mixin.js';
-export default {
-	components: {
-		lsLoading,
-	},
-	mixins: [Mixin], // 注入 Mixin
-	data() {
-		return {
-			loadingShow: false, //加载
-			loadingText: '加载中', //加载提示文字
-			jqstartvalue: Number(new Date().setHours(0, 0, 0)), //交强起期
-			systartvalue: Number(new Date().setHours(0, 0, 0)), //商业起期
-			jqstartShow: false, //交强日期选择器
-			systartShow: false, //商业日期选择器
-			brandModelPopup: false, //厂牌型号弹窗
-			findOptimalShow: false, //查最优弹窗
-			quoteFailedReasonPopup: false, //报价失败原因弹窗
-			checkSelectionPopup: false, //查看方案弹窗
-			vehicleTaxIsExpanded: false, //车船税展开收起
-			carInfo: {}, //车辆信息
-			ownerInfo: {}, //车主信息
-			policyHolderInfo: {}, //投保人信息
-			insuredPersonInfo: {}, //被保人信息
-			jqstartDate: "", //交强起保时日期
-			jqendDate: "", //交强终保日期
-			systartDate: "", //商业起保日期
-			syendDate: "", //商业终保日期
-			companyindex: 0,
-			currentCompanyInfo: {},
-			insCompanyVo: {},
-		}
-	},
-	onShow() { },
-	async onLoad(params) {
-		this.loadingShow = true;
-		try {
-			if (params.ordersNo) {
-				let res = await this.$http.get('/supplementOrder/getOrderDetail', {
-					ordersNo: params.ordersNo
-				});
-				this.productId = res.data.order.productId; //险种id
-				this.productName = res.data.order.productsName; //险种name
-				this.quotableCompanyList = JSON.parse(JSON.stringify(res.data.insCompanyVo));
-				this.order = res.data.order;
-				this.costs = res.data.costs; //价格
-				this.carInfo = res.data.carInfoVo; //车辆信息
-				this.ownerInfo = res.data.ownersInfo; //车主信息
-				this.policyHolderInfo = res.data.policyHolderInfo; //投保人信息
-				this.insuredPersonInfo = res.data.insuredPersonInfo; //被保人信息
-				this.kindInfoVo = res.data.kindInfoVo; //险种大类
-				this.ciRiskInfoVo = res.data.ciRiskInfoVo; //交强险
-				this.biRiskInfoVo = res.data.biRiskInfoVo; //商业险
-				this.vehicleAndVesselTaxVo = res.data.vehicleAndVesselTaxVo; //车船税信息
-				this.orderno = res.data.order.ordersNo;
-				this.quoteno = res.data.order.quoteNo;
-				this.insCompanyVo = res.data.insCompanyVo[0]; //历史保险公司
-				await this.ruleFilterCompany();
-				await this.commpanyList(res.data);
-				this.imageEcho(res.data.imageVoList) // 影像获取完毕
-				if (this.ciRiskInfoVo) {
-					if (this.isDateBeforeToday(this.ciRiskInfoVo.startDate)) {
-						this.jqstartDate = this.nextday();
-						this.jqendDate = this.oneYearPast(this.jqstartDate)
-						this.ciRiskInfoVo.startDate = this.nextday()
-						this.ciRiskInfoVo.endDate = this.oneYearPast(this.jqstartDate)
-					} else {
-						this.jqstartDate = this.ciRiskInfoVo.startDate;
-						this.jqendDate = this.ciRiskInfoVo.endDate;
+	import lsLoading from '@/components/ls-loading/ls-loading.vue';
+	import Mixin from './Mixin.js';
+	export default {
+		components: {
+			lsLoading,
+		},
+		mixins: [Mixin], // 注入 Mixin
+		data() {
+			return {
+				loadingShow: false, //加载
+				loadingText: '加载中', //加载提示文字
+				jqstartvalue: Number(new Date().setHours(0, 0, 0)), //交强起期
+				systartvalue: Number(new Date().setHours(0, 0, 0)), //商业起期
+				jqstartShow: false, //交强日期选择器
+				systartShow: false, //商业日期选择器
+				brandModelPopup: false, //厂牌型号弹窗
+				findOptimalShow: false, //查最优弹窗
+				quoteFailedReasonPopup: false, //报价失败原因弹窗
+				checkSelectionPopup: false, //查看方案弹窗
+				vehicleTaxIsExpanded: false, //车船税展开收起
+				carInfo: {}, //车辆信息
+				ownerInfo: {}, //车主信息
+				policyHolderInfo: {}, //投保人信息
+				insuredPersonInfo: {}, //被保人信息
+				jqstartDate: "", //交强起保时日期
+				jqendDate: "", //交强终保日期
+				systartDate: "", //商业起保日期
+				syendDate: "", //商业终保日期
+				companyindex: 0,
+				currentCompanyInfo: {},
+				insCompanyVo: {},
+			}
+		},
+		onShow() {},
+		async onLoad(params) {
+			this.loadingShow = true;
+			try {
+				if (params.ordersNo) {
+					let res = await this.$http.get('/supplementOrder/getOrderDetail', {
+						ordersNo: params.ordersNo
+					});
+					this.productId = res.data.order.productId; //险种id
+					this.productName = res.data.order.productsName; //险种name
+					this.quotableCompanyList = JSON.parse(JSON.stringify(res.data.insCompanyVo));
+					this.order = res.data.order;
+					this.costs = res.data.costs; //价格
+					this.carInfo = res.data.carInfoVo; //车辆信息
+					this.ownerInfo = res.data.ownersInfo; //车主信息
+					this.policyHolderInfo = res.data.policyHolderInfo; //投保人信息
+					this.insuredPersonInfo = res.data.insuredPersonInfo; //被保人信息
+					this.kindInfoVo = res.data.kindInfoVo; //险种大类
+					this.ciRiskInfoVo = res.data.ciRiskInfoVo; //交强险
+					this.biRiskInfoVo = res.data.biRiskInfoVo; //商业险
+					this.vehicleAndVesselTaxVo = res.data.vehicleAndVesselTaxVo; //车船税信息
+					this.orderno = res.data.order.ordersNo;
+					this.quoteno = res.data.order.quoteNo;
+					this.insCompanyVo = res.data.insCompanyVo[0]; //历史保险公司
+					await this.ruleFilterCompany();
+					await this.commpanyList(res.data);
+					this.imageEcho(res.data.imageVoList) // 影像获取完毕
+					if (this.ciRiskInfoVo) {
+						if (this.isDateBeforeToday(this.ciRiskInfoVo.startDate)) {
+							this.jqstartDate = this.nextday();
+							this.jqendDate = this.oneYearPast(this.jqstartDate)
+							this.ciRiskInfoVo.startDate = this.nextday()
+							this.ciRiskInfoVo.endDate = this.oneYearPast(this.jqstartDate)
+						} else {
+							this.jqstartDate = this.ciRiskInfoVo.startDate;
+							this.jqendDate = this.ciRiskInfoVo.endDate;
+						}
 					}
-				}
-				if (this.biRiskInfoVo) {
-					if (this.isDateBeforeToday(this.biRiskInfoVo.startDate)) {
-						this.systartDate = this.nextday();
-						this.syendDate = this.oneYearPast(this.systartDate)
-						this.biRiskInfoVo.startDate = this.nextday()
-						this.biRiskInfoVo.endDate = this.oneYearPast(this.systartDate)
-					} else {
-						this.systartDate = this.biRiskInfoVo.startDate;
-						this.syendDate = this.biRiskInfoVo.endDate;
+					if (this.biRiskInfoVo) {
+						if (this.isDateBeforeToday(this.biRiskInfoVo.startDate)) {
+							this.systartDate = this.nextday();
+							this.syendDate = this.oneYearPast(this.systartDate)
+							this.biRiskInfoVo.startDate = this.nextday()
+							this.biRiskInfoVo.endDate = this.oneYearPast(this.systartDate)
+						} else {
+							this.systartDate = this.biRiskInfoVo.startDate;
+							this.syendDate = this.biRiskInfoVo.endDate;
+						}
 					}
+				} else {
+					this.jqstartDate = this.nextday();
+					this.jqendDate = this.oneYearPast(this.jqstartDate);
+					this.systartDate = this.nextday();
+					this.syendDate = this.oneYearPast(this.jqstartDate);
+					const eventChannel = this.getOpenerEventChannel()
+					// 监听acceptData事件,获取上一页面通过eventChannel传送到当前页面的数据
+					await eventChannel.on('acceptData', (data) => {
+						console.log(data);
+						this.carInfo = data.carInfo; //车辆信息
+						this.ownerInfo = data.ownerInfo; //车主信息
+						this.policyHolderInfo = data.policyHolderInfo; //投保人信息
+						this.vehicleAndVesselTaxVo.identifyNumber = this.policyHolderInfo.identifyNumber;
+						this.vehicleAndVesselTaxVo.taxpayerName = this.policyHolderInfo.name;
+						this.insuredPersonInfo = data.insuredPersonInfo; //被保人信息
+						this.carImageListId = data.carImageListId; //车辆
+						this.ownerImageListId = data.ownerImageListId; //车主
+						this.policyHolderImageListId = data.policyHolderImageListId; //投保
+						this.insuredPersonImageListId = data.insuredPersonImageListId; //被保人
+						this.productId = data.productId; //险种id
+						this.productName = data.productName; //险种name
+						this.riskTypeEchoProcessing(this.productId)
+						this.quotableCompanyList = JSON.parse(JSON.stringify(data
+							.quotableCompanyList)); //可报价公司
+						this.commpanyList(); //保险公司数据结构处理
+						console.log(this.quotableCompanyList);
+					})
 				}
-			} else {
-				this.jqstartDate = this.nextday();
-				this.jqendDate = this.oneYearPast(this.jqstartDate);
-				this.systartDate = this.nextday();
-				this.syendDate = this.oneYearPast(this.jqstartDate);
-				const eventChannel = this.getOpenerEventChannel()
-				// 监听acceptData事件,获取上一页面通过eventChannel传送到当前页面的数据
-				await eventChannel.on('acceptData', (data) => {
-					console.log(data);
-					this.carInfo = data.carInfo; //车辆信息
-					this.ownerInfo = data.ownerInfo; //车主信息
-					this.policyHolderInfo = data.policyHolderInfo; //投保人信息
-					this.vehicleAndVesselTaxVo.identifyNumber = this.policyHolderInfo.identifyNumber;
-					this.vehicleAndVesselTaxVo.taxpayerName = this.policyHolderInfo.name;
-					this.insuredPersonInfo = data.insuredPersonInfo; //被保人信息
-					this.carImageListId = data.carImageListId; //车辆
-					this.ownerImageListId = data.ownerImageListId; //车主
-					this.policyHolderImageListId = data.policyHolderImageListId; //投保
-					this.insuredPersonImageListId = data.insuredPersonImageListId; //被保人
-					this.productId = data.productId; //险种id
-					this.productName = data.productName; //险种name
-					this.riskTypeEchoProcessing(this.productId)
-					this.quotableCompanyList = JSON.parse(JSON.stringify(data
-						.quotableCompanyList)); //可报价公司
-					this.commpanyList(); //保险公司数据结构处理
-					console.log(this.quotableCompanyList);
-				})
-			}
-			this.loadingShow = false;
-		} catch (error) {
-			this.loadingShow = false;
-		}
-
-	},
-	computed: {
-		//已选保险公司数量
-		selectedInsurerCount() {
-			return this.quotableCompanyList.filter(val => val.insurancePlanInfo !== null).length;
-		},
-		//获取车船税类型
-		taxRelifFlagName() {
-			let info = this.car_tax_codeoptions.find(ele => ele.value === this.vehicleAndVesselTaxVo.taxRelifFlag)
-			return info?.description;
-		},
-	},
-	methods: {
-		// 保险公司列表过滤回显
-		async ruleFilterCompany() {
-			let params = {
-				carInfo: this.carInfo,
-				ownerInfo: this.ownerInfo,
-				applyInfo: this.policyHolderInfo,
-				insureInfo: this.insuredPersonInfo,
-				productId: this.productId
-			}
-			let res = await this.$http.post('/scheme/ruleFilterCompanyApp', params);
-			if (res.code == '200') {
-				this.quotableCompanyList = res.data.filter(val => val.id == this.insCompanyVo.id);
-			} else {
-				this.quotableCompanyList = [];
-				uni.showToast({
-					icon: 'none',
-					title: res.msg,
-				});
+				this.loadingShow = false;
+			} catch (error) {
+				this.loadingShow = false;
 			}
 
 		},
-		// 跳转报价详情
-		dorderDetails(orderno) {
-			console.log(orderno);
-			if (orderno) {
-				uni.navigateTo({
-					url: '/pages/quote/quoteRecordDetail?ordersNo=' + orderno
-				})
-			}
+		computed: {
+			//已选保险公司数量
+			selectedInsurerCount() {
+				return this.quotableCompanyList.filter(val => val.insurancePlanInfo !== null).length;
+			},
+			//获取车船税类型
+			taxRelifFlagName() {
+				let info = this.car_tax_codeoptions.find(ele => ele.value === this.vehicleAndVesselTaxVo.taxRelifFlag)
+				return info?.description;
+			},
 		},
-		// 修改信息
-		toCarInfo() {
-			uni.navigateTo({
-				url: '/pages/quote/quoteInfo',
-				success: (res) => {
-					res.eventChannel.emit(
-						"acceptData", {
-						carInfo: this
-							.carInfo, //车辆信息
-						ownerInfo: this
-							.ownerInfo, //车主信息
-						policyHolderInfo: this
-							.policyHolderInfo, //投保人信息
-						insuredPersonInfo: this
-							.insuredPersonInfo, //被保人信息
-						carImageListId: this
-							.carImageListId, //车辆
-						ownerImageListId: this
-							.ownerImageListId, //车主
-						policyHolderImageListId: this
-							.policyHolderImageListId, //投保
-						insuredPersonImageListId: this
-							.insuredPersonImageListId, //被保人
-						productId: this.productId, //险种id
-						productName: this.productName, //险种名称
-						quoteno: this.quoteno,
-					})
+		methods: {
+			// 保险公司列表过滤回显
+			async ruleFilterCompany() {
+				let params = {
+					carInfo: this.carInfo,
+					ownerInfo: this.ownerInfo,
+					applyInfo: this.policyHolderInfo,
+					insureInfo: this.insuredPersonInfo,
+					productId: this.productId
 				}
-			}, "navigateTo", true);
-		},
-		// 单独报价
-		async individualQuote(item) {
-			if (this.carInfo.licenseNo.length == '8' && this.carInfo.energyTypeCode == '0') {
-				return uni.showToast({
-					icon: "none",
-					title: '检测到能源种类错误,与车辆信息不符。请修改后继续操作',
-					duration: 3000
-				});
-			}
-			if (!item.insurancePlanInfo) {
-				uni.showToast({
-					title: "请选择方案后,在进行报价",
-					icon: 'none',
-				});
-			} else {
-				this.riskTypeEchoProcessing(this.productId); //更新险种大类日期
-
-				let param = {
-					licenseNo: this.carInfo.licenseNo,
-					vinNo: this.carInfo.vinNo,
-					engineNo: this.carInfo.engineNo,
-				};
-				let orders = await this.$http.get('/unify/order/getQuoteNo', param);
-				if (orders.code == '200') {
-					this.quoteno = orders.msg;
-					let mergedArray = [];
-					let mergedArrayList = mergedArray.concat(this.carImageListId, this
-						.ownerImageListId, this
-						.policyHolderImageListId, this.insuredPersonImageListId)
-
-					if (mergedArrayList.length > 0) {
-						await this.$http.post('/unify/order/imageSave', {
-							imageVoList: mergedArrayList,
-							order: {
-								quoteNo: this.quoteno,
-							}
-
-						})
-					}
-					this.quotableCompanyList = this.quotableCompanyList.map((ele, index) => {
-						if (ele.id == item.id) {
-							// 动态调用报价接口
-							ele.quoteCode = '1';
-							this.quoteInsurance(index, ele.id);
-						}
-						return ele
-					});
-				} else if (orders.code == '1001') {
-					this.Generateshow = true;
+				let res = await this.$http.post('/scheme/ruleFilterCompanyApp', params);
+				if (res.code == '200') {
+					this.quotableCompanyList = res.data.filter(val => val.id == this.insCompanyVo.id);
 				} else {
+					this.quotableCompanyList = [];
 					uni.showToast({
-						title: orders.msg,
 						icon: 'none',
+						title: res.msg,
 					});
 				}
-			}
-		},
-		// 多家报价
-		async multipleQuotes() {
-			var allAreFalse = this.quotableCompanyList.every(function (element) {
-				return element.insurancePlanInfo == null;
-			});
-			if (!allAreFalse) {
+
+			},
+			// 跳转报价详情
+			dorderDetails(orderno) {
+				console.log(orderno);
+				if (orderno) {
+					uni.navigateTo({
+						url: '/pages/quote/quoteRecordDetail?ordersNo=' + orderno
+					})
+				}
+			},
+			// 修改信息
+			toCarInfo() {
+				uni.navigateTo({
+					url: '/pages/quote/quoteInfo',
+					success: (res) => {
+						res.eventChannel.emit(
+							"acceptData", {
+								carInfo: this
+									.carInfo, //车辆信息
+								ownerInfo: this
+									.ownerInfo, //车主信息
+								policyHolderInfo: this
+									.policyHolderInfo, //投保人信息
+								insuredPersonInfo: this
+									.insuredPersonInfo, //被保人信息
+								carImageListId: this
+									.carImageListId, //车辆
+								ownerImageListId: this
+									.ownerImageListId, //车主
+								policyHolderImageListId: this
+									.policyHolderImageListId, //投保
+								insuredPersonImageListId: this
+									.insuredPersonImageListId, //被保人
+								productId: this.productId, //险种id
+								productName: this.productName, //险种名称
+								quoteno: this.quoteno,
+							})
+					}
+				}, "navigateTo", true);
+			},
+			// 单独报价
+			async individualQuote(item) {
 				if (this.carInfo.licenseNo.length == '8' && this.carInfo.energyTypeCode == '0') {
 					return uni.showToast({
 						icon: "none",
@@ -654,669 +594,730 @@ export default {
 						duration: 3000
 					});
 				}
-				this.riskTypeEchoProcessing(this.productId); //更新险种大类日期
-				let param = {
-					licenseNo: this.carInfo.licenseNo,
-					vinNo: this.carInfo.vinNo,
-					engineNo: this.carInfo.engineNo,
-				};
-				let orders = await this.$http.get('/unify/order/getQuoteNo', param);
-				if (orders.code == '200') {
-					this.quoteno = orders.msg;
-					let mergedArray = [];
-					let mergedArrayList = mergedArray.concat(this.carImageListId, this
-						.ownerImageListId, this
-						.policyHolderImageListId, this.insuredPersonImageListId)
-					console.log(mergedArrayList);
-					if (mergedArrayList.length > 0) {
-						await this.$http.post('/unify/order/imageSave', {
-							imageVoList: mergedArrayList,
-							order: {
-								quoteNo: this.quoteno,
-							}
+				if (!item.insurancePlanInfo) {
+					uni.showToast({
+						title: "请选择方案后,在进行报价",
+						icon: 'none',
+					});
+				} else {
+					this.riskTypeEchoProcessing(this.productId); //更新险种大类日期
 
-						})
+					let param = {
+						licenseNo: this.carInfo.licenseNo,
+						vinNo: this.carInfo.vinNo,
+						engineNo: this.carInfo.engineNo,
+					};
+					let orders = await this.$http.get('/unify/order/getQuoteNo', param);
+					if (orders.code == '200') {
+						this.quoteno = orders.msg;
+						let mergedArray = [];
+						let mergedArrayList = mergedArray.concat(this.carImageListId, this
+							.ownerImageListId, this
+							.policyHolderImageListId, this.insuredPersonImageListId)
+
+						if (mergedArrayList.length > 0) {
+							await this.$http.post('/unify/order/imageSave', {
+								imageVoList: mergedArrayList,
+								order: {
+									quoteNo: this.quoteno,
+								}
+
+							})
+						}
+						this.quotableCompanyList = this.quotableCompanyList.map((ele, index) => {
+							if (ele.id == item.id) {
+								// 动态调用报价接口
+								ele.quoteCode = '1';
+								this.quoteInsurance(index, ele.id);
+							}
+							return ele
+						});
+					} else if (orders.code == '1001') {
+						this.Generateshow = true;
+					} else {
+						uni.showToast({
+							title: orders.msg,
+							icon: 'none',
+						});
 					}
-					this.quotableCompanyList = this.quotableCompanyList.map((ele, index) => {
-						if (ele.insurancePlanInfo !== null) {
-							// 动态调用报价接口
-							ele.quoteCode = '1';
-							this.quoteInsurance(index, ele.id);
+				}
+			},
+			// 多家报价
+			async multipleQuotes() {
+				var allAreFalse = this.quotableCompanyList.every(function(element) {
+					return element.insurancePlanInfo == null;
+				});
+				if (!allAreFalse) {
+					if (this.carInfo.licenseNo.length == '8' && this.carInfo.energyTypeCode == '0') {
+						return uni.showToast({
+							icon: "none",
+							title: '检测到能源种类错误,与车辆信息不符。请修改后继续操作',
+							duration: 3000
+						});
+					}
+					this.riskTypeEchoProcessing(this.productId); //更新险种大类日期
+					let param = {
+						licenseNo: this.carInfo.licenseNo,
+						vinNo: this.carInfo.vinNo,
+						engineNo: this.carInfo.engineNo,
+					};
+					let orders = await this.$http.get('/unify/order/getQuoteNo', param);
+					if (orders.code == '200') {
+						this.quoteno = orders.msg;
+						let mergedArray = [];
+						let mergedArrayList = mergedArray.concat(this.carImageListId, this
+							.ownerImageListId, this
+							.policyHolderImageListId, this.insuredPersonImageListId)
+						console.log(mergedArrayList);
+						if (mergedArrayList.length > 0) {
+							await this.$http.post('/unify/order/imageSave', {
+								imageVoList: mergedArrayList,
+								order: {
+									quoteNo: this.quoteno,
+								}
+
+							})
 						}
-						return ele
-					});
-				} else if (orders.code == '1001') {
-					this.Generateshow = true;
+						this.quotableCompanyList = this.quotableCompanyList.map((ele, index) => {
+							if (ele.insurancePlanInfo !== null) {
+								// 动态调用报价接口
+								ele.quoteCode = '1';
+								this.quoteInsurance(index, ele.id);
+							}
+							return ele
+						});
+					} else if (orders.code == '1001') {
+						this.Generateshow = true;
+					} else {
+						uni.showToast({
+							title: orders.msg,
+							icon: 'none',
+						});
+					}
 				} else {
 					uni.showToast({
-						title: orders.msg,
+						title: "请选择方案后,在进行报价",
 						icon: 'none',
 					});
 				}
-			} else {
-				uni.showToast({
-					title: "请选择方案后,在进行报价",
-					icon: 'none',
-				});
-			}
-		},
-		// 调用统一报价接口
-		async quoteInsurance(companyIndex, companyId) {
-			const company = this.quotableCompanyList[companyIndex];
-			console.log(company);
-			const isTaxSource = company.isTaxSource;
-			const params = {
-				order: {
-					agreementId: company.dispatchAgreementId,
-					insuranceCompanyCode: companyId,
-					quoteNo: this.quoteno,
-					productId: this.productId,
-					orderSource: '1',
-				},
-				accidentalDrivings: company.insurancePlanInfo.drivings,
-				kindInfoVo: this.productId === '0330' ? [] : company.insurancePlanInfo.kinds,
-				ciRiskInfoVo: ['0330', '0330034002', '0330034001'].includes(this.productId) ? this
-					.ciRiskInfoVo : null,
-				biRiskInfoVo: ['034001', '034002', '0330034002', '0330034001'].includes(this.productId) ? this
-					.biRiskInfoVo : null,
-				carInfoVo: this.carInfo,
-				ownersInfo: this.ownerInfo,
-				policyHolderInfo: this.policyHolderInfo,
-				insuredPersonInfo: this.insuredPersonInfo,
-				vehicleAndVesselTaxVo: this.vehicleAndVesselTaxVo,
-				isTaxSource: isTaxSource == 1 ? isTaxSource : null,
-				systemType: '2'
-			};
+			},
+			// 调用统一报价接口
+			async quoteInsurance(companyIndex, companyId) {
+				const company = this.quotableCompanyList[companyIndex];
+				console.log(company);
+				const isTaxSource = company.isTaxSource;
+				const params = {
+					order: {
+						agreementId: company.dispatchAgreementId,
+						insuranceCompanyCode: companyId,
+						quoteNo: this.quoteno,
+						productId: this.productId,
+						orderSource: '1',
+					},
+					accidentalDrivings: company.insurancePlanInfo.drivings,
+					kindInfoVo: this.productId === '0330' ? [] : company.insurancePlanInfo.kinds,
+					ciRiskInfoVo: ['0330', '0330034002', '0330034001'].includes(this.productId) ? this
+						.ciRiskInfoVo : null,
+					biRiskInfoVo: ['034001', '034002', '0330034002', '0330034001'].includes(this.productId) ? this
+						.biRiskInfoVo : null,
+					carInfoVo: this.carInfo,
+					ownersInfo: this.ownerInfo,
+					policyHolderInfo: this.policyHolderInfo,
+					insuredPersonInfo: this.insuredPersonInfo,
+					vehicleAndVesselTaxVo: this.vehicleAndVesselTaxVo,
+					isTaxSource: isTaxSource == 1 ? isTaxSource : null,
+					systemType: '2'
+				};
 
-			try {
-				let res = await this.$http.post('/unify/order/quote', params);
-				company.msg = res.msg;
-				if (res.code == "200") {
-					company.result = res.data;
-					const updatedItem = {
-						...company,
-						quoteCode: 200,
-						isReSelect: false // 清除重选标记,回到“仅展示价格”状态
-					};
-					this.quotableCompanyList.splice(companyIndex, 1, updatedItem);
-					console.log(this.quotableCompanyList);
-				} else {
+				try {
+					let res = await this.$http.post('/unify/order/quote', params);
 					company.msg = res.msg;
+					if (res.code == "200") {
+						company.result = res.data;
+						const updatedItem = {
+							...company,
+							quoteCode: 200,
+							isReSelect: false // 清除重选标记,回到“仅展示价格”状态
+						};
+						this.quotableCompanyList.splice(companyIndex, 1, updatedItem);
+						console.log(this.quotableCompanyList);
+					} else {
+						company.msg = res.msg;
+						const updatedItem = {
+							...company,
+							quoteCode: '3',
+							isReSelect: false // 清除重选标记,回到“仅展示价格”状态
+
+						};
+						this.quotableCompanyList.splice(companyIndex, 1, updatedItem);
+						return;
+					}
+				} catch (error) {
 					const updatedItem = {
 						...company,
-						quoteCode: '3',
-						isReSelect: false // 清除重选标记,回到“仅展示价格”状态
-
+						quoteCode: '3'
 					};
 					this.quotableCompanyList.splice(companyIndex, 1, updatedItem);
-					return;
+					company.msg = '接口请求超时,请重新尝试';
 				}
-			} catch (error) {
-				const updatedItem = {
-					...company,
-					quoteCode: '3'
-				};
-				this.quotableCompanyList.splice(companyIndex, 1, updatedItem);
-				company.msg = '接口请求超时,请重新尝试';
-			}
 
-		},
-		//选择方案
-		async SchemeSelection(item) {
-			uni.navigateTo({
-				url: '/pages/quote/chooseOption1',
-				success: (res) => {
-					res.eventChannel.emit("acceptData", {
-						params: {
-							companyId: item.id,
-							productId: this.productId,
-							seatCount: this.carInfo.seatCount,
-							energyType: this.carInfo.energyTypeCode,
-							vehicleType: this.carInfo.carKindCode,
-							carnature: this.carInfo.carNatureCode,
-						},
-						nameSimple: item.nameSimple,
-						logo: item.logo,
-						cnName: item.cnName,
-						jqstartDate: this.jqstartDate,
-						jqendDate: this.jqendDate,
-						systartDate: this.systartDate,
-						syendDate: this.syendDate,
-						productName: this.productName,
-						quotableCompanyList: this.quotableCompanyList,
-						identifyNumber: this.policyHolderInfo.identifyNumber,
-						taxpayerName: this.policyHolderInfo.name,
-					})
-				}
-			}, "navigateTo", true);
-		},
-		// 修改方案
-		updateScheme() {
-			uni.navigateTo({
-				url: '/pages/quote/chooseOption1',
-				success: (res) => {
-					res.eventChannel.emit("acceptData", {
-						params: {
-							companyId: this.currentCompanyInfo.id,
-							productId: this.productId,
-						},
-						nameSimple: this.currentCompanyInfo.nameSimple,
-						logo: this.currentCompanyInfo.logo,
-						cnName: this.currentCompanyInfo.cnName,
-						jqstartDate: this.jqstartDate,
-						jqendDate: this.jqendDate,
-						systartDate: this.systartDate,
-						syendDate: this.syendDate,
-						productName: this.productName,
-						quotableCompanyList: this.quotableCompanyList,
-						identifyNumber: this.policyHolderInfo.identifyNumber,
-						taxpayerName: this.policyHolderInfo.name,
-					})
+			},
+			//选择方案
+			async SchemeSelection(item) {
+				uni.navigateTo({
+					url: '/pages/quote/chooseOption1',
+					success: (res) => {
+						res.eventChannel.emit("acceptData", {
+							params: {
+								companyId: item.id,
+								productId: this.productId,
+								seatCount: this.carInfo.seatCount,
+								energyType: this.carInfo.energyTypeCode,
+								vehicleType: this.carInfo.carKindCode,
+								carnature: this.carInfo.carNatureCode,
+							},
+							nameSimple: item.nameSimple,
+							logo: item.logo,
+							cnName: item.cnName,
+							jqstartDate: this.jqstartDate,
+							jqendDate: this.jqendDate,
+							systartDate: this.systartDate,
+							syendDate: this.syendDate,
+							productName: this.productName,
+							quotableCompanyList: this.quotableCompanyList,
+							identifyNumber: this.policyHolderInfo.identifyNumber,
+							taxpayerName: this.policyHolderInfo.name,
+						})
+					}
+				}, "navigateTo", true);
+			},
+			// 修改方案
+			updateScheme() {
+				uni.navigateTo({
+					url: '/pages/quote/chooseOption1',
+					success: (res) => {
+						res.eventChannel.emit("acceptData", {
+							params: {
+								companyId: this.currentCompanyInfo.id,
+								productId: this.productId,
+							},
+							nameSimple: this.currentCompanyInfo.nameSimple,
+							logo: this.currentCompanyInfo.logo,
+							cnName: this.currentCompanyInfo.cnName,
+							jqstartDate: this.jqstartDate,
+							jqendDate: this.jqendDate,
+							systartDate: this.systartDate,
+							syendDate: this.syendDate,
+							productName: this.productName,
+							quotableCompanyList: this.quotableCompanyList,
+							identifyNumber: this.policyHolderInfo.identifyNumber,
+							taxpayerName: this.policyHolderInfo.name,
+						})
+					}
+				}, "navigateTo", true);
+				this.checkSelectionPopup = false;
+			},
+			//查最优
+			async findOptimal() {
+				let res = await this.$http.get('/supplementOrder/comparePrice?quoteNo=' + this.quoteno);
+				if (res.code == '200') {
+					this.optimalData = res.data;
+					this.findOptimalShow = true;
 				}
-			}, "navigateTo", true);
-			this.checkSelectionPopup = false;
-		},
-		//查最优
-		async findOptimal() {
-			let res = await this.$http.get('/supplementOrder/comparePrice?quoteNo=' + this.quoteno);
-			if (res.code == '200') {
-				this.optimalData = res.data;
-				this.findOptimalShow = true;
-			}
-		},
-		//查看方案弹窗
-		checkSelection(index) {
-			this.currentCompanyInfo = this.quotableCompanyList[index];
-			console.log(this.currentCompanyInfo);
-			this.checkSelectionPopup = true;
-		},
-		// 报价原因弹窗
-		quoteFailedReason(index) {
-			this.currentCompanyInfo = this.quotableCompanyList[index];
-			this.quoteFailedReasonPopup = true;
-		},
-		//即时投保切换更新投保日期
-		immediateCoverageChange(e) {
-			if (e == 1) {
-				const date = new Date();
-				date.setHours(date.getHours() + 2);
-				date.setMinutes(0)
-				date.setSeconds(0)
-				this.jqstartDate = this.transformTime(date)
-				this.jqendDate = this.oneYearPast(date);
-				this.systartDate = this.transformTime(date)
-				this.syendDate = this.oneYearPast(date);
-
-			} else {
-				this.jqstartDate = this.nextday();
-				this.jqendDate = this.oneYearPast(this.jqstartDate);
-				this.systartDate = this.nextday();
-				this.syendDate = this.oneYearPast(this.systartDate);
-			}
-		},
+			},
+			//查看方案弹窗
+			checkSelection(index) {
+				this.currentCompanyInfo = this.quotableCompanyList[index];
+				console.log(this.currentCompanyInfo);
+				this.checkSelectionPopup = true;
+			},
+			// 报价原因弹窗
+			quoteFailedReason(index) {
+				this.currentCompanyInfo = this.quotableCompanyList[index];
+				this.quoteFailedReasonPopup = true;
+			},
+			//即时投保切换更新投保日期
+			immediateCoverageChange(e) {
+				if (e == 1) {
+					const date = new Date();
+					date.setHours(date.getHours() + 2);
+					date.setMinutes(0)
+					date.setSeconds(0)
+					this.jqstartDate = this.transformTime(date)
+					this.jqendDate = this.oneYearPast(date);
+					this.systartDate = this.transformTime(date)
+					this.syendDate = this.oneYearPast(date);
 
-		//交强日期事件
-		jqstartconfirm(e) {
-			this.jqstartDate = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM') + ':00';
-			this.jqendDate = this.oneYearPast(this.jqstartDate)
-			this.jqstartShow = false;
-		},
-		// 商业日期事件
-		systartconfirm(e) {
-			this.systartDate = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM') + ':00';
-			this.syendDate = this.oneYearPast(this.systartDate)
-			this.systartShow = false;
-		},
-		//数字格式化
-		convertedValue(num) {
-			if (!num) {
-				return "-";
-			}
-			if (num < 10000) {
-				return num.toString();
-			} else if (num < 100000000) {
-				return (Math.floor(num / 10000 * 10) / 10) + '万';
-			} else {
-				return (Math.floor(num / 100000000 * 10) / 10) + '亿';
-			}
-		},
+				} else {
+					this.jqstartDate = this.nextday();
+					this.jqendDate = this.oneYearPast(this.jqstartDate);
+					this.systartDate = this.nextday();
+					this.syendDate = this.oneYearPast(this.systartDate);
+				}
+			},
+
+			//交强日期事件
+			jqstartconfirm(e) {
+				this.jqstartDate = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM') + ':00';
+				this.jqendDate = this.oneYearPast(this.jqstartDate)
+				this.jqstartShow = false;
+			},
+			// 商业日期事件
+			systartconfirm(e) {
+				this.systartDate = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM') + ':00';
+				this.syendDate = this.oneYearPast(this.systartDate)
+				this.systartShow = false;
+			},
+			//数字格式化
+			convertedValue(num) {
+				if (!num) {
+					return "-";
+				}
+				if (num < 10000) {
+					return num.toString();
+				} else if (num < 100000000) {
+					return (Math.floor(num / 10000 * 10) / 10) + '万';
+				} else {
+					return (Math.floor(num / 100000000 * 10) / 10) + '亿';
+				}
+			},
 
+		}
 	}
-}
 </script>
 
 <style lang="scss" scoped>
-::v-deep {
-	.u-input__content__subfix-icon {
-		margin-left: 12rpx;
+	::v-deep {
+		.u-input__content__subfix-icon {
+			margin-left: 12rpx;
 
-		image {
-			width: 30rpx;
-			height: 30rpx;
+			image {
+				width: 30rpx;
+				height: 30rpx;
+			}
 		}
-	}
 
-	/* 调整输入框光标靠右 */
-	.uni-input-input {
-		text-align: right !important;
-		font-weight: bold;
-	}
+		/* 调整输入框光标靠右 */
+		.uni-input-input {
+			text-align: right !important;
+			font-weight: bold;
+		}
 
-	/* 设置表单项非input元素靠右布局 */
-	.u-form-item__body__right {
-		margin-left: auto;
-		flex: unset;
-	}
+		/* 设置表单项非input元素靠右布局 */
+		.u-form-item__body__right {
+			margin-left: auto;
+			flex: unset;
+		}
 
-	.u-form-item__body {
-		padding: 24rpx 0;
-		box-sizing: border-box;
-	}
+		.u-form-item__body {
+			padding: 24rpx 0;
+			box-sizing: border-box;
+		}
 
-	.u-form-item__body__left__content__label {
-		color: #333;
-	}
+		.u-form-item__body__left__content__label {
+			color: #333;
+		}
 
-	/* 覆盖表单下边框颜色 */
-	.u-form-item .u-line {
-		border-bottom: 1rpx solid #eee;
+		/* 覆盖表单下边框颜色 */
+		.u-form-item .u-line {
+			border-bottom: 1rpx solid #eee;
+		}
 	}
-}
-
-page {
-	background-color: #f8f8f8;
-}
 
-.page {
-	background-color: #f8f8f8;
-	height: 100%;
+	page {
+		background-color: #f8f8f8;
+	}
 
-	/* 提示信息样式 */
-	.hint {
-		padding: 16rpx 30rpx;
-		box-sizing: border-box;
-		background: #FFFBD7;
-		border-radius: 0rpx 0rpx 0rpx 0rpx;
-		font-size: 30rpx;
-		color: #333;
+	.page {
+		background-color: #f8f8f8;
+		height: 100%;
 
-		.rightBtn {
-			padding: 6rpx 20rpx;
+		/* 提示信息样式 */
+		.hint {
+			padding: 16rpx 30rpx;
 			box-sizing: border-box;
-			background: rgba(253, 233, 53, 0.3);
-			border-radius: 40rpx 40rpx 40rpx 40rpx;
-			border: 1rpx solid #FDE935;
-			font-size: 26rpx;
+			background: #FFFBD7;
+			border-radius: 0rpx 0rpx 0rpx 0rpx;
+			font-size: 30rpx;
 			color: #333;
+
+			.rightBtn {
+				padding: 6rpx 20rpx;
+				box-sizing: border-box;
+				background: rgba(253, 233, 53, 0.3);
+				border-radius: 40rpx 40rpx 40rpx 40rpx;
+				border: 1rpx solid #FDE935;
+				font-size: 26rpx;
+				color: #333;
+			}
 		}
-	}
 
-	.quoteArea {
-		padding: 20rpx 30rpx 170rpx;
-		box-sizing: border-box;
+		.quoteArea {
+			padding: 20rpx 30rpx 170rpx;
+			box-sizing: border-box;
 
+		}
+
+		/* 投保配置 */
+		.insuranceConfig {
+			padding: 0 30rpx;
+			box-sizing: border-box;
+			width: 100%;
+			background: #FFFFFF;
+			border-radius: 10rpx 10rpx 10rpx 10rpx;
+		}
 	}
 
-	/* 投保配置 */
-	.insuranceConfig {
-		padding: 0 30rpx;
+	/* 厂牌型号弹窗 */
+	.brandModelClass {
+		padding: 30rpx 40rpx 40rpx;
 		box-sizing: border-box;
-		width: 100%;
-		background: #FFFFFF;
-		border-radius: 10rpx 10rpx 10rpx 10rpx;
-	}
-}
 
-/* 厂牌型号弹窗 */
-.brandModelClass {
-	padding: 30rpx 40rpx 40rpx;
-	box-sizing: border-box;
+		.cellView {
+			padding: 10rpx 0;
+			box-sizing: border-box;
+			font-size: 30rpx;
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
 
-	.cellView {
-		padding: 10rpx 0;
-		box-sizing: border-box;
-		font-size: 30rpx;
-		display: flex;
-		justify-content: space-between;
-		align-items: center;
+			text:first-child {
+				color: #666;
+			}
 
-		text:first-child {
-			color: #666;
+			text:last-child {
+				color: #333;
+				font-weight: bold;
+			}
 		}
 
-		text:last-child {
-			color: #333;
-			font-weight: bold;
+		.footer-btn {
+			width: 100%;
+			padding: 20rpx;
+			box-sizing: border-box;
+			background: rgba(253, 233, 53, 0.1);
+			border-radius: 45rpx 45rpx 45rpx 45rpx;
+			border: 1rpx solid #FDE935;
+			margin-top: 30rpx;
 		}
 	}
 
-	.footer-btn {
-		width: 100%;
-		padding: 20rpx;
-		box-sizing: border-box;
-		background: rgba(253, 233, 53, 0.1);
-		border-radius: 45rpx 45rpx 45rpx 45rpx;
-		border: 1rpx solid #FDE935;
-		margin-top: 30rpx;
-	}
-}
+	/* 报价公司 */
+	.quoteCompany {
+		.quoteCompanyItem {
+			padding: 30rpx;
+			box-sizing: border-box;
+			background: #FFFFFF;
+			border-radius: 10rpx 10rpx 10rpx 10rpx;
 
-/* 报价公司 */
-.quoteCompany {
-	.quoteCompanyItem {
-		padding: 30rpx;
-		box-sizing: border-box;
-		background: #FFFFFF;
-		border-radius: 10rpx 10rpx 10rpx 10rpx;
+			.companyIcon {
+				width: 90rpx;
+				height: 90rpx;
+			}
 
-		.companyIcon {
-			width: 90rpx;
-			height: 90rpx;
-		}
+			.companyName {
+				font-size: 34rpx;
+				color: #333;
+				font-weight: bold;
+				margin-bottom: 18rpx;
+			}
 
-		.companyName {
-			font-size: 34rpx;
-			color: #333;
-			font-weight: bold;
-			margin-bottom: 18rpx;
-		}
+			.solution {
+				font-size: 28rpx;
+				color: #666;
+			}
 
-		.solution {
-			font-size: 28rpx;
-			color: #666;
-		}
+			.sum-price {
+				color: #FF540A;
 
-		.sum-price {
-			color: #FF540A;
+				.totalPrice {
+					font-weight: bold;
 
-			.totalPrice {
-				font-weight: bold;
+					text:first-child {
+						font-size: 26rpx;
+					}
 
-				text:first-child {
-					font-size: 26rpx;
+					text:last-child {
+						font-size: 40rpx;
+					}
 				}
 
-				text:last-child {
-					font-size: 40rpx;
+				.discountedPrice {
+					font-size: 24rpx;
 				}
 			}
 
-			.discountedPrice {
-				font-size: 24rpx;
+			// 报价按钮
+			.quoteBtn {
+				padding: 11rpx 22rpx;
+				box-sizing: border-box;
+				background: #FDE935;
+				border-radius: 50rpx 50rpx 50rpx 50rpx;
+				font-size: 30rpx;
+				color: #1F1F1F;
 			}
-		}
 
-		// 报价按钮
-		.quoteBtn {
-			padding: 11rpx 22rpx;
-			box-sizing: border-box;
-			background: #FDE935;
-			border-radius: 50rpx 50rpx 50rpx 50rpx;
-			font-size: 30rpx;
-			color: #1F1F1F;
-		}
+			.quoteFailureReason {
+				width: 100%;
+				background: #FAFAFA;
+				margin-top: 20rpx;
+				border-radius: 10rpx 10rpx 10rpx 10rpx;
+				padding: 10rpx;
+				box-sizing: border-box;
+				font-size: 28rpx;
+				color: #F74141;
+				position: relative;
 
-		.quoteFailureReason {
-			width: 100%;
-			background: #FAFAFA;
-			margin-top: 20rpx;
-			border-radius: 10rpx 10rpx 10rpx 10rpx;
-			padding: 10rpx;
-			box-sizing: border-box;
-			font-size: 28rpx;
-			color: #F74141;
-			position: relative;
+				.iconText {
+					position: absolute;
+					top: 10rpx;
+					left: 10rpx;
 
-			.iconText {
-				position: absolute;
-				top: 10rpx;
-				left: 10rpx;
+					text {
+						margin-left: 5rpx;
+					}
+				}
 
-				text {
-					margin-left: 5rpx;
+				.viewReason {
+					background: #FAFAFA;
+					position: absolute;
+					bottom: 10rpx;
+					right: 10rpx;
+					color: #FFAC1D;
 				}
 			}
 
-			.viewReason {
-				background: #FAFAFA;
-				position: absolute;
-				bottom: 10rpx;
-				right: 10rpx;
-				color: #FFAC1D;
-			}
 		}
-
-	}
-}
-
-// 报价失败原因弹窗
-.quoteFailedReasonClass {
-	.company-icon {
-		width: 50rpx;
-		height: 50rpx;
-	}
-
-	.companyName {
-		font-size: 36rpx;
-		color: #333;
-		font-weight: bold;
-		margin-left: 10rpx;
-		margin-right: 20rpx;
 	}
 
-	.quote-status {
-		padding: 4rpx 10rpx;
-		box-sizing: border-box;
-		background: #FFECEC;
-		border-radius: 2rpx 2rpx 2rpx 2rpx;
-		font-size: 24rpx;
-		color: #F74141;
-		font-weight: bold;
-	}
-
-	.quoteFailedReason-content {
-
-		padding: 40rpx;
-		box-sizing: border-box;
+	// 报价失败原因弹窗
+	.quoteFailedReasonClass {
+		.company-icon {
+			width: 50rpx;
+			height: 50rpx;
+		}
 
-		.PopupClose-Btn {
-			background: rgba(253, 233, 53, 0.1);
-			border: 1rpx solid #FDE935;
-			padding: 22rpx 20rpx;
-			box-sizing: border-box;
-			border-radius: 45rpx;
-			font-size: 30rpx;
+		.companyName {
+			font-size: 36rpx;
 			color: #333;
-			margin-top: 40rpx;
+			font-weight: bold;
+			margin-left: 10rpx;
+			margin-right: 20rpx;
 		}
-	}
-}
-
-// 查看方案弹窗
-.checkSelectionPopupClass {
-	.company-icon {
-		width: 50rpx;
-		height: 50rpx;
-	}
 
-	.companyName {
-		font-size: 36rpx;
-		color: #333;
-		font-weight: bold;
-		margin-left: 10rpx;
-	}
-
-	.checkSelectionPopup-body {
-		padding: 30rpx 40rpx;
-		box-sizing: border-box;
-
-		.yellow-content {
-			overflow-y: auto;
-			padding-bottom: 116rpx;
+		.quote-status {
+			padding: 4rpx 10rpx;
+			box-sizing: border-box;
+			background: #FFECEC;
+			border-radius: 2rpx 2rpx 2rpx 2rpx;
+			font-size: 24rpx;
+			color: #F74141;
+			font-weight: bold;
 		}
 
-		.content-item {
-			border-radius: 4rpx;
-			border: 1rpx solid #FFD9D9;
-			margin-bottom: 30rpx;
+		.quoteFailedReason-content {
 
-			.title {
-				width: 16%;
-				padding: 10rpx;
+			padding: 40rpx;
+			box-sizing: border-box;
+
+			.PopupClose-Btn {
+				background: rgba(253, 233, 53, 0.1);
+				border: 1rpx solid #FDE935;
+				padding: 22rpx 20rpx;
 				box-sizing: border-box;
-				background: #FFF8F8;
-				border-right: 1rpx solid #FFE5E5;
-				border-radius: 4rpx 0 0 4rpx;
-				font-size: 28rpx;
+				border-radius: 45rpx;
+				font-size: 30rpx;
 				color: #333;
-				font-weight: bold;
-
-				text {
-					text-align: center;
-				}
+				margin-top: 40rpx;
 			}
+		}
+	}
 
-			.right {
-				flex: 1;
-				padding: 0 20rpx;
-				box-sizing: border-box;
+	// 查看方案弹窗
+	.checkSelectionPopupClass {
+		.company-icon {
+			width: 50rpx;
+			height: 50rpx;
+		}
 
-				.riskView {
-					margin: 15rpx 0;
+		.companyName {
+			font-size: 36rpx;
+			color: #333;
+			font-weight: bold;
+			margin-left: 10rpx;
+		}
 
-					>text:first-child {
-						font-size: 28rpx;
-						color: #666;
-					}
+		.checkSelectionPopup-body {
+			padding: 30rpx 40rpx;
+			box-sizing: border-box;
 
-					>text:last-child {
-						font-size: 28rpx;
-						color: #333;
-						font-weight: bold;
-					}
+			.yellow-content {
+				overflow-y: auto;
+				padding-bottom: 116rpx;
+			}
 
-					.loadMore {
-						font-size: 28rpx;
-						color: #333;
-						font-weight: bold;
+			.content-item {
+				border-radius: 4rpx;
+				border: 1rpx solid #FFD9D9;
+				margin-bottom: 30rpx;
 
+				.title {
+					width: 16%;
+					padding: 10rpx;
+					box-sizing: border-box;
+					background: #FFF8F8;
+					border-right: 1rpx solid #FFE5E5;
+					border-radius: 4rpx 0 0 4rpx;
+					font-size: 28rpx;
+					color: #333;
+					font-weight: bold;
+
+					text {
+						text-align: center;
 					}
 				}
 
-				.vehicleTaxInfo {
+				.right {
 					flex: 1;
-					width: 100%;
-					background: #F9F9F9;
-					padding: 0 10rpx;
+					padding: 0 20rpx;
 					box-sizing: border-box;
-					border-radius: 10rpx 10rpx 10rpx 10rpx;
-					margin-bottom: 15rpx;
 
-					.item {
-						padding: 15rpx 0;
-						box-sizing: border-box;
+					.riskView {
+						margin: 15rpx 0;
 
-						text:first-child {
+						>text:first-child {
 							font-size: 28rpx;
 							color: #666;
 						}
 
-						text:last-child {
+						>text:last-child {
 							font-size: 28rpx;
 							color: #333;
 							font-weight: bold;
 						}
+
+						.loadMore {
+							font-size: 28rpx;
+							color: #333;
+							font-weight: bold;
+
+						}
+					}
+
+					.vehicleTaxInfo {
+						flex: 1;
+						width: 100%;
+						background: #F9F9F9;
+						padding: 0 10rpx;
+						box-sizing: border-box;
+						border-radius: 10rpx 10rpx 10rpx 10rpx;
+						margin-bottom: 15rpx;
+
+						.item {
+							padding: 15rpx 0;
+							box-sizing: border-box;
+
+							text:first-child {
+								font-size: 28rpx;
+								color: #666;
+							}
+
+							text:last-child {
+								font-size: 28rpx;
+								color: #333;
+								font-weight: bold;
+							}
+						}
 					}
 				}
 			}
+
+			.footer-btn {
+				position: fixed;
+				bottom: 0;
+				left: 0;
+				right: 0;
+				padding: 25rpx 30rpx 55rpx;
+				box-sizing: border-box;
+				background: linear-gradient(0deg, #FFFFFF 0%, rgba(255, 254, 245, 0.7) 100%);
+				border-radius: 0rpx 0rpx 0rpx 0rpx;
+				backdrop-filter: blur(12rpx);
+
+				.btn {
+					width: 100%;
+					background: #FDE935;
+					padding: 20rpx 20rpx;
+					box-sizing: border-box;
+					border-radius: 58rpx 58rpx 58rpx 58rpx;
+					font-size: 36rpx;
+					color: #1F1F1F;
+				}
+
+				//操作按钮特殊样式
+				.btns {
+					background: transparent;
+					border: 1rpx solid #FDE935;
+					padding: 19rpx 20rpx;
+					margin-right: 30rpx;
+				}
+			}
 		}
+	}
 
-		.footer-btn {
-			position: fixed;
-			bottom: 0;
-			left: 0;
-			right: 0;
-			padding: 25rpx 30rpx 55rpx;
+	.footer {
+		position: fixed;
+		bottom: 0;
+		left: 0;
+		right: 0;
+		padding: 25rpx 30rpx 55rpx;
+		box-sizing: border-box;
+		backdrop-filter: blur(12rpx);
+		background: linear-gradient(0deg, #FFFFFF 0%, rgba(255, 254, 245, 0.7) 100%);
+
+		.btn {
+			margin-right: 36rpx;
+
+			image {
+				width: 48rpx;
+				height: 48rpx;
+			}
+
+			text {
+				font-size: 20rpx;
+				color: #333;
+			}
+		}
+
+		.batchQuotes {
+			flex: 1;
+			background: #FDE935;
+			border-radius: 58rpx 58rpx 58rpx 58rpx;
+			padding: 26rpx 60rpx;
 			box-sizing: border-box;
-			background: linear-gradient(0deg, #FFFFFF 0%, rgba(255, 254, 245, 0.7) 100%);
-			border-radius: 0rpx 0rpx 0rpx 0rpx;
-			backdrop-filter: blur(12rpx);
+			color: #1F1F1F;
 
-			.btn {
-				width: 100%;
-				background: #FDE935;
-				padding: 20rpx 20rpx;
-				box-sizing: border-box;
-				border-radius: 58rpx 58rpx 58rpx 58rpx;
+			text:first-child {
 				font-size: 36rpx;
-				color: #1F1F1F;
+				font-weight: bold;
+				line-height: 1;
 			}
 
-			//操作按钮特殊样式
-			.btns {
-				background: transparent;
-				border: 1rpx solid #FDE935;
-				padding: 19rpx 20rpx;
-				margin-right: 30rpx;
+			.sum {
+				font-size: 28rpx;
 			}
-		}
-	}
-}
-
-.footer {
-	position: fixed;
-	bottom: 0;
-	left: 0;
-	right: 0;
-	padding: 25rpx 30rpx 55rpx;
-	box-sizing: border-box;
-	backdrop-filter: blur(12rpx);
-	background: linear-gradient(0deg, #FFFFFF 0%, rgba(255, 254, 245, 0.7) 100%);
-
-	.btn {
-		margin-right: 36rpx;
-
-		image {
-			width: 48rpx;
-			height: 48rpx;
-		}
 
-		text {
-			font-size: 20rpx;
-			color: #333;
 		}
 	}
 
-	.batchQuotes {
-		flex: 1;
-		background: #FDE935;
-		border-radius: 58rpx 58rpx 58rpx 58rpx;
-		padding: 26rpx 60rpx;
+	// 查最优弹窗
+	.findOptimalPopup {
+		height: 1200rpx;
+		padding: 30rpx 40rpx;
 		box-sizing: border-box;
-		color: #1F1F1F;
-
-		text:first-child {
-			font-size: 36rpx;
-			font-weight: bold;
-			line-height: 1;
-		}
-
-		.sum {
-			font-size: 28rpx;
-		}
+	}
 
+	.suffixClass {
+		margin-left: 10rpx;
+		font-size: 30rpx;
 	}
-}
-
-// 查最优弹窗
-.findOptimalPopup {
-	height: 1200rpx;
-	padding: 30rpx 40rpx;
-	box-sizing: border-box;
-}
-
-.suffixClass {
-	margin-left: 10rpx;
-	font-size: 30rpx;
-}
 </style>