Selaa lähdekoodia

1、增加人寿驾意险
2、增加恒邦驾意险
3、增加众安驾意险
4、影像问题修改
5.永诚核保接口问题

@dongkboy 1 vuosi sitten
vanhempi
commit
1452e5c7c8

+ 4 - 4
App.vue

@@ -16,7 +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/register") > 0) ||
+						0) ||
 					(url.indexOf("pages/register/registerSuccess") > 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)) {
@@ -32,8 +32,8 @@
 				socket.init();
 			} else {
 				var url = window.location.href;
-				if ((url.indexOf("pages/carInsure/quoteDetail") > 0) || (url.indexOf("pages/register/register") > 0) ||
-					(url.indexOf("pages/register/registerSuccess") > 0) || (url.indexOf("pages/carInsure/payVerify") >
+				if ((url.indexOf("pages/carInsure/quoteDetail") > 0) || (url.indexOf(
+						"pages/register/registerSuccess") > 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,7 +49,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/register") > 0) ||
+						0) ||
 					(url.indexOf("pages/register/registerSuccess") > 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)) {

+ 4 - 4
config/baseUrl.js

@@ -3,11 +3,11 @@ let h5BaseUrl = "";
 let socketUrl = "";
 if (process.env.NODE_ENV === 'development') {
 	// 开发环境
-	baseUrl = "http://39.98.239.48/web-api"; //测试
-	h5BaseUrl = "http://39.98.239.48/h5";
+	// baseUrl = "http://39.98.239.48/web-api"; //测试
+	// h5BaseUrl = "http://39.98.239.48/h5";
 	// baseUrl = "http://192.168.0.115:8080/"; //凯森
-	// baseUrl = "http://sxzgkj.baoxianzhanggui.com/web-api"; //正式
-	// h5BaseUrl = "http://sxzgkj.baoxianzhanggui.com/h5";
+	baseUrl = "http://sxzgkj.baoxianzhanggui.com/web-api"; //正式
+	h5BaseUrl = "http://sxzgkj.baoxianzhanggui.com/h5";
 	socketUrl = "";
 } else if (process.env.NODE_ENV === 'production') {
 	// 生产环境

+ 7 - 3
config/html5Utils.js

@@ -1,7 +1,10 @@
 import base from '@/config/baseUrl';
 import store from '@/store';
 import $http from '@/config/requestConfig'
-import { getLocation, setShare } from '@/plugins/wxJsSDK';
+import {
+	getLocation,
+	setShare
+} from '@/plugins/wxJsSDK';
 /**
  * APP内嵌网页 -- 安卓IOS交互
  */
@@ -54,6 +57,7 @@ export const wxPublicPay = (payInfo, callback) => {
 			signType: data.signType,
 			paySign: data.sign
 		};
+
 		function onBridgeReady() {
 			window.WeixinJSBridge.invoke("getBrandWCPayRequest", wxConfigObj, function(
 				res
@@ -112,7 +116,7 @@ export const getLatLonH5 = function(successCallback, errCallback) {
 	}
 };
 // 公众号分享
-export const publicShareFun = function (info = {},callback) {
+export const publicShareFun = function(info = {}, callback) {
 	if (getBrowser() == "微信") {
 		let shareInfo = {
 			title: info.shareTitle || info.title || base.share.title,
@@ -153,4 +157,4 @@ export const publicShareFun = function (info = {},callback) {
 // 			}
 // 		});
 // 	}
-// }
+// }

+ 605 - 69
config/ican-H5Api.js

@@ -1,71 +1,607 @@
 //#ifdef H5
 /** clipboard.js v2.0.4**/
-!function(t,e){try{window.ClipboardJS=e();}catch(e){};"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return function(n){var o={};function r(t){if(o[t])return o[t].exports;var e=o[t]={i:t,l:!1,exports:{}};return n[t].call(e.exports,e,e.exports,r),e.l=!0,e.exports}
-  return r.m=n,r.c=o,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=0)}([function(t,e,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=function(){function o(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}
-  return function(t,e,n){return e&&o(t.prototype,e),n&&o(t,n),t}}(),a=o(n(1)),c=o(n(3)),u=o(n(4));function o(t){return t&&t.__esModule?t:{default:t}}
-  var l=function(t){function o(t,e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,o);var n=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(o.__proto__||Object.getPrototypeOf(o)).call(this));return n.resolveOptions(e),n.listenClick(t),n}
-    return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(o,c.default),i(o,[{key:"resolveOptions",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===r(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=(0,u.default)(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new a.default({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:"defaultAction",value:function(t){return s("action",t)||'copy'}},{key:"defaultTarget",value:function(t){var e=s("target",t);if(e){return document.querySelector(e)}}},{key:"defaultText",value:function(t){return s("text",t)||this.text}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:["copy","cut"],e="string"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach(function(t){n=n&&!!document.queryCommandSupported(t)}),n}}]),o}();function s(t,e){var n="data-clipboard-"+t;let isFun=e&&typeof e.hasAttribute==='function';if(isFun&&e.hasAttribute(n)){return e.getAttribute(n)}}
-  t.exports=l},function(t,e,n){"use strict";var o,r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=function(){function o(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}
-  return function(t,e,n){return e&&o(t.prototype,e),n&&o(t,n),t}}(),a=n(2),c=(o=a)&&o.__esModule?o:{default:o};var u=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.resolveOptions(t),this.initSelection()}
-  return i(e,[{key:"resolveOptions",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.container=t.container,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var t=this,e="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[e?"right":"left"]="-9999px";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,c.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,c.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var e=void 0;try{e=document.execCommand(this.action)}catch(t){e=!1}
-      this.handleResult(e)}},{key:"handleResult",value:function(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(t){if(void 0!==t){if(!t||"object"!==(void 0===t?"undefined":r(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}]),e}();t.exports=u},function(t,e){t.exports=function(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var o=window.getSelection(),r=document.createRange();r.selectNodeContents(t),o.removeAllRanges(),o.addRange(r),e=o.toString()}
-  return e}},function(t,e){function n(){}
-  n.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var o=this;function r(){o.off(t,r),e.apply(n,arguments)}
-      return r._=e,this.on(t,r,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;o<r;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],r=[];if(o&&e)for(var i=0,a=o.length;i<a;i++)o[i].fn!==e&&o[i].fn._!==e&&r.push(o[i]);return r.length?n[t]=r:delete n[t],this}},t.exports=n},function(t,e,n){var d=n(5),h=n(6);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!d.string(e))throw new TypeError("Second argument must be a String");if(!d.fn(n))throw new TypeError("Third argument must be a Function");if(d.node(t))return s=e,f=n,(l=t).addEventListener(s,f),{destroy:function(){l.removeEventListener(s,f)}};if(d.nodeList(t))return a=t,c=e,u=n,Array.prototype.forEach.call(a,function(t){t.addEventListener(c,u)}),{destroy:function(){Array.prototype.forEach.call(a,function(t){t.removeEventListener(c,u)})}};if(d.string(t))return o=t,r=e,i=n,h(document.body,o,r,i);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList");var o,r,i,a,c,u,l,s,f}},function(t,n){n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===e||"[object HTMLCollection]"===e)&&"length"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return"string"==typeof t||t instanceof String},n.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},function(t,e,n){var a=n(7);function i(t,e,n,o,r){var i=function(e,n,t,o){return function(t){t.delegateTarget=a(t.target,n),t.delegateTarget&&o.call(e,t)}}.apply(this,arguments);return t.addEventListener(n,i,r),{destroy:function(){t.removeEventListener(n,i,r)}}}
-  t.exports=function(t,e,n,o,r){return"function"==typeof t.addEventListener?i.apply(null,arguments):"function"==typeof n?i.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return i(t,e,n,o,r)}))}},function(t,e){if("undefined"!=typeof Element&&!Element.prototype.matches){var n=Element.prototype;n.matches=n.matchesSelector||n.mozMatchesSelector||n.msMatchesSelector||n.oMatchesSelector||n.webkitMatchesSelector}
-  t.exports=function(t,e){for(;t&&9!==t.nodeType;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}}])});let Types={isFunction:function(obj){var type=Object.prototype.toString.call(obj)
-    return type=='[object Function]'},isObject:function(obj){var type=Object.prototype.toString.call(obj)
-    return type=='[object Object]'},isString:function(obj){var type=Object.prototype.toString.call(obj)
-    return type=='[object String]'}}
-uni.setClipboardData=function(options){let emptyFun=function(){}
-  let config={data:null,event:null,success:emptyFun,fail:emptyFun,complete:emptyFun}
-  if(options&&Types.isObject(options)){config=Object.assign({},config,options)}
-  if(options&&Types.isString(options)){config=Object.assign({},config,{data:options})}
-  let data=config.data
-  let success=config.success||emptyFun
-  let fail=config.fail||emptyFun
-  let complete=config.complete||emptyFun
-  let e=config.event||window.event||{}
-  let cb=new ClipboardJS('.null',{text:()=>data})
-  cb.on('success',function(res){
-    window.__clipboard__=data;
-    success&&Types.isFunction(success)&&success({data:res.text})
-    complete&&Types.isFunction(complete)&&complete()
-    cb.off('error')
-    cb.off('success')
-    cb.destroy()})
-  cb.on('error',function(err){fail&&Types.isFunction(fail)&&fail(err)
-    complete&&Types.isFunction(complete)&&complete()
-    cb.off('error')
-    cb.off('success')
-    cb.destroy()})
-  cb.onClick(e)};
-uni.getClipboardData=function(options){let emptyFun=function(){}
-    let config={data:null,event:null,success:emptyFun,fail:emptyFun,complete:emptyFun}
-    if(options&&Types.isObject(options)){config=Object.assign({},config,options)}
-    let success=config.success||emptyFun
-    let fail=config.fail||emptyFun
-    let complete=config.complete||emptyFun
-    if(window.__clipboard__!==undefined){success&&Types.isFunction(success)&&success({data:window.__clipboard__})}else{fail&&Types.isFunction(fail)&&fail({data:null})}
-    complete&&Types.isFunction(complete)&&complete()};
-function fileDownLoad(data){var linkElement=document.createElement('a')
-  linkElement.setAttribute('href',data.blob)
-  linkElement.setAttribute('downLoad',data.name)
-  linkElement.click()}
-uni.saveImageToPhotosAlbum=uni.saveVideoToPhotosAlbum=function(options){let emptyFun=function(){}
-  let config={filePath:null,success:emptyFun,fail:emptyFun,complete:emptyFun}
-  if(options&&Types.isObject(options)){config=Object.assign({},config,options)}
-  if(options&&Types.isString(options)){config=Object.assign({},config,{filePath:options})}
-  let filePath=config.filePath
-  let success=config.success||emptyFun
-  let fail=config.fail||emptyFun
-  let complete=config.complete||emptyFun
-  if(!filePath){fail&&Types.isFunction(fail)&&fail({msg:'no File'})
-    complete&&Types.isFunction(complete)&&complete()
-    return}
-  let names=filePath.split('/')
-  let name=names[names.length-1]
-  uni.downloadFile({url:filePath,success:function(res){let tempFilePath=res.tempFilePath
-      fileDownLoad({name:name,blob:tempFilePath})
-      success&&Types.isFunction(success)&&success({filePath:filePath})},fail:function(err){fail&&Types.isFunction(fail)&&fail({msg:err})},complete:function(){complete&&Types.isFunction(complete)&&complete()}})}
-//#endif
+! function(t, e) {
+	try {
+		window.ClipboardJS = e();
+	} catch (e) {};
+	"object" == typeof exports && "object" == typeof module ? module.exports = e() : "function" == typeof define &&
+		define.amd ? define([], e) : "object" == typeof exports ? exports.ClipboardJS = e() : t.ClipboardJS = e()
+}(this, function() {
+	return function(n) {
+		var o = {};
+
+		function r(t) {
+			if (o[t]) return o[t].exports;
+			var e = o[t] = {
+				i: t,
+				l: !1,
+				exports: {}
+			};
+			return n[t].call(e.exports, e, e.exports, r), e.l = !0, e.exports
+		}
+		return r.m = n, r.c = o, r.d = function(t, e, n) {
+			r.o(t, e) || Object.defineProperty(t, e, {
+				enumerable: !0,
+				get: n
+			})
+		}, r.r = function(t) {
+			"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol
+				.toStringTag, {
+					value: "Module"
+				}), Object.defineProperty(t, "__esModule", {
+				value: !0
+			})
+		}, r.t = function(e, t) {
+			if (1 & t && (e = r(e)), 8 & t) return e;
+			if (4 & t && "object" == typeof e && e && e.__esModule) return e;
+			var n = Object.create(null);
+			if (r.r(n), Object.defineProperty(n, "default", {
+					enumerable: !0,
+					value: e
+				}), 2 & t && "string" != typeof e)
+				for (var o in e) r.d(n, o, function(t) {
+					return e[t]
+				}.bind(null, o));
+			return n
+		}, r.n = function(t) {
+			var e = t && t.__esModule ? function() {
+				return t.default
+			} : function() {
+				return t
+			};
+			return r.d(e, "a", e), e
+		}, r.o = function(t, e) {
+			return Object.prototype.hasOwnProperty.call(t, e)
+		}, r.p = "", r(r.s = 0)
+	}([function(t, e, n) {
+		"use strict";
+		var r = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
+				return typeof t
+			} : function(t) {
+				return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol
+					.prototype ? "symbol" : typeof t
+			},
+			i = function() {
+				function o(t, e) {
+					for (var n = 0; n < e.length; n++) {
+						var o = e[n];
+						o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o
+							.writable = !0), Object.defineProperty(t, o.key, o)
+					}
+				}
+				return function(t, e, n) {
+					return e && o(t.prototype, e), n && o(t, n), t
+				}
+			}(),
+			a = o(n(1)),
+			c = o(n(3)),
+			u = o(n(4));
+
+		function o(t) {
+			return t && t.__esModule ? t : {
+				default: t
+			}
+		}
+		var l = function(t) {
+			function o(t, e) {
+				! function(t, e) {
+					if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
+				}(this, o);
+				var n = function(t, e) {
+					if (!t) throw new ReferenceError(
+						"this hasn't been initialised - super() hasn't been called");
+					return !e || "object" != typeof e && "function" != typeof e ? t : e
+				}(this, (o.__proto__ || Object.getPrototypeOf(o)).call(this));
+				return n.resolveOptions(e), n.listenClick(t), n
+			}
+			return function(t, e) {
+				if ("function" != typeof e && null !== e) throw new TypeError(
+					"Super expression must either be null or a function, not " +
+					typeof e);
+				t.prototype = Object.create(e && e.prototype, {
+					constructor: {
+						value: t,
+						enumerable: !1,
+						writable: !0,
+						configurable: !0
+					}
+				}), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t
+					.__proto__ = e)
+			}(o, c.default), i(o, [{
+				key: "resolveOptions",
+				value: function() {
+					var t = 0 < arguments.length && void 0 !== arguments[0] ?
+						arguments[0] : {};
+					this.action = "function" == typeof t.action ? t.action : this
+						.defaultAction, this.target = "function" == typeof t
+						.target ? t.target : this.defaultTarget, this.text =
+						"function" == typeof t.text ? t.text : this.defaultText,
+						this.container = "object" === r(t.container) ? t.container :
+						document.body
+				}
+			}, {
+				key: "listenClick",
+				value: function(t) {
+					var e = this;
+					this.listener = (0, u.default)(t, "click", function(t) {
+						return e.onClick(t)
+					})
+				}
+			}, {
+				key: "onClick",
+				value: function(t) {
+					var e = t.delegateTarget || t.currentTarget;
+					this.clipboardAction && (this.clipboardAction = null), this
+						.clipboardAction = new a.default({
+							action: this.action(e),
+							target: this.target(e),
+							text: this.text(e),
+							container: this.container,
+							trigger: e,
+							emitter: this
+						})
+				}
+			}, {
+				key: "defaultAction",
+				value: function(t) {
+					return s("action", t) || 'copy'
+				}
+			}, {
+				key: "defaultTarget",
+				value: function(t) {
+					var e = s("target", t);
+					if (e) {
+						return document.querySelector(e)
+					}
+				}
+			}, {
+				key: "defaultText",
+				value: function(t) {
+					return s("text", t) || this.text
+				}
+			}, {
+				key: "destroy",
+				value: function() {
+					this.listener.destroy(), this.clipboardAction && (this
+						.clipboardAction.destroy(), this.clipboardAction = null)
+				}
+			}], [{
+				key: "isSupported",
+				value: function() {
+					var t = 0 < arguments.length && void 0 !== arguments[0] ?
+						arguments[0] : ["copy", "cut"],
+						e = "string" == typeof t ? [t] : t,
+						n = !!document.queryCommandSupported;
+					return e.forEach(function(t) {
+						n = n && !!document.queryCommandSupported(t)
+					}), n
+				}
+			}]), o
+		}();
+
+		function s(t, e) {
+			var n = "data-clipboard-" + t;
+			let isFun = e && typeof e.hasAttribute === 'function';
+			if (isFun && e.hasAttribute(n)) {
+				return e.getAttribute(n)
+			}
+		}
+		t.exports = l
+	}, function(t, e, n) {
+		"use strict";
+		var o, r = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
+				return typeof t
+			} : function(t) {
+				return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol
+					.prototype ? "symbol" : typeof t
+			},
+			i = function() {
+				function o(t, e) {
+					for (var n = 0; n < e.length; n++) {
+						var o = e[n];
+						o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o
+							.writable = !0), Object.defineProperty(t, o.key, o)
+					}
+				}
+				return function(t, e, n) {
+					return e && o(t.prototype, e), n && o(t, n), t
+				}
+			}(),
+			a = n(2),
+			c = (o = a) && o.__esModule ? o : {
+				default: o
+			};
+		var u = function() {
+			function e(t) {
+				! function(t, e) {
+					if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
+				}(this, e), this.resolveOptions(t), this.initSelection()
+			}
+			return i(e, [{
+				key: "resolveOptions",
+				value: function() {
+					var t = 0 < arguments.length && void 0 !== arguments[0] ?
+						arguments[0] : {};
+					this.action = t.action, this.container = t.container, this
+						.emitter = t.emitter, this.target = t.target, this.text = t
+						.text, this.trigger = t.trigger, this.selectedText = ""
+				}
+			}, {
+				key: "initSelection",
+				value: function() {
+					this.text ? this.selectFake() : this.target && this
+						.selectTarget()
+				}
+			}, {
+				key: "selectFake",
+				value: function() {
+					var t = this,
+						e = "rtl" == document.documentElement.getAttribute("dir");
+					this.removeFake(), this.fakeHandlerCallback = function() {
+							return t.removeFake()
+						}, this.fakeHandler = this.container.addEventListener(
+							"click", this.fakeHandlerCallback) || !0, this
+						.fakeElem = document.createElement("textarea"), this
+						.fakeElem.style.fontSize = "12pt", this.fakeElem.style
+						.border = "0", this.fakeElem.style.padding = "0", this
+						.fakeElem.style.margin = "0", this.fakeElem.style.position =
+						"absolute", this.fakeElem.style[e ? "right" : "left"] =
+						"-9999px";
+					var n = window.pageYOffset || document.documentElement
+						.scrollTop;
+					this.fakeElem.style.top = n + "px", this.fakeElem.setAttribute(
+							"readonly", ""), this.fakeElem.value = this.text, this
+						.container.appendChild(this.fakeElem), this.selectedText = (
+							0, c.default)(this.fakeElem), this.copyText()
+				}
+			}, {
+				key: "removeFake",
+				value: function() {
+					this.fakeHandler && (this.container.removeEventListener("click",
+							this.fakeHandlerCallback), this.fakeHandler = null,
+						this.fakeHandlerCallback = null), this.fakeElem && (this
+						.container.removeChild(this.fakeElem), this.fakeElem =
+						null)
+				}
+			}, {
+				key: "selectTarget",
+				value: function() {
+					this.selectedText = (0, c.default)(this.target), this.copyText()
+				}
+			}, {
+				key: "copyText",
+				value: function() {
+					var e = void 0;
+					try {
+						e = document.execCommand(this.action)
+					} catch (t) {
+						e = !1
+					}
+					this.handleResult(e)
+				}
+			}, {
+				key: "handleResult",
+				value: function(t) {
+					this.emitter.emit(t ? "success" : "error", {
+						action: this.action,
+						text: this.selectedText,
+						trigger: this.trigger,
+						clearSelection: this.clearSelection.bind(this)
+					})
+				}
+			}, {
+				key: "clearSelection",
+				value: function() {
+					this.trigger && this.trigger.focus(), window.getSelection()
+						.removeAllRanges()
+				}
+			}, {
+				key: "destroy",
+				value: function() {
+					this.removeFake()
+				}
+			}, {
+				key: "action",
+				set: function() {
+					var t = 0 < arguments.length && void 0 !== arguments[0] ?
+						arguments[0] : "copy";
+					if (this._action = t, "copy" !== this._action && "cut" !== this
+						._action) throw new Error(
+						'Invalid "action" value, use either "copy" or "cut"'
+					)
+				},
+				get: function() {
+					return this._action
+				}
+			}, {
+				key: "target",
+				set: function(t) {
+					if (void 0 !== t) {
+						if (!t || "object" !== (void 0 === t ? "undefined" : r(
+								t)) || 1 !== t.nodeType) throw new Error(
+							'Invalid "target" value, use a valid Element');
+						if ("copy" === this.action && t.hasAttribute("disabled"))
+							throw new Error(
+								'Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute'
+							);
+						if ("cut" === this.action && (t.hasAttribute("readonly") ||
+								t.hasAttribute("disabled"))) throw new Error(
+							'Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes'
+						);
+						this._target = t
+					}
+				},
+				get: function() {
+					return this._target
+				}
+			}]), e
+		}();
+		t.exports = u
+	}, function(t, e) {
+		t.exports = function(t) {
+			var e;
+			if ("SELECT" === t.nodeName) t.focus(), e = t.value;
+			else if ("INPUT" === t.nodeName || "TEXTAREA" === t.nodeName) {
+				var n = t.hasAttribute("readonly");
+				n || t.setAttribute("readonly", ""), t.select(), t.setSelectionRange(0, t.value
+					.length), n || t.removeAttribute("readonly"), e = t.value
+			} else {
+				t.hasAttribute("contenteditable") && t.focus();
+				var o = window.getSelection(),
+					r = document.createRange();
+				r.selectNodeContents(t), o.removeAllRanges(), o.addRange(r), e = o.toString()
+			}
+			return e
+		}
+	}, function(t, e) {
+		function n() {}
+		n.prototype = {
+			on: function(t, e, n) {
+				var o = this.e || (this.e = {});
+				return (o[t] || (o[t] = [])).push({
+					fn: e,
+					ctx: n
+				}), this
+			},
+			once: function(t, e, n) {
+				var o = this;
+
+				function r() {
+					o.off(t, r), e.apply(n, arguments)
+				}
+				return r._ = e, this.on(t, r, n)
+			},
+			emit: function(t) {
+				for (var e = [].slice.call(arguments, 1), n = ((this.e || (this.e = {}))[t] ||
+					[]).slice(), o = 0, r = n.length; o < r; o++) n[o].fn.apply(n[o].ctx, e);
+				return this
+			},
+			off: function(t, e) {
+				var n = this.e || (this.e = {}),
+					o = n[t],
+					r = [];
+				if (o && e)
+					for (var i = 0, a = o.length; i < a; i++) o[i].fn !== e && o[i].fn._ !==
+						e && r.push(o[i]);
+				return r.length ? n[t] = r : delete n[t], this
+			}
+		}, t.exports = n
+	}, function(t, e, n) {
+		var d = n(5),
+			h = n(6);
+		t.exports = function(t, e, n) {
+			if (!t && !e && !n) throw new Error("Missing required arguments");
+			if (!d.string(e)) throw new TypeError("Second argument must be a String");
+			if (!d.fn(n)) throw new TypeError("Third argument must be a Function");
+			if (d.node(t)) return s = e, f = n, (l = t).addEventListener(s, f), {
+				destroy: function() {
+					l.removeEventListener(s, f)
+				}
+			};
+			if (d.nodeList(t)) return a = t, c = e, u = n, Array.prototype.forEach.call(a, function(
+				t) {
+				t.addEventListener(c, u)
+			}), {
+				destroy: function() {
+					Array.prototype.forEach.call(a, function(t) {
+						t.removeEventListener(c, u)
+					})
+				}
+			};
+			if (d.string(t)) return o = t, r = e, i = n, h(document.body, o, r, i);
+			throw new TypeError(
+				"First argument must be a String, HTMLElement, HTMLCollection, or NodeList");
+			var o, r, i, a, c, u, l, s, f
+		}
+	}, function(t, n) {
+		n.node = function(t) {
+			return void 0 !== t && t instanceof HTMLElement && 1 === t.nodeType
+		}, n.nodeList = function(t) {
+			var e = Object.prototype.toString.call(t);
+			return void 0 !== t && ("[object NodeList]" === e || "[object HTMLCollection]" === e) &&
+				"length" in t && (0 === t.length || n.node(t[0]))
+		}, n.string = function(t) {
+			return "string" == typeof t || t instanceof String
+		}, n.fn = function(t) {
+			return "[object Function]" === Object.prototype.toString.call(t)
+		}
+	}, function(t, e, n) {
+		var a = n(7);
+
+		function i(t, e, n, o, r) {
+			var i = function(e, n, t, o) {
+				return function(t) {
+					t.delegateTarget = a(t.target, n), t.delegateTarget && o.call(e, t)
+				}
+			}.apply(this, arguments);
+			return t.addEventListener(n, i, r), {
+				destroy: function() {
+					t.removeEventListener(n, i, r)
+				}
+			}
+		}
+		t.exports = function(t, e, n, o, r) {
+			return "function" == typeof t.addEventListener ? i.apply(null, arguments) :
+				"function" == typeof n ? i.bind(null, document).apply(null, arguments) : (
+					"string" == typeof t && (t = document.querySelectorAll(t)), Array.prototype.map
+					.call(t, function(t) {
+						return i(t, e, n, o, r)
+					}))
+		}
+	}, function(t, e) {
+		if ("undefined" != typeof Element && !Element.prototype.matches) {
+			var n = Element.prototype;
+			n.matches = n.matchesSelector || n.mozMatchesSelector || n.msMatchesSelector || n
+				.oMatchesSelector || n.webkitMatchesSelector
+		}
+		t.exports = function(t, e) {
+			for (; t && 9 !== t.nodeType;) {
+				if ("function" == typeof t.matches && t.matches(e)) return t;
+				t = t.parentNode
+			}
+		}
+	}])
+});
+let Types = {
+	isFunction: function(obj) {
+		var type = Object.prototype.toString.call(obj)
+		return type == '[object Function]'
+	},
+	isObject: function(obj) {
+		var type = Object.prototype.toString.call(obj)
+		return type == '[object Object]'
+	},
+	isString: function(obj) {
+		var type = Object.prototype.toString.call(obj)
+		return type == '[object String]'
+	}
+}
+uni.setClipboardData = function(options) {
+	let emptyFun = function() {}
+	let config = {
+		data: null,
+		event: null,
+		success: emptyFun,
+		fail: emptyFun,
+		complete: emptyFun
+	}
+	if (options && Types.isObject(options)) {
+		config = Object.assign({}, config, options)
+	}
+	if (options && Types.isString(options)) {
+		config = Object.assign({}, config, {
+			data: options
+		})
+	}
+	let data = config.data
+	let success = config.success || emptyFun
+	let fail = config.fail || emptyFun
+	let complete = config.complete || emptyFun
+	let e = config.event || window.event || {}
+	let cb = new ClipboardJS('.null', {
+		text: () => data
+	})
+	cb.on('success', function(res) {
+		window.__clipboard__ = data;
+		success && Types.isFunction(success) && success({
+			data: res.text
+		})
+		complete && Types.isFunction(complete) && complete()
+		cb.off('error')
+		cb.off('success')
+		cb.destroy()
+	})
+	cb.on('error', function(err) {
+		fail && Types.isFunction(fail) && fail(err)
+		complete && Types.isFunction(complete) && complete()
+		cb.off('error')
+		cb.off('success')
+		cb.destroy()
+	})
+	cb.onClick(e)
+};
+uni.getClipboardData = function(options) {
+	let emptyFun = function() {}
+	let config = {
+		data: null,
+		event: null,
+		success: emptyFun,
+		fail: emptyFun,
+		complete: emptyFun
+	}
+	if (options && Types.isObject(options)) {
+		config = Object.assign({}, config, options)
+	}
+	let success = config.success || emptyFun
+	let fail = config.fail || emptyFun
+	let complete = config.complete || emptyFun
+	if (window.__clipboard__ !== undefined) {
+		success && Types.isFunction(success) && success({
+			data: window.__clipboard__
+		})
+	} else {
+		fail && Types.isFunction(fail) && fail({
+			data: null
+		})
+	}
+	complete && Types.isFunction(complete) && complete()
+};
+
+function fileDownLoad(data) {
+	var linkElement = document.createElement('a')
+	linkElement.setAttribute('href', data.blob)
+	linkElement.setAttribute('downLoad', data.name)
+	linkElement.click()
+}
+uni.saveImageToPhotosAlbum = uni.saveVideoToPhotosAlbum = function(options) {
+	let emptyFun = function() {}
+	let config = {
+		filePath: null,
+		success: emptyFun,
+		fail: emptyFun,
+		complete: emptyFun
+	}
+	if (options && Types.isObject(options)) {
+		config = Object.assign({}, config, options)
+	}
+	if (options && Types.isString(options)) {
+		config = Object.assign({}, config, {
+			filePath: options
+		})
+	}
+	let filePath = config.filePath
+	let success = config.success || emptyFun
+	let fail = config.fail || emptyFun
+	let complete = config.complete || emptyFun
+	if (!filePath) {
+		fail && Types.isFunction(fail) && fail({
+			msg: 'no File'
+		})
+		complete && Types.isFunction(complete) && complete()
+		return
+	}
+	let names = filePath.split('/')
+	let name = names[names.length - 1]
+	uni.downloadFile({
+		url: filePath,
+		success: function(res) {
+			let tempFilePath = res.tempFilePath
+			fileDownLoad({
+				name: name,
+				blob: tempFilePath
+			})
+			success && Types.isFunction(success) && success({
+				filePath: filePath
+			})
+		},
+		fail: function(err) {
+			fail && Types.isFunction(fail) && fail({
+				msg: err
+			})
+		},
+		complete: function() {
+			complete && Types.isFunction(complete) && complete()
+		}
+	})
+}
+//#endif

+ 0 - 1
config/requestConfig.js

@@ -50,7 +50,6 @@ $http.getQnToken = function(callback) {
 
 //请求开始拦截器
 $http.requestStart = function(options) {
-
 	if (options.load) {
 		//打开加载动画
 		store.commit("setLoadingShow", true);

+ 202 - 205
manifest.json

@@ -1,207 +1,204 @@
 {
-    "name" : "晋掌柜",
-    "appid" : "__UNI__D4FE29A",
-    "description" : "保险类app",
-    "transformPx" : false,
-    "icons" : [
-        {
-            "sizes" : "分辨率,192x192",
-            "src" : "图片路径"
-        }
-    ],
-    "versionName" : "1.0.167",
-    "versionCode" : 167,
-    "app-plus" : {
-        "error" : {
-            "url" : "hybrid/html/error.html"
-        },
-        "compatible" : {
-            "ignoreVersion" : true
-        },
-        "privacy" : {
-            "prompt" : "template",
-            "template" : {
-                "title" : "平台协议和隐私协议",
-                "message" : "请你务必审慎阅读、充分理解“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/>  你可阅读<a href='http://baoxianzhanggui.com:8091/#/pages/login/xieyi'>《平台协议》</a>和<a href='http://baoxianzhanggui.com:8091/#/pages/login/mimi'>《隐私协议》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。",
-                "buttonAccept" : "同意",
-                "buttonRefuse" : "暂不同意"
-            }
-        },
-        "modules" : {
-            "Messaging" : {},
-            "OAuth" : {},
-            "Payment" : {},
-            "Share" : {},
-            "Push" : {},
-            "SQLite" : {
-                "description" : "iBeacon"
-            },
-            "Camera" : {}
-        },
-        "distribute" : {
-            "android" : {
-                "permissionPhoneState" : {
-                    "request" : "none",
-                    "prompt" : "为保证您正常、安全地使用,需要获取设备识别码(部分手机提示为获取手机号码)使用权限,请允许。"
-                },
-                "permissionExternalStorage" : {
-                    "request" : "always",
-                    "prompt" : "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。"
-                },
-                "permissions" : [
-                    "<uses-feature android:name=\"android.hardware.camera\"/>",
-                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
-                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
-                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
-                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
-                    "<uses-permission android:name=\"android.permission.INSTALL_PACKAGES\"/>",
-                    "<uses-permission android:name=\"android.permission.INTERNET\"/>",
-                    "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
-                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_SMS\"/>",
-                    "<uses-permission android:name=\"android.permission.RECEIVE_BOOT_COMPLETED\"/>",
-                    "<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
-                    "<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\"/>",
-                    "<uses-permission android:name=\"android.permission.SEND_SMS\"/>",
-                    "<uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\"/>",
-                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
-                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
-                    "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
-                    "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
-                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
-                    "<uses-permission android:name=\"android.permission.WRITE_SMS\"/>"
-                ],
-                "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ]
-            },
-            "sdkConfigs" : {
-                "ad" : {},
-                "payment" : {
-                    "alipay" : {
-                        "__platform__" : [ "android" ]
-                    },
-                    "weixin" : {
-                        "__platform__" : [ "android" ],
-                        "appid" : "wx612ca90988c46947",
-                        "UniversalLinks" : ""
-                    }
-                },
-                "share" : {
-                    "weixin" : {
-                        "appid" : "wx612ca90988c46947",
-                        "UniversalLinks" : ""
-                    }
-                },
-                "oauth" : {
-                    "weixin" : {
-                        "appid" : "wx612ca90988c46947",
-                        "appsecret" : "75b7d4cda453b2075dec23f849278bc0",
-                        "UniversalLinks" : ""
-                    }
-                },
-                "geolocation" : {
-                    "amap" : {
-                        "__platform__" : [ "android" ],
-                        "appkey_ios" : "",
-                        "appkey_android" : "64ee5a3ca75539df3775271fa987e8bc"
-                    }
-                },
-                "push" : {
-                    "unipush" : {
-                        "appid" : "YDcU8mcWRO6MWIT1i4naP2",
-                        "appkey" : "DK2LTzhnc87pFFFhcTSgs8",
-                        "appsecret" : "wTUMKWB4ReAoPyCp7Jyaz9"
-                    }
-                },
-                "maps" : {}
-            },
-            "icons" : {
-                "android" : {
-                    "hdpi" : "unpackage/res/icons/72x72.png",
-                    "xhdpi" : "unpackage/res/icons/96x96.png",
-                    "xxhdpi" : "unpackage/res/icons/144x144.png",
-                    "xxxhdpi" : "unpackage/res/icons/192x192.png"
-                },
-                "ios" : {
-                    "appstore" : "unpackage/res/icons/1024x1024.png",
-                    "ipad" : {
-                        "app" : "unpackage/res/icons/76x76.png",
-                        "app@2x" : "unpackage/res/icons/152x152.png",
-                        "notification" : "unpackage/res/icons/20x20.png",
-                        "notification@2x" : "unpackage/res/icons/40x40.png",
-                        "proapp@2x" : "unpackage/res/icons/167x167.png",
-                        "settings" : "unpackage/res/icons/29x29.png",
-                        "settings@2x" : "unpackage/res/icons/58x58.png",
-                        "spotlight" : "unpackage/res/icons/40x40.png",
-                        "spotlight@2x" : "unpackage/res/icons/80x80.png"
-                    },
-                    "iphone" : {
-                        "app@2x" : "unpackage/res/icons/120x120.png",
-                        "app@3x" : "unpackage/res/icons/180x180.png",
-                        "notification@2x" : "unpackage/res/icons/40x40.png",
-                        "notification@3x" : "unpackage/res/icons/60x60.png",
-                        "settings@2x" : "unpackage/res/icons/58x58.png",
-                        "settings@3x" : "unpackage/res/icons/87x87.png",
-                        "spotlight@2x" : "unpackage/res/icons/80x80.png",
-                        "spotlight@3x" : "unpackage/res/icons/120x120.png"
-                    }
-                }
-            },
-            "splashscreen" : {
-                "androidStyle" : "common"
-            },
-            "ios" : {
-                "dSYMs" : false
-            }
-        },
-        "compilerVersion" : 3,
-        "nvueLaunchMode" : "fast",
-        "splashscreen" : {
-            "alwaysShowBeforeRender" : true
-        }
-    },
-    // 5+App特有相关
-    "quickapp" : {},
-    // 快应用特有相关
-    "mp-weixin" : {
-        "setting" : {
-            "urlCheck" : false,
-            "es6" : false,
-            "postcss" : false,
-            "minified" : false
-        },
-        "usingComponents" : true,
-        "appid" : "wxe57ddfbe230bcfba",
-        "permission" : {}
-    },
-    "h5" : {
-        "template" : "template.h5.html",
-        "router" : {
-            "mode" : "hash",
-            "base" : "./"
-        },
-        "optimization" : {
-            "treeShaking" : {
-                "enable" : true
-            }
-        },
-        "devServer" : {
-            "https" : false,
-            "port" : 80
-        },
-        "sdkConfigs" : {
-            "maps" : {}
-        }
-    }
+	"name": "晋掌柜",
+	"appid": "__UNI__D4FE29A",
+	"description": "保险类app",
+	"transformPx": false,
+	"icons": [{
+		"sizes": "分辨率,192x192",
+		"src": "图片路径"
+	}],
+	"versionName": "1.0.171",
+	"versionCode": 171,
+	"app-plus": {
+		"error": {
+			"url": "hybrid/html/error.html"
+		},
+		"compatible": {
+			"ignoreVersion": true
+		},
+		"privacy": {
+			"prompt": "template",
+			"template": {
+				"title": "平台协议和隐私协议",
+				"message": "请你务必审慎阅读、充分理解“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/>  你可阅读<a href='http://baoxianzhanggui.com:8091/#/pages/login/xieyi'>《平台协议》</a>和<a href='http://baoxianzhanggui.com:8091/#/pages/login/mimi'>《隐私协议》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。",
+				"buttonAccept": "同意",
+				"buttonRefuse": "暂不同意"
+			}
+		},
+		"modules": {
+			"Messaging": {},
+			"OAuth": {},
+			"Payment": {},
+			"Share": {},
+			"Push": {},
+			"SQLite": {
+				"description": "iBeacon"
+			},
+			"Camera": {}
+		},
+		"distribute": {
+			"android": {
+				"permissionPhoneState": {
+					"request": "none",
+					"prompt": "为保证您正常、安全地使用,需要获取设备识别码(部分手机提示为获取手机号码)使用权限,请允许。"
+				},
+				"permissionExternalStorage": {
+					"request": "always",
+					"prompt": "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。"
+				},
+				"permissions": [
+					"<uses-feature android:name=\"android.hardware.camera\"/>",
+					"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
+					"<uses-permission android:name=\"android.permission.CAMERA\"/>",
+					"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+					"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+					"<uses-permission android:name=\"android.permission.INSTALL_PACKAGES\"/>",
+					"<uses-permission android:name=\"android.permission.INTERNET\"/>",
+					"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
+					"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+					"<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
+					"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+					"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.READ_SMS\"/>",
+					"<uses-permission android:name=\"android.permission.RECEIVE_BOOT_COMPLETED\"/>",
+					"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
+					"<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\"/>",
+					"<uses-permission android:name=\"android.permission.SEND_SMS\"/>",
+					"<uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\"/>",
+					"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+					"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+					"<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
+					"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
+					"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
+					"<uses-permission android:name=\"android.permission.WRITE_SMS\"/>"
+				],
+				"abiFilters": ["armeabi-v7a", "arm64-v8a", "x86"]
+			},
+			"sdkConfigs": {
+				"ad": {},
+				"payment": {
+					"alipay": {
+						"__platform__": ["android"]
+					},
+					"weixin": {
+						"__platform__": ["android"],
+						"appid": "wx612ca90988c46947",
+						"UniversalLinks": ""
+					}
+				},
+				"share": {
+					"weixin": {
+						"appid": "wx612ca90988c46947",
+						"UniversalLinks": ""
+					}
+				},
+				"oauth": {
+					"weixin": {
+						"appid": "wx612ca90988c46947",
+						"appsecret": "75b7d4cda453b2075dec23f849278bc0",
+						"UniversalLinks": ""
+					}
+				},
+				"geolocation": {
+					"amap": {
+						"__platform__": ["android"],
+						"appkey_ios": "",
+						"appkey_android": "64ee5a3ca75539df3775271fa987e8bc"
+					}
+				},
+				"push": {
+					"unipush": {
+						"appid": "YDcU8mcWRO6MWIT1i4naP2",
+						"appkey": "DK2LTzhnc87pFFFhcTSgs8",
+						"appsecret": "wTUMKWB4ReAoPyCp7Jyaz9"
+					}
+				},
+				"maps": {}
+			},
+			"icons": {
+				"android": {
+					"hdpi": "unpackage/res/icons/72x72.png",
+					"xhdpi": "unpackage/res/icons/96x96.png",
+					"xxhdpi": "unpackage/res/icons/144x144.png",
+					"xxxhdpi": "unpackage/res/icons/192x192.png"
+				},
+				"ios": {
+					"appstore": "unpackage/res/icons/1024x1024.png",
+					"ipad": {
+						"app": "unpackage/res/icons/76x76.png",
+						"app@2x": "unpackage/res/icons/152x152.png",
+						"notification": "unpackage/res/icons/20x20.png",
+						"notification@2x": "unpackage/res/icons/40x40.png",
+						"proapp@2x": "unpackage/res/icons/167x167.png",
+						"settings": "unpackage/res/icons/29x29.png",
+						"settings@2x": "unpackage/res/icons/58x58.png",
+						"spotlight": "unpackage/res/icons/40x40.png",
+						"spotlight@2x": "unpackage/res/icons/80x80.png"
+					},
+					"iphone": {
+						"app@2x": "unpackage/res/icons/120x120.png",
+						"app@3x": "unpackage/res/icons/180x180.png",
+						"notification@2x": "unpackage/res/icons/40x40.png",
+						"notification@3x": "unpackage/res/icons/60x60.png",
+						"settings@2x": "unpackage/res/icons/58x58.png",
+						"settings@3x": "unpackage/res/icons/87x87.png",
+						"spotlight@2x": "unpackage/res/icons/80x80.png",
+						"spotlight@3x": "unpackage/res/icons/120x120.png"
+					}
+				}
+			},
+			"splashscreen": {
+				"androidStyle": "common"
+			},
+			"ios": {
+				"dSYMs": false
+			}
+		},
+		"compilerVersion": 3,
+		"nvueLaunchMode": "fast",
+		"splashscreen": {
+			"alwaysShowBeforeRender": true
+		}
+	},
+	// 5+App特有相关
+	"quickapp": {},
+	// 快应用特有相关
+	"mp-weixin": {
+		"setting": {
+			"urlCheck": false,
+			"es6": false,
+			"postcss": false,
+			"minified": false
+		},
+		"usingComponents": true,
+		"appid": "wxe57ddfbe230bcfba",
+		"permission": {}
+	},
+	"h5": {
+		"template": "template.h5.html",
+		"router": {
+			"mode": "hash",
+			"base": "./"
+		},
+		"optimization": {
+			"treeShaking": {
+				"enable": true
+			}
+		},
+		"devServer": {
+			"https": false,
+			"port": 80
+		},
+		"sdkConfigs": {
+			"maps": {}
+		}
+	}
 }
-// 小程序特有相关
-
+// 小程序特有相关

+ 13 - 13
node_modules/uview-ui/components/u-number-box/u-number-box.vue

@@ -1,24 +1,24 @@
 <template>
 	<view class="u-numberbox">
-		<view class="u-icon-minus" @touchstart.stop.prevent="btnTouchStart('minus')" @touchend.stop.prevent="clearTimer" :class="{ 'u-icon-disabled': disabled || inputVal <= min }"
-		    :style="{
+		<view class="u-icon-minus" @touchstart.stop.prevent="btnTouchStart('minus')" @touchend.stop.prevent="clearTimer"
+			:class="{ 'u-icon-disabled': disabled || inputVal <= min }" :style="{
 				background: bgColor,
 				height: inputHeight + 'rpx',
 				color: color
 			}">
 			<u-icon name="minus" :size="size"></u-icon>
 		</view>
-		<input :disabled="disabledInput || disabled" :cursor-spacing="getCursorSpacing" :class="{ 'u-input-disabled': disabled }"
-		    v-model="inputVal" class="u-number-input" @blur="onBlur" @focus="onFocus"
-		    type="number" :style="{
+		<input :disabled="disabledInput || disabled" :cursor-spacing="getCursorSpacing"
+			:class="{ 'u-input-disabled': disabled }" v-model="inputVal" class="u-number-input" @blur="onBlur"
+			@focus="onFocus" type="number" :style="{
 				color: color,
 				fontSize: size + 'rpx',
 				background: bgColor,
 				height: inputHeight + 'rpx',
 				width: inputWidth + 'rpx'
 			}" />
-		<view class="u-icon-plus" @touchstart.stop.prevent="btnTouchStart('plus')" @touchend.stop.prevent="clearTimer" :class="{ 'u-icon-disabled': disabled || inputVal >= max }"
-		    :style="{
+		<view class="u-icon-plus" @touchstart.stop.prevent="btnTouchStart('plus')" @touchend.stop.prevent="clearTimer"
+			:class="{ 'u-icon-disabled': disabled || inputVal >= max }" :style="{
 				background: bgColor,
 				height: inputHeight + 'rpx',
 				color: color
@@ -143,12 +143,12 @@
 		watch: {
 			value(v1, v2) {
 				// 只有value的改变是来自外部的时候,才去同步inputVal的值,否则会造成循环错误
-				if(!this.changeFromInner) {
+				if (!this.changeFromInner) {
 					this.inputVal = v1;
 					// 因为inputVal变化后,会触发this.handleChange(),在其中changeFromInner会再次被设置为true,
 					// 造成外面修改值,也导致被认为是内部修改的混乱,这里进行this.$nextTick延时,保证在运行周期的最后处
 					// 将changeFromInner设置为false
-					this.$nextTick(function(){
+					this.$nextTick(function() {
 						this.changeFromInner = false;
 					})
 				}
@@ -162,9 +162,9 @@
 				if (tmp && v1 >= this.min && v1 <= this.max) value = v1;
 				else value = v2;
 				// 判断是否只能输入大于等于0的整数
-				if(this.positiveInteger) {
+				if (this.positiveInteger) {
 					// 小于0,或者带有小数点,
-					if(v1 < 0 || String(v1).indexOf('.') !== -1) {
+					if (v1 < 0 || String(v1).indexOf('.') !== -1) {
 						value = v2;
 						// 双向绑定input的值,必须要使用$nextTick修改显示的值
 						this.$nextTick(() => {
@@ -295,7 +295,7 @@
 			handleChange(value, type) {
 				if (this.disabled) return;
 				// 清除定时器,避免造成混乱
-				if(this.innerChangeTimer) {
+				if (this.innerChangeTimer) {
 					clearTimeout(this.innerChangeTimer);
 					this.innerChangeTimer = null;
 				}
@@ -360,4 +360,4 @@
 		color: #c8c9cc !important;
 		background-color: #f2f3f5 !important;
 	}
-</style>
+</style>

+ 292 - 244
pages/carInsure1/carInfo1.vue

@@ -134,6 +134,11 @@
 						<switch style="transform: scale(0.6)" @change="isChangeDelisting" />
 					</view>
 				</uni-forms-item>
+				<uni-forms-item required label="是否二手车: ">
+					<view class="d-flex j-end">
+						<switch style="transform: scale(0.6)" @change="isChangeUsedCar" />
+					</view>
+				</uni-forms-item>
 			</uni-forms>
 		</uni-group>
 		<uni-group title="" top="10">
@@ -488,6 +493,16 @@
 			checkImageInfo,
 			previewImage
 		},
+		watch: {
+			"carInfo.frameNo": {
+				handler(val) {
+					if (val) {
+						this.carInfo.vinNo = val;
+					}
+				},
+				deep: true
+			},
+		},
 		data() {
 			return {
 				form: {
@@ -576,6 +591,7 @@
 					carnature: "02", //使用性质 家庭自用8A  非营业企业8B   非营业党政机关,事业团体8C  非营业货车8D					
 					property: "1", //所属性质 1个人 2企业 3个人
 					outOfInsurance: false, //脱保
+					secondhandcarflag: false, //二手车
 					vehicleUse: "05" //车辆用途
 				},
 				carInfo1: {
@@ -976,81 +992,89 @@
 						count: 1,
 						sizeType: ['compressed']
 					});
-					this.lodingshow = true;
-					this.carfrontImg = chooseImageRes.tempFilePaths[0];
-					uni.uploadFile({
-						url: this.$base.baseUrl + '/ins/taskImage/uploadFile',
-						filePath: this.carfrontImg,
-						name: "multipartFile",
-						formData: {
-							'type': 'image',
-						},
-						header: {
-							Authorization: this.token,
-						},
-						success: (imgRes) => {
-							let data = JSON.parse(imgRes.data);
-							if (data.code == '200') {
-								if (this.carInfoPositiveList.some(v => v.imageType == 'C01')) {
-									this.carInfoPositiveList.map(val => {
-										if (val.imageType == 'C01') {
-											val.imageId = data.data.id;
-										}
-									})
-								} else {
-									this.carInfoPositiveList.push({
-										imageId: data.data.id,
-										imageType: "C01",
-									})
-								}
-								uni.uploadFile({
-									url: this.$base.baseUrl + '/order/identify/drivingPermit',
-									filePath: this.carfrontImg,
-									name: "image1",
-									header: {
-										Authorization: this.token,
-									},
-									success: (uploadFileRes) => {
-										let data = JSON.parse(uploadFileRes.data).data;
-										let rdate = '';
-										if (!!data.carInfo.registerDate) {
-											rdate = data.carInfo.registerDate.substr(0, 4) +
-												'-' + data.carInfo
-												.registerDate.substr(4, 2) + '-' + data.carInfo
-												.registerDate
-												.substr(6,
-													2)
-										}
-										let isdate = '';
-										if (!!data.carInfo.issueDate) {
-											isdate = data.carInfo.issueDate.substr(0, 4) +
-												'-' + data.carInfo
-												.issueDate.substr(4, 2) + '-' + data.carInfo
-												.issueDate.substr(6, 2)
-										}
-										this.ownerInfo.name = data.carInfo.carOwner; //车主
-										this.carfront = {
-											carOwner: data.carInfo.carOwner, //车主
-											licenseNo: data.carInfo.plateNo, //车牌号
-											modelcname: data.carInfo.backOcrID, //品牌型号
-											frameNo: data.carInfo.vin, //车架号
-											engineNo: data.carInfo.engine, //发动机号
-											vinNo: data.carInfo.vin, //车架号
-											issueDate: isdate, //发证日期
-											registerDate: rdate, //注册日期
-											cimodelclass: data.carInfo.motorTypeCode,
-											carnature: data.carInfo.motorUsageTypeCode,
+					if (chooseImageRes) {
+						this.lodingshow = true;
+						this.carfrontImg = chooseImageRes.tempFilePaths[0];
+						uni.uploadFile({
+							url: this.$base.baseUrl + '/ins/taskImage/uploadFile',
+							filePath: this.carfrontImg,
+							name: "multipartFile",
+							formData: {
+								'type': 'image',
+							},
+							header: {
+								Authorization: this.token,
+							},
+							success: (imgRes) => {
+								let data = JSON.parse(imgRes.data);
+								if (data.code == '200') {
+									if (this.carInfoPositiveList.some(v => v.imageType == 'C01')) {
+										this.carInfoPositiveList.map(val => {
+											if (val.imageType == 'C01') {
+												val.imageId = data.data.id;
+											}
+										})
+									} else {
+										this.carInfoPositiveList.push({
+											imageId: data.data.id,
+											imageType: "C01",
+										})
+									}
+									uni.uploadFile({
+										url: this.$base.baseUrl + '/order/identify/drivingPermit',
+										filePath: this.carfrontImg,
+										name: "image1",
+										header: {
+											Authorization: this.token,
+										},
+										success: (uploadFileRes) => {
+											let data = JSON.parse(uploadFileRes.data).data;
+											let rdate = '';
+											if (!!data.carInfo.registerDate) {
+												rdate = data.carInfo.registerDate.substr(0,
+														4) +
+													'-' + data.carInfo
+													.registerDate.substr(4, 2) + '-' + data
+													.carInfo
+													.registerDate
+													.substr(6,
+														2)
+											}
+											let isdate = '';
+											if (!!data.carInfo.issueDate) {
+												isdate = data.carInfo.issueDate.substr(0, 4) +
+													'-' + data.carInfo
+													.issueDate.substr(4, 2) + '-' + data
+													.carInfo
+													.issueDate.substr(6, 2)
+											}
+											this.ownerInfo.name = data.carInfo.carOwner; //车主
+											this.carfront = {
+												carOwner: data.carInfo.carOwner, //车主
+												licenseNo: data.carInfo.plateNo, //车牌号
+												modelcname: data.carInfo.backOcrID, //品牌型号
+												frameNo: data.carInfo.vin, //车架号
+												engineNo: data.carInfo.engine, //发动机号
+												vinNo: data.carInfo.vin, //车架号
+												issueDate: isdate, //发证日期
+												registerDate: rdate, //注册日期
+												cimodelclass: data.carInfo.motorTypeCode,
+												carnature: data.carInfo.motorUsageTypeCode,
 
+											}
+											this.lodingshow = false;
 										}
-										this.lodingshow = false;
-									}
 
-								});
+									});
+
+								}
 
 							}
+						});
+					} else {
+						this.lodingshow = false;
+					}
 
-						}
-					});
 				}
 			},
 			//行驶证反面
@@ -1065,58 +1089,63 @@
 						count: 1,
 						sizeType: ['compressed']
 					});
-					this.lodingshow = true;
-					this.carbackImg = chooseImageRes.tempFilePaths[0];
-					uni.uploadFile({
-						url: this.$base.baseUrl + '/ins/taskImage/uploadFile',
-						filePath: this.carbackImg,
-						name: "multipartFile",
-						formData: {
-							'type': 'image',
-						},
-						header: {
-							Authorization: this.token,
-						},
-						success: (imgRes) => {
-							let data = JSON.parse(imgRes.data);
-							if (data.code == '200') {
-								if (this.carInfoPositiveList.some(v => v.imageType == 'D01')) {
-									this.carInfoPositiveList.map(val => {
-										if (val.imageType == 'D01') {
-											val.imageId = data.data.id;
+					if (chooseImageRes) {
+						this.lodingshow = true;
+						this.carbackImg = chooseImageRes.tempFilePaths[0];
+						uni.uploadFile({
+							url: this.$base.baseUrl + '/ins/taskImage/uploadFile',
+							filePath: this.carbackImg,
+							name: "multipartFile",
+							formData: {
+								'type': 'image',
+							},
+							header: {
+								Authorization: this.token,
+							},
+							success: (imgRes) => {
+								let data = JSON.parse(imgRes.data);
+								if (data.code == '200') {
+									if (this.carInfoPositiveList.some(v => v.imageType == 'D01')) {
+										this.carInfoPositiveList.map(val => {
+											if (val.imageType == 'D01') {
+												val.imageId = data.data.id;
+											}
+										})
+									} else {
+										this.carInfoPositiveList.push({
+											imageId: data.data.id,
+											imageType: "D01",
+										})
+									}
+									uni.uploadFile({
+										url: this.$base.baseUrl + '/order/identify/drivingPermit',
+										filePath: this.carbackImg,
+										name: "image2",
+										header: {
+											Authorization: this.token,
+										},
+										success: (uploadFileRes) => {
+											let data1 = JSON.parse(uploadFileRes.data).data;
+											this.carback = {
+												vehicleweight: data1.carInfo
+													.grossMass, //总质量
+												completeKerbMass: data1.carInfo
+													.unladenMass, //整备质量
+												seatCount: data1.carInfo
+													.approvedPassengersCapacity, //核定载客数
+											}
+											this.lodingshow = false;
 										}
-									})
-								} else {
-									this.carInfoPositiveList.push({
-										imageId: data.data.id,
-										imageType: "D01",
-									})
+
+									});
 								}
-								uni.uploadFile({
-									url: this.$base.baseUrl + '/order/identify/drivingPermit',
-									filePath: this.carbackImg,
-									name: "image2",
-									header: {
-										Authorization: this.token,
-									},
-									success: (uploadFileRes) => {
-										let data1 = JSON.parse(uploadFileRes.data).data;
-										this.carback = {
-											vehicleweight: data1.carInfo
-												.grossMass, //总质量
-											completeKerbMass: data1.carInfo
-												.unladenMass, //整备质量
-											seatCount: data1.carInfo
-												.approvedPassengersCapacity, //核定载客数
-										}
-										this.lodingshow = false;
-									}
 
-								});
 							}
+						});
+					} else {
+						this.lodingshow = false;
+					}
 
-						}
-					});
 				}
 			},
 			//身份证正面
@@ -1131,58 +1160,64 @@
 						count: 1,
 						sizeType: ['compressed']
 					});
-					this.lodingshow = true;
-					this.userfrontImg = chooseImageRes.tempFilePaths[0];
-					uni.uploadFile({
-						url: this.$base.baseUrl + '/order/identify/idCard',
-						filePath: this.userfrontImg,
-						name: "multipartFile",
-						formData: {
-							'type': 'image',
-						},
-						header: {
-							Authorization: this.token,
-						},
-						success: (imgRes) => {
-							let data = JSON.parse(imgRes.data);
-							if (data.code == '200') {
-								let type = 'C0' + this.checkIndex;
-								if (this[this.checkType + 'PositiveList'].some(v => v.imageType == type)) {
-									this[this.checkType + 'PositiveList'].map(val => {
-										if (val.imageType == type) {
-											val.imageId = data.data.id;
+					if (chooseImageRes) {
+						this.lodingshow = true;
+						this.userfrontImg = chooseImageRes.tempFilePaths[0];
+						uni.uploadFile({
+							url: this.$base.baseUrl + '/ins/taskImage/uploadFile',
+							filePath: this.userfrontImg,
+							name: "multipartFile",
+							formData: {
+								'type': 'image',
+							},
+							header: {
+								Authorization: this.token,
+							},
+							success: (imgRes) => {
+								let data = JSON.parse(imgRes.data);
+								if (data.code == '200') {
+									let type = 'C0' + this.checkIndex;
+									if (this[this.checkType + 'PositiveList'].some(v => v.imageType ==
+											type)) {
+										this[this.checkType + 'PositiveList'].map(val => {
+											if (val.imageType == type) {
+												val.imageId = data.data.id;
+											}
+										})
+									} else {
+										this[this.checkType + 'PositiveList'].push({
+											imageId: data.data.id,
+											imageType: type,
+										})
+									}
+									uni.uploadFile({
+										url: this.$base.baseUrl + '/order/identify/idCard',
+										filePath: this.userfrontImg,
+										name: "image1",
+										header: {
+											Authorization: this.token,
+										},
+										success: (uploadFileRes) => {
+											let data = JSON.parse(uploadFileRes.data).data;
+											this.userfront = {
+												age: getAgeByIdCard(data.customerInfo
+													.identifyNumber),
+												name: data.customerInfo.name,
+												identifyNumber: data.customerInfo
+													.identifyNumber,
+												addr: data.customerInfo.addr,
+											}
+											this.lodingshow = false;
 										}
-									})
-								} else {
-									this[this.checkType + 'PositiveList'].push({
-										imageId: data.data.id,
-										imageType: type,
-									})
+									});
 								}
-								uni.uploadFile({
-									url: this.$base.baseUrl + '/order/identify/idCard',
-									filePath: this.userfrontImg,
-									name: "image1",
-									header: {
-										Authorization: this.token,
-									},
-									success: (uploadFileRes) => {
-										let data = JSON.parse(uploadFileRes.data).data;
-										this.userfront = {
-											age: getAgeByIdCard(data.customerInfo
-												.identifyNumber),
-											name: data.customerInfo.name,
-											identifyNumber: data.customerInfo
-												.identifyNumber,
-											addr: data.customerInfo.addr,
-										}
-										this.lodingshow = false;
-									}
-								});
+
 							}
+						});
+					} else {
+						this.lodingshow = false;
+					}
 
-						}
-					});
 				}
 			},
 			//身份证反面
@@ -1197,89 +1232,94 @@
 						count: 1,
 						sizeType: ['compressed']
 					});
-					this.lodingshow = true;
-					this.userbackImg = chooseImageRes.tempFilePaths[0];
-					uni.uploadFile({
-						url: this.$base.baseUrl + '/order/identify/idCard',
-						filePath: this.userbackImg,
-						name: "multipartFile",
-						formData: {
-							'type': 'image',
-						},
-						header: {
-							Authorization: this.token,
-						},
-						success: (imgRes) => {
-							let data = JSON.parse(imgRes.data);
-							if (data.code == '200') {
-								let type = 'D0' + this.checkIndex;
-								if (this[this.checkType + 'PositiveList'].some(v => v.imageType == type)) {
-									this[this.checkType + 'PositiveList'].map(val => {
-										if (val.imageType == type) {
-											val.imageId = data.data.id;
+					if (chooseImageRes) {
+						this.lodingshow = true;
+						this.userbackImg = chooseImageRes.tempFilePaths[0];
+						uni.uploadFile({
+							url: this.$base.baseUrl + '/ins/taskImage/uploadFile',
+							filePath: this.userbackImg,
+							name: "multipartFile",
+							formData: {
+								'type': 'image',
+							},
+							header: {
+								Authorization: this.token,
+							},
+							success: (imgRes) => {
+								let data = JSON.parse(imgRes.data);
+								if (data.code == '200') {
+									let type = 'D0' + this.checkIndex;
+									if (this[this.checkType + 'PositiveList'].some(v => v.imageType ==
+											type)) {
+										this[this.checkType + 'PositiveList'].map(val => {
+											if (val.imageType == type) {
+												val.imageId = data.data.id;
+											}
+										})
+									} else {
+										this[this.checkType + 'PositiveList'].push({
+											imageId: data.data.id,
+											imageType: type,
+										})
+									}
+									uni.uploadFile({
+										url: this.$base.baseUrl +
+											'/order/identify/idCard',
+										filePath: this.userbackImg,
+										name: "image2",
+										header: {
+											Authorization: this.token,
+										},
+										success: (uploadFileRes) => {
+											let data1 = JSON.parse(uploadFileRes.data).data;
+											let identifyValidDate = '';
+											if (!!data1.customerInfo
+												.identifyValidDate) {
+												identifyValidDate = data1
+													.customerInfo
+													.identifyValidDate
+													.substr(0, 4) +
+													'-' + data1
+													.customerInfo
+													.identifyValidDate
+													.substr(4, 2) + '-' +
+													data1
+													.customerInfo
+													.identifyValidDate
+													.substr(6,
+														2)
+											}
+											let identifyValidEndDate = '';
+											if (!!data1.customerInfo
+												.identifyValidEndDate) {
+												identifyValidEndDate =
+													data1.customerInfo
+													.identifyValidEndDate
+													.substr(0,
+														4) + '-' + data1
+													.customerInfo
+													.identifyValidEndDate
+													.substr(4, 2) + '-' +
+													data1
+													.customerInfo
+													.identifyValidEndDate
+													.substr(6, 2)
+											}
+											this.userback = {
+												identifyValidDate: identifyValidDate, //起期
+												identifyValidEndDate: identifyValidEndDate, //止期
+											}
+											this.lodingshow = false;
 										}
-									})
-								} else {
-									this[this.checkType + 'PositiveList'].push({
-										imageId: data.data.id,
-										imageType: type,
-									})
+									});
+
 								}
-								uni.uploadFile({
-									url: this.$base.baseUrl +
-										'/order/identify/idCard',
-									filePath: this.userbackImg,
-									name: "image2",
-									header: {
-										Authorization: this.token,
-									},
-									success: (uploadFileRes) => {
-										let data1 = JSON.parse(uploadFileRes.data).data;
-										let identifyValidDate = '';
-										if (!!data1.customerInfo
-											.identifyValidDate) {
-											identifyValidDate = data1
-												.customerInfo
-												.identifyValidDate
-												.substr(0, 4) +
-												'-' + data1
-												.customerInfo
-												.identifyValidDate
-												.substr(4, 2) + '-' +
-												data1
-												.customerInfo
-												.identifyValidDate
-												.substr(6,
-													2)
-										}
-										let identifyValidEndDate = '';
-										if (!!data1.customerInfo
-											.identifyValidEndDate) {
-											identifyValidEndDate =
-												data1.customerInfo
-												.identifyValidEndDate
-												.substr(0,
-													4) + '-' + data1
-												.customerInfo
-												.identifyValidEndDate
-												.substr(4, 2) + '-' +
-												data1
-												.customerInfo
-												.identifyValidEndDate
-												.substr(6, 2)
-										}
-										this.userback = {
-											identifyValidDate: identifyValidDate, //起期
-											identifyValidEndDate: identifyValidEndDate, //止期
-										}
-										this.lodingshow = false;
-									}
-								});
 
 							}
-
-						}
-					});
+						});
+					} else {
+						this.lodingshow = false;
+					}
 				}
 			},
 			CarOCRconfirm() {
@@ -1373,6 +1413,15 @@
 					this.carInfo.outOfInsurance = false;
 				}
 			},
+			//是否二手车
+			isChangeUsedCar(e) {
+				if (e.detail.value) {
+					this.carInfo.secondhandcarflag = true;
+
+				} else {
+					this.carInfo.secondhandcarflag = false;
+				}
+			},
 			//长期
 			insureLongterm(checked, e) {
 				checked.detail.value == true ? this[e].identifyValidEndDate = "9999-12-31" : this[e]
@@ -1395,7 +1444,6 @@
 			},
 			//同车主信息
 			syncPersonInfo(e, type, touch1, touch2, touch3) {
-				console.log(e, type, touch1, touch2, touch3)
 				this[type] = e.detail.value;
 				this[touch1 + 'IdentifyIndex'] = this[touch2 + 'IdentifyIndex'];
 				if (this[type]) {

+ 512 - 50
pages/carInsure1/quote1.vue

@@ -50,28 +50,28 @@
 								</template>
 							</block>
 						</template>
-						<view class="dis j-s a-c">
+						<view class="dis j-s a-c" v-if="jqstartDate">
 							<view style="margin-right: 40px;">交强起保日期:</view>
 							<u-input type="select" :select-open="jqstartShow" v-model="jqstartDate"
 								@click="jqstartShow = true" style="width: 100px;"></u-input>
 							<u-picker v-model="jqstartShow" mode="time" :params="params"
 								@confirm="jqstartconfirm"></u-picker>
 						</view>
-						<view class="dis j-s a-c">
+						<view class="dis j-s a-c" v-if="jqendDate">
 							<view style="margin-right: 40px;">交强终保日期:</view>
 							<u-input type="select" :select-open="jqendShow" v-model="jqendDate"
 								@click="jqendShow = true" style="width: 100px;"></u-input>
 							<u-picker v-model="jqendShow" mode="time" :params="params"
 								@confirm="jqendconfirm"></u-picker>
 						</view>
-						<view class="dis j-s a-c">
+						<view class="dis j-s a-c" v-if="systartDate">
 							<view style="margin-right: 40px;">商业起保日期:</view>
 							<u-input type="select" :select-open="systartShow" v-model="systartDate"
 								@click="systartShow = true" style="width: 100px;"></u-input>
 							<u-picker v-model="systartShow" mode="time" :params="params"
 								@confirm="systartconfirm"></u-picker>
 						</view>
-						<view class="dis j-s a-c">
+						<view class="dis j-s a-c" v-if="syendDate">
 							<view style="margin-right: 40px;">商业终保日期:</view>
 							<u-input type="select" :select-open="syendShow" v-model="syendDate"
 								@click="syendShow = true" style="width: 100px;"></u-input>
@@ -126,6 +126,7 @@
 									<text v-if="totalitem.result.jqPremium"
 										style="margin: 0 5px;">商业险:¥{{totalitem.result.syPremium}}</text>
 									<text>车船税:¥{{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"
 									style="font-size: 12px;color: #6495ed;border-top: 1px solid #f2f2f2;">
@@ -144,10 +145,11 @@
 									<text v-if="totalitem.result.accidentInfoStr">出险信息:{{ totalitem.result.accidentInfoStr ?
 				  totalitem.result.accidentInfoStr : '无' }}</text>
 								</view>
-								<text v-if="totalitem.result.tips" style="color: red;">{{ totalitem.result.tips}}</text>
+								<text v-if="totalitem.result.tips && totalitem.namesimple == '众安财险'"
+									style="color: red;">{{ totalitem.result.tips}}</text>
 								<view class="" v-if="totalitem.checked">
 									<u-form-item label="报价协议选择" :prop="totalitem.agreementId" label-width="200"
-										:border-bottom='false' style="width: 250px;padding: 0;">
+										:border-bottom='false' style="width: 280px;padding: 0;">
 										<u-input type="select" :select-open="totalitem.selectShow"
 											v-model="totalitem.agreementName" placeholder="请选择协议"
 											@click="totalitem.selectShow = true"></u-input>
@@ -156,6 +158,69 @@
 											@confirm="val=>selectConfirm(val,totalindex)"></u-select>
 									</u-form-item>
 								</view>
+								<template
+									v-if="totalitem.namesimple == '中国人寿' && totalitem.checked && totalitem.agreementId && renshouaccidentalDrivingVo.id">
+									<view class="accident-style dis f-c ">
+										<view class=" accident-ins dis a-c j-s">
+											<u-checkbox shape="circle" size="30" v-model="totalitem.jychecked"
+												@change="RScheckboxChange($event,totalindex)"
+												active-color="rgb(255, 170, 0)"></u-checkbox>
+											<view class=" dis a-c j-s " @click="renshouPopupshow=true">
+												<text
+													style="font-size: 14px;">{{renshouaccidentalDrivingVo.productName}}</text>
+												<u-icon name="arrow-right" style="color: #999;" size="24"></u-icon>
+											</view>
+										</view>
+										<view class=" dis j-s a-c">
+											<text style="font-size: 14px;">份数:</text>
+											<u-number-box v-model="renshouaccidentalDrivingVo.quantity" :min="1"
+												:max="100" :input-width="70" :input-height="44"
+												size="26"></u-number-box>
+										</view>
+									</view>
+								</template>
+								<template
+									v-if="totalitem.namesimple == '恒邦财险' && totalitem.checked && totalitem.agreementId && hengbangaccidentalDrivingVo.programcode">
+									<view class="accident-style dis f-c ">
+										<view class=" accident-ins dis a-c j-s">
+											<u-checkbox shape="circle" size="30" v-model="totalitem.jychecked"
+												@change="HBcheckboxChange($event,totalindex)"
+												active-color="rgb(255, 170, 0)"></u-checkbox>
+											<view class=" dis a-c j-s " @click="hengbangPopupshow=true">
+												<text
+													style="font-size: 14px;">{{hengbangaccidentalDrivingVo.programname}}</text>
+												<u-icon name="arrow-right" style="color: #999;" size="24"></u-icon>
+											</view>
+										</view>
+										<view class=" dis j-s a-c">
+											<text style="font-size: 14px;">份数:</text>
+											<u-number-box v-model="hengbangaccidentalDrivingVo.quantity" :min="1"
+												:max="100" :input-width="70" :input-height="44"
+												size="26"></u-number-box>
+										</view>
+									</view>
+								</template>
+								<template
+									v-if="totalitem.namesimple == '众安财险' && totalitem.checked && totalitem.agreementId && zhonganaccidentalDrivingVo.combination">
+									<view class="accident-style dis f-c ">
+										<view class=" accident-ins dis a-c j-s">
+											<u-checkbox shape="circle" size="30" v-model="totalitem.jychecked"
+												@change="ZAcheckboxChange($event,totalindex)"
+												active-color="rgb(255, 170, 0)"></u-checkbox>
+											<view class=" dis a-c j-s " @click="zhonganPopupshow=true">
+												<text
+													style="font-size: 14px;">{{zhonganaccidentalDrivingVo.name}}</text>
+												<u-icon name="arrow-right" style="color: #999;" size="24"></u-icon>
+											</view>
+										</view>
+										<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"
+												size="26"></u-number-box>
+										</view>
+									</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"
@@ -175,6 +240,7 @@
 			</view>
 		</view>
 		<wyb-popup ref="lastYearMsgCI" type="center" mode="size-fixed" height="900" radius="6" :showCloseIcon="true">
+
 			<view class="popupBody">
 				<view class="popHeader d-flex a-center j-center">
 					投保方案建议
@@ -186,6 +252,36 @@
 				</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 style="margin: 4px 0;" @change="RSradioChange"
+						v-for="(item, index) in renshouInsuranceData" :key="index" :name="item.id">
+						{{item.productName}}
+					</u-radio>
+				</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 style="margin: 4px 0;flex: auto;" @change="HBradioChange"
+						v-for="(item, index) in hengbangInsuranceData" :key="index" :name="item.programcode">
+						{{item.programname}}
+					</u-radio>
+				</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 style="margin: 4px 0;flex: auto;" @change="ZAradioChange"
+						v-for="(item, index) in zhonganInsuranceData" :key="index" :name="item.combination">
+						{{item.name}}
+					</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>
@@ -219,6 +315,7 @@
 		},
 		data() {
 			return {
+				popupvalue: 1,
 				params: {
 					year: true, //年
 					month: true, //月
@@ -227,6 +324,15 @@
 					minute: true, //分
 					second: true, //秒
 				},
+				zhonganPopupshow: false,
+				zhonganInsuranceData: [], //-众安意外险list
+				zhonganaccidentalDrivingVo: {}, //众安意外险
+				hengbangPopupshow: false,
+				hengbangInsuranceData: [], //-恒邦意外险list
+				hengbangaccidentalDrivingVo: {}, //恒邦意外险
+				renshouPopupshow: false,
+				renshouInsuranceData: [], //-人寿意外险list
+				renshouaccidentalDrivingVo: {}, //人寿意外险
 				jqstartShow: false, //交强起保日期
 				jqendShow: false, //交强终保日期
 				systartShow: false, //商业起保日期
@@ -786,7 +892,6 @@
 							this.kindList.map(ele1 => {
 								this.insureList.map(ele2 => {
 									if (ele2.kindCode == ele1.kindCode) {
-										console.log(ele1.kindCode)
 										switch (ele1.kindCode) {
 											case 'D4':
 											case 'SY_FJ_YBW2':
@@ -804,7 +909,6 @@
 									}
 								})
 							})
-							console.log(this.insureList)
 
 						}
 					}
@@ -916,23 +1020,83 @@
 			 * @param {String} name 保险公司主体全拼
 			 * @param {String} index 选中下标
 			 */
-			checkboxChange(event, code, name, index) {
-				this.totalCompanyList[index].checked = event.value;
-				let arr = this.totalCompanyList[index].agreement;
-				let list = [];
-				list = arr.filter(item => {
-					return item.licenseNo.length > 0 ? item.licenseNo.includes(this.carInfo.licenseNo.slice(
-						0,
-						2)) : "true"
-				})
-				list.map(ele => {
-					ele.extra = ele.apiType;
-					return ele;
-				})
-				this.totalCompanyList[index].agreement = list;
-				this.totalCompanyList[index].agreementId = this.totalCompanyList[index].agreement[0].id;
-				this.totalCompanyList[index].agreementName = this.totalCompanyList[index].agreement[0].agreementName;
-				this.totalCompanyList[index].apiType = this.totalCompanyList[index].agreement[0].extra;
+			async checkboxChange(event, code, name, index) {
+				if (event.value) {
+					let ins = this.totalCompanyList[index].namesimple;
+					this.totalCompanyList[index].checked = event.value;
+					let arr = this.totalCompanyList[index].agreement;
+					let list = [];
+					list = arr.filter(item => {
+						return item.licenseNo.length > 0 ? item.licenseNo.includes(this.carInfo.licenseNo
+							.slice(
+								0,
+								2)) : "true"
+					})
+					list.map(ele => {
+						ele.extra = ele.apiType;
+						return ele;
+					})
+					this.totalCompanyList[index].agreement = list;
+					this.totalCompanyList[index].agreementId = this.totalCompanyList[index].agreement[0].id;
+					this.totalCompanyList[index].agreementName = this.totalCompanyList[index].agreement[0]
+						.agreementName;
+					this.totalCompanyList[index].apiType = this.totalCompanyList[index].agreement[0].extra;
+					switch (ins) {
+						case '安盛天平':
+
+							break;
+						case '永诚财险':
+							break;
+						case '紫金财险':
+							break;
+						case '中国人寿':
+						case '恒邦财险':
+						case '众安财险':
+							let Insuranceres = await this.$http.post('/insurance/crawler/getDrivingInsurance', {
+								agreementId: this.totalCompanyList[index].agreement[0].id
+							});
+							if (Insuranceres.code == 200) {
+								let data = Insuranceres.data;
+								data.map(ele => {
+									ele.quantity = 1;
+									return ele;
+								})
+								this[name + "InsuranceData"] = data;
+								this[name + 'accidentalDrivingVo'] = data[0];
+							}
+							break;
+						default:
+							break;
+					}
+				} else {}
+			},
+			//驾意险勾选框
+			RScheckboxChange(event, index) {
+				this.totalCompanyList[index].jychecked = event.value;
+			},
+			//驾意险勾选框
+			HBcheckboxChange(event, index) {
+				this.totalCompanyList[index].jychecked = event.value;
+			},
+			//驾意险勾选框
+			ZAcheckboxChange(event, index) {
+				this.totalCompanyList[index].jychecked = event.value;
+			},
+			//驾意险选择
+			RSradioChange(id) {
+				this.renshouaccidentalDrivingVo = this.renshouInsuranceData.find(val => val.id == id)
+				this.renshouPopupshow = false;
+			},
+			//驾意险选择
+			HBradioChange(id) {
+				this.renshouaccidentalDrivingVo = this.hengbangInsuranceData.find(val => val.programcode == id)
+				this.hengbangPopupshow = false;
+			},
+			//驾意险选择
+			ZAradioChange(id) {
+				this.zhonganaccidentalDrivingVo = this.zhonganInsuranceData.find(val => val.combination == id)
+				console.log(this.zhonganaccidentalDrivingVo)
+				this.zhonganPopupshow = false;
 			},
 			//获取保险公司列表
 			async commpanyList() {
@@ -941,6 +1105,7 @@
 					ele["result"] = {};
 					ele["quoteCode"] = 0;
 					ele["checked"] = false;
+					ele["jychecked"] = false;
 					ele["msg"] = "";
 					ele["agreementId"] = "";
 					ele["lastYearMsg"] = "";
@@ -1098,7 +1263,9 @@
 					await this.$http.post('/insurance/order/generateOrder', param);
 					return this.zhongmei(num, id);
 				} else if (res.code == '200') {
-					if (res.data.warnMessageList.length > 0) {
+					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 => {
@@ -1139,7 +1306,9 @@
 				let res = await this.$http.post('/api/yongCheng/quote', params);
 				this.totalCompanyList[num].msg = res.msg;
 				if (res.code == "200") {
-					if (res.data.warnMessageList.length > 0) {
+					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 => {
@@ -1178,12 +1347,54 @@
 				};
 				let res = await this.$http.post('/order/zijin/quote', params);
 				this.totalCompanyList[num].msg = res.msg;
-				if (res.code == '200') {
-					if (res.data.warnMessageList.length > 0) {
+				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.zijin(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 + '<br>';
+							this.totalCompanyList[num].lastYearMsg += ele;
 						})
 					}
 					this.totalCompanyList[num].quoteCode = 200;
@@ -1194,47 +1405,284 @@
 					return;
 				}
 			},
+
 			//爬虫统一报价接口
-			async quoteInsurance(num, id, apiType) {
+			async quoteInsurance(num, id, apiType, jychecked) {
 				let api = apiType === 2 ? "/insurance/crawler/quote" : "anshengquote";
+				let ccidenttype = this.totalCompanyList[num].cnName;
+				let namesimple = this.totalCompanyList[num].namesimple;
+				console.log(jychecked, ccidenttype)
 				let params = {
 					orderNo: this.orderno,
 					companyId: id,
 					agreementId: this.totalCompanyList[num].agreementId,
+					accidentalDrivingVo: jychecked ? this[ccidenttype + 'accidentalDrivingVo'] : {},
 				};
 				let res = await this.$http.post(`${api}`, params);
 				this.totalCompanyList[num].msg = res.msg;
-				if (!!res.data) {
-					if (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;
+				switch (namesimple) {
+					case '安盛天平':
+						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);
+							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);
+									}
+								}
+							}
+							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.quoteInsurance(num, id, apiType);
+						} else if (res.data == null && res.msg.indexOf("上年保险止期(") > -1 && res.msg.indexOf("重复投保情况") > -
+							1) {
+							let time = res.msg.substr(res.msg.indexOf("上年保险止期(") + 7, 17) + ":00";
+							time = time.substring(0, 4) + "-" + time.substring(5, 7) + "-" + time.substring(8, 10) +
+								" " + time.substring(12, 14) + ":" + time.substring(15, 17) + ":00"
+							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 == "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.quoteInsurance(num, id, apiType);
+						} else if (!!res.data) {
+							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;
+						}
+						break;
+					case '中国人寿':
+						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);
+							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);
+									}
+								}
+							}
+							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.quoteInsurance(num, id, apiType);
+						} else if (res.data == null && res.msg.indexOf("商业险-平台返回") > -1 && res.msg.indexOf("保险期间:") > -
+							1) {
+							let time = res.msg.substr(res.msg.indexOf("保险期间:") + 18, 12) + "00";
+							time = time.substring(0, 4) + "-" + time.substring(4, 6) + "-" + time.substring(6, 8) +
+								" " + time.substring(8, 10) + ":" + time.substring(10, 12) + ":" + time.substring(12,
+									14);
+							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 == "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.quoteInsurance(num, id, apiType);
+						} else if (!!res.data) {
+							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;
+						}
+						break;
+
+					case '恒邦财险':
+						if ((res.data == null && res.msg.indexOf("交强险平台返回") > -1 && res.msg.indexOf(";终保日期") > -1) || (
+								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);
+							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);
+									}
+								}
+							}
+							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.quoteInsurance(num, id, apiType);
+						} else if (res.data == null && res.msg.indexOf("平台校验,重复投保") > -1 && res.msg.indexOf("终保日期:") >
+							-1) {
+							let time = res.msg.substr(res.msg.indexOf("终保日期:") + 5, 10) + " 00:00:00";
+							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 == "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.quoteInsurance(num, id, apiType);
+						} else if (!!res.data) {
+							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;
+						}
+						break;
+					case '众安财险':
+						if (!!res.data) {
+							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;
+						}
+						break;
+					default:
+						break;
 				}
+
 			},
 			//安盛天平
 			ansheng(num, id) {
-				this.quoteInsurance(num, id, this.totalCompanyList[num].apiType);
+				this.quoteInsurance(num, id, this.totalCompanyList[num].apiType, this.totalCompanyList[num].jychecked);
 			},
 			//众安
 			zhongan(num, id) {
-				this.quoteInsurance(num, id, this.totalCompanyList[num].apiType);
+				this.quoteInsurance(num, id, this.totalCompanyList[num].apiType, this.totalCompanyList[num].jychecked);
 			},
 			//人寿
 			renshou(num, id) {
-				this.quoteInsurance(num, id, this.totalCompanyList[num].apiType);
+				this.quoteInsurance(num, id, this.totalCompanyList[num].apiType, this.totalCompanyList[num].jychecked);
 			},
 			//恒邦
 			hengbang(num, id) {
-				this.quoteInsurance(num, id, this.totalCompanyList[num].apiType);
+				this.quoteInsurance(num, id, this.totalCompanyList[num].apiType, this.totalCompanyList[num].jychecked);
 			},
 			Lastyear() {
 				this.$refs.lastYearMsgCI.show() // 显示
@@ -1443,10 +1891,24 @@
 		border-bottom: 1px dashed #E6E8EA;
 	}
 
+	.accident-style {
+		padding: 20px;
 
+		>view {
+			margin-bottom: 15px;
+		}
 
+		.accident-ins {
+			text {
+				margin-right: 10px;
+			}
+		}
+	}
 
-
+	.popContent {
+		padding: 10px;
+		max-height: 400px;
+	}
 
 	.carTypeItem {
 		padding: 0 30upx 20upx;

+ 1 - 1
pages/carInsure1/quoteDetail1.vue

@@ -1053,7 +1053,6 @@
 					companyId: params.companyId
 				};
 				let res = await this.$http.post('/insurance/order/getByCompanyId', param);
-				console.log(res)
 				if (res.code == 200) {
 					//获取前一个页面传过来的信息(车辆信息,人员信息,险种信息)
 					this.icon = "";
@@ -1157,6 +1156,7 @@
 			//影像查询
 			async imageEcho(quotenos) {
 				let imgres = await this.$http.get('/ins/taskImage/findByQuoteNo?quoteNo=' + quotenos);
+				console.log(imgres)
 				if (imgres.code == "200") {
 					Object.keys(imgres.data).forEach((keys) => {
 						if (imgres.data[keys].url) {

+ 10 - 5
pages/carInsure1/underwriting1.vue

@@ -243,7 +243,8 @@
 							</block>
 							<view v-if="imgList5.length==0" class="uni-uploader__input-box"
 								style="box-sizing: border-box;">
-								<view class="uni-uploader__input" @tap="chooseImage('C01','car')"></view>
+								<view class="uni-uploader__input"
+									@tap="chooseImage('C03','policyImageListId','imgList5')"></view>
 							</view>
 						</view>
 						<view class="uni-uploader__files">
@@ -257,7 +258,8 @@
 							</block>
 							<view v-if="imgList6.length==0" class="uni-uploader__input-box"
 								style="box-sizing: border-box;">
-								<view class="uni-uploader__input" @tap="chooseImage('C01','car')"></view>
+								<view class="uni-uploader__input"
+									@tap="chooseImage('D03','policyImageListId','imgList6')"></view>
 							</view>
 						</view>
 					</view>
@@ -286,7 +288,8 @@
 							</block>
 							<view v-if="imgList7.length==0" class="uni-uploader__input-box"
 								style="box-sizing: border-box;">
-								<view class="uni-uploader__input" @tap="chooseImage('C01','car')"></view>
+								<view class="uni-uploader__input"
+									@tap="chooseImage('C04','insuredImageListId','imgList7')"></view>
 							</view>
 						</view>
 						<view class="uni-uploader__files">
@@ -300,7 +303,8 @@
 							</block>
 							<view v-if="imgList8.length==0" class="uni-uploader__input-box"
 								style="box-sizing: border-box;">
-								<view class="uni-uploader__input" @tap="chooseImage('C01','car')"></view>
+								<view class="uni-uploader__input"
+									@tap="chooseImage('D04','insuredImageListId','imgList8')"></view>
 							</view>
 						</view>
 					</view>
@@ -663,6 +667,7 @@
 							let data = JSON.parse(imgRes.data);
 							data.data.url = this.$base.baseUrl + data.data.url;
 							if (data.code == "200") {
+								console.log()
 								if (this[imageIdList].some(v => v.imageType == type)) {
 									this[imageIdList].map(val => {
 										if (val.imageType == type) {
@@ -861,7 +866,7 @@
 									break;
 								case "永诚财险":
 									let ycimage = await this.$http.post(
-										'/api/yongCheng/UploadImage', {
+										'/api/yongCheng/uploadImage', {
 											companyId: this.companyId
 										});
 									if (ycimage.code == '200') {

+ 3 - 3
pages/login/login.vue

@@ -438,9 +438,9 @@
 							}
 						}).then(res => {
 							console.log(1)
-							// this.openSQL(); //打开数据库
-							// this.createTable(); //创建表
-							// this.insertTableData(this.username, this.password); //新增表数据
+							this.openSQL(); //打开数据库
+							this.createTable(); //创建表
+							this.insertTableData(this.username, this.password); //新增表数据
 							socket.init();
 							return;
 						})

+ 5 - 2
pages/orders/orders.vue

@@ -6,7 +6,7 @@
 			<view class="search">
 				<u-search v-model="pageRequest.licenseNo" @custom="custom" @search="search" :shape="shape"
 					:clearabled="clearabled" :show-action="showAction" :input-align="inputAlign" @clear="clear"
-					placeholder="姓名搜索"></u-search>
+					placeholder="车牌号搜索"></u-search>
 			</view>
 			<u-dropdown active-color="#fff" inactive-color="#fff" ref="uDropdown">
 				<u-dropdown-item title="筛选条件">
@@ -71,7 +71,7 @@
 						</view>
 					</view>
 					<view class="dis f-wrap item  ">
-						<text>保人:{{item.insuredname}}</text>
+						<text>保人:{{item.insuredname}}</text>
 						<text>投保险种:{{item.product}}</text>
 						<text>订单号:{{item.orderno}}</text>
 					</view>
@@ -273,6 +273,7 @@
 			},
 			//状态筛选
 			statusclick(e) {
+				console.log(e)
 				this.pageRequest.orderStatus = e;
 			},
 			startShowmethod() {
@@ -367,6 +368,8 @@
 							kindList: val.king,
 							orderno: val.orderno, //车辆
 							quoteno: val.quoteno, //车主
+							vehicleAndVesselTaxForm: val.vehicleAndVesselTax, //车船税
+
 						})
 					}
 				}, "navigateTo", true);

+ 12 - 2
pages/orders/quotation.vue

@@ -8,6 +8,7 @@
 					<text style="font-weight: bold;margin-left: 6px;">{{dataInfo.inscompany}}报价单</text>
 				</view>
 			</view>
+
 			<view class="Basic-information dis f-c" style="border-top-right-radius: 0;border-top-left-radius: 0;">
 				<view class="basic-logo dis a-c">
 					<image :src="caricon" mode=""></image>
@@ -60,6 +61,10 @@
 					<text>商业险</text>
 					<text>¥{{dataInfo.sypremium}}</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>
@@ -165,7 +170,6 @@
 				logoimg: "",
 			}
 		},
-
 		async onLoad(options) {
 			this.companyId = options.companyId;
 			let params = {
@@ -310,6 +314,7 @@
 					title: '正在生成图片'
 				});
 			},
+
 			hideLoading() {
 				uni.hideLoading();
 			},
@@ -325,12 +330,16 @@
 			}
 		},
 		mounted() {
+			// #ifdef APP-PLUS
 			setTimeout(() => {
 				this.canvasImage.generateImage()
 			}, 1000);
+			// #endif
+
+
 		},
 		methods: {
-
+			// #ifdef APP-PLUS
 			generateImage() {
 				setTimeout(() => {
 					this.$ownerInstance.callMethod('showLoading')
@@ -353,6 +362,7 @@
 					})
 				}, 300)
 			}
+			// #endif
 		},
 	}
 </script>

+ 123 - 117
pages/realname/realname.vue

@@ -2,7 +2,7 @@
 	<view>
 		<!-- 公共组件-每个页面必须引入 -->
 		<public-module></public-module>
-		<u-form  :model="form" ref="uForm" class="addStaffManage" >
+		<u-form :model="form" ref="uForm" class="addStaffManage">
 			<u-form-item label="姓名" prop="param1"><u-input v-model="form.param1" /></u-form-item>
 			<!-- <u-form-item label="性别">
 				<u-input type="select" :select-open="showSex" v-model="form.sex"
@@ -12,11 +12,11 @@
 				 @confirm="sexSelect"></u-select>
 					
 			</u-form-item> -->
-			<u-form-item label="身份证号" prop="param2"><u-input v-model="form.param2"  /></u-form-item>
-			 <u-button hover-class="none" :custom-style="submitBtnStyle" type="success" @click="submit">提交</u-button>
+			<u-form-item label="身份证号" prop="param2"><u-input v-model="form.param2" /></u-form-item>
+			<u-button hover-class="none" :custom-style="submitBtnStyle" type="success" @click="submit">提交</u-button>
 		</u-form>
-		
-		
+
+
 	</view>
 </template>
 
@@ -29,88 +29,91 @@
 		data() {
 			//身份证验证
 			function validateSfz(rule, value, callback) {
-			  if (!value) {
-			    return callback(new Error('身份证号码不能为空'));
-			  }
-			  function validataCredentials(num) {
-			    var msg, boo; //  msg身份证验证友情提示,boo返回值
-			    var num = num.toUpperCase(); // 身份证为末尾可能是X
-			    //   身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,
-			    //   最后一位是校验位,可能为数字或字符X。
-			    const arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
-			    const arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
-			    var nTemp = 0,
-			      i;
-			    if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) {
-			      //  输入的身份证号长度不对,或者号码不符合规定;
-			      return [boo = false, msg = "身份证号码不符合规定"];
-			    }
-			    //   校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
-			    //   下面分别分析出生日期和校验位
-			    var len, re;
-			    len = num.length;
-			    if (len == 15) {
-			      re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
-			      var arrSplit = num.match(re);
-			      //   检查生日日期是否正确
-			      var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
-			      var bGoodDay;
-			      bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
-			      if (!bGoodDay) {
-			        //   输入的身份证号里出生日期不对!
-			        return [boo = false, msg = "输入的身份证号里出生日期不对!"];
-			
-			      } else {
-			        //   将15位身份证转成18位
-			        //   校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。   
-			        num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);
-			        for (i = 0; i < 17; i++) {
-			          nTemp += num.substr(i, 1) * arrInt[i];
-			        }
-			        num += arrCh[nTemp % 11];
-			        return [boo = true, msg = num];
-			      }
-			    }
-			    if (len == 18) {
-			      re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
-			      var arrSplit = num.match(re);
-			      //  检查生日日期是否正确
-			      var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
-			      var bGoodDay;
-			      bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
-			      if (!bGoodDay) {
-			        //  输入的身份证号里出生日期不对! 
-			
-			        return [boo = false, msg = " 输入的身份证号里出生日期不对"];
-			      } else {
-			        //  检验18位身份证的校验码是否正确。
-			        //  校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
-			        var valnum;
-			        for (i = 0; i < 17; i++) {
-			          nTemp += num.substr(i, 1) * arrInt[i];
-			        }
-			        valnum = arrCh[nTemp % 11];
-			        if (valnum != num.substr(17, 1)) {
-			          //  18位身份证的校验码不正确!
-			          return [boo = false, msg = "身份证的校验码不正确!"];
-			        }
-			        return [boo = true, msg = "验证成功"]
-			      }
-			    }
-			    return [boo = false, msg = "身份证的长度不正确!"];
-			  }
-			  setTimeout(() => {
-			    var res = validataCredentials(value);
-			    if (!res[0]) {
-			      callback(new Error(res[1]));
-			    } else {
-			      callback();
-			    }
-			  }, 200);
+				if (!value) {
+					return callback(new Error('身份证号码不能为空'));
+				}
+
+				function validataCredentials(num) {
+					var msg, boo; //  msg身份证验证友情提示,boo返回值
+					var num = num.toUpperCase(); // 身份证为末尾可能是X
+					//   身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,
+					//   最后一位是校验位,可能为数字或字符X。
+					const arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
+					const arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
+					var nTemp = 0,
+						i;
+					if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) {
+						//  输入的身份证号长度不对,或者号码不符合规定;
+						return [boo = false, msg = "身份证号码不符合规定"];
+					}
+					//   校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
+					//   下面分别分析出生日期和校验位
+					var len, re;
+					len = num.length;
+					if (len == 15) {
+						re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
+						var arrSplit = num.match(re);
+						//   检查生日日期是否正确
+						var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
+						var bGoodDay;
+						bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(
+							arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
+						if (!bGoodDay) {
+							//   输入的身份证号里出生日期不对!
+							return [boo = false, msg = "输入的身份证号里出生日期不对!"];
+
+						} else {
+							//   将15位身份证转成18位
+							//   校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。   
+							num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);
+							for (i = 0; i < 17; i++) {
+								nTemp += num.substr(i, 1) * arrInt[i];
+							}
+							num += arrCh[nTemp % 11];
+							return [boo = true, msg = num];
+						}
+					}
+					if (len == 18) {
+						re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
+						var arrSplit = num.match(re);
+						//  检查生日日期是否正确
+						var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
+						var bGoodDay;
+						bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(
+							arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
+						if (!bGoodDay) {
+							//  输入的身份证号里出生日期不对! 
+
+							return [boo = false, msg = " 输入的身份证号里出生日期不对"];
+						} else {
+							//  检验18位身份证的校验码是否正确。
+							//  校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
+							var valnum;
+							for (i = 0; i < 17; i++) {
+								nTemp += num.substr(i, 1) * arrInt[i];
+							}
+							valnum = arrCh[nTemp % 11];
+							if (valnum != num.substr(17, 1)) {
+								//  18位身份证的校验码不正确!
+								return [boo = false, msg = "身份证的校验码不正确!"];
+							}
+							return [boo = true, msg = "验证成功"]
+						}
+					}
+					return [boo = false, msg = "身份证的长度不正确!"];
+				}
+				setTimeout(() => {
+					var res = validataCredentials(value);
+					if (!res[0]) {
+						callback(new Error(res[1]));
+					} else {
+						callback();
+					}
+				}, 200);
 			}
 			return {
-				showSex:false,
-				 submitBtnStyle: {
+				showSex: false,
+				submitBtnStyle: {
 					margin: "30rpx 0rpx 0rpx",
 					color: "#ffffff",
 					fontWeight: "550",
@@ -133,46 +136,51 @@
 						value: '3',
 						label: '未知'
 					}
-							],
-					rules: {
-						param1: [
-							{
-								required: true,
-								message: '请输入姓名',
-								trigger: ['blur', 'change']
-							}
-						],
-						param2: [
-							// {
-							// 	required: true,
-							// 	message: '请输入身份证号',
-							// 	trigger: ['blur', 'change']
-							// }
-							{ required: true, message: "请填写身份证号" },
-						   { validator: validateSfz }
-						]
-					}
+				],
+				rules: {
+					param1: [{
+						required: true,
+						message: '请输入姓名',
+						trigger: ['blur', 'change']
+					}],
+					param2: [
+						// {
+						// 	required: true,
+						// 	message: '请输入身份证号',
+						// 	trigger: ['blur', 'change']
+						// }
+						{
+							required: true,
+							message: "请填写身份证号"
+						},
+						{
+							validator: validateSfz
+						}
+					]
+				}
 			}
 		},
 		computed: {
 			...mapState(['userInfo'])
 		},
