浏览代码

新增保存历史信息、已承保订单不可编辑、增加即时起保

@dongkboy 1 年之前
父节点
当前提交
ca42b216df

+ 9 - 9
.ftp/ftp-sync.json

@@ -1,11 +1,11 @@
 {
-    "name": "test",
-    "host": "39.98.239.48",
-    "protocol": "sftp",
-    "port": 22,
-    "username": "web-test",
-    "password": "F7#OT&0kU2trcr*4",
-    "remotePath": "/h5",
+	"name": "My Server",
+	"host": "39.98.199.137",
+	"protocol": "sftp",
+	"port": 22,
+	"username": "ecs-user",
+	"password": "A%8eZNjdMSptXPbJ",
+	"remotePath": "/usr/local/nginx/h5",
 	"context": "unpackage/dist/build/h5",
-    "uploadOnSave": false
-}
+	"uploadOnSave": false
+}

+ 3 - 6
App.vue

@@ -16,8 +16,7 @@
 			} else {
 				var url = window.location.href;
 				if ((url.indexOf("pages/carInsure/quoteDetail1") > 0) || (url.indexOf("pages/carInsure/quoteDetail") >
-						0) ||
-					(url.indexOf("pages/register/registerSuccess") > 0) || (url.indexOf("pages/carInsure/payVerify") >
+						0) || (url.indexOf("pages/carInsure/payVerify") >
 						0) || (url.indexOf("pages/login/mimi") > 0) || (url.indexOf("pages/login/xieyi") > 0) || (url
 						.indexOf("pages/carInsure1/yonganCode") > 0)) {
 					uni.navigateTo({
@@ -32,8 +31,7 @@
 				socket.init();
 			} else {
 				var url = window.location.href;
-				if ((url.indexOf("pages/carInsure/quoteDetail") > 0) || (url.indexOf(
-						"pages/register/registerSuccess") > 0) || (url.indexOf("pages/carInsure/payVerify") >
+				if ((url.indexOf("pages/carInsure/quoteDetail") > 0) || (url.indexOf("pages/carInsure/payVerify") >
 						0) || (url.indexOf("pages/login/mimi") > 0) || (url.indexOf("pages/login/xieyi") > 0) || (url
 						.indexOf("pages/carInsure1/yonganCode") > 0)) {
 					uni.navigateTo({
@@ -49,8 +47,7 @@
 			if (store.state.token) {} else {
 				var url = window.location.href;
 				if ((url.indexOf("pages/carInsure/quoteDetail1") > 0) || (url.indexOf("pages/carInsure/quoteDetail") >
-						0) ||
-					(url.indexOf("pages/register/registerSuccess") > 0) || (url.indexOf("pages/carInsure/payVerify") >
+						0) || (url.indexOf("pages/carInsure/payVerify") >
 						0) || (url.indexOf("pages/login/mimi") > 0) || (url.indexOf("pages/login/xieyi") > 0) || (url
 						.indexOf("pages/carInsure1/yonganCode") > 0)) {
 					uni.navigateTo({

+ 1 - 1
androidPrivacy.json

@@ -1,3 +1,3 @@
 {
-    "prompt": "template"
+    "prompt" : "none"
 }

+ 8 - 9
components/modules/index/index-nav.vue

@@ -151,8 +151,8 @@
 				this.form.name4 = "";
 				this.form.name5 = "";
 				this.form.xueli = "";
-				if(this.userInfo.sysUser.usertype=='A'){
-					 return uni.showToast({
+				if (this.userInfo.sysUser.usertype == 'A') {
+					return uni.showToast({
 						icon: "none",
 						title: '没有权限',
 						duration: 1500
@@ -164,8 +164,7 @@
 						title: '请先通过实名认证',
 						duration: 1500
 					})
-				}
-				 else if (this.userInfo.sysUser.status == '1') {
+				} else if (this.userInfo.sysUser.status == '1') {
 					if (!e.src || e.src == '#' || e.src == '') {
 						uni.showToast({
 							icon: "none",
@@ -173,12 +172,12 @@
 							duration: 1500
 						})
 					} else {
-							this.navigate({
-								url: e.src
-							}, "navigateTo", true)
+						this.navigate({
+							url: e.src
+						}, "navigateTo", true)
 					}
 				}
-				
+
 				// if (this.userInfo.sysUser.status == '2') {
 				// 	let res = await this.$http.get('/apps/getApplicationStatus?jobNumber=' + this.userInfo.sysUser.id);
 				// 	if (res.code == 200) {
@@ -323,4 +322,4 @@
 		display: flex;
 		justify-content: center;
 	}
-</style>
+</style>

+ 42 - 38
components/modules/index/swiper-image.vue

@@ -1,8 +1,12 @@
 <template>
 	<view>
 		<view class="swiper-view">
-			<swiper class="swiper" :indicator-dots="indicatorDots" :indicator-color="indicatorColor" :indicator-active-color="indicatorActiveColor" :autoplay="autoplay" :interval="interval" :duration="duration" :circular="circular" :vertical="vertical"  @change="changeEvent" :style="'height:'+height">
-				<swiper-item v-for="(item,index) in resdata" :key="index" @tap="tipEvent(item)" :style="'height:'+height">
+			<swiper class="swiper" :indicator-dots="indicatorDots" :indicator-color="indicatorColor"
+				:indicator-active-color="indicatorActiveColor" :autoplay="autoplay" :interval="interval"
+				:duration="duration" :circular="circular" :vertical="vertical" @change="changeEvent"
+				:style="'height:'+height">
+				<swiper-item v-for="(item,index) in resdata" :key="index" @tap="tipEvent(item)"
+					:style="'height:'+height">
 					<image mode="widthFix" :src="item.image" :style="'height:'+height" lazy-load></image>
 				</swiper-item>
 			</swiper>
@@ -11,52 +15,52 @@
 </template>
 
 <script>
-	export default{
-		props:{
-			resdata:Array,
-			indicatorDots:{ //是否显示面板指示点
-				type:Boolean,
-				default:true
+	export default {
+		props: {
+			resdata: Array,
+			indicatorDots: { //是否显示面板指示点
+				type: Boolean,
+				default: true
 			},
-			indicatorColor:{ //指示点颜色
-				type:String,
-				default:'rgba(0, 0, 0, .3)'
+			indicatorColor: { //指示点颜色
+				type: String,
+				default: 'rgba(0, 0, 0, .3)'
 			},
-			indicatorActiveColor:{ //当前选中的指示点颜色
-				type:String,
-				default:"#FFFFFF"
+			indicatorActiveColor: { //当前选中的指示点颜色
+				type: String,
+				default: "#FFFFFF"
 			},
-			autoplay:{ //是否自动切换
-				type:Boolean,
-				default:true
+			autoplay: { //是否自动切换
+				type: Boolean,
+				default: true
 			},
-			interval:{ //自动切换时间间隔
-				type:Number,
-				default:5000
+			interval: { //自动切换时间间隔
+				type: Number,
+				default: 5000
 			},
-			duration:{ //滑动动画时长
-				type:Number,
-				default:500
+			duration: { //滑动动画时长
+				type: Number,
+				default: 500
 			},
-			circular:{ //是否循环衔接
-				type:Boolean,
-				default:true
+			circular: { //是否循环衔接
+				type: Boolean,
+				default: true
 			},
-			vertical:{ //是否循环衔接
-				type:Boolean,
-				default:false
+			vertical: { //是否循环衔接
+				type: Boolean,
+				default: false
 			},
-			height:{ //轮播高度
-				type:String,
-				default:"280upx"
+			height: { //轮播高度
+				type: String,
+				default: "280upx"
 			}
 		},
-		methods:{
-			changeEvent(event){
-				this.$emit('changeEvent',event)
+		methods: {
+			changeEvent(event) {
+				this.$emit('changeEvent', event)
 			},
-			tipEvent(item){
-				if(!!item.url){
+			tipEvent(item) {
+				if (!!item.url) {
 					console.log("点击了轮播图");
 				}
 			}
@@ -65,4 +69,4 @@
 </script>
 
 <style>
-</style>
+</style>

+ 2 - 1
config/baseUrl.js

@@ -5,7 +5,8 @@ if (process.env.NODE_ENV === 'development') {
 	// 开发环境
 	// baseUrl = "http://39.98.239.48/web-api"; //测试
 	// h5BaseUrl = "http://39.98.239.48/h5";
-	// baseUrl = "http://192.168.0.115:8080/"; //凯森
+	// baseUrl = "http://192.168.0.106:8080/"; 
+	// baseUrl = "http://192.168.0.115:8080"; //凯森
 	baseUrl = "http://sxzgkj.baoxianzhanggui.com/web-api"; //正式
 	h5BaseUrl = "http://sxzgkj.baoxianzhanggui.com/h5";
 	socketUrl = "";

+ 43 - 1
main.js

@@ -82,4 +82,46 @@ plus.nativeUI.toast = (function(str) {
 		})
 	}
 });
-// #endif
+// #endif
+// //在main.js中配置
+// function sizeFun() {
+// 	// 宽屏字体大小适配
+// 	let n = 1920;
+// 	// 循环运算判断,共9次,最小屏幕192,最大屏幕3640,以下,n是当前预设屏幕宽,i是循环计算次数
+// 	for (let i = 0; i < 9; i++) {
+// 		// 如果当前屏幕宽就是设计稿屏幕(1920),就不进行缩放
+// 		if (uni.getSystemInfoSync().windowWidth == n) {
+// 			return 1;
+// 		}
+
+// 		// 如果当前屏幕宽小于1920
+// 		if (uni.getSystemInfoSync().windowWidth < n) {
+// 			// 那就进入循环,预设屏幕大小减去192,再判断当前屏幕是否大于1920-192
+// 			n -= 192;
+// 			// 如果当前屏幕大于预设屏幕,就赋值
+// 			if (uni.getSystemInfoSync().windowWidth > n) {
+// 				// i+1:因为i从零开始
+// 				// 10-i+1:因为要算出当前是倒数第几次循环
+// 				// 10-i+1/10:因为要取1以下的小数
+// 				return (10 - (i + 1)) / 10;
+// 			}
+// 		}
+
+// 		// 如果当前屏幕宽大于1920
+// 		if (uni.getSystemInfoSync().windowWidth > n) {
+// 			// 那就进入循环,预设屏幕大小加上192,再判断当前屏幕是否大于1920+192
+// 			n += 192;
+// 			// 如果当前屏幕小于预设屏幕,就赋值
+// 			if (uni.getSystemInfoSync().windowWidth < n) {
+// 				// i+1:因为i从零开始
+// 				//(i+1)/10:因为要算出当前是第几次循环,得出小数,
+// 				// 1+i+1/10:取1以上的小数
+// 				// 结束循环
+// 				return 1 + ((i + 1) / 10);
+// 			}
+// 		}
+// 	}
+// }
+
+// //配置到全局方便使用
+// Vue.prototype.$pageSize = sizeFun();

+ 4 - 3
manifest.json

@@ -7,8 +7,8 @@
 		"sizes": "分辨率,192x192",
 		"src": "图片路径"
 	}],
-	"versionName": "1.0.180",
-	"versionCode": 180,
+	"versionName": "1.0.185",
+	"versionCode": 185,
 	"app-plus": {
 		"error": {
 			"url": "hybrid/html/error.html"
@@ -155,7 +155,8 @@
 				}
 			},
 			"splashscreen": {
-				"androidStyle": "common"
+				"androidStyle": "common",
+				"useOriginalMsgbox": false
 			},
 			"ios": {
 				"dSYMs": false

+ 363 - 323
node_modules/uview-ui/components/u-select/u-select.vue

@@ -9,36 +9,35 @@
 				<u-icon name="arrow-down-fill" size="26" color="#c0c4cc"></u-icon>
 			</view>
 		</view> -->
-		<u-popup :maskCloseAble="maskCloseAble" mode="bottom" :popup="false" v-model="value" length="auto" :safeAreaInsetBottom="safeAreaInsetBottom" @close="close" :z-index="uZIndex">
+		<u-popup :maskCloseAble="maskCloseAble" mode="bottom" :popup="false" v-model="value" length="auto"
+			:safeAreaInsetBottom="safeAreaInsetBottom" @close="close" :z-index="uZIndex">
 			<view class="u-select">
 				<view class="u-select__header" @touchmove.stop.prevent="">
-					<view
-						class="u-select__header__cancel u-select__header__btn"
-						:style="{ color: cancelColor }"
-						hover-class="u-hover-class"
-						:hover-stay-time="150"
-						@tap="getResult('cancel')"
-					>
+					<view class="u-select__header__cancel u-select__header__btn" :style="{ color: cancelColor }"
+						hover-class="u-hover-class" :hover-stay-time="150" @tap="getResult('cancel')">
 						{{cancelText}}
 					</view>
 					<view class="u-select__header__title">
 						{{title}}
 					</view>
-					<view
-						class="u-select__header__confirm u-select__header__btn"
-						:style="{ color: moving ? cancelColor : confirmColor }"
-						hover-class="u-hover-class"
-						:hover-stay-time="150"
-						@touchmove.stop=""
-						@tap.stop="getResult('confirm')"
-					>
+					<view class="u-select__header__confirm u-select__header__btn"
+						:style="{ color: moving ? cancelColor : confirmColor }" hover-class="u-hover-class"
+						:hover-stay-time="150" @touchmove.stop="" @tap.stop="getResult('confirm')">
 						{{confirmText}}
 					</view>
 				</view>
+				<view v-if="searchShow && mode==='single-column'" class="u-select__content__body__search">
+					<view class="u-content dis j-s a-c">
+						<u-icon name="search" color="rgb(96, 98, 102)" size="30"></u-icon>
+						<u-input v-model="searchInput" type="text" placeholder="输入关键词搜索" />
+					</view>
+				</view>
 				<view class="u-select__body">
-					<picker-view @change="columnChange" class="u-select__body__picker-view" :value="defaultSelector" @pickstart="pickstart" @pickend="pickend">
+					<picker-view @change="columnChange" class="u-select__body__picker-view" :value="defaultSelector"
+						@pickstart="pickstart" @pickend="pickend">
 						<picker-view-column v-for="(item, index) in columnData" :key="index">
-							<view class="u-select__body__picker-view__item" v-for="(item1, index1) in item" :key="index1">
+							<view class="u-select__body__picker-view__item" v-for="(item1, index1) in item"
+								:key="index1">
 								<view class="u-line-1">{{ item1[labelName] }}</view>
 							</view>
 						</picker-view-column>
@@ -72,346 +71,387 @@
 	 * @example <u-select v-model="show" :list="list"></u-select>
 	 */
 
-export default {
-	props: {
-		// 列数据
-		list: {
-			type: Array,
-			default() {
-				return [];
-			}
-		},
-		// 是否显示边框
-		border: {
-			type: Boolean,
-			default: true
-		},
-		// 通过双向绑定控制组件的弹出与收起
-		value: {
-			type: Boolean,
-			default: false
-		},
-		// "取消"按钮的颜色
-		cancelColor: {
-			type: String,
-			default: '#606266'
-		},
-		// "确定"按钮的颜色
-		confirmColor: {
-			type: String,
-			default: '#2979ff'
-		},
-		// 弹出的z-index值
-		zIndex: {
-			type: [String, Number],
-			default: 0
-		},
-		safeAreaInsetBottom: {
-			type: Boolean,
-			default: false
-		},
-		// 是否允许通过点击遮罩关闭Picker
-		maskCloseAble: {
-			type: Boolean,
-			default: true
-		},
-		// 提供的默认选中的下标
-		defaultValue: {
-			type: Array,
-			default() {
-				return [0];
-			}
-		},
-		// 模式选择,single-column-单列,mutil-column-多列,mutil-column-auto-多列联动
-		mode: {
-			type: String,
-			default: 'single-column'
-		},
-		// 自定义value属性名
-		valueName: {
-			type: String,
-			default: 'value'
-		},
-		// 自定义label属性名
-		labelName: {
-			type: String,
-			default: 'label'
-		},
-		// 自定义多列联动模式的children属性名
-		childName: {
-			type: String,
-			default: 'children'
-		},
-		// 顶部标题
-		title: {
-			type: String,
-			default: ''
-		},
-		// 取消按钮的文字
-		cancelText: {
-			type: String,
-			default: '取消'
-		},
-		// 确认按钮的文字
-		confirmText: {
-			type: String,
-			default: '确认'
-		}
-	},
-	data() {
-		return {
-			// 用于列改变时,保存当前的索引,下一次变化时比较得出是哪一列发生了变化
-			defaultSelector: [0],
-			// picker-view的数据
-			columnData: [],
-			// 每次队列发生变化时,保存选择的结果
-			selectValue: [],
-			// 上一次列变化时的index
-			lastSelectIndex: [],
-			// 列数
-			columnNum: 0,
-			// 列是否还在滑动中,微信小程序如果在滑动中就点确定,结果可能不准确
-			moving: false
-		};
-	},
-	watch: {
-		// 在select弹起的时候,重新初始化所有数据
-		value: {
-			immediate: true,
-			handler(val) {
-				if(val) setTimeout(() => this.init(), 10);
-			}
-		},
-	},
-	computed: {
-		uZIndex() {
-			// 如果用户有传递z-index值,优先使用
-			return this.zIndex ? this.zIndex : this.$u.zIndex.popup;
-		},
-	},
-	methods: {
-		// 标识滑动开始,只有微信小程序才有这样的事件
-		pickstart() {
-			// #ifdef MP-WEIXIN
-			this.moving = true;
-			// #endif
+	export default {
+		props: {
+			// 列数据
+			list: {
+				type: Array,
+				default () {
+					return [];
+				}
+			},
+			// 是否显示边框
+			border: {
+				type: Boolean,
+				default: true
+			},
+			// 通过双向绑定控制组件的弹出与收起
+			value: {
+				type: Boolean,
+				default: false
+			},
+			// "取消"按钮的颜色
+			cancelColor: {
+				type: String,
+				default: '#606266'
+			},
+			// "确定"按钮的颜色
+			confirmColor: {
+				type: String,
+				default: '#2979ff'
+			},
+			// 弹出的z-index值
+			zIndex: {
+				type: [String, Number],
+				default: 0
+			},
+			safeAreaInsetBottom: {
+				type: Boolean,
+				default: false
+			},
+			// 是否允许通过点击遮罩关闭Picker
+			maskCloseAble: {
+				type: Boolean,
+				default: true
+			},
+			// 提供的默认选中的下标
+			defaultValue: {
+				type: Array,
+				default () {
+					return [0];
+				}
+			},
+			// 模式选择,single-column-单列,mutil-column-多列,mutil-column-auto-多列联动
+			mode: {
+				type: String,
+				default: 'single-column'
+			},
+			// 自定义value属性名
+			valueName: {
+				type: String,
+				default: 'value'
+			},
+			// 自定义label属性名
+			labelName: {
+				type: String,
+				default: 'label'
+			},
+			// 自定义多列联动模式的children属性名
+			childName: {
+				type: String,
+				default: 'children'
+			},
+			// 顶部标题
+			title: {
+				type: String,
+				default: ''
+			},
+			// 取消按钮的文字
+			cancelText: {
+				type: String,
+				default: '取消'
+			},
+			// 确认按钮的文字
+			confirmText: {
+				type: String,
+				default: '确认'
+			},
+			// 是否开启模糊搜索(只在单列模式生效)
+			searchShow: {
+				type: Boolean,
+				default: false
+			},
 		},
-		// 标识滑动结束
-		pickend() {
-			// #ifdef MP-WEIXIN
-			this.moving = false;
-			// #endif
+		data() {
+			return {
+				// 用于列改变时,保存当前的索引,下一次变化时比较得出是哪一列发生了变化
+				defaultSelector: [0],
+				// picker-view的数据
+				columnData: [],
+				// 每次队列发生变化时,保存选择的结果
+				selectValue: [],
+				// 上一次列变化时的index
+				lastSelectIndex: [],
+				// 列数
+				columnNum: 0,
+				// 列是否还在滑动中,微信小程序如果在滑动中就点确定,结果可能不准确
+				moving: false,
+				searchInput: "",
+			};
 		},
-		init() {
-			this.setColumnNum();
-			this.setDefaultSelector();
-			this.setColumnData();
-			this.setSelectValue();
+		watch: {
+			// 在select弹起的时候,重新初始化所有数据
+			value: {
+				immediate: true,
+				handler(val) {
+					if (val) setTimeout(() => this.init(), 10);
+				}
+			},
+			searchInput: {
+				handler(val) {
+					this.searchResult(val)
+				}
+			},
 		},
-		// 获取默认选中列下标
-		setDefaultSelector() {
-			// 如果没有传入默认选中的值,生成长度为columnNum,用0填充的数组
-			this.defaultSelector = this.defaultValue.length == this.columnNum ? this.defaultValue : Array(this.columnNum).fill(0);
-			this.lastSelectIndex = this.$u.deepClone(this.defaultSelector);
+		computed: {
+			uZIndex() {
+				// 如果用户有传递z-index值,优先使用
+				return this.zIndex ? this.zIndex : this.$u.zIndex.popup;
+			},
 		},
-		// 计算列数
-		setColumnNum() {
-			// 单列的列数为1
-			if(this.mode == 'single-column') this.columnNum = 1;
-			// 多列时,this.list数组长度就是列数
-			else if(this.mode == 'mutil-column') this.columnNum = this.list.length;
-			// 多列联动时,通过历遍this.list的第一个元素,得出有多少列
-			else if(this.mode == 'mutil-column-auto') {
-				let num = 1;
-				let column = this.list;
-				// 只要有元素并且第一个元素有children属性,继续历遍
-				while(column[0][this.childName]) {
-					column = column[0] ? column[0][this.childName] : {};
-					num ++;
+		methods: {
+			// 标识滑动开始,只有微信小程序才有这样的事件
+			pickstart() {
+				// #ifdef MP-WEIXIN
+				this.moving = true;
+				// #endif
+			},
+			// 标识滑动结束
+			pickend() {
+				// #ifdef MP-WEIXIN
+				this.moving = false;
+				// #endif
+			},
+			init() {
+				this.setColumnNum();
+				this.setDefaultSelector();
+				this.setColumnData();
+				this.setSelectValue();
+			},
+			// 获取默认选中列下标
+			setDefaultSelector() {
+				// 如果没有传入默认选中的值,生成长度为columnNum,用0填充的数组
+				this.defaultSelector = this.defaultValue.length == this.columnNum ? this.defaultValue : Array(this
+					.columnNum).fill(0);
+				this.lastSelectIndex = this.$u.deepClone(this.defaultSelector);
+			},
+			//模糊查询列表
+			searchResult(value) {
+				let result = [];
+				let data = this.list.filter(item => item.dictTag.indexOf(value) > -1);
+				if (data.length > 0) {
+					result.push(data);
 				}
-				this.columnNum = num;
-			}
-		},
-		// 获取需要展示在picker中的列数据
-		setColumnData() {
-			let data = [];
-			this.selectValue = [];
-			if(this.mode == 'mutil-column-auto') {
-				// 获得所有数据中的第一个元素
-				let column = this.list[this.defaultSelector.length ? this.defaultSelector[0] : 0];
-				// 通过循环所有的列数,再根据设定列的数组,得出当前需要渲染的整个列数组
-				for (let i = 0; i < this.columnNum; i++) {
-					// 第一列默认为整个list数组
-					if (i == 0) {
-						data[i] = this.list;
-						column = column[this.childName];
-					} else {
-						// 大于第一列时,判断是否有默认选中的,如果没有就用该列的第一项
-						data[i] = column;
-						column = column[this.defaultSelector[i]][this.childName];
+				this.columnData = result;
+				this.selectValue = []
+				if (this.columnData.length > 0) {
+					this.setSelectValue()
+				}
+			},
+			// 计算列数
+			setColumnNum() {
+				// 单列的列数为1
+				if (this.mode == 'single-column') this.columnNum = 1;
+				// 多列时,this.list数组长度就是列数
+				else if (this.mode == 'mutil-column') this.columnNum = this.list.length;
+				// 多列联动时,通过历遍this.list的第一个元素,得出有多少列
+				else if (this.mode == 'mutil-column-auto') {
+					let num = 1;
+					let column = this.list;
+					// 只要有元素并且第一个元素有children属性,继续历遍
+					while (column[0][this.childName]) {
+						column = column[0] ? column[0][this.childName] : {};
+						num++;
 					}
+					this.columnNum = num;
 				}
-			} else if(this.mode == 'single-column') {
-				data[0] = this.list;
-			} else {
-				data = this.list;
-			}
-			this.columnData = data;
-		},
-		// 获取默认选中的值,如果没有设置defaultValue,就默认选中每列的第一个
-		setSelectValue() {
-			let tmp = null;
-			for(let i = 0; i < this.columnNum; i++) {
-				tmp = this.columnData[i][this.defaultSelector[i]];
-				let data = {
-					value: tmp ? tmp[this.valueName] : null,
-					label: tmp ? tmp[this.labelName] : null
-				};
-				// 判断是否存在额外的参数,如果存在,就返回
-				if(tmp && tmp.extra) data.extra = tmp.extra;
-				this.selectValue.push(data)
-			}
-		},
-		// 列选项
-		columnChange(e) {
-			let index = null;
-			let columnIndex = e.detail.value;
-			// 由于后面是需要push进数组的,所以需要先清空数组
-			this.selectValue = [];
-			if(this.mode == 'mutil-column-auto') {
-				// 对比前后两个数组,寻找变更的是哪一列,如果某一个元素不同,即可判定该列发生了变化
-				this.lastSelectIndex.map((val, idx) => {
-					if (val != columnIndex[idx]) index = idx;
-				});
-				this.defaultSelector = columnIndex;
-				for (let i = index + 1; i < this.columnNum; i++) {
-					// 当前变化列的下一列的数据,需要获取上一列的数据,同时需要指定是上一列的第几个的children,再往后的
-					// 默认是队列的第一个为默认选项
-					this.columnData[i] = this.columnData[i - 1][i - 1 == index ? columnIndex[index] : 0][this.childName];
-					// 改变的列之后的所有列,默认选中第一个
-					this.defaultSelector[i] = 0;
+			},
+			// 获取需要展示在picker中的列数据
+			setColumnData() {
+				let data = [];
+				this.selectValue = [];
+				if (this.mode == 'mutil-column-auto') {
+					// 获得所有数据中的第一个元素
+					let column = this.list[this.defaultSelector.length ? this.defaultSelector[0] : 0];
+					// 通过循环所有的列数,再根据设定列的数组,得出当前需要渲染的整个列数组
+					for (let i = 0; i < this.columnNum; i++) {
+						// 第一列默认为整个list数组
+						if (i == 0) {
+							data[i] = this.list;
+							column = column[this.childName];
+						} else {
+							// 大于第一列时,判断是否有默认选中的,如果没有就用该列的第一项
+							data[i] = column;
+							column = column[this.defaultSelector[i]][this.childName];
+						}
+					}
+				} else if (this.mode == 'single-column') {
+					data[0] = this.list;
+				} else {
+					data = this.list;
 				}
-				// 在历遍的过程中,可能由于上一步修改this.columnData,导致产生连锁反应,程序触发columnChange,会有多次调用
-				// 只有在最后一次数据稳定后的结果是正确的,此前的历遍中,可能会产生undefined,故需要判断
-				columnIndex.map((item, index) => {
-					let data = this.columnData[index][columnIndex[index]];
-					let tmp = {
-						value: data ? data[this.valueName] : null,
-						label: data ? data[this.labelName] : null,
+				this.columnData = data;
+			},
+			// 获取默认选中的值,如果没有设置defaultValue,就默认选中每列的第一个
+			setSelectValue() {
+				let tmp = null;
+				for (let i = 0; i < this.columnNum; i++) {
+					tmp = this.columnData[i][this.defaultSelector[i]];
+					let data = {
+						value: tmp ? tmp[this.valueName] : null,
+						label: tmp ? tmp[this.labelName] : null
 					};
-					// 判断是否有需要额外携带的参数
-					if(data && data.extra !== undefined) tmp.extra = data.extra;
-					this.selectValue.push(tmp);
+					// 判断是否存在额外的参数,如果存在,就返回
+					if (tmp && tmp.extra) data.extra = tmp.extra;
+					this.selectValue.push(data)
+				}
+			},
+			// 列选项
+			columnChange(e) {
+				let index = null;
+				let columnIndex = e.detail.value;
+				// 由于后面是需要push进数组的,所以需要先清空数组
+				this.selectValue = [];
+				if (this.mode == 'mutil-column-auto') {
+					// 对比前后两个数组,寻找变更的是哪一列,如果某一个元素不同,即可判定该列发生了变化
+					this.lastSelectIndex.map((val, idx) => {
+						if (val != columnIndex[idx]) index = idx;
+					});
+					this.defaultSelector = columnIndex;
+					for (let i = index + 1; i < this.columnNum; i++) {
+						// 当前变化列的下一列的数据,需要获取上一列的数据,同时需要指定是上一列的第几个的children,再往后的
+						// 默认是队列的第一个为默认选项
+						this.columnData[i] = this.columnData[i - 1][i - 1 == index ? columnIndex[index] : 0][this
+							.childName
+						];
+						// 改变的列之后的所有列,默认选中第一个
+						this.defaultSelector[i] = 0;
+					}
+					// 在历遍的过程中,可能由于上一步修改this.columnData,导致产生连锁反应,程序触发columnChange,会有多次调用
+					// 只有在最后一次数据稳定后的结果是正确的,此前的历遍中,可能会产生undefined,故需要判断
+					columnIndex.map((item, index) => {
+						let data = this.columnData[index][columnIndex[index]];
+						let tmp = {
+							value: data ? data[this.valueName] : null,
+							label: data ? data[this.labelName] : null,
+						};
+						// 判断是否有需要额外携带的参数
+						if (data && data.extra !== undefined) tmp.extra = data.extra;
+						this.selectValue.push(tmp);
 
-				})
-				// 保存这一次的结果,用于下次列发生变化时作比较
-				this.lastSelectIndex = columnIndex;
-			} else if(this.mode == 'single-column') {
-				let data = this.columnData[0][columnIndex[0]];
-				// 初始默认选中值
-				let tmp = {
-					value: data ? data[this.valueName] : null,
-					label: data ? data[this.labelName] : null,
-				};
-				// 判断是否有需要额外携带的参数
-				if(data && data.extra !== undefined) tmp.extra = data.extra;
-				this.selectValue.push(tmp);
-			} else if(this.mode == 'mutil-column') {
-				// 初始默认选中值
-				columnIndex.map((item, index) => {
-					let data = this.columnData[index][columnIndex[index]];
+					})
+					// 保存这一次的结果,用于下次列发生变化时作比较
+					this.lastSelectIndex = columnIndex;
+				} else if (this.mode == 'single-column') {
+					let data = this.columnData[0][columnIndex[0]];
 					// 初始默认选中值
 					let tmp = {
 						value: data ? data[this.valueName] : null,
 						label: data ? data[this.labelName] : null,
 					};
 					// 判断是否有需要额外携带的参数
-					if(data && data.extra !== undefined) tmp.extra = data.extra;
+					if (data && data.extra !== undefined) tmp.extra = data.extra;
 					this.selectValue.push(tmp);
-				})
+				} else if (this.mode == 'mutil-column') {
+					// 初始默认选中值
+					columnIndex.map((item, index) => {
+						let data = this.columnData[index][columnIndex[index]];
+						// 初始默认选中值
+						let tmp = {
+							value: data ? data[this.valueName] : null,
+							label: data ? data[this.labelName] : null,
+						};
+						// 判断是否有需要额外携带的参数
+						if (data && data.extra !== undefined) tmp.extra = data.extra;
+						this.selectValue.push(tmp);
+					})
+				}
+			},
+			close() {
+				this.$emit('input', false);
+			},
+			// 点击确定或者取消
+			getResult(event = null) {
+				// #ifdef MP-WEIXIN
+				if (this.moving) return;
+				// #endif
+				if (event) this.$emit(event, this.selectValue);
+				this.close();
+			},
+			selectHandler() {
+				this.$emit('click');
 			}
-		},
-		close() {
-			this.$emit('input', false);
-		},
-		// 点击确定或者取消
-		getResult(event = null) {
-			// #ifdef MP-WEIXIN
-			if (this.moving) return;
-			// #endif
-			if (event) this.$emit(event, this.selectValue);
-			this.close();
-		},
-		selectHandler() {
-			this.$emit('click');
 		}
-	}
-};
+	};
 </script>
 
 <style scoped lang="scss">
-@import "../../libs/css/style.components.scss";
+	@import "../../libs/css/style.components.scss";
 
-.u-select {
+	.u-select {
 
-	&__action {
-		position: relative;
-		line-height: $u-form-item-height;
-		height: $u-form-item-height;
+		&__action {
+			position: relative;
+			line-height: $u-form-item-height;
+			height: $u-form-item-height;
 
-		&__icon {
-			position: absolute;
-			right: 20rpx;
-			top: 50%;
-			transition: transform .4s;
-			transform: translateY(-50%);
-			z-index: 1;
+			&__icon {
+				position: absolute;
+				right: 20rpx;
+				top: 50%;
+				transition: transform .4s;
+				transform: translateY(-50%);
+				z-index: 1;
 
-			&--reverse {
-				transform: rotate(-180deg) translateY(50%);
+				&--reverse {
+					transform: rotate(-180deg) translateY(50%);
+				}
 			}
 		}
-	}
 
-	&__hader {
-		&__title {
-			color: $u-content-color;
+		&__hader {
+			&__title {
+				color: $u-content-color;
+			}
 		}
-	}
 
-	&--border {
-		border-radius: 6rpx;
-		border-radius: 4px;
-		border: 1px solid $u-form-item-border-color;
-	}
+		&--border {
+			border-radius: 6rpx;
+			border-radius: 4px;
+			border: 1px solid $u-form-item-border-color;
+		}
 
-	&__header {
-		@include vue-flex;
-		align-items: center;
-		justify-content: space-between;
-		height: 80rpx;
-		padding: 0 40rpx;
-	}
+		&__header {
+			@include vue-flex;
+			align-items: center;
+			justify-content: space-between;
+			height: 80rpx;
+			padding: 0 40rpx;
+		}
+
+		&__body {
+			width: 100%;
+			height: 500rpx;
+			overflow: hidden;
+			background-color: #fff;
+
+			&__picker-view {
+				height: 100%;
+				box-sizing: border-box;
+
+				&__item {
+					@include vue-flex;
+					align-items: center;
+					justify-content: center;
+					font-size: 32rpx;
+					color: $u-main-color;
+					padding: 0 8rpx;
+				}
+			}
+		}
 
-	&__body {
-		width: 100%;
-		height: 500rpx;
-		overflow: hidden;
-		background-color: #fff;
+		&__content__body__search {
+			padding: 20px;
 
-		&__picker-view {
-			height: 100%;
-			box-sizing: border-box;
+			.u-content {
+				padding: 0 10px;
+				background-color: rgb(242, 242, 242);
+				border-radius: 53px;
 
-			&__item {
-				@include vue-flex;
-				align-items: center;
-				justify-content: center;
-				font-size: 32rpx;
-				color: $u-main-color;
-				padding: 0 8rpx;
+				.u-input {
+					margin-left: 10px;
+				}
 			}
 		}
 	}
-}
-</style>
+</style>

+ 17 - 2
pages.json

@@ -725,13 +725,13 @@
 				"enablePullDownRefresh": false
 			}
 
-		},{
+		}, {
 			"path": "pages/realname/realname",
 			"style": {
 				"navigationBarTitleText": "实名认证",
 				"enablePullDownRefresh": false
 
-		}
+			}
 		}, {
 			"path": "pages/orders/quoteHistory",
 			"style": {
@@ -746,6 +746,13 @@
 				"enablePullDownRefresh": false
 			}
 
+		},
+		{
+			"path": "pages/tools/addStaff/codeDownload",
+			"style": {
+				"navigationBarTitleText": "扫码下载",
+				"enablePullDownRefresh": false
+			}
 		}
 
 	],
@@ -755,6 +762,14 @@
 		"navigationBarBackgroundColor": "#FFFFFF",
 		// "navigationStyle": "custom",
 		"backgroundColor": "#FFFFFF"
+		// "rpxCalcMaxDeviceWidth": 3840,
+		// // rpx 计算所支持的最大设备宽度,单位 px,默认值为 960
+
+		// "rpxCalcBaseDeviceWidth": 750,
+		// // rpx 计算使用的基准设备宽度,设备实际宽度超出 rpx 计算所支持的最大设备宽度时将按基准宽度计算,单位 px,默认值为 375
+
+		// "rpxCalcIncludeWidth": 750
+		// // rpx 计算特殊处理的值,始终按实际的设备宽度计算,单位 rpx,默认值为 750
 	},
 	"tabBar": {
 		"color": "#444444",

+ 82 - 25
pages/carInsure1/carInfo1.vue

@@ -19,8 +19,7 @@
 				<uni-forms-item name="frameNo" required label="车辆识别码:">
 					<view class="d-flex a-center" style="height: 100%;">
 						<input class="uni-input-input flex-1 textColor" placeholder="请输入车辆识别码" v-model="carInfo.frameNo"
-							maxlength="17" @blur="binddata('frameNo', $event.detail.value,'carForm')"
-							placeholder-style="font-size:28upx" @input="upperCaseType('frameNo')" />
+							maxlength="17" placeholder-style="font-size:28upx" @input="upperCaseType('frameNo')" />
 						<text class="checkButton d-flex a-center j-center" @tap="toChooseVin(carInfo.frameNo)">校验</text>
 					</view>
 				</uni-forms-item>
@@ -81,9 +80,9 @@
 				</uni-forms-item>
 				<uni-forms-item label="车辆类型: " required>
 					<view class="d-flex a-center" style="width:100%;height: 100%;" @click="cartypeshow=true">
-						<u-select v-model="cartypeshow" mode="single-column" :list="trafficManagementVehicleTypeoptions"
-							@confirm="dictionaryConfirm($event,'cartype')" label-name="dictTag"
-							value-name="dictValue"></u-select>
+						<u-select v-model="cartypeshow" mode="single-column" :searchShow="true"
+							:list="trafficManagementVehicleTypeoptions" @confirm="dictionaryConfirm($event,'cartype')"
+							label-name="dictTag" value-name="dictValue"></u-select>
 						<view class="textColor">{{carInfo1.cartype}}</view>
 					</view>
 				</uni-forms-item>
@@ -181,7 +180,7 @@
 						<picker class="d-flex a-center" style="width:100%;height: 100%;" mode="selector"
 							range-key="label" :range="genderList" v-model="ownerGenderIndex"
 							@change="bindGenderChange($event,'owner')">
-							<view class="textColor">{{genderList[ownerGenderIndex]['label']}}</view>
+							<view class="textColor">{{ownerInfo.gender}}</view>
 						</picker>
 					</view>
 				</uni-forms-item>
@@ -268,7 +267,7 @@
 							<picker class="d-flex a-center" style="width:100%;height: 100%;" mode="selector"
 								range-key="label" :range="genderList" v-model="policyHolderGenderIndex"
 								@change="bindGenderChange($event,'policyHolder')">
-								<view class="textColor">{{genderList[policyHolderGenderIndex]['label']}}</view>
+								<view class="textColor">{{policyHolderInfo.gender}}</view>
 							</picker>
 						</view>
 					</uni-forms-item>
@@ -367,7 +366,7 @@
 							<picker class="d-flex a-center" style="width:100%;height: 100%;" mode="selector"
 								range-key="label" :range="genderList" v-model="insuredPersonGenderIndex"
 								@change="bindGenderChange($event,'insuredPerson')">
-								<view class="textColor">{{genderList[insuredPersonGenderIndex]['label']}}</view>
+								<view class="textColor">{{insuredPersonInfo.gender}}</view>
 							</picker>
 						</view>
 					</uni-forms-item>
@@ -531,7 +530,7 @@
 	import $http from '../../config/requestConfig';
 	import {
 		getAgeByIdCard,
-		addressCode
+		addressCode,
 	} from '@/plugins/utils';
 	import {
 		Promise
@@ -649,16 +648,11 @@
 					energyType: "汽油",
 					cimodelclass: "客车", //车辆种类
 					carnature: "非营业",
-					cartype: "k33轿车",
+					cartype: "轿车",
 					vehicleUse: "",
 				},
 				carRules: {
-					modelcname: {
-						rules: [{
-							required: true,
-							errorMessage: '请输入品牌型号',
-						}, ]
-					},
+
 					frameNo: {
 						rules: [{
 							required: true,
@@ -668,6 +662,12 @@
 							errorMessage: '请输入正确的车辆识别码',
 						}]
 					},
+					modelcname: {
+						rules: [{
+							required: true,
+							errorMessage: '请输入品牌型号',
+						}, ]
+					},
 					engineNo: {
 						rules: [{
 							required: true,
@@ -691,13 +691,19 @@
 						rules: [{
 							required: true,
 							errorMessage: '请选择注册日期',
-						}, ]
+						}, {
+							pattern: /^\d{4}-\d{2}-\d{2}$/,
+							errorMessage: '注册日期格式错误',
+						}]
 					},
 					issueDate: {
 						rules: [{
 							required: true,
 							errorMessage: '请选择发证日期',
-						}, ]
+						}, {
+							pattern: /^\d{4}-\d{2}-\d{2}$/,
+							errorMessage: '发证日期日期格式错误',
+						}]
 					}
 				},
 				ownerRules: {
@@ -750,7 +756,25 @@
 								errorMessage: '车主地址长度在 {minLength} 到 {maxLength} 个字符',
 							},
 						]
-					}
+					},
+					identifyValidDate: {
+						rules: [{
+							required: true,
+							errorMessage: '请选择身份证起期',
+						}, {
+							pattern: /^\d{4}-\d{2}-\d{2}$/,
+							errorMessage: '身份证起期格式错误',
+						}]
+					},
+					identifyValidEndDate: {
+						rules: [{
+							required: true,
+							errorMessage: '请选择身份证止期',
+						}, {
+							pattern: /^\d{4}-\d{2}-\d{2}$/,
+							errorMessage: '身份证止期格式错误',
+						}]
+					},
 				},
 				policyHolderRules: {
 					name: {
@@ -802,7 +826,25 @@
 								errorMessage: '投保人地址长度在 {minLength} 到 {maxLength} 个字符',
 							},
 						]
-					}
+					},
+					identifyValidDate: {
+						rules: [{
+							required: true,
+							errorMessage: '请选择身份证起期',
+						}, {
+							pattern: /^\d{4}-\d{2}-\d{2}$/,
+							errorMessage: '身份证起期格式错误',
+						}]
+					},
+					identifyValidEndDate: {
+						rules: [{
+							required: true,
+							errorMessage: '请选择身份证止期',
+						}, {
+							pattern: /^\d{4}-\d{2}-\d{2}$/,
+							errorMessage: '身份证止期格式错误',
+						}]
+					},
 				},
 				insuredPersonRules: {
 					name: {
@@ -855,7 +897,25 @@
 								errorMessage: '被保人地址长度在 {minLength} 到 {maxLength} 个字符',
 							},
 						]
-					}
+					},
+					identifyValidDate: {
+						rules: [{
+							required: true,
+							errorMessage: '请选择身份证起期',
+						}, {
+							pattern: /^\d{4}-\d{2}-\d{2}$/,
+							errorMessage: '身份证起期格式错误',
+						}]
+					},
+					identifyValidEndDate: {
+						rules: [{
+							required: true,
+							errorMessage: '请选择身份证止期',
+						}, {
+							pattern: /^\d{4}-\d{2}-\d{2}$/,
+							errorMessage: '身份证止期格式错误',
+						}]
+					},
 				},
 				checkInfo: {},
 				checkImage: [],
@@ -981,7 +1041,6 @@
 				const eventChannel = this.getOpenerEventChannel()
 				// 监听acceptData事件,获取上一页面通过eventChannel传送到当前页面的数据
 				eventChannel.on('acceptData', (data) => {
-					console.log(data)
 					if (!!data) {
 						//读取上一个页面传过来数据(车辆信息,人员信息,险种信息)
 						this.carInfo = data.carInfo; //车辆信息
@@ -1035,7 +1094,6 @@
 				}
 			},
 			dictionaryConfirm(e, name) {
-				console.log(e, name)
 				this.carInfo[name] = e[0].value;
 				this.carInfo1[name] = e[0].label;
 			},
@@ -1660,8 +1718,7 @@
 						})
 					})
 				})
-			}
-
+			},
 		}
 	}
 </script>

+ 104 - 23
pages/carInsure1/insureItems1.vue

@@ -9,8 +9,16 @@
 			</view>
 		</view>
 		<view class="compulsory-insurance">
-			<view class="common-title d-flex a-center">交强险 <view class="icon iconfont icon-Group-"
-					style="margin-left: 15upx;color: #aaa;font-weight: normal;" @tap="CITips"></view>
+			<view class="common-title  dis j-s">
+				<view class="dis a-c " style="font-size: 17px;">
+					<text>交强险 </text>
+					<view class="icon iconfont icon-Group-" style="margin-left: 15upx;color: #aaa;font-weight: normal;"
+						@tap="CITips"></view>
+				</view>
+				<view class=" dis j-c a-c ">
+					<text>即时投保</text>
+					<switch style="transform: scale(0.6)" @change="jqImmediate" />
+				</view>
 			</view>
 			<!-- <template v-if="CIInsureList.amount!=0"> -->
 			<u-form ref="uForm" label-width="200px" v-if="CIInsureList.amount!=0">
@@ -111,8 +119,15 @@
 			</u-form>
 		</view>
 		<view class="business-insurance">
-			<view class="common-title d-flex a-center">商业险 <view class="icon iconfont icon-Group-"
-					style="margin-left: 15upx;color: #aaa;font-weight: normal;" @tap="BITips"></view>
+			<view class="common-title  dis j-s">
+				<view class="dis a-c" style="font-size: 17px;">
+					商业险 <view class="icon iconfont icon-Group-"
+						style="margin-left: 15upx;color: #aaa;font-weight: normal;" @tap="BITips"></view>
+				</view>
+				<view class=" dis j-c a-c ">
+					<text>即时投保</text>
+					<switch style="transform: scale(0.6)" @change="syImmediate" />
+				</view>
 			</view>
 			<u-form ref="uForm" label-width="200px" v-if="BIInsureList.amount!=0">
 				<u-form-item label="商业险投保日期" class="modelformcss">
@@ -937,28 +952,55 @@
 					this.insuredPersonInfoPositiveList = data.insuredPersonInfoPositiveList; //被保人
 					if (this.riskList.length > 0) {
 						this.insureCodeList = [];
-						this.riskList.map(ele => {
-							switch (ele.riskCode) {
-								case '0507':
-									this.CIInsureList.amount = "1";
-									this.CIInsureList.amountDesc = "投保";
-									this.jqstartDate = ele.startDate;
-									this.jqendDate = ele.endDate;
-									break;
-								case '0510':
-									this.BIInsureList.amount = "1";
-									this.BIInsureList.amountDesc = "投保";
-									this.systartDate = ele.startDate;
-									this.syendDate = ele.endDate;
-									break;
-								default:
-									break;
-							}
+						this.riskList.map((ele, index) => {
+
+							// console.log(ele)
+							// switch (ele.riskCode) {
+							// 	case '0507':
+							// 		this.CIInsureList.amount = "1";
+							// 		this.CIInsureList.amountDesc = "投保";
+							// 		this.jqstartDate = ele.startDate;
+							// 		this.jqendDate = ele.endDate;
+							// 		break;
+							// 	case '0510':
+							// 		this.BIInsureList.amount = "1";
+							// 		this.BIInsureList.amountDesc = "投保";
+							// 		this.systartDate = ele.startDate;
+							// 		this.syendDate = ele.endDate;
+							// 		break;
+							// 	default:
+							// 		break;
+							// }
 						})
+						if (this.riskList.length == 1) {
+							if (this.riskList[0].riskCode == '0507') {
+								this.CIInsureList.amount = "1";
+								this.CIInsureList.amountDesc = "投保";
+								this.jqstartDate = this.riskList[0].startDate;
+								this.jqendDate = this.riskList[0].endDate;
+								this.BIInsureList.amount = "0";
+								this.BIInsureList.amountDesc = "不投保";
+							} else if (this.riskList[0].riskCode == '0510') {
+								this.CIInsureList.amount = "0";
+								this.CIInsureList.amountDesc = "不投保";
+								this.BIInsureList.amount = "1";
+								this.BIInsureList.amountDesc = "投保";
+								this.systartDate = this.riskList[0].startDate;
+								this.syendDate = this.riskList[0].endDate;
+							}
+						} else {
+							this.CIInsureList.amount = "1";
+							this.CIInsureList.amountDesc = "投保";
+							this.jqstartDate = this.riskList[0].startDate;
+							this.jqendDate = this.riskList[0].endDate;
+							this.BIInsureList.amount = "1";
+							this.BIInsureList.amountDesc = "投保";
+							this.systartDate = this.riskList[1].startDate;
+							this.syendDate = this.riskList[1].endDate;
+						}
 						this.kindList.map(ele => {
 							this.insureList.map(ele1 => {
 								if (ele.kindCode == ele1.kindCode) {
-									console.log(ele)
 									switch (ele.kindCode) {
 										case 'A':
 											ele1.amount = '1';
@@ -985,7 +1027,15 @@
 							})
 
 						})
-						console.log(this.insureList)
+						var notselected = this.insureList.filter(item1 => !this.kindList.some(item2 => item2
+							.kindCode === item1.kindCode))
+						console.log(notselected)
+						notselected.map(ele => {
+							ele.amount = '0';
+							ele.amountDesc = '不投保'
+
+						})
+						// console.log(this.insureList)
 					}
 
 				}
@@ -1000,6 +1050,32 @@
 			}
 		},
 		methods: {
+			jqImmediate(e) {
+				if (e.detail.value) {
+					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);
+				} else {
+					this.jqstartDate = this.nextday();
+					this.jqendDate = this.oneYearPast(this.jqstartDate);
+				}
+			},
+			syImmediate(e) {
+				if (e.detail.value) {
+					const date = new Date();
+					date.setHours(date.getHours() + 2);
+					date.setMinutes(0)
+					date.setSeconds(0)
+					this.systartDate = this.transformTime(date)
+					this.syendDate = this.oneYearPast(date);
+				} else {
+					this.systartDate = this.nextday();
+					this.syendDate = this.oneYearPast(this.systartDate);
+				}
+			},
 			taxRelifFlagConfirm(val, name) {
 				this.vehicleAndVesselTaxForm[name] = val[0].value;
 				this.model[name] = val[0].label;
@@ -1415,6 +1491,11 @@
 <style lang="scss" scoped>
 	@import '@/style/mixin.scss';
 
+	/deep/ .uni-switch-input-checked {
+		background-color: $themeColor !important;
+		border-color: $themeColor !important;
+	}
+
 	/* 整个页面的统一样式 Start */
 	.page {
 		padding-bottom: 200upx;

+ 20 - 6
pages/carInsure1/payCode1.vue

@@ -30,14 +30,19 @@
 				<view>交强</view>
 				<view>{{jqpremium}}</view>
 			</view>
-			<view class="row d-flex">
-				<view>商业</view>
-				<view>{{sypremium}}</view>
-			</view>
 			<view class="row d-flex">
 				<view>车船税</view>
 				<view>{{taxamount}}</view>
 			</view>
+			<view class="row d-flex">
+				<view>驾意险</view>
+				<view>{{jypremium}}</view>
+			</view>
+			<view class="row d-flex">
+				<view>商业</view>
+				<view>{{sypremium}}</view>
+			</view>
+
 			<view class="row d-flex">
 				<view>交强起保日期</view>
 				<view>{{jqstartdate}}</view>
@@ -80,6 +85,7 @@
 				jqpremium: "",
 				sypremium: "",
 				taxamount: "",
+				jypremium: "",
 				jqstartdate: "",
 				systartdate: "",
 				arr: false,
@@ -111,6 +117,7 @@
 				this.jqpremium = res.data.jqpremium; // 交强
 				this.sypremium = res.data.sypremium; // 商业
 				this.taxamount = res.data.taxamount; // 车船税
+				this.jypremium = res.data.jypremium; // 驾意险
 				this.jqstartdate = res.data.jqstartdate; // 交强起保日期
 				this.systartdate = res.data.systartdate; // 商业起保日期
 				//跳转永安支付
@@ -122,20 +129,27 @@
 								size: parseInt(300) //二维码大小
 							})
 						break;
-					case "人保财险":
 					case "中煤财险":
 					case "永诚财险":
 					case "众安财险":
 					case "紫金财险":
-					case "国任财险":
 					case "中国人寿":
 						this.paycodeimg = QR.createQrCodeImg(res.data.paymentLink, {
 							size: parseInt(300) //二维码大小  
 						})
 						break;
 					case "恒邦财险":
+					case "国任财险":
 						this.paycodeimg = res.data.paymentLink;
 						break;
+					case "安盛天平":
+						let anresult = res.data.paymentLink.replace(/[\r\n]/g, "");
+						let animgBase64 = `data:image/png;base64,${anresult}`;
+						base64ToPath(animgBase64)
+							.then(path => {
+								this.paycodeimg = path;
+							})
+						break;
 				}
 
 			} else {

+ 324 - 45
pages/carInsure1/quote1.vue

@@ -120,12 +120,12 @@
 										class="sum" style="color: #999;font-size: 12px;"
 										@click="ErrorMsg(totalitem.msg,totalitem.namesimple)">报价失败,请点击查看</text>
 								</view>
-								<view v-show="totalitem.quoteCode==200" class="dis j-s f-wrap"
+								<view v-show="totalitem.quoteCode==200" class="dis Premium f-wrap"
 									style="font-size: 12px;color: #ee7000;">
 									<text v-if="totalitem.result.jqPremium">交强险:¥{{totalitem.result.jqPremium}}</text>
-									<text v-if="totalitem.result.jqPremium"
+									<text v-if="totalitem.result.syPremium"
 										style="margin: 0 5px;">商业险:¥{{totalitem.result.syPremium}}</text>
-									<text>车船税:¥{{totalitem.result.taxAmount}}</text>
+									<text v-if="totalitem.result.taxAmount">车船税:¥{{totalitem.result.taxAmount}}</text>
 									<text v-if="totalitem.result.jyPremium">驾意险:¥{{totalitem.result.jyPremium}}</text>
 								</view>
 								<view v-show="totalitem.quoteCode==200" class="dis  f-c"
@@ -180,12 +180,12 @@
 											<view class="">
 												<text style="font-size: 14px;">保费:</text>
 												<text
-													style="font-size: 14px;color: #ee7000;">{{renshouaccidentalDrivingVo.totalPremium*renshouaccidentalDrivingVo.quantity}}</text>
+													style="font-size: 14px;color: #ee7000;">{{renshouaccidentalDrivingVo.totalPremium*renshouaccidentalDrivingVo.quantity}}.00起</text>
 											</view>
 											<view class="">
 												<text style="font-size: 14px;">份数:</text>
 												<u-number-box v-model="renshouaccidentalDrivingVo.quantity" :min="1"
-													:max="100" :input-width="70" :input-height="44"
+													:max="1" :disabled-input="true" :input-width="70" :input-height="44"
 													size="26"></u-number-box>
 											</view>
 
@@ -210,7 +210,7 @@
 											<view class="">
 												<text style="font-size: 14px;">保费:</text>
 												<text
-													style="font-size: 14px;color: #ee7000;">{{item.sumPremium*item.quantity}}元</text>
+													style="font-size: 14px;color: #ee7000;">¥{{item.sumPremium*item.quantity}}.00</text>
 											</view>
 											<view class="">
 												<text style="font-size: 14px;">份数:</text>
@@ -238,12 +238,12 @@
 											<view class="">
 												<text style="font-size: 14px;">保费:</text>
 												<text
-													style="font-size: 14px;color: #ee7000;">{{hengbangaccidentalDrivingVo.sumgrosspremium*hengbangaccidentalDrivingVo.quantity}}</text>
+													style="font-size: 14px;color: #ee7000;">{{hengbangaccidentalDrivingVo.sumgrosspremium*hengbangaccidentalDrivingVo.quantity}}.00</text>
 											</view>
 											<view class="">
 												<text style="font-size: 14px;">份数:</text>
 												<u-number-box v-model="hengbangaccidentalDrivingVo.quantity" :min="1"
-													:max="100" :input-width="70" :input-height="44"
+													:max="1" :disabled-input="true" :input-width="70" :input-height="44"
 													size="26"></u-number-box>
 											</view>
 
@@ -266,7 +266,7 @@
 										<view class=" dis j-s a-c">
 											<text style="font-size: 14px;">份数:</text>
 											<u-number-box v-model="zhonganaccidentalDrivingVo.quantity" :min="1"
-												:max="100" :input-width="70" :input-height="44"
+												:max="1" :disabled-input="true" :input-width="70" :input-height="44"
 												size="26"></u-number-box>
 										</view>
 									</view>
@@ -288,7 +288,7 @@
 											<view class="">
 												<text style="font-size: 14px;">保费:</text>
 												<text
-													style="font-size: 14px;color: #ee7000;">{{yongchengaccidentalDrivingVo.premium*yongchengaccidentalDrivingVo.quantity}}</text>
+													style="font-size: 14px;color: #ee7000;">{{yongchengaccidentalDrivingVo.premium*yongchengaccidentalDrivingVo.quantity}}.00</text>
 											</view>
 											<view class="">
 												<text style="font-size: 14px;">份数:</text>
@@ -324,13 +324,52 @@
 											<view class=" dis j-s a-c">
 												<text style="font-size: 14px;">份数:</text>
 												<u-number-box v-model="anshengaccidentalDrivingVo.quantity" :min="1"
-													:max="100" :input-width="70" :input-height="44"
+													:max="1" :disabled-input="true" :input-width="70" :input-height="44"
 													size="26"></u-number-box>
 											</view>
 										</template>
 
 									</view>
 								</template>
+								<template
+									v-if="totalitem.namesimple == '国任财险' && totalitem.checked && totalitem.agreementId && guorenaccidentalDrivingVo.goodsCode">
+									<view class="accident-style dis f-c ">
+										<view class=" accident-ins dis a-c j-s">
+											<text style="font-size: 14px;">分类</text>
+											<view class=" dis a-c j-s " @click="guorenPopupshow=true">
+												<text
+													style="font-size: 14px;">{{guorenaccidentalDrivingVo.goodDesc}}</text>
+												<u-icon name="arrow-right" style="color: #999;" size="24"></u-icon>
+											</view>
+										</view>
+										<template v-if="guorenInsuranceData.length>0">
+											<view class=" accident-ins dis a-c j-s">
+												<u-checkbox shape="circle" size="30" v-model="totalitem.jychecked"
+													@change="checkboxChangeInfo($event,totalindex)"
+													active-color="rgb(255, 170, 0)"></u-checkbox>
+												<view class=" dis a-c j-s " @click="guorenPopupshow1=true">
+													<text
+														style="font-size: 14px;">{{guorenaccidentalDrivingVo.prodCName}}</text>
+													<u-icon name="arrow-right" style="color: #999;" size="24"></u-icon>
+												</view>
+											</view>
+											<view class=" dis j-s a-c">
+												<view class="">
+													<text style="font-size: 14px;">保费:</text>
+													<text
+														style="font-size: 14px;color: #ee7000;">¥{{guorenaccidentalDrivingVo.premium*guorenaccidentalDrivingVo.quantity}}.00</text>
+												</view>
+												<view class="">
+													<text style="font-size: 14px;">份数:</text>
+													<u-number-box v-model="guorenaccidentalDrivingVo.quantity" :min="1"
+														:max="Number( guorenaccidentalDrivingVo.policyNum)"
+														:input-width="70" :input-height="44" size="26"></u-number-box>
+												</view>
+											</view>
+										</template>
+
+									</view>
+								</template>
 								<view v-show="totalitem.quoteCode==200" class="dis j-end"
 									style="border-top: 1px solid #f2f2f2;padding: 10px 0;">
 									<u-button v-if="totalitem.lastYearMsg" size="mini " type="warning"
@@ -362,9 +401,10 @@
 				</view>
 			</view>
 		</wyb-popup>
+		<!-- 人寿驾意险弹框 -->
 		<u-popup v-model="renshouPopupshow" mode="center" width="70%" border-radius="10">
 			<view class="popContent dis f-c a-c">
-				<u-radio-group v-model="popupvalue" size="30" active-color="rgb(255, 170, 0)">
+				<u-radio-group size="30" active-color="rgb(255, 170, 0)">
 					<u-radio style="margin: 4px 0;" @change="RSradioChange"
 						v-for="(item, index) in renshouInsuranceData" :key="index" :name="item.id">
 						{{item.productName}}
@@ -372,9 +412,10 @@
 				</u-radio-group>
 			</view>
 		</u-popup>
+		<!-- 恒邦驾意险弹框 -->
 		<u-popup v-model="hengbangPopupshow" mode="center" width="80%" border-radius="10">
 			<view class="popContent dis f-c a-c">
-				<u-radio-group v-model="popupvalue" size="30" active-color="rgb(255, 170, 0)">
+				<u-radio-group size="30" active-color="rgb(255, 170, 0)">
 					<u-radio style="margin: 4px 0;flex: auto;" @change="HBradioChange"
 						v-for="(item, index) in hengbangInsuranceData" :key="index" :name="item.programcode">
 						{{item.programname}}
@@ -382,9 +423,10 @@
 				</u-radio-group>
 			</view>
 		</u-popup>
+		<!-- 众安驾意险弹框 -->
 		<u-popup v-model="zhonganPopupshow" mode="center" width="50%" border-radius="10">
 			<view class="popContent dis f-c a-c">
-				<u-radio-group v-model="popupvalue" size="30" active-color="rgb(255, 170, 0)">
+				<u-radio-group size="30" active-color="rgb(255, 170, 0)">
 					<u-radio style="margin: 4px 0;flex: auto;" @change="ZAradioChange"
 						v-for="(item, index) in zhonganInsuranceData" :key="index" :name="item.combination">
 						{{item.name}}
@@ -394,7 +436,7 @@
 		</u-popup>
 		<u-popup v-model="yongchengPopupshow" mode="center" width="50%" border-radius="10">
 			<view class="popContent dis f-c a-c">
-				<u-radio-group v-model="popupvalue" size="30" active-color="rgb(255, 170, 0)">
+				<u-radio-group size="30" active-color="rgb(255, 170, 0)">
 					<u-radio style="margin: 4px 0;flex: auto;" @change="YCradioChange"
 						v-for="(item, index) in yongchengInsuranceData" :key="index" :name="item.id">
 						{{item.name}}
@@ -402,9 +444,10 @@
 				</u-radio-group>
 			</view>
 		</u-popup>
+		<!-- 安盛驾意险弹框 -->
 		<u-popup v-model="anshengPopupshow" mode="center" width="70%" border-radius="10">
 			<view class="popContent dis f-c a-c">
-				<u-radio-group v-model="popupvalue" size="30" active-color="rgb(255, 170, 0)">
+				<u-radio-group size="30" active-color="rgb(255, 170, 0)">
 					<u-radio style="margin: 4px 0;flex: auto;" @change="ASprogrammeradioChange"
 						v-for="(item, index) in anshengprogrammeData" :key="index" :name="item.planCode">
 						{{item.planChineseName}}
@@ -414,7 +457,7 @@
 		</u-popup>
 		<u-popup v-model="anshengPopupshow1" mode="center" width="70%" border-radius="10">
 			<view class="popContent dis f-c a-c">
-				<u-radio-group v-model="popupvalue" size="30" active-color="rgb(255, 170, 0)">
+				<u-radio-group size="30" active-color="rgb(255, 170, 0)">
 					<u-radio style="margin: 4px 0;flex: auto;" @change="ASInsuranceradioChange"
 						v-for="(item, index) in anshengInsuranceData" :key="index" :name="item.productCode">
 						{{item.productName}}
@@ -422,15 +465,37 @@
 				</u-radio-group>
 			</view>
 		</u-popup>
+		<!-- 紫金驾意险弹框 -->
 		<u-modal v-model="zijinPopupshow" title="意外险" :scroll-height="{height: '300px'}">
 			<view class="slot-content">
 				<u-checkbox-group @change="ZJcheckboxGroupChange">
-					<u-checkbox style="margin: 4px 0;flex: auto;" v-model="item.checked" active-color="rgb(255, 153, 0)"
-						v-for="(item, index) in zijinInsuranceData" :key="index"
+					<u-checkbox style="margin: 8px 0;flex: auto;" class="ZJcheckboxGroup" v-model="item.checked"
+						active-color="rgb(255, 153, 0)" v-for="(item, index) in zijinInsuranceData" :key="index"
 						:name="item.projectCode">{{item.projectName}}</u-checkbox>
 				</u-checkbox-group>
 			</view>
 		</u-modal>
+		<!-- 国任驾意险弹框 -->
+		<u-popup v-model="guorenPopupshow" mode="center" width="70%" border-radius="10">
+			<view class="popContent dis f-c a-c">
+				<u-radio-group size="30" active-color="rgb(255, 170, 0)">
+					<u-radio style="margin: 4px 0;flex: auto;" @change="GRprogrammeradioChange"
+						v-for="(item, index) in guorenprogrammeData" :key="index" :name="item.goodId">
+						{{item.goodDesc}}
+					</u-radio>
+				</u-radio-group>
+			</view>
+		</u-popup>
+		<u-popup v-model="guorenPopupshow1" mode="center" width="70%" border-radius="10">
+			<view class="popContent dis f-c a-c">
+				<u-radio-group size="30" active-color="rgb(255, 170, 0)">
+					<u-radio style="margin: 4px 0;flex: auto;" @change="GRInsuranceradioChange"
+						v-for="(item, index) in guorenInsuranceData" :key="index" :name="item.prodCode">
+						{{item.prodCName}}
+					</u-radio>
+				</u-radio-group>
+			</view>
+		</u-popup>
 		<view class="infoBottom d-flex a-center j-center j-sb">
 			<button type="default" class="d-flex a-center j-center" @tap="toNext">保费计算</button>
 		</view>
@@ -440,6 +505,9 @@
 	import {
 		mapState
 	} from "vuex"
+	import {
+		delEmptyQueryNodes
+	} from '@/plugins/utils';
 	import wybPopup from '@/components/common/wyb-popup/wyb-popup.vue'
 	import lsLoading from '@/components/common/ls-loading/ls-loading.vue';
 	export default {
@@ -464,7 +532,6 @@
 		},
 		data() {
 			return {
-				popupvalue: 1,
 				params: {
 					year: true, //年
 					month: true, //月
@@ -481,6 +548,11 @@
 				anshengprogrammeData: [],
 				anshengInsuranceData: [], //安盛意外险list
 				anshengaccidentalDrivingVo: {}, //安盛意外险
+				guorenPopupshow: false,
+				guorenPopupshow1: false,
+				guorenprogrammeData: [],
+				guorenInsuranceData: [], //国任意外险list
+				guorenaccidentalDrivingVo: {}, //国任意外险
 				yongchengPopupshow: false,
 				yongchengInsuranceData: [], //永诚意外险list
 				yongchengaccidentalDrivingVo: {}, //永诚意外险
@@ -1019,6 +1091,7 @@
 			}
 		},
 		async onLoad() {
+
 			const eventChannel = this.getOpenerEventChannel()
 			// 监听acceptData事件,获取上一页面通过eventChannel传送到当前页面的数据
 			eventChannel.on('acceptData', async (data) => {
@@ -1030,9 +1103,9 @@
 				this.riskList = data.riskList; //险种大类
 				this.kindList = data.kindList; //商业险险别
 				this.vehicleAndVesselTaxForm = data.vehicleAndVesselTaxForm; //车船税信息
-				this.orderno = data.orderno;
-				this.quoteno = data.quoteno;
 				if (data.quoteno) {
+					this.orderno = data.orderno;
+					this.quoteno = data.quoteno;
 					this.imageEcho(data.quoteno) // 影像获取完毕
 				} else {
 					this.carInfoPositiveList = data.carInfoPositiveList; //车辆
@@ -1074,7 +1147,37 @@
 					}
 				}
 			})
-			this.commpanyList();
+			const storage = uni.getStorageSync('historyInfo');
+			if (storage) {
+				Object.keys(storage).forEach(key => {
+					this[key] = storage[key]
+				})
+			} else {
+				this.commpanyList();
+
+			}
+		},
+		onHide() {
+			let historyInfo = {
+				quoteno: this.quoteno,
+				orderno: this.orderno,
+				totalCompanyList: this.totalCompanyList,
+				zijinInsuranceData: this.zijinInsuranceData, //紫金意外险list
+				zijinaccidentalDrivingVo: this.zijinaccidentalDrivingVo, //紫金意外险
+				anshengprogrammeData: this.anshengprogrammeData,
+				anshengInsuranceData: this.anshengInsuranceData, //安盛意外险list
+				anshengaccidentalDrivingVo: this.anshengaccidentalDrivingVo, //安盛意外险
+				yongchengInsuranceData: this.yongchengInsuranceData, //永诚意外险list
+				yongchengaccidentalDrivingVo: this.yongchengaccidentalDrivingVo, //永诚意外险
+				zhonganInsuranceData: this.zhonganInsuranceData, //-众安意外险list
+				zhonganaccidentalDrivingVo: this.zhonganaccidentalDrivingVo, //众安意外险
+				hengbangInsuranceData: this.hengbangInsuranceData, //-恒邦意外险list
+				hengbangaccidentalDrivingVo: this.hengbangaccidentalDrivingVo, //恒邦意外险
+				renshouInsuranceData: this.renshouInsuranceData, //-人寿意外险list
+				renshouaccidentalDrivingVo: this.renshouaccidentalDrivingVo, //人寿意外险
+			}
+			let res = delEmptyQueryNodes(historyInfo);
+			uni.setStorageSync('historyInfo', res);
 		},
 		methods: {
 			jqstartconfirm(e) {
@@ -1204,12 +1307,23 @@
 					this.totalCompanyList[index].apiType = this.totalCompanyList[index].agreement[0].extra;
 					switch (ins) {
 						case '永诚财险':
-							let ycres = await this.$http.post('/api/yongCheng/gainAccidentList', {
+							let yccallback = await this.$http.post('/api/yongCheng/gainAccidentList', {
 								agreementId: this.totalCompanyList[index].agreement[0].id,
-								companyCode: code
+								companyCode: code,
+								seatNum: Number(this.carInfo.seatCount)
 							});
-							if (ycres.code == '200') {
-								let data = ycres.data;
+							if (yccallback.code == '200') {
+								let yccallback1 = await this.$http.post('/api/yongCheng/gainAccidentSchemeList', {
+									agreementId: this.totalCompanyList[index].agreement[0].id,
+									companyCode: code,
+									code: yccallback.data[0].code,
+									seatNum: Number(this.carInfo.seatCount)
+								});
+								yccallback1.data.map(val => {
+									yccallback.data[0].premium += Number(val.premium)
+									return val;
+								})
+								let data = yccallback.data;
 								data.map(ele => {
 									ele.quantity = 1;
 									return ele;
@@ -1224,12 +1338,12 @@
 							}
 							break;
 						case '紫金财险':
-							let zjres = await this.$http.post('/order/zijin/queryVehicleProducts', {
+							let zjcallback = await this.$http.post('/order/zijin/queryVehicleProducts', {
 								agreementId: this.totalCompanyList[index].agreement[0].id,
 								seatCount: Number(this.carInfo.seatCount)
 							});
-							if (zjres.code == '200') {
-								let data = zjres.data;
+							if (zjcallback.code == '200') {
+								let data = zjcallback.data;
 								data.map(ele => {
 									ele.quantity = 1;
 									return ele;
@@ -1239,11 +1353,11 @@
 							}
 							break;
 						case '安盛天平':
-							let asres = await this.$http.post('/insurance/crawler/getDrivingInsurance', {
+							let ascallback = await this.$http.post('/insurance/crawler/getDrivingInsurance', {
 								agreementId: this.totalCompanyList[index].agreement[0].id
 							});
-							if (asres.code == '200') {
-								let data = asres.data;
+							if (ascallback.code == '200') {
+								let data = ascallback.data;
 								data.map(ele => {
 									ele.departmentProductList.map(val => {
 										val.quantity = 1;
@@ -1263,15 +1377,39 @@
 								}
 							}
 							break;
+						case '国任财险':
+							let grcallback = await this.$http.post('/api/guoRen/syncNonAutoIns', {
+								agreementId: this.totalCompanyList[index].agreement[0].id
+							});
+							if (grcallback.code == '200') {
+								let data = grcallback.data;
+								this.guorenprogrammeData = data;
+								let grcallback1 = await this.$http.post('/api/guoRen/syncNonAutoIns', {
+									goodsCode: grcallback.data[0].goodId
+								});
+								this.guorenInsuranceData = grcallback1.data;
+								this.guorenaccidentalDrivingVo = {
+									goodsCode: data[0].goodId, //驾意险商品号
+									prodCode: grcallback1.data[0].prodCode, //产品code
+									riskCode: grcallback1.data[0].riskCode, //险种code
+									premium: grcallback1.data[0].premium, //保费
+									amount: grcallback1.data[0].amount, //保额
+									quantity: 1, //份数
+									goodDesc: data[0].goodDesc, //驾意险商品名称
+									prodCName: grcallback1.data[0].prodCName, //产品名称
+									policyNum: Number(grcallback1.data[0].policyNum), //最大份数
+								}
+							}
+							break;
 						case '中国人寿':
 						case '恒邦财险':
 						case '众安财险':
 
-							let Insuranceres = await this.$http.post('/insurance/crawler/getDrivingInsurance', {
+							let Insurancecallback = await this.$http.post('/insurance/crawler/getDrivingInsurance', {
 								agreementId: this.totalCompanyList[index].agreement[0].id
 							});
-							if (Insuranceres.code == 200) {
-								let data = Insuranceres.data;
+							if (Insurancecallback.code == 200) {
+								let data = Insurancecallback.data;
 								data.map(ele => {
 									ele.quantity = 1;
 									return ele;
@@ -1327,6 +1465,50 @@
 				Object.assign(this.anshengaccidentalDrivingVo, info);
 				this.anshengPopupshow1 = false;
 			},
+			//国任一级选择
+			async GRprogrammeradioChange(id) {
+				let info = this.guorenprogrammeData.find((val => val.goodId == id))
+				this.guorenPopupshow = false;
+				this.guorenaccidentalDrivingVo.goodsCode = info.goodId;
+				this.guorenaccidentalDrivingVo.goodDesc = info.goodDesc;
+				let res = await this.$http.post('/api/guoRen/syncNonAutoIns', {
+					goodsCode: info.goodId
+				});
+				if (res.code == '200') {
+					this.guorenInsuranceData = res.data;
+					let dataInfo = {
+						prodCode: res.data[0].prodCode, //产品code
+						riskCode: res.data[0].riskCode, //险种code
+						premium: res.data[0].premium, //保费
+						amount: res.data[0].amount, //保额
+						quantity: 1, //份数
+						prodCName: res.data[0].prodCName, //产品名称
+						policyNum: res.data[0].policyNum, //最大份数
+					}
+					Object.assign(this.guorenaccidentalDrivingVo, dataInfo);
+				} else {
+					uni.showToast({
+						title: res.msg,
+						icon: 'none',
+					});
+					this.guorenInsuranceData = []
+				}
+			},
+			//国任二级选择
+			GRInsuranceradioChange(id) {
+				let info = this.guorenInsuranceData.find((val => val.prodCode == id))
+				let dataInfo = {
+					prodCode: info.prodCode, //产品code
+					riskCode: info.riskCode, //险种code
+					premium: info.premium, //保费
+					amount: info.amount, //保额
+					quantity: 1, //份数
+					prodCName: info.prodCName, //产品名称
+					policyNum: info.policyNum, //最大份数
+				}
+				Object.assign(this.guorenaccidentalDrivingVo, dataInfo);
+				this.guorenPopupshow1 = false;
+			},
 			//紫金意外险
 			ZJcheckboxGroupChange(detail) {
 				this.zijinaccidentalDrivingVo = [];
@@ -1353,15 +1535,24 @@
 				this.totalCompanyList = commpanykad.data;
 			},
 			async toNext() {
-				if (this.quoteno) {
-					this.OrderStageProcessing();
+				var allAreFalse = this.totalCompanyList.every(function(element) {
+					return element.checked === false;
+				});
+				if (!allAreFalse) {
+					if (this.quoteno) {
+						this.OrderStageProcessing();
+					} else {
+						let getquote = await this.$http.get('/ins/tool/getQuoteNo');
+						this.quoteno = getquote.data + "";
+						this.OrderStageProcessing();
+					}
 				} else {
-					let getquote = await this.$http.get('/ins/tool/getQuoteNo');
-					this.quoteno = getquote.data;
-					this.OrderStageProcessing();
+					uni.showToast({
+						title: "请选择保险公司后,在进行报价",
+						icon: 'none',
+					});
 				}
 			},
-
 			async OrderStageProcessing() {
 				let mergedArray = [];
 				let mergedArrayList = mergedArray.concat(this.carInfoPositiveList, this.ownerInfoPositiveList, this
@@ -1404,6 +1595,11 @@
 							this.ToolClickFun(ele.cnName, index, ele.id);
 						}
 					});
+				} else {
+					uni.showToast({
+						title: orders.msg,
+						icon: 'none',
+					});
 				}
 			},
 			//动态函数
@@ -1641,6 +1837,79 @@
 					return;
 				}
 			},
+			//国任报价
+			async guoRen(num, id) {
+				let jychecked = this.totalCompanyList[num].jychecked
+				let params = {
+					accidentalDrivingVo: jychecked ? this.guorenaccidentalDrivingVo : {},
+					orderNo: this.orderno,
+					companyId: id,
+					cqryCdeJq: this.cqryCdeJq,
+					cqryCdeSy: this.cqryCdeSy,
+					renewalCodeJq: this.renewalCodeJq,
+					renewalCodeSy: this.renewalCodeSy,
+					agreementId: this.totalCompanyList[num].agreementId,
+				};
+				let res = await this.$http.post('/api/guoRen/quote', params);
+				this.totalCompanyList[num].msg = res.msg;
+				if (!!res.msg && res.msg.indexOf("不存在有效协议") >= 0) {
+					this.totalCompanyList[num].quoteCode = "4";
+					this.totalCompanyList[num].msg = res.msg;
+					return;
+				} else if (
+					res.data == null &&
+					res.msg.indexOf("交强险平台返回") > -1 &&
+					res.msg.indexOf(";终保日期") > -1
+				) {
+					let time =
+						res.msg.substr(res.msg.indexOf(";终保日期 ") + 6, 16) + ":00";
+					this.jqstartDate = time;
+					this.jqendDate = this.oneYearPast(time);
+					this.systartDate = time;
+					this.syendDate = this.oneYearPast(time);
+					if (this.riskList.length > 0) {
+						for (let i = 0; i < this.riskList.length; i++) {
+							if (this.riskList[i].riskCode == "0507") {
+								this.riskList[i].startDate = time;
+								this.riskList[i].endDate = this.oneYearPast(time);
+							} else if (this.riskList[i].riskCode == "0510") {
+								this.riskList[i].startDate = time;
+								this.riskList[i].endDate = this.oneYearPast(time);
+							}
+						}
+					}
+					let param = {
+						userId: this.userInfo.sysUser.id,
+						quoteno: this.quoteno,
+						orderNo: this.orderno,
+						carInfo: this.carInfo,
+						insuredPersonInfo: this.insuredPersonInfo,
+						ownerInfo: this.ownerInfo,
+						policyHolderInfo: this.policyHolderInfo,
+						kindList: this.kindList,
+						riskList: this.riskList,
+						vehicleAndVesselTax: this.vehicleAndVesselTaxForm,
+					};
+					await this.$http.post('/insurance/order/generateOrder', param);
+					return this.guoRen(num, id);
+				} else if (res.code == '200') {
+					if (res.data.warnMessageList != null && res.data.warnMessageList[0] != null && res.data
+						.warnMessageList[
+							0] != "") {
+						this.totalCompanyList[num].lastYearMsg = "";
+						let dat = res.data.warnMessageList;
+						dat.map(ele => {
+							this.totalCompanyList[num].lastYearMsg += ele;
+						})
+					}
+					this.totalCompanyList[num].quoteCode = 200;
+					this.totalCompanyList[num].result = res.data;
+				} else {
+					this.totalCompanyList[num].quoteCode = "3";
+					this.totalCompanyList[num].msg = res.msg;
+					return;
+				}
+			},
 
 			//爬虫统一报价接口
 			async quoteInsurance(num, id, apiType, jychecked) {
@@ -2029,7 +2298,10 @@
 					strYear + "-" + strMonth + "-" + strDay + " " + hh + ":" + minutes + ":" + Seconds;
 				return datastr;
 			},
-		}
+
+		},
+
+
 	}
 </script>
 <style lang="scss" scoped>
@@ -2283,6 +2555,11 @@
 		margin-right: 10px;
 	}
 
+	.quoteCompanyItem .top .Premium text {
+		margin-right: 10px;
+	}
+
+
 	.quoteCompanyItem .top .companyName {
 		font-size: 32upx;
 		font-weight: bold;
@@ -2364,8 +2641,6 @@
 	}
 
 	/* 报价公司End */
-
-
 	/* 查看详情按钮Start */
 	.btn {
 		font-size: 16px;
@@ -2399,5 +2674,9 @@
 		box-sizing: border-box;
 	}
 
+	.ZJcheckboxGroup {
+		border-bottom: 2px solid #f2f2f2;
+	}
+
 	/* 查看详情按钮End */
 </style>

+ 110 - 30
pages/carInsure1/quoteDetail1.vue

@@ -585,6 +585,12 @@
 							</view>
 						</template>
 					</block>
+					<block>
+						<view class="row d-flex a-center j-sb">
+							<view class="d-flex a-center">驾意险</view>
+							<view>¥{{jypremium}}</view>
+						</view>
+					</block>
 					<block v-for="(item,index) in riskList" :key="index">
 						<template v-if="item.riskCode == '0510'">
 							<view class="row d-flex a-center j-sb">
@@ -593,6 +599,7 @@
 							</view>
 						</template>
 					</block>
+
 				</view>
 			</view>
 		</view>
@@ -606,7 +613,7 @@
 					</view>
 					<view style="font-weight: bold;font-size: 34upx;color: #333; ">¥{{sumPermium}}</view>
 				</view>
-				<template v-if="orderstatus==0">
+				<template v-if="orderstatus==0 && routepage!='pages/orders/subOrders'">
 					<view class="btn d-flex a-center j-center" @tap="toUnderwriting">确认核保</view>
 				</template>
 				<!-- 	<template v-if="orderstatus ==5">
@@ -1035,6 +1042,7 @@
 				jypremium: "",
 				quoteno: "",
 				extendInfo: {},
+				routepage: "",
 			}
 		},
 		// 监听导航栏的按钮
@@ -1044,6 +1052,9 @@
 			}
 		},
 		async onLoad(params) {
+			let pages = getCurrentPages(); // 当前页面路由
+			let beforePage = pages[pages.length - 2].route; // 上一个页面路由
+			this.routepage = beforePage;
 			if (!this.token) {
 				document.getElementsByTagName('uni-page-head')[0].style.display = 'none'
 			}
@@ -1145,6 +1156,9 @@
 						case "紫金财险":
 							this.zjgetPolicyPrint(); //电子保单
 							break;
+						case "国任财险":
+							this.grgetPolicyPrint(); //电子保单
+							break;
 					}
 				}
 			} else {
@@ -1358,39 +1372,42 @@
 			},
 			//爬虫电子保单统一调用
 			async pythonprint() {
-				let params = {
-					subOrderNo: this.companyId,
-				};
-				let res1 = await this.$http.post('/insurance/crawler/getPolicyPrint', params);
-				if (res1.code == '200') {
-					this.policyList = [];
-					this.policyList1 = [];
-					this.policyList.push({
-						fileTitle: "交强电子保单",
-						filename: this.orderInfo.jqpolicyno,
-						fileurl: res1.data.jqxPolicyUrl,
-					})
-					this.policyList1.push({
-						fileTitle: "交强电子标志",
-						filename: this.orderInfo.jqpolicyno,
-						fileurl: res1.data.jqxFlagUrl,
-					})
-					if (res1.data.syxPolicyUrl) {
-						this.policyList.push({
-							fileTitle: "商业电子保单",
-							filename: this.orderInfo.sypolicyno,
-							fileurl: res1.data.syxPolicyUrl,
-						});
-					}
-					if (res1.data.jyxPolicyUrl) {
+				if (this.orderInfo.jqpolicyno) {
+					let params = {
+						subOrderNo: this.companyId,
+					};
+					let res1 = await this.$http.post('/insurance/crawler/getPolicyPrint', params);
+					if (res1.code == '200') {
+						this.policyList = [];
+						this.policyList1 = [];
 						this.policyList.push({
-							fileTitle: "驾意险保单",
-							filename: 'xxxxxxxxxxxxxxxxxxxxxx',
-							fileurl: res1.data.jyxPolicyUrl,
-						});
+							fileTitle: "交强电子保单",
+							filename: this.orderInfo.jqpolicyno,
+							fileurl: res1.data.jqxPolicyUrl,
+						})
+						this.policyList1.push({
+							fileTitle: "交强电子标志",
+							filename: this.orderInfo.jqpolicyno,
+							fileurl: res1.data.jqxFlagUrl,
+						})
+						if (res1.data.syxPolicyUrl) {
+							this.policyList.push({
+								fileTitle: "商业电子保单",
+								filename: this.orderInfo.sypolicyno,
+								fileurl: res1.data.syxPolicyUrl,
+							});
+						}
+						if (res1.data.jyxPolicyUrl) {
+							this.policyList.push({
+								fileTitle: "驾意险保单",
+								filename: 'xxxxxxxxxxxxxxxxxxxxxx',
+								fileurl: res1.data.jyxPolicyUrl,
+							});
+						}
 					}
 				}
 
+
 			},
 			async zjgetPolicyPrint() {
 				this.policyList = [];
@@ -1453,6 +1470,68 @@
 					})
 				}
 
+			},
+			async grgetPolicyPrint() {
+				this.policyList = [];
+				this.policyList1 = [];
+				if (this.orderInfo.jqpolicyno) {
+					let res = await this.$http.post('/api/guoRen/policyPrint', {
+						companyId: this.companyId,
+						riskCode: "0507",
+						type: '2', //2:保单
+					});
+					if (res.code == '200') {
+						this.policyList.push({
+							fileTitle: "交强电子保单",
+							filename: this.orderInfo.jqpolicyno,
+							fileurl: res.data,
+						})
+					}
+					let res1 = await this.$http.post('/api/guoRen/policyPrint', {
+						companyId: this.companyId,
+						riskCode: "0507",
+						type: '1', //1:标志
+					});
+					if (res1.code == '200') {
+						this.policyList1.push({
+							fileTitle: "交强电子标志",
+							filename: this.orderInfo.jqpolicyno,
+							fileurl: res1.data,
+						})
+					}
+				}
+				if (this.orderInfo.sypolicyno) {
+					let res = await this.$http.post('/api/guoRen/policyPrint', {
+						companyId: this.companyId,
+						riskCode: "0510",
+						type: '2', //2:标志
+					});
+					if (res.code == '200') {
+						this.policyList.push({
+							fileTitle: "商业电子保单",
+							filename: this.orderInfo.sypolicyno,
+							fileurl: res.data,
+						})
+					}
+				}
+				if (this.orderInfo.crossInsurance.length > 0) {
+					this.orderInfo.crossInsurance.map(async ele => {
+						let res = await this.$http.post('/api/guoRen/policyPrint', {
+							companyId: this.companyId,
+							policyNumber: ele.policyNumber,
+							riskCode: "0513",
+							type: '2', //2:保单
+						});
+						if (res.code == '200') {
+							this.policyList.push({
+								fileTitle: "驾意险保单",
+								filename: ele.policyNumber,
+								fileurl: res.data,
+							})
+						}
+					})
+				}
+
 			},
 			downloadPolicy(file) {
 				//#ifdef APP-PLUS
@@ -1475,6 +1554,7 @@
 						plus.downloader.clear(); //清除下载任务
 					}
 				})
+
 				dtask.start();
 				// uni.downloadFile({
 				// 	url: file,

+ 82 - 10
pages/carInsure1/underwriting1.vue

@@ -369,6 +369,12 @@
 						<view>车船税</view>
 						<view>¥{{taxAmount}}</view>
 					</view>
+					<block>
+						<view class="row d-flex a-center j-sb">
+							<view class="d-flex a-center">驾意险</view>
+							<view>¥{{jypremium}}</view>
+						</view>
+					</block>
 					<block v-for="(item,index) in riskList" :key="index">
 						<template v-if="item.riskCode == '0510'">
 							<view class="row d-flex a-center j-sb">
@@ -387,7 +393,6 @@
 					class="tip">保险条款</text> | <text class="tip">投保须知</text> | <text class="tip">隐私条款</text>
 			</view>
 			<view class="btnView d-flex">
-
 				<view class="d-flex flex-1 a-center">
 					<view class="d-flex flex-column a-center listener">
 						<view class="icon iconfont icon-xiaomishu"></view> 客服
@@ -448,6 +453,7 @@
 				taxAmount: "",
 				jqpremium: "",
 				sypremium: "",
+				jypremium: "",
 				ownerInfo: {},
 				policyHolderInfo: {},
 				insuredPersonInfo: {},
@@ -531,6 +537,7 @@
 				this.taxAmount = res.data.taxamount;
 				this.jqpremium = res.data.jqpremium;
 				this.sypremium = res.data.sypremium;
+				this.jypremium = res.data.jypremium;
 
 				// 图片类型(C01车辆影像,C02车主身份证,C03投保人身份证,C04被保人身份证,C05验车照)
 				this.imageEcho(this.quoteno)
@@ -810,7 +817,7 @@
 										uni.showModal({
 											content: '影像上传失败(' + yaimage.msg + ')',
 											cancelText: '返回订单',
-											confirmText: '继续提交',
+											confirmText: '修改',
 											success: async (res3) => {
 												if (res3.confirm) {
 
@@ -860,7 +867,7 @@
 											uni.showModal({
 												content: '核保失败(' + zmaudit.msg + ')',
 												cancelText: '返回订单',
-												confirmText: '继续核保',
+												confirmText: '修改',
 												success: async (res2) => {
 													if (res2.confirm) {
 
@@ -877,7 +884,7 @@
 										uni.showModal({
 											content: '影像上传失败(' + zmimage.msg + ')',
 											cancelText: '返回订单',
-											confirmText: '继续提交',
+											confirmText: '修改',
 											success: async (res3) => {
 												if (res3.confirm) {
 
@@ -925,7 +932,7 @@
 											uni.showModal({
 												content: '核保失败(' + ycaudit.msg + ')',
 												cancelText: '返回订单',
-												confirmText: '继续核保',
+												confirmText: '修改',
 												success: async (res2) => {
 													if (res2.confirm) {
 
@@ -942,7 +949,72 @@
 										uni.showModal({
 											content: '影像上传失败(' + ycimage.msg + ')',
 											cancelText: '返回订单',
-											confirmText: '继续提交',
+											confirmText: '修改',
+											success: async (res3) => {
+												if (res3.confirm) {
+
+												} else {
+													this.navigate({
+															url: "/pages/orders/orders"
+														}, "switchTab",
+														true);
+												}
+											}
+										});
+									}
+									break;
+								case "国任财险":
+									let grimage = await this.$http.post(
+										'/api/guoRen/uploadImage', {
+											companyId: this.companyId
+										});
+									if (grimage.code == '200') {
+										let graudit = await this.$http.post(
+											'/api/guoRen/audit', {
+												companyId: this.companyId,
+											});
+										if (graudit.code == '200') {
+											uni.showModal({
+												content: '订单自核成功',
+												cancelText: '暂不缴费',
+												confirmText: '立即缴费',
+												success: (res1) => {
+													if (res1.confirm) {
+														uni.navigateTo({
+															url: "/pages/carInsure1/payCode1?companyId=" +
+																this
+																.companyId
+														})
+													} else {
+														this.navigate({
+																url: "/pages/orders/orders"
+															}, "switchTab",
+															true);
+													}
+												}
+											});
+										} else {
+											uni.showModal({
+												content: '核保失败(' + graudit.msg + ')',
+												cancelText: '返回订单',
+												confirmText: '修改',
+												success: async (res2) => {
+													if (res2.confirm) {
+
+													} else {
+														this.navigate({
+																url: "/pages/orders/orders"
+															}, "switchTab",
+															true);
+													}
+												}
+											});
+										}
+									} else {
+										uni.showModal({
+											content: '影像上传失败(' + grimage.msg + ')',
+											cancelText: '返回订单',
+											confirmText: '修改',
 											success: async (res3) => {
 												if (res3.confirm) {
 
@@ -991,7 +1063,7 @@
 											uni.showModal({
 												content: '核保失败(' + zjaudit.msg + ')',
 												cancelText: '返回订单',
-												confirmText: '继续核保',
+												confirmText: '修改',
 												success: async (res2) => {
 													if (res2.confirm) {
 
@@ -1009,7 +1081,7 @@
 										uni.showModal({
 											content: '影像上传失败(' + zjimage.msg + ')',
 											cancelText: '返回订单',
-											confirmText: '继续提交',
+											confirmText: '修改',
 											success: async (res3) => {
 												if (res3.confirm) {
 
@@ -1060,7 +1132,7 @@
 											uni.showModal({
 												content: '核保失败(' + pythonaudit.msg + ')',
 												cancelText: '返回订单',
-												confirmText: '继续核保',
+												confirmText: '修改',
 												success: async (res2) => {
 													if (res2.confirm) {
 
@@ -1077,7 +1149,7 @@
 										uni.showModal({
 											content: '影像上传失败(' + pythonimage.msg + ')',
 											cancelText: '返回订单',
-											confirmText: '继续提交',
+											confirmText: '修改',
 											success: async (res3) => {
 												if (res3.confirm) {
 

+ 7 - 0
pages/index/index.vue

@@ -307,6 +307,13 @@
 				this.headerPosition = "absolute";
 			}
 		},
+		onShow() {
+			console.log(1)
+			const arr = uni.getStorageSync('historyInfo');
+			if (arr) {
+				uni.removeStorageSync('historyInfo');
+			}
+		},
 		async onLoad() {
 			// uni.startPullDownRefresh(); 
 			this.isShow = this.userInfo.sysUser.status == '2' ? true : false

+ 2 - 1
pages/login/login.vue

@@ -64,9 +64,11 @@
 				<view @tap="changeStatus">
 					{{status?'密码登录':'验证码登录'}}
 				</view>
+				<!-- #ifdef H5 -->
 				<view>
 					<view @tap="navigate({url:'/pages/register/register'})">用户注册</view>
 				</view>
+				<!-- #endif -->
 			</view>
 			<!-- #ifdef APP -->
 			<view class="third_party_login_box">
@@ -410,7 +412,6 @@
 					//#endif
 					//#ifdef APP-PLUS
 					if (this.listData.length > 0) {
-						console.log(this.status)
 						this.listData.map(ele => {
 							if (this.username != ele.username || this.password != ele.password) {
 								this.show = true;

+ 5 - 3
pages/orders/orders.vue

@@ -79,7 +79,7 @@
 				<view class="orderItemPane-below dis a-c  j-end search">
 					<u-button type="primary" size="mini" :hair-line="false" :plain="true"
 						@click="quotehistory(item)">报价历史</u-button>
-					<u-button type="success" size="mini" :hair-line="false" :plain="true"
+					<u-button v-if="item.orderstatus!='3'" type="success" size="mini" :hair-line="false" :plain="true"
 						@click="CloseEdit(item)">编辑</u-button>
 				</view>
 			</view>
@@ -238,6 +238,10 @@
 			}
 		},
 		onShow() {
+			const arr = uni.getStorageSync('historyInfo');
+			if (arr) {
+				uni.removeStorageSync('historyInfo');
+			}
 			this.getOrdersList()
 		},
 		onLoad() {
@@ -273,7 +277,6 @@
 			},
 			//状态筛选
 			statusclick(e) {
-				console.log(e)
 				this.pageRequest.orderStatus = e;
 			},
 			startShowmethod() {
@@ -355,7 +358,6 @@
 			},
 			//编辑
 			CloseEdit(val) {
-				console.log(val)
 				this.navigate({
 					url: '/pages/carInsure1/quote1',
 					success: (res) => {

+ 12 - 12
pages/orders/quotation.vue

@@ -65,17 +65,17 @@
 					<text>交强险</text>
 					<text>¥{{dataInfo.jqpremium}}</text>
 				</view>
-				<view class="bjdCarSum dis j-s " v-if="dataInfo.sypremium">
-					<text>商业险</text>
-					<text>¥{{dataInfo.sypremium}}</text>
+				<view class="bjdCarSum dis j-s " v-if="dataInfo.taxamount">
+					<text>车船税</text>
+					<text>¥{{dataInfo.taxamount}}</text>
 				</view>
 				<view class="bjdCarSum dis j-s " v-if="dataInfo.jypremium">
 					<text>驾意险</text>
 					<text>¥{{dataInfo.jypremium}}</text>
 				</view>
-				<view class="bjdCarSum dis j-s " v-if="dataInfo.taxamount">
-					<text>车船税</text>
-					<text>¥{{dataInfo.taxamount}}</text>
+				<view class="bjdCarSum dis j-s " v-if="dataInfo.sypremium">
+					<text>商业险</text>
+					<text>¥{{dataInfo.sypremium}}</text>
 				</view>
 				<view class="bjdCarSum dis j-s " v-if="dataInfo.jqdiscountrate">
 					<text>交强险优惠比例</text>
@@ -85,10 +85,6 @@
 					<text>商业险优惠比例</text>
 					<text>{{dataInfo.sydiscountrate}}%</text>
 				</view>
-				<view class="bjdCarSum dis j-s " v-if="dataInfo.sydiscountrate">
-					<text>商业险优惠比例</text>
-					<text>{{dataInfo.sydiscountrate}}%</text>
-				</view>
 				<view class="coverage dis j-s f-c" style="border: none;" v-if="dataInfo.sypremium">
 					<view class="coverage-title dis">
 						<view style="width: 200px;">
@@ -106,7 +102,7 @@
 							<text>{{item.kindName}}</text>
 						</view>
 						<view v-if="['D4', 'SY_FJ_YBW2'].includes(item.kindCode)">
-							<text>{{item.unitAmount}}/{{dataInfo.carinfo.seatCount-1}}</text>
+							<text>{{item.unitAmount}}/座*{{dataInfo.carinfo.seatCount-1}}</text>
 						</view>
 						<view v-else-if="['MJ1', 'MJ2', 'MJ3', 'MJ4'].includes(item.kindCode)">
 							<text>{{item.deductibleRate}}</text>
@@ -193,7 +189,11 @@
 			data.kindinfo.map((ele, index) => {
 				switch (ele.kindCode) {
 					case "A":
-						ele.amount = "投保";
+						if (ele.amount == 1) {
+							ele.amount = "投保"
+						} else {
+							ele.amount = ele.amount
+						}
 						break;
 					case "D4":
 					case "SY_FJ_YBW2":

+ 39 - 1
pages/orders/subOrders.vue

@@ -47,8 +47,10 @@
 						:plain="true" :hair-line="false" shape="circle" @click="cancelorder(item.id)">撤单</u-button>
 					<u-button v-if="item.orderstatus==2" size="mini" type="error" :plain="true" :hair-line="false"
 						shape="circle" @click="Payment(item.id)">付款码</u-button>
+					<u-button v-if="item.orderstatus==1  && ['中煤财险'].includes(item.inscompany)" size="mini" type="error"
+						:plain="true" :hair-line="false" shape="circle" @click="underwriting(item.id)">核保状态查询</u-button>
 					<u-button
-						v-if="item.orderstatus==2 && ['恒邦财险','安盛天平','中国人寿','众安财险','紫金财险','永诚财险'].includes(item.inscompany)"
+						v-if="item.orderstatus==2 && ['恒邦财险','安盛天平','中国人寿','众安财险','紫金财险','永诚财险','国任财险'].includes(item.inscompany)"
 						size="mini" type="error" :plain="true" :hair-line="false" shape="circle"
 						@click="queryStatus(item.id,item.inscompany)">查询缴费状态</u-button>
 					<u-button size="mini" type="primary" :plain="true" :hair-line="false" shape="circle"
@@ -133,6 +135,24 @@
 					url: "/pages/orders/quotation?companyId=" + id
 				})
 			},
+			async underwriting(id) {
+				let res = await this.$http.post('/order/zhongMeiApi/auditStatusQuery', {
+					companyId: id
+				})
+				if (res.code == '200') {
+					uni.showToast({
+						title: res.msg,
+						icon: 'none',
+						duration: 1000
+					});
+					this.querylist();
+				} else {
+					uni.showToast({
+						title: res.msg,
+						icon: 'error',
+					});
+				}
+			},
 			//撤单
 			async cancelorder(item) {
 				let res = await this.$http.post('/order/zijin/cancel', {
@@ -188,6 +208,24 @@
 							});
 						}
 						break;
+					case "国任财险":
+						let grres = await this.$http.post('/api/guoRen/updateOrderInfo', {
+							companyId: id
+						});
+						if (grres.code == '200') {
+							uni.showToast({
+								title: grres.msg,
+								icon: 'none',
+								duration: 2000
+							});
+							this.querylist();
+						} else {
+							uni.showToast({
+								title: grres.msg,
+								icon: 'error',
+							});
+						}
+						break;
 					default:
 						let pythonres = await this.$http.post('/insurance/crawler/verifyPayment', {
 							subOrderNo: id

+ 19 - 11
pages/register/register.vue

@@ -29,7 +29,8 @@
 				<view class="d-flex a-center j-center login-font-color yanzhengma" @tap="getCheckNum">
 					<view class="d-flex a-center j-center"
 						:class="!codetime?'yanzhengma1 main-text-color':'yanzhengma2'">
-						{{!codetime?'获取验证码':codetime+' s'}}</view>
+						{{!codetime?'获取验证码':codetime+' s'}}
+					</view>
 				</view>
 			</view>
 
@@ -89,16 +90,20 @@
 			// // #ifdef H5
 			// document.getElementsByTagName('uni-page-head')[0].style.display = 'none'
 			// // #endif
-			if(params.id){
+			if (params.id) {
 				this.recommenderid = params.id;
 				// 查询推荐人信息
 				let res = await this.$http.get('/user/findById?id=' + params.id);
 				if ((res.code == '200') && (res.data != null)) {
 					this.recommendername = res.data.name;
 					this.showRecommend = true;
-				}else{
-					    uni.showToast({ title:res.msg , icon:"success",duration:2000 });
-						this.showRecommend = false;
+				} else {
+					uni.showToast({
+						title: res.msg,
+						icon: "success",
+						duration: 2000
+					});
+					this.showRecommend = false;
 					// if(this.$base.baseUrl.indexOf("test")>-1){
 					// 	this.recommenderid="99140109M01D01001";
 					// 	this.recommendername = "耿陈杰";
@@ -108,7 +113,7 @@
 					// 	this.recommendername = "掌柜老王";
 					// 	this.showRecommend = false;
 					// }
-					
+
 				}
 			}
 			// else{
@@ -229,6 +234,7 @@
 					"referrerId": this.recommenderid,
 					"referrerName": this.recommendername
 				});
+				console.log(res)
 				// 请求失败处理
 				// var newPhone= "";
 				// newPhone = this.phone;
@@ -236,7 +242,7 @@
 				// this.phone="";
 				// this.code="";
 				// this.name="";
-				if((res.code==200) && (!!res.data)){	
+				if ((res.code == 200) && (!!res.data)) {
 					// #ifndef H5
 					this.setUserModules({
 						title: "userLoginId",
@@ -262,10 +268,12 @@
 						})
 					}, 2000);
 					// #endif
-				}
-				else {
-					uni.showToast({ 
-						title:res.msg , icon:"success",duration:2000 });
+				} else {
+					uni.showToast({
+						title: res.msg,
+						icon: "none",
+						duration: 2000
+					});
 				}
 				// else{
 				// 	uni.showToast({ title: '已注册,重复注册', icon:"success",duration:2000 });

+ 29 - 14
pages/register/registerSuccess.vue

@@ -4,14 +4,18 @@
 		<public-module></public-module>
 		<view>
 			<view class="info">
+				<image src="/static/image/register/success-bg.jpg" style="height: 100%;">
+				</image>
 				<view class="ok-btn">
 					<image src="/static/image/register/ok.png" alt="注册成功" mode="widthFix"></image>
 				</view>
-				<p class="entry-con">感谢您加入掌柜</p>
-				<h2 class="entry-hd">恭喜注册成功</h2>
-				<view class="info-list">
-					<view>您的掌柜会员号:{{id}}</view>
-					<view>您的关联手机:{{phone}}</view>
+				<view class="" style="position: absolute;right: 0; left: 0; top: 160px;">
+					<p class="entry-con">感谢您加入掌柜</p>
+					<h2 class="entry-hd">恭喜注册成功</h2>
+					<view class="info-list">
+						<view>您的掌柜会员号:{{id}}</view>
+						<view>您的关联手机:{{phone}}</view>
+					</view>
 				</view>
 			</view>
 			<view class="download">
@@ -77,12 +81,20 @@
 							data: this.id
 						})
 					}
-					var data = {
-						appid: "__UNI__D4FE29A"
-					}
-					let res = await this.$http.get('/sysVersion/queryMaxNum', data);
-					if (res.code == '200') {
-						window.open(res.data.path);
+					let pageRequest = {
+						pageNum: 1,
+						pageSize: 50,
+						columnFilters: {
+							apptype: {
+								name: "apptype",
+								value: "apk",
+							}
+						}
+					};
+					let getquote = await this.$http.post('/sysVersion/findPage', pageRequest);
+					let url = getquote.data.content[0].path;
+					if (getquote.code == '200') {
+						window.open(url);
 					}
 				}
 			},
@@ -136,10 +148,9 @@
 	}
 
 	.info {
-		background: url(/static/image/register/success-bg.jpg) no-repeat center bottom;
-		background-size: cover;
+		position: relative;
+		height: 400px;
 		color: #fff;
-		padding: 100rpx 0;
 	}
 
 	.info .ok-btn {
@@ -147,6 +158,10 @@
 		margin: 0 auto;
 		padding-bottom: 30rpx;
 		text-align: center;
+		position: absolute;
+		top: 50px;
+		left: 0;
+		right: 0;
 	}
 
 	.info .ok-btn image {

+ 57 - 34
pages/tools/addStaff/addStaff.vue

@@ -17,35 +17,53 @@
 			</view>
 		</view>
 		<view class="line"></view>
-		
+
 		<!-- 增员菜单Start -->
 		<block v-for="(item,index) in menusList" :key="index">
 			<my-list-item :item="item" :index="index"></my-list-item>
 		</block>
 		<!-- 增员菜单End -->
-		
+
 	</view>
 </template>
 
 <script>
 	import myListItem from "@/components/modules/my/my-list-item.vue";
 	export default {
-		components:{
+		components: {
 			myListItem
 		},
 		data() {
 			return {
-				menusList:[
-					{ icon:"",name:"面对面推荐",clicktype:"navigateTo",url:"/pages/tools/addStaff/recommendCode",auth:true },
-					{ icon:"",name:"邀请函",clicktype:"navigateTo",url:"/pages/tools/poster/poster",auth:true }
+				menusList: [{
+						icon: "",
+						name: "面对面推荐",
+						clicktype: "navigateTo",
+						url: "/pages/tools/addStaff/recommendCode",
+						auth: true
+					},
+					{
+						icon: "",
+						name: "扫码下载",
+						clicktype: "navigateTo",
+						url: "/pages/tools/addStaff/codeDownload",
+						auth: true
+					},
+					{
+						icon: "",
+						name: "邀请函",
+						clicktype: "navigateTo",
+						url: "/pages/tools/poster/poster",
+						auth: true
+					}
 				]
 			}
 		},
 		methods: {
-			getStaffList(staffType){
+			getStaffList(staffType) {
 				// 0未认证 1已认证 2全部
 				this.navigate({
-					url: '/pages/tool-staff-list/tool-staff-list?staffType='+staffType
+					url: '/pages/tool-staff-list/tool-staff-list?staffType=' + staffType
 				}, "navigateTo", true);
 			}
 		}
@@ -53,29 +71,34 @@
 </script>
 
 <style>
-.addStaffManage{
-	height: 220upx;
-	margin: 0 40upx;
-}
-.addStaffManage>view>view.icon{
-	width: 110upx;
-	height: 110upx;
-	color: #FFFFFF;
-	border-radius: 100%;
-	margin-bottom: 10upx;
-	font-size: 60upx;
-}
-.addStaffManage>view:nth-of-type(1)>view.icon{
-	background-color: #78CBFF;
-}
-.addStaffManage>view:nth-of-type(2)>view.icon{
-	background-color: #78FF7E;
-}
-.addStaffManage>view:nth-of-type(3)>view.icon{
-	background-color: #FF9D4A;
-}
-.line{
-	height: 10upx;
-	background-color: #EEEEEE;
-}
-</style>
+	.addStaffManage {
+		height: 220upx;
+		margin: 0 40upx;
+	}
+
+	.addStaffManage>view>view.icon {
+		width: 110upx;
+		height: 110upx;
+		color: #FFFFFF;
+		border-radius: 100%;
+		margin-bottom: 10upx;
+		font-size: 60upx;
+	}
+
+	.addStaffManage>view:nth-of-type(1)>view.icon {
+		background-color: #78CBFF;
+	}
+
+	.addStaffManage>view:nth-of-type(2)>view.icon {
+		background-color: #78FF7E;
+	}
+
+	.addStaffManage>view:nth-of-type(3)>view.icon {
+		background-color: #FF9D4A;
+	}
+
+	.line {
+		height: 10upx;
+		background-color: #EEEEEE;
+	}
+</style>

+ 72 - 0
pages/tools/addStaff/codeDownload.vue

@@ -0,0 +1,72 @@
+<template>
+	<view :style="getHeight">
+		<!-- 公共组件-每个页面必须引入 -->
+		<public-module></public-module>
+		<view class="content d-flex flex-column a-center j-center">
+			<image src="/static/image/addStaff/face_sao.png" mode="widthFix" lazy-load style="width: 500upx;"></image>
+			<image :src="recommendImg" mode="widthFix" lazy-load style="width: 450upx;"></image>
+			<view>微信扫描二维码,即可下载!</view>
+		</view>
+	</view>
+</template>
+<script>
+	import {
+		mapState
+	} from "vuex"
+	import QR from "@/common/wxqrcode.js"
+	export default {
+		data() {
+			return {
+				recommendImg: ""
+			}
+		},
+		computed: {
+			...mapState(['userInfo']),
+			getHeight() {
+				let height = uni.getSystemInfoSync().windowHeight;
+				return `height: ${height}px;`;
+			}
+		},
+		async onLoad() {
+			var id = this.userInfo.sysUser.id;
+			let pageRequest = {
+				pageNum: 1,
+				pageSize: 50,
+				columnFilters: {
+					apptype: {
+						name: "apptype",
+						value: "apk",
+					}
+				}
+			};
+			let getquote = await this.$http.post('/sysVersion/findPage', pageRequest);
+			let url = getquote.data.content[0].path;
+			this.recommendImg = QR.createQrCodeImg(url, {
+				size: parseInt(200) //二维码大小  
+			})
+		},
+		methods: {
+
+		}
+	}
+</script>
+
+<style>
+	.content {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -60%);
+	}
+
+	.content>image {
+		margin-top: 30upx;
+		margin-bottom: 30upx;
+	}
+
+	.content>view {
+		width: 400upx;
+		color: red;
+		text-align: center;
+	}
+</style>

+ 10 - 1
plugins/utils.js

@@ -149,4 +149,13 @@ Date.prototype.format = function(fmt = 'yyyy-MM-dd hh:mm:ss') { //author: meizz
 			"00" + o[
 				k]).substr(("" + o[k]).length)));
 	return fmt;
-}
+};
+export const delEmptyQueryNodes = (obj) => {
+	Object.keys(obj).forEach((key) => {
+		let value = obj[key];
+		(value === '' || value === null || value === undefined || value.length === 0 || Object.keys(
+				value)
+			.length === 0) && delete obj[key];
+	});
+	return obj;
+};

+ 25 - 6
style/common.css

@@ -1,28 +1,47 @@
 /* (1)页面高度100%,默认字体28upx,默认行高1.8 */
-page{
+page {
 	height: 100%;
 	font-size: 28upx;
 	line-height: 1.8;
 	background-color: #FFFFFF;
 }
+
 image {
 	width: 100%;
 	display: block;
 }
+
 button {
 	margin: 0;
 	padding: 0;
 	background-color: #FFFF;
 }
+
 button::after {
 	border: none;
 }
+
 /* 主背景颜色(橙色) */
-.main-bg-color{background: #ea552d !important;}
+.main-bg-color {
+	background: #ea552d !important;
+}
+
 /* 主点击背景颜色(淡橙色) */
-.main-bf-hover-color{background: #ea552d!important; opacity: 0.65;}
+.main-bf-hover-color {
+	background: #ea552d !important;
+	opacity: 0.65;
+}
+
 /* 主字体颜色(橙色) */
-.main-text-color{color:#ea552d!important; }
+.main-text-color {
+	color: #ea552d !important;
+}
+
 /* 主边框颜色(淡灰色) */
-.main-border-color{border-color:#ea552d}
-.main-otherborder-color{border-color:#F1F1F1}
+.main-border-color {
+	border-color: #ea552d
+}
+
+.main-otherborder-color {
+	border-color: #F1F1F1
+}