-		
+
 		methods: {
 			sexSelect(e) {
 				this.form.sex = e[0].label
 			},
-			 submit(){
+			submit() {
 				this.$refs.uForm.validate(valid => {
 					if (valid) {
-						this.$http.post('/user/realNameAuth' ,this.form).then(res=>{
-							if(res.code==200){
+						this.$http.post('/user/realNameAuth', this.form).then(res => {
+							if (res.code == 200) {
 								// 更新个人信息
-								this.$http.get('/user/loginUser').then(res=>{
+								this.$http.get('/user/loginUser').then(res => {
 									store.commit('setUserModules', {
 										title: 'userInfo',
 										data: {
-											sysUser:{...res.data}
+											sysUser: {
+												...res.data
+											}
 										}
 									})
 									uni.showToast({
@@ -184,9 +192,7 @@
 										url: "/pages/index/index"
 									})
 								})
-								
-							}
-							else{
+							} else {
 								uni.showToast({
 									icon: "none",
 									title: res.msg,
@@ -200,8 +206,8 @@
 						console.log('验证失败');
 					}
 				});
-			
-				
+
+
 			}
 		},
 		onReady() {
@@ -211,8 +217,8 @@
 </script>
 
 <style>
-	.addStaffManage{
+	.addStaffManage {
 		height: 220upx;
 		margin: 0 40upx;
 	}
-</style>
+</style>

+ 26 - 22
pages/tools/addStaff/recommendCode.vue

@@ -10,15 +10,17 @@
 	</view>
 </template>
 <script>
-	import {mapState} from "vuex"
+	import {
+		mapState
+	} from "vuex"
 	import QR from "@/common/wxqrcode.js"
 	export default {
 		data() {
 			return {
-				recommendImg:""
+				recommendImg: ""
 			}
 		},
-		computed:{
+		computed: {
 			...mapState(['userInfo']),
 			getHeight() {
 				let height = uni.getSystemInfoSync().windowHeight;
@@ -27,30 +29,32 @@
 		},
 		onLoad() {
 			var id = this.userInfo.sysUser.id;
-			this.recommendImg = QR.createQrCodeImg(this.$base.h5BaseUrl +"/#/pages/register/register?id="+id, {
-			     size: parseInt(200)//二维码大小  
+			this.recommendImg = QR.createQrCodeImg(this.$base.h5BaseUrl + "/#/pages/register/register?id=" + id, {
+				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>
+	.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>

+ 184 - 127
pages/tools/team/team.vue

@@ -3,14 +3,19 @@
 		<!-- 公共组件-每个页面必须引入 -->
 		<public-module></public-module>
 		<view class="body">
-			<view class="statisticsDate d-flex" >
+			<view class="statisticsDate d-flex">
 				<view style="width: 180upx;flex-shrink: 0;">
-					<picker style="padding: 0;" @change="bindPickerChange" :value="queryTimeTypeIndex" :range="queryTimeTypeArray">
+					<picker style="padding: 0;" @change="bindPickerChange" :value="queryTimeTypeIndex"
+						:range="queryTimeTypeArray">
 						<view>{{queryTimeTypeArray[queryTimeTypeIndex]}}</view>
 					</picker>
 				</view>
-				<view class="d-flex a-center j-center flex-1" @click="onShowDatePicker" >{{dateRange[0]}} - {{dateRange[1]}}</view>
-				<view class="d-flex a-center j-center" style="width: 60upx;flex-shrink: 0;"><view class="icon iconfont icon-search-1-copy"></view></view>
+				<view class="d-flex a-center j-center flex-1" @click="onShowDatePicker">{{dateRange[0]}} -
+					{{dateRange[1]}}
+				</view>
+				<view class="d-flex a-center j-center" style="width: 60upx;flex-shrink: 0;">
+					<view class="icon iconfont icon-search-1-copy"></view>
+				</view>
 			</view>
 			<view class="teamStatistics">
 				<view class="statisticsTitle">
@@ -27,16 +32,16 @@
 						<view class="d-flex a-center j-center">{{item.outSingle}}</view>
 					</view>
 				</block>
-			</view>		
-			
+			</view>
+
 			<view class="teamScrollView">
 				<swiper-tab :tabBars="teamTabBars" :tabIndex="teamTabIndex" @tabtap="teamTabtap"></swiper-tab>
 			</view>
-			
+
 			<!-- <search  @search="search"></search> -->
-			
+
 			<view class="team_members">
-				<view class="team_member d-flex"  style="background-color: #CCCCCC;">
+				<view class="team_member d-flex" style="background-color: #CCCCCC;">
 					<view class="d-flex a-center j-center flex-1">
 						<view>团队成员</view>
 					</view>
@@ -50,43 +55,52 @@
 						<view>签单保费</view>
 					</view>
 				</view>
-				
-				<z-paging auto-show-back-to-top ref="paging" v-model="teamStaffList" :refresher-enabled="false"  :loading-more-enabled="false"  :mounted-auto-call-reload="false" :style="getHeight">
-					<view class="team_member d-flex" v-for="(item,index) in teamStaffList" :key="index" @tap="toTeamMember(index)">
+
+				<z-paging auto-show-back-to-top ref="paging" v-model="teamStaffList" :refresher-enabled="false"
+					:loading-more-enabled="false" :mounted-auto-call-reload="false" :style="getHeight">
+					<view class="team_member d-flex" v-for="(item,index) in teamStaffList" :key="index"
+						@tap="toTeamMember(index)">
 						<view class="d-flex a-center j-center flex-1">
 							<view>{{item.sysUser.name}}</view>
 						</view>
-						<view class="d-flex a-center j-center flex-1" >
+						<view class="d-flex a-center j-center flex-1">
 							<view>{{item.teamUserCountPriceVO?item.teamUserCountPriceVO.underwriting:0}}</view>
 						</view>
-						<view class="d-flex a-center j-center flex-1" >
+						<view class="d-flex a-center j-center flex-1">
 							<view>{{item.teamUserCountPriceVO?item.teamUserCountPriceVO.issue:0}}</view>
 						</view>
 						<view class="d-flex a-center j-center flex-1">
 							<template v-if="item.teamUserCountPriceVO && (item.teamUserCountPriceVO.billPrice>0)">
-								<view class="main-text-color">{{item.teamUserCountPriceVO?(item.teamUserCountPriceVO.billPrice).toFixed(2):0}}</view>
+								<view class="main-text-color">
+									{{item.teamUserCountPriceVO?(item.teamUserCountPriceVO.billPrice).toFixed(2):0}}
+								</view>
 							</template>
 							<template v-else>
-								<view>{{item.teamUserCountPriceVO?(item.teamUserCountPriceVO.billPrice).toFixed(2):'0.00'}}</view>
+								<view>
+									{{item.teamUserCountPriceVO?(item.teamUserCountPriceVO.billPrice).toFixed(2):'0.00'}}
+								</view>
 							</template>
-							
+
 						</view>
 					</view>
 				</z-paging>
-				
-				
-				
-				
-				
+
+
+
+
+
 			</view>
-			
+
 		</view>
-		<mx-date-picker :show="showDatePicker" type="range" :value="dateRange"  :show-tips="true" @confirm="onSelected" @cancel="onSelected" />
+		<mx-date-picker :show="showDatePicker" type="range" :value="dateRange" :show-tips="true" @confirm="onSelected"
+			@cancel="onSelected" />
 	</view>
 </template>
 
 <script>
-	import {mapState} from "vuex";
+	import {
+		mapState
+	} from "vuex";
 	import search from "@/components/modules/orders/search.vue";
 	import swiperTab from "@/components/modules/tools/team/swiper-tab.vue";
 	import MxDatePicker from "@/components/modules/tools/team/mx-datepicker/mx-datepicker.vue";
@@ -98,28 +112,28 @@
 		},
 		async onLoad(params) {
 			// this.queryPeopleId = params.id
-			if((!!params.id) && (!!params.name)){
+			if ((!!params.id) && (!!params.name)) {
 				this.queryPeopleId = params.id
 				await this.queryData()
 				uni.setNavigationBarTitle({
-					title: params.name+"团队管理"
+					title: params.name + "团队管理"
 				});
-			}else if(!!this.userInfo){
+			} else if (!!this.userInfo) {
 				this.queryPeopleId = this.userInfo.sysUser.id
 				await this.queryData()
 				uni.setNavigationBarTitle({
-					title: this.userInfo.sysUser.name+"团队管理"
+					title: this.userInfo.sysUser.name + "团队管理"
 				});
-			}else{
+			} else {
 				this.queryPeopleId = this.userInfo.sysUser.id
 				await this.queryData()
 			}
-			
+
 		},
 		onShow() {
-			
+
 		},
-		computed:{
+		computed: {
 			...mapState(['userInfo']),
 			getHeight() {
 				let height = uni.getSystemInfoSync().windowHeight - uni.upx2px(770);
@@ -128,122 +142,161 @@
 		},
 		data() {
 			return {
-				queryPeopleId:"",
-				
-				queryTimeTypeArray:['本月查询','本年查询','自定义查询'],
-				queryTimeTypeIndex:0,
-				
-				dateRange: [new Date().getFullYear()+'/'+(new Date().getMonth()+1)+'/01' ,new Date().getFullYear()+'/'+(new Date().getMonth()+1)+'/'+new Date().getDate()],
-				showDatePicker:false,
-				teamTabIndex:0,
-				teamTabBars:[
-					{id: 1,name: '总计',personNum:'0',orderNum:'0',premium:0,outSingle:0},
-					{id: 2,name: '一级团队',personNum:'0',orderNum:'0',premium:0,outSingle:0},
-					{id: 3,name:'二级团队',personNum:'0',orderNum:'0',premium:0,outSingle:0},
-					{id: 4,name: '三级团队',personNum:'0',orderNum:'0',premium:0,outSingle:0},
-					{id: 5,name: '临时团队',personNum:'0',orderNum:'0',premium:0,outSingle:0}
+				queryPeopleId: "",
+
+				queryTimeTypeArray: ['本月查询', '本年查询', '自定义查询'],
+				queryTimeTypeIndex: 0,
+
+				dateRange: [new Date().getFullYear() + '/' + (new Date().getMonth() + 1) + '/01', new Date()
+					.getFullYear() + '/' + (new Date().getMonth() + 1) + '/' + new Date().getDate()
 				],
-				teamStaff:{},
-				teamStaffList:[]
+				showDatePicker: false,
+				teamTabIndex: 0,
+				teamTabBars: [{
+						id: 1,
+						name: '总计',
+						personNum: '0',
+						orderNum: '0',
+						premium: 0,
+						outSingle: 0
+					},
+					{
+						id: 2,
+						name: '一级团队',
+						personNum: '0',
+						orderNum: '0',
+						premium: 0,
+						outSingle: 0
+					},
+					{
+						id: 3,
+						name: '二级团队',
+						personNum: '0',
+						orderNum: '0',
+						premium: 0,
+						outSingle: 0
+					},
+					{
+						id: 4,
+						name: '三级团队',
+						personNum: '0',
+						orderNum: '0',
+						premium: 0,
+						outSingle: 0
+					},
+					{
+						id: 5,
+						name: '临时团队',
+						personNum: '0',
+						orderNum: '0',
+						premium: 0,
+						outSingle: 0
+					}
+				],
+				teamStaff: {},
+				teamStaffList: []
 			}
 		},
 		methods: {
 			bindPickerChange: function(e) {
-				this.queryTimeTypeIndex= e.target.value
-				if(e.target.value == 0){
-					this.dateRange = [new Date().getFullYear()+'/'+(new Date().getMonth()+1)+'/01' ,new Date().getFullYear()+'/'+(new Date().getMonth()+1)+'/'+new Date().getDate()];
+				this.queryTimeTypeIndex = e.target.value
+				if (e.target.value == 0) {
+					this.dateRange = [new Date().getFullYear() + '/' + (new Date().getMonth() + 1) + '/01', new Date()
+						.getFullYear() + '/' + (new Date().getMonth() + 1) + '/' + new Date().getDate()
+					];
 					this.queryData();
 				}
-				if(e.target.value == 1){
-					this.dateRange = [new Date().getFullYear()+'/01/01' ,new Date().getFullYear()+'/12/31'];
+				if (e.target.value == 1) {
+					this.dateRange = [new Date().getFullYear() + '/01/01', new Date().getFullYear() + '/12/31'];
 					this.queryData();
 				}
-				if(e.target.value == 2){
+				if (e.target.value == 2) {
 					this.showDatePicker = true;
 				}
 			},
-			
-			async queryData(){
+
+			async queryData() {
 				console.log(this.userInfo)
 				this.teamTabIndex = 0;
-				var params={
-				  "id": this.queryPeopleId,
-				  "mobile": "",
-				  "name": "",
-				  "enddate": this.dateRange[1],
-				  "startdate": this.dateRange[0]
+				var params = {
+					"userid": this.queryPeopleId,
+					"mobile": "",
+					"name": "",
+					"enddate": this.dateRange[1],
+					"startdate": this.dateRange[0]
 				}
-				let res = await this.$http.post('/esmUserInternal/queryTeamNum',params);
-				this.teamTabBars[0].personNum=res.data[0].teamnum;
-				this.teamTabBars[1].personNum=res.data[0].level1num;
-				this.teamTabBars[2].personNum=res.data[0].level2num;
-				this.teamTabBars[3].personNum=res.data[0].level3num;
-				this.teamTabBars[4].personNum=res.data[0].tempnum;
-				
-				this.teamTabBars[0].premium=res.data[0].countPremium;
-				this.teamTabBars[1].premium=res.data[0].list1Premium;
-				this.teamTabBars[2].premium=res.data[0].list2Premium;
-				this.teamTabBars[3].premium=res.data[0].list3Premium;
-				this.teamTabBars[4].premium=0;
-				
-				this.teamTabBars[0].outSingle=res.data[0].countSingle;
-				this.teamTabBars[1].outSingle=res.data[0].outSingle1;
-				this.teamTabBars[2].outSingle=res.data[0].outSingle2;
-				this.teamTabBars[3].outSingle=res.data[0].outSingle3;
-				this.teamTabBars[4].outSingle=0;
-				
-				let res1 = await this.$http.post('/esmUserInternal/queryTeamUser',params);
-				this.teamStaff=res1.data;
-				var level1Team =this.teamStaff['level1'];
-				var level2Team =this.teamStaff['level2'];
-				var level3Team =this.teamStaff['level3'];
-				var tempTeam =this.teamStaff['temp'];
-				this.teamStaffList=level1Team.concat(level2Team).concat(level3Team).concat(tempTeam);
+				let res = await this.$http.post('/esm/user/queryTeamNum', params);
+				console.log(res)
+				this.teamTabBars[0].personNum = res.data[2].teamnum;
+				this.teamTabBars[1].personNum = res.data[2].level1num;
+				this.teamTabBars[2].personNum = res.data[2].level2num;
+				this.teamTabBars[3].personNum = res.data[2].level3num;
+				this.teamTabBars[4].personNum = res.data[2].tempnum;
+
+				this.teamTabBars[0].premium = res.data[0].countPremium;
+				this.teamTabBars[1].premium = res.data[0].list1Premium;
+				this.teamTabBars[2].premium = res.data[0].list2Premium;
+				this.teamTabBars[3].premium = res.data[0].list3Premium;
+				this.teamTabBars[4].premium = 0;
+
+				this.teamTabBars[0].outSingle = res.data[0].countSingle;
+				this.teamTabBars[1].outSingle = res.data[0].outSingle1;
+				this.teamTabBars[2].outSingle = res.data[0].outSingle2;
+				this.teamTabBars[3].outSingle = res.data[0].outSingle3;
+				this.teamTabBars[4].outSingle = 0;
+
+				let res1 = await this.$http.post('/esmUserInternal/queryTeamUser', params);
+				this.teamStaff = res1.data;
+				var level1Team = this.teamStaff['level1'];
+				var level2Team = this.teamStaff['level2'];
+				var level3Team = this.teamStaff['level3'];
+				var tempTeam = this.teamStaff['temp'];
+				this.teamStaffList = level1Team.concat(level2Team).concat(level3Team).concat(tempTeam);
 				this.$refs.paging.complete(this.teamStaffList);
 			},
-			
-			onShowDatePicker(){//显示
-				if(this.queryTimeTypeIndex == 2){
+
+			onShowDatePicker() { //显示
+				if (this.queryTimeTypeIndex == 2) {
 					this.showDatePicker = true;
 				}
 			},
-			onSelected(e) {//选择
+			onSelected(e) { //选择
 				this.showDatePicker = false;
-				if(e) {
-					this.dateRange = e.value; 
+				if (e) {
+					this.dateRange = e.value;
 					this.queryData();
 				}
 			},
 			// 选择团队tap
-			teamTabtap(index){
-				this.teamTabIndex=index;
-				
-				var level1Team =this.teamStaff['level1'];
-				var level2Team =this.teamStaff['level2'];
-				var level3Team =this.teamStaff['level3'];
-				var tempTeam =this.teamStaff['temp'];
-				if(index ==0){
-					this.teamStaffList=level1Team.concat(level2Team).concat(level3Team).concat(tempTeam);
-				}else if(index ==1){
-					this.teamStaffList=level1Team;
-				}else if(index ==2){
-					this.teamStaffList=level2Team;
-				}else if(index ==3){
-					this.teamStaffList=level3Team;
-				}else if(index ==4){
-					this.teamStaffList=tempTeam;
+			teamTabtap(index) {
+				this.teamTabIndex = index;
+
+				var level1Team = this.teamStaff['level1'];
+				var level2Team = this.teamStaff['level2'];
+				var level3Team = this.teamStaff['level3'];
+				var tempTeam = this.teamStaff['temp'];
+				if (index == 0) {
+					this.teamStaffList = level1Team.concat(level2Team).concat(level3Team).concat(tempTeam);
+				} else if (index == 1) {
+					this.teamStaffList = level1Team;
+				} else if (index == 2) {
+					this.teamStaffList = level2Team;
+				} else if (index == 3) {
+					this.teamStaffList = level3Team;
+				} else if (index == 4) {
+					this.teamStaffList = tempTeam;
 				}
 				this.$refs.paging.complete(this.teamStaffList);
 			},
-			toTeamMember(index){
+			toTeamMember(index) {
 				this.navigate({
-					url:"/pages/tools/team/teamMember",
-					success:(res) => {
-						res.eventChannel.emit("acceptData",{
-							item:this.teamStaffList[index]
+					url: "/pages/tools/team/teamMember",
+					success: (res) => {
+						res.eventChannel.emit("acceptData", {
+							item: this.teamStaffList[index]
 						})
 					}
-				},"navigateTo",true)
+				}, "navigateTo", true)
 			}
 		}
 	}
@@ -251,7 +304,7 @@
 
 <style>
 	.body .statisticsDate {
-		padding:15upx 30upx;
+		padding: 15upx 30upx;
 		border-radius: 35upx;
 		border: 1px solid #ddd;
 		margin: 15upx 30upx;
@@ -292,28 +345,32 @@
 		width: 200upx;
 		text-align: center;
 	}
-	
-	
+
+
 	/* 横向滚动选项Start */
-	.teamScrollView{
+	.teamScrollView {
 		border-bottom: 15upx solid #ccc;
 	}
+
 	/* 横向滚动选项Start */
-	
+
 	/* 团队成员列表Start */
-	.team_members{}
-	.team_members .team_member{
+	.team_members {}
+
+	.team_members .team_member {
 		min-height: 70upx;
 		padding: 0px 30upx;
 		box-sizing: border-box;
 		line-height: 70upx;
 		border-bottom: 1px solid #ddd;
 	}
+
 	/* .team_members .team_member:nth-of-type(1){
 		background: #CCCCCC;
 	} */
-	.team_members .team_member>view{
+	.team_members .team_member>view {
 		flex-wrap: nowrap;
 	}
+
 	/* 团队成员列表End */
-</style>
+</style>

+ 77 - 68
pages/user/userInfo.vue

@@ -54,16 +54,18 @@
 			<view class="infoTitle">影像信息</view>
 			<view class="user-set-userinfo-list d-flex a-center j-sb">
 				<view>影像</view>
-				<view class="d-flex a-center info main-text-color" @tap="toAddImageData" >查看</view>
+				<view class="d-flex a-center info main-text-color" @tap="toAddImageData">查看</view>
 				<view></view>
 			</view>
 		</view>
-		
+
 		<view style="padding-bottom: 30upx;" v-if="this.userInfo.sysUser.status=='1'">
 			<view class="infoTitle">业务信息</view>
 			<view class="user-set-userinfo-list d-flex a-center j-sb">
 				<view>推荐人</view>
-				<view class="d-flex a-center info">{{this.userInfo.sysUser.referrerId}}({{this.userInfo.sysUser.referrerName}})</view>
+				<view class="d-flex a-center info">
+					{{this.userInfo.sysUser.referrerId}}({{this.userInfo.sysUser.referrerName}})
+				</view>
 				<view></view>
 			</view>
 			<view class="user-set-userinfo-list d-flex a-center j-sb">
@@ -77,99 +79,106 @@
 				<view></view>
 			</view>
 		</view>
-		
+
 	</view>
 </template>
 
 <script>
-	import {mapState} from "vuex"
+	import {
+		mapState
+	} from "vuex"
 	export default {
 		data() {
 			return {
-				sysUser:{},
-				esmUserInternal:{},
-				esmUserAgent:{},
+				sysUser: {},
+				esmUserInternal: {},
+				esmUserAgent: {},
 				// 推荐人信息
-				showRecommend:false,
-				recommenderId:"",
-				recommenderName:"",
-				recommenderComname:"",
-				recommenderTeam:"",
+				showRecommend: false,
+				recommenderId: "",
+				recommenderName: "",
+				recommenderComname: "",
+				recommenderTeam: "",
 			}
 		},
 		async onLoad() {
-			// var sysUser={};
-			// Object.assign(this.sysUser,this.userInfo.sysUser);
-			// Object.assign(this.esmUserInternal,this.userInfo.esmUserInternal);
-			// Object.assign(this.esmUserAgent,this.userInfo.esmUserAgent);
-
+			var sysUser = {};
+			Object.assign(this.sysUser, this.userInfo.sysUser);
 			// // 查询推荐人信息
-			// if(!!this.userCheckInfo.esmUserAgent.recommenderid){
-			// 	let res = await this.$http.get('/user/findById?id='+this.userCheckInfo.esmUserAgent.recommenderid);
-			// 	if((res.code == '200') && (res.data!= null)){
-			// 		this.showRecommend=true;
+			// if (!!this.userCheckInfo.esmUserAgent.recommenderid) {
+			// 	let res = await this.$http.get('/user/findById?id=' + this.userCheckInfo.esmUserAgent.recommenderid);
+			// 	if ((res.code == '200') && (res.data != null)) {
+			// 		this.showRecommend = true;
 			// 		this.recommenderId = res.data.id;
 			// 		this.recommenderName = res.data.name;
 			// 		this.recommenderComname = res.data.comname;
 			// 		this.recommenderTeam = res.data.deptname;
 			// 	}
 			// }
-			
+
 		},
 		computed: {
-			...mapState(['userInfo','userCheckInfo']),
+			...mapState(['userInfo', 'userCheckInfo']),
 		},
 		methods: {
 			//影像信息
-			toAddImageData(){
+			toAddImageData() {
 				this.navigate({
 					url: "/pages/user/userInfoImage"
-				},"navigateTo",true);
+				}, "navigateTo", true);
 			}
 		}
 	}
 </script>
 
 <style scoped>
-.page{
-	position:absolute;
-	width: 100%;
-	height: 100%;
-	box-sizing: border-box;
-	background-color: #F3F3F3;
-}
-.infoTitle{
-	padding: 20upx;
-	font-weight: bold;
-	background-color: #F3F3F3;
-}
-.user-set-userinfo-list{
-	background: #FFF;
-	padding: 15upx 30upx;
-	border-bottom: 1upx solid #F4F4F4;
-}
-.user-set-userinfo-list>view.info{
-	color: #9B9B9B;
-	width: 100%;
-}
-.user-set-userinfo-list>view:first-child{
-	width:190upx;
-	flex-shrink: 0;
-}
-.user-set-userinfo-list>view:last-child{
-	width:30upx;
-	flex-shrink: 0;
-}
-.user-set-userinfo-list>view:last-child>image{
-	width: 80upx;
-	height: 80upx;
-	border-radius: 100%;
-}
-.user-set-userinfo-list>view:last-child>input{
-	text-align: right;
-}
-.user-set-userinfo-list>view:last-child>view:last-of-type{
-	margin-left: 20upx;
-	color: #9B9B9B;
-}
-</style>
+	.page {
+		position: absolute;
+		width: 100%;
+		height: 100%;
+		box-sizing: border-box;
+		background-color: #F3F3F3;
+	}
+
+	.infoTitle {
+		padding: 20upx;
+		font-weight: bold;
+		background-color: #F3F3F3;
+	}
+
+	.user-set-userinfo-list {
+		background: #FFF;
+		padding: 15upx 30upx;
+		border-bottom: 1upx solid #F4F4F4;
+	}
+
+	.user-set-userinfo-list>view.info {
+		color: #9B9B9B;
+		width: 100%;
+	}
+
+	.user-set-userinfo-list>view:first-child {
+		width: 190upx;
+		flex-shrink: 0;
+	}
+
+	.user-set-userinfo-list>view:last-child {
+		width: 30upx;
+		flex-shrink: 0;
+	}
+
+	.user-set-userinfo-list>view:last-child>image {
+		width: 80upx;
+		height: 80upx;
+		border-radius: 100%;
+	}
+
+	.user-set-userinfo-list>view:last-child>input {
+		text-align: right;
+	}
+
+	.user-set-userinfo-list>view:last-child>view:last-of-type {
+		margin-left: 20upx;
+		color: #9B9B9B;
+	}
+</style>