cmy 1 rok pred
rodič
commit
0261f2d8ef
100 zmenil súbory, kde vykonal 39349 pridanie a 0 odobranie
  1. 13 0
      .gitignore
  2. 45 0
      App.vue
  3. 0 0
      access/amap-wx.js
  4. 39 0
      access/base64.js
  5. 110 0
      access/common.js
  6. 308 0
      access/utils.js
  7. 272 0
      access/wa-permission/permission.js
  8. 472 0
      common/http.api.js
  9. 93 0
      common/http.interceptor.js
  10. 1133 0
      components/AddCardModel.vue
  11. 440 0
      components/GoodsItem.vue
  12. 217 0
      components/J-skeleton.vue
  13. 303 0
      components/Login.vue
  14. 80 0
      components/NoLoginTip.vue
  15. 260 0
      components/PageDesign/PageDesign.vue
  16. 255 0
      components/PageDesign/components/AdvGroup.vue
  17. 55 0
      components/PageDesign/components/Banner.vue
  18. 24 0
      components/PageDesign/components/Blank.vue
  19. 155 0
      components/PageDesign/components/CouponGroup.vue
  20. 851 0
      components/PageDesign/components/GoodsGroup.vue
  21. 341 0
      components/PageDesign/components/LimitedSeckill.vue
  22. 32 0
      components/PageDesign/components/Line.vue
  23. 216 0
      components/PageDesign/components/MagicImg.vue
  24. 97 0
      components/PageDesign/components/NavBar.vue
  25. 107 0
      components/PageDesign/components/NavigationBar.vue
  26. 152 0
      components/PageDesign/components/Notice.vue
  27. 82 0
      components/PageDesign/components/Search.vue
  28. 72 0
      components/PageDesign/components/shopInfo.vue
  29. 449 0
      components/SelSkuPop.vue
  30. 60 0
      components/Tabbar/index.vue
  31. 52 0
      components/empty/index.vue
  32. 310 0
      components/its-calendar/its-calendar.vue
  33. 220 0
      components/setMealMore.vue
  34. 108 0
      components/struggler-uniapp-add-tip/struggler-uniapp-add-tip.vue
  35. 30 0
      components/uni-status-bar/uni-status-bar.vue
  36. 25 0
      config.js
  37. 8 0
      ext.json
  38. 65 0
      main.js
  39. 192 0
      manifest.json
  40. 303 0
      mixin/goPage.js
  41. 662 0
      pages.json
  42. 817 0
      pages/cart/cart.vue
  43. 326 0
      pages/classification/CateFive.vue
  44. 658 0
      pages/classification/CateFour.vue
  45. 80 0
      pages/classification/CateOne.vue
  46. 293 0
      pages/classification/CateThree.vue
  47. 76 0
      pages/classification/CateTwo.vue
  48. 176 0
      pages/classification/cate.vue
  49. 100 0
      pages/index/FullScreen.vue
  50. 127 0
      pages/index/SearchAddress.vue
  51. 135 0
      pages/index/StartUpPage.vue
  52. 623 0
      pages/index/index.vue
  53. 1158 0
      pages/user/user.vue
  54. 157 0
      pagesT/Distribution/AddUpMoney.vue
  55. 34 0
      pagesT/Distribution/Agreement.vue
  56. 194 0
      pagesT/Distribution/Application.vue
  57. 321 0
      pagesT/Distribution/ApplyAudit.vue
  58. 374 0
      pagesT/Distribution/ApplyTerm.vue
  59. 389 0
      pagesT/Distribution/DOrder.vue
  60. 262 0
      pagesT/Distribution/Distribution.vue
  61. 516 0
      pagesT/Distribution/DorderDetail.vue
  62. 293 0
      pagesT/Distribution/GradeDescription.vue
  63. 181 0
      pagesT/Distribution/IncomeDetails.vue
  64. 271 0
      pagesT/Distribution/MyGroup.vue
  65. 222 0
      pagesT/Distribution/NotRecorded.vue
  66. 383 0
      pagesT/Distribution/Poster.vue
  67. 222 0
      pagesT/Distribution/Ranking.vue
  68. 434 0
      pagesT/Distribution/Withdrawal.vue
  69. 61 0
      pagesT/activity/Activity.vue
  70. 175 0
      pagesT/address/SelAddress.vue
  71. 286 0
      pagesT/address/address.vue
  72. 274 0
      pagesT/address/addressManage.vue
  73. 151 0
      pagesT/binding/bindInfo.vue
  74. 405 0
      pagesT/binding/bindPhone.vue
  75. 73 0
      pagesT/components/CartFloat.vue
  76. 222 0
      pagesT/components/coupon/CouponView.vue
  77. 196 0
      pagesT/components/coupon/VipView.vue
  78. 152 0
      pagesT/components/qiniu/QiniuUpload.vue
  79. 172 0
      pagesT/components/qiniu/qiniuUploader.js
  80. 144 0
      pagesT/components/region/RegionSel.vue
  81. 14011 0
      pagesT/components/region/area.json
  82. 438 0
      pagesT/components/wm-poster/wm-poster.vue
  83. 443 0
      pagesT/goodsGroup/goodsGroupDetail.vue
  84. 171 0
      pagesT/goodsGroup/index.vue
  85. 109 0
      pagesT/money/Balance.vue
  86. 105 0
      pagesT/money/BalanceDetail.vue
  87. 304 0
      pagesT/money/BankPay.vue
  88. 315 0
      pagesT/money/CustomerBalanceDetail.vue
  89. 95 0
      pagesT/money/PayPassword.vue
  90. 164 0
      pagesT/money/PayPasswordAgin.vue
  91. 110 0
      pagesT/money/PayPasswordEditCheck.vue
  92. 397 0
      pagesT/money/addWithdrawal.vue
  93. 699 0
      pagesT/money/pay.vue
  94. 125 0
      pagesT/money/paySuccess.vue
  95. 133 0
      pagesT/order/CancelOrder.vue
  96. 134 0
      pagesT/order/ReturnOrder.vue
  97. 271 0
      pagesT/order/ReturnSales.vue
  98. 33 0
      pagesT/order/createOrder.vue
  99. 868 0
      pagesT/order/createOrderT.vue
  100. 583 0
      pagesT/order/order.vue

+ 13 - 0
.gitignore

@@ -0,0 +1,13 @@
+.DS_Store
+/dist
+/node_modules
+package-lock.json
+yarn.lock
+yarn-error.log
+.idea/
+.vscode/
+loader
+electron-dist/
+build/packages
+unpackage/
+.hbuilderx/

+ 45 - 0
App.vue

@@ -0,0 +1,45 @@
+<script>
+export default {
+	onLaunch() {
+		uni.setStorageSync('showchangename',0)
+		// #ifdef MP-WEIXIN
+		const updateManager = wx.getUpdateManager();
+
+		updateManager.onCheckForUpdate(function(res) {
+			// 请求完新版本信息的回调
+			console.log(res.hasUpdate);
+		});
+
+		updateManager.onUpdateReady(function() {
+			wx.showModal({
+				title: '更新提示',
+				content: '新版本已经准备好,是否重启应用?',
+				success: function(res) {
+					if (res.confirm) {
+						// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
+						updateManager.applyUpdate();
+					}
+				}
+			});
+		});
+
+		updateManager.onUpdateFailed(function() {
+			// 新版本下载失败
+		});
+		// #endif
+	},
+	onShow() {
+		// console.log('App Show');
+	},
+	onHide() {
+		// console.log('App Hide');
+	}
+};
+</script>
+<style>
+@import url('./static/css/iconfont.css');
+@import url('./static/css/common.css');
+</style>
+<style lang="scss">
+@import 'uview-ui/index.scss';
+</style>

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
access/amap-wx.js


+ 39 - 0
access/base64.js

@@ -0,0 +1,39 @@
+export function encode(input) {
+	let _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+	let chr1, chr2, chr3, enc1, enc2, enc3, enc4, i = 0,
+		output = '',
+		utftext = '';
+	input = input.replace(/\r\n/g, "\n");
+	for (let n = 0; n < input.length; n++) {
+		let c = input.charCodeAt(n);
+		if (c < 128) {
+			utftext += String.fromCharCode(c);
+		} else if ((c > 127) && (c < 2048)) {
+			utftext += String.fromCharCode((c >> 6) | 192);
+			utftext += String.fromCharCode((c & 63) | 128);
+		} else {
+			utftext += String.fromCharCode((c >> 12) | 224);
+			utftext += String.fromCharCode(((c >> 6) & 63) | 128);
+			utftext += String.fromCharCode((c & 63) | 128);
+		}
+
+	}
+	while (i < utftext.length) {
+		chr1 = utftext.charCodeAt(i++);
+		chr2 = utftext.charCodeAt(i++);
+		chr3 = utftext.charCodeAt(i++);
+		enc1 = chr1 >> 2;
+		enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
+		enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
+		enc4 = chr3 & 63;
+		if (isNaN(chr2)) {
+			enc3 = enc4 = 64;
+		} else if (isNaN(chr3)) {
+			enc4 = 64;
+		}
+		output = output +
+			_keyStr.charAt(enc1) + _keyStr.charAt(enc2) +
+			_keyStr.charAt(enc3) + _keyStr.charAt(enc4);
+	}
+	return output;
+}

+ 110 - 0
access/common.js

@@ -0,0 +1,110 @@
+import {
+	encode
+} from '@/access/base64.js';
+/**
+ * 判断是否登陆
+ * returns {boolean}
+ */
+export function isLogin() {
+	return !!uni.getStorageSync('token')
+}
+/**
+ * 判断当前系统
+ */
+export function source() {
+	// #ifdef H5
+	const app = navigator.appVersion;
+	const ua = navigator.userAgent.toLowerCase(); //获取判断用的对象
+	//在微信浏览器中打开
+	if (ua.match(/MicroMessenger/i) == 'micromessenger') {
+		return 9
+	} else {
+		return 5
+	}
+	return 5;
+	// #endif
+	// #ifdef MP-WEIXIN
+	return 3;
+	// #endif
+	// #ifdef MP-TOUTIAO
+	return 8;
+	// #endif
+	// #ifdef APP-PLUS
+	const res = uni.getSystemInfoSync();
+	return res.platform === 'ios' ? 1 : 2;
+	// #endif
+}
+
+/**
+ * 获取用户信息
+ */
+export function getUserInfo() {
+	const session = JSON.parse(uni.getStorageSync('userInfo')) || {}
+	return session
+}
+/**
+ * 获取登录过期时间
+ */
+export function getExpireTime() {
+	const session = uni.getStorageSync('expireTime') || ''
+	return session
+}
+/**
+ * 获取用户登录token
+ */
+export function getToken() {
+	const token = uni.getStorageSync('token') || ''
+	return token
+}
+// 获取微信小程序用户的图像
+export function getAvator() {
+	const avator = uni.getStorageSync('avator') || ''
+	return avator
+}
+// 获取微信小程序用户昵称
+export function getName() {
+	const NickName = uni.getStorageSync('NickName') || ''
+	return NickName
+}
+// 获取微信小程序session_key
+export function getkey() {
+	const session_key = uni.getStorageSync('session_key') || ''
+	return session_key
+}
+// 获取微信小程序getUnionId
+export function getUnionId() {
+	const unionId = uni.getStorageSync('unionid') || ''
+	return unionId
+}
+// 一键登录的手机号
+export function getphoneNumber() {
+	const phoneNumber = uni.getStorageSync('phoneNumber') || ''
+	return phoneNumber
+}
+/**
+ * 获取企业token
+ */
+export function getEnToken() {
+	// return '35e97bca34dab476692d2ad8cc47954b' //dev
+	// return 'b8ca10e4ce35fded735c980403dfedf7' //master
+	// #ifdef MP
+	// const entoken = uni.getExtConfigSync().token || ''
+	return "931544405107da76ca2ec31cd63fae49"
+	// return "fa4c7dee4c8c37d41204a9c1e11f3e43"
+	// return entoken
+	// #endif
+	// #ifdef H5||APP-PLUS
+	// return "fa4c7dee4c8c37d41204a9c1e11f3e43"
+	return "931544405107da76ca2ec31cd63fae49"
+	// #endif
+}
+// 获取openid
+export function getOpenid() {
+	const openid = uni.getStorageSync('openid') || '';
+	return openid;
+}
+// 获取 请求头 定位信息
+export function getLocation() {
+	const location = uni.getStorageSync('locationObj') || '';
+	return encode(location);
+}

+ 308 - 0
access/utils.js

@@ -0,0 +1,308 @@
+/**
+ * 将小数点后面的字体变小
+ * */
+export const splitPrice = (price = 0, px = 10) => {
+	let arr = (price || 0).toString().split(".");
+	return `${arr[0]}<span style="font-size:${px}px;">.${arr[1]||"00"}</span>`;
+}
+
+// 判断市场常见的几种刘海屏机型
+export const modelmes = () => {
+	// 判断市场常见的几种刘海屏机型
+	const systemInfo = uni.getSystemInfoSync();
+	let modelmes = systemInfo.model;
+	if (modelmes.indexOf('iPhone X') >= 0 || modelmes.indexOf('iPhone XR') >= 0 || modelmes.indexOf('iPhone XS') >=
+		0 ||
+		modelmes.indexOf('iPhone 12') >= 0 || modelmes.indexOf('iPhone 11') >= 0 || modelmes.indexOf('iPhone11') >=
+		0 ||
+		modelmes.indexOf('iPhone12') >= 0 || modelmes.indexOf('iPhoneXR') >= 0 || modelmes.indexOf('iPhoneX') >= 0
+	) {
+		return true
+	} else {
+		return false
+	}
+}
+/**
+ * 将rgba转为十六进制
+ * */
+export const hexify = (color) => {
+	if (!color) return ''
+	var values = color
+		.replace(/rgba?\(/, '')
+		.replace(/\)/, '')
+		.replace(/[\s+]/g, '')
+		.split(',');
+	var a = parseFloat(values[3] || 1),
+		r = Math.floor(a * parseInt(values[0]) + (1 - a) * 255),
+		g = Math.floor(a * parseInt(values[1]) + (1 - a) * 255),
+		b = Math.floor(a * parseInt(values[2]) + (1 - a) * 255);
+	return "#" +
+		("0" + r.toString(16)).slice(-2) +
+		("0" + g.toString(16)).slice(-2) +
+		("0" + b.toString(16)).slice(-2);
+}
+
+/**
+ * 将十六进制颜色转为rgba
+ *使用时只需传入十六进制字符串,“n”表示透明度
+ * */
+export const colorRgba = (str, n) => {
+	console.log(n)
+	// 十六进制颜色值的正则表达式
+	let reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/
+	let sColor = str.toLowerCase()
+	if (str === 'rgb(95,171,42)') {
+		sColor = '#91E055'.toLowerCase()
+	}
+	if (str === 'rgb(145,224,85)') {
+		sColor = '#5FAB2A'.toLowerCase()
+	}
+	// 十六进制颜色转换为RGB格式
+	if (sColor && reg.test(sColor)) {
+		if (sColor.length === 4) {
+			let sColorNew = '#'
+			for (let i = 1; i < 4; i += 1) { // 例如:#eee,#fff等
+				sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1))
+			}
+			sColor = sColorNew
+		}
+		// 处理六位颜色值
+		let sColorChange = []
+		for (let i = 1; i < 7; i += 2) {
+			sColorChange.push(parseInt('0x' + sColor.slice(i, i + 2)))
+		}
+		return 'rgba(' + sColorChange.join(',') + ',' + n + ')'
+	} else {
+		return sColor
+	}
+}
+// 获取【加载更多】组件状态
+export function loadStatus(page, pageSize, total) {
+	if (total / pageSize > page) {
+		return 'loadmore';
+	} else {
+		return 'nomore';
+	}
+}
+/*加法函数,用来得到精确的加法结果 */
+export const accAdd = (num1, num2) => {
+	var p1 = 0;
+	var p2 = 0;
+
+	if (num1.toString().split('.').length > 1) {
+		p1 = num1.toString().split('.')[1].length;
+	}
+
+	if (num2.toString().split('.').length > 1) {
+		p2 = num2.toString().split(".")[1].length;
+	}
+
+	var p = p1 > p2 ? p1 : p2;
+
+	var n1 = num1 * Math.pow(10, p);
+	var n2 = num2 * Math.pow(10, p);
+
+	var result = (n1 + n2) / Math.pow(10, p);
+
+	return parseFloat(result.toPrecision(12));
+}
+/*减法函数,用来得到精确的减法结果 */
+export const Subtr = (arg1, arg2) => {
+	var r1, r2, m, n;
+	try {
+		r1 = arg1.toString().split(".")[1].length
+	} catch (e) {
+		r1 = 0
+	}
+	try {
+		r2 = arg2.toString().split(".")[1].length
+	} catch (e) {
+		r2 = 0
+	}
+	m = Math.pow(10, Math.max(r1, r2));
+	//last modify by deeka
+	//动态控制精度长度
+	n = (r1 >= r2) ? r1 : r2;
+	var result = ((arg1 * m - arg2 * m) / m).toFixed(n);
+	return result
+}
+
+// 本月第一天
+export function showMonthFirstDay() {
+	var Nowdate = new Date();
+	var MonthFirstDay = new Date(Nowdate.getFullYear(), Nowdate.getMonth(), 1);
+	const M = Number(MonthFirstDay.getMonth()) + 1;
+	return (
+		MonthFirstDay.getFullYear() +
+		"-" +
+		M +
+		"-" +
+		MonthFirstDay.getDate() +
+		" 00:00:00"
+	);
+}
+/**
+ * @description 时间格式化  时间戳转换为时间
+ * @param date
+ * @param fmt
+ * @return {*}
+ */
+export function formatDate(date, fmt) {
+	if (!date) {
+		return ''
+	}
+	// if (typeof date !== 'string') {
+	//   return ''
+	// }
+	date *= (date.toString().length === 10 ? 1000 : 1)
+	let _date = new Date(date)
+	let _fmt = fmt || 'yyyy-MM-dd hh:mm:ss'
+	let o = {
+		'M+': _date.getMonth() + 1,
+		'd+': _date.getDate(),
+		'h+': _date.getHours(),
+		'm+': _date.getMinutes(),
+		's+': _date.getSeconds()
+	}
+	if (/(y+)/.test(_fmt)) {
+		_fmt = _fmt.replace(RegExp.$1, (_date.getFullYear() + '').substr(4 - RegExp.$1.length))
+	}
+	for (let k in o) {
+		if (new RegExp('(' + k + ')').test(_fmt)) {
+			_fmt = _fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k])
+				.length)))
+		}
+	}
+	return _fmt
+}
+
+/**
+ * @description 时间格式化  时间字符串转换为时间戳
+ * @param date
+ * @param len     默认时间戳长度为10位
+ * @return {*}
+ */
+export function dateToStamp(str, len = 10) {
+	// new Date(yyyy-mm-dd hh:mm:ss) 这里ios会返回null,把‘-’划分替换为‘/’划分
+	let date = new Date(str.replace(/-/g, '/'))
+	return parseInt(date.getTime() / (len === 13 ? 1 : 1000))
+}
+/**
+ * 格式化数字,数字每隔三位加个逗号
+ * params: num 需要处理的数字
+ * params: len 需要保留的小数点位数
+ */
+export function formattedNumber(num, len = 2) {
+	let result = "",
+		counter = 0;
+	let formatNum;
+	if (num < 0) {
+		formatNum = formatNub(Math.abs(num) || 0, len);
+	} else {
+		formatNum = formatNub(num || 0, len);
+	}
+	let stringNum = formatNum.toString().split(".");
+	for (let i = stringNum[0].length - 1; i >= 0; i--) {
+		counter++;
+		result = stringNum[0].charAt(i) + result;
+		if (!(counter % 3) && i != 0) {
+			result = "," + result;
+		}
+	}
+	result = num < 0 ? "-" + result : result;
+	if (stringNum[1]) {
+		return "¥" + result + "." + stringNum[1];
+	} else {
+		return "¥" + result;
+	}
+};
+/**
+ * 不四舍五入保留n位小数
+ * params: val 需要处理的数字
+ * params: len 需要保留的小数点位数
+ */
+export function formatNub(num, n = 2) {
+	if (typeof num != "number" && !Number(num)) {
+		return "0.00";
+	}
+
+	num = Number(num).toString();
+	let result = "";
+	let zeroResult = function(n) {
+		let zero = "";
+		for (let i = 0; i < n; i++) {
+			zero += "0";
+		}
+		return zero;
+	};
+	if (num % 1 == 0) {
+		//整数
+		result = num + "." + zeroResult(n);
+	} else {
+		//小数
+		let num1 = num.split(".");
+		if (num1[1].length < n) {
+			result = num1[0] + "." + num1[1] + zeroResult(n - num1[1].length);
+		} else {
+			result = num1[0] + "." + num1[1].substring(0, n);
+		}
+	}
+	return result;
+};
+//省市区截取
+export function getArea(str) {
+	let area = {}
+	let index11 = 0
+	let index1 = str.indexOf("省")
+	if (index1 == -1) {
+		index11 = str.indexOf("自治区")
+		if (index11 != -1) {
+			area.provinceName = str.substring(0, index11 + 3)
+		} else {
+			area.provinceName = str.substring(0, 0)
+		}
+	} else {
+		area.provinceName = str.substring(0, index1 + 1)
+	}
+
+	let index2 = str.indexOf("市")
+	if (index11 == -1) {
+		area.cityName = str.substring(index11 + 1, index2 + 1)
+	} else {
+		if (index11 == 0) {
+			area.cityName = str.substring(index1 + 1, index2 + 1)
+		} else {
+			area.cityName = str.substring(index11 + 3, index2 + 1)
+		}
+	}
+
+
+	let index3 = str.lastIndexOf("区")
+	if (index3 == -1) {
+		index3 = str.indexOf("县")
+		if (index3 == -1) {
+			index3 = str.lastIndexOf("市")
+			area.districtName = str.substring(index2 + 1, index3 + 1)
+		} else {
+			area.districtName = str.substring(index2 + 1, index3 + 1)
+		}
+	} else {
+		area.districtName = str.substring(index2 + 1, index3 + 1)
+	}
+
+	area.address = str.substring(index3 + 1)
+	return area;
+}
+
+/**
+ * 将手机号以3-4-4格式展示
+ * */
+export const mobileFormat = (mobile) => {
+	return mobile.replace(/(\d{3})(\d{4})(\d{4})/, '$1 $2 $3');
+}
+/**
+ * 将手机号空格还原
+ * */
+export const mobileRe = (mobile) => {
+	return mobile.replace(/\s/g, '')
+}

+ 272 - 0
access/wa-permission/permission.js

@@ -0,0 +1,272 @@
+/**
+ * 本模块封装了Android、iOS的应用权限判断、打开应用权限设置界面、以及位置系统服务是否开启
+ */
+
+var isIos
+// #ifdef APP-PLUS
+isIos = (plus.os.name == "iOS")
+// #endif
+
+// 判断推送权限是否开启
+function judgeIosPermissionPush() {
+	var result = false;
+	var UIApplication = plus.ios.import("UIApplication");
+	var app = UIApplication.sharedApplication();
+	var enabledTypes = 0;
+	if (app.currentUserNotificationSettings) {
+		var settings = app.currentUserNotificationSettings();
+		enabledTypes = settings.plusGetAttribute("types");
+		console.log("enabledTypes1:" + enabledTypes);
+		if (enabledTypes == 0) {
+			console.log("推送权限没有开启");
+		} else {
+			result = true;
+			console.log("已经开启推送功能!")
+		}
+		plus.ios.deleteObject(settings);
+	} else {
+		enabledTypes = app.enabledRemoteNotificationTypes();
+		if (enabledTypes == 0) {
+			console.log("推送权限没有开启!");
+		} else {
+			result = true;
+			console.log("已经开启推送功能!")
+		}
+		console.log("enabledTypes2:" + enabledTypes);
+	}
+	plus.ios.deleteObject(app);
+	plus.ios.deleteObject(UIApplication);
+	return result;
+}
+
+// 判断定位权限是否开启
+function judgeIosPermissionLocation() {
+	var result = false;
+	var cllocationManger = plus.ios.import("CLLocationManager");
+	var status = cllocationManger.authorizationStatus();
+	result = (status != 2)
+	console.log("定位权限开启:" + result);
+	// 以下代码判断了手机设备的定位是否关闭,推荐另行使用方法 checkSystemEnableLocation
+	/* var enable = cllocationManger.locationServicesEnabled();
+	var status = cllocationManger.authorizationStatus();
+	console.log("enable:" + enable);
+	console.log("status:" + status);
+	if (enable && status != 2) {
+		result = true;
+		console.log("手机定位服务已开启且已授予定位权限");
+	} else {
+		console.log("手机系统的定位没有打开或未给予定位权限");
+	} */
+	plus.ios.deleteObject(cllocationManger);
+	return result;
+}
+
+// 判断麦克风权限是否开启
+function judgeIosPermissionRecord() {
+	var result = false;
+	var avaudiosession = plus.ios.import("AVAudioSession");
+	var avaudio = avaudiosession.sharedInstance();
+	var permissionStatus = avaudio.recordPermission();
+	console.log("permissionStatus:" + permissionStatus);
+	if (permissionStatus == 1684369017 || permissionStatus == 1970168948) {
+		console.log("麦克风权限没有开启");
+	} else {
+		result = true;
+		console.log("麦克风权限已经开启");
+	}
+	plus.ios.deleteObject(avaudiosession);
+	return result;
+}
+
+// 判断相机权限是否开启
+function judgeIosPermissionCamera() {
+	var result = false;
+	var AVCaptureDevice = plus.ios.import("AVCaptureDevice");
+	var authStatus = AVCaptureDevice.authorizationStatusForMediaType('vide');
+	console.log("authStatus:" + authStatus);
+	if (authStatus == 3) {
+		result = true;
+		console.log("相机权限已经开启");
+	} else {
+		console.log("相机权限没有开启");
+	}
+	plus.ios.deleteObject(AVCaptureDevice);
+	return result;
+}
+
+// 判断相册权限是否开启
+function judgeIosPermissionPhotoLibrary() {
+	var result = false;
+	var PHPhotoLibrary = plus.ios.import("PHPhotoLibrary");
+	var authStatus = PHPhotoLibrary.authorizationStatus();
+	console.log("authStatus:" + authStatus);
+	if (authStatus == 3) {
+		result = true;
+		console.log("相册权限已经开启");
+	} else {
+		console.log("相册权限没有开启");
+	}
+	plus.ios.deleteObject(PHPhotoLibrary);
+	return result;
+}
+
+// 判断通讯录权限是否开启
+function judgeIosPermissionContact() {
+	var result = false;
+	var CNContactStore = plus.ios.import("CNContactStore");
+	var cnAuthStatus = CNContactStore.authorizationStatusForEntityType(0);
+	if (cnAuthStatus == 3) {
+		result = true;
+		console.log("通讯录权限已经开启");
+	} else {
+		console.log("通讯录权限没有开启");
+	}
+	plus.ios.deleteObject(CNContactStore);
+	return result;
+}
+
+// 判断日历权限是否开启
+function judgeIosPermissionCalendar() {
+	var result = false;
+	var EKEventStore = plus.ios.import("EKEventStore");
+	var ekAuthStatus = EKEventStore.authorizationStatusForEntityType(0);
+	if (ekAuthStatus == 3) {
+		result = true;
+		console.log("日历权限已经开启");
+	} else {
+		console.log("日历权限没有开启");
+	}
+	plus.ios.deleteObject(EKEventStore);
+	return result;
+}
+
+// 判断备忘录权限是否开启
+function judgeIosPermissionMemo() {
+	var result = false;
+	var EKEventStore = plus.ios.import("EKEventStore");
+	var ekAuthStatus = EKEventStore.authorizationStatusForEntityType(1);
+	if (ekAuthStatus == 3) {
+		result = true;
+		console.log("备忘录权限已经开启");
+	} else {
+		console.log("备忘录权限没有开启");
+	}
+	plus.ios.deleteObject(EKEventStore);
+	return result;
+}
+
+// Android权限查询
+function requestAndroidPermission(permissionID) {
+	return new Promise((resolve, reject) => {
+		plus.android.requestPermissions(
+			[permissionID], // 理论上支持多个权限同时查询,但实际上本函数封装只处理了一个权限的情况。有需要的可自行扩展封装
+			function(resultObj) {
+				var result = 0;
+				for (var i = 0; i < resultObj.granted.length; i++) {
+					var grantedPermission = resultObj.granted[i];
+					console.log('已获取的权限:' + grantedPermission);
+					result = 1
+				}
+				for (var i = 0; i < resultObj.deniedPresent.length; i++) {
+					var deniedPresentPermission = resultObj.deniedPresent[i];
+					console.log('拒绝本次申请的权限:' + deniedPresentPermission);
+					result = 0
+				}
+				for (var i = 0; i < resultObj.deniedAlways.length; i++) {
+					var deniedAlwaysPermission = resultObj.deniedAlways[i];
+					console.log('永久拒绝申请的权限:' + deniedAlwaysPermission);
+					result = -1
+				}
+				resolve(result);
+				// 若所需权限被拒绝,则打开APP设置界面,可以在APP设置界面打开相应权限
+				// if (result != 1) {
+				// gotoAppPermissionSetting()
+				// }
+			},
+			function(error) {
+				console.log('申请权限错误:' + error.code + " = " + error.message);
+				resolve({
+					code: error.code,
+					message: error.message
+				});
+			}
+		);
+	});
+}
+
+// 使用一个方法,根据参数判断权限
+function judgeIosPermission(permissionID) {
+	if (permissionID == "location") {
+		return judgeIosPermissionLocation()
+	} else if (permissionID == "camera") {
+		return judgeIosPermissionCamera()
+	} else if (permissionID == "photoLibrary") {
+		return judgeIosPermissionPhotoLibrary()
+	} else if (permissionID == "record") {
+		return judgeIosPermissionRecord()
+	} else if (permissionID == "push") {
+		return judgeIosPermissionPush()
+	} else if (permissionID == "contact") {
+		return judgeIosPermissionContact()
+	} else if (permissionID == "calendar") {
+		return judgeIosPermissionCalendar()
+	} else if (permissionID == "memo") {
+		return judgeIosPermissionMemo()
+	}
+	return false;
+}
+
+// 跳转到**应用**的权限页面
+function gotoAppPermissionSetting() {
+	if (isIos) {
+		var UIApplication = plus.ios.import("UIApplication");
+		var application2 = UIApplication.sharedApplication();
+		var NSURL2 = plus.ios.import("NSURL");
+		// var setting2 = NSURL2.URLWithString("prefs:root=LOCATION_SERVICES");		
+		var setting2 = NSURL2.URLWithString("app-settings:");
+		application2.openURL(setting2);
+
+		plus.ios.deleteObject(setting2);
+		plus.ios.deleteObject(NSURL2);
+		plus.ios.deleteObject(application2);
+	} else {
+		// console.log(plus.device.vendor);
+		var Intent = plus.android.importClass("android.content.Intent");
+		var Settings = plus.android.importClass("android.provider.Settings");
+		var Uri = plus.android.importClass("android.net.Uri");
+		var mainActivity = plus.android.runtimeMainActivity();
+		var intent = new Intent();
+		intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
+		var uri = Uri.fromParts("package", mainActivity.getPackageName(), null);
+		intent.setData(uri);
+		mainActivity.startActivity(intent);
+	}
+}
+
+// 检查系统的设备服务是否开启
+// var checkSystemEnableLocation = async function () {
+function checkSystemEnableLocation() {
+	if (isIos) {
+		var result = false;
+		var cllocationManger = plus.ios.import("CLLocationManager");
+		var result = cllocationManger.locationServicesEnabled();
+		console.log("系统定位开启:" + result);
+		plus.ios.deleteObject(cllocationManger);
+		return result;
+	} else {
+		var context = plus.android.importClass("android.content.Context");
+		var locationManager = plus.android.importClass("android.location.LocationManager");
+		var main = plus.android.runtimeMainActivity();
+		var mainSvr = main.getSystemService(context.LOCATION_SERVICE);
+		var result = mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER);
+		console.log("系统定位开启:" + result);
+		return result
+	}
+}
+
+module.exports = {
+	judgeIosPermission: judgeIosPermission,
+	requestAndroidPermission: requestAndroidPermission,
+	checkSystemEnableLocation: checkSystemEnableLocation,
+	gotoAppPermissionSetting: gotoAppPermissionSetting
+}

+ 472 - 0
common/http.api.js

@@ -0,0 +1,472 @@
+// 此处第二个参数vm,就是我们在页面使用的this,你可以通过vm获取vuex等操作,更多内容详见uView对拦截器的介绍部分:
+// https://uviewui.com/js/http.html#%E4%BD%95%E8%B0%93%E8%AF%B7%E6%B1%82%E6%8B%A6%E6%88%AA%EF%BC%9F
+const install = (Vue, vm) => {
+	// 将各个定义的接口名称,统一放进对象挂载到vm.$u.api(因为vm就是this,也即this.$u.api)下
+	vm.$u.api = {
+		// 根据系统模板d获取对应模板设置内容
+		getSettingDataByMessageId: (params = '') => vm.$u.post(
+			`/System/ApiPushMessage/getSettingDataByMessageIds`, params),
+		// 获取app版本
+		getVersion: (params = '') => vm.$u.post(`/System/ApiBasicSetup/getVersion`, params),
+
+		// App微信授权登录获取unionID
+		unionIDUserinfo: (params = '') => vm.$u.post(`/Common/Login/userinfo`, params),
+		// 获取网页版access_token type 1 公众号  2开放平台 {"code":"","type":2}
+		getAccessToken: (params = '') => vm.$u.post(`/Common/Login/access_token`, params),
+		// 判断订单支付状态
+		orderquery: (params = '') => vm.$u.post(`/Common/Pay/orderquery`, params),
+
+		// 字节跳动获取分享小程序码
+		byteCreateQRCode: (params = '') => vm.$u.post(`/Common/Login/byteCreateQRCode`, params),
+
+		// 获取分享微信小程序码 
+		createwxaqrcode: (params = '') => vm.$u.post(`/common/login/createwxaqrcode`, params),
+
+		// 获取基础资料 
+		getCustomerInfo: (params = '') => vm.$u.get(`/Customer/ApiCustomer/getCustomerInfo`, params),
+
+		//基础资料 
+		editCustomerInfo: (params = '') => vm.$u.post(`/Customer/ApiCustomer/editCustomerInfo`, params),
+		//首页模版及数据
+		getTemplate: (params = '') => vm.$u.get(`/System/ApiTemplate/getTemplate`, params),
+		//首页(万能模版)
+		getHome: (params = '') => vm.$u.get(`/System/ApiPage/home`, params),
+		//首页模版及数据2
+		homePage: (params = '') => vm.$u.post(`/System/ApiTemplate/homePage`, params),
+
+		//首页模版及数据2
+		getDetailById: (id, params = '') => vm.$u.get(`/System/ApiPage/getDetailById/${id}`, params),
+		/**
+		 * 地区
+		 * */
+		// 获取省份
+		getAllProvince: () => vm.$u.get(`/Common/SysAreaChina/getAllProvince`),
+		// 获取省下的市
+		getAllCityByProvinceCode: (code = '') => vm.$u.get(
+			`/Common/SysAreaChina/getAllCityByProvinceCode/${code}`),
+		// 获取市下的区
+		getAllAreaByCityCode: (code = '') => vm.$u.get(`/Common/SysAreaChina/getAllAreaByCityCode/${code}`),
+		/**
+		 * 生成七牛上传凭证
+		 * */
+		uploadToken: (params = '') => vm.$u.post(`/Common/Upload/uploadToken`, params),
+		UploadDel: (params = '') => vm.$u.post(`/Common/Upload/delete`, params),
+		// 短信登录 
+		smsLogin: (params = '') => vm.$u.post(`/UserCenter/ApiUserCenter/smsLogin`, params),
+		// 用户登录 
+		login: (params = '') =>
+			vm.$u.post(`/UserCenter/ApiUserCenter/login`, params),
+
+		//用户注册 
+		addUserCenter: (params = '') =>
+			vm.$u.post(`/UserCenter/ApiUserCenter/register`, params),
+
+		// 发送验证码 
+		sendMobileCode: (params = '') =>
+			vm.$u.post(`/Common/SmsCode/sendMobileCode`, params),
+
+		// 判断用户是否注册过 
+		mobileIsRegister: (id, params = '') =>
+			vm.$u.get(`/UserCenter/ApiUserCenter/mobileIsRegister/${id}`, params),
+
+		// 忘记密码  
+		forgetPassword: (params = '') =>
+			vm.$u.post(`/UserCenter/ApiUserCenter/changePassword`, params),
+
+		// 小程序绑定手机号
+		appletsBindMobile: (params = '') =>
+			vm.$u.post(`/UserCenter/ApiUserCenter/appletsBindMobile`, params),
+
+		// 根据openID进行登录 ApiUser/User/getUserInfoByOpenId
+		getOpenId: (params = '') =>
+			vm.$u.post(`/Common/Login/login`, params),
+
+		// 小程序判断是否已绑定 UserCenter/ApiUserCenter/checkBindMiniProgram  post
+		checkBindMiniProgram: (params = '') =>
+			vm.$u.post(`/UserCenter/ApiUserCenter/checkBindMiniProgram`, params),
+
+		//  小程序解密接口 Common/Login/decryptData
+		decryptData: (params = '') =>
+			vm.$u.post(`/Common/Login/decryptData`, params),
+
+		//  头条小程序登陆
+		microappLogin: (params = '') =>
+			vm.$u.post(`/Common/Login/microappLogin`, params),
+
+		/*-------------分类-----------*/
+		// 分类模版详情
+		getClassSettingInfo: (params = '') =>
+			vm.$u.post(`/System/ApiClassSetting/getClassSettingInfo`, params),
+
+		// 商品列表 Goods/Goods/search post
+		goodSearch: (params = '') =>
+			vm.$u.post(`/Goods/Goods/search`, params),
+
+		// 商品列表 Goods/ApiGoods/getGoodsByCategory  post
+		getGoodsByCategory: (params = '') =>
+			vm.$u.post(`/Goods/ApiGoods/getGoodsByCategory`, params),
+
+		// 商品详情 
+		getGoodsDetail: (id, params = '') =>
+			vm.$u.get(`/Goods/ApiGoods/getGoodsDetail/${id}`, params),
+
+		// 分类列表  GoodsCategory/ApiGoodsCategory/getAllCategory get
+		getAllCategory: (params = '') =>
+			vm.$u.post(`/GoodsCategory/ApiGoodsCategory/getAllCategory`, params),
+
+		// 子分类  GoodsCategory/ApiGoodsCategory/getAllCategoryByPid/1
+		getAllCategoryByPidid: (id, params = '') =>
+			vm.$u.get(`/GoodsCategory/ApiGoodsCategory/getAllCategoryByPid/${id}`, params),
+
+		// 所有一级分类  GoodsCategory/ApiGoodsCategory/getAllCategoryByPid  get
+		getAllCategoryByPid: (params = '') =>
+			vm.$u.get(`/GoodsCategory/ApiGoodsCategory/getAllCategoryByPid`, params),
+		// 小程序服务列表
+		getAllGoodsSupport: (params = '') =>
+			vm.$u.post(`/Goods/apiGoods/getAllGoodsSupport`, params),
+		// 小程序品牌列表
+		getAllBrand: (params = '') =>
+			vm.$u.post(`/Goods/apiGoods/getAllBrand`, params),
+		/*-------------常购清单------------*/
+		// 收藏/取消收藏
+		collectGoods: (id) => vm.$u.get(`/Goods/ApiGoods/collect/${id}`),
+
+		// 常购清单
+		normalList: (params = '') =>
+			vm.$u.post(`/Goods/ApiGoods/normalList`, params),
+
+		/*-------------购物车------------*/
+		// 加入购物车  Cart/ApiCart/addCart post
+		addCart: (params = '') =>
+			vm.$u.post(`/Cart/ApiCart/addCart`, params),
+
+		// 获取购物车 Cart/ApiCart/getCartByUserCenterId get
+		getCartByUserCenterId: (params = '') =>
+			vm.$u.get(`/Cart/ApiCart/getCartByUserCenterId`, params),
+
+		// 移除购物车  Cart/ApiCart/delCart  post
+		delCart: (params = '') =>
+			vm.$u.post(`/Cart/ApiCart/delCart`, params),
+
+		// 购物车商品选中/取消
+		updateSelection: (params = '') =>
+			vm.$u.post(`/Cart/ApiCart/updateSelection`, params),
+
+		// 更新购物车某个商品数量  Cart/ApiCart/updateBuyNum/5 put
+		updateBuyNum: (id, params = '') =>
+			vm.$u.put(`/Cart/ApiCart/updateBuyNum/${id}`, params),
+
+		// 确认订单
+		confirmationOfOrder: (params = '') =>
+			vm.$u.post(`/Cart/ApiCart/confirmationOfOrder`, params),
+		// 组合商品立即购买
+		buyNow: (params = '') =>
+			vm.$u.post(`/Cart/ApiCart/buyNow`, params),
+
+		// 商品立即购买
+		goodsBuyNow: (params = '') =>
+			vm.$u.post(`/cart/apiCart/goodsBuyNow`, params),
+		/*----------地址管理---------------*/
+		// 客户地址添加  Customer/ShippingAddress/addShippingAddress post
+		addShippingAddress: (params = '') =>
+			vm.$u.post(`/Customer/ShippingAddress/addShippingAddress`, params),
+
+		// 客户地址删除 Customer/ShippingAddress/deleteShippingAddress/1 del
+		deleteShippingAddress: (id, params = '') =>
+			vm.$u.delete(`/Customer/ShippingAddress/deleteShippingAddress/${id}`, params),
+
+		// 客户地址修改 Customer/ShippingAddress/updateShippingAddress put
+		updateShippingAddress: (id, params = '') =>
+			vm.$u.put(`/Customer/ShippingAddress/updateShippingAddress/${id}`, params),
+
+		// 客户地址详情 Customer/ShippingAddress/getShippingAddressInfo/1 get
+		getShippingAddressInfo: (id, params = '') =>
+			vm.$u.get(`/Customer/ShippingAddress/getShippingAddressInfo/${id}`, params),
+
+		// 客户类型
+		getCustomerSourceList: (params = '') =>
+			vm.$u.get(`/Customer/ApiCustomer/getCustomerSourceList`, params),
+
+		// 客户余额明细记录
+		getAllCustomerBalanceDetail: (params = '') =>
+			vm.$u.post(`/Customer/apiCustomer/getAllCustomerBalanceDetail`, params),
+
+		// 地址
+		getAllShippingAddress: (params = '') =>
+			vm.$u.post(`/Customer/ShippingAddress/getAllShippingAddress`, params),
+
+		/*---------客户订单---------*/
+		// 用户订单状态数量统计
+		getOrderStatusNum: (params = '') =>
+			vm.$u.post(`/Order/ApiOrder/getOrderStatusNum`, params),
+		// 提交银行打款凭证
+		addOrderBankData: (params = '') =>
+			vm.$u.post(`/Order/ApiOrder/addOrderBankData`, params),
+		// 售后订单列表
+		getAllOrderReturn: (params = '') =>
+			vm.$u.post(`/Order/ApiOrder/getAllOrderReturn`, params),
+
+		// 订单退货添加
+		addOrderReturn: (params = '') =>
+			vm.$u.post(`/Order/ApiOrder/addOrderReturn`, params),
+
+		// 订单物流查询
+		getExpressInfoByOrderId: (id, params = '') =>
+			vm.$u.post(`/Order/ApiOrder/getExpressInfoByOrderId/${id}`, params),
+
+		// 订单
+		getOrderSelect: (params = '') =>
+			vm.$u.post(`/Order/ApiOrder/getOrderSelect`, params),
+
+		// 添加订单
+		addOrder: (params = '') =>
+			vm.$u.post(`/Order/ApiOrder/addOrder`, params),
+
+		// 获取订单详情
+		getOrderInfoById: (id, params = '') =>
+			vm.$u.get(`/Order/ApiOrder/getOrderInfoById/${id}`, params),
+
+		// 取消订单&&确认收货
+		updateOrderStatus: (id, params = '') =>
+			vm.$u.put(`/Order/ApiOrder/updateOrderStatus/${id}`, params),
+
+		// 支付方式列表
+		getPaymentType: (params = '') =>
+			vm.$u.post(`/System/ApiPayment/getPaymentType`, params),
+
+		// 订单再次支付  Order/ApiOrder/payOrder  POST
+		payOrder: (params = '') =>
+			vm.$u.post(`/Order/ApiOrder/payOrder`, params),
+
+		//商品列表页调整购买数量 Cart/ApiCart/updateCartNum/1  put
+		updateCartNum: (id, params = '') =>
+			vm.$u.put(`/Cart/ApiCart/updateCartNum/${id}`, params),
+
+		// 获取用户基本设置  System/ApiBasicSetup/getBasicField  get
+		getBasicField: (params = '') =>
+			vm.$u.post(`/System/ApiBasicSetup/getBasicField`, params),
+
+		// 商品收藏 Customer/ApiCustomer/collect/19
+		collect: (id, params = '') =>
+			vm.$u.get(`/Customer/ApiCustomer/collect/${id}`, params),
+
+		/*---------优惠券---------*/
+		// 优惠券列表(注册,在线支付,主动领取)
+		couponList: (params = '') =>
+			vm.$u.post(`/Market/ApiCoupon/couponList`, params),
+
+		// 领取优惠券
+		receive: (params = '') =>
+			vm.$u.post(`/Market/ApiCoupon/receive`, params),
+
+		// 优惠券盒子
+		couponAll: (params = '') =>
+			vm.$u.post(`/Market/ApiCoupon/selectAll`, params),
+
+		// 获取秒杀列表 Market/ApiActivity/getActivityAll
+		getActivityAll: (params = '') =>
+			vm.$u.get(`/Market/ApiActivity/getActivityAll`, params),
+
+		// 企业详情
+		getEnterpriseInfo: (params = '') =>
+			vm.$u.get(`/Enterprise/ApiEnterprise/getEnterpriseInfo`, params),
+
+		// 会员卡列表 Market/ApiVipCard/getAllVipCard
+		getAllVipCard: (params = '') =>
+			vm.$u.post(`/Market/ApiVipCard/getAllVipCard`, params),
+
+		// 我的会员卡 Market/ApiVipCard/getMyVipCards
+		getMyVipCards: (params = '') =>
+			vm.$u.post(`/Market/ApiVipCard/getMyVipCards`, params),
+
+		// 会员卡详情 Market/ApiVipCard/getVipInfo/1
+		getVipInfo: (id, params = '') =>
+			vm.$u.get(`/Market/ApiVipCard/getVipInfo/${id}`, params),
+
+		// 创建会员卡订单 Market/ApiVipCard/createVipCardOrder
+		createVipCardOrder: (params = '') =>
+			vm.$u.post(`/Market/ApiVipCard/createVipCardOrder`, params),
+
+		// 获取公司的基本设置
+		getBasicSetup: (params = '') =>
+			vm.$u.get(`/System/ApiBasicSetup/getBasicField`, params),
+
+		// 一键领取优惠券(会员卡) Market/ApiCoupon/oneKeyReceive
+		oneKeyReceive: (params = '') =>
+			vm.$u.post(`/Market/ApiCoupon/oneKeyReceive`, params),
+
+		// 订单列表获取我的会员卡 Cart/ApiCart/getVipCard
+		orderVipCard: (params = '') =>
+			vm.$u.get(`/Cart/ApiCart/getVipCard`, params),
+
+		/* 分销中心 */
+		// 分销商申请
+		applicationBusinessman: (params = '') =>
+			vm.$u.post(`/Commission/ApiCommissionBusinessman/applicationBusinessman`, params),
+
+		// 分销商详情
+		getInfoBusinessman: (params = '') =>
+			vm.$u.get(`/Commission/ApiCommissionBusinessman/getInfoBusinessman`, params),
+
+		// 查询设置
+		getDistributionSetting: (params = '') =>
+			vm.$u.post(`/Commission/ApiCommissionSetting/getSetting`, params),
+
+		// 添加上下级关系
+		relationshipBusinessman: (params = '') =>
+			vm.$u.post(`/Commission/ApiCommissionBusinessman/relationshipBusinessman`, params),
+
+		// 查询文字设置
+		getTxtSetting: (params = '') =>
+			vm.$u.post(`/Commission/ApiCommissionSetting/getTxtSetting`, params),
+
+		// 查询分销商的下级
+		getAllSub: (params = '') =>
+			vm.$u.post(`/Commission/ApiCommissionBusinessman/getAllSub`, params),
+
+		// 查询升级商品
+		getBuyGoods: (params = '') =>
+			vm.$u.get(`/Commission/ApiCommissionSetting/getBuyGoods`, params),
+
+		// 分销中心订单
+		getCommissionOrder: (params = '') =>
+			vm.$u.post(`/Commission/ApiCommissionBusinessman/getCommissionOrder`, params),
+		// 分销订单详情
+		getCommissionOrderInfo: (id, params = '') =>
+			vm.$u.post(`/Commission/ApiCommissionBusinessman/getCommissionOrderInfo/${id}`, params),
+		// 申请提现
+		WithdrawalsAdd: (params = '') =>
+			vm.$u.post(`/Commission/ApiCommissionWithdrawals/add`, params),
+		// 获取提现申请列表
+		CommissionWithdrawalsGetAll: (params = '') =>
+			vm.$u.post(`/Commission/ApiCommissionWithdrawals/getAll`, params),
+		// 获取提现申请详情
+		CommissionWithdrawalsDetail: (id, params = '') =>
+			vm.$u.get(`/Commission/ApiCommissionWithdrawals/detail/${id}`, params),
+		// 等级说明
+		getAllGrade: (params = '') =>
+			vm.$u.get(`/Commission/ApiCommissionBusinessman/getAllGrade`, params),
+		// 排行榜
+		commissionTop: (params = '') =>
+			vm.$u.get(`/Commission/ApiCommissionBusinessman/commissionTop`, params),
+		// 获取设置(小程序)
+		MerchantGetSeting: (params = '') =>
+			vm.$u.get(`/Merchant/ApiMerchant/getSetting`, params),
+		// 商户入驻申请(小程序)
+		MerchantApply: (params = '') =>
+			vm.$u.post(`/Merchant/ApiMerchant/addApply`, params),
+		// 入驻申请修改(小程序)
+		updateApply: (id, params = '') =>
+			vm.$u.put(`/Merchant/ApiMerchant/updateApply/${id}`, params),
+		// 取消入驻申请(小程序)
+		delApply: (id, params = '') =>
+			vm.$u.get(`/Merchant/ApiMerchant/delApply/${id}`, params),
+		// 商户详情(小程序)
+		getInfoMerchant: (params = '') =>
+			vm.$u.get(`/Merchant/ApiMerchant/getInfoMerchant`, params),
+		// 商户列表
+		getAllApiMerchant: (params = '') => vm.$u.post(`/Merchant/ApiMerchant/getAll`, params),
+		// 获取店铺页面
+		shopHome: (params = '') =>
+			vm.$u.post(`/System/ApiTemplate/shopHome`, params),
+		// 商户设置
+		getSettingMerchant: (params = '') => vm.$u.post(`/Merchant/Merchant/getSetting`, params),
+		/*------组合套餐------*/
+		// 组合套餐列表
+		listsApiComBinPackage: (params = '') => vm.$u.post(`/Market/ApiComBinPackage/lists`, params),
+		// 组合套餐详情
+		detailsApiComBinPackage: (id, params = '') => vm.$u.get(`/Market/ApiComBinPackage/details/${id}`,
+			params),
+		/*------需求提报------*/
+		// 新增需求提报
+		addCustomerdemand: (params = '') => vm.$u.post(`/Customer/ApiCustomer/addCustomerdemand`, params),
+		/*------余额管理------*/
+		// 修改余额支付密码
+		updatePayPassword: (params = '') => vm.$u.post(`/Customer/ApiCustomer/updatePayPassword`, params),
+		// 添加余额支付密码
+		addpayPassword: (params = '') => vm.$u.post(`/Customer/ApiCustomer/addpayPassword`, params),
+		// 校验余额支付密码
+		checkPayPassword: (params = '') => vm.$u.post(`/Customer/ApiCustomer/checkPayPassword`, params),
+		// 余额明细
+		getAllMemberBalanceDetail: (params = '') => vm.$u.post(
+			`/Customer/apiCustomer/getAllMemberBalanceDetail`, params),
+		/*------股权------*/
+		// 股权商品详情
+		getIntegralGoodsInfo: (id, params = '') => vm.$u.get(
+			`/Integral/ApiIntegralGoods/getIntegralGoodsInfo/${id}`, params),
+		// 股权商品兑换列表
+		getAllIntegralGoodsExchange: (params = '') => vm.$u.post(
+			`/Integral/ApiIntegralGoods/getAllIntegralGoodsExchange`, params),
+		// 股权流水
+		getAllCustomerIntegralDesc: (params = '') => vm.$u.post(
+			`/Customer/ApiCustomer/getAllCustomerIntegralDesc`, params),
+		// 股权商品列表
+		getAllIntegralGoods: (params = '') => vm.$u.post(`/Integral/ApiIntegralGoods/getAllIntegralGoods`,
+			params),
+		// 股权兑换商品
+		addIntegralGoodsExchange: (params = '') => vm.$u.post(
+			`/Integral/ApiIntegralGoods/addIntegralGoodsExchange`, params),
+		// 股权商品兑换详情
+		getIntegralGoodsExchangeInfo: (id, params = '') => vm.$u.get(
+			`/Integral/ApiIntegralGoods/getIntegralGoodsExchangeInfo/${id}`, params),
+		/*------提现------*/
+		// 新增提现
+		addReflectDetail: (params = '') => vm.$u.post(`/Customer/apiCustomer/addReflectDetail`, params),
+		// 获取所有提现记录
+		getAllReflectDetail: (params = '') => vm.$u.post(`/Customer/apiCustomer/getAllReflectDetail`, params),
+		// 项目列表
+		getItemList:(params = '') => vm.$u.get(`/shop/ApiShopProject/list`, params),
+		// 项目详情
+		getItemDetail:(params = '') => vm.$u.get(`/shop/ApiShopProject/details`, params),
+		// 计算详情价格
+		calculation:(params = '') => vm.$u.post(`/shop/ApiShopProject/calculation`, params),
+		//获取门店列表
+		getStoreList: (params = '') => vm.$u.post(`/shop/ApiShop/getAll`, params),
+		//全部员工列表
+		getAllygList: (params = '') => vm.$u.get(`/Department/ApiStaff/staffAll`, params),
+		//选择时间员工 
+		getTimeYgList: (params = '') => vm.$u.post(`/shop/ApiShopProject/choice`, params),
+		//员工预约时间
+		getYgYyTimeArea: (params = '') => vm.$u.post(`/shop/ApiShopProject/choice_time`, params),
+		// 创建项目订单
+		createItemOrder: (params = '') => vm.$u.post(`/shop/ApiShopProject/create`, params),
+		//hop/ApiShopSubscribe/list 用户项目列表
+		getMyItem: (params = '') => vm.$u.post(`/shop/ApiShopSubscribe/list`, params),
+		// 取消预约项目/shop/ApiShopSubscribe/cancel
+		itemCancel: (params = '') => vm.$u.post(`/shop/ApiShopSubscribe/cancel`, params),
+		//支付待支付的项目shop/ApiShopProject/payment
+		itemPayment: (params = '') => vm.$u.post(`/shop/ApiShopProject/payment`, params),
+		// 抵用券列表shop/ApiShopCard/userCard
+		getDyquanList:(params = '') => vm.$u.post(`/shop/ApiShopCard/userCard`, params),
+		// 优惠卡列表
+		getYhkList:(params = '') => vm.$u.post(`/shop/ShopCard/list`, params),
+		//优惠卡详情
+		getYhkDetail:(params = '') => vm.$u.post(`/shop/ShopCard/details`, params),
+		//购买优惠卡
+		buyYhk:(params = '') => vm.$u.post(`/shop/ApiShopCard/buy_card`, params),
+		// 我的优惠卡
+		getMyyhkList:(params = '') => vm.$u.post(`/shop/ApiShopCard/card_order`, params),
+		// 提交员工评价
+		pjYg:(params = '') => vm.$u.post(`/shop/ApiShopSubscribe/comment`, params),
+		//员工详情/Department/staff/getStaffInfo
+		getYgdetail:(params = '') => vm.$u.post(`/Department/staff/getStaffInfo`, params),
+		// 员工评价列表
+		getYgPj:(params = '') => vm.$u.post(`/shop/ApiShopSubscribe/comment_list`, params),
+		//获取1招商2连锁3共享股东4高管
+		getOtherList:(params = '') => vm.$u.post(`/Enterprise/Personnel/list`, params),
+		//用户股权
+		getGq:(params = '') => vm.$u.get(`/UserCenter/ApiUserCenter/holders`, params),
+		//用户分红股份
+		getFh:(params = '') => vm.$u.get(`/UserCenter/ApiUserCenter/holders_bonus`, params),
+		//用户基础股份
+		getBsGf:(params = '') => vm.$u.get(`/UserCenter/ApiUserCenter/holders_record`, params),
+		// 文章详情
+		getArtDetail:(params = '') => vm.$u.get(`/Enterprise/Article/details`, params),
+		// 审核状态
+		getSh:(params = '') => vm.$u.get(`/System/ApiBasicSetup/over_examination`, params),
+	};
+}
+
+export default {
+	install
+}

+ 93 - 0
common/http.interceptor.js

@@ -0,0 +1,93 @@
+// 这里的vm,就是我们在vue文件里面的this,所以我们能在这里获取vuex的变量,比如存放在里面的token
+// 同时,我们也可以在此使用getApp().globalData,如果你把token放在getApp().globalData的话,也是可以使用的
+import {
+	getToken,
+	getEnToken,
+	getLocation
+} from "@/access/common.js"
+import webUrl from '@/config.js'
+const install = (Vue, vm) => {
+	// uni.showNavigationBarLoading()
+	Vue.prototype.$u.http.setConfig({
+		// #ifdef H5
+		baseUrl: webUrl.QN_URL+'/api',
+		// #endif
+		// #ifndef H5
+		baseUrl: webUrl.QN_URL,
+		// #endif
+		loadingTime: 1000, // 在此时间内,请求还没回来的话,就显示加载中动画,单位ms
+		// 如果将此值设置为true,拦截回调中将会返回服务端返回的所有数据response,而不是response.data
+		// 设置为true后,就需要在this.$u.http.interceptor.response进行多一次的判断,请打印查看具体值
+		// originalData: true,
+		// 设置自定义头部content-type
+		// header: {
+		// 	'content-type': 'xxx'
+		// }
+	});
+	// 请求拦截,配置Token等参数
+	Vue.prototype.$u.http.interceptor.request = (config) => {
+		config.header.Authorization = getToken();
+		config.header.Token = getEnToken();
+		config.header.Location = getLocation();
+		console.log('接口token:',getEnToken())
+		// 方式一,存放在vuex的token,假设使用了uView封装的vuex方式,见:https://uviewui.com/components/globalVariable.html
+		// config.header.token = vm.token;
+
+		// 方式二,如果没有使用uView封装的vuex方法,那么需要使用$store.state获取
+		// config.header.token = vm.$store.state.token;
+
+		// 方式三,如果token放在了globalData,通过getApp().globalData获取
+		// config.header.token = getApp().globalData.username;
+
+		// 方式四,如果token放在了Storage本地存储中,拦截是每次请求都执行的,所以哪怕您重新登录修改了Storage,下一次的请求将会是最新值
+		// const token = uni.getStorageSync('token');
+		// config.header.token = token;
+
+		return config;
+	}
+	// 响应拦截,判断状态码是否通过
+	Vue.prototype.$u.http.interceptor.response = (res) => {
+		console.log(res,'fanhui');
+		uni.hideNavigationBarLoading();
+		// 如果把originalData设置为了true,这里得到将会是服务器返回的所有的原始数据
+		// 判断可能变成了res.statueCode,或者res.data.code之类的,请打印查看结果
+		if (res.state || res.data.errorCode === 9999) {
+			// 如果把originalData设置为了true,这里return回什么,this.$u.post的then回调中就会得到什么
+			return res;
+		} else {
+			// if (res.data.errorCode === 9999) {
+			// 	return false
+			// }
+			uni.showToast({
+				title: res.data,
+				icon: 'none'
+			})
+			if (res.data === '要查询的客户不存在') {
+				setTimeout(() => {
+					uni.hideLoading()
+					uni.removeStorageSync('token');
+					uni.removeStorageSync('userStatus');
+					uni.removeStorageSync('cartPrice');
+					uni.removeStorageSync('cartNum');
+					uni.removeStorageSync('loginCode');
+					uni.removeTabBarBadge({
+						index: 2
+					});
+					vm.$store.commit('commit_hasLogin', false);
+					uni.reLaunch({
+						url: '/pagesT/public/wxLogin'
+					})
+				}, 3000)
+				return
+			}
+			setTimeout(() => {
+				uni.hideLoading()
+			}, 3000)
+			return false
+		};
+	}
+}
+
+export default {
+	install
+}

+ 1133 - 0
components/AddCardModel.vue

@@ -0,0 +1,1133 @@
+<template>
+	<view>
+		<!-- 加入购物车弹窗 -->
+		<u-popup :value="isShow" :mask-close-able="false" :border-radius="12" mode="bottom">
+			<view class="add-cart-view">
+				<view class="close-icon"><u-icon name="close" color="#666666" size="26" @click="closeaddcartPop"></u-icon></view>
+				<view class="card-goods-info clearfix">
+					<view class="float_left card-goods-img">
+						<image v-if="now_sku_data.specImage" :src="now_sku_data.specImage" mode="aspectFill"></image>
+						<block v-else><image v-if="goodsDetail.images" :src="goodsDetail.images[0]" mode="aspectFill"></image></block>
+						<view v-if="goodsDetail.isEq === 5" class="Eq-view primary-bg">抄码</view>
+					</view>
+					<view class="float_left" style="width: 420rpx;">
+						<view class="goods-title ellipsis">{{ goodsDetail.title || '' }}</view>
+						<!-- 不是阶梯价 -->
+						<view class="card-goods-priceview primary-color" v-if="!now_sku_data.enabledLadder">
+							<text class="rmb-icon">¥</text>
+							<text v-if="!showGoodsPrice">
+								<block v-if="now_sku_data.id">{{ now_sku_data.salePrice || 0 }}</block>
+								<block v-else>{{ goodsDetail.isEq === 5 ? goodsDetail.maxSalePrice : goodsDetail.minSalePrice }}</block>
+							</text>
+							<text v-else class="showGoodsPrice">{{ showGoodsPrice }}</text>
+						</view>
+						<!-- 阶梯价 -->
+						<view class="lap-info clearfix" v-else>
+							<view class="lap-li" v-for="(item, index) in now_sku_data.ladderPrice" :key="index">
+								<view class="laprice-text">
+									<span style="font-size: 20rpx;">¥</span>
+									<text v-if="!showGoodsPrice">{{ item.price }}</text>
+									<text v-else class="showGoodsPrice">{{ showGoodsPrice }}</text>
+								</view>
+								<view class="laprice-goods-num" v-if="index + 1 === now_sku_data.ladderPrice.length">≥{{ item.from }}{{ now_sku_data.unitName }}</view>
+								<view class="laprice-goods-num" v-else>{{ item.from }}~{{ item.to }}{{ now_sku_data.unitName }}</view>
+							</view>
+						</view>
+						<!-- 会员价 -->
+						<block v-if="!showGoodsPrice">
+							<view class="vip-price clearfix" v-if="goodsDetail.minMemberPrice > 0 && !now_sku_data.id">
+								<view class="price-text">¥{{ goodsDetail.isEq === 5 ? goodsDetail.maxMemberPrice : goodsDetail.minMemberPrice }}</view>
+								<view class="price-bs">vip</view>
+							</view>
+							<block v-else>
+								<view class="vip-price clearfix" v-if="now_sku_data.memberPrice > 0">
+									<view class="price-text">¥{{ now_sku_data.memberPrice }}</view>
+									<view class="price-bs">vip</view>
+								</view>
+							</block>
+						</block>
+
+						<view class="activity-tag" v-if="now_sku_data.isActivity && now_sku_data.isActivity === 5">限时秒杀</view>
+						<view class="card-goods-stock">
+							<!-- 当前区域有库存 -->
+							<block v-if="is_not_express">
+								<!-- 选中规格 -->
+								<block v-if="now_sku_data.id">
+									<view class="snum-li" v-if="baseSet.stockDisplay === 5">
+										库存:{{ now_sku_data.inventory >= 1 || goodsDetail.isDistribution === 5 ? '有货' : '库存不足' }}
+									</view>
+									<view class="snum-li" v-if="baseSet.stockDisplay === 6">
+										库存:
+										<text v-if="goodsDetail.isEq === 4">
+											{{ now_sku_data.inventory >= 1 || goodsDetail.isDistribution === 5 ? Math.floor(now_sku_data.inventory) || '有货' : 0 }}
+										</text>
+										<text v-else>{{ now_sku_data.otherNum >= 1 || goodsDetail.isDistribution === 5 ? Math.floor(now_sku_data.otherNum) || '有货' : 0 }}</text>
+									</view>
+								</block>
+								<!-- 未选中规格 -->
+								<block v-else>
+									<view class="snum-li" v-if="baseSet.stockDisplay === 5">
+										库存:{{ goodsDetail.inventory >= 1 || goodsDetail.isDistribution === 5 ? '有货' : '库存不足' }}
+									</view>
+									<view class="snum-li" v-if="baseSet.stockDisplay === 6">
+										库存:
+										<text v-if="goodsDetail.isEq === 4">
+											{{ goodsDetail.inventory >= 1 || goodsDetail.isDistribution === 5 ? Math.floor(goodsDetail.inventory) || '有货' : 0 }}
+										</text>
+										<text v-else>{{ goodsDetail.inventory >= 1 || goodsDetail.isDistribution === 5 ? Math.floor(goodsDetail.otherNum) || '有货' : 0 }}</text>
+									</view>
+								</block>
+							</block>
+							<!-- 当前区域没有库存 -->
+							<block v-else>
+								<view class="snum-li" v-if="baseSet.stockDisplay === 5">库存:库存不足</view>
+								<view class="snum-li" v-if="baseSet.stockDisplay === 6">剩余 0</view>
+							</block>
+							<view class="snum-li">起订{{ now_sku_data.setNum || 1 }}{{ now_sku_data.unitName || goodsDetail.unitName || '' }}</view>
+							<view class="snum-li" v-if="now_sku_data.limitNum">限购{{ now_sku_data.limitNum }}{{ now_sku_data.unitName || goodsDetail.unitName }}</view>
+						</view>
+						<block v-for="(item, index) in goodsDetail.unitData" :key="index">
+							<view v-if="item.isMaster === 4" class="card-goods-stock">
+								<text v-if="goodsDetail.isEq === 5">1{{ item.unitName }}≈{{ item.conversion }}{{ goodsDetail.unitName }}</text>
+								<text v-else>1{{ item.unitName }}={{ item.conversion }}{{ goodsDetail.unitName }}</text>
+								<text style="margin-left: 10rpx;" v-if="goodsDetail.showMinUnitPrice === 5 && now_sku_data.minUnitPrice !== '0.00'">
+									1斤={{ now_sku_data.minUnitPrice || goodsDetail.minMinUnitPrice }}元
+								</text>
+							</view>
+						</block>
+						<view class="card-goods-unit" v-if="!now_sku_data.id">
+							选择【单位】
+							<block v-for="(item, index) in goodsDetail.specGroup" :key="index">
+								<text>【{{ item.groupSpec.specName }}】</text>
+							</block>
+						</view>
+						<view class="card-goods-unit" v-else>
+							已选:{{ buy_num }}{{ now_sku_data.unitName }}
+							<text v-if="now_sku_data.specGroup.length > 0">,</text>
+							<block v-for="(item, index) in now_sku_data.specGroup" :key="index">
+								<text>{{ item.specValueName }}</text>
+								<text v-if="index !== now_sku_data.specGroup.length - 1">,</text>
+							</block>
+
+							<text v-if="goodsDetail.isEq === 5">,{{ unitsalePrice }}元/{{ eq_sku_kg.unitName }}</text>
+						</view>
+					</view>
+				</view>
+				<!-- 配送地判断提醒 -->
+				<view
+					class="express-view"
+					v-if="isLogin && address_data.provinceCode && not_dispatch_areas.areas"
+					@click="goPage('/pagesT/address/SelAddress?address_data=' + JSON.stringify(address_data))"
+				>
+					<view class="express-tit">
+						<text>送至</text>
+						<text class="desc">(配送地可能会影响库存,请正确选择)</text>
+					</view>
+					<view class="region-view clearfix">
+						<view class="float_left">
+							<text class="ibonfont ibondizhi2"></text>
+							<text>{{ address_data.provinceName }}-{{ address_data.cityName }}-{{ address_data.districtName }}</text>
+						</view>
+						<view class="float_right"><text class="ibonfont ibonjinru"></text></view>
+					</view>
+				</view>
+				<scroll-view scroll-y class="spec-card-view">
+					<view class="spec-card-li">
+						<view class="spec-name">单位</view>
+						<view class="spec-value-view">
+							<block v-for="(item, index) in goodsDetail.unitData" :key="index">
+								<!-- 抄码商品不显示主单位 -->
+								<block v-if="item.isMaster !== 5 || (item.isMaster === 5 && goodsDetail.isEq !== 5)">
+									<view
+										class="spec-val-li"
+										@click="bindPickerChange(item.unitId, 1, '', item)"
+										:class="[parseInt(spec_id_group[1]) === parseInt(item.unitId) ? 'primary-bg spec-val-on' : '']"
+									>
+										<view v-if="!item.isdisabled" class="dis-tip">待补货</view>
+										<text :style="{ color: !item.isdisabled ? '#999' : '' }">{{ item.unitName }}</text>
+									</view>
+								</block>
+							</block>
+						</view>
+					</view>
+					<view class="spec-card-li" v-for="(item, index) in goodsDetail.specGroup" :key="index">
+						<view class="spec-name">{{ item.groupSpec.specName }}</view>
+						<view class="spec-value-view">
+							<block v-for="(itemP, indexP) in item.params" :key="indexP">
+								<view
+									class="spec-val-li"
+									:class="[parseInt(spec_id_group[index + 2]) === parseInt(itemP.specValueId) ? 'primary-bg spec-val-on' : '']"
+									@click="bindPickerChange(itemP.specValueId, index + 2, item.groupSpec.specId, itemP)"
+								>
+									<view v-if="!itemP.isdisabled" class="dis-tip">待补货</view>
+									<text :style="{ color: !itemP.isdisabled ? '#999' : '' }">{{ itemP.specValueName }}</text>
+								</view>
+							</block>
+						</view>
+					</view>
+					<view class="buy-num-view clearfix">
+						<view class="float_left">购买数量</view>
+						<view class="num-edit-view float_right" v-if="goodsDetail.isDistribution === 4">
+							<view class="subr-view" :class="[buy_num <= (now_sku_data.setNum || 1) ? 'disabled-color' : '']" @click="delNum">
+								<u-icon size="26" name="minus"></u-icon>
+							</view>
+							<view class="buy-num-input-view"><input @input="buyNumInput" type="number" :disabled="!now_sku_data.id" class="buy-num-input" :value="buy_num" /></view>
+							<view
+								class="plus-view"
+								:class="[
+									now_sku_data.limitNum
+										? buy_num >= now_sku_data.limitNum
+											? 'disabled-color'
+											: ''
+										: buy_num >= Math.floor(now_sku_data.inventory)
+										? 'disabled-color'
+										: ''
+								]"
+								@click="plusNum"
+							>
+								<u-icon size="26" name="plus"></u-icon>
+							</view>
+						</view>
+						<view class="num-edit-view float_right" v-else>
+							<view class="subr-view" :class="[buy_num <= (now_sku_data.setNum || 1) ? 'disabled-color' : '']" @click="delNum">
+								<u-icon size="26" name="minus"></u-icon>
+							</view>
+							<view class="buy-num-input-view"><input @input="buyNumInput" type="number" :disabled="!now_sku_data.id" class="buy-num-input" :value="buy_num" /></view>
+							<view class="plus-view" :class="[now_sku_data.limitNum ? (buy_num >= now_sku_data.limitNum ? 'disabled-color' : '') : '']" @click="plusNum">
+								<u-icon size="26" name="plus"></u-icon>
+							</view>
+						</view>
+					</view>
+				</scroll-view>
+				<view class="card-btn-view">
+					<block v-if="goodsDetail.isDistribution === 4 && goodsDetail.inventorTotal <= 0">
+						<view v-if="!(goodsDetail.inventorTotal - 0) || goodsDetail.inventorTotal - 0 <= 0" class="btn">
+							<view class="no-tip">抱歉,该商品在当前区域无库存</view>
+						</view>
+					</block>
+					<!-- <view class="no-tip" v-if="!is_not_express">抱歉,该商品在当前区域无库存</view> -->
+					<view class="buy-btn" v-else>
+						<view
+							@click="goodsBuyNow"
+							class="card-btn-li primary-fu-bg"
+							:class="[!is_not_express || (goodsDetail.isDistribution === 4 && !Math.floor(now_sku_data.inventory)) ? 'dis-add' : '']"
+						>
+							立即购买
+						</view>
+						<view
+							@click="addCart"
+							class="card-btn-li primary-bg"
+							:class="[!is_not_express || (goodsDetail.isDistribution === 4 && !Math.floor(now_sku_data.inventory)) ? 'dis-add' : '']"
+						>
+							加入购物车
+						</view>
+					</view>
+				</view>
+			</view>
+		</u-popup>
+
+		<NoLoginTip @cancel="cancelTip" :show="loginTip" v-if="loginTip" />
+	</view>
+</template>
+
+<script>
+import NoLoginTip from './NoLoginTip.vue';
+export default {
+	components: {
+		NoLoginTip
+	},
+	props: {
+		selAddress: {
+			type: Object,
+			default: () => {
+				return {};
+			}
+		},
+		isShow: {
+			type: Boolean,
+			default: false
+		},
+		goodsId: {
+			type: [Number, String],
+			default: 0
+		},
+		isList: {
+			type: Boolean,
+			default: true
+		},
+		skuId: {
+			type: [Number, String],
+			default: ''
+		}
+	},
+	watch: {
+		selAddress(val) {
+			if (val.provinceCode) {
+				this.address_data = val;
+				if (this.not_dispatch_areas.areas) {
+					if (this.address_data.districtCode) {
+						this.is_not_express = this.not_dispatch_areas.areas.indexOf(parseInt(this.address_data.districtCode)) === -1;
+					} else if (this.address_data.cityCode) {
+						this.is_not_express = this.not_dispatch_areas.citys.indexOf(parseInt(this.address_data.cityCode)) === -1;
+					} else {
+						this.is_not_express = this.not_dispatch_areas.provinces.indexOf(parseInt(this.address_data.provinceCode)) === -1;
+					}
+				}
+			}
+		},
+		skuId(val) {
+			if (this.goodsDetail.id) {
+				const nowSkuData = this.goodsDetail.specMultiple.find(item => item.id === parseInt(val));
+				if (nowSkuData) {
+					this.spec_id_group = nowSkuData.indexGroup.map(item => {
+						return parseInt(item);
+					});
+					this.buy_num = nowSkuData.setNum || 1;
+					this.now_sku_data = nowSkuData;
+				}
+			}
+		},
+		now_sku_data(val) {
+			this.$emit('skuChange', val);
+		},
+		goodsId(val) {
+			if (this.isShow) {
+				this.goodsDetail = {};
+				this.now_sku_data = {};
+				this.spec_id_group = [val];
+				this.getGoodsDetail();
+			}
+		},
+		async isShow(val) {
+			if (val) {
+				await this.SetShowGoodsPrice();
+				if (!this.goodsDetail.id) {
+					if (!this.isList) {
+						this.goodsDetail = {};
+						this.now_sku_data = {};
+						this.spec_id_group = [this.goodsId];
+						await this.getGoodsDetail();
+					}
+				}
+				if (!this.address_data.provinceCode && this.isLogin) {
+					await this.getAllShippingAddress();
+				}
+			} else {
+				this.closeaddcartPop();
+			}
+		},
+		buy_num(val) {
+			this.$emit('buyNumchange', val);
+		}
+	},
+	data() {
+		return {
+			eq_sku_kg: {},
+			isLogin: true, // 判断是否登录
+			loginTip: false,
+			showGoodsPrice: '',
+			goodsDetail: {
+				images: [],
+				specGroup: [],
+				unitData: []
+			},
+			spec_id_group: [],
+			now_sku_data: {},
+			buy_num: 1,
+			now_sel_address: {},
+			address_data: {}, // 客户地址数据
+			not_dispatch_areas: {}, // 该商品不能配送区域
+			is_not_express: true, // 当前选择区域是否能够配送
+			activityId: ''
+		};
+	},
+	computed: {
+		baseSet() {
+			return this.$store.state.baseSet;
+		},
+		// 起送价
+		startDeliveryPrice() {
+			return this.$store.state.baseSet.startDeliveryPrice || 0;
+		},
+		// 辅助单位价格
+		unitsalePrice() {
+			if (this.goodsDetail.isEq === 5) {
+				if (this.eq_sku_kg.enabledLadder !== 1) {
+					return this.eq_sku_kg.salePrice;
+				} else {
+					const unitnum = this.buy_num * Number(this.now_sku_data.conversion);
+					const priceData = this.eq_sku_kg.ladderPrice.find(item => {
+						return unitnum > item.from && unitnum <= item.to;
+					});
+					return priceData.price;
+				}
+			} else {
+				return this.eq_sku_kg.salePrice;
+			}
+		}
+	},
+	created() {
+		this.spec_id_group[0] = this.goodsId;
+		this.isLogin = this.$store.state.hasLogin;
+		this.address_data = this.$store.state.nowAddress;
+		if (this.address_data.provinceCode) {
+			if (this.not_dispatch_areas.areas) {
+				if (this.address_data.districtCode) {
+					this.is_not_express = this.not_dispatch_areas.areas.indexOf(parseInt(this.address_data.districtCode)) === -1;
+				} else if (this.address_data.cityCode) {
+					this.is_not_express = this.not_dispatch_areas.citys.indexOf(parseInt(this.address_data.cityCode)) === -1;
+				} else {
+					this.is_not_express = this.not_dispatch_areas.provinces.indexOf(parseInt(this.address_data.provinceCode)) === -1;
+				}
+			}
+		}
+	},
+	methods: {
+		// 商品立即购买
+		goodsBuyNow() {
+			if (!this.$store.state.hasLogin) {
+				this.loginTip = true;
+				this.closeaddcartPop();
+				return;
+			}
+			if (!this.is_not_express) {
+				return;
+			}
+
+			// 验证账户状态
+			this.userAudit();
+			if (!this.isUserAudit) {
+				return;
+			}
+
+			if (!this.now_sku_data.id) {
+				this.$api.msg('请选择商品属性');
+				return;
+			}
+			if (this.goodsDetail.isDistribution === 4 && !Math.floor(this.now_sku_data.inventory)) {
+				this.$api.msg('当前商品库存不足');
+				return;
+			}
+			if (this.buy_num <= 0) {
+				this.$api.msg('请输入大于0的购买数量');
+				return;
+			}
+			if (this.buy_num < this.now_sku_data.setNum) {
+				this.$api.msg('该商品起订数量为' + this.now_sku_data.setNum + this.now_sku_data.unitName);
+				return;
+			}
+			const totalPrice = this.$NP.times(this.now_sku_data.salePrice, this.buy_num);
+			if (totalPrice < this.startDeliveryPrice) {
+				this.$u.toast('当前下单金额不足起送价:' + this.startDeliveryPrice + '元,先加入购物车吧');
+				return;
+			}
+			console.log(this.now_sku_data);
+			if (this.now_sku_data.isActivity === 5) {
+				this.activityId = this.now_sku_data.activity.activityId;
+			}
+			uni.navigateTo({
+				url: `/pagesT/order/createOrder?goodsId=${this.goodsDetail.id}&goodsBasicId=${this.goodsDetail.basicGoodsId}&skuId=${this.now_sku_data.id}&buyNum=${
+					this.buy_num
+				}&shopId=${this.goodsDetail.shopId}&activityId=${this.activityId}`
+			});
+		},
+		cancelTip() {
+			this.loginTip = false;
+		},
+		SetShowGoodsPrice() {
+			if (this.$store.state.baseSet.goodsPrice === 5 && this.$store.state.hasLogin) {
+				this.showGoodsPrice = '';
+			} else if (!this.$store.state.hasLogin && this.$store.state.baseSet.goodsPrice === 4) {
+				this.showGoodsPrice = '¥**';
+			} else if (this.$store.state.userStatus.enableStatus === 4 && this.$store.state.baseSet.goodsPrice === 4) {
+				this.showGoodsPrice = '已禁用';
+			} else if (this.$store.state.userStatus.status !== 2 && this.$store.state.baseSet.goodsPrice === 4) {
+				if (this.$store.state.userStatus.status === 0) {
+					this.showGoodsPrice = '待审核';
+				} else if (this.$store.state.userStatus.status === 1) {
+					this.showGoodsPrice = '审核中';
+				} else if (this.$store.state.userStatus.status === 3) {
+					this.showGoodsPrice = '已驳回';
+				}
+			} else {
+				this.showGoodsPrice = '';
+			}
+		},
+		delNum() {
+			if (!this.now_sku_data.id) {
+				this.$api.msg('请选择商品属性');
+				return;
+			}
+			// 不支持负库存销售
+			if (this.goodsDetail.isDistribution === 4) {
+				if (this.buy_num > Math.floor(this.now_sku_data.inventory)) {
+					this.buy_num = Math.floor(this.now_sku_data.inventory) < 0 ? 0 : Math.floor(this.now_sku_data.inventory);
+					return;
+				}
+			}
+
+			if (this.now_sku_data.cartNum > 0) {
+				if (this.buy_num > 1) {
+					this.buy_num = this.buy_num - 1;
+				} else {
+					this.$api.msg('不能再减少了哦!');
+				}
+			} else {
+				// this.$api.msg('不能再减少了哦!')
+				if (this.buy_num > this.now_sku_data.setNum) {
+					this.buy_num = this.buy_num - 1;
+				} else {
+					this.$api.msg('不能再减少了哦!');
+				}
+			}
+		},
+		plusNum() {
+			if (!this.now_sku_data.id) {
+				this.$api.msg('请选择商品属性');
+				return;
+			}
+			if (this.now_sku_data.limitNum > 0) {
+				if (this.buy_num >= this.now_sku_data.limitNum) {
+					// this.$api.msg(`限购${this.now_sku_data.limitNum}${this.now_sku_data.unitName},不能再增加了哦!`);
+					return;
+				}
+			}
+			if (this.goodsDetail.isDistribution === 4) {
+				if (this.buy_num >= Math.floor(this.now_sku_data.inventory)) {
+					// this.$api.msg('不能再增加了哦!');
+					return;
+				}
+			}
+
+			this.buy_num = this.buy_num - 0 + 1;
+		},
+		buyNumInput(e) {
+			// 当重复设置某些属性为相同的值时,不会同步到view层。解决方法,在设置新值之前先设置为记录的当前值
+			this.buy_num = e.detail.value - 0;
+			// 没有启用预售不用检查库存
+			if (this.goodsDetail.isDistribution === 4) {
+				if (e.detail.value - 0 > Math.floor(this.now_sku_data.inventory)) {
+					this.$api.msg('库存不足,已为您修正');
+					this.$nextTick(() => {
+						this.buy_num = Math.floor(this.now_sku_data.inventory);
+					});
+					return;
+				}
+			}
+
+			if (this.now_sku_data.limitNum) {
+				if (e.detail.value - 0 > this.now_sku_data.limitNum) {
+					this.$api.msg(`限购${this.now_sku_data.limitNum}${this.now_sku_data.unitName},已为您修正`);
+					this.$nextTick(() => {
+						this.buy_num = Math.floor(this.now_sku_data.limitNum);
+					});
+				} else if (e.detail.value - 0 < this.now_sku_data.limitNum) {
+					// 当起订数量小于限购数量莳
+					if (this.now_sku_data.setNum && this.now_sku_data.setNum <= this.now_sku_data.limitNum) {
+						// 当存在起订数量
+						// if (e.detail.value - 0 < this.now_sku_data.setNum) {
+						// 	this.$api.msg('该商品起订数量为' + this.now_sku_data.setNum + this.now_sku_data.unitName);
+						// 	this.$nextTick(() => {
+						// 		this.buy_num = this.now_sku_data.setNum;
+						// 	});
+						// }
+					} else if (this.now_sku_data.setNum && this.now_sku_data.setNum > this.now_sku_data.limitNum) {
+						// 当存在起订数量
+						if (e.detail.value - 0 < this.now_sku_data.limitNum) {
+							this.$api.msg(`限购${this.now_sku_data.limitNum}${this.now_sku_data.unitName},已为您修正`);
+							this.$nextTick(() => {
+								this.buy_num = Math.floor(this.now_sku_data.limitNum);
+							});
+						}
+					} else {
+						this.$nextTick(() => {
+							this.buy_num = this.now_sku_data.setNum || e.detail.value - 0;
+						});
+					}
+				}
+			} else {
+				// 没有启用预售不用检查库存
+				if (this.goodsDetail.isDistribution === 4) {
+					if (e.detail.value - 0 > Math.floor(this.now_sku_data.inventory)) {
+						this.$api.msg('库存不足,已为您修正');
+						this.$nextTick(() => {
+							this.buy_num = Math.floor(this.now_sku_data.inventory);
+						});
+					}
+				}
+			}
+		},
+		// 关闭加入购物车弹窗
+		closeaddcartPop() {
+			this.$emit('close', false);
+		},
+		/*
+		 *选择规格
+		 * id 单位属性的ID
+		 * index 规格id组的下标
+		 * specId 属性名id
+		 * row 当前选中属性值
+		 */
+		bindPickerChange(id, index, specId, row) {
+			// 判断当前规格是否禁用
+			if (row && !row.isdisabled) {
+				return;
+			}
+			this.$set(this.spec_id_group, index, parseInt(id));
+			if (this.spec_id_group.every(item => !!item)) {
+				const indexGroup = this.spec_id_group.join(':');
+				const nowSkuData = this.goodsDetail.specMultiple.find(item => item.index === indexGroup);
+				if (nowSkuData) {
+					this.now_sku_data = nowSkuData;
+				}
+			}
+			// this.buy_num = this.now_sku_data.setNum || 1;
+			if (this.now_sku_data.limitNum > 0 && this.now_sku_data.setNum > this.now_sku_data.limitNum) {
+				this.buy_num = this.now_sku_data.limitNum || 1;
+			} else {
+				this.buy_num = this.now_sku_data.setNum || 1;
+			}
+			// 判断当前规格是否要禁用,规格组不存在或者库存为0的时候,当前规格禁用
+			if (index) {
+				// 过滤出包含当前规格的规格组
+				const containSpecMultiple = this.goodsDetail.specMultiple.filter(item => item.indexGroup.includes(id + ''));
+				const target = this.$u.deepClone(this.goodsDetail.specGroup);
+				target.forEach(item => {
+					if (item.groupSpec.specId !== specId) {
+						item.params.forEach(itemP => {
+							const isObj = containSpecMultiple.find(itemF => {
+								return itemF.indexGroup.includes(itemP.specValueId + '');
+							});
+							// 没有开启预售判断库存
+							if (this.goodsDetail.isDistribution === 4) {
+								itemP.isdisabled = !!isObj && Math.floor(isObj.inventory) > 0 && isObj.isSale !== 4;
+							} else {
+								itemP.isdisabled = isObj.isSale !== 4;
+							}
+						});
+					}
+				});
+				this.goodsDetail.specGroup = target;
+			}
+		},
+		// 加入购物车
+		async addCart() {
+			if (!this.$store.state.hasLogin) {
+				this.loginTip = true;
+				this.closeaddcartPop();
+				return;
+			}
+			if (!this.is_not_express) {
+				return;
+			}
+			// 验证账户状态
+			this.userAudit();
+			if (!this.isUserAudit) {
+				return;
+			}
+
+			if (!this.now_sku_data.id) {
+				this.$api.msg('请选择商品属性');
+				return;
+			}
+			if (this.goodsDetail.isDistribution === 4 && !Math.floor(this.now_sku_data.inventory)) {
+				this.$api.msg('当前商品库存不足');
+				return;
+			}
+			if (this.buy_num <= 0) {
+				this.$api.msg('请输入大于0的购买数量');
+				return;
+			}
+			if (this.buy_num < this.now_sku_data.setNum) {
+				this.$api.msg('该商品起订数量为' + this.now_sku_data.setNum + this.now_sku_data.unitName);
+				return;
+			}
+			const goodsData = [
+				{
+					goodsBasicId: this.goodsDetail.basicGoodsId,
+					goodsId: this.goodsDetail.id,
+					buyNum: this.buy_num,
+					shopId: this.goodsDetail.shopId,
+					source: this.$common.source(),
+					skuId: this.now_sku_data.id
+				}
+			];
+			this.$u.api
+				.addCart({
+					goodsData
+				})
+				.then(res => {
+					uni.showToast({
+						title: '加入成功',
+						icon: 'none'
+					});
+
+					let stateNum = this.$_utils.accAdd((this.$store.state.cartNum || 0) - 0, this.buy_num);
+					let statePrice = this.$_utils.accAdd((this.$store.state.cartPrice || 0) - 0, (this.now_sku_data.salePrice - 0) * this.buy_num);
+
+					this.$store.commit('commit_cartNum', stateNum);
+					this.$store.commit('commit_cartPrice', statePrice);
+					this.closeaddcartPop();
+					// 点击购物车发送请求
+					// setTimeout(() => {
+					// 	uni.switchTab({
+					// 		url: '/pages/cart/cart'
+					// 	});
+					// }, 100)
+				});
+		},
+		// 请求商品品详情
+		async getGoodsDetail() {
+			this.$u.api
+				.getGoodsDetail(this.goodsId)
+				.then(({ data }) => {
+					this.goodsDetail = data;
+					// 抄码商品获取 KG 数据
+					if (data.isEq === 5) {
+						this.eq_sku_kg = data.specMultiple.find(item => item.isMaster === 5);
+					}
+					this.buy_num = 1;
+					// 多规格时处理属性禁用标示
+					if (data.specType !== 1) {
+						data.specGroup = data.specGroup.map(item => {
+							return {
+								...item,
+								params: item.params.map(itemP => {
+									return {
+										...itemP,
+										isdisabled: true
+									};
+								})
+							};
+						});
+						data.unitData.forEach(item => {
+							item.isdisabled = true;
+						});
+					} else {
+						//单规格 添加当前单位没有库存的标记
+						const arr = data.specMultiple.filter(item => Math.floor(item.inventory) <= 0);
+						data.unitData.forEach(item => {
+							const unitItem = data.specMultiple.find(itemF => itemF.unitId === item.unitId);
+							// 没有开启预售判断库存
+							if (this.goodsDetail.isDistribution === 4) {
+								item.isdisabled = Math.floor(unitItem.inventory) > 0 && unitItem.isSale !== 4;
+							} else {
+								item.isdisabled = unitItem.isSale !== 4;
+							}
+						});
+					}
+
+					if (this.skuId) {
+						// 如果已有选中的skuId 根据ID匹配对应规格数据
+						const specMultiple = data.specMultiple.find(item => item.id === parseInt(this.skuId));
+						if (specMultiple.isSale !== 4) {
+							this.now_sku_data = specMultiple;
+						}
+					} else if (data.specMultiple.length === 1) {
+						//当规格只有一个默认选中
+						// 没有开启预售
+						if (data.specMultiple[0].isSale !== 4) {
+							if (this.goodsDetail.isDistribution === 4) {
+								// 如果当前商品规格只有一个且库存大于0则默认选中
+								if (data.specMultiple[0].inventory > 0 && data.specMultiple[0].isSale !== 4) {
+									this.now_sku_data = data.specMultiple[0];
+								}
+							} else {
+								this.now_sku_data = data.specMultiple[0];
+							}
+						}
+					} else {
+						// 如果当前商品是非抄码商品 默认选中默认规格
+						if (data.isEq === 4) {
+							const specMultiple = data.specMultiple.find(item => item.isDefault === 5);
+							if (specMultiple && specMultiple.isSale !== 4) {
+								this.now_sku_data = specMultiple;
+							}
+						} else {
+							// 抄码商品默认选中一个
+							const specMultiple = data.specMultiple.find(item => item.isMaster === 4);
+							if (specMultiple && specMultiple.isSale !== 4) {
+								this.now_sku_data = specMultiple;
+							}
+						}
+					}
+					// 如果有已选中的规格则进行下一步规格的操作处理
+					// console.log(this.goodsDetail);
+					if (!this.now_sku_data.id) {
+						return;
+					}
+					// 进行组合选中规格的id数组
+					this.spec_id_group = this.now_sku_data.indexGroup.map(item => {
+						return parseInt(item);
+					});
+					//如果起订数量大于限购数量,默认购买数量为限购数量
+					if (this.now_sku_data.limitNum > 0 && this.now_sku_data.setNum > this.now_sku_data.limitNum) {
+						this.buy_num = this.now_sku_data.limitNum || 1;
+					} else {
+						// 否则购买数量为起订数量
+						this.buy_num = this.now_sku_data.setNum || 1;
+					}
+					// 该商品不能配送区域
+					this.not_dispatch_areas = data.express.ruleData.not_dispatch_areas;
+					//  默认设置当前选择区域是否能够配送的标示为true
+					this.is_not_express = true;
+					this.$nextTick(() => {
+						if (this.not_dispatch_areas.areas) {
+							if (this.address_data.districtCode) {
+								this.is_not_express = this.not_dispatch_areas.areas.indexOf(parseInt(this.address_data.districtCode)) === -1;
+							} else if (this.address_data.cityCode) {
+								this.is_not_express = this.not_dispatch_areas.citys.indexOf(parseInt(this.address_data.cityCode)) === -1;
+							} else {
+								this.is_not_express = this.not_dispatch_areas.provinces.indexOf(parseInt(this.address_data.provinceCode)) === -1;
+							}
+						}
+					});
+				})
+				.catch(err => {
+					this.closeaddcartPop();
+				});
+		},
+		// 获取地址列表
+		async getAllShippingAddress() {
+			this.$u.api
+				.getAllShippingAddress({
+					page: 1,
+					pageSize: 10
+				})
+				.then(({ data }) => {
+					if (data.length) {
+						const address = data.find(item => item.defaultStatus === 5) || data[0];
+						this.address_data = {
+							provinceCode: address.provinceCode,
+							cityCode: address.cityCode,
+							districtCode: address.districtCode,
+							provinceName: address.area.provinceName,
+							cityName: address.area.cityName,
+							districtName: address.area.districtName
+						};
+						this.$store.commit('commit_nowAddress', this.address_data);
+						if (this.not_dispatch_areas.areas) {
+							if (this.address_data.districtCode) {
+								this.is_not_express = this.not_dispatch_areas.areas.indexOf(parseInt(this.address_data.districtCode)) === -1;
+							} else if (this.address_data.cityCode) {
+								this.is_not_express = this.not_dispatch_areas.citys.indexOf(parseInt(this.address_data.cityCode)) === -1;
+							} else {
+								this.is_not_express = this.not_dispatch_areas.provinces.indexOf(parseInt(this.address_data.provinceCode)) === -1;
+							}
+						}
+					}
+				});
+		}
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+.activity-tag {
+	font-size: 20upx;
+	padding: 2upx 4upx;
+	background-color: #ff4d01;
+	color: #fff;
+	border-radius: 4upx;
+	display: inline-block;
+}
+
+.add-cart-view {
+	position: relative;
+	background-color: #fff;
+	padding: 30upx;
+	border-top-left-radius: 8upx;
+	border-top-right-radius: 8upx;
+
+	.close-icon {
+		position: absolute;
+		top: 20upx;
+		right: 20upx;
+	}
+
+	.card-goods-info {
+		.card-goods-img {
+			padding-right: 32upx;
+			position: relative;
+			overflow: hidden;
+
+			image {
+				border-radius: 8upx;
+				width: 230upx;
+				height: 230upx;
+				display: block;
+			}
+
+			.Eq-view {
+				width: 140rpx;
+				background-color: $uni-color-primary;
+				color: #ffffff;
+				position: absolute;
+				left: -40rpx;
+				top: 14rpx;
+				transform: rotate(-45deg);
+				font-size: 20rpx;
+				text-align: center;
+				line-height: 30rpx;
+			}
+		}
+
+		.goods-title {
+			font-weight: 600;
+			-webkit-line-clamp: 1;
+		}
+
+		.lap-info {
+			display: flex;
+			font-size: 24upx;
+
+			.lap-li {
+				text-align: center;
+				flex: 3;
+				padding: 0 20upx;
+
+				.laprice-text {
+					font-size: 28upx;
+					font-weight: 600;
+					color: #ff4d01;
+					font-family: DIN-Medium;
+				}
+			}
+		}
+
+		.card-goods-priceview {
+			color: #ff4d01;
+			font-weight: 600;
+			font-size: 40upx;
+			padding-top: 16upx;
+			font-family: DIN-Medium;
+
+			.rmb-icon {
+				font-weight: 400;
+				margin-right: 8upx;
+				font-size: 24upx;
+			}
+		}
+
+		.card-goods-stock {
+			font-size: 24upx;
+			color: #999999;
+			padding-top: 10upx;
+
+			.snum-li {
+				padding-right: 10upx;
+				display: inline-block;
+
+				&:last-child-child {
+					padding-right: 0;
+				}
+			}
+		}
+
+		.card-goods-unit {
+			font-size: 24upx;
+			padding-top: 10upx;
+		}
+	}
+
+	.spec-card-view {
+		max-height: 700upx;
+		overflow-y: auto;
+
+		.spec-card-li {
+			padding: 20upx 0 0;
+			border-bottom: 1px solid #f5f5f5;
+
+			.spec-name {
+				font-size: 28upx;
+				padding-bottom: 20upx;
+			}
+
+			.spec-value-view {
+				.spec-val-li {
+					margin-right: 30upx;
+					margin-bottom: 18upx;
+					border-radius: 8upx;
+					font-size: 26upx;
+					display: inline-block;
+					min-width: 52upx;
+					padding: 0 24upx;
+					line-height: 54upx;
+					text-align: center;
+					color: #333333;
+					border: 1px solid #eeeeee;
+					background-color: #eeeeee;
+					position: relative;
+
+					.dis-tip {
+						position: absolute;
+						font-size: 18rpx;
+						color: #ffffff;
+						background-color: #c0c4cc;
+						padding: 4rpx 6rpx;
+						border-top-left-radius: 12rpx;
+						border-bottom-right-radius: 12rpx;
+						top: -20rpx;
+						right: -30rpx;
+						line-height: 20rpx;
+					}
+				}
+
+				.spec-val-on {
+					background-color: $uni-color-primary;
+					color: #ffffff;
+				}
+			}
+		}
+	}
+
+	.buy-num-view {
+		padding: 20upx 0 130upx;
+		font-size: 28upx;
+
+		.num-edit-view {
+			text-align: center;
+			display: inline-flex;
+			align-items: center;
+
+			.buy-num-input-view {
+				display: flex;
+				position: relative;
+				text-align: center;
+				padding: 0;
+				justify-content: center;
+				align-items: center;
+				margin: 0 6rpx;
+				flex-direction: row;
+
+				.buy-num-input {
+					width: 80upx;
+					text-align: center;
+					line-height: 44upx;
+					height: 44upx;
+					font-size: 26upx;
+				}
+			}
+
+			.subr-view,
+			.plus-view {
+				justify-content: center;
+				align-items: center;
+				flex-direction: row;
+				display: flex;
+				margin-top: 0upx;
+				width: 44upx;
+				height: 44upx;
+				background-color: #f2f3f5;
+				font-size: 36upx;
+				color: #323233;
+				border-radius: 8upx;
+			}
+
+			.disabled-color {
+				color: #c8c9cc;
+				background: #f7f8fa;
+			}
+		}
+	}
+
+	.card-btn-view {
+		position: absolute;
+		bottom: 0;
+		left: 0;
+		z-index: 9;
+		width: 750upx;
+		background-color: #fff;
+		border-top: 1px solid #f5f5f5;
+
+		.no-tip {
+			font-size: 22upx;
+			background-color: #fdf6ec;
+			color: #d48d24;
+			text-align: center;
+			line-height: 42upx;
+		}
+
+		.buy-btn {
+			display: flex;
+
+			.card-btn-li {
+				flex: 2;
+				// width: 100%;
+				text-align: center;
+				line-height: 90upx;
+				color: #fff;
+				background-color: #007aff;
+			}
+
+			.dis-add {
+				color: #cccccc;
+			}
+		}
+	}
+}
+
+.express-view {
+	padding: 20upx 0;
+	border-bottom: 1px solid #f5f5f5;
+
+	.express-tit {
+		font-size: 28upx;
+		padding-bottom: 10upx;
+
+		.desc {
+			font-size: 20upx;
+			color: #999999;
+		}
+	}
+
+	.region-view {
+		font-size: 26upx;
+
+		.float_left {
+			.ibondizhi2 {
+				font-size: 28upx;
+				margin-right: 10upx;
+				color: #666666;
+			}
+		}
+
+		.float_right {
+			.ibonjinru {
+				font-size: 28upx;
+				color: #666666;
+			}
+		}
+	}
+}
+
+.vip-price {
+	margin-top: 6rpx;
+	line-height: 32rpx;
+	height: 32rpx;
+	border-radius: 3rpx;
+	overflow: hidden;
+	font-family: DINPro-Regular;
+
+	.price-text {
+		float: left;
+		min-width: 80rpx;
+		text-align: center;
+		vertical-align: middle;
+		font-size: 20rpx;
+		color: #ffdfa2;
+		background: linear-gradient(270deg, #1e5657 0%, #0d2b2c 100%);
+		padding: 0 8rpx;
+	}
+
+	.price-bs {
+		text-align: center;
+		float: left;
+		vertical-align: middle;
+		width: 32rpx;
+		background-color: #ffdfa2;
+		font-size: 20rpx;
+		color: #2c7564;
+	}
+}
+</style>

+ 440 - 0
components/GoodsItem.vue

@@ -0,0 +1,440 @@
+<template>
+	<view :class="[isList ? 'list-box' : 'list-box-two']" :style="{ display: isList ? 'block' : 'inline-block' }" @click="goPage(`/pagesT/product/product?id=${item.id}`)">
+		<!-- 单列 -->
+		<view class="goods_item_justify clearfix" v-if="isList">
+			<view class="imgStyle float_left">
+				<block v-if="item.isDistribution === 4">
+					<view :style="{ height: item.minMemberPrice > 0 ? '206rpx' : '176rpx' }" v-if="!(item.inventorTotal - 0) || item.inventorTotal - 0 <= 0" class="sale-end">
+						<text class="ibonfont ibonbuhuozhong"></text>
+					</view>
+				</block>
+				<view v-if="item.brandName" class="brand-name primary-lg">{{ item.brandName }}</view>
+				<image :style="{ height: item.minMemberPrice > 0 ? '206rpx' : '176rpx' }" mode="aspectFill" :src="item.images[0]"></image>
+			</view>
+			<view class="float_right goods-info">
+				<view class="title ellipsis">{{ item.title }}</view>
+				<view class="unit clearfix">
+					<!-- <text class="float_right"
+						v-if="item.showMinUnitPrice === 5 && item.minMinUnitPrice !== '0.00'">1斤={{ Number(item.minMinUnitPrice) }}元</text> -->
+					已售
+					<text v-if="baseSet.isSalesNum === 5" style="color: #333333;font-size: 24rpx;margin-left: 10rpx;">{{ item.realSalesNum }}</text>
+				</view>
+				<!-- <view class="unit" v-if="baseSet.isSalesNum === 5" style="font-size: 26rpx;color: #000000;">已售:{{ item.realSalesNum }}</view> -->
+				<view class="price clearfix primary-color">
+					<view class="float_left" v-if="!showGoodsPrice">
+						<view>
+							<text class="rmb-icon" v-if="item.showMinUnitPrice !== 5">¥</text>
+							<view style="display: inline-block;" v-if="item.isEq === 4">
+								<view style="display: inline-block;" v-if="item.showMinUnitPrice === 5">
+									<view class="float_left rmb-icon" style="margin-top: 14rpx;">¥</view>
+									<rich-text class="float_left" :nodes="$_utils.splitPrice(item.minMinUnitPrice)"></rich-text>
+									<view class="float_left">-</view>
+									<rich-text class="float_left" :nodes="$_utils.splitPrice(item.maxMinUnitPrice)"></rich-text>
+									<view class="float_left" style="font-size: 20rpx;margin-top: 14rpx;">/斤</view>
+								</view>
+								<rich-text v-else :nodes="$_utils.splitPrice(item.minSalePrice)"></rich-text>
+							</view>
+							<view style="display: inline-block;" v-else>
+								<view style="display: inline-block;" v-if="item.showMinUnitPrice === 5">
+									<view class="float_left rmb-icon" style="margin-top: 14rpx;">¥</view>
+									<rich-text class="float_left" :nodes="$_utils.splitPrice(item.maxMinUnitPrice)"></rich-text>
+									<view class="float_left" style="font-size: 20rpx;margin-top: 14rpx;">/斤</view>
+								</view>
+								<rich-text v-else :nodes="$_utils.splitPrice(item.maxSalePrice)"></rich-text>
+							</view>
+							<!-- <text class="market-price">¥{{ item.maxMarketPrice }}</text> -->
+						</view>
+						<view class="vip-price clearfix" v-if="item.minMemberPrice > 0">
+							<view class="price-text" v-if="item.isEq === 4">¥{{ item.minMemberPrice }}</view>
+							<view class="price-text" v-else>¥{{ item.maxMemberPrice }}</view>
+							<view class="price-bs">VIP</view>
+						</view>
+					</view>
+					<view class="float_left showGoodsPrice" v-else>{{ showGoodsPrice }}</view>
+					<!-- <view class="float_right" @click.stop="addCart"><text
+							class="ibonfont ibonxinzeng1 cart-icon p-background-img"></text></view> -->
+				</view>
+				<view class="addCart-btn p-background-img" @click.stop="addCart">加入购物车</view>
+			</view>
+		</view>
+		<!-- 两列 -->
+		<view class="goods_item_align" v-else>
+			<view class="img_style">
+				<block v-if="item.isDistribution === 4">
+					<view class="sale-end" v-if="!(item.inventorTotal - 0) || item.inventorTotal - 0 <= 0"><text class="ibonfont ibonbuhuozhong"></text></view>
+				</block>
+				<view v-if="item.brandName" class="brand-name primary-btn">{{ item.brandName }}</view>
+				<image mode="aspectFill" :src="item.images[0]"></image>
+			</view>
+			<view class="goods-info">
+				<view class="title_align ellipsis">{{ item.title }}</view>
+				<!-- <view class="unit_align">{{ item.describe }}</view> -->
+				<view class="price_align clearfix">
+					<view class="float_left">
+						<view class="now-price" v-if="!showGoodsPrice">
+							<text class="rmb-icon">¥</text>
+							<view style="display: inline-block;" v-if="item.isEq === 4"><rich-text :nodes="$_utils.splitPrice(item.minSalePrice)"></rich-text></view>
+							<view style="display: inline-block;" v-else><rich-text :nodes="$_utils.splitPrice(item.maxSalePrice)"></rich-text></view>
+							<text class="market-price">¥{{ item.maxMarketPrice }}</text>
+							<view class="vip-price clearfix" v-if="item.minMemberPrice > 0">
+								<view class="price-text" v-if="item.isEq === 4">¥{{ item.minMemberPrice }}</view>
+								<view class="price-text" v-else>¥{{ item.maxMemberPrice }}</view>
+								<view class="price-bs">vip</view>
+							</view>
+						</view>
+						<view class="now-price showGoodsPrice" v-else>
+							<text>{{ showGoodsPrice }}</text>
+						</view>
+					</view>
+					<view class="k-add-btn" @click.stop="addCart"><text class="ibonfont ibonxinzeng1 cart-icon p-background-img"></text></view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			tip_show: false
+		};
+	},
+	computed: {
+		hasLogin() {
+			return this.$store.state.hasLogin;
+		},
+		baseSet() {
+			return this.$store.state.baseSet;
+		},
+		showGoodsPrice() {
+			if (this.baseSet.goodsPrice === 5 && this.$store.state.hasLogin) {
+				return '';
+			} else if (!this.$store.state.hasLogin && this.baseSet.goodsPrice === 4) {
+				return '请登录';
+			} else if (this.$store.state.userStatus.enableStatus === 4 && this.baseSet.goodsPrice === 4) {
+				return '已禁用';
+			} else if (this.$store.state.userStatus.status !== 2 && this.baseSet.goodsPrice === 4) {
+				if (this.$store.state.userStatus.status === 0) {
+					return '待审核';
+				} else if (this.$store.state.userStatus.status === 1) {
+					return '审核中';
+				} else if (this.$store.state.userStatus.status === 3) {
+					return '已驳回';
+				}
+			} else {
+				return '';
+			}
+		}
+	},
+	props: {
+		isList: {
+			type: Boolean,
+			default: false
+		},
+		item: {
+			type: Object,
+			default: () => {
+				return {
+					images: ['https://cdn.uviewui.com/uview/example/fade.jpg'],
+					title: '商品名称商品名称商品名称商品名称商品名称商品名称',
+					describe: 'describedescribedescribedescribe',
+					id: 1
+				};
+			}
+		},
+		index: {
+			type: [String, Number],
+			default: 0
+		}
+	},
+	methods: {
+		addCart(skuId) {
+			this.$emit('addCart');
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.list-box-two {
+	padding: 0 10rpx;
+}
+
+.goods_item_justify {
+	background-color: #ffffff;
+	padding: 24upx;
+	width: 100%;
+	border-radius: 12upx;
+
+	.imgStyle {
+		position: relative;
+
+		.sale-end {
+			position: absolute;
+			height: 176upx;
+			width: 176upx;
+			border-radius: 10upx;
+			display: block;
+			left: 0;
+			top: 0;
+			text-align: center;
+			z-index: 8;
+			line-height: 160rpx;
+			background-color: rgba($color: #000000, $alpha: 0.3);
+
+			.ibonfont {
+				font-size: 120rpx;
+				color: #ffffff;
+			}
+		}
+
+		image {
+			height: 176upx;
+			width: 176upx;
+			border-radius: 10upx;
+			display: block;
+		}
+
+		.brand-name {
+			position: absolute;
+			z-index: 9;
+			top: -12rpx;
+			left: -12rpx;
+			padding: 0 10rpx;
+			line-height: 32rpx;
+			height: 32rpx;
+			color: #ffffff;
+			border-radius: 8rpx;
+			font-size: 20rpx;
+		}
+	}
+
+	.goods-info {
+		// width: 476upx;
+		width: calc(100% - 188rpx);
+		position: relative;
+		.title {
+			font-size: 28upx;
+			width: 100%;
+			height: 80upx;
+			line-height: 40upx;
+			font-weight: 500;
+			color: #111111;
+		}
+
+		.unit {
+			font-size: 20upx;
+			font-family: DIN-Medium;
+			color: #9d9d9d;
+			width: 100%;
+			height: 28upx;
+			line-height: 28upx;
+			margin-top: 8rpx;
+			margin-bottom: 12rpx;
+		}
+
+		.price {
+			color: $price-color;
+			font-size: 32upx;
+			font-weight: 500;
+			font-family: DIN-Medium;
+
+			.rmb-icon {
+				font-size: 20upx;
+				font-weight: 400;
+			}
+
+			.float_right {
+				.cart-icon {
+					font-size: 40rpx;
+					background-image: -webkit-linear-gradient(45deg, #fe923e 0%, #ff3724 100%);
+					-webkit-background-clip: text;
+					color: transparent;
+					display: block;
+				}
+			}
+
+			.market-price {
+				font-family: DINPro-Regular;
+				color: #d8d8d8;
+				text-decoration: line-through;
+				font-size: 24upx;
+				margin-left: 20upx;
+				font-weight: 400;
+			}
+		}
+	}
+}
+
+.vip-price {
+	// margin-left: 20upx;
+	margin-top: 6upx;
+	line-height: 32rpx;
+	height: 32rpx;
+	border-radius: 4rpx;
+	overflow: hidden;
+	font-family: DINPro-Regular;
+
+	.price-text {
+		min-width: 80rpx;
+		text-align: center;
+		float: left;
+		vertical-align: middle;
+		font-size: 20rpx;
+		color: #ffdfa2;
+		background: linear-gradient(270deg, #1e5657 0%, #0d2b2c 100%);
+		padding: 0 8rpx;
+	}
+
+	.price-bs {
+		text-align: center;
+		float: left;
+		vertical-align: middle;
+		width: 32rpx;
+		background-color: #ffdfa2;
+		font-size: 16rpx;
+		color: #2c7564;
+		font-family: DIN-Medium;
+	}
+}
+.addCart-btn {
+	width: 198rpx;
+	height: 60rpx;
+	background: linear-gradient(90deg, #fe923e 0%, #ff3724 100%);
+	border-radius: 30rpx;
+	color: #ffffff;
+	line-height: 60rpx;
+	font-size: 28rpx;
+	text-align: center;
+	position: absolute;
+	bottom: 0;
+	right: 0;
+}
+
+.goods_item_align {
+	width: 350upx;
+	margin-top: 12upx;
+	background-color: #ffffff;
+	border-radius: 10upx;
+	overflow: hidden;
+
+	.img_style {
+		padding-top: 24rpx;
+		position: relative;
+
+		.sale-end {
+			position: absolute;
+			height: 260upx;
+			width: 260upx;
+			border-radius: 10upx;
+			display: block;
+			left: 50%;
+			transform: translate(-50%, -50%);
+			top: calc(50% + 12rpx);
+			text-align: center;
+			line-height: 260rpx;
+			background-color: rgba($color: #000000, $alpha: 0.3);
+
+			.ibonfont {
+				font-size: 120rpx;
+				color: #ffffff;
+			}
+		}
+
+		image {
+			width: 260rpx;
+			height: 260rpx;
+			display: block;
+			margin: 0 auto;
+			border-radius: 8rpx;
+		}
+
+		.brand-name {
+			position: absolute;
+			top: 12rpx;
+			left: 12rpx;
+			padding: 0 10rpx;
+			line-height: 32rpx;
+			height: 32rpx;
+			color: #ffffff;
+			border-radius: 8rpx;
+			font-size: 20rpx;
+			z-index: 9;
+		}
+	}
+
+	.goods-info {
+		padding: 20upx;
+
+		.title_align {
+			font-size: 28upx;
+			font-weight: 500;
+			width: 100%;
+			height: 72upx;
+			line-height: 36upx;
+		}
+
+		.unit_align {
+			font-size: 24upx;
+			height: 32upx;
+			line-height: 32upx;
+			color: #9d9d9d;
+			overflow: hidden;
+			text-overflow: ellipsis;
+			white-space: nowrap;
+			margin: 8upx 0;
+		}
+
+		.price_align {
+			color: $price-color;
+			font-size: 28upx;
+			position: relative;
+
+			.k-add-btn {
+				position: absolute;
+				right: 0;
+				top: 50%;
+				transform: translateY(-50%);
+
+				.cart-icon {
+					font-size: 40rpx;
+					background-image: -webkit-linear-gradient(45deg, #fe923e 0%, #ff3724 100%);
+					-webkit-background-clip: text;
+					color: transparent;
+					display: block;
+				}
+			}
+
+			.now-price {
+				display: inline-block;
+				font-weight: 500;
+				font-size: 32upx;
+				font-family: DIN-Medium;
+
+				.rmb-icon {
+					font-size: 24upx;
+					font-weight: 400;
+				}
+			}
+
+			.market-price {
+				font-size: 24rpx;
+				color: #d8d8d8;
+				font-family: DINPro-Regular;
+				text-decoration: line-through;
+				margin-left: 20rpx;
+				font-weight: 400;
+			}
+
+			.cart-icon {
+				font-size: 40rpx;
+				background-image: -webkit-linear-gradient(45deg, #fe923e 0%, #ff3724 100%);
+				-webkit-background-clip: text;
+				color: transparent;
+				display: inline-block;
+			}
+		}
+	}
+}
+</style>

+ 217 - 0
components/J-skeleton.vue

@@ -0,0 +1,217 @@
+<template>
+<!--	骨架屏-->
+	<view>
+		<view v-if="loading" class="skeleton" :class="{ animate: animate }" :style="{ justifyContent: flexType }">
+			<!-- 轮播图 -->
+			<view v-if="imgTitle" class="skeleton-imgTitle" style="width: 95%;border-radius: 10px;height: 100px;display: block;"></view>
+			<!-- 头像图 -->
+
+			<view
+				v-if="showAvatar && !imgTitle"
+				class="skeleton-avatar"
+				v-for="(item, index) in nameRow"
+				:key="index"
+				:class="[avatarShape]"
+				:style="{ width: avatarSize, height: avatarSize }"
+			></view>
+			<!-- 文字条 -->
+			<view class="skeleton-content" v-if="showTitle && !imgTitle">
+				<view class="skeleton-title" :style="{ width: titleWidth }"></view>
+				<view class="skeleton-rows"><view class="skeleton-row-item" v-for="(item, index) in rowList" :key="index" :style="{ width: item.width }"></view></view>
+			</view>
+		</view>
+		<view v-else><slot></slot></view>
+		<view class="NavBar clearfix">
+			<view class="nav-li" v-for="(item, index) in 8" :key="index"><view class="nav-icon"></view></view>
+		</view>
+		<view class="magic-adv-view"></view>
+		<view class="seckill-view">
+			<view class="seckill-top"></view>
+			<view class="seckill-goods-view">
+				<view
+					class="seckill-goods"
+					style="margin-right: 20upx;"
+				></view>
+				<view class="seckill-goods"></view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+const DEFAULT_ROW_WIDTH = '100%';
+const DEFAULT_LAST_ROW_WIDTH = '60%';
+
+export default {
+	name: "Skeleton",
+	props: {
+		loading: {
+			type: Boolean,
+			default: true
+		},
+		imgTitle: {
+			type: Boolean,
+			default: false
+		},
+		nameRow: {
+			type: Number,
+			default: 1
+		},
+		flexType: {
+			type: String,
+			default: 'flex-start' // center	居中	√		space-between	两端对齐	√		space-around	子元素拉手分布	√		flex-start	居左		flex-end	居右
+		},
+		showAvatar: {
+			type: Boolean,
+			default: true
+		},
+		avatarSize: {
+			type: String,
+			default: '50px'
+		},
+		avatarShape: {
+			type: String,
+			default: 'round' // square | round
+		},
+		showTitle: {
+			type: Boolean,
+			default: false
+		},
+		titleWidth: {
+			type: String,
+			default: '40%'
+		},
+		row: {
+			type: Number,
+			default: 3
+		},
+		animate: {
+			type: Boolean,
+			default: true
+		}
+	},
+	data() {
+		return {};
+	},
+	computed: {
+		rowList() {
+			let list = [];
+			for (let i = 0; i < this.row; i++) {
+				list.push({
+					width: i === this.row - 1 && i !== 0 ? DEFAULT_LAST_ROW_WIDTH : DEFAULT_ROW_WIDTH
+				});
+			}
+			return list;
+		}
+	}
+};
+</script>
+
+<style scoped lang="scss">
+.seckill-view {
+	width: 680upx;
+	margin: 0 auto;
+	.seckill-top {
+		height: 70upx;
+		background-color: #f5f5f5;
+		margin-bottom: 30upx;
+	}
+	.seckill-goods-view {
+		.seckill-goods {
+			display: inline-block;
+			width: 330upx;
+			height: 300upx;
+			background-color: #f5f5f5;
+		}
+	}
+}
+.magic-adv-view {
+	width: 680upx;
+	height: 200upx;
+	background-color: #f5f5f5;
+	margin: 20upx auto;
+}
+.NavBar {
+	background: #fff;
+	padding-top: 40upx;
+	display: -webkit-flex;
+	display: flex;
+	width: 100%;
+	justify-content: space-between;
+	flex-wrap: wrap;
+}
+.nav-icon {
+	width: 88upx;
+	height: 88upx;
+	margin: 0 auto;
+	display: block;
+	background-color: #f5f5f5;
+	padding-bottom: 10upx;
+}
+.nav-li {
+	width: 25%;
+	font-size: 26upx;
+	text-align: center;
+	margin-bottom: 40upx;
+}
+.skeleton {
+	display: flex;
+	margin: 16px;
+	--bg-color: #f2f3f5;
+	--row-height: 16px;
+	--row-margin-top: 16px;
+}
+.skeleton-imgTitle {
+	flex-wrap: wrap;
+	background: var(--bg-color);
+	margin: 10px auto;
+}
+.skeleton-avatar {
+	flex-shrink: 0;
+	background: var(--bg-color);
+	margin-right: 8px;
+}
+.skeleton-avatar.round {
+	border-radius: 50%;
+}
+
+.skeleton-content {
+	width: 100%;
+}
+
+.skeleton-title {
+	background-color: var(--bg-color);
+	height: var(--row-height);
+}
+
+.skeleton-title + .skeleton-rows {
+	margin-top: var(--row-margin-top);
+}
+
+.skeleton-rows {
+}
+
+.skeleton-row-item {
+	background-color: var(--bg-color);
+	height: var(--row-height);
+}
+.skeleton-row-item:not(:first-child) {
+	margin-top: var(--row-margin-top);
+}
+
+.skeleton.animate {
+	animation: skeleton-blink 1.2s ease-in-out infinite;
+}
+
+@keyframes skeleton-blink {
+	0% {
+		opacity: 1;
+	}
+	50% {
+		opacity: 0.6;
+	}
+	100% {
+		opacity: 1;
+	}
+}
+</style>

+ 303 - 0
components/Login.vue

@@ -0,0 +1,303 @@
+<template>
+	<view class="login-btn-box">
+		<!-- #ifdef MP-WEIXIN -->
+		<button v-if="canIUseGetUserProfile" @click="getUserProfile" class="login-btn primary-color"><slot name="lBtn">登录/注册</slot></button>
+		<button v-else class="login-btn primary-color" open-type="getUserInfo" @getuserinfo="getuserinfo"><slot name="lBtn">登录/注册</slot></button>
+		<!-- #endif -->
+		<!-- #ifdef MP-TOUTIAO -->
+		<button class="login-btn primary-color" @click="getuserinfoTT"><slot name="lBtn">登录/注册</slot></button>
+		<!-- #endif -->
+		<!-- #ifdef APP-PLUS || H5 -->
+		<button class="login-btn primary-color" @click="appLogin"><slot name="lBtn">去登录</slot></button>
+		<!-- #endif -->
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			userInfo: {},
+			wxUserInfo: {},
+			loginCode: '',
+			provider: '',
+			canIUseGetUserProfile: false
+		};
+	},
+	created() {
+		// #ifdef MP-WEIXIN
+		if (!this.$common.isLogin()) {
+			uni.login({
+				provider: 'weixin',
+				success: res => {
+					this.loginCode = res.code;
+				}
+			});
+		}
+		this.canIUseGetUserProfile = !!uni.getUserProfile;
+		// #endif
+	},
+	methods: {
+		// APP登录
+		appLogin() {
+			// #ifdef APP-PLUS
+			this.$emit('loginSuccess');
+			const res = uni.getSystemInfoSync();
+			if (res.platform === 'ios') {
+				const iosAuditStatus = this.$store.state.iosAuditStatus;
+				const isUpdate = uni.getStorageSync('isUpdate');
+				if (iosAuditStatus === 4 && !isUpdate) {
+					this.goPage('/pagesT/public/login');
+				} else {
+					this.goPage('/pagesT/public/wxLogin');
+				}
+			} else {
+				this.goPage('/pagesT/public/login');
+				// this.goPage('/pagesT/public/wxLogin');
+			}
+			// #endif
+			// #ifdef H5
+			this.$emit('loginSuccess');
+			this.goPage('/pagesT/public/wxLogin');
+			// #endif
+		},
+		// 拒绝跳转主页面
+		goIndex() {
+			uni.switchTab({
+				url: '/pages/index/index'
+			});
+		},
+		// 头条
+		getuserinfoTT() {
+			uni.login({
+				provider: 'toutiao',
+				success: res => {
+					uni.setStorageSync('loginCode', res.code);
+					this.loginCode = res.code;
+					uni.getUserInfo({
+						provider: 'toutiao',
+						success: prop => {
+							console.log(prop);
+							this.wxUserInfo = prop;
+							// 用户图像
+							const avator = prop.userInfo.avatarUrl;
+							uni.setStorageSync('avator', avator);
+							// 用户昵称
+							const NickName = prop.userInfo.nickName;
+							uni.setStorageSync('NickName', NickName);
+							this.microappLogin(this.loginCode);
+						}
+					});
+				}
+			});
+		},
+		getUserProfile() {
+			wx.getUserProfile({
+				desc: '用于完善用户资料',
+				lang: 'zh_CN',
+				success: res => {
+					console.log(res);
+					console.log('获取用户授权信息成功');
+					this.getuserinfo(res);
+				},
+				fail: fail => {
+					console.log('获取用户授权信息失败');
+				}
+			});
+		},
+		// 允许获取信息 微信
+		getuserinfo(val) {
+			this.$emit('loginSuccess');
+			this.wxUserInfo = val.detail || val;
+			// 用户图像
+			const avator = this.wxUserInfo.userInfo.avatarUrl;
+			uni.setStorageSync('avator', avator);
+			// 用户昵称
+			const NickName = this.wxUserInfo.userInfo.nickName;
+			uni.setStorageSync('NickName', NickName);
+			if (!this.loginCode) {
+				uni.login({
+					provider: 'weixin',
+					success: res => {
+						this.loginCode = res.code;
+						this.Login(this.loginCode);
+					}
+				});
+			} else {
+				this.Login(this.loginCode);
+			}
+		},
+		// 头条小程序登陆
+		microappLogin(code) {
+			this.$u.api
+				.microappLogin({
+					code: code
+				})
+				.then(({ data }) => {
+					uni.setStorageSync('openid', data.openid);
+					this.checkBindMiniProgram(data.openid, '');
+				});
+		},
+		// 微信小程序通过code获取openId
+		Login(code) {
+			uni.showLoading();
+			this.$u.api
+				.getOpenId({
+					code: code
+				})
+				.then(data => {
+					uni.hideLoading();
+					// code 用过之后 清除缓存的code
+					this.loginCode = '';
+					if (!data.data.unionid) {
+						this.decryptData(this.wxUserInfo.iv, this.wxUserInfo.encryptedData, data.data.openid);
+					} else {
+						uni.setStorageSync('openid', data.data.openid);
+						uni.setStorageSync('unionid', data.data.unionid);
+						this.checkBindMiniProgram(data.data.openid, data.data.unionid);
+					}
+					// this.checkBindMiniProgram(data.data.openid, data.data.unionid);
+					// uni.setStorageSync('session_key', data.data.session_key);
+				});
+		},
+		// 反解 unionId
+		decryptData(iv, encryptedData, openid) {
+			// const iv = e.detail.iv;
+			// const encryptedData = e.detail.encryptedData;
+			this.$u.api
+				.decryptData({
+					openid: openid,
+					iv: iv,
+					encryptedData: encryptedData
+				})
+				.then(data => {
+					uni.setStorageSync('openid', openid);
+					uni.setStorageSync('unionid', data.data.unionId);
+					this.checkBindMiniProgram(openid, data.data.unionId);
+				});
+		},
+		// 判断是否已绑定  checkBindMiniProgram
+		checkBindMiniProgram(openid, unionid) {
+			this.$u.api
+				.checkBindMiniProgram({
+					openId: openid || '',
+					unionId: unionid || '',
+					source: this.$common.source()
+				})
+				.then(async data => {
+					// 如果返回空绑定手机
+					if (!data.data.token) {
+						setTimeout(() => {
+							this.goPage(`/pagesT/binding/bindPhone`);
+						}, 100);
+						return;
+					} else {
+						const token = data.data.token;
+						uni.setStorageSync('token', token);
+						uni.setStorageSync('expireTime', data.data.expireTime);
+						// 更新登录状态
+						this.$store.commit('commit_hasLogin', true);
+						// 添加分销上下级关系
+						await this.relationshipBusinessman();
+						// 否则验证审核
+						await this.getCustomerInfo(data.data.token, data.data.expireTime);
+					}
+				});
+		},
+		// 添加分销上下级关系 source: 1:首次点击链接 2:首次下单 3:首次付款'
+		async relationshipBusinessman() {
+			if (!this.$store.state.businessmanId) {
+				return;
+			}
+			this.$u.api
+				.relationshipBusinessman({
+					businessmanId: this.$store.state.businessmanId,
+					source: 1
+				})
+				.then(res => {
+					console.log('上下:', res);
+				});
+		},
+		//先获取个人资料
+		getCustomerInfo(token) {
+			this.$u.api.getCustomerInfo().then(({ data }) => {
+				if (data.enableStatus === 4) {
+					uni.clearStorageSync();
+					uni.showModal({
+						title: '账号已被禁用,您可以',
+						content: '联系电话:' + (data.enterpriseMobile||''),
+						confirmText: '联系客服',
+						cancelText: '取消',
+						success: res => {
+							if (res.confirm) {
+								uni.makePhoneCall({
+									phoneNumber: data.enterpriseMobile
+								});
+							} else {
+								this.goPage('/pages/binding/bindInfo', 'reLaunch');
+							}
+						}
+					});
+					return;
+				}
+				// if (this.$store.state.baseSet.personnelReview === 5) {
+				if (data.status === 3) {
+					// uni.clearStorageSync();
+					// 说明资料不完善,跳转到完善资料的页面
+					uni.showModal({
+						title: '审核未通过,请重新修改资料',
+						content: data.auditFailReason || '',
+						cancelText: '联系客服',
+						confirmText: '修改资料',
+						success: res => {
+							if (res.confirm) {
+								this.goPage('/pagesT/user/editUserInfo?token=' + token);
+							} else if (res.cancel) {
+								uni.makePhoneCall({
+									phoneNumber: data.enterpriseMobile
+								});
+							}
+						}
+					});
+				} else if (data.status === 1) {
+					// uni.clearStorageSync();
+					uni.showModal({
+						title: '账号正在审核中,您可以',
+						content: '联系电话:' + (data.enterpriseMobile||''),
+						confirmText: '先去逛逛',
+						cancelText: '联系客服',
+						success: res => {
+							if (res.confirm) {
+								this.goPage('/pages/index/index', 'switchTab');
+							} else {
+								uni.makePhoneCall({
+									phoneNumber: data.enterpriseMobile
+								});
+							}
+						}
+					});
+				} else {
+					this.$emit('loginFinish');
+				}
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.login-btn {
+	font-size: 28rpx;
+	// height: 40upx;
+	line-height: inherit;
+	background: transparent;
+	color: $uni-color-primary;
+	// width: 200upx;
+	margin-left: 0;
+	margin-right: 0;
+	// display: inline-block;
+}
+.login-btn::after {
+	border: 0 none;
+}
+</style>

+ 80 - 0
components/NoLoginTip.vue

@@ -0,0 +1,80 @@
+<template>
+	<!--
+
+	 show-cancel-button
+	 confirm-color="#ffffff"
+	 confirm-text="立即登录"
+	 cancel-text="暂不登录"
+	 @confirm="confirm"
+	 @cancel="cancel"
+	 -->
+	<u-modal :show-confirm-button="false" v-model="show" title="您还未登录">
+		<view style="text-align: center;">
+			<view style="font-size: 24rpx; color: #666;padding: 20rpx; 0">请先登录之后再进行操作</view>
+			<image style="width: 200rpx; height: 200rpx;margin-bottom: 20rpx;" src="https://onlineimg.qianniao.vip/login-tip.jpg" mode="aspectFit"></image>
+			<view class="m-btn-ul">
+				<view class="m-btn-li" @click="cancel">暂不登录</view>
+				<view class="m-btn-li confirm-btn primary-bg" >
+					<Login @loginSuccess="loginSuccess"><view slot="lBtn" style="color: #fff;">立即登录</view></Login>
+				</view>
+			</view>
+		</view>
+	</u-modal>
+</template>
+
+<script>
+import Login from '@/components/Login.vue';
+export default {
+	components: {
+		Login
+	},
+	props: {
+		show: {
+			type: Boolean,
+			default: false
+		}
+	},
+	data() {},
+	methods: {
+		loginSuccess() {
+			this.cancel();
+		},
+		confirm() {
+			// #ifdef APP-PLUS
+			uni.reLaunch({
+				url: '/pagesT/public/wxLogin'
+			});
+			// #endif
+			// #ifdef MP-WEIXIN || MP-TOUTIAO
+			uni.reLaunch({
+				url: '/pages/binding/bindInfo'
+			});
+			//#endif
+			// #ifdef H5
+			uni.reLaunch({
+				url: '/pagesT/public/wxLogin?loginType=2'
+			});
+			// #endif
+		},
+		cancel() {
+			console.log(123)
+			this.$emit('cancel');
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.m-btn-ul {
+	display: flex;
+	border-top: 1px solid #f4f4f4;
+	.m-btn-li {
+		flex: 2;
+		font-size: 28upx;
+		line-height: 88upx;
+	}
+	.confirm-btn {
+		color: #ffffff;
+	}
+}
+</style>

+ 260 - 0
components/PageDesign/PageDesign.vue

@@ -0,0 +1,260 @@
+<template>
+	<view class="pageDesin-box" v-if="temData.length">
+		<!-- <view class="address-view" @click="openLocation" :style="{ backgroundColor: temData[0].modelData.topBgColor, color:temData[0].modelData.textColor }">
+			<text class="ibonfont ibondingweiweizhi"></text>
+			<text class="address-text">{{ location.address || '请手动定位' }}</text>
+			<text class="ibonfont ibonjinru"></text>
+		</view> -->
+		<!-- <view style="position: relative;z-index: 2;"> -->
+		<block v-for="(item, index) in temData" :key="index">
+			<ImgSwiper v-if="item.comName === 'ImgSwiper'" :modelData="item.modelData" />
+			<SearchC v-if="item.comName === 'SearchC'" :modelData="item.modelData" />
+			<MagicImg v-if="item.comName === 'MagicImg'" :modelData="item.modelData" />
+			<Notice v-if="item.comName === 'Notice'" :modelData="item.modelData" :noticeData="item.data" />
+			<NavBar v-if="item.comName === 'NavBar'" :modelData="item.modelData" />
+			<view class="" v-if="temData[index].comName === 'NavBar' && temData[index+1].comName !== 'NavBar'">
+				<image src="http://up.liuniukj.com/167307900573324/931544405107da76ca2ec31cd63fae49/yyzq.png" mode=""
+					class="banner-ad"
+					@click="goPage('/pagesT/unit/item')"></image>
+			</view>
+			<AdvGroup v-if="item.comName === 'AdvGroup'" :modelData="item.modelData" />
+			<GoodsGroup v-if="item.comName === 'GoodsGroup'" :modelData="item.modelData" :goodsList="item.data"
+				:showGoodsPrice="showGoodsPrice" :selAddress="selAddressD" />
+			<LimitedSeckill v-if="item.comName === 'LimitedSeckill'" :modelData="item.modelData" :goodsList="item.data"
+				:showGoodsPrice="showGoodsPrice" :selAddress="selAddressD" />
+			<CouponGroup v-if="item.comName === 'CouponGroup'" :modelData="item.modelData" :couponList="item.data" />
+			<LineF v-if="item.comName === 'LineF'" :modelData="item.modelData" />
+			<Blank v-if="item.comName === 'Blank'" :modelData="item.modelData" />
+			<div v-if="item.comName === 'FloatBth'" class="float-bth" @click="btnEvent(item)" :style="{
+					backgroundColor: item.modelData.btnStyle === 2 ? item.modelData.bgColor : 'transparent',
+					borderColor: item.modelData.btnStyle === 2 ? item.modelData.bgColor : '#999999'
+				}">
+				<image :src="item.modelData.image" class="float-img" />
+			</div>
+			<!-- #ifdef MP-WEIXIN -->
+			<button v-if="item.comName === 'wxService'" class="float-bth wxService" :style="{
+					color: item.modelData.color
+				}" open-type="contact">
+				<text class="ibonfont ibonkefu"></text>
+			</button>
+			<!-- #endif -->
+		</block>
+		<!-- <view class="logo-view" v-if="$common.getEnToken() !== '8fa553d53f44e33123e4d0d51a0de634'">
+			<image src="https://onlineimg.qianniao.vip/QNlogo-i-1.png" mode="aspectFit"></image>
+			<view class="logo-tip">- 千鸟云商提供技术支持 -</view>
+		</view> -->
+		<!-- </view> -->
+	</view>
+</template>
+
+<script>
+	import SearchC from './components/Search.vue';
+	import ImgSwiper from './components/Banner.vue';
+	import MagicImg from './components/MagicImg.vue';
+	import Notice from './components/Notice.vue';
+	import NavBar from './components/NavBar.vue';
+	import GoodsGroup from './components/GoodsGroup.vue';
+	import LimitedSeckill from './components/LimitedSeckill.vue';
+	import CouponGroup from './components/CouponGroup.vue';
+	import LineF from './components/Line.vue';
+	import Blank from './components/Blank.vue';
+	import AdvGroup from './components/AdvGroup.vue';
+	// import NavigationBar from './components/NavigationBar.vue';
+
+	export default {
+		name: 'PageDesign',
+		components: {
+			SearchC,
+			ImgSwiper,
+			MagicImg,
+			Notice,
+			NavBar,
+			GoodsGroup,
+			LimitedSeckill,
+			CouponGroup,
+			LineF,
+			Blank,
+			AdvGroup
+			// NavigationBar
+		},
+		props: {
+			showGoodsPrice: {
+				type: [Number, String],
+				default: ''
+			},
+			temData: {
+				type: Array,
+				default: () => {
+					return [];
+				}
+			},
+			pageBack: {
+				type: Boolean,
+				default: false
+			},
+			isBackIndex: {
+				type: Boolean,
+				default: false
+			},
+			amapPlugin: {
+				type: [Object, Function],
+				default: () => {
+					return {};
+				}
+			},
+			selAddress: {
+				type: Object,
+				default: () => {
+					return {};
+				}
+			}
+		},
+		computed: {
+			style() {
+				const systemInfo = uni.getSystemInfoSync();
+				return `padding-top:${systemInfo.statusBarHeight + 50}px`;
+			},
+			location() {
+				return this.$store.state.locationObj;
+			}
+		},
+		data() {
+			return {
+				selAddressD: {}
+			};
+		},
+		watch: {
+			selAddress(val) {
+				this.selAddressD = val;
+			}
+		},
+		created() {
+			// console.log(this.$common.getEnToken())
+			// this.getHome();
+		},
+		methods: {
+			backEvent() {
+				if (this.isBackIndex) {
+					this.goPage('/pages/index/index', 'switchTab');
+				} else {
+					uni.navigateBack();
+				}
+			},
+			openLocation() {
+				this.$emit('openLocation');
+			},
+			getHome() {
+				this.$u.api.getHome().then(res => {
+					uni.stopPullDownRefresh();
+					this.temData = res.data;
+				});
+			},
+			btnEvent(item) {
+				if (item.modelData.btnType === 2) {
+					uni.makePhoneCall({
+						phoneNumber: item.modelData.phone
+					});
+				} else if (item.modelData.btnType === 1) {
+					this.goPage(item.modelData.url, item.modelData.switchTab);
+				} else {
+					uni.pageScrollTo({
+						scrollTop: 0,
+						duration: 300
+					});
+				}
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	.pageDesin-box {
+		// background-color: #f5f9fc;
+		// padding-top: calc(44px + var(--status-bar-height));
+	}
+
+	.float-bth {
+		position: fixed;
+		bottom: 150upx;
+		right: 20upx;
+		width: 80upx;
+		height: 80upx;
+		text-align: center;
+		cursor: pointer;
+		border-radius: 100%;
+		border: 1upx solid #999;
+		box-shadow: 0 6upx 20upx #dcdcdc;
+		z-index: 99;
+
+		.float-img {
+			width: 40upx;
+			height: 40upx;
+			display: inline-block;
+			margin-top: 20upx;
+		}
+	}
+
+	.wxService {
+		padding: 0;
+		background-color: #ffffff;
+		border: 0 none;
+		bottom: 250upx;
+		line-height: 80upx;
+
+		.ibonkefu {
+			font-size: 46upx;
+		}
+
+		&::after {
+			border: 0 none;
+		}
+	}
+
+	.logo-view {
+		text-align: center;
+		padding: 10upx 0;
+
+		image {
+			width: 120upx;
+			height: 20upx;
+			opacity: 0.7;
+		}
+
+		.logo-tip {
+			// padding-top: 4upx;
+			font-size: 18upx;
+			color: #999;
+		}
+	}
+
+	.address-view {
+		padding: 20upx;
+		font-size: 26upx;
+
+		// background-color: #ffffff;
+		.address-text {
+			display: inline-block;
+			vertical-align: middle;
+			font-weight: bold;
+		}
+
+		.ibonfont {
+			margin-right: 10upx;
+			// color: #999;
+			vertical-align: middle;
+		}
+
+		.ibonjinru {
+			// color: #333;
+			font-weight: 300;
+			font-size: 28upx;
+		}
+	}
+
+	.banner-ad {
+		width: 690rpx;
+		height: 190rpx;
+		display: block;
+		margin: 20rpx auto;
+	}
+</style>

+ 255 - 0
components/PageDesign/components/AdvGroup.vue

@@ -0,0 +1,255 @@
+<template>
+	<div class="AdvGroup">
+		<div v-if="modelData.style.styleId !== 3" class="group-one">
+			<div class="one-li one-left" @click="navTo(modelData.adv_list[0].url, modelData.adv_list[0].switchTab)">
+				<div class="left-title-view">
+					<span class="title" :style="{ color: modelData.adv_list[0].titleColor }">{{ modelData.adv_list[0].title }}</span>
+					<span class="desc" :style="{ color: modelData.adv_list[0].descColor }">{{ modelData.adv_list[0].desc }}</span>
+				</div>
+				<div class="more-btn">
+					<span>{{ modelData.adv_list[0].btnText }}</span>
+					<span class="ibonfont ibonjinru"></span>
+				</div>
+				<div><image class="adv-img" mode="aspectFill" :src="modelData.adv_list[0].image.url" /></div>
+			</div>
+			<div class="one-li one-right">
+				<div class="right-li clearfix" @click="navTo(modelData.adv_list[1].url, modelData.adv_list[1].switchTab)">
+					<div class="float_left">
+						<p class="title" :style="{ color: modelData.adv_list[1].titleColor }">{{ modelData.adv_list[1].title }}</p>
+						<p class="desc" :style="{ color: modelData.adv_list[1].descColor }">{{ modelData.adv_list[1].desc }}</p>
+						<div class="more-btn">
+							<span>{{ modelData.adv_list[1].btnText }}</span>
+							<span class="ibonfont ibonjinru"></span>
+						</div>
+					</div>
+					<div class="float_right"><image class="adv-img" mode="aspectFill" :src="modelData.adv_list[1].image.url" /></div>
+				</div>
+				<div class="right-li clearfix" @click="navTo(modelData.adv_list[2].url, modelData.adv_list[2].switchTab)">
+					<div class="float_left">
+						<p class="title" :style="{ color: modelData.adv_list[2].titleColor }">{{ modelData.adv_list[2].title }}</p>
+						<p class="desc" :style="{ color: modelData.adv_list[2].descColor }">{{ modelData.adv_list[2].desc }}</p>
+						<div class="more-btn">
+							<span>{{ modelData.adv_list[2].btnText }}</span>
+							<span class="ibonfont ibonjinru"></span>
+						</div>
+					</div>
+					<div class="float_right"><image class="adv-img" mode="aspectFill" :src="modelData.adv_list[2].image.url" /></div>
+				</div>
+			</div>
+		</div>
+		<div v-if="modelData.style.styleId === 1" class="group-two">
+			<div class="group-li" @click="navTo(modelData.adv_list[3].url, modelData.adv_list[3].switchTab)">
+				<div class="group-title">
+					<span class="title" :style="{ color: modelData.adv_list[3].titleColor }">{{ modelData.adv_list[3].title }}</span>
+					<span class="desc" :style="{ color: modelData.adv_list[3].descColor }">{{ modelData.adv_list[3].desc }}</span>
+				</div>
+				<div class="clearfix">
+					<div class="more-btn float_left">
+						<span>{{ modelData.adv_list[3].btnText }}</span>
+						<span class="ibonfont ibonjinru"></span>
+					</div>
+					<div class="float_right"><image class="adv-img" mode="aspectFill" :src="modelData.adv_list[3].image.url" /></div>
+				</div>
+			</div>
+			<div class="group-li" @click="navTo(modelData.adv_list[4].url, modelData.adv_list[4].switchTab)">
+				<div class="group-title">
+					<span class="title" :style="{ color: modelData.adv_list[4].titleColor }">{{ modelData.adv_list[4].title }}</span>
+					<span class="desc" :style="{ color: modelData.adv_list[4].descColor }">{{ modelData.adv_list[4].desc }}</span>
+				</div>
+				<div class="clearfix">
+					<div class="more-btn float_left">
+						<span>{{ modelData.adv_list[4].btnText }}</span>
+						<span class="ibonfont ibonjinru"></span>
+					</div>
+					<div class="float_right"><image class="adv-img" :src="modelData.adv_list[4].image.url" mode="aspectFill" /></div>
+				</div>
+			</div>
+		</div>
+		<!--    样式3-->
+		<div v-if="modelData.style.styleId === 3" class="group-two">
+			<div class="group-li" @click="navTo(modelData.adv_list[0].url, modelData.adv_list[0].switchTab)">
+				<div class="group-title">
+					<span class="title" :style="{ color: modelData.adv_list[0].titleColor }">{{ modelData.adv_list[0].title }}</span>
+					<span class="desc" :style="{ color: modelData.adv_list[0].descColor }">{{ modelData.adv_list[0].desc }}</span>
+				</div>
+				<div class="clearfix">
+					<div class="more-btn float_left">
+						<span>{{ modelData.adv_list[0].btnText }}</span>
+						<span class="ibonfont ibonjinru"></span>
+					</div>
+					<div class="float_right"><image class="adv-img" mode="aspectFill" :src="modelData.adv_list[0].image.url" /></div>
+				</div>
+			</div>
+			<div class="group-li" @click="navTo(modelData.adv_list[1].url, modelData.adv_list[1].switchTab)">
+				<div class="group-title">
+					<span class="title" :style="{ color: modelData.adv_list[1].titleColor }">{{ modelData.adv_list[1].title }}</span>
+					<span class="desc" :style="{ color: modelData.adv_list[1].descColor }">{{ modelData.adv_list[1].desc }}</span>
+				</div>
+				<div class="clearfix">
+					<div class="more-btn float_left">
+						<span>{{ modelData.adv_list[1].btnText }}</span>
+						<span class="ibonfont ibonjinru"></span>
+					</div>
+					<div class="float_right"><image class="adv-img" mode="aspectFill" :src="modelData.adv_list[1].image.url" /></div>
+				</div>
+			</div>
+		</div>
+		<NoLoginTip @cancel="cancelTip" :show="loginTip" v-if="loginTip" />
+	</div>
+</template>
+
+<script>
+import NoLoginTip from '../../NoLoginTip.vue';
+export default {
+	name: 'AdvGroup',
+	components: {
+		NoLoginTip
+	},
+	props: {
+		modelData: {
+			type: Object,
+			default: () => {
+				return {};
+			}
+		}
+	},
+	data(){
+		return{
+			loginTip:false
+		}
+	},
+	methods: {
+		cancelTip() {
+			this.loginTip = false;
+		},
+		navTo(url, switchTab) {
+			if (!this.$common.isLogin()) {
+				this.loginTip = true;
+			} else {
+				this.goPage(url, switchTab);
+			}
+		}
+	}
+};
+</script>
+
+<style scoped lang="scss">
+.AdvGroup {
+	background-color: #ffffff;
+	.more-btn {
+		font-size: 20rpx;
+		font-weight: 400;
+		color: #cacaca;
+		line-height: 28rpx;
+		.ibonfont {
+			font-size: 20rpx;
+		}
+	}
+	.group-one {
+		display: flex;
+		.one-li {
+			flex: 2;
+		}
+		.one-left {
+			padding-left: 32rpx;
+			padding-top: 24rpx;
+			padding-bottom: 24rpx;
+			border-right: 1px solid #eeeeee;
+			.adv-img {
+				margin-top: 32rpx;
+				width: 318rpx;
+				height: 240rpx;
+				border-radius: 16rpx;
+			}
+			.left-title-view {
+				line-height: 46rpx;
+				padding-bottom: 8rpx;
+				.title {
+					font-size: 32rpx;
+					font-weight: 500;
+					color: #2a2a2a;
+				}
+				.desc {
+					margin-left: 8rpx;
+					font-size: 24rpx;
+					font-weight: 400;
+					color: #f05064;
+				}
+			}
+		}
+		.one-right {
+			padding-right: 32rpx;
+			.right-li {
+				padding: 24rpx 0 24rpx 24rpx;
+				position: relative;
+				.more-btn {
+					position: absolute;
+					left: 24rpx;
+					bottom: 24rpx;
+				}
+				.title {
+					font-size: 28rpx;
+					font-weight: 500;
+					color: #2a2a2a;
+					line-height: 40rpx;
+				}
+				.desc {
+					font-size: 24rpx;
+					font-weight: 400;
+					color: #fd6f02;
+					line-height: 34rpx;
+					padding-top: 8rpx;
+				}
+				&:first-child {
+					border-bottom: 1px solid #eeeeee;
+					.desc {
+						color: #3cb4b6;
+					}
+				}
+			}
+			.adv-img {
+				width: 134rpx;
+				height: 152rpx;
+				border-radius: 8rpx;
+			}
+		}
+	}
+}
+.group-two {
+	display: flex;
+	border-top: 1px solid #eeeeee;
+	.group-li {
+		padding: 24rpx 0;
+		flex: 2;
+		&:first-child {
+			padding-left: 32rpx;
+			padding-right: 24rpx;
+			border-right: 1px solid #eeeeee;
+		}
+		&:nth-child(2) {
+			padding-right: 32rpx;
+			padding-left: 24rpx;
+		}
+		.group-title {
+			padding-bottom: 12rpx;
+			line-height: 40rpx;
+			.title {
+				font-size: 28rpx;
+				font-weight: 500;
+				color: #2a2a2a;
+			}
+			.desc {
+				margin-left: 8rpx;
+				font-size: 24rpx;
+				font-weight: 400;
+				color: #19906c;
+			}
+		}
+		.adv-img {
+			width: 194rpx;
+			height: 108rpx;
+			border-radius: 8rpx;
+		}
+	}
+}
+</style>

+ 55 - 0
components/PageDesign/components/Banner.vue

@@ -0,0 +1,55 @@
+<template>
+	<view style="margin: 0 auto;" :style="{ width: modelData.style === 2 ? '710rpx' : '750rpx' }">
+		<u-swiper
+			:height="modelData.style === 2 ? '300' : '350'"
+			:interval="modelData.interval * 1000"
+			:list="modelData.bannerList"
+			name="img"
+			:autoplay="modelData.autoplay"
+			:effect3d="false"
+			bg-color="transparent"
+			:border-radius="modelData.style === 2 ? '24' : '0'"
+			@click="navTo"
+			img-mode="widthFix"
+			:mode="modelData.indicatorDots?'dot': 'none'"
+		></u-swiper>
+		<NoLoginTip @cancel="cancelTip" :show="loginTip" v-if="loginTip" />
+	</view>
+</template>
+<script>
+import NoLoginTip from '../../NoLoginTip.vue';
+export default {
+	components: {
+		NoLoginTip
+	},
+	props: {
+		modelData: {
+			type: Object,
+			default: () => {
+				return {};
+			}
+		}
+	},
+	data() {
+		return {
+			loginTip: false
+		};
+	},
+	mounted() {
+		console.log(this.modelData,'modelData+++')
+	},
+	methods: {
+		cancelTip() {
+			this.loginTip = false;
+		},
+		navTo(index) {
+			if (!this.$common.isLogin()) {
+				this.loginTip = true;
+			} else {
+				this.goPage(this.modelData.bannerList[index].url, this.modelData.bannerList[index].switchTab);
+			}
+		}
+	}
+};
+</script>
+<style scoped lang="scss"></style>

+ 24 - 0
components/PageDesign/components/Blank.vue

@@ -0,0 +1,24 @@
+<template>
+  <div
+    class="blank"
+    :style="{height:modelData.height*2+'rpx',backgroundColor:modelData.backgroundColor}"
+  ></div>
+</template>
+
+<script>
+  export default {
+    name: 'Blank',
+    props: {
+      modelData: {
+        type: Object,
+        default: () => {
+          return {}
+        }
+      }
+    }
+  }
+</script>
+
+<style scoped>
+
+</style>

+ 155 - 0
components/PageDesign/components/CouponGroup.vue

@@ -0,0 +1,155 @@
+<template>
+		<div class="coupon-box" v-if="!!couponList.length">
+			<div v-if="modelData.title || modelData.titleDesc" class="coupon-title">
+				<span class="title">{{ modelData.title }}</span>
+				<span v-if="modelData.titleDesc" class="line">|</span>
+				<span class="desc">{{ modelData.titleDesc }}</span>
+			</div>
+			<ul class="coupon-ul" :style="{ paddingTop: modelData.title || modelData.titleDesc ? '4rpx' : '46rpx' }">
+				<view v-for="(item, index) in couponList" :key="index" class="coupon-li" :class="[modelData.rowNum === 2 ? 'coupon-two-li' : '']">
+					<div class="coupon-in" @click="getCoupon(item)">
+						<p class="num">¥{{ Number(item.reducePrice) }}</p>
+						<div class="coupon-desc" v-if="Number(item.minPrice)">商品满{{ Number(item.minPrice) }}元可用</div>
+						<div class="coupon-desc" v-else>无使用门槛</div>
+						<div class="get-btn">
+							<span>领取使用</span>
+							<span class="ibonfont ibonyoujiantou"></span>
+						</div>
+					</div>
+				</view>
+			</ul>
+		</div>
+</template>
+
+<script>
+export default {
+	name: 'CouponGroup',
+	props: {
+		modelData: {
+			type: Object,
+			default: () => {
+				return {};
+			}
+		},
+		couponList: {
+			type: Array,
+			default: () => {
+				return [];
+			}
+		}
+	},
+	methods: {
+		// 点击领取优惠券
+		async getCoupon(item) {
+			this.$u.api
+				.receive({
+					couponId: item.id,
+					vipCardId: item.vipCardId
+				})
+				.then(res => {
+					this.$api.msg('领取成功');
+				});
+		}
+	}
+};
+</script>
+<style scoped lang="scss">
+
+.coupon-box {
+	border-radius: 32rpx;
+	width: 710rpx;
+	margin: 0 auto;
+	background-image: url('https://junhailan.com/static/img/coupon_bck.1336988a.png');
+	background-repeat: no-repeat;
+	background-position: center;
+	background-size: 100% 100%;
+	.coupon-title {
+		padding: 0 24rpx;
+		line-height: 90rpx;
+		height: 90rpx;
+		color: #ffe6c6;
+		font-size: 24rpx;
+		.line {
+			margin: 0 20rpx;
+		}
+		.title {
+			font-size: 36rpx;
+			font-weight: 600;
+			color: #ffd7a4;
+			text-shadow: 1px 4rpx 1px rgba(175, 19, 13, 0.51);
+		}
+	}
+	.coupon-ul {
+		padding-left: 8rpx;
+		display: flex;
+		padding-bottom: 46rpx;
+		padding-top: 4rpx;
+		width: 100%;
+		// flex-wrap: wrap;
+		white-space: nowrap;
+		overflow-x: scroll;
+		.coupon-li {
+			padding: 4rpx;
+			display: inline-block;
+			margin-left: 24rpx;
+			width: 200rpx;
+			height: 280rpx;
+			background: linear-gradient(180deg, #ffe3cb 3%, #fff8f2 100%);
+			border-radius: 10rpx;
+			&:last-child {
+				margin-right: 30rpx;
+			}
+			.coupon-in {
+				width: 192rpx;
+				height: 272rpx;
+				border-radius: 8rpx;
+				border: 1px solid #a5837a;
+				margin: 0 auto;
+				text-align: center;
+				.num {
+					font-size: 48rpx;
+					font-family: DIN-Medium, DIN;
+					font-weight: 500;
+					color: #8b3913;
+					line-height: 38rpx;
+					background: linear-gradient(180deg, #934331 0%, #c5785f 100%);
+					-webkit-background-clip: text;
+					-webkit-text-fill-color: transparent;
+					margin-top: 52rpx;
+				}
+				.coupon-desc {
+					font-size: 24rpx;
+					font-weight: 400;
+					color: #3c3c3c;
+					line-height: 34rpx;
+					margin-top: 16rpx;
+				}
+				.get-btn {
+					width: 152rpx;
+					height: 48rpx;
+					line-height: 48rpx;
+					background: #9e4722;
+					border-radius: 40rpx;
+					color: #ffffff;
+					font-size: 20rpx;
+					margin: 40rpx auto 0;
+					.ibonfont {
+						font-size: 20rpx;
+						margin-left: 10rpx;
+					}
+				}
+			}
+		}
+		.coupon-two-li {
+			width: 308rpx;
+			display: inline-block;
+			.coupon-in {
+				width: 300rpx;
+				.get-btn {
+					width: 172rpx;
+				}
+			}
+		}
+	}
+}
+</style>

+ 851 - 0
components/PageDesign/components/GoodsGroup.vue

@@ -0,0 +1,851 @@
+<template>
+	<div class="goods-view" :style="{ backgroundColor: modelData.bgColor || '' }">
+		<div v-if="modelData.navStyle === 1">
+			<!--    标题栏风格1-->
+			<div class="title-view clearfix" v-if="modelData.titleStyle === 2" :style="{ color: modelData.titleColor, backgroundColor: modelData.titleBgColor }">
+				{{ modelData.title }}
+				<text class="second-tit primary-btn" v-if="modelData.title_two">{{ modelData.title_two }}</text>
+			</div>
+			<!--    标题栏风格2-->
+			<div class="tit-view-two clearfix" v-if="modelData.titleStyle === 1" :style="{ color: modelData.titleColor, backgroundColor: modelData.titleBgColor }">
+				<text class="tit-view-two-line" :style="{ background: modelData.titleSetColor }"></text>
+				<text class="tit-two-text">{{ modelData.title }}</text>
+				<text class="tit-two-text-c" v-if="modelData.title_two">{{ modelData.title_two }}</text>
+			</div>
+			<!--    标题栏风格3-->
+			<div class="tit-view-three" v-if="modelData.titleStyle === 3" :style="{ color: modelData.titleColor, backgroundColor: modelData.titleBgColor }">
+				<div class="tit-three-text">
+					<div class="tit-view-style tit-view-style-left">
+						<text class="three-style-big" :style="{ background: modelData.titleSetColor }"></text>
+						<text class="three-style-small" :style="{ background: modelData.titleSetColor }"></text>
+					</div>
+					{{ modelData.title }}
+					<div class="tit-view-style tit-view-style-right">
+						<text class="three-style-small" :style="{ background: modelData.titleSetColor }"></text>
+						<text class="three-style-big" :style="{ background: modelData.titleSetColor }"></text>
+					</div>
+				</div>
+				<div class="tit-three-text-c" v-if="modelData.title_two">{{ modelData.title_two }}</div>
+			</div>
+			<!--    标题栏风格4 -->
+			<div class="tit-view-four" v-if="modelData.titleStyle === 4" :style="{ color: modelData.titleColor, backgroundColor: modelData.titleBgColor }">
+				<div class="tit-four-text">{{ modelData.title }}</div>
+				<div class="tit-four-text-c" v-if="modelData.title_two">{{ modelData.title_two }}</div>
+			</div>
+		</div>
+		<ul v-if="modelData.navStyle === 2" class="cate-nav-s">
+			<li class="cate-li" v-for="(item, index) in modelData.tabList" :key="index" :class="[index === tab_index ? 'cate-on' : '']" @click="changeTab(item, index)">
+				{{ item.tabName }}
+			</li>
+		</ul>
+		<div class="goods-div" :class="[modelData.type === 2 ? 'show-scroll' : '']">
+			<ul v-if="modelData.colNum === 1">
+				<li
+					class="clearfix goods-box"
+					v-for="(item, index) in modelData.navStyle === 2 ? tab_goods_list : goodsList"
+					:key="index"
+					@click="goPage(`/pagesT/product/product?id=${item.id}`)"
+					:style="{ backgroundColor: modelData.itemBgColor || '#ffffff', color: modelData.textColor || '#333333' }"
+				>
+					<view v-if="item.brandName" class="brand-name primary-lg">{{ item.brandName }}</view>
+					<view class="float_left img-box">
+						<block v-if="item.isDistribution === 4">
+							<view class="sale-end" v-if="!(item.inventorTotal - 0) || item.inventorTotal - 0 <= 0"><text class="ibonfont ibonbuhuozhong"></text></view>
+						</block>
+						<image class="goods-img-one" :src="item.images[0]" mode="aspectFill"></image>
+					</view>
+					<div class="float_left goods-info">
+						<div class="goods-one-name ellipsis" v-if="modelData.goodsInfo.includes(1)">{{ item.title }}</div>
+						<div class="goods-one-desc ellipsis" v-if="modelData.goodsInfo.includes(4)">{{ item.describe }}</div>
+						<div class="goods-one-sale">
+							<text v-if="modelData.goodsInfo.includes(5) && isSalesNum === 5">已售{{ item.realSalesNum || 0 }}</text>
+						</div>
+						<div class="goods-price clearfix">
+							<view class="float_left price-view">
+								<block v-if="!showGoodsPrice">
+									<view class="now-priceG" v-if="modelData.goodsInfo.includes(2)">
+										<text class="rmbG-icon" :style="{ color: modelData.priceColor || primaryColor }">¥</text>
+										<view style="display: inline-block;font-size: 32rpx;" :style="{ color: modelData.priceColor || primaryColor }">
+											<block v-if="item.isEq === 4"><rich-text :nodes="$_utils.splitPrice(item.minSalePrice)"></rich-text></block>
+											<block v-else><rich-text :nodes="$_utils.splitPrice(item.maxSalePrice)"></rich-text></block>
+										</view>
+										<view class="vip-price clearfix" v-if="item.minMemberPrice > 0">
+											<view class="price-text" v-if="item.isEq === 4">¥{{ item.minMemberPrice }}</view>
+											<view class="price-text" v-else>¥{{ item.maxMemberPrice }}</view>
+											<view class="price-bs">vip</view>
+										</view>
+									</view>
+									<view class="decs-price" v-if="modelData.goodsInfo.includes(3) && !showGoodsPrice">¥{{ item.marketPrice || 0 }}</view>
+								</block>
+								<block v-else>
+									<view class="now-priceG showGoodsPrice" v-if="modelData.goodsInfo.includes(2)">
+										<text :style="{ color: modelData.priceColor || primaryColor }">{{ showGoodsPrice }}</text>
+									</view>
+								</block>
+							</view>
+							<div :style="{ color: modelData.btnColor }" class="float_right add-Car-div" @click.stop="openPopSku(index)">
+								<text v-if="modelData.btnStyle === 2" class="ibonfont ibongouwuche1 p-background-img"></text>
+								<text v-else class="ibonfont ibonxinzeng1 p-background-img"></text>
+							</div>
+						</div>
+					</div>
+				</li>
+			</ul>
+			<!-- 两列 -->
+			<div class="more-col-view goods-two-ul" v-else-if="modelData.colNum === 2">
+				<div class="more-col-li goods-two-li" v-for="(item, index) in modelData.navStyle === 2 ? tab_goods_list : goodsList" :key="index">
+					<div :style="{ backgroundColor: modelData.itemBgColor }" class="goods-li" @click="goPage(`/pagesT/product/product?id=${item.id}`)">
+						<div class="goods-img-box">
+							<block v-if="item.isDistribution === 4">
+								<view class="sale-end" v-if="!(item.inventorTotal - 0) || item.inventorTotal - 0 <= 0"><text class="ibonfont ibonbuhuozhong"></text></view>
+							</block>
+							<view v-if="item.brandName" class="goods-brand primary-lg">{{ item.brandName }}</view>
+							<image class="goods-two-img" :src="item.images[0]" mode="aspectFill"></image>
+						</div>
+						<div class="goods-info-box">
+							<div class="goods-two-name ellipsis" v-if="modelData.goodsInfo.includes(1)">{{ item.title }}</div>
+							<div class="goods-price clearfix">
+								<view class="float_left price-view" v-if="!showGoodsPrice">
+									<view class="now-priceG" v-if="modelData.goodsInfo.includes(2)" :style="{ color: modelData.priceColor || primaryColor }">
+										<text class="rmbG-icon" :style="{ color: modelData.priceColor || primaryColor }">¥</text>
+										<view style="display: inline-block;">
+											<block v-if="item.isEq === 4"><rich-text :nodes="$_utils.splitPrice(item.minSalePrice)"></rich-text></block>
+											<block v-else><rich-text :nodes="$_utils.splitPrice(item.maxSalePrice)"></rich-text></block>
+										</view>
+									</view>
+
+									<view class="vip-price clearfix" v-if="item.minMemberPrice > 0">
+										<view class="price-text" v-if="item.isEq === 4">¥{{ item.minMemberPrice }}</view>
+										<view class="price-text" v-else>¥{{ item.maxMemberPrice }}</view>
+										<view class="price-bs">vip</view>
+									</view>
+									<block v-else>
+										<text class="y-price" :style="{ color: changeColor(modelData.textColor, 0.35) }" v-if="modelData.goodsInfo.includes(3)">
+											¥{{ item.marketPrice || 0 }}
+										</text>
+									</block>
+								</view>
+								<view class="float_left price-view" v-else>
+									<text class="now-priceG showGoodsPrice" v-if="modelData.goodsInfo.includes(2)" :style="{ color: modelData.priceColor || primaryColor }">
+										{{ showGoodsPrice }}
+									</text>
+								</view>
+
+								<view :style="{ color: modelData.btnColor || primaryColor }" class="float_right add-Car-div" @click.stop="openPopSku(index)">
+									<text v-if="modelData.btnStyle === 2" class="ibonfont ibongouwuche1 p-background-img"></text>
+									<text v-else class="ibonfont ibonxinzeng1 p-background-img"></text>
+								</view>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+			<!-- 三列 -->
+			<div class="more-col-view" v-else>
+				<div class="more-col-li goods-three-li" v-for="(item, index) in modelData.navStyle === 2 ? tab_goods_list : goodsList" :key="index">
+					<div :style="{ backgroundColor: modelData.itemBgColor }" class="goods-li" @click="goPage(`/pagesT/product/product?id=${item.id}`)">
+						<div class="goods-img-box">
+							<block v-if="item.isDistribution === 4">
+								<view class="sale-end" v-if="!(item.inventorTotal - 0) || item.inventorTotal - 0 <= 0"><text class="ibonfont ibonbuhuozhong"></text></view>
+							</block>
+							<view v-if="item.brandName" class="goods-brand primary-lg">{{ item.brandName }}</view>
+							<image class="goods-three-img" :src="item.images[0]" mode="aspectFill"></image>
+						</div>
+						<div class="goods-info-box">
+							<div class="goods-name ellipsis" v-if="modelData.goodsInfo.includes(1)">{{ item.title }}</div>
+							<div class="goods-price clearfix">
+								<view class="float_left now-priceG" v-if="!showGoodsPrice">
+									<view v-if="modelData.goodsInfo.includes(2)" :style="{ color: modelData.priceColor || primaryColor }">
+										<text class="rmbG-icon" :style="{ color: modelData.priceColor || primaryColor }">¥</text>
+										<view style="display: inline-block;">
+											<block v-if="item.isEq === 4"><rich-text :nodes="$_utils.splitPrice(item.minSalePrice)"></rich-text></block>
+											<block v-else><rich-text :nodes="$_utils.splitPrice(item.maxSalePrice)"></rich-text></block>
+										</view>
+									</view>
+								</view>
+								<view class="float_left price-view" v-else>
+									<text class="now-priceG showGoodsPrice" v-if="modelData.goodsInfo.includes(2)" :style="{ color: modelData.priceColor || primaryColor }">
+										{{ showGoodsPrice }}
+									</text>
+								</view>
+
+								<view :style="{ color: modelData.btnColor || primaryColor }" class="float_right add-Car-div" @click.stop="openPopSku(index)">
+									<text v-if="modelData.btnStyle === 2" class="ibonfont ibongouwuche1 p-background-img"></text>
+									<text v-else class="ibonfont ibonxinzeng1 p-background-img"></text>
+								</view>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+		<AddCardModel :selAddress="selAddressD" @close="is_add_show = false" :isShow="is_add_show" @change="cardModelPopChange" :goodsId="goods_id" />
+	</div>
+</template>
+<script>
+import AddCardModel from '@/components/AddCardModel';
+export default {
+	name: 'GoodsGroup',
+	components: {
+		AddCardModel
+	},
+
+	props: {
+		showGoodsPrice: {
+			type: [Number, String],
+			default: ''
+		},
+		modelData: {
+			type: Object,
+			default: () => {
+				return {};
+			}
+		},
+		goodsList: {
+			type: Array,
+			default: () => {
+				return [];
+			}
+		},
+		selAddress: {
+			type: Object,
+			default: () => {
+				return {};
+			}
+		}
+	},
+	data() {
+		return {
+			source: '',
+			tab_index: 0,
+			tab_goods_list: [],
+			add_goods: {
+				images: []
+			},
+			buyNum: 1,
+			goodsindex: 0,
+			goods_id: 0,
+			add_sku: {},
+			is_add_show: false,
+			isSalesNum: 4,
+			selAddressD: {}
+		};
+	},
+	watch: {
+		selAddress(val) {
+			this.selAddressD = val;
+		}
+	},
+	created() {
+		this.tab_goods_list = this.modelData.tabList[0].data || [];
+		this.isSalesNum = this.$store.state.baseSet.isSalesNum;
+	},
+	methods: {
+		changeColor(color, n) {
+			return this.$u.colorToRgba(this.$_utils.hexify(color), n);
+		},
+		changeTab(row, index) {
+			this.tab_index = index;
+			this.tab_goods_list = row.data;
+		},
+		cardModelPopChange(obj) {
+			if (!obj.show) {
+				this.is_add_show = false;
+			}
+		},
+		//打开加入购物车弹窗
+		openPopSku(index) {
+			// this.$refs.addCartPop.open();
+			this.is_add_show = true;
+			let row = {};
+			// 因为不知道为什么直接把数据带过来会保错,所以我只能把index带过来
+			if (this.modelData.navStyle === 2) {
+				row = this.tab_goods_list[index];
+			} else {
+				row = this.goodsList[index];
+			}
+			this.goods_id = row.id;
+			// this.add_goods = row;
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.cate-nav-s {
+	white-space: nowrap;
+	line-height: 70upx;
+	width: 100%;
+	overflow: hidden;
+}
+
+.cate-li {
+	display: inline-block;
+	font-size: 28upx;
+	color: #666;
+	font-weight: 400;
+	padding: 0 20upx;
+	text-align: center;
+}
+
+.cate-on:after {
+	content: ' ';
+	display: block;
+	width: 50upx;
+	margin: 0 auto;
+	border-radius: 6upx;
+	height: 6upx;
+	background: $base-btn-bg;
+	transform: translateY(-6upx);
+}
+
+.cate-on {
+	color: $uni-color-primary;
+	font-size: 32upx;
+}
+
+.goods-div {
+	padding: 20upx 12rpx;
+}
+
+.show-scroll {
+	height: 408upx;
+	overflow: hidden;
+}
+.rmbG-icon {
+	font-size: 22upx;
+	font-weight: 400;
+	margin-right: 2upx;
+}
+.vip-price {
+	display: inline-block;
+	vertical-align: middle;
+	margin-left: 20rpx;
+	line-height: 32rpx;
+	height: 32rpx;
+	border-radius: 3rpx;
+	overflow: hidden;
+	font-family: DINPro-Regular;
+	.price-text {
+		float: left;
+		min-width: 80rpx;
+		text-align: center;
+		vertical-align: middle;
+		font-size: 20rpx;
+		color: #ffdfa2;
+		background: linear-gradient(270deg, #1e5657 0%, #0d2b2c 100%);
+		padding: 0 8rpx;
+	}
+	.price-bs {
+		text-align: center;
+		float: left;
+		vertical-align: middle;
+		width: 32rpx;
+		background-color: #ffdfa2;
+		font-size: 20rpx;
+		color: #2c7564;
+	}
+}
+.goods-price {
+	.price-view {
+		width: 246rpx;
+		.now-priceG {
+			font-family: DIN-Medium;
+			color: $uni-color-error;
+			display: inline-block;
+			font-size: 32upx;
+			font-weight: bold;
+			line-height: 40upx;
+		}
+
+		.y-price {
+			font-family: DIN-Medium;
+			color: #d8d8d8;
+			padding-left: 12upx;
+			text-decoration: line-through;
+			line-height: 42upx;
+			font-weight: 400;
+			font-size: 22upx;
+		}
+	}
+}
+
+.goods-box {
+	padding: 20upx;
+	margin-bottom: 20upx;
+	background-color: #ffffff;
+	color: #333333;
+	margin-right: 20upx;
+	border-radius: 16upx;
+	position: relative;
+	margin-left: 20rpx;
+	box-shadow: 0px 2rpx 32rpx 0px rgba(110, 176, 138, 0.08);
+	.img-box {
+		position: relative;
+		.goods-img-one {
+			width: 260upx;
+			height: 260upx;
+			background-color: #f5f5f5;
+			border-radius: 8upx;
+		}
+		.sale-end {
+			position: absolute;
+			width: 260upx;
+			height: 260upx;
+			border-radius: 8upx;
+			display: block;
+			left: 0;
+			top: 0;
+			text-align: center;
+			z-index: 8;
+			line-height: 260upx;
+			background-color: rgba($color: #000000, $alpha: 0.3);
+			.ibonfont {
+				font-size: 120rpx;
+				color: #ffffff;
+			}
+		}
+	}
+	.brand-name {
+		position: absolute;
+		top: 12rpx;
+		left: 12rpx;
+		padding: 0 10rpx;
+		line-height: 32rpx;
+		height: 32rpx;
+		color: #ffffff;
+		border-radius: 8rpx;
+		font-size: 20rpx;
+		z-index: 9;
+	}
+	.goods-info {
+		padding-left: 20upx;
+		width: calc(100% - 284rpx);
+		.goods-one-name {
+			margin-bottom: 20upx;
+			font-size: 28rpx;
+			font-weight: bold;
+			color: #000000;
+			height: 80rpx;
+			line-height: 40rpx;
+		}
+		.goods-one-desc {
+			height: 32rpx;
+			font-size: 24rpx;
+			font-weight: 400;
+			color: #fa6400;
+			line-height: 32rpx;
+			margin-bottom: 20upx;
+			-webkit-line-clamp: 1;
+		}
+		.decs-price {
+			line-height: 28rpx;
+			font-size: 24upx;
+			color: #d8d8d8;
+			text-decoration: line-through;
+			font-weight: 400;
+		}
+		.goods-one-sale {
+			height: 32rpx;
+			font-size: 24rpx;
+			font-weight: 400;
+			color: #9d9d9d;
+			line-height: 32rpx;
+			margin-bottom: 10rpx;
+		}
+		.goods-price {
+			height: 48rpx;
+			line-height: 48rpx;
+			font-size: 20rpx;
+		}
+	}
+}
+
+.title-view {
+	font-size: 36rpx;
+	font-weight: 500;
+	color: #2a2a2a;
+	padding-top: 24rpx;
+	padding-bottom: 24rpx;
+	padding-left: 20rpx;
+	.second-tit {
+		margin-left: 26rpx;
+		min-width: 98rpx;
+		padding: 0 20rpx;
+		height: 48rpx;
+		line-height: 48rpx;
+		text-align: center;
+		background: linear-gradient(90deg, #ff9148 0%, #fa6400 100%);
+		border-radius: 0px 24rpx 0px 24rpx;
+		font-size: 20rpx;
+		font-weight: 400;
+		color: #ffffff;
+		display: inline-block;
+	}
+}
+.goods-li {
+	background-color: #fff;
+	margin-bottom: 24upx;
+	// box-shadow: 0px 0px 10upx 4upx #f5f5f5;
+}
+
+.goods-info-box {
+	padding: 20upx 16upx 16upx;
+}
+
+.more-col-view {
+	display: -webkit-flex;
+	display: flex;
+	width: 100%;
+	// justify-content: space-between;
+	flex-wrap: wrap;
+
+	.more-col-li {
+		.goods-li {
+			border-radius: 8upx;
+			margin-right: 20upx;
+		}
+	}
+}
+.add-cart-view {
+	background-color: #fff;
+	padding: 40upx 30upx 30upx;
+	position: relative;
+	.close-icon-view {
+		position: absolute;
+		right: 30upx;
+		top: 10upx;
+		color: #999;
+	}
+	.goods-top {
+		.goods-pop-img-view {
+			width: 200upx;
+			height: 200upx;
+			background-color: #d0dee5;
+			border-radius: 8upx;
+			.goods-pop-img {
+				width: 100%;
+				height: 100%;
+			}
+		}
+		.goods-top-cont {
+			width: 440upx;
+			.goods-top-name {
+				font-size: 32upx;
+				height: 86upx;
+				-webkit-line-clamp: 2;
+			}
+			.goods-stock {
+				color: #666;
+				font-size: 24upx;
+			}
+			.goods-top-other {
+				padding-top: 20upx;
+				font-size: 28upx;
+				.goods-price {
+					color: $uni-color-error;
+					font-size: 32upx;
+					margin-right: 30upx;
+				}
+				.goods-markt-price {
+					color: #999;
+					line-height: 70upx;
+					font-size: 24upx;
+					text-decoration: line-through;
+				}
+			}
+		}
+	}
+	.sku-view {
+		padding-top: 30upx;
+		.sku-label {
+			font-size: 28upx;
+			font-weight: 300;
+		}
+		.sku-ul {
+			padding-top: 20upx;
+			font-size: 28upx;
+			.sku-li {
+				float: left;
+				min-width: 100upx;
+				height: 60upx;
+				line-height: 60upx;
+				border: 1px solid #fd463e;
+				color: #fd463e;
+				text-align: center;
+				border-radius: 6upx;
+				margin-right: 20upx;
+				margin-bottom: 20upx;
+			}
+			.sku-on {
+				// background: linear-gradient(315deg, #fd463e 0%, #ff7f61 100%);
+				border-color: #fff;
+				color: #fff;
+			}
+		}
+	}
+	.add-pop-btn {
+		width: 600upx;
+		height: 70upx;
+		line-height: 70upx;
+		font-size: 28upx;
+		// background: linear-gradient(315deg, #fd463e 0%, #ff7f61 100%);
+		text-align: center;
+		color: #fff;
+		margin: 30upx auto 0;
+		border-radius: 8upx;
+	}
+}
+
+/*  标题栏风格2*/
+.tit-view-two {
+	padding: 20upx;
+}
+.tit-two-text {
+	font-size: 32upx;
+	font-weight: bold;
+}
+.tit-view-two-line {
+	display: inline-block;
+	width: 6upx;
+	height: 32upx;
+	background: #fd463e;
+	vertical-align: middle;
+	transform: translateY(-4upx);
+	margin-right: 10upx;
+}
+.tit-two-text-c {
+	padding-left: 10upx;
+	font-size: 24upx;
+}
+/*  标题栏风格3*/
+.tit-view-three {
+	text-align: center;
+	padding: 20upx;
+}
+.tit-three-text {
+	font-size: 32upx;
+	font-weight: bold;
+	position: relative;
+	display: inline-block;
+	min-width: 128upx;
+	height: 44upx;
+}
+.tit-view-style {
+	position: absolute;
+	line-height: 36upx;
+}
+.tit-view-style-left {
+	left: -40upx;
+	top: 4upx;
+	transform: rotate(50deg);
+}
+.tit-view-style-left .three-style-small {
+	// transform: translateX(-4upx);
+	margin-left: 6upx;
+}
+.tit-view-style-right {
+	right: -40upx;
+	bottom: 4upx;
+	transform: rotate(50deg);
+}
+.tit-view-style-right .three-style-small {
+	// transform: translateX(4upx);
+	margin-right: 6upx;
+}
+.tit-four-text-c,
+.tit-three-text-c {
+	font-size: 20upx;
+	font-weight: 300;
+	padding-top: 4upx;
+}
+.three-style-big {
+	display: inline-block;
+	width: 8upx;
+	height: 36upx;
+	background: #fd463e;
+	border-radius: 8upx;
+	vertical-align: middle;
+}
+.three-style-small {
+	display: inline-block;
+	width: 6upx;
+	height: 16upx;
+	background: #fd463e;
+	opacity: 0.6;
+	border-radius: 8upx;
+	vertical-align: middle;
+}
+/*  标题栏风格4*/
+.tit-view-four {
+	text-align: center;
+	padding: 20upx;
+}
+.tit-four-text {
+	font-size: 32upx;
+	font-weight: bold;
+}
+.tit-four-text:before {
+	display: inline-block;
+	content: '';
+	width: 60upx;
+	height: 1px;
+	background: #333;
+	vertical-align: middle;
+	margin-right: 10upx;
+}
+.tit-four-text:after {
+	display: inline-block;
+	content: '';
+	width: 60upx;
+	height: 2upx;
+	background: #333;
+	vertical-align: middle;
+	margin-left: 10upx;
+}
+// 加入购物车按钮
+.add-Car-div {
+	// color: #fd463e;
+	.ibonfont {
+		font-size: 40rpx;
+		background-image: -webkit-linear-gradient(45deg, #fe923e 0%, #ff3724 100%);
+		-webkit-background-clip: text;
+		color: transparent;
+		display: inline-block;
+	}
+}
+
+.more-col-view {
+	padding-left: 10rpx;
+	.goods-three-li {
+		.goods-li {
+			margin-right: 12rpx;
+			width: 226rpx;
+			border-radius: 10rpx;
+			overflow: hidden;
+			box-shadow: 0 2rpx 32rpx 0 rgba(110, 176, 138, 0.08);
+			.goods-img-box {
+				padding-top: 24rpx;
+				position: relative;
+				.sale-end {
+					position: absolute;
+					width: 190rpx;
+					height: 190rpx;
+					border-radius: 10upx;
+					display: block;
+					left: 50%;
+					top: 50%;
+					transform: translate(-50%, calc(-50% + 12rpx));
+					text-align: center;
+					z-index: 8;
+					line-height: 190rpx;
+					background-color: rgba($color: #000000, $alpha: 0.3);
+					.ibonfont {
+						font-size: 120rpx;
+						color: #ffffff;
+					}
+				}
+				.goods-brand {
+					z-index: 9;
+					position: absolute;
+					padding: 0 10rpx;
+					height: 32rpx;
+					font-size: 20rpx;
+					font-weight: 500;
+					line-height: 32rpx;
+					left: 8rpx;
+					top: 8rpx;
+					color: #ffffff;
+					border-radius: 8rpx;
+					background: linear-gradient(139deg, #fd0000 0%, #fa6400 100%);
+				}
+				.goods-three-img {
+					width: 190rpx;
+					background-color: #f5f5f5;
+					height: 190rpx;
+					display: block;
+					margin: 0 auto;
+					border-radius: 10rpx;
+				}
+			}
+			.goods-info-box {
+				.goods-name {
+					height: 72rpx;
+					line-height: 36rpx;
+					font-weight: 600;
+				}
+				.goods-price {
+					font-weight: 500;
+					font-family: DIN-Medium;
+				}
+			}
+		}
+	}
+	.goods-two-li {
+		.goods-li {
+			width: 334rpx;
+			margin-right: 15rpx;
+			box-shadow: 0px 2rpx 32rpx 0px rgba(110, 176, 138, 0.08);
+			border-radius: 16rpx;
+		}
+		.goods-img-box {
+			padding-top: 30rpx;
+			position: relative;
+			.sale-end {
+				position: absolute;
+				width: 260rpx;
+				height: 260rpx;
+				border-radius: 10upx;
+				display: block;
+				left: 50%;
+				top: 50%;
+				transform: translate(-50%, calc(-50% + 14rpx));
+				text-align: center;
+				z-index: 8;
+				line-height: 260rpx;
+				background-color: rgba($color: #000000, $alpha: 0.3);
+				.ibonfont {
+					font-size: 120rpx;
+					color: #ffffff;
+				}
+			}
+			.goods-brand {
+				position: absolute;
+				padding: 0 10rpx;
+				height: 32rpx;
+				font-size: 20rpx;
+				font-weight: 500;
+				line-height: 32rpx;
+				left: 10px;
+				top: 16rpx;
+				color: #ffffff;
+				border-radius: 8rpx;
+				background: linear-gradient(139deg, #fd0000 0%, #fa6400 100%);
+			}
+			.goods-two-img {
+				background-color: #f5f5f5;
+				display: block;
+				width: 260rpx;
+				height: 260rpx;
+				border-radius: 8rpx;
+				margin: 0 auto;
+			}
+		}
+		.goods-info-box {
+			.goods-two-name {
+				font-size: 28rpx;
+				font-weight: 500;
+				color: #000000;
+				height: 80rpx;
+				line-height: 40rpx;
+			}
+			.goods-price {
+				padding-top: 4rpx;
+			}
+		}
+	}
+}
+.goods-two-ul {
+	padding-left: 20rpx;
+}
+</style>

+ 341 - 0
components/PageDesign/components/LimitedSeckill.vue

@@ -0,0 +1,341 @@
+<template>
+	<div class="LimitedSeckill" :style="{ backgroundColor: modelData.bgColor }" v-if="goodsList.activityGoods && goodsList.activityGoods.length">
+		<div class="top-div clearfix">
+			<div class="float_left icon-xsms">
+				<text class="ibonfont ibonshijian"></text>
+				<text class="xs-text">限时</text>
+				<text>秒杀</text>
+			</div>
+			<view class="count-down float_left">
+				<block v-if="phaseTime.day > 0">
+					<text class="day-num">{{ phaseTime.day }}</text>
+					<text class="day-text">天</text>
+				</block>
+				<u-count-down
+					height="40"
+					color="#ffffff"
+					separator-size="36"
+					font-size="26"
+					border-color="#000000"
+					bg-color="#000000"
+					separator-color="#000000"
+					:timestamp="phaseTime.second"
+					:show-days="false"
+				></u-count-down>
+			</view>
+			<div class="float_right more-btn" @click="goPage('/pagesT/seckill/Seckill')">
+				查看全部
+				<text class="ibonfont ibonjinru"></text>
+			</div>
+		</div>
+		<div class="goods-view-out">
+			<scroll-view class="goods-view" :scroll-x="modelData.type === 2" :style="{ whiteSpace: modelData.type === 2 ? 'nowrap' : 'normal' }">
+				<div
+					class="goods-li"
+					:style="{ width: 100 / modelData.colNum + '%', marginBottom: modelData.type === 2 ? '0' : '24rpx' }"
+					v-for="(item, index) in goodsList.activityGoods"
+					:key="index"
+				>
+					<div class="goods-in" @click="goPage(`/pagesT/product/product?id=${item.goodsId}&skuId=${item.skuId}`)">
+						<div class="goods-img-box">
+							<image class="goods-img" :class="'goods-img-' + modelData.colNum" :src="item.images[0]" mode="aspectFill"></image>
+						</div>
+						<div class="goods-info-box">
+							<div class="goods-name ellipsis">{{ item.goodsName }}</div>
+							<div class="goods-sku ellipsis">
+								{{ item.unitName }};
+								<text v-for="(sku, skuI) in item.specGroup" :key="skuI">{{ sku.specValueName }};</text>
+							</div>
+							<div class="goods-price clearfix">
+								<div class="float_left" v-if="!showGoodsPrice">¥{{ item.originPrice }}</div>
+								<div class="float_right">
+									<span class="rem-ic">¥</span>
+									<span class="price-text">{{ item.salePrice }}</span>
+									<div class="time-tag"></div>
+									<span class="time-text">抢</span>
+								</div>
+								<!-- <div class="float_right add-Car-div" @click.stop="addCart(item.goodsId, item.skuId)">
+									<text v-if="modelData.btnStyle === 2" class="ibonfont ibongouwuche1 primary-color"></text>
+									<text v-else class="ibonfont ibonxinzeng1 primary-color"></text>
+								</div> -->
+							</div>
+						</div>
+					</div>
+				</div>
+			</scroll-view>
+		</div>
+		<!-- 加入购物车动画 cartx 和 carty 是购物车位置在屏幕位置的比例 例如左上角x0.1 y0.1 右下角 x0.9 y0.9-->
+		<AddCardModel :selAddress="selAddressD" :skuId="goods_sku_id" @close="is_add_show = false" @change="cardModelPopChange" :isShow="is_add_show" :goodsId="goods_id" />
+	</div>
+</template>
+
+<script>
+import AddCardModel from '@/components/AddCardModel';
+export default {
+	name: 'LimitedSeckill',
+	components: {
+		AddCardModel
+	},
+	props: {
+		showGoodsPrice: {
+			type: [Number, String],
+			default: ''
+		},
+		modelData: {
+			type: Object,
+			default: () => {
+				return {};
+			}
+		},
+
+		goodsList: {
+			type: [Array, Object],
+			default: () => {
+				return {};
+			}
+		},
+		cartx: {
+			type: [Number, String],
+			default: '0.08'
+		},
+		selAddress: {
+			type: Object,
+			default: () => {
+				return {};
+			}
+		}
+	},
+	watch: {
+		selAddress(val) {
+			this.selAddressD = val;
+		}
+	},
+	data() {
+		return {
+			goods_id: 0,
+			goods_sku_id: 0,
+			is_add_show: false,
+			phaseTime: {
+				day:0,
+				second:''
+			},
+			selAddressD: {}
+		};
+	},
+	created() {
+		let nowData = parseInt(new Date().getTime() / 1000);
+		let totalSecond = this.goodsList.endTime - nowData;
+		if (totalSecond > 0) {
+			this.phaseTime = {
+				second: totalSecond % 86400,
+				day: totalSecond <= 0 ? 0 : parseInt(totalSecond / 86400)
+			};
+		}
+	},
+	
+	methods: {
+		cardModelPopChange(obj) {
+			if (!obj.show) {
+				this.is_add_show = false;
+			}
+		},
+		// 加入购物车
+		addCart(id, skuId) {
+			this.goods_id = id;
+			this.goods_sku_id = skuId;
+			this.is_add_show = true;
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.LimitedSeckill {
+	margin: 20upx 0;
+	.top-div {
+		height: 90rpx;
+		line-height: 90rpx;
+		padding: 0 30rpx;
+		.icon-xsms {
+			font-weight: 700;
+			font-size: 32upx;
+			.ibonshijian {
+				font-size: 28rpx;
+				margin-right: 6rpx;
+				color: #fa6400;
+			}
+			.xs-text {
+				color: #fa6400;
+			}
+		}
+		.count-down {
+			font-family: DIN-Medium;
+			margin-left: 10rpx;
+			.day-num {
+				height: 40rpx;
+				padding: 0 4rpx;
+				display: inline-block;
+				background-color: #000000;
+				color: #ffffff;
+				border-radius: 6rpx;
+				text-align: center;
+				line-height: 40rpx;
+				font-size: 28rpx;
+			}
+			.day-text {
+				display: inline-block;
+				line-height: 40rpx;
+				color: #000000;
+				font-size: 24rpx;
+				margin: 0 8rpx;
+			}
+		}
+	}
+}
+
+.more-btn {
+	font-size: 28upx;
+	line-height: 80upx;
+	color: #9d9d9d;
+	padding-right: 20upx;
+}
+
+.more-btn .ibonjinru {
+	font-size: 23upx;
+	vertical-align: middle;
+}
+
+/*  商品*/
+.goods-view-out {
+	padding:0 10rpx 20upx;
+	width: 706upx;
+	margin: 0 auto;
+	background-color: #ffffff;
+	border-radius: 12upx;
+	.goods-view {
+		display: -webkit-flex;
+		display: flex;
+		width: 100%;
+		flex-wrap: wrap;
+
+		.goods-li {
+			display: inline-block;
+			margin-bottom: 24upx;
+			// box-shadow: 2rpx 4rpx 6rpx 0rpx #f5f5f5;
+			.goods-in {
+				padding: 0 10rpx;
+				background-color: #fff;
+				// margin-right: 30upx;
+			}
+		}
+	}
+}
+
+.goods-img {
+	width: 100%;
+	display: block;
+	margin: 0 auto;
+	background-color: #F5F5F5;
+	border-radius: 8upx;
+}
+.goods-img-3 {
+	width: 214upx;
+	height: 214upx;
+	background-color: #F5F5F5;
+}
+.goods-img-2 {
+	height: 260upx;
+	width: 260upx;
+	background-color: #F5F5F5;
+}
+.goods-info-box {
+	padding-top: 10upx;
+}
+
+.goods-name {
+	font-size: 28upx;
+	color: #000000;
+	display: block;
+	width: 100%;
+	height: 72rpx;
+	line-height: 36rpx;
+	white-space:normal;
+}
+.goods-sku {
+	font-size: 24rpx;
+	margin: 6rpx 0;
+	color: #9d9d9d;
+}
+
+.goods-price {
+	margin: 0 10rpx;
+	.float_left {
+		font-size: 24rpx;
+		font-family: DIN-Medium;
+		font-weight: 400;
+		color: #9d9d9d;
+		line-height: 32rpx;
+		text-decoration: line-through;
+	}
+	.float_right {
+		width: 132rpx;
+		padding-left: 10rpx;
+		height: 38rpx;
+		background: linear-gradient(90deg, #fe923e 0%, #ff3724 100%);
+		border-radius: 20rpx 8rpx 8rpx 20rpx;
+		font-size: 20rpx;
+		font-family: DIN-Medium;
+		font-weight: 600;
+		color: #ffffff;
+		line-height: 38rpx;
+		position: relative;
+		overflow: hidden;
+		.rem-ic {
+			font-weight: 400;
+		}
+		.time-tag {
+			position: absolute;
+			right: -16rpx;
+			transform: rotate(-60deg);
+			top: 0;
+			text-align: center;
+			color: #ffffff;
+			width: 48rpx;
+			height: 48rpx;
+			background: linear-gradient(90deg, #fe923e 0%, #ff3724 100%);
+			border-radius: 8rpx;
+			border: 1px solid rgba(255, 255, 255, 0.8);
+		}
+		.time-text {
+			position: absolute;
+			right: 4rpx;
+			top: 2rpx;
+			font-size: 20rpx;
+		}
+	}
+}
+.rmb-icon {
+	font-size: 20upx;
+	// font-weight: 300;
+}
+
+.y-price {
+	color: #999;
+	padding-top: 6upx;
+	font-size: 22upx;
+	text-decoration: line-through;
+}
+
+.show-scroll {
+	height: 368upx;
+	overflow: hidden;
+}
+// 加入购物车按钮
+.add-Car-div {
+	.ibonfont {
+		color: #fd463e;
+		font-size: 36upx;
+		display: inline-block;
+	}
+}
+</style>

+ 32 - 0
components/PageDesign/components/Line.vue

@@ -0,0 +1,32 @@
+<template>
+  <div
+    class="Line-view"
+    :style="{backgroundColor:modelData.bgColor,paddingTop: modelData.padding*2+'rpx',paddingBottom: modelData.padding*2+'rpx'}"
+  >
+    <div
+      class="line-in"
+      :style="{borderTop:modelData.borderWidth*2+'rpx '+modelData.borderStyle+' '+modelData.borderColor}"
+    ></div>
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'LineF',
+    props: {
+      modelData: {
+        type: Object,
+        default: () => {
+          return {}
+        }
+      }
+    }
+  }
+</script>
+
+<style scoped>
+
+  .line-in{
+   border-top:1px solid #000000;
+  }
+</style>

+ 216 - 0
components/PageDesign/components/MagicImg.vue

@@ -0,0 +1,216 @@
+<template>
+	<div class="MagicImg">
+		<div class="Magic-style" v-if="modelData.imgStyle !== 5">
+			<view
+				class="image-li"
+				v-for="(item, index) in modelData.imagesList"
+				:key="index"
+				:style="{
+					width: 100 / modelData.imgStyle + '%',
+					paddingBottom: modelData.paddingTB + 'px',
+					paddingTop: modelData.paddingTB + 'px',
+					paddingLeft: (index === 0 ? 0 : modelData.paddingLR / 2) + 'px',
+					paddingRight: (index === modelData.imagesList.length - 1 ? 0 : modelData.paddingLR) / 2 + 'px'
+				}"
+				@click="navTo(item.url, item.switchTab)"
+			>
+				<image
+					:src="item.image.url"
+					class="banner-img"
+					:class="[modelData.imagesList.length === 1 ? 'one-img' : '']"
+					:mode="modelData.imagesList.length === 1 ? 'widthFix' : 'aspectFill'"
+				></image>
+			</view>
+		</div>
+		<div v-if="modelData.imgStyle === 5">
+			<!--    单张图-->
+			<image
+				v-if="modelData.imagesList.length === 1"
+				:src="modelData.imagesList[0].image.url"
+				class="banner-img one-img"
+				mode="widthFix"
+				@click="navTo(modelData.imagesList[0].url, modelData.imagesList[0].switchTab)"
+			></image>
+			<!--    两张-->
+			<div
+				v-if="modelData.imagesList.length === 2"
+				class="Magic-view"
+				:style="{ paddingBottom: modelData.paddingTB * 2 + 'rpx', paddingTop: modelData.paddingTB * 2 + 'rpx' }"
+			>
+				<image
+					v-for="(item, index) in modelData.imagesList"
+					:key="index"
+					:src="item.image.url"
+					class="two-img"
+					mode="aspectFill"
+					@click="navTo(item.url, item.switchTab)"
+					:style="{ paddingRight: (index === 0 ? modelData.paddingLR : 0) + 'rpx', paddingLeft: (index === 1 ? modelData.paddingLR : 0) + 'rpx' }"
+				></image>
+			</div>
+			<!-- 三张 -->
+			<div
+				v-if="modelData.imagesList.length === 3"
+				class="Magic-view"
+				:style="{ paddingBottom: modelData.paddingTB * 2 + 'rpx', paddingTop: modelData.paddingTB * 2 + 'rpx' }"
+			>
+				<image
+					:src="modelData.imagesList[0].image.url"
+					class="tree-big-img"
+					mode="aspectFill"
+					:style="{ paddingRight: modelData.paddingLR * 2 + 'rpx' }"
+					@click="navTo(modelData.imagesList[0].url, modelData.imagesList[0].switchTab)"
+				></image>
+				<div class="tree-small-view">
+					<image
+						:src="modelData.imagesList[1].image.url"
+						class="tree-small-img"
+						mode="aspectFill"
+						:style="{ paddingBottom: modelData.paddingTB + 'rpx' }"
+						@click="navTo(modelData.imagesList[1].url, modelData.imagesList[1].switchTab)"
+					></image>
+					<image
+						:src="modelData.imagesList[2].image.url"
+						class="tree-small-img"
+						mode="aspectFill"
+						:style="{ paddingTop: modelData.paddingTB + 'rpx' }"
+						@click="navTo(modelData.imagesList[2].url, modelData.imagesList[2].switchTab)"
+					></image>
+				</div>
+			</div>
+			<!-- 四张 -->
+			<div
+				v-if="modelData.imagesList.length === 4"
+				class="Magic-view"
+				:style="{ paddingBottom: modelData.paddingTB * 2 + 'rpx', paddingTop: modelData.paddingTB * 2 + 'rpx' }"
+			>
+				<image
+					:src="modelData.imagesList[0].image.url"
+					class="tree-big-img"
+					mode="aspectFill"
+					:style="{ paddingRight: modelData.paddingLR * 2 + 'rpx' }"
+					@click="navTo(modelData.imagesList[0].url, modelData.imagesList[0].switchTab)"
+				></image>
+				<div class="tree-small-view">
+					<image
+						:src="modelData.imagesList[1].image.url"
+						class="tree-small-img"
+						mode="aspectFill"
+						:style="{ paddingBottom: modelData.paddingTB + 'rpx', height: 120 - modelData.paddingTB / 2 + 'rpx' }"
+						@click="navTo(modelData.imagesList[1].url, modelData.imagesList[1].switchTab)"
+					></image>
+					<div class="four-small-view" :style="{ paddingTop: modelData.paddingTB + 'rpx' }">
+						<image
+							:src="modelData.imagesList[2].image.url"
+							class="four-small-img"
+							mode="aspectFill"
+							:style="{ paddingRight: modelData.paddingLR + 'rpx', height: 120 - modelData.paddingTB / 2 + 'rpx' }"
+							@click="navTo(modelData.imagesList[2].url, modelData.imagesList[2].switchTab)"
+						></image>
+						<image
+							:src="modelData.imagesList[3].image.url"
+							class="four-small-img"
+							mode="aspectFill"
+							:style="{ paddingLeft: modelData.paddingLR + 'rpx', height: 120 - modelData.paddingTB / 2 + 'rpx' }"
+							@click="navTo(modelData.imagesList[3].url, modelData.imagesList[3].switchTab)"
+						></image>
+					</div>
+				</div>
+			</div>
+		</div>
+		<NoLoginTip @cancel="cancelTip" :show="loginTip" v-if="loginTip" />
+	</div>
+</template>
+
+<script>
+import NoLoginTip from '../../NoLoginTip.vue';
+export default {
+	name: 'MagicImg',
+	components: {
+		NoLoginTip
+	},
+	props: {
+		modelData: {
+			type: Object,
+			default: () => {
+				return {};
+			}
+		}
+	},
+	data() {
+		return {
+			loginTip: false
+		};
+	},
+	methods: {
+		cancelTip() {
+			this.loginTip = false;
+		},
+		navTo(url, switchTab) {
+			if (!this.$common.isLogin()) {
+				this.loginTip = true;
+			} else {
+				this.goPage(url, switchTab);
+			}
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.MagicImg {
+	margin: 0 auto;
+	width: 720upx;
+}
+
+.two-img {
+	width: 50%;
+	height: 240upx;
+}
+.tree-big-img {
+	width: 50%;
+	height: 240upx;
+	display: block;
+}
+.tree-small-view {
+	width: 50%;
+}
+.tree-small-img {
+	width: 100%;
+	height: 120upx;
+	display: block;
+}
+.four-small-view {
+	width: 100%;
+	display: -webkit-flex;
+	display: flex;
+	justify-content: space-between;
+	flex-wrap: nowrap;
+}
+.four-small-img {
+	width: 50%;
+	height: 120upx;
+}
+.Magic-view {
+	display: -webkit-flex;
+	display: flex;
+	width: 100%;
+	justify-content: space-between;
+	flex-wrap: nowrap;
+}
+.Magic-style {
+	display: -webkit-flex;
+	display: flex;
+	width: 100%;
+	justify-content: space-between;
+	flex-wrap: nowrap;
+}
+.banner-img {
+	width: 100%;
+	height: 172upx;
+	display: block;
+	border-radius: 10rpx;
+}
+.one-img {
+	height: auto;
+}
+</style>

+ 97 - 0
components/PageDesign/components/NavBar.vue

@@ -0,0 +1,97 @@
+<template>
+	<div class="NavBar clearfix" :style="{ backgroundColor: modelData.bgColor }">
+		<div class="nav-li" v-for="(item, index) in modelData.navList" :key="index"
+			:style="{ width: 100 / modelData.num + '%' }" @click="navTo(item.url, item.switchTab,item)">
+			<image class="nav-icon" :src="item.image.url" mode="aspectFit"></image>
+			<div :style="{ color: modelData.color }" class="nav-text">{{ item.text || '文字标题' }}</div>
+		</div>
+		<NoLoginTip @cancel="cancelTip" :show="loginTip" v-if="loginTip" />
+	</div>
+</template>
+
+<script>
+	import NoLoginTip from '../../NoLoginTip.vue';
+	export default {
+		name: 'NavBar',
+		components: {
+			NoLoginTip
+		},
+		props: {
+			modelData: {
+				type: Object,
+				default: () => {
+					return {};
+				}
+			}
+		},
+		data() {
+			return {
+				loginTip: false
+			};
+		},
+		methods: {
+			cancelTip() {
+				this.loginTip = false;
+			},
+			navTo(url, switchTab, item) {
+				if (!this.$common.isLogin()) {
+					this.loginTip = true;
+				} else {
+					if (item.text == '企业文化') {
+						this.goPage('/pagesT/unit/artdetail?type=2', switchTab);
+					} else if (item.text == '高管') {
+						this.goPage('/pagesT/unit/official?type=4', switchTab);
+					} else if (item.text == '员工') {
+						this.goPage('/pagesT/unit/official?type=5', switchTab);
+					} else if (item.text == '项目') {
+						this.goPage('/pagesT/unit/item', switchTab);
+					} else if (item.text == '会员') {
+						this.goPage('/pagesT/user/VipList',switchTab)
+					} else if (item.text == '股权') {
+						this.goPage('/pagesT/user/guquan', switchTab);
+					} else if (item.text == '共享股东') {
+						this.goPage('/pagesT/unit/official?type=3', switchTab);
+					} else if (item.text == '招商') {
+						this.goPage('/pagesT/unit/officialT?state=0', switchTab);
+					} else if (item.text == '招聘') {
+						this.goPage('/pagesT/unit/artdetail?type=1', switchTab);
+					}else if (item.text == '邀请好友') {
+						this.goPage('/pagesT/Distribution/Poster', switchTab);
+					}else {
+						this.goPage(url, switchTab);
+					}
+				}
+			}
+		}
+	};
+</script>
+
+<style scoped>
+	.NavBar {
+		padding: 32rpx 0 8rpx;
+		display: -webkit-flex;
+		display: flex;
+		width: 100%;
+		justify-content: space-between;
+		flex-wrap: wrap;
+	}
+
+	.nav-icon {
+		width: 88upx;
+		height: 88upx;
+		border-radius: 20rpx;
+		margin: 0 auto;
+		display: block;
+	}
+
+	.nav-text {
+		padding-top: 12upx;
+	}
+
+	.nav-li {
+		font-size: 24upx;
+		text-align: center;
+		font-weight: 400rpx;
+		margin-bottom: 24upx;
+	}
+</style>

+ 107 - 0
components/PageDesign/components/NavigationBar.vue

@@ -0,0 +1,107 @@
+<template>
+	<div>
+		<div class="page-head" :class="[modelData.style === 1 ? 'style-one' : modelData.style === 2 ? 'style-two' : 'style-three']" :style="style">
+			<div v-if="modelData.style === 2" :style="{ background: modelData.topBgColor }" class="circular"></div>
+		</div>
+		<u-navbar :background="{ background: background }" :title-color="modelData.textColor" :border-bottom="false" :is-back="false" :title="modelData.name">
+			<div class="address-div ellipsis" @click="openLocation">
+				<u-icon name="map-fill" color="#9fa8bd" size="30"></u-icon>
+				<span style="margin-left: 10rpx;">{{ location.districtName || '点击定位' }}</span>
+			</div>
+		</u-navbar>
+	</div>
+</template>
+
+<script>
+export default {
+	name: 'NavigationBar',
+	props: {
+		modelData: {
+			type: Object,
+			default: () => {
+				return {};
+			}
+		},
+		scrollTop: {
+			type: Number,
+			default: 0
+		}
+	},
+	computed: {
+		style() {
+			if (this.modelData.style === 3) {
+				return `background-color:${this.modelData.topBgColor};color:${this.modelData.textColor}`;
+			} else if (this.modelData.style === 1) {
+				return `background:linear-gradient(360deg,rgba(255, 255, 255, 0) 0%,${this.modelData.topBgColor} 100%,${this.modelData.topBgColor} 100%);color:${
+					this.modelData.textColor
+				}`;
+			} else {
+				return `color:${this.modelData.textColor}`;
+			}
+		},
+		location() {
+			return this.$store.state.locationObj;
+		},
+		background() {
+			if (this.modelData.style === 1) {
+				return this.$u.colorToRgba(this.$_utils.hexify(this.modelData.topBgColor), this.scrollTop/100)
+			} else {
+				return this.modelData.topBgColor;
+			}
+		}
+	},
+	methods: {
+		openLocation() {
+			this.$emit('openLocation');
+		}
+	}
+};
+</script>
+
+<style scoped lang="scss">
+.page-head {
+	// height: 226px;
+	height: 100vh;
+	width: 750rpx;
+	position: fixed;
+	top: 0;
+	left: 0;
+	width: 100%;
+}
+.style-two {
+	overflow: hidden;
+	.circular {
+		width: 140%;
+		height: 200px;
+		position: absolute;
+		left: -20%;
+		top: 0;
+		border-radius: 0 0 50% 50%;
+		background: #ec1c24;
+	}
+}
+.address-div {
+	position: absolute;
+	top: 50%;
+	transform: translateY(-50%);
+	padding: 0 10rpx;
+	left: 24rpx;
+	width: 180rpx;
+	height: 66rpx;
+	background: #ffffff;
+	border-radius: 66rpx;
+	line-height: 66rpx;
+	text-align: center;
+	font-size: 26rpx;
+	font-weight: 500;
+	border: 1px solid #eeeeee;
+	color: #111111;
+	-webkit-line-clamp: 1;
+}
+.style-one {
+	background: linear-gradient(360deg, rgba(255, 255, 255, 0) 0%, #ec1c24 100%);
+}
+.style-three {
+	background: #ec1c24;
+}
+</style>

+ 152 - 0
components/PageDesign/components/Notice.vue

@@ -0,0 +1,152 @@
+<template>
+	<view class="Notice-view blanck-pop clearfix" :style="{ backgroundColor: modelData.bgColor, margin: modelData.padding * 2 + 'rpx auto' }" v-if="noticeData.content">
+		<view @click="noticePop = true">
+			<view class="notice-icon float_left"><image src="https://onlineimg.qianniao.vip/noticeicon.png" mode="aspectFill"></image></view>
+			<view class="notice-main float_left">
+				<u-notice-bar
+					mode="horizontal"
+					padding="18rpx 0"
+					:volume-icon="false"
+					:font-size="28"
+					type="none"
+					:speed="50"
+					:color="modelData.textColor"
+					:border-radius="12"
+					:list="[noticeData.content]"
+				></u-notice-bar>
+			</view>
+		</view>
+		<u-popup
+			v-model="noticePop"
+			border-radius="18"
+			mode="center"
+			height="905"
+			:custom-style="{
+				background: 'rgba(0,0,0,0)'
+			}"
+		>
+			<view class="mag-view">
+				<view class="mag-top primary-bg"><image class="notice-i" src="https://onlineimg.qianniao.vip/notice-i.png" mode=""></image></view>
+				<view class="msg-cont">
+					<image class="msg-yun" src="https://onlineimg.qianniao.vip/notice-bg.png" mode=""></image>
+					<view class="mag-tit">{{ noticeData.title }}</view>
+					<scroll-view class="mag-main" scroll-y>{{ noticeData.content }}</scroll-view>
+				</view>
+				<view class="confirm-btn primary-btn-pain" @click="noticePop = false">我知道了</view>
+			</view>
+		</u-popup>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'Notice',
+	props: {
+		modelData: {
+			type: Object,
+			default: () => {
+				return {};
+			}
+		},
+		noticeData: {
+			type: Object,
+			default: () => {
+				return {};
+			}
+		}
+	},
+	data() {
+		return {
+			noticePop: false
+		};
+	},
+	methods: {
+		openPop() {
+			this.noticePop = true;
+		},
+		closePop() {
+			this.noticePop = false;
+		}
+	}
+};
+</script>
+<style scoped lang="scss">
+.Notice-view {
+	width: 710upx;
+	padding-right: 24upx;
+	margin: 10upx auto;
+	background-color: #ffffff;
+	border-radius: 64upx;
+	.notice-icon {
+		width: 72upx;
+		text-align: center;
+		line-height: 64upx;
+		height: 64upx;
+		image {
+			width: 30rpx;
+			height: 32rpx;
+			vertical-align: middle;
+			transform: translate(10rpx, 4rpx);
+		}
+	}
+	.notice-main {
+		width: 608upx;
+	}
+}
+
+.mag-view {
+	text-align: center;
+	transform: translateY(100rpx);
+	background-color: #ffffff;
+	width: 612rpx;
+	border-radius: 18rpx;
+	padding-bottom: 46rpx;
+	.mag-top {
+		height: 242rpx;
+		border-radius: 18rpx;
+		background-color: $uni-color-primary;
+		width: 100%;
+		position: relative;
+		.notice-i {
+			width: 422rpx;
+			height: 312rpx;
+			position: absolute;
+			top: -100rpx;
+			left: 140rpx;
+		}
+	}
+	.msg-cont {
+		padding: 0 50rpx;
+		padding-top: 56rpx;
+		position: relative;
+		.msg-yun {
+			position: absolute;
+			width: 622rpx;
+			height: 215rpx;
+			left: 0;
+			top: -116rpx;
+			z-index: 1;
+		}
+		.mag-main {
+			height: 200rpx;
+		}
+		.mag-tit {
+			position: relative;
+			z-index: 9;
+			font-size: 38upx;
+			font-weight: bold;
+			padding-bottom: 30rpx;
+		}
+	}
+	.confirm-btn {
+		line-height: 90rpx;
+		height: 90rpx;
+		font-size: 34rpx;
+		width: 506rpx;
+		margin: 30rpx auto 0;
+		border: 1px solid $uni-color-primary;
+		color: $uni-color-primary;
+		border-radius: 12rpx;
+	}
+}
+</style>

+ 82 - 0
components/PageDesign/components/Search.vue

@@ -0,0 +1,82 @@
+<template>
+	<view class="search-box" @click="goPage('/pagesT/search/index')">
+		<view class="search-in" :style="{ textAlign: modelData.textStyle, borderRadius: modelData.boxStyle === 3 ? '80rpx' : modelData.boxStyle === 2 ? '10rpx' : '0' }">
+			<text class="ibonfont ibonsousuo1 primary-color"></text>
+			<text>{{ modelData.tipText }}</text>
+		</view>
+	</view>
+</template>
+
+<script>
+
+export default {
+	props: {
+		fixed: {
+			type: Boolean,
+			default: false
+		},
+		modelData: {
+			type: Object,
+			default: () => {
+				return {
+					tipText: '请输入关键词',
+					boxStyle: '1',
+					textStyle: 'center'
+				};
+			}
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.search-box {
+	padding: 20upx 0;
+	.search-in {
+		background: #fff;
+		width: 710upx;
+		margin: 0 auto;
+		height: 70upx;
+		line-height: 70upx;
+		font-size: 24upx;
+		color: #999;
+		font-weight: 300;
+		padding: 0 20upx;
+		border-radius: 10upx;
+		.ibonfont {
+			vertical-align: middle;
+			margin-right: 10upx;
+		}
+	}
+}
+
+.nav-center {
+	padding: 16upx 0;
+	color: #9c9c9c;
+	text-align: left;
+	.like-input {
+		width: 540upx;
+		/* #ifdef APP-PLUS||H5 */
+		margin: 0 auto;
+		/* #endif */
+		/* #ifdef MP */
+		margin-left: 10upx;
+		/* #endif */
+		background: #fff;
+		height: 56upx;
+		line-height: 56upx;
+		border-radius: 56upx;
+		font-size: 20upx;
+		.icon-sousuo {
+			font-size: 24upx;
+			padding-left: 23upx;
+			padding-right: 13upx;
+			vertical-align: middle;
+		}
+		span {
+			font-weight: 300;
+			vertical-align: middle;
+		}
+	}
+}
+</style>

+ 72 - 0
components/PageDesign/components/shopInfo.vue

@@ -0,0 +1,72 @@
+<template>
+	<div
+		class="clearfix shop-info"
+		:style="{
+			color: modelData.color,
+			backgroundColor: modelData.bgColor
+		}"
+	>
+		<div class="float_left"><image :src="modelData.image.url" mode="aspectFill" class="shop-logo"></image></div>
+		<div class="float_left">
+			<p class="shop-name">{{storeData.name}}</p>
+			<!-- <p class="shop-num">9999人关注</p> -->
+		</div>
+		<!--div class="float_right college-btn">
+      <text class="ibonfont ibonshoucang3"></text>
+      <span style="margin-left: 3px">关注</span>
+    </div-->
+	</div>
+</template>
+
+<script>
+export default {
+	name: 'ShopInfo',
+	props: {
+		modelData: {
+			type: Object,
+			default: () => {
+				return {};
+			}
+		},
+		storeData: {
+			type: Object,
+			default: () => {
+				return {};
+			}
+		}
+	},
+	data() {
+		return {};
+	}
+};
+</script>
+
+<style scoped lang="scss">
+.shop-info {
+	padding: 20rpx 24rpx;
+	.shop-logo {
+		width: 88rpx;
+		height: 88rpx;
+		border-radius: 8rpx;
+		display: block;
+		margin-right: 20rpx;
+	}
+	.shop-name{
+		line-height: 88rpx;
+		font-weight: bold;
+	}
+	.shop-num {
+		font-size: 24rpx;
+		padding-top: 10rpx;
+	}
+	.college-btn {
+		font-size: 24rpx;
+		padding: 0 20rpx;
+		line-height: 60rpx;
+		background-color: #ff4400;
+		color: #ffffff;
+		border-radius: 8rpx;
+		transform: translateY(14rpx);
+	}
+}
+</style>

+ 449 - 0
components/SelSkuPop.vue

@@ -0,0 +1,449 @@
+<template>
+	<view class="blanck-pop">
+		<u-popup
+			:custom-style="{
+				background: 'rgba(0,0,0,0)'
+			}"
+			:value="isShow"
+			:mask-close-able="false"
+			mode="bottom"
+		>
+			<view class="detail-box">
+				<view class="detail-view">
+					<view class="close-icon"><u-icon @click="closeaddcartPop" name="close" color="#EAEAEA" size="32"></u-icon></view>
+					<view class="goods-view clearfix">
+						<view class="float_left"><image class="goods-img" :src="goods_detail.images[0]" mode="aspectFill"></image></view>
+						<view class="float_right goods-info">
+							<view class="goods-name ellipsis">{{ goods_detail.title || '' }}</view>
+							<view class="goods-desc">
+								<block v-if="baseSet.stockDisplay === 5">
+									<!-- 总库存大于0 且 支持负库存销售 显示【有货】 -->
+									<text class="goods-desc-text">
+										总库存:{{ Math.floor(goods_detail.inventoryTotal) > 0 || goods_detail.isDistribution === 5 ? '有货' : '库存不足' }}
+									</text>
+								</block>
+								<block v-if="baseSet.stockDisplay === 6">
+									<!-- 负库存销售即使没有库存也 显示【有货】 -->
+									<text class="goods-desc-text" v-if="goods_detail.isDistribution === 5">总库存:{{ Math.floor(goods_detail.inventoryTotal) || '有货' }}</text>
+									<text class="goods-desc-text" v-else>总库存:{{ Math.floor(goods_detail.inventoryTotal) || '库存不足' }}</text>
+								</block>
+								<text class="goods-desc-text">已售:{{ goods_detail.salesNum || 0 }}</text>
+							</view>
+						</view>
+					</view>
+					<scroll-view scroll-y="true" style="max-height: 700rpx;">
+						<view class="sku-ul">
+							<view class="sku-li" v-for="(item, index) in specMultiple" :key="index">
+								<view class="sku-name ellipsis">
+									{{ item.unitName }}
+									<text style="margin-left: 8rpx;" v-for="(sku, skuI) in item.specGroup" :key="skuI">{{ sku.specValueName }}</text>
+								</view>
+								<view class="sku-desc">
+									<!-- 库存大于0 且 支持负库存销售 显示【有货】 -->
+									<text class="sku-desc-text" v-if="baseSet.stockDisplay === 5">
+										库存:{{ Math.floor(item.inventory) > 0 || goods_detail.isDistribution === 5 ? '有货' : '库存不足' }}
+									</text>
+									<text class="sku-desc-text" v-if="baseSet.stockDisplay === 6">
+										<!-- 负库存销售即使没有库存也 显示【有货】 -->
+										<block v-if="goods_detail.isDistribution === 5 && Math.floor(item.inventory) <= 0">库存:有货</block>
+										<block v-else>库存:{{ Math.floor(item.inventory) }}{{ item.unitName }}</block>
+									</text>
+									<text class="sku-desc-text" v-if="item.setNum > 1">{{ item.setNum }}{{ item.unitName }}起购</text>
+									<text class="sku-desc-text" v-if="item.isMaster === 4">
+										1{{ item.unitName }}{{ goodsDetail.isEq === 5 ? '≈' : '=' }}{{ Number(item.conversion) }}{{ goods_detail.unitName }}
+									</text>
+								</view>
+								<view class="sku-price clearfix ">
+									<!-- 阶梯价 -->
+									<block v-if="!showGoodsPrice">
+										<view class="float_left ladder-ul" v-if="item.enabledLadder === 1">
+											<view class="ladder-li" v-for="(ladder, ladderI) in item.ladderPrice" :key="ladderI">
+												<view class="price-text clearfix primary-color">
+													<view class="float_left rmb-icon">¥</view>
+													<rich-text class="float_left" :nodes="$_utils.splitPrice(ladder.price)"></rich-text>
+												</view>
+												<view class="num-region" v-if="ladderI + 1 === item.ladderPrice.length">≥{{ ladder.from }}{{ item.unitName }}</view>
+												<view class="num-region" v-else>{{ ladder.from }}~{{ ladder.to }}{{ item.unitName }}</view>
+											</view>
+										</view>
+										<!-- 非阶梯价 -->
+										<view v-else class="float_left clearfix primary-color price-text">
+											<view class="float_left rmb-icon">¥</view>
+											<rich-text class="float_left" :nodes="$_utils.splitPrice(item.salePrice)"></rich-text>
+										</view>
+									</block>
+									<block v-else>
+										<text class="showGoodsPrice primary-color">{{ showGoodsPrice }}</text>
+									</block>
+									<view class="vip-price float_left clearfix" v-if="item.memberPrice > 0">
+										<view class="price-text">¥{{ item.memberPrice }}</view>
+										<view class="price-bs">VIP</view>
+									</view>
+									<!-- 步进器 -->
+									<view class="num-edit-view float_right">
+										<view class="subr-view p-background-img " :class="[item.buy_num <= 0 ? 'disabled-color' : '']" @click="delNum(index)">
+											<u-icon size="28" name="minus"></u-icon>
+										</view>
+										<view class="buy-num-input-view">
+											<input type="number" @blur="buyNumInput($event, index)" class="buy-num-input" :value="item.buy_num" />
+										</view>
+										<!-- 数量大于库存或者当前商品不支持负库存销售 则当前加号按钮禁用-->
+										<view
+											class="plus-view p-background-img"
+											:class="[item.buy_num >= Math.floor(item.inventory) && goods_detail.isDistribution !== 5 ? 'disabled-color' : '']"
+											@click="plusNum(index)"
+										>
+											<u-icon size="28" name="plus"></u-icon>
+										</view>
+									</view>
+								</view>
+							</view>
+						</view>
+					</scroll-view>
+
+					<view class="sub-btn p-background-img">加入购物车</view>
+				</view>
+			</view>
+		</u-popup>
+
+		<NoLoginTip @cancel="cancelTip" :show="loginTip" v-if="loginTip" />
+	</view>
+</template>
+
+<script>
+import NoLoginTip from './NoLoginTip.vue';
+export default {
+	components: {
+		NoLoginTip
+	},
+	props: {
+		selAddress: {
+			type: Object,
+			default: () => {
+				return {};
+			}
+		},
+		isShow: {
+			type: Boolean,
+			default: false
+		},
+		goodsId: {
+			type: [Number, String],
+			default: 0
+		},
+		isList: {
+			type: Boolean,
+			default: true
+		},
+		skuId: {
+			type: [Number, String],
+			default: ''
+		}
+	},
+	computed: {
+		hasLogin() {
+			return this.$store.state.hasLogin;
+		},
+		baseSet() {
+			return this.$store.state.baseSet;
+		},
+		userStatus() {
+			return this.$store.state.userStatus;
+		},
+		showGoodsPrice() {
+			if (this.baseSet.goodsPrice === 5 && this.hasLogin) {
+				return '';
+			} else if (!this.hasLogin && this.baseSet.goodsPrice === 4) {
+				return '请登录';
+			} else if (this.userStatus.enableStatus === 4 && this.baseSet.goodsPrice === 4) {
+				return '已禁用';
+			} else if (this.userStatus.status !== 2 && this.baseSet.goodsPrice === 4) {
+				if (this.userStatus.status === 0) {
+					return '待审核';
+				} else if (this.userStatus.status === 1) {
+					return '审核中';
+				} else if (this.userStatus.status === 3) {
+					return '已驳回';
+				}
+			} else {
+				return '';
+			}
+		}
+	},
+	watch: {
+		goodsId(val) {
+			if (this.isShow) {
+				this.goods_detail = {};
+				this.specMultiple = [];
+				this.getGoodsDetail();
+			}
+		}
+	},
+	data() {
+		return {
+			eq_sku_kg: {},
+			isLogin: true, // 判断是否登录
+			loginTip: false,
+			goods_detail: {
+				images: [],
+				specGroup: [],
+				unitData: []
+			},
+			spec_id_group: [],
+			now_sku_data: {},
+			buy_num: 1,
+			now_sel_address: {},
+			address_data: {}, // 客户地址数据
+			not_dispatch_areas: {}, // 该商品不能配送区域
+			is_not_express: true, // 当前选择区域是否能够配送
+			activityId: '',
+			specMultiple: []
+		};
+	},
+	methods: {
+		// 请求商品品详情
+		async getGoodsDetail() {
+			this.$u.api.getGoodsDetail(this.goodsId).then(res => {
+				this.goods_detail = res.data;
+				this.specMultiple = res.data.specMultiple.map(item => {
+					return {
+						...item,
+						buy_num: 0
+					};
+				});
+			});
+		},
+		// 关闭加入购物车弹窗
+		closeaddcartPop() {
+			this.$emit('close', false);
+		},
+		// 减号按钮
+		delNum(index) {
+			let target = this.$u.deepClone(this.specMultiple);
+			if (target[index].buy_num > 0) {
+				// 当前数量为起订量的时候,点击减号按钮直接设置成0
+				if (target[index].setNum > 1 && target[index].buy_num === target[index].setNum) {
+					target[index].buy_num = 0;
+				} else {
+					target[index].buy_num = target[index].buy_num - 1;
+				}
+			}
+			this.specMultiple = target;
+		},
+		// 加号按钮
+		plusNum(index) {
+			let target = this.$u.deepClone(this.specMultiple);
+			// 数量小于库存或者当前商品支持负库存销售,则可以继续添加数量
+			if (target[index].buy_num < Math.floor(target[index].inventory) || this.goods_detail.isDistribution === 5) {
+				if (target[index].buy_num < 1) {
+					// 当前数量为0的时候,第一次加起订量
+					target[index].buy_num += target[index].setNum;
+				} else {
+					target[index].buy_num += 1;
+				}
+			}
+			this.specMultiple = target;
+		},
+		// 输入框失去焦点
+		buyNumInput(e, index) {
+			let target = this.$u.deepClone(this.specMultiple);
+			target[index].buy_num = e.detail.value - 0;
+			// 数量小于库存或者当前商品支持负库存销售,则可以继续添加数量
+			if (target[index].buy_num >= Math.floor(target[index].inventory) && this.goods_detail.isDistribution !== 5) {
+				this.$u.toast('库存不足,已为您修正');
+				this.$nextTick(() => {
+					target[index].buy_num = Math.floor(target[index].inventory);
+				});
+			}
+			this.specMultiple = target;
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.detail-box {
+	padding-top: 34rpx;
+	.detail-view {
+		padding: 0 32rpx 32rpx;
+		background-color: #ffffff;
+		position: relative;
+		.close-icon {
+			position: absolute;
+			right: 32rpx;
+			top: 30rpx;
+		}
+		.goods-view {
+			.goods-img {
+				display: block;
+				transform: translateY(-34rpx);
+				width: 176rpx;
+				height: 176rpx;
+				background: #f5f7f7;
+				border-radius: 8rpx;
+			}
+			.goods-info {
+				width: calc(100% - 188rpx);
+				padding-top: 24rpx;
+				padding-right: 58rpx;
+				.goods-name {
+					width: 100%;
+					color: #111111;
+					font-size: 28rpx;
+					font-weight: 500;
+					line-height: 40rpx;
+					margin-bottom: 8rpx;
+					-webkit-line-clamp: 1;
+					height: 40rpx;
+				}
+				.goods-desc {
+					color: #9d9d9d;
+					font-size: 20rpx;
+					.goods-desc-text{
+						margin-right: 8rpx;
+					}
+				}
+			}
+		}
+		.sub-btn {
+			width: 686rpx;
+			height: 80rpx;
+			background: linear-gradient(90deg, #fe923e 0%, #ff3724 100%);
+			border-radius: 40rpx;
+			line-height: 80rpx;
+			text-align: center;
+			margin: 56rpx auto 0;
+			color: #ffffff;
+			font-size: 32rpx;
+			font-weight: 500;
+		}
+		.sku-ul {
+			.sku-li {
+				padding: 24rpx 0;
+				border-bottom: 1px solid #eeeeee;
+				&:last-child {
+					border-bottom: 0 none;
+				}
+				.sku-name {
+					width: 100%;
+					color: #111111;
+					font-size: 28rpx;
+					font-weight: 500;
+					line-height: 40rpx;
+					margin-bottom: 8rpx;
+					-webkit-line-clamp: 1;
+					height: 40rpx;
+				}
+				.sku-desc {
+					color: #9d9d9d;
+					font-size: 20rpx;
+					.sku-desc-text {
+						margin-right: 8rpx;
+					}
+				}
+				.sku-price {
+					.ladder-ul {
+						display: flex;
+						width: 432rpx;
+						.ladder-li {
+							position: relative;
+							flex: 3;
+							.num-region {
+								font-size: 22rpx;
+								color: #9d9d9d;
+								font-weight: 500;
+								margin-top: 8rpx;
+							}
+						}
+					}
+					.price-text {
+						font-size: 32rpx;
+						font-family: DIN-Medium;
+						padding-top: 16rpx;
+						.rmb-icon {
+							font-size: 20rpx;
+							margin-top: 12rpx;
+						}
+					}
+					.vip-price {
+						margin-left: 20upx;
+						margin-top: 18upx;
+						line-height: 32rpx;
+						height: 32rpx;
+						border-radius: 4rpx;
+						overflow: hidden;
+						font-family: DINPro-Regular;
+
+						.price-text {
+							min-width: 80rpx;
+							text-align: center;
+							float: left;
+							vertical-align: middle;
+							font-size: 20rpx;
+							color: #ffdfa2;
+							background: linear-gradient(270deg, #1e5657 0%, #0d2b2c 100%);
+							padding: 0 8rpx;
+						}
+
+						.price-bs {
+							text-align: center;
+							float: left;
+							vertical-align: middle;
+							width: 32rpx;
+							background-color: #ffdfa2;
+							font-size: 16rpx;
+							color: #2c7564;
+							font-family: DIN-Medium;
+						}
+					}
+					.num-edit-view {
+						text-align: center;
+						display: inline-flex;
+						align-items: center;
+
+						.buy-num-input-view {
+							display: flex;
+							position: relative;
+							text-align: center;
+							padding: 0;
+							justify-content: center;
+							align-items: center;
+							margin: 0 16rpx;
+							flex-direction: row;
+
+							.buy-num-input {
+								width: 104upx;
+								text-align: center;
+								font-family: DIN-Medium;
+								line-height: 48upx;
+								height: 48upx;
+								font-size: 26upx;
+								color: #111111;
+								background: rgba(202, 202, 202, 0.39);
+								border-radius: 6rpx;
+							}
+						}
+
+						.subr-view,
+						.plus-view {
+							justify-content: center;
+							align-items: center;
+							flex-direction: row;
+							display: flex;
+							margin-top: 0upx;
+							width: 48rpx;
+							height: 48rpx;
+							line-height: 48rpx;
+							color: #ffffff;
+							border-radius: 100%;
+						}
+						.disabled-color {
+							background-image: linear-gradient(90deg, rgba(202, 202, 202, 0.39) 0%, rgba(202, 202, 202, 0.39) 100%) !important;
+						}
+					}
+				}
+			}
+		}
+	}
+}
+</style>

+ 60 - 0
components/Tabbar/index.vue

@@ -0,0 +1,60 @@
+<template>
+	<u-tabbar :value="value" :list="tabbar_list" :active-color="activeColor" :border-top="false"></u-tabbar>
+</template>
+
+<script>
+export default {
+	model: {
+		props: 'value'
+	},
+	props: {
+		value: {
+			type: Number,
+			default: 0
+		}
+	},
+	computed: {
+		tabbar_list() {
+			return [
+				{
+					iconPath: this.$store.state.baseurl + '/img/user/' + 'home.png',
+					// selectedIconPath: 'https://onlineimg.qianniao.vip/tar-home-' + this.theme + '.png',
+					selectedIconPath: this.$store.state.baseurl + '/img/user/' + 'home-action.png',
+					text: '首页',
+					customIcon: false,
+					pagePath: '/pages/index/index'
+				},
+				{
+					iconPath: this.$store.state.baseurl + '/img/user/' + 'cate.png',
+					selectedIconPath: this.$store.state.baseurl + '/img/user/' + 'cate-action.png',
+					text: '分类',
+					customIcon: false,
+					pagePath: '/pages/classification/cate'
+				},
+				{
+					iconPath: this.$store.state.baseurl + '/img/user/' + 'cart.png',
+					selectedIconPath: this.$store.state.baseurl + '/img/user/' + 'cart-action.png',
+					text: '购物车',
+					customIcon: false,
+					// 红色角标显示的数字,如果需要移除角标,配置此参数为0即可
+					count: this.$store.state.cartNum,
+					pagePath: '/pages/cart/cart'
+				},
+				{
+					iconPath: this.$store.state.baseurl + '/img/user/' + 'user.png',
+					selectedIconPath: this.$store.state.baseurl + '/img/user/' + 'user-action.png',
+					text: '我的',
+					customIcon: false,
+					pagePath: '/pages/user/user'
+				}
+			];
+		},
+		activeColor() {
+			return this.$store.state.baseSet.themeStyle.color_o || '#FD463E';
+			// return '#FD463E';
+		}
+	}
+};
+</script>
+
+<style></style>

+ 52 - 0
components/empty/index.vue

@@ -0,0 +1,52 @@
+<template>
+	<view class="empty-view" :style="{ left: left }">
+		<image :src="src" mode="aspectFit" class="empty-img"></image>
+		<view class="empty-text">{{ text }}</view>
+		<view v-if="!isLogin">
+			<Login></Login>
+		</view>
+	</view>
+</template>
+
+<script>
+	import Login from '@/components/Login.vue';
+export default {
+	components:{Login},
+	computed:{
+		isLogin() {
+			return this.$store.state.hasLogin;
+		},
+	},
+	props: {
+		left: {
+			type: String,
+			default: '0'
+		},
+		text: {
+			type: String,
+			default: '没有数据哦~~'
+		},
+		src: {
+			type: String,
+			default: 'https://onlineimg.qianniao.vip/address.png'
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.empty-view {
+	width: 100%;
+	text-align: center;
+	margin-top: 200upx;
+	.empty-img {
+		width: 200rpx;
+		height: 200rpx;
+	}
+	.empty-text {
+		font-size: 26upx;
+		color: #999999;
+		padding-top: 10rpx;
+	}
+}
+</style>

+ 310 - 0
components/its-calendar/its-calendar.vue

@@ -0,0 +1,310 @@
+<template>
+	<view>
+		<view class="calendar">
+			<scroll-view scroll-x="true" class="top-wrap">
+				<view class="time-wrap" v-for="(dayitem,dayindex) in dayArr" :key="dayindex"
+					:class="{'action':day_index ==dayindex }" @click.stop="dayList(dayitem,dayindex)">
+					<text class="time-val">{{dayitem.days}}</text>
+					<text class="time-xq">{{dayitem.weeks}}</text>
+				</view>
+			</scroll-view>
+			<view scroll-y class="calendar_time">
+				<view class="time_x" :class="host_index == item.timeStamp ? 'time_x_sty' : ''"
+					v-for="(item, index) in hostArr[day_index]" :key="index"
+					@click="nowTimes < item.timeStamp ? hosts(item) : ''"
+					:style="{'color': (nowTimes > item.timeStamp ? '#999999' : '')}">{{item.hours}}</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			sta_num: {
+				type: Number | String,
+				default: 8
+			},
+			end_num: {
+				type: Number | String,
+				default: 23
+			},
+			int_num: {
+				type: Number | String,
+				default: 30
+			},
+		},
+		watch: {
+			sta_num(xin,low) {
+				console.log('改变了')
+				this.sxym()
+			}
+		},
+		data() {
+			return {
+				dayArr: [],
+				hostArr: [],
+				day_index: 0,
+				host_index: '',
+				host_All: [],
+				nowTimes: '',
+			}
+		},
+		mounted() {
+			this.sxym()
+		},
+		methods: {
+			sxym() {
+				console.log('执行获取',this.sta_num,this.end_num)
+				try{
+					let dateArr = [];
+					let today = new Date();
+					let nowTime = today.getTime() // 当前时间戳
+					this.nowTimes = parseInt(nowTime / 1000)
+					for (let i = 0; i < 6; i++) {
+						let newDate = new Date(today.getTime() + i * 1000 * 60 * 60 * 24);
+						let month = (parseInt(newDate.getMonth()) + 1) > 9 ? (parseInt(newDate.getMonth()) + 1) : "0" + (parseInt(
+							newDate.getMonth()) + 1); // 当前月份
+						let day = (newDate.getDate()) > 9 ? newDate.getDate() : "0" + newDate.getDate(); //当前日期
+						let backTime = newDate.getTime(); // 几天后时间戳
+						let backDays = newDate.getDay(); // 几天后周几
+						let remTime = (backTime - nowTime) / 1000; // 距离今天几天
+						let week = '';
+						// if (remTime == 0) {
+						// 	week = "今天"
+						// } else if (remTime == 86400) {
+						// 	week = "明天"
+						// } else if (remTime == 172800) {
+						// 	week = "后天"
+						// } else {
+						if (backDays == 0) {
+							week = "周日";
+						} else if (backDays == 1) {
+							week = "周一";
+						} else if (backDays == 2) {
+							week = "周二";
+						} else if (backDays == 3) {
+							week = "周三";
+						} else if (backDays == 4) {
+							week = "周四";
+						} else if (backDays == 5) {
+							week = "周五";
+						} else if (backDays == 6) {
+							week = "周六";
+						}
+						// }
+						// let fullDate = `${month}-${day}`;
+						let fullDate = `${day}`;
+						let ass = {
+							weeks: week,
+							days: fullDate
+						};
+						dateArr.push(ass);
+					}
+					this.dayArr = dateArr;
+					
+					let timeArr = [];
+					for (let i = 0; i < 6; i++) {
+						// let as = new Date(new Date().toLocaleDateString()).getTime() / 1000
+						let as = new Date(new Date().toLocaleDateString()).getTime() / 1000 + i * 60 * 60 * 24;
+						let staTime = this.sta_num * 60 * 60 + as;
+						let endTime = this.end_num * 60 * 60 + as;
+						let int = this.int_num * 60;
+						let timeArr_s = [];
+						for (staTime; staTime < endTime - int; staTime + int) {
+							staTime = staTime + int;
+							let hours = this.times(staTime);
+							let asb = {
+								hours,
+								timeStamp: staTime
+							};
+							timeArr_s.push(asb);
+						}
+						timeArr.push(timeArr_s);
+					}
+					this.hostArr = timeArr;
+					console.log(this.hostArr,'hostArr')
+				}catch(e){
+					//TODO handle the exception
+					console.log(e)
+				}
+				
+			},
+			// 点击日期
+			dayList(e, index) {
+				this.day_index = index;
+			},
+			// 点击时间
+			hosts(e) {
+				this.host_All = e;
+				this.host_index = e.timeStamp;
+				this.sub()
+			},
+			// 点击立即预约
+			sub() {
+				if (this.host_index == '') {
+					this.$tool.toast('请选择时间');
+				} else {
+					let day = this.dayArr[this.day_index];
+					let time = this.time(this.host_index);
+					let comTime = {
+						days: day.days,
+						weeks: day.weeks,
+						hours: this.host_All.hours,
+						timeStamp: this.host_All.timeStamp,
+						time: time
+					};
+					this.$emit('getTime', comTime);
+				}
+			},
+			// 格式化时间
+			times(data) {
+				let date = new Date(data * 1000);
+				//时间戳为10位需*1000,时间戳为13位的话不需乘1000
+				let h = date.getHours();
+				h = h < 10 ? ('0' + h) : h; //小时补0
+				let m = date.getMinutes();
+				m = m < 10 ? ('0' + m) : m; //分钟补0
+				return h + ':' + m;
+			},
+			time(data, type) {
+				let date = new Date(data * 1000);
+				//时间戳为10位需*1000,时间戳为13位的话不需乘1000
+				let y = date.getFullYear();
+				let MM = date.getMonth() + 1;
+				MM = MM < 10 ? ('0' + MM) : MM; //月补0
+				let d = date.getDate();
+				d = d < 10 ? ('0' + d) : d; //天补0
+				let h = date.getHours();
+				h = h < 10 ? ('0' + h) : h; //小时补0
+				let m = date.getMinutes();
+				m = m < 10 ? ('0' + m) : m; //分钟补0
+				let s = date.getSeconds();
+				s = s < 10 ? ('0' + s) : s; //秒补0
+				if (type == 'yymmdd') {
+					return y + '-' + MM + '-' + d;
+				} else if (type == 'hhmmss') {
+					return h + ':' + m + ':' + s;
+				} else {
+					return y + '-' + MM + '-' + d + ' ' + h + ':' + m + ':' + s;
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	page {
+		background-color: #F4F4F4;
+	}
+
+	.calendar {
+		width: 710rpx;
+		height: 590rpx;
+		background-color: #FFFFFF;
+		margin: 20rpx auto 10rpx;
+		border-radius: 8rpx;
+	}
+
+	.calendar_day {
+		display: flex;
+		width: 100%;
+		height: 120rpx;
+
+		.day_x {
+			display: flex;
+			// flex-flow: column nowrap;
+			flex-flow: nowrap;
+			justify-content: center;
+			align-items: center;
+			width: 20%;
+			height: 100%;
+			font-size: 30rpx;
+			color: #333333;
+		}
+	}
+
+	.calendar_time {
+		display: flex;
+		width: 100%;
+		height: 448rpx;
+		flex-flow: row wrap;
+		align-content: flex-start;
+		margin: 20rpx 0;
+		overflow-y: auto;
+
+		.time_x {
+			display: flex;
+			flex-flow: row;
+			justify-content: center;
+			align-items: center;
+			width: 20%;
+			height: 54rpx;
+			border-radius: 26rpx;
+			margin: 10rpx 0;
+			font-size: 30rpx;
+			color: #333333;
+		}
+
+		.time_x_sty {
+			background-color: #262261;
+			color: #fff !important;
+		}
+	}
+
+	.sub {
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		width: 710rpx;
+		height: 100rpx;
+		border-radius: 50rpx;
+		margin: 30rpx auto;
+		color: #FFFFFF;
+		font-size: 36rpx;
+		// background-color: #FE3B3C;
+	}
+
+	.top-wrap {
+
+		white-space: nowrap;
+		width: 700rpx;
+		// height: 100rpx;
+		padding: 20rpx 0;
+
+		.time-wrap {
+			margin: auto 15rpx;
+			display: inline-block;
+			width: 158rpx;
+			height: 63rpx;
+			border-radius: 32rpx;
+			line-height: 63rpx;
+			text-align: center;
+			background-color: #FDF9FA;
+
+			.time-xq {
+				font-size: 22rpx;
+				font-weight: 500;
+				color: #999999;
+			}
+
+			.time-val {
+				font-size: 32rpx;
+				font-weight: bold;
+				color: #333333;
+			}
+		}
+
+		.action {
+			background-color: #262261;
+
+			.time-xq {
+				color: #FDF9FA;
+			}
+
+			.time-val {
+				color: #FDF9FA;
+			}
+		}
+	}
+</style>

+ 220 - 0
components/setMealMore.vue

@@ -0,0 +1,220 @@
+<template>
+	<view>
+		<u-popup :value="isShow" mode="bottom" :mask-close-able="false" :border-radius="12">
+			<view class="set_more">
+				<view class="more clearfix">
+					<view class="float_left">
+						<text class="title">组合套餐</text>
+						<text class="tip">{{total}}组套餐,最多可省¥{{combinedPackage[0].originPrice - combinedPackage[0].price - 0}}</text>
+					</view>
+					<text class="ibonfont ibonguanbi close-icon float_right" @click="closeaddcartPop"></text>
+				</view>
+				<scroll-view scroll-y="true" style="height: 600rpx;">
+					<view class="group-ul">
+						<view class="group-li clearfix" v-for="item,index in combinedPackage" :key="index" @click="goPage('/pageT/goodsGroup/goodsGroupDetail?goodsid=' + goods_id +'&shopid=' + item.shopId+'&index='+index)">
+							<view class="float_left">
+								<scroll-view scroll-x="true" class="left-scroll">
+									<view class="goods-ul">
+										<view class="goods-li" v-for="item1,index1 in item.goodsData" :key="index1">
+											<image :src="item1.images[0]" mode="aspectFill"></image>
+											<view class="goods-name ellipsis">{{item1.title}}</view>
+										</view>
+									</view>
+								</scroll-view>
+							</view>
+							<view class="float_left dy-icon">
+								<text class="ibonfont ibonicon"></text>
+							</view>
+							<view class="float_left price-right">
+								<view class="group-price">
+									<text>套餐价</text>
+									<text class="primary-color">¥{{item.price}}</text>
+								</view>
+								<view class="save-price primary-color">
+									可省¥{{item.originPrice - item.price - 0}}
+								</view>
+								<view class="buy-btn primary-bg">
+									立即购买
+								</view>
+							</view>
+						</view>
+					</view>
+				</scroll-view>
+			</view>
+		</u-popup>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			isShow: {
+				type: Boolean,
+				default: false
+			},
+			goods_id: {
+				type: [Number, String],
+				default: 0,
+			},
+			shopId: {
+				type: [Number, String],
+				default: 0
+			},
+		},
+		data() {
+			return {
+				total: 0,
+				combinedPackage: []
+			}
+		},
+		watch:{
+			isShow(val){
+				if(val){
+					this.listsApiComBinPackage()
+				}
+			}
+		},
+		created() {
+			// this.listsApiComBinPackage()
+		},
+		methods: {
+			// 关闭弹窗
+			closeaddcartPop() {
+				this.$emit('close', false);
+				console.log(this.goodsId, this.shopId)
+			},
+			async listsApiComBinPackage() {
+				const {
+					data
+				} = await this.$u.api.listsApiComBinPackage({
+					page: 1,
+					pageSize: 10,
+					shopId: this.shopId,
+					goodsId: this.goodsId
+				})
+				this.combinedPackage = data
+				this.total = data.length
+				console.log(data)
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.set_more {
+		height: 700rpx;
+		background-color: #f5f9fc;
+
+		.more {
+			height: 80rpx;
+			line-height: 80rpx;
+			padding: 0 30rpx;
+			background-color: #fff;
+
+			.title {
+				font-weight: 560;
+			}
+
+			.tip {
+				color: #999;
+				font-size: 24rpx;
+				margin-left: 10rpx;
+			}
+
+			.close-icon {
+				color: #999;
+				font-size: 40upx;
+			}
+		}
+
+		.group-ul {
+			padding: 20rpx;
+
+			.group-li {
+				background-color: #FFFFFF;
+				border-radius: 12rpx;
+				padding: 20rpx;
+				margin-bottom: 20rpx;
+
+				.float_left {
+					.left-scroll {
+						width: 430rpx;
+						white-space: nowrap;
+
+						.goods-li {
+							display: inline-block;
+							vertical-align: middle;
+
+							image {
+								display: block;
+								width: 150rpx;
+								height: 150rpx;
+								border-radius: 10rpx;
+								margin: 0 auto;
+							}
+
+							text-align: center;
+
+							.goods-name {
+								width: 150rpx;
+								height: 36rpx;
+								line-height: 36rpx;
+								margin-top: 10rpx;
+								font-size: 24rpx;
+								-webkit-line-clamp: 1;
+							}
+						}
+
+						.plus-icon {
+							vertical-align: middle;
+							display: inline-block;
+							line-height: 150rpx;
+							padding: 0 10rpx;
+							height: 200rpx;
+						}
+					}
+				}
+
+				.dy-icon {
+					padding: 0 10rpx;
+					line-height: 150rpx;
+					padding: 0 10rpx;
+					height: 200rpx;
+					color: #cecece;
+
+					.ibonicon {
+						font-size: 26rpx;
+					}
+				}
+
+				.price-right {
+					color: #666666;
+					font-size: 24rpx;
+					text-align: center;
+					width: 190rpx;
+
+					.group-price {
+						.primary-color {
+							font-weight: 700;
+							font-size: 28rpx;
+						}
+					}
+
+					.save-price {
+						padding: 10rpx 0;
+					}
+
+					.buy-btn {
+						line-height: 56rpx;
+						height: 56rpx;
+						border-radius: 8rpx;
+						text-align: center;
+						color: #FFFFFF;
+						width: 150rpx;
+						margin: 10rpx auto 0;
+					}
+				}
+			}
+		}
+	}
+</style>

+ 108 - 0
components/struggler-uniapp-add-tip/struggler-uniapp-add-tip.vue

@@ -0,0 +1,108 @@
+<template>
+	<view>
+		<!-- #ifdef MP-WEIXIN -->
+		<view class="uni-add-tips-box" v-if="showTip">
+			<view class="uni-add-tips-content" @tap="hideTip">
+				<view class="clearfix" style="width: 100%;">
+					点击
+					<image src="https://onlineimg.qianniao.vip/wxdot.jpg" class="wxdot" mode="aspectFill"></image>
+					添加到我的小程序,微信首页下拉即可快速访问
+					<text class="ibonfont ibonguanbi close-icon" @click="hideTip"></text>
+				</view>
+			</view>
+		</view>
+		<!-- #endif -->
+	</view>
+</template>
+
+<script>
+const SHOW_TIP = 'SHOW_TIP';
+export default {
+	data() {
+		return {
+			showTip: false
+		};
+	},
+	mounted() {
+		this.showTip = !uni.getStorageInfoSync().keys.includes(SHOW_TIP);
+		// setTimeout(()=>{
+		// 	this.showTip = false
+		// },this.duration*1000)
+	},
+	props: {
+		tip: {
+			type: String,
+			default: '点击 ··· 添加到我到小程序,微信首页下拉即可快速访问'
+		},
+		duration: {
+			type: Number,
+			default: 10
+		}
+	},
+	methods: {
+		hideTip() {
+			uni.setStorageSync(SHOW_TIP, true);
+			this.showTip = false;
+		}
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+.wxdot {
+	width: 60upx;
+	height: 30upx;
+	// transform: translateY(-20upx);
+	margin-right: 8upx;
+	display: inline-block;
+}
+.close-icon {
+	font-size: 32upx;
+	position: absolute;
+	top: 22upx;
+	right: 12upx;
+}
+$themeColor: #ffffff; //主题色
+.uni-add-tips-box {
+	position: fixed;
+	top: 128upx;
+	right: 0;
+	z-index: 99999;
+	opacity: 0.8;
+	width: 600upx;
+	animation: opacityC 1s linear infinite;
+}
+.uni-add-tips-content::before {
+	content: '';
+	position: absolute;
+	width: 0;
+	height: 0;
+	top: -38upx;
+	right: 80upx;
+	border-width: 20upx;
+	border-style: solid;
+	display: block;
+	border-color: transparent transparent $themeColor transparent;
+}
+.uni-add-tips-content {
+	border-width: 0upx;
+	margin-top: 20upx;
+	position: relative;
+	background-color: $themeColor;
+	box-shadow: 0 10upx 20upx -10upx #ccc;
+	border-radius: 12upx;
+	padding: 18upx 26upx;
+	margin-right: 40upx;
+	color: #333;
+	font-size: 28upx;
+	font-weight: 400;
+}
+@keyframes opacityC {
+	0% {
+		opacity: 0.8;
+	}
+	50% {
+		opacity: 1;
+	}
+}
+</style>

+ 30 - 0
components/uni-status-bar/uni-status-bar.vue

@@ -0,0 +1,30 @@
+<template>
+    <view class="uni-status-bar" :style="style">
+        <slot></slot>
+    </view>
+</template>
+
+<script>
+    export default {
+        computed: {
+            style() {
+                //#ifdef MP-WEIXIN
+                var systemInfo = uni.getSystemInfoSync()
+                return `height:${systemInfo.statusBarHeight}px`
+                //#endif
+                //#ifdef APP-PLUS
+                return ''
+                //#endif
+            }
+        }
+    }
+</script>
+
+<style>
+    .uni-status-bar {
+        display: block;
+        width: 100%;
+        height: 20px;
+        height: var(--status-bar-height);
+    }
+</style>

+ 25 - 0
config.js

@@ -0,0 +1,25 @@
+const url = {
+	dev: {
+		QN_URL: 'http://crm.frp.liuniu946.com',
+		QINIU_URL: 'http://image.qianniao.vip',
+		QINIU_KEY: 'devdemo',
+	},
+	// 六牛科技
+	master: {
+		// #ifdef H5
+		QN_URL: 'http://localhost:8080',
+		// #endif
+		// #ifndef H5
+		QN_URL: 'https://api.junhailan.com',
+		// #endif
+		QINIU_URL: 'http://up.liuniukj.com',
+		QINIU_KEY: 'niuliukj',
+	}
+}
+const webUrl = {
+	...url.master,
+	GDMap_key: 'd8d30eab203ac428dd3ede0371d641e9',
+	QINIU_UP: 'https://upload-z2.qiniup.com',
+	QRC_SRC: 'https://upload.qianniao.vip/',
+}
+export default webUrl

+ 8 - 0
ext.json

@@ -0,0 +1,8 @@
+{
+	"extEnable": true,
+	"extAppid": "wxb2198cca99031de1",
+	"directCommit": false,
+	"ext": {
+		"token": "931544405107da76ca2ec31cd63fae49"
+	}
+}

+ 65 - 0
main.js

@@ -0,0 +1,65 @@
+import Vue from 'vue'
+import store from './store'
+import App from './App'
+import goPage from '@/mixin/goPage.js'
+import * as utils from "@/access/utils.js"
+import * as common from "@/access/common.js"
+import Tabbar from '@/components/Tabbar/index';
+import empty from '@/components/empty/index.vue'
+Vue.component('Tabbar', Tabbar)
+Vue.component('Aempty', empty)
+// 数字精度计算
+import NP from "number-precision";
+Vue.prototype.$NP = NP; // 高精度数学计算
+import uView from "uview-ui";
+Vue.use(uView);
+const msg = (title, duration = 1500, mask = false, icon = 'none') => {
+	//统一提示方便全局修改
+	if (Boolean(title) === false) {
+		return;
+	}
+	uni.showToast({
+		title,
+		duration,
+		mask,
+		icon
+	});
+}
+
+const prePage = () => {
+	let pages = getCurrentPages();
+	let prePage = pages[pages.length - 2];
+	// #ifdef H5
+	return prePage;
+	// #endif
+	return prePage.$vm;
+}
+
+Vue.prototype.$api = {
+	msg,
+	prePage
+};
+Vue.mixin(goPage)
+Vue.config.productionTip = false
+Vue.prototype.$fire = new Vue();
+Vue.prototype.$store = store;
+Vue.prototype.$api = {
+	msg,
+	prePage
+};
+Vue.prototype.$_utils = utils
+Vue.prototype.$common = common
+App.mpType = 'app'
+
+const app = new Vue({
+	...App
+})
+
+// http拦截器,将此部分放在new Vue()和app.$mount()之间,才能App.vue中正常使用
+import httpInterceptor from '@/common/http.interceptor.js'
+Vue.use(httpInterceptor, app)
+
+// http接口API抽离,免于写url或者一些固定的参数
+import httpApi from '@/common/http.api.js'
+Vue.use(httpApi, app)
+app.$mount()

+ 192 - 0
manifest.json

@@ -0,0 +1,192 @@
+{
+    "name" : "君海蓝",
+    "appid" : "__UNI__1EEAF16",
+    "description" : "六牛云商 - 为传统商户量身打造的全渠道线上线下一体化新零售营销系统! 以客户为中心,将线上和线下、进销存、CRM、财务一体化,完美融合!支持连锁、代理、经销多种运营模式,小程序一键发布,自定义APP界面,多套模板选择。7X24小时为您服务",
+    "versionName" : "1.1.3",
+    "versionCode" : 113,
+    "transformPx" : false,
+    "app-plus" : {
+        /* 5+App特有相关 */
+        "usingComponents" : true,
+        "splashscreen" : {
+            "alwaysShowBeforeRender" : false,
+            "waiting" : false,
+            "autoclose" : true,
+            "delay" : 0
+        },
+        "modules" : {
+            "Maps" : {},
+            "Payment" : {},
+            "OAuth" : {},
+            "Share" : {}
+        },
+        /* 模块配置 */
+        "distribute" : {
+            /* 应用发布信息 */
+            "android" : {
+                /* android打包配置 */
+                "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.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.RECORD_AUDIO\"/>",
+                    "<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\"/>"
+                ]
+            },
+            "ios" : {
+                "privacyDescription" : {
+                    "NSPhotoLibraryUsageDescription" : "需要您的同意,才能访问相册,上传图片,以便修改头像",
+                    "NSPhotoLibraryAddUsageDescription" : "需要您的同意,才能访问相册,保存商品图片海报",
+                    "NSCameraUsageDescription" : "该应用需要使用您的相机,以便拍摄修改头像",
+                    "NSLocationAlwaysAndWhenInUseUsageDescription" : "需要您的同意,才能始终访问您的地理位置,获取当前地理位置的商品信息",
+                    "NSLocationWhenInUseUsageDescription" : "需要您的同意,才能在使用期间访问您的地理位置,获取当前地理位置的商品信息",
+                    "NSLocationAlwaysUsageDescription" : "App需要您的同意,才能访问您的地理位置,获取当前地理位置的商品信息"
+                },
+                "dSYMs" : false
+            },
+            /* ios打包配置 */
+            "sdkConfigs" : {
+                "maps" : {
+                    "amap" : {
+                        "appkey_ios" : "d8d30eab203ac428dd3ede0371d641e9",
+                        "appkey_android" : "3604fc62d1e4e5c3a203708002b702db"
+                    }
+                },
+                "payment" : {
+                    "alipay" : {},
+                    "weixin" : {
+                        "appid" : "wxeff351bc49a91bf7",
+                        "UniversalLinks" : "https://www.qianniaovip.com/"
+                    }
+                },
+                "oauth" : {
+                    "weixin" : {
+                        "appid" : "wxeff351bc49a91bf7",
+                        "appsecret" : "a5ffb07765ab01d91791db49a52799de",
+                        "UniversalLinks" : "https://www.qianniaovip.com/"
+                    }
+                },
+                "ad" : {},
+                "share" : {
+                    "weixin" : {
+                        "appid" : "wxeff351bc49a91bf7",
+                        "UniversalLinks" : "https://www.qianniaovip.com/"
+                    }
+                }
+            },
+            "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",
+                "iosStyle" : "common"
+            }
+        }
+    },
+    /* SDK配置 */
+    "quickapp" : {},
+    /* 快应用特有相关 */
+    "mp-weixin" : {
+        /* 小程序特有相关 */
+        "usingComponents" : true,
+        "appid" : "wx32132dd0248b3b81",
+        "setting" : {
+            "urlCheck" : false,
+            "es6" : false,
+            "postcss" : false,
+            "minified" : false
+        },
+        "permission" : {
+            // "scope.userLocation" : {
+            //     "desc" : "您的位置信息用来获取最近门店的商品信息"
+            // }
+            "scope.userFuzzyLocation" : {
+                "desc" : "您的位置信息用来获取最近门店的商品信息"
+            }
+        },
+        "optimization" : {
+            "subPackages" : true
+        },
+        // "requiredPrivateInfos" : [ "getLocation", "chooseLocation" ]
+        "requiredPrivateInfos" : [ "getFuzzyLocation", "chooseLocation" ]
+    },
+    "h5" : {
+        "sdkConfigs" : {
+            "maps" : {
+                "qqmap" : {
+                    "key" : "3YMBZ-OV6LX-L5C4V-ZKNI6-QBZ5Z-H4FJX"
+                }
+            }
+        },
+        "router" : {
+            "base" : "./"
+        },
+        "devServer" : {
+            "proxy" : {
+                "/api" : {
+                    "target" : "https://api.junhailan.com",
+                    // "target" : "http://bsn.frp.liuniu946.com/api",
+                    // "changeOrigin": true,
+                    "pathRewrite" : {
+                        "/api" : "" // rewrite path
+                    }
+                }
+            }
+        }
+    },
+    "mp-toutiao" : {
+        "usingComponents" : true,
+        "appid" : "tt78210e9ce71b918b",
+        "setting" : {
+            "minified" : true
+        }
+    }
+}

+ 303 - 0
mixin/goPage.js

@@ -0,0 +1,303 @@
+import amap from '@/access/amap-wx.js';
+import permision from "@/access/wa-permission/permission.js"
+import webUrl from '../config.js';
+export default {
+	onPageScroll(obj) {
+		// console.log(obj)
+		this.navFixed = (obj.scrollTop > 1)
+		// console.log(this.navFixed)
+	},
+	computed: {
+		barHeight() {
+			const systemInfo = uni.getSystemInfoSync();
+			return systemInfo.statusBarHeight
+		},
+		theme() {
+			if (this.$store.state.baseSet && this.$store.state.baseSet.themeStyle) {
+				return this.$store.state.baseSet.themeStyle.theme || 'red'
+			} else {
+				return 'red'
+			}
+		},
+		primaryColor() {
+			if (this.$store.state.baseSet && this.$store.state.baseSet.themeStyle) {
+				return this.$store.state.baseSet.themeStyle.color_o
+			} else {
+				return '#FD463E'
+			}
+		},
+		primaryJb() {
+			if (this.$store.state.baseSet && this.$store.state.baseSet.themeStyle) {
+				return `linear-gradient(315deg, ${this.$store.state.baseSet.themeStyle.color_o}, ${this.$store.state.baseSet.themeStyle.color_t})`
+			} else {
+				return `linear-gradient(315deg, #FD463E, #ff3883)`
+			}
+		},
+		isUserAudit() {
+			const userStatus = this.$store.state.userStatus
+			if (userStatus.enableStatus === 4) {
+				return false
+			} else if (userStatus.status === 3) {
+				return false
+			} else if (userStatus.status === 1) {
+				return false
+			} else if (userStatus.status === 0) {
+				return false
+			} else {
+				return true
+			}
+		}
+	},
+	data() {
+		return {
+			navFixed: false,
+			isLoding: false
+			// amapPlugin: null
+		}
+	},
+
+	onLoad() {
+		//在 onLoad 中初始化一个高德小程序 SDK 的实例对象。
+		this.amapPlugin = new amap.AMapWX({
+			key: webUrl.GDMap_key
+		});
+	},
+	methods: {
+		callphone(phone) {
+			uni.makePhoneCall({
+				phoneNumber: phone
+			})
+		},
+		goPage(url, type) {
+			if(!url) return
+			let urlT = ''
+			if (!['/pages/index/index', '/pages/cart/cart', '/pages/classification/cate'].includes(url)) {
+				const arr = url.split('/')
+				arr[1] = 'pagesT'
+				urlT = arr.join('/')
+			} else {
+				if (['/pages/index/Seckill'].includes(url)) {
+					urlT = 'pagesT/seckill/Seckill'
+				} else {
+					urlT = url
+				}
+			}
+			if (type === 'none') {
+				return
+			}
+			if (type === 'switchTab') {
+				uni.switchTab({
+					url: url
+				})
+			} else if (type === 'redirectTo') {
+				uni.redirectTo({
+					url: urlT
+				})
+			} else if (type === 'reLaunch') {
+				uni.reLaunch({
+					url: urlT
+				})
+			} else {
+				uni.navigateTo({
+					url: urlT
+				})
+			}
+		},
+
+		userAudit() {
+			// 判断用户status状态 0:待补全 1:待审核 2:已审核 3:审核失败 4:审核中
+			const userStatus = this.$store.state.userStatus
+			if (userStatus.enableStatus === 4) {
+				uni.clearStorageSync();
+				uni.showModal({
+					title: '账号已被禁用,您可以',
+					content: '联系电话:' + userStatus.enterpriseMobile,
+					confirmText: '联系客服',
+					cancelText: '取消',
+					success: res => {
+						if (res.confirm) {
+							uni.makePhoneCall({
+								phoneNumber: userStatus.enterpriseMobile
+							});
+						} else {
+							this.goPage('/pages/binding/bindInfo', 'reLaunch');
+						}
+					}
+				});
+
+				return;
+			}
+			// if (this.$store.state.baseSet.personnelReview === 5) {
+			if (userStatus.status === 3) {
+				// 说明资料不完善,跳转到完善资料的页面
+				uni.showModal({
+					title: '审核未通过审核,请重新修改资料',
+					content: userStatus.auditFailReason || '',
+					cancelText: '取消',
+					confirmText: '修改资料',
+					success: res => {
+						if (res.confirm) {
+							this.goPage('/pages/user/editUserInfo?token=' + this.$common.getToken());
+						}
+					}
+				});
+			} else if (userStatus.status === 1) {
+				uni.showModal({
+					title: '账号正在审核中,您可以',
+					content: '联系电话:' + userStatus.enterpriseMobile,
+					confirmText: '联系客服',
+					cancelText: '取消',
+					success: res => {
+						if (res.confirm) {
+							uni.makePhoneCall({
+								phoneNumber: userStatus.enterpriseMobile
+							});
+						}
+					}
+				});
+			} else if (userStatus.status === 0) {
+				uni.showModal({
+					title: '请完善信息后再进行操作',
+					content: '商家需要对客户资料进行审核,请您完善信息后再次进行操作',
+					confirmText: '完善信息',
+					cancelText: '取消',
+					success: res => {
+						if (res.confirm) {
+							this.goPage('/pages/user/editUserInfo');
+						}
+					}
+				});
+			}
+			// }
+
+		},
+		backPage() {
+			uni.navigateBack()
+		},
+
+		//授权
+		getAuthorizeInfo() {
+			this.getLocation();
+		},
+		// 再次获取授权 微信小程序
+		// 当用户第一次拒绝后再次请求授权
+		openConfirm() {
+			// uni.showModal({
+			// 	title: '请求授权当前位置',
+			// 	content: '商品信息将无法正常显示,请确认授权',
+			// 	success: res => {
+						
+			// 		if(res.confirm) {
+			// 			this.isLoding = true
+			// 			uni.openSetting({
+			// 				success: reso => {
+			// 					// if (!reso.authSetting['scope.userLocation']) {
+			// 					// 	this.openConfirm();
+			// 					// }
+			// 					if (!reso.authSetting['scope.userFuzzyLocation']) {
+			// 						this.openConfirm();
+			// 					}
+			// 				},
+			// 				complete: () => {
+			// 					this.isLoding = false
+			// 				}
+			// 			});
+			// 		}
+					
+			// 	}
+			// });
+		},
+		// 获取定位
+		getLocation() {
+			this.isLoding = true
+			this.amapPlugin.getRegeo({
+				success: data => {
+					const proCity = ['北京市', '天津市', '上海市', '重庆市']
+					this.isLoding = false
+					// console.log('获取定位:', data)
+					const provinceName = data[0].regeocodeData.addressComponent.province
+					console.log('获取定位:', provinceName)
+					const cityName = proCity.includes(provinceName) ? provinceName : data[0].regeocodeData
+						.addressComponent.city
+					const districtName = data[0].regeocodeData.addressComponent.district
+					// const address = data[0].regeocodeData.addressComponent.township
+					const address = data[0].desc || data[0].regeocodeData.addressComponent.streetNumber
+						.street || data[0].regeocodeData
+						.addressComponent.township;
+					const location = {
+						provinceName: provinceName,
+						cityName: cityName,
+						districtName: districtName,
+						address: address
+					};
+					// console.log(123, location)
+					this.$store.commit('commit_locationObj', {
+						...location,
+						latitude: data[0].latitude,
+						longitude: data[0].longitude
+					});
+					// this.getTemplate();
+				},
+				fail: err => {
+					console.log('定位失败,用户拒绝定位', err);
+					// 拒绝授权
+					// #ifdef MP
+					this.openConfirm();
+					// #endif
+					// #ifdef APP-PLUS
+					if (plus.os.name == "iOS") {
+						let result = permision.judgeIosPermission('location')
+						if (!result) {
+							this.judgeIosPermission('location')
+						}
+					} else {
+						this.requestAndroidPermission('android.permission.ACCESS_FINE_LOCATION')
+					}
+					// #endif
+					// console.log('你拒绝了授权,无法获得周边信息');
+				}
+
+			});
+		},
+		// 再次获取授权 安卓
+		async requestAndroidPermission(permisionID) {
+			let result = await permision.requestAndroidPermission(permisionID)
+			if (result == 1) {
+				strStatus = "已获得授权"
+			} else {
+				// uni.showToast({
+				// 	title: '未获取到您的位置信息,商品数据将无法正常显示,请前往【设置->应用->权限管理->位置】确认授权位置信息',
+				// 	duration: 10000,
+				// 	icon: 'none'
+				// });
+				// 设置->隐私->定位服务中开启定位服务
+				uni.showModal({
+					title: '定位服务已关闭',
+					content: '您需要打开定位权限,才可以获取商品信息,请前往【设置->应用->权限管理->位置】中开启定位服务',
+					success: (res) => {
+						if (res.confirm) {
+							permision.gotoAppPermissionSetting()
+						}
+					}
+				});
+			}
+		},
+		// 再次获取授权 IOS
+		judgeIosPermission(permisionID) {
+			var result = permision.judgeIosPermission(permisionID)
+			// var strStatus = (result) ? "已" : "未"
+			if (!result) {
+				uni.showModal({
+					title: '定位服务已关闭',
+					content: '您需要打开定位权限,才可以获取商品信息,请前往【设置->隐私->定位服务】中开启定位服务',
+					success: (res) => {
+						if (res.confirm) {
+							permision.gotoAppPermissionSetting()
+						}
+					}
+				});
+			}
+		}
+
+	}
+}

+ 662 - 0
pages.json

@@ -0,0 +1,662 @@
+{
+	"easycom": {
+		"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
+	},
+	"pages": [{
+			"path": "pages/index/StartUpPage",
+			"style": {
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/index/index",
+			"style": {
+				"navigationStyle": "custom",
+				"enablePullDownRefresh": true,
+				"navigationBarTitleText": "首页"
+			}
+		},
+
+		{
+			"path": "pages/index/SearchAddress",
+			"style": {
+				"navigationBarTitleText": "搜索地址"
+			}
+		},
+
+
+		{
+			"path": "pages/user/user",
+			"style": {
+				"navigationBarTitleText": "我的",
+				"navigationStyle": "custom",
+				"enablePullDownRefresh": true
+			}
+		},
+		{
+			"path": "pages/cart/cart",
+			"style": {
+				"navigationBarTitleText": "购物车",
+				"enablePullDownRefresh": true,
+				"app-plus": {
+					"titleNView": {
+						"buttons": [ //原生标题栏按钮配置,
+							{
+								"text": "编辑",
+								"fontSize": "14px"
+							}
+						]
+					}
+				}
+			}
+		},
+		{
+			"path": "pages/classification/cate",
+			"style": {
+				"navigationBarTitleText": "产品分类"
+			}
+		},
+		{
+			"path": "pages/index/FullScreen",
+			"style": {
+				"navigationStyle": "custom", // 取消本页面的导航栏
+				"app-plus": {
+					"animationType": "fade-in", // 设置fade-in淡入动画,为最合理的动画类型
+					"background": "transparent", // 背景透明
+					"backgroundColor": "rgba(0,0,0,0)", // 背景透明
+					"popGesture": "none" // 关闭IOS屏幕左边滑动关闭当前页面的功能
+				}
+			}
+		}
+	],
+	"subPackages": [{
+		"root": "pagesT",
+		"pages": [{
+				"path": "activity/Activity",
+				"style": {
+					"enablePullDownRefresh": true,
+					"navigationBarTitleText": "专题活动"
+				}
+			},
+			{
+				"path": "seckill/Seckill",
+				"style": {
+					"navigationBarTitleText": "秒杀抢购",
+					"enablePullDownRefresh": true,
+					"navigationStyle": "custom"
+				}
+			},
+			{
+				"path": "selfconfig/selfconfig",
+				"style": {
+					"navigationBarTitleText": "个人设置"
+				}
+			},
+			{
+				"path": "unit/official",
+				"style": {
+					"navigationBarTitleText": ""
+				}
+			},
+			{
+				"path": "unit/yhk",
+				"style": {
+					"navigationBarTitleText": "优惠卡"
+				}
+			},
+			{
+				"path": "unit/officialT",
+				"style": {
+					"navigationBarTitleText": ""
+				}
+			},
+			{
+				"path": "unit/ygdetail",
+				"style": {
+					"navigationBarTitleText": "员工详情"
+				}
+			},
+			{
+				"path": "unit/artdetail",
+				"style": {
+					"navigationBarTitleText": ""
+				}
+			},
+			{
+				"path": "unit/lc",
+				"style": {
+					"navigationBarTitleText": "疗程"
+				}
+			},
+			{
+				"path": "unit/item",
+				"style": {
+					"navigationBarTitleText": "项目"
+				}
+			},
+			{
+				"path": "unit/evaluate",
+				"style": {
+					"navigationBarTitleText": "评价"
+				}
+			},
+			{
+				"path": "unit/itemdetail",
+				"style": {
+					"navigationBarTitleText": "详情展示",
+					"navigationStyle": "custom",
+					"app-plus": {
+						"titleNView": {
+							"type": "transparent"
+						}
+					}
+				}
+			},
+			{
+				"path": "user/editUserInfo",
+				"style": {
+					"navigationBarTitleText": "完善资料"
+				}
+			},
+			{
+				"path": "user/VipList",
+				"style": {
+					"navigationBarTitleText": "会员卡中心"
+				}
+			},
+			{
+				"path": "user/VipDetail",
+				"style": {
+					"navigationBarTitleText": "会员卡详情"
+				}
+			},
+			{
+				"path": "user/GetCoupon",
+				"style": {
+					"navigationBarTitleText": "领取优惠券"
+				}
+			},
+			{
+				"path": "user/DiscountCoupon",
+				"style": {
+					"navigationBarTitleText": "我的优惠券"
+				}
+			},
+			{
+				"path": "user/Collection",
+				"style": {
+					"navigationBarTitleText": "常购清单"
+				}
+			},
+			{
+				"path": "user/guquan",
+				"style": {
+					"navigationBarTitleText": "股份"
+				}
+			},
+			{
+				"path": "user/dyquan",
+				"style": {
+					"navigationBarTitleText": "我的抵用券"
+				}
+			},
+			{
+				"path": "user/myyhk",
+				"style": {
+					"navigationBarTitleText": "我的优惠卡"
+				}
+			},
+			{
+				"path": "user/gqDetail",
+				"style": {
+					"navigationBarTitleText": "股权明细"
+				}
+			},
+			{
+				"path": "search/index",
+				"style": {
+					"navigationBarTitleText": "搜索"
+				}
+			},
+			{
+				"path": "search/SearchResult",
+				"style": {
+					"navigationBarTitleText": "搜索列表"
+				}
+			},
+			{
+				"path": "product/product",
+				"style": {
+					"navigationBarTitleText": "详情展示",
+					"navigationStyle": "custom",
+					"app-plus": {
+						"titleNView": {
+							"type": "transparent"
+						}
+					}
+				}
+			},
+			{
+				"path": "product/goodsPoster",
+				"style": {
+					"navigationBarTitleText": "制作海报"
+				}
+			},
+			{
+				"path": "binding/bindInfo",
+				"style": {
+					"navigationBarTitleText": "登入",
+					"navigationStyle": "custom"
+				}
+			},
+			{
+				"path": "binding/bindPhone",
+				"style": {
+					"navigationBarTitleText": "绑定手机",
+					"navigationStyle": "custom"
+				}
+			}, {
+				"path": "public/wxLogin",
+				"style": {
+					"navigationBarTitleText": "",
+					"navigationStyle": "custom",
+					"app-plus": {
+						"titleNView": false,
+						"animationType": "slide-in-bottom"
+					}
+				}
+			},
+
+			{
+				"path": "public/login",
+				"style": {
+					"navigationBarTitleText": "",
+					"navigationStyle": "custom",
+					"app-plus": {
+						"titleNView": false,
+						"animationType": "slide-in-bottom"
+					}
+				}
+			},
+			{
+				"path": "productDetail/productDetail",
+				"style": {
+					"navigationBarTitleText": "分类商品",
+					"enablePullDownRefresh": true
+				}
+			},
+			{
+				"path": "productDetail/groupList",
+				"style": {
+					"navigationBarTitleText": "商品分组",
+					"enablePullDownRefresh": true
+				}
+			},
+			{
+				"path": "money/BankPay",
+				"style": {
+					"navigationBarTitleText": "上传打款凭证",
+					"navigationStyle": "custom"
+				}
+			},
+			{
+				"path": "money/pay",
+				"style": {
+					"navigationBarTitleText": "支付"
+				}
+			},
+			{
+				"path": "money/paySuccess",
+				"style": {
+					"navigationBarTitleText": "支付成功"
+				}
+			},
+			{
+				"path": "address/SelAddress",
+				"style": {
+					"navigationBarTitleText": "收货地址"
+				}
+			},
+			{
+				"path": "address/address",
+				"style": {
+					"navigationBarTitleText": "收货地址"
+				}
+			}, {
+				"path": "address/addressManage",
+				"style": {
+					"navigationBarTitleText": ""
+				}
+			},
+			{
+				"path": "order/ReturnOrder",
+				"style": {
+					"navigationBarTitleText": "退款/售后"
+				}
+			},
+			{
+				"path": "order/order",
+				"style": {
+					"navigationBarTitleText": "我的订单"
+				}
+			},
+			{
+				"path": "order/orderT",
+				"style": {
+					"navigationBarTitleText": "项目订单"
+				}
+			},{
+				"path": "order/createOrder",
+				"style": {
+					"navigationBarTitleText": "确认订单"
+				}
+			},
+			{
+				"path": "order/createOrderT",
+				"style": {
+					"navigationBarTitleText": "确认订单"
+				}
+			},
+			{
+				"path": "order/orderDetail",
+				"style": {
+					"navigationBarTitleText": "订单详情",
+					"navigationStyle": "custom"
+				}
+			},
+			{
+				"path": "order/ReturnSales",
+				"style": {
+					"enablePullDownRefresh": true,
+					"navigationBarTitleText": "退货"
+				}
+			},
+			{
+				"path": "order/orderLogistics",
+				"style": {
+					"navigationBarTitleText": "订单跟踪"
+				}
+			}, {
+				"path": "Distribution/ApplyAudit",
+				"style": {
+					"navigationBarTitleText": "申请成为分销商"
+				}
+			},
+			{
+				"path": "Distribution/ApplyTerm",
+				"style": {
+					"navigationBarTitleText": "申请成为分销商"
+				}
+			},
+			{
+				"path": "Distribution/Application",
+				"style": {
+					"navigationBarTitleText": "提现详情"
+				}
+			},
+			{
+				"path": "Distribution/Ranking",
+				"style": {
+					"navigationBarTitleText": "排行榜",
+					"navigationStyle": "custom"
+				}
+			},
+			{
+				"path": "Distribution/Withdrawal",
+				"style": {
+					"navigationBarTitleText": "申请提现"
+				}
+			},
+			{
+				"path": "Distribution/Agreement",
+				"style": {
+					"navigationBarTitleText": "成为分销商协议"
+				}
+			},
+			{
+				"path": "Distribution/Distribution",
+				"style": {
+					"enablePullDownRefresh": true,
+					"navigationBarTitleText": "分销中心"
+				}
+			},
+			{
+				"path": "Distribution/Poster",
+				"style": {
+					"navigationBarTitleText": "海报"
+				}
+			},
+
+
+			{
+				"path": "Distribution/NotRecorded",
+				"style": {
+					"navigationBarTitleText": "待入账佣金"
+				}
+			},
+			{
+				"path": "Distribution/AddUpMoney",
+				"style": {
+					"navigationBarTitleText": "累计佣金"
+				}
+			},
+
+			{
+				"path": "Distribution/IncomeDetails",
+				"style": {
+					"navigationBarTitleText": "提现明细"
+				}
+			},
+			{
+				"path": "Distribution/MyGroup",
+				"style": {
+					"navigationBarTitleText": "我的团队"
+				}
+			},
+			{
+				"path": "Distribution/GradeDescription",
+				"style": {
+					"navigationBarTitleText": "等级说明"
+				}
+			},
+			// 分销商订单详情
+			{
+				"path": "Distribution/DorderDetail",
+				"style": {
+					"navigationBarTitleText": "订单详情",
+					"navigationStyle": "custom"
+				}
+			},
+
+			{
+				"path": "Distribution/DOrder",
+				"style": {
+					"navigationBarTitleText": "分销订单"
+				}
+			},
+			{
+				"path": "store/ChangeStore",
+				"style": {
+					"navigationBarTitleText": "选择门店",
+					"enablePullDownRefresh": true
+				}
+			},
+			// 商户入驻
+			{
+				"path": "store/Apply",
+				"style": {
+					"navigationBarTitleText": "商户入驻申请"
+				}
+			},
+			{
+				"path": "store/StoreList",
+				"style": {
+					"navigationBarTitleText": "商户列表"
+				}
+			},
+			{
+				"path": "store/StoreHome",
+				"style": {
+					"navigationBarTitleText": "商户主页",
+					"navigationStyle": "custom"
+				}
+			},
+			{
+				"path": "goodsGroup/index",
+				"style": {
+					"navigationBarTitleText": "组合套餐专场"
+				}
+			},
+			{
+				"path": "goodsGroup/goodsGroupDetail",
+				"style": {
+					"navigationBarTitleText": "套餐详情"
+				}
+			},
+			{
+				"path": "user/needSubmit",
+				"style": {
+					"navigationBarTitleText": "需求提报"
+				}
+			},
+			{
+				"path": "money/Balance",
+				"style": {
+					"navigationBarTitleText": "我的余额"
+				}
+			},
+			{
+				"path": "money/CustomerBalanceDetail",
+				"style": {
+					"navigationBarTitleText": "余额明细表"
+				}
+			},
+			{
+				"path": "money/BalanceDetail",
+				"style": {
+					"navigationBarTitleText": "余额明细"
+				}
+			},
+			{
+				"path": "money/addWithdrawal",
+				"style": {
+					"navigationBarTitleText": "提现"
+				}
+			},
+			{
+				"path": "money/PayPasswordEditCheck",
+				"style": {
+					"navigationBarTitleText": "验证身份",
+					"navigationStyle": "custom"
+				}
+			},
+			{
+				"path": "money/PayPassword",
+				"style": {
+					"navigationBarTitleText": "设置支付密码",
+					"navigationStyle": "custom"
+				}
+			},
+			{
+				"path": "money/PayPasswordAgin",
+				"style": {
+					"navigationBarTitleText": "确认支付密码",
+					"navigationStyle": "custom"
+				}
+			},
+			{
+				"path": "pointsMall/index",
+				"style": {
+					"navigationBarTitleText": "股权商城",
+					"enablePullDownRefresh": true //开启下拉刷新
+				}
+			},
+			{
+				"path": "pointsMall/PointsDetail",
+				"style": {
+					"navigationBarTitleText": "股权明细",
+					"enablePullDownRefresh": true //开启下拉刷新
+				}
+			},
+			{
+				"path": "pointsMall/ExchangeLog",
+				"style": {
+					"navigationBarTitleText": "兑换记录",
+					"enablePullDownRefresh": true //开启下拉刷新
+				}
+			},
+			{
+				"path": "pointsMall/ExchangeOrder",
+				"style": {
+					"navigationBarTitleText": "确认兑换",
+					"enablePullDownRefresh": true //开启下拉刷新
+				}
+			},
+			{
+				"path": "pointsMall/ExchangeOrderDetail",
+				"style": {
+					"navigationBarTitleText": "兑换详情",
+					"navigationStyle": "custom"
+				}
+			},
+			{
+				"path": "pointsMall/IntegralGoodsDetail",
+				"style": {
+					"enablePullDownRefresh": true,
+					"navigationBarTitleText": "股权商品详情",
+					"navigationStyle": "custom",
+					"app-plus": {
+						"titleNView": {
+							"type": "transparent"
+						}
+					}
+				}
+			}
+		]
+	}],
+	"globalStyle": {
+		"navigationBarTextStyle": "black",
+		"navigationBarTitleText": "",
+		"navigationBarBackgroundColor": "#FFFFFF",
+		"backgroundColor": "#f8f8f8"
+	},
+	"tabBar": {
+		"borderStyle": "white",
+		"backgroundColor": "#ffffff",
+		"color": "#999999",
+		"selectedColor": "#ff2d2d",
+		"list": [{
+				"pagePath": "pages/index/index",
+				"iconPath": "static/img/tabbar-icon/home.png",
+				"selectedIconPath": "static/img/tabbar-icon/home-action.png",
+				"text": "首页"
+			},
+			{
+				"pagePath": "pages/classification/cate",
+				"iconPath": "static/img/tabbar-icon/cate.png",
+				"selectedIconPath": "static/img/tabbar-icon/cate-action.png",
+				"text": "分类"
+			},
+			{
+				"pagePath": "pages/cart/cart",
+				"iconPath": "static/img/tabbar-icon/cart.png",
+				"selectedIconPath": "static/img/tabbar-icon/cart-action.png",
+				"text": "购物车"
+			},
+			{
+				"pagePath": "pages/user/user",
+				"iconPath": "static/img/tabbar-icon/user.png",
+				"selectedIconPath": "static/img/tabbar-icon/user-action.png",
+				"text": "我的"
+			}
+		]
+	},
+	"condition": { //模式配置,仅开发期间生效
+		"current": 0, //当前激活的模式(list 的索引项)
+		"list": [{
+			"name": "", //模式名称
+			"path": "", //启动页面,必选
+			"query": "" //启动参数,在页面的onLoad函数里面得到
+		}]
+	}
+}

+ 817 - 0
pages/cart/cart.vue

@@ -0,0 +1,817 @@
+<template>
+	<view :class="['qn-page-' + theme]">
+		<view class="container">
+			<Aempty text="您购物车暂无商品,快去加购吧~" src="https://onlineimg.qianniao.vip/car.png" v-if="!isLogin || (invalidData.length === 0 && goodsData.length === 0)"></Aempty>
+			<view v-else>
+				<!-- 列表 goodsData -->
+				<view class="card" v-for="(item, index) in goodsData" :key="index">
+					<view class="box clearfix">
+						<text
+							@click="checkShop(item.checkedShop, item.shopId, 2, item)"
+							class="ibonfont"
+							:class="[item.checkedShop ? 'ibonxuanze_xuanzhong primary-color' : 'ibonxuanze']"
+						></text>
+						<text class="title">{{ item.shopName }}</text>
+					</view>
+					<view class="cart-list">
+						<u-swipe-action
+							class="uniSwipe"
+							:options="options"
+							v-for="(goods, goodsindex) in item.shopGoodsData"
+							:key="goodsindex"
+							:show="goods.isShow"
+							:index="goodsindex"
+							@open="openItem(index, goodsindex)"
+							@click="deleteCartItem([goods.cartId], goods)"
+						>
+							<view class="cart-item clearfix">
+								<!-- 是否选中 -->
+								<text
+									@click="checkShop(goods.selection === 5, goods.cartId, 1, goods, item)"
+									class="ibonfont float_left"
+									:class="[goods.selection === 5 ? 'ibonxuanze_xuanzhong primary-color' : 'ibonxuanze']"
+								></text>
+								<view class="image-wrapper float_left" @click="goPage(`/pagesT/product/product?id=${goods.goodsId}`)">
+									<!-- 图片 -->
+									<image :src="goods.goodsImages" mode="aspectFill" />
+								</view>
+								<!-- 标题 -->
+								<view class="item-right float_left">
+									<text class="title" @click="goPage(`/pagesT/product/product?id=${goods.goodsId}`)">{{ goods.goodsName }}</text>
+									<view class="attr" @click="goPage(`/pagesT/product/product?id=${goods.goodsId}`)">
+										<block v-if="goods.specGroup && goods.specGroup.length">
+											<text>规格:</text>
+											<text v-for="(sku, skui) in goods.specGroup" :key="skui" style="padding-right: 4upx;">{{ sku.specValueName }};</text>
+										</block>
+									</view>
+									<view class="BotStyle clearfix">
+										<view class="price float_left primary-color">
+											<text class="icon-rmb">¥</text>
+											<view style="display: inline-block;"><rich-text :nodes="$_utils.splitPrice(goods.price)"></rich-text></view>
+											<text style="font-size: 20rpx;">/{{ goods.unitName }}</text>
+										</view>
+										<view v-if="goods.isActivity === 5" class="activity-tag float_left primary-bg">活动价</view>
+										<view class="float_right clearfix number-box">
+											<block v-if="goods.isDistribution === 5">
+												<!-- 开启预售不验证最大值 -->
+												<u-number-box
+													:bg-color="primaryColor"
+													color="#fff"
+													:value="goods.buyNum"
+													:input-height="44"
+													:min="goods.setNum"
+													@blur="numberChange($event, goods)"
+													@plus="clacAdd($event, goods)"
+													@minus="clacSusubtract($event, goods)"
+												></u-number-box>
+											</block>
+											<block v-else>
+												<!-- 未开启预售最大值为库存数 -->
+												<u-number-box
+													:bg-color="primaryColor"
+													color="#fff"
+													:value="goods.buyNum"
+													:input-height="44"
+													:max="Number(goods.inventoryNum)"
+													:min="goods.setNum"
+													@blur="numberChange($event, goods)"
+													@plus="clacAdd($event, goods)"
+													@minus="clacSusubtract($event, goods)"
+												></u-number-box>
+											</block>
+										</view>
+									</view>
+								</view>
+							</view>
+						</u-swipe-action>
+					</view>
+				</view>
+				<view class="card invalid-card" v-if="invalidData.length">
+					<view class="clearfix invalid-view">
+						<text class="float_left invalid-tit">失效商品({{ invalidData.length }})</text>
+						<text class="float_right invalid-btn primary-color" @click="clearInvalid">清空失效商品</text>
+					</view>
+					<view class="cart-list" v-for="(goods, goodsindex) in invalidData" :key="goodsindex">
+						<view class="cart-item clearfix">
+							<!-- 是否选中 -->
+							<view class="image-wrapper float_left">
+								<view class="invalid-tag"><text>已失效</text></view>
+								<!-- 图片 -->
+								<image :src="goods.goodsImages" mode="aspectFill" />
+							</view>
+							<!-- 标题 -->
+							<view class="item-right float_left">
+								<view class="title ellipsis">{{ goods.goodsName }}</view>
+								<view class="invalid-msg">{{ goods.invalidMsg }}</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<!-- 优惠券面板 -->
+		</view>
+		<!-- 底部菜单栏 -->
+		<view class="action-section" v-if="isLogin" :style="{ bottom: isBang ? '170rpx' : '100rpx' }">
+			<view class="action-section-main">
+				<view class="checkbox clearfix">
+					<text @click="checkShop(allChecked, '', 3)" class="ibonfont float_left" :class="[allChecked ? 'ibonxuanze_xuanzhong primary-color' : 'ibonxuanze']"></text>
+					<view class="all-btn float_right" :class="{ show: allChecked }">
+						<text @click="checkShop(allChecked, '', 3)">全选</text>
+						<!-- #ifdef MP -->
+						<text style="margin-left: 24upx;" @click="is_edit = !is_edit">{{ is_edit ? '完成' : '编辑' }}</text>
+						<!-- #endif -->
+					</view>
+				</view>
+				<view class="total-box" v-if="!is_edit">
+					<view>
+						<text class="total-text">合计:</text>
+						<text class="price primary-color">¥{{ $_utils.formatNub(goodsDataAll.payMoney) || 0 }}</text>
+					</view>
+					<!-- 说明 -->
+					<view class="freeExpressPrice" v-if="!goodsDataAll.totalMoney && startDeliveryPrice" @click="goPage('/pages/classification/cate', 'switchTab')">
+						<text>满{{ startDeliveryPrice }}元起送,先去逛逛</text>
+						<u-icon name="arrow-right" size="20"></u-icon>
+					</view>
+					<view
+						class="freeExpressPrice"
+						v-else-if="startDeliveryPrice && goodsDataAll.totalMoney < startDeliveryPrice"
+						@click="goPage('/pages/classification/cate', 'switchTab')"
+					>
+						<text>还差{{ $NP.minus(startDeliveryPrice, goodsDataAll.totalMoney) }}元起送,再去逛逛</text>
+						<u-icon name="arrow-right" size="20"></u-icon>
+					</view>
+
+					<view class="freeExpressPrice" v-else-if="freeExpressPrice > 0" @click="goPage('/pages/classification/cate', 'switchTab')">
+						还差{{ freeExpressPrice.toFixed(2) }}元免运费,去凑单
+						<u-icon name="arrow-right" size="20"></u-icon>
+					</view>
+					<!--  v-else-if="goodsDataAll.preferential > 0"  -->
+					<view class="freeExpressPrice" v-else @click="goPage('/pages/classification/cate', 'switchTab')">
+						总额:¥{{ goodsDataAll.totalMoney || 0 }} 活动优惠:-¥{{ goodsDataAll.preferential || 0 }}
+					</view>
+				</view>
+				<view v-if="!is_edit" @click="createOrder" class="confirm-btn primary-bg">
+					<text v-if="!goodsDataAll.totalMoney">随便逛逛</text>
+					<text v-else-if="goodsDataAll.totalMoney < startDeliveryPrice">去凑单</text>
+					<text v-else>去结算</text>
+					<!--  ({{ goodsDataAll.checkNum || 0 }}) -->
+				</view>
+				<text v-if="is_edit" class="del-goods-btn" @click="delSelect">删除</text>
+			</view>
+		</view>
+		<!-- 底部tabbar -->
+		<Tabbar v-model="tab_current"></Tabbar>
+	</view>
+</template>
+<script>
+import Login from '@/components/Login.vue';
+export default {
+	components: {
+		Login
+	},
+	data() {
+		return {
+			tab_current: 2,
+			is_edit: false,
+			totalMoney: 0, //总价格
+			buyNum: 1, //更新购物数字
+			checkedShop: false, //商铺选择
+			allChecked: false, //全选状态  true|false
+			empty: false, //空白页现实  true|false
+			goodsData: [], //店铺列表
+			invalidData: [], //失效商品
+			shopGoodsData: [], //商品列表
+			options: [
+				{
+					text: '删除',
+					style: {
+						backgroundColor: 'rgb(255,58,49)'
+					}
+				}
+			],
+			goodsDataAll: {
+				activityMoney: '0.00',
+				cartNum: 0,
+				checkNum: 0,
+				expressMoney: 0,
+				goodsData: [],
+				goodsNum: 0,
+				invalidData: [],
+				payMoney: '0.00',
+				preferential: '0.00',
+				totalMoney: '0.00',
+				vipDiscount: 0,
+				vipDoubleDiscount: 0
+			}
+		};
+	},
+	// #ifdef APP-PLUS || H5
+	onNavigationBarButtonTap(obj) {
+		var currentWebview = this.$mp.page.$getAppWebview();
+		var tn = currentWebview.getStyle().titleNView;
+		// 修改buttons
+		// index: 按钮索引, style {WebviewTitleNViewButtonStyles }
+		if (!this.is_edit) {
+			this.is_edit = true;
+			tn.buttons[0].text = '完成'; //[0] 按钮的下标
+			currentWebview.setStyle({
+				titleNView: tn
+			});
+		} else if (this.is_edit) {
+			// console.log(132312);
+			this.is_edit = false;
+			tn.buttons[0].text = '编辑'; //[0] 按钮的下标
+			currentWebview.setStyle({
+				titleNView: tn
+			});
+		}
+	},
+	// #endif
+
+	watch: {
+		'$store.state.locationObj'(val) {
+			if (JSON.stringify(val) === '{}') {
+				this.getAuthorizeInfo();
+				return;
+			}
+			if (this.isLogin) {
+				this.getCartByUserCenterId();
+			}
+		},
+		isLogin(val) {
+			if (val) {
+				this.getCartByUserCenterId();
+			}
+		}
+	},
+	computed: {
+		// 判断市场常见的几种刘海屏机型 true为刘海机型
+		isBang() {
+			return this.$_utils.modelmes();
+		},
+		isLogin() {
+			return this.$store.state.hasLogin;
+		},
+		startDeliveryPrice() {
+			return this.$store.state.baseSet.startDeliveryPrice || 0;
+		},
+		freeExpressPrice() {
+			const freeExpressPrice = this.$store.state.baseSet.freeExpressPrice || 0;
+			return this.$NP.minus(freeExpressPrice, this.goodsDataAll.totalMoney);
+		}
+	},
+	onLoad() {
+		if (JSON.stringify(this.$store.state.locationObj) === '{}') {
+			this.getAuthorizeInfo();
+		}
+		// #ifdef MP-WEIXIN
+		// 小程序的原生菜单中显示分享按钮
+		uni.showShareMenu({
+			withShareTicket: false,
+			menus: ['shareAppMessage', 'shareTimeline']
+		});
+		// #endif
+	},
+
+	onShow() {
+		if (this.$store.state.hasLogin) {
+			this.getCartByUserCenterId();
+		}
+	},
+	onPullDownRefresh() {
+		if (this.isLogin) {
+			this.getCartByUserCenterId();
+		} else {
+			uni.stopPullDownRefresh();
+		}
+	},
+	methods: {
+		// 点击添加clacAdd
+		clacAdd(e, goods) {
+			if (goods.selection === 5) {
+				this.goodsDataAll.totalMoney = this.$NP.plus(Number(this.goodsDataAll.totalMoney), Number(goods.price));
+			}
+
+			this.updateBuyNum(goods.cartId, e.value);
+		},
+		// 点击减少数量
+		clacSusubtract(e, goods) {
+			// if (goods.buyNum === 1) {
+			// 	this.$api.msg('商品数量不可以再减少了哦');
+			// 	return;
+			// }
+			if (goods.selection === 5) {
+				this.goodsDataAll.totalMoney = this.$NP.minus(Number(this.goodsDataAll.totalMoney), Number(goods.price));
+			}
+
+			this.updateBuyNum(goods.cartId, e.value);
+		},
+		// 手动输入
+		numberChange(e, goods) {
+			if (e.value <= 0) {
+				this.$api.msg('请输入正确的数量');
+				return;
+			}
+			this.updateBuyNum(goods.cartId, e.value);
+		},
+		// 更新购物车数量 updateBuyNum
+		updateBuyNum(id, buyNum) {
+			this.$u.api
+				.updateBuyNum(id, {
+					buyNum: buyNum
+				})
+				.then(res => {
+					this.getCartByUserCenterId();
+				})
+				.catch(() => {
+					this.getCartByUserCenterId();
+				});
+		},
+		//请求数据 获取商品列表
+		getCartByUserCenterId() {
+			this.$u.api.getCartByUserCenterId().then(({ data }) => {
+				uni.stopPullDownRefresh();
+				if (Array.isArray(data)) {
+					this.goodsDataAll = {
+						activityMoney: '0.00',
+						cartNum: 0,
+						checkNum: 0,
+						expressMoney: 0,
+						goodsData: [],
+						goodsNum: 0,
+						invalidData: [],
+						payMoney: '0.00',
+						preferential: '0.00',
+						totalMoney: '0.00',
+						vipDiscount: 0,
+						vipDoubleDiscount: 0
+					};
+					this.goodsData = [];
+					this.invalidData = [];
+					this.$store.commit('commit_cartNum', 0);
+					this.$store.commit('commit_cartPrice', 0);
+					return;
+				}
+				this.goodsDataAll = data;
+				this.invalidData = data.invalidData || [];
+				if (data.goodsData && data.goodsData.length) {
+					data.goodsData.forEach(item => {
+						item.checkedShop = item.shopGoodsData.every(itemG => itemG.selection === 5);
+						item.shopGoodsData.forEach(goods => {
+							goods.isShow = false;
+						});
+					});
+					this.goodsData = data.goodsData;
+					this.allChecked = this.goodsData.every(item => item.checkedShop);
+				} else {
+					this.goodsData = [];
+				}
+				this.$store.commit('commit_cartNum', data.goodsNum);
+				this.$store.commit('commit_cartPrice', data.totalMoney);
+			});
+		},
+		//  打开swipeAction
+		openItem(i, gi) {
+			// 先将正在被操作的swipeAction标记为打开状态,否则由于props的特性限制,
+			// 原本为'false',再次设置为'false'会无效
+			let target = this.$u.deepClone(this.goodsData);
+			target[i].shopGoodsData[gi].isShow = true;
+			this.goodsData = target;
+		},
+		// 选中切换
+		// type 1 单商品;2 店铺切换;3 全选切换
+		async checkShop(checked, id, type, row, PRow) {
+			const selection = checked ? 4 : 5;
+			const params = {
+				selection: selection,
+				type: type
+			};
+			if (type === 1) {
+				params.cartId = id;
+				// 前端手动把选择标示进行切换,优化操作体验
+				row.selection = selection;
+				PRow.checkedShop = PRow.shopGoodsData.every(itemG => itemG.selection === 5);
+				this.allChecked = this.goodsData.every(item => item.checkedShop);
+			} else if (type === 2) {
+				params.shopId = id;
+				// 前端手动把选择标示进行切换,优化操作体验
+				row.checkedShop = !checked;
+				row.shopGoodsData.forEach(item => {
+					item.selection = selection;
+				});
+				this.allChecked = this.goodsData.every(item => item.checkedShop);
+			} else {
+				// 前端手动把选择标示进行切换,优化操作体验
+				this.allChecked = !checked;
+				this.goodsData.forEach(item => {
+					item.checkedShop = !checked;
+					item.shopGoodsData.forEach(goods => {
+						goods.selection = selection;
+					});
+				});
+			}
+			this.$u.api
+				.updateSelection({
+					...params
+				})
+				.then(res => {
+					this.getCartByUserCenterId();
+				});
+		},
+		// 移出商品
+		delSelect() {
+			let chooseGoods = [];
+			this.goodsData.forEach(item => {
+				item.shopGoodsData.forEach(itemC => {
+					if (itemC.selection === 5) {
+						chooseGoods.push(itemC.cartId);
+					}
+				});
+			});
+			this.deleteCartItem(chooseGoods);
+		},
+		// 清空失效
+		clearInvalid() {
+			let chooseGoods = this.invalidData.map(item => {
+				return item.cartId;
+			});
+			this.deleteCartItem(chooseGoods);
+		},
+		// deleteCartItem 删除
+		deleteCartItem(cartId, row, index, gIndex) {
+			if (cartId.length === 0) {
+				this.$api.msg('请选择要删除的商品');
+				return;
+			}
+			uni.showModal({
+				title: '提示',
+				content: '你确定将此产品移除购物车',
+				success: res => {
+					if (res.confirm) {
+						this.$u.api
+							.delCart({
+								cartId: cartId
+							})
+							.then(res => {
+								this.getCartByUserCenterId();
+							});
+					}
+				}
+			});
+		},
+		//创建订单
+		createOrder() {
+			// if (this.$store.state.baseSet.personnelReview === 5) {
+			// 验证账户状态
+			this.userAudit();
+			if (!this.isUserAudit) {
+				return;
+			}
+			// }
+			if (!this.goodsDataAll.totalMoney) {
+				this.goPage('/pages/classification/cate', 'switchTab');
+				return;
+			}
+			if (this.startDeliveryPrice && this.goodsDataAll.totalMoney < this.startDeliveryPrice) {
+				// this.$api.msg('请选择要结算的商品');
+				this.goPage('/pages/classification/cate', 'switchTab');
+				return;
+			}
+			if (!this.goodsDataAll.checkNum) {
+				this.$api.msg('请选择要结算的商品');
+				return;
+			}
+			let isSub = true;
+			for (let i in this.goodsData) {
+				let item = this.goodsData[i];
+				for (let g in item.shopGoodsData) {
+					let goods = item.shopGoodsData[g];
+					if (goods.selection === 5 && goods.isInvalid === 4) {
+						isSub = false;
+						break;
+					}
+				}
+			}
+			if (!isSub) {
+				this.$api.msg('抱歉,您要结算的商品中包含失效商品,请取消后再次进行提交');
+				return;
+			}
+			uni.navigateTo({
+				url: `/pagesT/order/createOrder`
+			});
+		}
+	},
+	onShareAppMessage(options) {
+		return {
+			title: this.$store.state.baseSet.shop,
+			path: '/pages/index/index?businessmanId=' + (this.$store.state.userStatus.id||''),
+			success: res => {
+				console.log(res);
+			}
+		};
+	},
+	// #ifdef MP-WEIXIN
+	// 分享到朋友圈
+	onShareTimeline(obj) {},
+	// 收藏小程序
+	onAddToFavorites() {}
+	// #endif
+};
+</script>
+
+<style lang="scss">
+.box {
+	border-bottom: 1px solid #eeeeee;
+	.title {
+		font-size: 28upx;
+		font-weight: 510;
+		padding-left: 24upx;
+		line-height: 94rpx;
+		color: #3c3c3c;
+	}
+	.ibonfont {
+		display: inline-block;
+		color: #cccccc;
+		font-size: 36rpx;
+	}
+}
+.container {
+	padding-bottom: 100upx;
+}
+
+/* 购物车列表项 */
+.card {
+	background: #ffffff;
+	padding: 0 48upx 32rpx;
+	margin-bottom: 20rpx;
+}
+.total-view {
+	text-align: right;
+	font-size: 32upx;
+	color: #999;
+	padding: 24upx 0;
+
+	.price {
+		color: $price-color;
+		font-size: 30upx;
+		font-weight: 510;
+	}
+}
+
+.uniSwipe:last-child {
+	.cart-item {
+		border-bottom: 0 none;
+	}
+}
+.cart-item {
+	padding-top: 24upx;
+	.ibonfont {
+		transform: translateY(60upx);
+		color: #cccccc;
+		font-size: 36rpx;
+		display: inline-block;
+		width: 34rpx;
+		height: 34rpx;
+		margin-right: 16upx;
+	}
+	.image-wrapper {
+		width: 152upx;
+		height: 152upx;
+
+		background-color: #eef3f4;
+		border-radius: 12upx;
+		image {
+			width: 100%;
+			height: 100%;
+			border-radius: 12upx;
+		}
+	}
+	.item-right {
+		margin-left: 16upx;
+		width: 430rpx;
+		position: relative;
+		.del-btn {
+			padding: 4upx 10upx;
+			font-size: 30upx;
+			height: 50upx;
+			color: $font-color-light;
+			position: absolute;
+			top: 0;
+			right: 20upx;
+		}
+		.title {
+			color: #3c3c3c;
+			font-size: 28upx;
+			height: 40upx;
+			line-height: 40upx;
+			text-overflow: -o-ellipsis-lastline;
+			overflow: hidden;
+			text-overflow: ellipsis;
+			display: -webkit-box;
+			-webkit-line-clamp: 1;
+			line-clamp: 2;
+			-webkit-box-orient: vertical;
+			font-weight: 510;
+		}
+		.attr {
+			font-size: 24upx;
+			font-weight: 400;
+			color: #9b9b9b;
+			height: 32rpx;
+			margin: 8rpx 0;
+			line-height: 32rpx;
+		}
+		.price {
+			color: $price-color;
+			font-size: 40upx;
+			font-weight: 510;
+			font-family: DIN-Medium;
+		}
+		.activity-tag {
+			width: 76rpx;
+			font-size: 20rpx;
+			color: #ffffff;
+			height: 32rpx;
+			line-height: 32rpx;
+			text-align: center;
+			border-radius: 6rpx;
+			margin-left: 10rpx;
+			margin-top: 16rpx;
+		}
+	}
+}
+/* 底部栏 */
+.action-section {
+	position: fixed;
+	left: 0upx;
+	bottom: 100upx;
+	z-index: 95;
+	width: 100%;
+	height: 100rpx;
+	background-color: #ffffff;
+	.delivery-tip {
+		font-size: 22upx;
+		background-color: #fdf6ec;
+		color: #d48d24;
+		text-align: center;
+		line-height: 42upx;
+	}
+	.action-section-main {
+		padding: 0 0 0 32upx;
+		height: 100upx;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		.checkbox {
+			height: 52upx;
+			image {
+				width: 30upx;
+				height: 100%;
+				z-index: 5;
+			}
+			.ibonfont {
+				font-size: 36rpx;
+				display: inline-block;
+				width: 34rpx;
+				height: 34rpx;
+				color: #cccccc;
+				transform: translateY(10rpx);
+			}
+		}
+		.all-btn {
+			color: #6c6c6c;
+			font-size: 24upx;
+			line-height: 60upx;
+			padding-left: 12upx;
+			font-weight: 400;
+		}
+		.total-box {
+			flex: 1;
+			text-align: right;
+			.total-text {
+				color: #3c3c3c;
+				font-size: 24upx;
+				font-weight: 400;
+			}
+			.price {
+				font-size: 36upx;
+				color: $price-color;
+				font-weight: 600;
+			}
+			.freeExpressPrice {
+				font-size: 20rpx;
+				color: #9c9c9c;
+			}
+		}
+		.confirm-btn {
+			height: 52upx;
+			line-height: 52upx;
+			color: #ffffff;
+			background-color: #f63434;
+			text-align: center;
+			border-radius: 52upx;
+			padding: 0 30rpx;
+			margin: 0 24rpx;
+			font-size: 28rpx;
+		}
+		.diff-price {
+			font-size: 24upx;
+			color: #666;
+			line-height: 90upx;
+			padding-right: 10upx;
+		}
+
+		.del-goods-btn {
+			width: 140upx;
+			height: 60upx;
+			line-height: 60upx;
+			border: 1px solid #fd463e;
+			color: #fd463e;
+			font-size: 26upx;
+			text-align: center;
+			border-radius: 6upx;
+			margin-right: 24upx;
+		}
+	}
+}
+
+/* 复选框选中状态 */
+.action-section .checkbox.checked,
+.cart-item .checkbox.checked {
+	color: #fd463e;
+}
+
+.invalid-card {
+	background: #ffffff;
+	border-radius: 12upx;
+	margin: 0 auto 24upx;
+	padding: 0 24rpx 24rpx;
+	width: 702rpx;
+	.invalid-view {
+		line-height: 94rpx;
+		border-bottom: 1px solid #eeeeee;
+		.invalid-tit {
+			font-size: 28upx;
+			font-weight: 510;
+			color: #3c3c3c;
+		}
+
+		.invalid-btn {
+			font-size: 24upx;
+			color: $uni-color-error;
+		}
+	}
+	.cart-list {
+		.cart-item {
+			.image-wrapper {
+				position: relative;
+				.invalid-tag {
+					position: absolute;
+					left: 50%;
+					top: 50%;
+					transform: translate(-50%, -50%);
+					width: 100rpx;
+					height: 100rpx;
+					background-color: rgba($color: #000000, $alpha: 0.5);
+					font-size: 20rpx;
+					color: #eeeeee;
+					font-weight: 300;
+					border-radius: 100%;
+					text {
+						position: absolute;
+						left: 50%;
+						top: 50%;
+						transform: translate(-50%, -50%);
+						text-align: center;
+						display: block;
+						width: 88rpx;
+						height: 88rpx;
+						line-height: 90rpx;
+						border-radius: 100%;
+						border: 2rpx solid #cccccc;
+					}
+				}
+			}
+			.item-right {
+				position: relative;
+				height: 152rpx;
+				.title {
+					height: 66rpx;
+					font-size: 24rpx;
+					font-weight: 400;
+					color: #9b9b9b;
+					line-height: 33rpx;
+				}
+				.invalid-msg {
+					position: absolute;
+					left: 0;
+					bottom: 0;
+					font-size: 24rpx;
+					font-weight: 400;
+					color: #3c3c3c;
+				}
+			}
+		}
+	}
+}
+</style>

+ 326 - 0
pages/classification/CateFive.vue

@@ -0,0 +1,326 @@
+<template>
+	<view class="clearfix" :class="['qn-page-' + theme]">
+		<view class="float_left">
+			<scroll-view scroll-y class="left-aside" :style="{ height: 'calc(100vh - 112rpx - ' + (isBang ? '84px' : '50px') + ')' }">
+				<view v-for="item in cate_list" :key="item.id" class="f-item b-b ellipsis" :class="{ active: item.id === current_item.id }" @click="tabtap(item)">
+					<view v-if="item.id === current_item.id" class="active-line primary-bg"></view>
+					{{ item.title }}
+				</view>
+			</scroll-view>
+		</view>
+		<view class="float_right">
+			<!-- 二级下拉菜单 -->
+			<view class="two-cate">
+				<scroll-view :scroll-x="true" scroll-with-animation class="two-cate-scroll" :scroll-left="two_cate_scroll">
+					<view
+						v-for="(item, index) in current_item.children"
+						:key="index"
+						:class="[tow_current === index ? 'primary-btn-pain' : '']"
+						class="cate-two-li"
+						@click="twoCateChange(index, item)"
+					>
+						{{ item.title }}
+					</view>
+				</scroll-view>
+			</view>
+			<scroll-view
+				scroll-y
+				scroll-with-animation
+				class="right-aside"
+				:style="{ height: 'calc(100vh - 188rpx - ' + (isBang ? '84px' : '50px') + ')' }"
+				:scroll-top="scroll_right_top"
+				@scroll="rightScroll"
+			>
+				<view v-for="(titem, tindex) in current_item.children" :key="tindex" class="cate-ul" :id="'item' + tindex">
+					<block v-if="titem.children.length">
+						<view class="cate-name">{{ titem.title }}</view>
+						<view class="clearfix">
+							<view
+								class="cate-li"
+								v-for="(item, index) in titem.children"
+								:key="index"
+								@click="goPage('/pagesT/productDetail/productDetail?id=' + item.id + '&name=' + item.title)"
+							>
+								<view class="cate-img-view">
+									<image v-if="item.images" :src="item.images" mode="aspectFill" class="cate-img"></image>
+									<view class="ibonfont ibonleimupinleifenleileibie cate-img-icon" v-else></view>
+								</view>
+								<view class="cate-tit ellipsis">{{ item.title }}</view>
+							</view>
+						</view>
+					</block>
+				</view>
+			</scroll-view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			cate_list: [],
+			tow_current: 0,
+			current_item: {},
+			scroll_right_top: 0, // 右边三级分类栏目scroll-view的滚动条高度
+			old_scroll_top: 0,
+			option_arr: [], // 把3级分类的每一块位置信息存储到数组中
+			two_cate_scroll: 0, // 2级分类滚动
+			menu_width: 0, // 2级分类菜单的宽度
+			menu_item_width: 0, // 2级分类菜单item的宽度
+			timer: null, // 定时器
+			menu_height: 0 // 3级菜单高度
+		};
+	},
+	computed: {
+		isBang() {
+			return this.$_utils.modelmes();
+		},
+		userId() {
+			return this.$store.state.userStatus.id;
+		}
+	},
+	created() {
+		this.getAllCategory();
+	},
+	methods: {
+		// 分类列表 getAllCategory
+		getAllCategory() {
+			this.$u.api
+				.getAllCategory({
+					userCenterId: this.userId || 0
+				})
+				.then(({ data }) => {
+					this.cate_list = data;
+					if (data.length) {
+						this.current_item = data[0];
+					}
+					this.getMenuItemTop();
+				});
+		},
+		// 一级分类切换
+		tabtap(row) {
+			this.current_item = row;
+			this.tow_current = 0;
+		},
+		// 2级分类切换
+		async twoCateChange(index, row) {
+			if (this.option_arr.length == 0) {
+				await this.getMenuItemTop();
+			}
+			if (row.id == this.two_id) return;
+			this.scroll_right_top = this.old_scroll_top;
+			this.$nextTick(() => {
+				this.scroll_right_top = this.option_arr[index];
+				this.tow_current = index;
+				this.twoMenuStatus(index, 1);
+			});
+		},
+		// 3级分类列表滚动
+		async rightScroll(e) {
+			this.old_scroll_top = e.detail.scrollTop;
+			// if(this.option_arr.length == 0) {
+			// 	await this.getMenuItemTop();
+			// }
+			// if(this.timer) return ;
+			// if(!this.menu_height) {
+			// 	await this.getElRect('right-aside', 'menu_height','height');
+			// }
+			// setTimeout(() => { // 节流
+			// 	this.timer = null;
+			// 	// scrollHeight为右边菜单垂直中点位置
+			// 	let scrollHeight = e.detail.scrollTop + this.menu_height / 2;
+			// 	for (let i = 0; i < this.option_arr.length; i++) {
+			// 		let height1 = this.option_arr[i];
+			// 		let height2 = this.option_arr[i + 1];
+			// 		// 如果不存在height2,意味着数据循环已经到了最后一个,设置2级菜单为最后一项即可
+			// 		if (!height2 || scrollHeight >= height1 && scrollHeight < height2) {
+			// 			this.twoMenuStatus(i);
+			// 			return ;
+			// 		}
+			// 	}
+			// }, 10)
+		},
+		// 设置2级分类的滚动状态
+		async twoMenuStatus(index) {
+			this.tow_current = index;
+			// 如果为0,意味着尚未初始化
+			if (this.menu_width == 0 || this.menu_item_width == 0) {
+				await this.getElRect('two-cate-scroll', 'menu_width', 'width');
+				await this.getElRect('cate-two-li', 'menu_item_width', 'width');
+			}
+			// 将菜单活动item居中
+			this.two_cate_scroll = index * this.menu_width + this.menu_item_width / 2 - this.menu_width / 2;
+		},
+		// 获取3级分类列表菜单每个item到顶部的距离
+		getMenuItemTop() {
+			new Promise(resolve => {
+				let selectorQuery = uni.createSelectorQuery().in(this);
+				//添加节点的布局位置的查询请求
+				selectorQuery
+					.selectAll('.cate-ul')
+					.boundingClientRect(rects => {
+						// 如果节点尚未生成,rects值为[](因为用selectAll,所以返回的是数组),循环调用执行
+						if (!rects.length) {
+							setTimeout(() => {
+								this.getMenuItemTop();
+							}, 10);
+							return;
+						}
+						rects.forEach(rect => {
+							// 这里减去rects[0].top,是因为第一项顶部可能不是贴到导航栏(比如有个搜索框的情况)
+							this.option_arr.push(rect.top - rects[0].top);
+							resolve();
+						});
+					})
+					.exec();
+			});
+		},
+		// 获取一个目标元素的宽度
+		getElRect(elClass, dataVal, option) {
+			new Promise((resolve, reject) => {
+				const query = uni.createSelectorQuery().in(this);
+				query
+					.select('.' + elClass)
+					.fields(
+						{
+							size: true
+						},
+						res => {
+							// 如果节点尚未生成,res值为null,循环调用执行
+							if (!res) {
+								setTimeout(() => {
+									this.getElRect(elClass, dataVal);
+								}, 10);
+								return;
+							}
+							this[dataVal] = res[option];
+							resolve();
+						}
+					)
+					.exec();
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.left-aside {
+	width: 200upx;
+	background-color: #f5f6f7;
+	/* #ifdef H5||MP */
+	height: calc(100vh - 130upx);
+	/*#endif*/
+	/* #ifdef APP-PLUS */
+	height: 100vh;
+	/*#endif*/
+	.f-item {
+		-webkit-line-clamp: 1;
+		width: 100%;
+		height: 80upx;
+		line-height: 80rpx;
+		padding-left: 48rpx;
+		margin-bottom: 10rpx;
+		font-size: 26upx;
+		color: #4b4b4b;
+		position: relative;
+
+		&.active {
+			color: #000000;
+			font-size: 32upx;
+			font-weight: bold;
+			background-color: #ffffff;
+			border-radius: 100rpx 0 0 100rpx;
+		}
+		.active-line {
+			position: absolute;
+			left: 28rpx;
+			top: 50%;
+			transform: translateY(-50%);
+			height: 24upx;
+			width: 4upx;
+			border-radius: 4rpx;
+		}
+	}
+}
+.two-cate {
+	.two-cate-scroll {
+		width: 550upx;
+		padding: 14rpx 0;
+		white-space: nowrap;
+		.cate-two-li {
+			padding: 0 32rpx;
+			display: inline-block;
+			font-size: 24rpx;
+			margin-left: 16rpx;
+			border: 1px solid #f5f6f7;
+			background-color: #f5f6f7;
+			border-radius: 50rpx;
+			height: 48rpx;
+			line-height: 48rpx;
+			&:last-child {
+				margin-right: 40rpx;
+			}
+			&:first-child {
+				margin-left: 40rpx;
+			}
+		}
+	}
+}
+.right-aside {
+	/* #ifdef H5||MP */
+	height: calc(100vh - 140upx);
+	/*#endif*/
+	/* #ifdef APP-PLUS */
+	height: 100vh;
+	/*#endif*/
+	width: 550upx;
+	.cate-name {
+		padding-top: 20rpx;
+		padding-left: 40rpx;
+		font-size: 26rpx;
+		font-weight: 600;
+		color: #000000;
+	}
+	.cate-li {
+		float: left;
+		width: 130upx;
+		text-align: center;
+		margin: 20upx 0 20rpx 40rpx;
+		.cate-img-view {
+			width: 130rpx;
+			height: 104rpx;
+			background: #f5f7f7;
+			border-radius: 8px;
+			margin-bottom: 24rpx;
+			.cate-img {
+				width: 84upx;
+				height: 84upx;
+				border-radius: 8upx;
+				display: block;
+				margin: 0 auto;
+				transform: translateY(10rpx);
+			}
+			.cate-img-icon {
+				font-size: 80upx;
+				width: 84upx;
+				line-height: 84upx;
+				color: #eeeeee;
+				height: 84upx;
+				border-radius: 8upx;
+				margin: 0 auto;
+				transform: translateY(10rpx);
+			}
+		}
+
+		.cate-tit {
+			font-size: 24upx;
+			font-weight: 400;
+			color: #3a3a3a;
+			width: 100%;
+			-webkit-line-clamp: 1;
+		}
+	}
+}
+</style>

+ 658 - 0
pages/classification/CateFour.vue

@@ -0,0 +1,658 @@
+<template>
+	<view :class="['qn-page-' + theme]">
+		<view class="tabs-view" v-if="tlist.length">
+			<u-tabs
+				height="70"
+				inactive-color="#2A2A2A"
+				:active-color="primaryColor"
+				:bar-style="{ borderRadius: '0', height: '4rpx', backgroundColor: primaryColor }"
+				:list="tlist"
+				name="title"
+				font-size="28"
+				:is-scroll="true"
+				:current="cate_current"
+				@change="cateChange($event)"
+			></u-tabs>
+		</view>
+		<view class="clearfix main-cont" :style="mainStyle">
+			<view class="float_left">
+				<scroll-view scroll-y class="left-aside">
+					<view v-for="(item, index) in flist" :key="index" class="f-item ellipsis" :class="{ active: item.id === one_id }" @click="tabtap(item, 1)">
+						<view v-if="item.id === one_id" class="active-line primary-bg"></view>
+						{{ item.title }}
+					</view>
+				</scroll-view>
+			</view>
+			<view class="float_right">
+				<view class="search-view">
+					<view class="search-li" @click="changeSearch('zh')">综合</view>
+					<view class="search-li" @click="changeSearch('xl')">
+						销量
+						<view class="arrow-icon arrow-up"><u-icon name="arrow-up-fill" :color="sortt === 1 ? primaryColor : '#6c6c6c'" size="10"></u-icon></view>
+						<view class="arrow-icon arrow-down"><u-icon name="arrow-down-fill" :color="sortt === 2 ? primaryColor : '#6c6c6c'" size="10"></u-icon></view>
+					</view>
+					<view class="search-li" @click="openKey('show_brand')">
+						<text style="margin-right: 10rpx;">品牌</text>
+						<u-icon color="#6c6c6c" name="arrow-down" size="20"></u-icon>
+					</view>
+					<view class="search-li" @click="openKey('show_support')">
+						<text style="margin-right: 10rpx;">其他</text>
+						<u-icon color="#6c6c6c" name="arrow-down" size="20"></u-icon>
+					</view>
+				</view>
+				<!-- 品牌选择 -->
+				<view class="cate-down-view" v-if="show_brand">
+					<view class="search-pop">
+						<view class="head-view clearfix">
+							<text class="float_left">商品品牌</text>
+							<view class="float_right" @click.stop="closeKey('show_brand')"><u-icon color="#8f8f8f" size="28" name="arrow-down"></u-icon></view>
+						</view>
+						<view class="cate-cont">
+							<block v-for="(item, index) in brand_list" :key="index">
+								<view class="cate-li ellipsis" :class="[brandId_zc.indexOf(item.id) > -1 ? 'primary-btn-pain' : '']" @click.stop="brandChange(item.id)">
+									{{ item.title }}
+								</view>
+							</block>
+						</view>
+						<view class="btn-ul">
+							<view class="btn-li primary-btn-pain" @click="resetBrand">重置</view>
+							<view class="btn-li primary-bg" @click="confirmBrand">确认</view>
+						</view>
+					</view>
+				</view>
+				<!-- 商品服务选择 -->
+				<view class="cate-down-view" v-if="show_support">
+					<view class="search-pop">
+						<view class="head-view clearfix">
+							<text class="float_left">商品服务</text>
+							<view class="float_right" @click.stop="closeKey('show_support')"><u-icon color="#8f8f8f" size="28" name="arrow-down"></u-icon></view>
+						</view>
+						<view class="cate-cont">
+							<block v-for="(item, index) in support_list" :key="index">
+								<view class="cate-li ellipsis" :class="[supplier_zc.indexOf(item.id) > -1 ? 'primary-btn-pain' : '']" @click.stop="supportChange(item.id)">
+									{{ item.servicesName }}
+								</view>
+							</block>
+						</view>
+						<view class="btn-ul">
+							<view class="btn-li primary-btn-pain" @click="resetSupport">重置</view>
+							<view class="btn-li primary-bg" @click="confirmSupport">确认</view>
+						</view>
+					</view>
+				</view>
+				<!-- 三级下拉菜单 -->
+				<view class="cate-down-view" @click="changeThreeCate(false)" v-if="show_cate">
+					<view @click.stop="changeThreeCate(true)">
+						<view class="head-view clearfix">
+							<text class="float_left">{{ two_cate }}</text>
+							<view class="float_right" @click.stop="changeThreeCate(false)"><u-icon color="#8f8f8f" size="28" name="arrow-down"></u-icon></view>
+						</view>
+						<view class="cate-cont">
+							<view
+								v-for="(item, index) in three_cate"
+								:key="index"
+								class="cate-li"
+								:class="[three_id === item.id ? 'primary-btn-pain' : '']"
+								@click.stop="threeCateChange(item)"
+							>
+								{{ item.title }}
+							</view>
+						</view>
+					</view>
+				</view>
+				<view class="right-aside clearfix">
+					<view class="three-cate" v-if="three_cate.length">
+						<scroll-view :scroll-x="true" class="three-cate-scroll">
+							<view
+								v-for="(item, index) in three_cate"
+								:key="index"
+								:class="[three_id === item.id ? 'primary-btn-pain' : '']"
+								class="cate-li"
+								@click="threeCateChange(item)"
+							>
+								{{ item.title }}
+							</view>
+						</scroll-view>
+						<view class="down-btn" @click="changeThreeCate(true)"><u-icon color="#8f8f8f" size="28" name="arrow-down"></u-icon></view>
+					</view>
+
+					<!-- 循环item出来为对象 -->
+					<scroll-view
+						class="right-aside-scroll"
+						:style="goodsScrollHeight"
+						scroll-y
+						lower-threshold="100px"
+						@scrolltolower="lower"
+						v-if="shoppingList.length > 0"
+						:scroll-top="scroll_top_num"
+					>
+						<view class="goods-li" v-for="(item, index) in shoppingList" :key="index">
+							<GoodsItem :isList="true" :item="item" @addCart="addCard(item.id)"></GoodsItem>
+						</view>
+						<u-loadmore margin-top="20" v-if="shoppingList.length" :status="loading_status" />
+					</scroll-view>
+					<Aempty text="没有商品" src="https://onlineimg.qianniao.vip/search.png" v-else></Aempty>
+				</view>
+			</view>
+			<AddCardModel :selAddress="selAddressD" @close="cardModelPopChange" :isShow="is_add_show" :goodsId="goods_id" />
+		</view>
+	</view>
+</template>
+
+<script>
+import GoodsItem from '@/components/GoodsItem.vue';
+import Login from '@/components/Login.vue';
+import AddCardModel from '@/components/AddCardModel';
+
+export default {
+	components: {
+		AddCardModel,
+		GoodsItem,
+		Login
+	},
+
+	data() {
+		return {
+			show_support: false,
+			show_brand: false,
+			show_cate: false,
+			cate_current: 0,
+			is_add_show: false,
+			goods_id: 0,
+			loading_status: 'loadmore',
+			isShow: false,
+			scroll_top_num: 0,
+			sizeCalcState: false,
+			tabScrollTop: 0,
+			currentId: 1,
+			flist: [],
+			slist: [],
+			shoppingList: [],
+			tlist: [],
+			priceInfo: [],
+			before_cartNum: 0,
+			page: 1,
+			pageSize: 10,
+			pageTotal: 0,
+			selAddressD: {},
+			three_cate: [],
+			two_cate: '',
+			three_id: 0,
+			one_id: 0,
+			brandId_zc: [],
+			brand_list: [], // 商品品牌列表
+			support_list: [], // 商品服务列表
+			supplier_zc: [],
+			support: [], //商品服务
+			brandId: [], // 品牌多选
+			// sort 是js保留字段,所以定义为 sortt
+			sortt: '' // 销量 1是从大到小,2是从小到大, 默认不传
+		};
+	},
+	props: {
+		isLogin: {
+			type: Boolean,
+			default: true
+		},
+		selAddress: {
+			type: Object,
+			default: () => {
+				return {};
+			}
+		}
+	},
+	computed: {
+		cartNum() {
+			return this.$store.state.cartNum;
+		},
+		// 判断手机是否有刘海
+		isBang() {
+			return this.$_utils.modelmes();
+		},
+		mainStyle() {
+			return `paddingTop: ${this.tlist.length > 0 ? '0' : '12rpx'};height: calc(100vh - 112rpx - ${this.isBang ? '84px' : '50px'} - ${
+				this.tlist.length > 0 ? '80rpx' : '0rpx'
+			})`;
+		},
+		goodsScrollHeight() {
+			return `height:${this.three_cate.length ? 'calc(100% - 62rpx - 90rpx)' : 'calc(100% - 62rpx)'}`;
+		},
+		userId() {
+			return this.$store.state.userStatus.id;
+		}
+	},
+	watch: {
+		selAddress(val) {
+			this.selAddressD = val;
+		},
+		'$store.state.locationObj'(val) {
+			if (JSON.stringify(val) === '{}') {
+				return;
+			}
+			this.shoppingList = [];
+			this.pageSize = 10;
+			this.getGoodsByCategory();
+		},
+		async isLogin(Nval) {
+			this.tlist = [];
+			if (Nval) {
+				this.shoppingList = [];
+				this.pageSize = 10;
+				await this.getAllCategory();
+				await this.getGoodsByCategory();
+			}
+		}
+	},
+	async created() {
+		await this.getAllCategory();
+		await this.getAllGoodsSupport();
+		await this.getAllBrand();
+	},
+	methods: {
+		changeSearch(tag) {
+			if (tag === 'zh') {
+				this.brandId = [];
+				this.sortt = '';
+				this.support = [];
+			} else if (tag === 'xl') {
+				if (this.sortt === 2) {
+					this.sortt = 1;
+				} else {
+					this.sortt = 2;
+				}
+			}
+			this.page = 1;
+			this.getGoodsByCategory();
+		},
+		// 选择品牌
+		brandChange(id) {
+			const index = this.brandId_zc.indexOf(id);
+			if (index > -1) {
+				this.brandId_zc.splice(index, 1);
+			} else {
+				this.brandId_zc.push(id);
+			}
+		},
+		confirmBrand() {
+			this.brandId = this.brandId_zc;
+			this.page = 1;
+			this.getGoodsByCategory();
+			this.closeKey('show_brand');
+		},
+		// 选择服务
+		supportChange(id) {
+			const index = this.supplier_zc.indexOf(id);
+			if (index > -1) {
+				this.supplier_zc.splice(index, 1);
+			} else {
+				this.supplier_zc.push(id);
+			}
+		},
+		resetBrand() {
+			this.brandId = [];
+			this.page = 1;
+			this.getGoodsByCategory();
+			this.closeKey('show_brand');
+		},
+		resetSupport() {
+			this.support = [];
+			this.page = 1;
+			this.getGoodsByCategory();
+			this.closeKey('show_support');
+		},
+		confirmSupport() {
+			this.support = this.supplier_zc;
+			this.page = 1;
+			this.getGoodsByCategory();
+			this.closeKey('show_support');
+		},
+		openKey(key) {
+			if (key === 'show_support') {
+				this.supplier_zc = this.$u.deepClone(this.support);
+			} else {
+				this.brandId_zc = this.$u.deepClone(this.brandId);
+			}
+			this[key] = true;
+		},
+		closeKey(key) {
+			this[key] = false;
+		},
+		// 打开购物车
+		cardModelPopChange(obj) {
+			this.is_add_show = false;
+		},
+		// 加入购物车
+		addCard(id) {
+			this.goods_id = id;
+			this.is_add_show = true;
+		},
+		changeThreeCate(show) {
+			this.show_cate = show;
+		},
+		// 分类列表 getAllCategory
+		getAllCategory() {
+			this.$u.api
+				.getAllCategory({
+					userCenterId: this.userId || 0
+				})
+				.then(data => {
+					this.flist = data.data;
+					if (data.data.length) {
+						this.tlist = data.data[0].children || [];
+						this.currentId = data.data[0].id;
+						this.one_id = data.data[0].id;
+						// 二级菜单添加全部按钮
+						if (this.tlist.length) {
+							this.tlist.unshift({
+								title: '全部',
+								id: data.data[0].id,
+								pid: 0
+							});
+						}
+					}
+					this.getGoodsByCategory();
+				});
+		},
+		// 上拉加载
+		lower(e) {
+			if (this.pageTotal / this.pageSize > this.page) {
+				this.page += 1;
+				this.getGoodsByCategory();
+			}
+		},
+		// 获取商品列表
+		getGoodsByCategory() {
+			this.loading_status = 'loading';
+			this.isShow = false;
+			this.$u.api
+				.getGoodsByCategory({
+					categoryId: this.three_id || this.currentId,
+					page: this.page,
+					pageSize: this.pageSize,
+					brandId: this.brandId,
+					sort: this.sortt,
+					support: this.support
+				})
+				.then(data => {
+					this.scroll_top_num = 1;
+					const goods = data.data.map(item => {
+						return {
+							...item,
+							isShow: false
+						};
+					});
+					if (this.page === 1) {
+						this.shoppingList = goods;
+					} else {
+						this.shoppingList = this.shoppingList.concat(goods);
+					}
+					this.pageTotal = data.pageTotal;
+					this.loading_status = this.$_utils.loadStatus(this.page, this.pageSize, this.pageTotal);
+				});
+		},
+		//一级分类点击
+		tabtap(item, lever) {
+			this.currentId = item.id;
+			this.changeThreeCate(false);
+
+			if (lever === 1) {
+				this.one_id = item.id;
+				// 一级菜单
+				this.cate_current = 0;
+				const tlist = this.flist.find(cate => cate.id === item.id);
+				this.tlist = tlist.children || [];
+				// 二级菜单添加全部按钮
+				if (this.tlist.length && !this.tlist.find(cate => cate.title === '全部')) {
+					this.tlist.unshift({
+						title: '全部',
+						id: item.id
+					});
+				}
+				this.three_id = 0;
+				this.three_cate = [];
+			} else if (lever === 2) {
+				// 二级菜单
+				this.two_cate = item.title;
+				// 三级分类
+				this.three_cate = item.children || [];
+				// 三级分类添加全部按钮
+				if (this.three_cate.length && !this.three_cate.find(cate => cate.title === '全部')) {
+					this.three_cate.unshift({
+						title: '全部',
+						id: item.id
+					});
+				}
+				this.three_id = item.id;
+			}
+
+			this.page = 1;
+			this.shoppingList = [];
+			this.$nextTick(() => {
+				this.scroll_top_num = 0;
+			});
+			// 商品列表的切换
+			this.getGoodsByCategory();
+			// 品牌列表切换
+			this.getAllBrand();
+		},
+		cateChange(index) {
+			this.cate_current = index;
+			// 商品列表的切换
+			this.tabtap(this.tlist[index], 2);
+		},
+		threeCateChange(row) {
+			this.three_id = row.id;
+			this.tabtap(row, 3);
+		},
+		// 商品服务
+		async getAllGoodsSupport() {
+			await this.$u.api
+				.getAllGoodsSupport({
+					page: 1,
+					pageSize: 100
+				})
+				.then(res => {
+					this.support_list = res.data;
+				});
+		},
+		// 商品品牌
+		async getAllBrand() {
+			await this.$u.api
+				.getAllBrand({
+					page: 1,
+					pageSize: 999,
+					categoryId: this.three_id || this.currentId
+				})
+				.then(res => {
+					this.brand_list = res.data;
+				});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.tabs-view {
+	border-bottom: 1px solid #eeeeee;
+	font-weight: 510;
+}
+.main-cont {
+	overflow: hidden;
+	.float_left {
+		height: 100%;
+		.left-aside {
+			width: 182upx;
+			height: 100%;
+			background-color: #f5f6f7;
+
+			.f-item {
+				-webkit-line-clamp: 1;
+				width: 100%;
+				height: 80upx;
+				line-height: 80rpx;
+				margin: 13rpx 0;
+				text-align: center;
+				font-size: 28upx;
+				color: #4b4b4b;
+				position: relative;
+				&.active {
+					color: #000000;
+					font-weight: bold;
+					background-color: #ffffff;
+				}
+				.active-line {
+					position: absolute;
+					left: 22rpx;
+					top: 50%;
+					transform: translateY(-50%);
+					height: 24upx;
+					width: 4upx;
+					border-radius: 4rpx;
+				}
+			}
+		}
+	}
+	.float_right {
+		height: 100%;
+		position: relative;
+		.search-view {
+			display: flex;
+			font-size: 24rpx;
+			text-align: center;
+			line-height: 60rpx;
+			border-bottom: 1px solid #eeeeee;
+			.search-li {
+				flex: 4;
+				position: relative;
+				.arrow-icon {
+					/* #ifdef H5 */
+					transform: scale(0.5, 0.5);
+					/* #endif */
+					position: absolute;
+					right: 20rpx;
+					color: #6c6c6c;
+				}
+
+				.arrow-down {
+					top: 6rpx;
+				}
+				.arrow-up {
+					bottom: 14rpx;
+				}
+			}
+		}
+		.cate-down-view {
+			width: 100%;
+			position: absolute;
+			top: 0;
+			left: 0;
+			height: 100%;
+			background-color: rgba(0, 0, 0, 0.5);
+			z-index: 999;
+			.head-view {
+				line-height: 86rpx;
+				font-size: 24rpx;
+				color: #666666;
+				background-color: #ffffff;
+				padding: 0 24rpx;
+			}
+			.cate-cont {
+				display: flex;
+				flex-wrap: wrap;
+				max-height: 420rpx;
+				overflow: auto;
+				background-color: #ffffff;
+				.cate-li {
+					text-align: center;
+					display: inline-block;
+					width: 150rpx;
+					border: 1px solid #c6c6c6;
+					height: 48rpx;
+					line-height: 48rpx;
+					font-size: 24rpx;
+					margin-left: 24rpx;
+					border-radius: 66rpx;
+					margin-bottom: 20rpx;
+					-webkit-line-clamp: 1;
+				}
+			}
+		}
+		.right-aside {
+			position: relative;
+			height: 100%;
+			width: 568upx;
+			overflow: hidden;
+			background-color: #ffffff;
+			.three-cate {
+				position: relative;
+				.three-cate-scroll {
+					padding: 20rpx 0;
+					width: 100%;
+					white-space: nowrap;
+					.cate-li {
+						padding: 0 20rpx;
+						display: inline-block;
+						font-size: 20rpx;
+						margin-left: 10rpx;
+						border: 1px solid #c6c6c6;
+						border-radius: 50rpx;
+						height: 50rpx;
+						line-height: 50rpx;
+						&:last-child {
+							margin-right: 60rpx;
+						}
+					}
+				}
+				.down-btn {
+					position: absolute;
+					background-color: #ffffff;
+					width: 60rpx;
+					text-align: center;
+					right: 0;
+					top: 0;
+					height: 90rpx;
+					line-height: 90rpx;
+				}
+			}
+			.right-aside-scroll {
+				height: 100%;
+				.goods-li {
+					border-bottom: 1px solid #f4f5f6;
+				}
+			}
+			.nullSty {
+				font-size: 26upx;
+				text-align: center;
+				vertical-align: middle;
+				color: #999;
+				position: absolute;
+				top: 50%;
+				left: 50%;
+				transform: translate(-50%, -50%);
+				image {
+					width: 240upx;
+					height: 160upx;
+					margin-bottom: 30upx;
+				}
+			}
+		}
+	}
+}
+.search-pop {
+	background-color: #ffffff;
+	padding-bottom: 20rpx;
+	.btn-ul {
+		display: flex;
+		padding-top: 20rpx;
+		.btn-li {
+			flex: 2;
+			margin: 0 30rpx;
+			border: 1px solid $uni-color-primary;
+			border-radius: 8rpx;
+			line-height: 50rpx;
+			font-size: 24rpx;
+			text-align: center;
+		}
+	}
+}
+</style>

+ 80 - 0
pages/classification/CateOne.vue

@@ -0,0 +1,80 @@
+<template>
+	<div  :class="['qn-page-' + theme]">
+		<scroll-view scroll-y class="cate-ul" :style="{ height: 'calc(100vh - 112rpx - ' + (isBang ? '84px' : '50px') + ')'  }">
+			<view class="cate-li" v-for="(item, index) in cate_list" :key="index" @click="goPage('/pagesT/productDetail/productDetail?id=' + item.id + '&name=' + item.title)">
+				<view class="cate-name">
+					<view class="cate-name-in">{{ item.title }}</view>
+				</view>
+				<image class="cate-img" :src="item.adImage || item.images" mode="aspectFill"></image>
+			</view>
+		</scroll-view>
+
+	</div>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			cate_list: []
+		};
+	},
+	computed:{
+		userId() {
+			return this.$store.state.userStatus.id;
+		}
+	},
+	created() {
+		this.getAllCategory();
+	},
+	methods: {
+		// 分类列表 getAllCategory
+		 getAllCategory() {
+			this.$u.api.getAllCategory({
+				userCenterId: this.userId || 0
+			}).then(data=>{
+				this.cate_list = data.data;
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.cate-ul {
+	width: 750upx;
+	height: calc(100vh - 112upx);
+	.cate-li {
+		background-color: #f5f5f5;
+		margin: 30upx auto 0;
+		width: 680upx;
+		position: relative;
+		.cate-img {
+			display: block;
+			width: 100%;
+			height: 300upx;
+		}
+		.cate-name {
+			position: absolute;
+			bottom: 24upx;
+			width: 400upx;
+			left: 50%;
+			transform: translateX(-200upx);
+			text-align: center;
+			z-index: 1;
+			font-size: 28upx;
+			font-weight: 600;
+			height: 88upx;
+
+			border: 2upx solid #fff;
+			.cate-name-in {
+				width: calc(100% - 8upx);
+				height: calc(100% - 8upx);
+				line-height: 80upx;
+				margin: 4upx auto;
+				background-color: rgba(255, 255, 255, 0.8);
+			}
+		}
+	}
+}
+</style>

+ 293 - 0
pages/classification/CateThree.vue

@@ -0,0 +1,293 @@
+<template>
+	<view class="clearfix" :class="['qn-page-' + theme]">
+		<view class="float_left">
+			<scroll-view
+				scroll-with-animation
+				scroll-y
+				class="left-aside"
+				:style="{ height: 'calc(100vh - 112rpx - ' + (isBang ? '84px' : '50px') + ')' }"
+				:scroll-top="scrollTop"
+				:scroll-into-view="itemId"
+			>
+				<view v-for="(item, index) in cate_list" :key="index" class="f-item b-b ellipsis" :class="{ active: index === current_index }" @click="tabtap(index, item)">
+					<view v-if="index === current_index" class="active-line primary-bg"></view>
+					{{ item.title }}
+				</view>
+			</scroll-view>
+		</view>
+		<view class="float_right">
+			<scroll-view
+				:scroll-top="scrollRightTop"
+				@scroll="rightScroll"
+				scroll-with-animation
+				scroll-y
+				class="right-aside"
+				:style="{ height: 'calc(100vh - 112rpx - ' + (isBang ? '84px' : '50px') + ')' }"
+			>
+				<view v-for="(titem, tindex) in cate_list" :key="tindex" class="cate-ul" :id="'item' + tindex">
+					<view class="cate-name">{{ titem.title }}</view>
+					<view class="clearfix">
+						<view class="cate-li" @click="goPage('/pagesT/productDetail/productDetail?id=' + titem.id + '&name=' + titem.title)">
+							<view class="cate-img-view">
+								<image v-if="titem.images" :src="titem.images" mode="aspectFill" class="cate-img"></image>
+								<view class="ibonfont ibonleimupinleifenleileibie cate-img-icon" v-else></view>
+							</view>
+							<view class="cate-tit">{{ titem.title }}</view>
+						</view>
+						<view
+							class="cate-li"
+							v-for="(item, index) in titem.children"
+							:key="index"
+							@click="goPage('/pagesT/productDetail/productDetail?id=' + item.id + '&name=' + item.title)"
+						>
+							<view class="cate-img-view">
+								<image v-if="item.images" :src="item.images" mode="aspectFill" class="cate-img"></image>
+								<view class="ibonfont ibonleimupinleifenleileibie cate-img-icon" v-else></view>
+							</view>
+
+							<view class="cate-tit ellipsis">{{ item.title }}</view>
+						</view>
+					</view>
+				</view>
+			</scroll-view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			cate_list: [],
+			cate_Two_list: [],
+			current_index: 0,
+			scrollTop: 0, //tab标题的滚动条位置
+			oldScrollTop: 0,
+			itemId: '', // 栏目右边scroll-view用于滚动的id
+			scrollRightTop: 0, // 右边栏目scroll-view的滚动条高度
+			arr: [],
+			timer: null, // 定时器
+			menuHeight: 0, // 左边菜单的高度
+			menuItemHeight: 0 // 左边菜单item的高度
+		};
+	},
+	computed: {
+		isBang() {
+			return this.$_utils.modelmes();
+		},
+		userId() {
+			return this.$store.state.userStatus.id;
+		}
+	},
+	created() {
+		this.getAllCategory();
+	},
+	methods: {
+		// 分类列表 getAllCategory
+		getAllCategory() {
+			this.$u.api
+				.getAllCategory({
+					userCenterId: this.userId || 0
+				})
+				.then(({ data }) => {
+					this.cate_list = data;
+				});
+		},
+		// 点击左边的栏目切换
+		async tabtap(index,row) {
+			if (this.arr.length == 0) {
+				await this.getMenuItemTop();
+			}
+			if (index == this.current_index) return;
+			this.scrollRightTop = this.oldScrollTop;
+			this.$nextTick(function() {
+				this.scrollRightTop = this.arr[index];
+				this.current_index = index;
+				this.leftMenuStatus(index);
+			});
+		},
+		// 设置左边菜单的滚动状态
+		async leftMenuStatus(index) {
+			this.current = index;
+			// 如果为0,意味着尚未初始化
+			if (this.menuHeight == 0 || this.menuItemHeight == 0) {
+				await this.getElRect('left-aside', 'menuHeight');
+				await this.getElRect('cate-two-li', 'menuItemHeight');
+			}
+			// 将菜单活动item垂直居中
+			this.scrollTop = index * this.menuItemHeight + this.menuItemHeight / 2 - this.menuHeight / 2;
+		},
+		// 获取右边菜单每个item到顶部的距离
+		getMenuItemTop() {
+			new Promise(resolve => {
+				let selectorQuery = uni.createSelectorQuery().in(this);
+				selectorQuery
+					.selectAll('.cate-ul')
+					.boundingClientRect(rects => {
+						// 如果节点尚未生成,rects值为[](因为用selectAll,所以返回的是数组),循环调用执行
+						if (!rects.length) {
+							setTimeout(() => {
+								this.getMenuItemTop();
+							}, 10);
+							return;
+						}
+						rects.forEach(rect => {
+							// 这里减去rects[0].top,是因为第一项顶部可能不是贴到导航栏(比如有个搜索框的情况)
+							this.arr.push(rect.top - rects[0].top);
+							resolve();
+						});
+					})
+					.exec();
+			});
+		},
+		// 右边菜单滚动
+		async rightScroll(e) {
+			this.oldScrollTop = e.detail.scrollTop;
+			if (this.arr.length == 0) {
+				await this.getMenuItemTop();
+			}
+			if (this.timer) return;
+			if (!this.menuHeight) {
+				await this.getElRect('left-aside', 'menuHeight');
+			}
+			setTimeout(() => {
+				// 节流
+				this.timer = null;
+				// scrollHeight为右边菜单垂直中点位置
+				let scrollHeight = e.detail.scrollTop + this.menuHeight / 2;
+				for (let i = 0; i < this.arr.length; i++) {
+					let height1 = this.arr[i];
+					let height2 = this.arr[i + 1];
+					// 如果不存在height2,意味着数据循环已经到了最后一个,设置左边菜单为最后一项即可
+					if (!height2 || (scrollHeight >= height1 && scrollHeight < height2)) {
+						this.leftMenuStatus(i);
+						return;
+					}
+				}
+			}, 10);
+		},
+		// 获取一个目标元素的高度
+		getElRect(elClass, dataVal) {
+			new Promise((resolve, reject) => {
+				const query = uni.createSelectorQuery().in(this);
+				query
+					.select('.' + elClass)
+					.fields(
+						{
+							size: true
+						},
+						res => {
+							// 如果节点尚未生成,res值为null,循环调用执行
+							if (!res) {
+								setTimeout(() => {
+									this.getElRect(elClass);
+								}, 10);
+								return;
+							}
+							this[dataVal] = res.height;
+							resolve();
+						}
+					)
+					.exec();
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.left-aside {
+	width: 200upx;
+	background-color: #f5f6f7;
+	/* #ifdef H5||MP */
+	height: calc(100vh - 130upx);
+	/*#endif*/
+	/* #ifdef APP-PLUS */
+	height: 100vh;
+	/*#endif*/
+	.f-item {
+		-webkit-line-clamp: 1;
+		width: 100%;
+		height: 80upx;
+		line-height: 80rpx;
+		padding-left: 48rpx;
+		margin-bottom: 10rpx;
+		font-size: 26upx;
+		color: #4b4b4b;
+		position: relative;
+
+		&.active {
+			color: #000000;
+			font-size: 32upx;
+			font-weight: bold;
+			background-color: #ffffff;
+			border-radius: 100rpx 0 0 100rpx;
+		}
+		.active-line {
+			position: absolute;
+			left: 28rpx;
+			top: 50%;
+			transform: translateY(-50%);
+			height: 24upx;
+			width: 4upx;
+			border-radius: 4rpx;
+		}
+	}
+}
+.right-aside {
+	/* #ifdef H5||MP */
+	height: calc(100vh - 140upx);
+	/*#endif*/
+	/* #ifdef APP-PLUS */
+	height: 100vh;
+	/*#endif*/
+	width: 550upx;
+	.cate-name {
+		padding-top: 20rpx;
+		padding-left: 40rpx;
+		font-size: 26rpx;
+		font-weight: 600;
+		color: #000000;
+	}
+	.cate-li {
+		float: left;
+		width: 130upx;
+		margin-left: 40upx;
+		text-align: center;
+		margin-top: 20upx;
+		.cate-img-view {
+			width: 130rpx;
+			height: 104rpx;
+			background: #f5f7f7;
+			border-radius: 8px;
+			margin-bottom: 24rpx;
+			.cate-img {
+				width: 84upx;
+				height: 84upx;
+				border-radius: 8upx;
+				display: block;
+				margin: 0 auto;
+				transform: translateY(10rpx);
+			}
+			.cate-img-icon {
+				font-size: 80upx;
+				width: 84upx;
+				line-height: 84upx;
+				color: #eeeeee;
+				height: 84upx;
+				border-radius: 8upx;
+				margin: 0 auto;
+				transform: translateY(10rpx);
+			}
+		}
+
+		.cate-tit {
+			font-size: 24upx;
+			font-weight: 400;
+			color: #3a3a3a;
+			width: 100%;
+			-webkit-line-clamp: 1;
+		}
+	}
+}
+</style>

+ 76 - 0
pages/classification/CateTwo.vue

@@ -0,0 +1,76 @@
+<template>
+	<div :class="['qn-page-' + theme]">
+		<scroll-view scroll-y class="cate-ul clearfix" :style="{ height: 'calc(100vh - 112rpx - ' + (isBang ? '84px' : '50px') + ')' }">
+			<view class="cate-li" v-for="(item, index) in cate_list" :key="index" @click="goPage('/pagesT/productDetail/productDetail?id=' + item.id + '&name=' + item.title)">
+				<view class="cate-img-view"><image :src="item.images" mode="aspectFill" class="cate-img"></image></view>
+				<view class="cate-tit">{{ item.title }}</view>
+			</view>
+		</scroll-view>
+	</div>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			cate_list: []
+		};
+	},
+	computed: {
+		userId() {
+			return this.$store.state.userStatus.id;
+		}
+	},
+	created() {
+		this.getAllCategory();
+	},
+	methods: {
+		// 分类列表 getAllCategory
+		getAllCategory() {
+			this.$u.api
+				.getAllCategory({
+					userCenterId: this.userId || 0
+				})
+				.then(data => {
+					this.cate_list = data.data;
+				});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.cate-ul {
+	/* #ifdef H5||MP */
+	height: calc(100vh - 230upx);
+	/*#endif*/
+	/* #ifdef APP-PLUS */
+	height: calc(100vh - 100upx);
+	/*#endif*/
+	.cate-li {
+		float: left;
+		width: 150upx;
+		margin-left: 72upx;
+		text-align: center;
+		margin-top: 50upx;
+		.cate-img-view {
+			width: 150upx;
+			height: 150upx;
+			background-color: #f4f5f6;
+			border-radius: 8rpx;
+			overflow: hidden;
+			.cate-img {
+				width: 150upx;
+				height: 150upx;
+				display: block;
+			}
+		}
+
+		.cate-tit {
+			font-size: 28upx;
+			color: #333;
+			padding-top: 20upx;
+		}
+	}
+}
+</style>

+ 176 - 0
pages/classification/cate.vue

@@ -0,0 +1,176 @@
+<template>
+	<view class="content" :class="['qn-page-' + theme]">
+		<view :style="{ backgroundColor: cateModel === 4 ? '#ffffff' : '#f4f5f6' }" class="mp-search-box">
+			<view @click="goPage('/pagesT/search/index')" :style="{ backgroundColor: cateModel !== 4 ? '#ffffff' : '#f4f5f6' }" class="ser-input-view">
+				<text class="ibonfont ibonsousuo1"></text>
+				<text>输入搜索商品发现更多好物…</text>
+			</view>
+			<view class="right-view">
+				<!-- #ifdef MP-WEIXIN -->
+				<button class="contact-btn" open-type="contact">
+					<u-icon name="server-fill" color="#000000" size="32"></u-icon>
+					<view>商城客服</view>
+				</button>
+				<!--  #endif -->
+				<!-- #ifdef APP-PLUS || H5 -->
+				<button class="contact-btn" @click="callphone">
+					<u-icon name="server-fill" color="#000000" size="32"></u-icon>
+					<view>客服</view>
+				</button>
+				<!--  #endif -->
+			</view>
+		</view>
+		<view class="cate-main" :style="{ top: cateModel === 4 ? '100rpx' : '110rpx', zIndex: cateModel === 4 ? '1000' : '900' }">
+			<cateOne v-if="cateModel === 1"></cateOne>
+			<CateTwo v-if="cateModel === 2"></CateTwo>
+			<CateThree v-if="cateModel === 3"></CateThree>
+			<CateFive v-if="cateModel === 5"></CateFive>
+			<CateFour :selAddress="now_sel_address" v-if="cateModel === 4" :isLogin="isLogin"></CateFour>
+		</view>
+		<!-- 底部tabbar -->
+		<Tabbar v-model="current"></Tabbar>
+	</view>
+</template>
+
+<script>
+import cateOne from './CateOne.vue';
+import CateTwo from './CateTwo.vue';
+import CateThree from './CateThree.vue';
+import CateFour from './CateFour.vue';
+import CateFive from './CateFive.vue';
+
+export default {
+	components: {
+		cateOne,
+		CateTwo,
+		CateThree,
+		CateFour,
+		CateFive
+	},
+	computed: {
+		style() {
+			const systemInfo = uni.getSystemInfoSync();
+			return `top:${systemInfo.statusBarHeight + 44}px`;
+		},
+		enterprisemobile() {
+			return this.$store.state.enterpriseInfo.mobile;
+		},
+		cateModel(){
+			return this.$store.state.cateModel;
+		}
+	},
+	onNavigationBarButtonTap() {
+		this.goPage('/pagesT/search/index');
+	},
+	data() {
+		return {
+			current: 1,
+			now_sel_address: {},
+			conptop: {
+				// #ifdef H5
+				paddingTop: '44px',
+				// #endif
+				// #ifdef MP-WEIXIN
+				paddingTop: '124rpx'
+				// #endif
+			},
+			// cateModel: 4,
+			isLogin: true
+		};
+	},
+	onShow() {
+		this.isLogin = this.$common.isLogin();
+		// this.cateModel = this.$store.state.cateModel;
+	},
+	onLoad() {
+		// #ifdef MP-WEIXIN
+		// 小程序的原生菜单中显示分享按钮
+		uni.showShareMenu({
+			withShareTicket: false,
+			menus: ['shareAppMessage', 'shareTimeline']
+		});
+		// #endif
+	},
+	methods: {
+		callphone() {
+			uni.makePhoneCall({
+				phoneNumber: this.enterprisemobile
+			});
+		}
+	},
+	// 发送给朋友
+	onShareAppMessage() {
+		return {
+			title: this.$store.state.baseSet.shop,
+			path: '/pages/index/index?businessmanId=' + (this.$store.state.userStatus.id||''),
+			success: res => {
+				console.log(res);
+			}
+		};
+	},
+	// #ifdef MP-WEIXIN
+	// 分享到朋友圈
+	onShareTimeline(obj) {},
+	// 收藏小程序
+	onAddToFavorites() {}
+	// #endif
+};
+</script>
+
+<style lang="scss">
+.content {
+	height: 100vh;
+	background-color: #fff;
+}
+.cate-main {
+	position: fixed;
+	left: 0;
+	width: 100%;
+	top: 110rpx;
+	z-index: 997;
+}
+.mp-search-box {
+	background-color: #f5f6f7;
+	position: fixed;
+	padding: 24upx 0;
+	left: 0;
+	top: 0;
+	z-index: 9999;
+	width: 100%;
+	padding-left: 30rpx;
+	.ser-input-view {
+		width: 620rpx;
+		height: 64rpx;
+		background-color: #ffffff;
+		border-radius: 64upx;
+		line-height: 64upx;
+		font-size: 24upx;
+		color: #9fa8bd;
+		font-weight: 400;
+		.ibonfont {
+			margin: 0 18rpx;
+			display: inline-block;
+			vertical-align: middle;
+			font-size: 38rpx;
+		}
+	}
+	.right-view {
+		position: absolute;
+		right: 16rpx;
+		top: 50%;
+		transform: translateY(-50%);
+		.contact-btn {
+			background-color: transparent;
+			font-size: 18rpx;
+			font-weight: 400;
+			color: #2a2a2a;
+			line-height: 25rpx;
+			text-align: center;
+			padding: 0;
+			&::after {
+				border: 0 none;
+			}
+		}
+	}
+}
+</style>

+ 100 - 0
pages/index/FullScreen.vue

@@ -0,0 +1,100 @@
+<template>
+	<view>
+		<view class="u-update-content">
+			<view class="content">
+				<view>
+					当前店铺已打烊,请联系商家
+				</view>
+				<view>
+					电话:{{enterprice.mobile}}
+				</view>
+			</view>
+			<view class="btn" @click="confirm">一键拨号</view>
+		</view>
+		<view class="logo-view" v-if="$common.getEnToken() !== '8fa553d53f44e33123e4d0d51a0de634'">
+			<image src="https://onlineimg.qianniao.vip/QNlogo-i-1.png" mode="aspectFit"></image>
+			<text>提供技术支持</text>
+		</view>
+	</view>
+	
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			show: true
+		};
+	},
+	computed:{
+		enterprice(){
+			return this.$store.state.enterpriseInfo
+		}
+	},
+	methods: {
+		cancel() {
+			this.closeModal();
+		},
+		confirm() {
+			uni.makePhoneCall({
+				phoneNumber: this.enterprice.mobile
+			});
+		},
+		closeModal() {
+			uni.navigateBack();
+		}
+	}
+};
+</script>
+
+<style scoped lang="scss">
+.u-full-content {
+	background-color: #00c777;
+}
+
+.u-update-content {
+	color: $u-content-color;
+	line-height: 1.7;
+	padding: 30rpx;
+	text-align: center;
+	position: fixed;
+	top: 50%;
+	left: 50%;
+	transform: translate(-50%,-50%);
+	// .title{
+	// 	font-size: 28rpx;
+	// 	color: #333333;
+	// 	font-weight: bold;
+	// }
+	.content{
+		font-size: 32rpx;
+		padding: 50rpx 0;
+		font-weight: bold;
+	}
+	.btn{
+		line-height: 80rpx;
+		width: 600rpx;
+		color: #FFFFFF;
+		background-color: #007AFF;
+		text-align: center;
+		border-radius: 10rpx;
+	}
+}
+.logo-view {
+	text-align: center;
+	padding-top: 50upx;
+	font-size: 24upx;
+	color: #999;
+	line-height: 20rpx;
+	position: fixed;
+	bottom: 50rpx;
+	left: 50%;
+	transform: translateX(-50%);
+	image {
+		width: 150upx;
+		height: 25upx;
+		opacity: 0.7;
+		vertical-align: middle;
+	}
+}
+</style>

+ 127 - 0
pages/index/SearchAddress.vue

@@ -0,0 +1,127 @@
+<template>
+	<view class="container" :class="['qn-page-' + theme]">
+		<view class="header">
+			<text class="ibonfont ibonsousuo1 sear-icon"></text>
+			<input type="text" @input="bindInput" @confirm="bindConfirm" v-model="address_key" placeholder="请输入地址" class="ars_input" />
+		</view>
+		<view class="bg-ff">
+			<view class="list-title">从下面列表中选择</view>
+			<view class="list-li" v-for="(item, index) in list" :key="index" @click="address(item)">
+				<view class="adrs-label">{{ item.name }}</view>
+				<view class="adrs-val">{{ item.address.length ? item.address : item.name }}</view>
+			</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+import amap from '@/access/amap-wx.js';
+import webUrl from '../../config.js';
+
+export default {
+	data() {
+		return {
+			list: [],
+			address_key: ''
+		};
+	},
+	onLoad() {
+		//在 onLoad 中初始化一个高德小程序 SDK 的实例对象。
+		this.amapPlugin = new amap.AMapWX({
+			key: webUrl.GDMap_key
+		});
+	},
+	methods: {
+		bindConfirm() {},
+		bindInput() {
+			// #ifdef MP-TOUTIAO
+			if(['xijinping','xi jin ping','jinping','jin ping','习近平','近平','彭丽媛','丽媛'].includes(this.address_key)){
+				return
+			}
+			// #endif
+			this.amapPlugin.getInputtips({
+				keywords: this.address_key,
+				location: '',
+				success: data => {
+					if (data && data.tips) {
+						this.list = data.tips;
+						console.log(this.list);
+					}
+				}
+			});
+		},
+		address(item) {
+			console.log(item);
+			const location = item.location.split(',');
+			const locationD = this.$_utils.getArea(item.district);
+			// {"provinceName":"陕西省","cityName":"西安市","districtName":"莲湖区","address":"北院门街道","latitude":34.267011,"longitude":108.940245}
+			const longitude = location[0];
+			const latitude = location[1];
+			this.$store.commit('commit_locationObj', {
+				...locationD,
+				address: item.address.length ? item.address : item.name,
+				latitude: latitude,
+				longitude: longitude
+			});
+			this.isLoding=true
+			setTimeout(() => {
+				this.isLoding=false
+				uni.switchTab({
+					url: '/pages/index/index'
+				});
+			}, 100);
+		}
+	}
+};
+</script>
+
+<style scoped lang="scss">
+.container {
+	padding-top: 20rpx;
+}
+.header {
+	// position: fixed;
+	// z-index: 999;
+	// top: 0;
+	// left: 0;
+	line-height: 70upx;
+	border-bottom: 1px solid #eee;
+	background-color: #fff;
+	padding: 0 20upx;
+	.sear-icon {
+		font-size: 32upx;
+		color: #999;
+		vertical-align: middle;
+	}
+	.ars_input {
+		margin-left: 20upx;
+		width: 600upx;
+		display: inline-block;
+		height: 70upx;
+		line-height: 70upx;
+		vertical-align: middle;
+		font-size: 28upx;
+	}
+}
+.bg-ff {
+	margin-top: 20upx;
+	background-color: #fff;
+	padding: 0 20upx;
+	.list-title {
+		font-size: 26upx;
+		color: #999;
+		padding: 16upx 0;
+	}
+	.list-li {
+		font-size: 28upx;
+		border-top: 1px solid #eee;
+		padding: 20upx 0;
+		.adrs-val {
+			font-size: 26upx;
+			color: #666;
+			padding-top: 10upx;
+		}
+	}
+}
+</style>

+ 135 - 0
pages/index/StartUpPage.vue

@@ -0,0 +1,135 @@
+<template>
+	<view class="img-view" :class="['qn-page-' + theme]">
+		<block v-if="startUpPage.isEnable && startUpPage.img">
+			<view @click="goPageS('/pages/index/index', 'switchTab')" class="go-index-btn">跳过 {{ time }} s</view>
+			<view class="startUpPage-view">
+				<image @click="goPageS(startUpPage.url, startUpPage.switchTab)" class="start-img" :src="startUpPage.img" mode="aspectFill"></image>
+			</view>
+		</block>
+	</view>
+</template>
+
+<script>
+import amap from '@/access/amap-wx.js';
+export default {
+	data() {
+		return {
+			startUpPage: {
+				img: '',
+				isEnable: false,
+				time: 5
+			},
+			time: 5,
+			timesInterval: null
+		};
+	},
+	watch: {
+		// 监听倒计时,当时间为0时跳转页面,在这里监听的原因是为了跳出setInterval,防止setInterval不会终止,而不停的跳转首页
+		time(val) {
+			if (val === 0) {
+				uni.switchTab({
+					url: '/pages/index/index'
+				});
+			}
+		}
+	},
+	async onLoad() {
+		// #ifdef MP-TOUTIAO
+		uni.switchTab({
+			url: '/pages/index/index'
+		});
+		return;
+		// #endif
+		// #ifdef MP-WEIXIN || APP-PLUS || H5
+		await this.getBasicField();
+		// #endif
+	},
+	methods: {
+		goPageS(url, type) {
+			if (!url) {
+				return;
+			}
+			clearInterval(this.timesInterval);
+			this.goPage(url, type);
+		},
+		// 获取商城基本设置
+		async getBasicField() {
+			// startUpPage,启动页设置
+			await this.$u.api
+				.getBasicField({
+					field: ['startUpPage']
+				})
+				.then(({ data }) => {
+					if (!data.startUpPage || !data.startUpPage.isEnable || !data.startUpPage.img) {
+						uni.switchTab({
+							url: '/pages/index/index'
+						});
+						return;
+					}
+					if (data.startUpPage && data.startUpPage.isEnable && data.startUpPage.img) {
+						this.startUpPage = data.startUpPage;
+						this.time = this.startUpPage.time;
+						this.timesInterval = setInterval(() => {
+							if (this.time === 0) {
+								clearInterval(this.timesInterval);
+							} else {
+								this.time = this.time - 1;
+							}
+						}, 1000);
+					}
+				});
+		}
+	}
+};
+</script>
+
+<style scoped lang="scss">
+.img-view {
+	position: relative;
+	width: 750upx;
+	height: 100vh;
+	.logo-view {
+		height: 300rpx;
+		text-align: center;
+		background-color: #ffffff;
+		.logo-view-in {
+			transform: translateY(60rpx);
+			.en-logo {
+				height: 120rpx;
+				width: 120rpx;
+				display: block;
+				margin: 0 auto;
+			}
+			.en-name {
+				font-size: 36rpx;
+				padding-top: 20rpx;
+			}
+		}
+	}
+	.go-index-btn {
+		position: absolute;
+		bottom: 350upx;
+		right: 20upx;
+		font-size: 26upx;
+		color: #fff;
+		background-color: rgba($color: #000000, $alpha: 0.4);
+		width: 150upx;
+		height: 55upx;
+		line-height: 55upx;
+		text-align: center;
+		border-radius: 66upx;
+		z-index: 9;
+	}
+	.startUpPage-view {
+		width: 750upx;
+		height: 100vh;
+		overflow: hidden;
+		background-color: #ffffff;
+		.start-img {
+			width: 100%;
+			height: 100%;
+			display: block;
+		}
+	}
+}
+</style>

+ 623 - 0
pages/index/index.vue

@@ -0,0 +1,623 @@
+<template>
+	<view :class="['qn-page-' + theme]" class="view-wrap" :style="pageStyle">
+		<NavigationBar v-if="is_data" :scrollTop="scrollTop" :modelData="topData" @openLocation="openLocation" />
+		<view style="position: relative; z-index: 2;">
+			<block v-if="is_data"><PageDesign :temData="temData" :showGoodsPrice="showGoodsPrice" :selAddress="now_sel_address"></PageDesign></block>
+			<!-- 骨架 -->
+			<Skeleton v-else :imgTitle="true" :loading="true" :showAvatar="false"></Skeleton>
+			<!-- #ifdef APP-PLUS -->
+			<u-popup v-model="upgradePop" mode="center" :border-radius="12">
+				<view class="upgrade-view">
+					<image class="upgrade-img" src="https://onlineimg.qianniao.vip/shengji.jpg" mode="aspectFit"></image>
+					<view class="upgrade-tit">发现新版本</view>
+					<view class="upgrade-num">{{ newVersion }}</view>
+					<view class="upgrade-cont">
+						为了您更好的体验,
+						<br />
+						请您去升级到新版本哦!
+					</view>
+					<view @click="downloadApp" class="upgrade-btn">立即升级</view>
+					<view class="closePop" @click="closeUPop"><text class="ibonfont ibonguanbi"></text></view>
+				</view>
+			</u-popup>
+			<u-popup :mask-close-able="false" v-model="up_show" mode="center" :border-radius="12">
+				<view class="upgrade-view">
+					<image class="upgrade-img" src="https://onlineimg.qianniao.vip/shengji.jpg" mode="aspectFit"></image>
+					<view class="upgrade-tit">新版本更新中</view>
+					<view class="upgrade-cont"><u-line-progress :striped="true" :percent="up_percent" :striped-active="true"></u-line-progress></view>
+				</view>
+			</u-popup>
+			<!-- #endif -->
+			<u-modal v-model="tip_model" @confirm="finishCofirm" @cancel="tipCancel" :show-cancel-button="true" content="请先完善资料,再进行购物" confirm-text="去完善" cancel-text="逛逛商城"></u-modal>
+			<!-- 底部tabbar -->
+			<Tabbar v-model="current"></Tabbar>
+		</view>
+	</view>
+</template>
+<script>
+import permision from '@/access/wa-permission/permission.js';
+import PageDesign from '@/components/PageDesign/PageDesign.vue';
+import { getToken, getUserInfo } from '@/access/common.js';
+import NavigationBar from '@/components/PageDesign/components/NavigationBar.vue';
+import Skeleton from '@/components/J-skeleton.vue';
+export default {
+	components: {
+		PageDesign,
+		Skeleton,
+		NavigationBar
+	},
+	data() {
+		return {
+			tip_model: false, // 完善资料提示
+			up_percent: 0,
+			up_show: false,
+			current: 0,
+			upgradePop: false,
+			newVersion: '',
+			oldVersion: 'v1.0.6',
+			model: 0,
+			now_sel_address: {},
+			home_data: {},
+			temData: {},
+			is_data: false,
+			show_goods_price: 4,
+			userCenterId: '',
+			topData: {
+				name: '',
+				topBgColor: '#ffffff',
+				textColor: '#000000',
+				pageBgColor: '#f7f8fa',
+				bgImage: ''
+			},
+			startUpPage: {
+				img: '',
+				isEnable: false,
+				time: 5
+			},
+			scrollTop: 0
+		};
+	},
+	computed: {
+		enterprice() {
+			return this.$store.state.enterpriseInfo;
+		},
+		isUpdate() {
+			return this.$store.state.isUpdate;
+		},
+		pageTit() {
+			if (this.temData.length) {
+				const obj = this.temData[0].modelData;
+				return obj.name;
+			} else {
+				return this.baseSet.shop || '首页';
+			}
+		},
+		baseSet() {
+			return this.$store.state.baseSet;
+		},
+		pageStyle() {
+			if (this.temData.length) {
+				const obj = this.temData[0].modelData;
+				return `background-color:${obj.pageBgColor};background-image:url(${obj.bgImage});backgroundPosition: ${
+					obj.topBgColor ? '0 ' + (this.barHeight + 44) + 'px' : '0 0'
+				}`;
+			} else {
+				return '';
+			}
+		},
+		isLogin() {
+			return this.$store.state.hasLogin;
+		},
+		showGoodsPrice() {
+			if (this.baseSet.goodsPrice === 5 && this.isLogin) {
+				return '';
+			} else if (!this.isLogin && this.baseSet.goodsPrice === 4) {
+				return '请登录';
+			} else if (this.$store.state.userStatus.enableStatus === 4 && this.baseSet.goodsPrice === 4) {
+				return '已禁用';
+			} else if (this.$store.state.userStatus.status !== 2 && this.baseSet.goodsPrice === 4) {
+				if (this.$store.state.userStatus.status === 0) {
+					return '待审核';
+				} else if (this.$store.state.userStatus.status === 1) {
+					return '审核中';
+				} else if (this.$store.state.userStatus.status === 3) {
+					return '已驳回';
+				}
+			} else {
+				return '';
+			}
+		},
+		// #ifdef APP-PLUS
+		iosAuditStatus() {
+			return this.$store.state.iosAuditStatus;
+		}
+		// #endif
+	},
+	watch: {
+		'$store.state.locationObj'(val) {
+			if (JSON.stringify(val) === '{}') {
+				console.log(333);
+				this.getAuthorizeInfo();
+				return;
+			}
+			uni.hideToast();
+			this.getTemplate();
+		},
+		isLogin(val) {
+			this.getTemplate();
+			this.getIndexData();
+		}
+	},
+	async onShow() {
+		// #ifdef APP-PLUS
+		if (JSON.stringify(this.$store.state.locationObj || {}) === '{}') {
+			if (plus.os.name == 'iOS') {
+				let result = permision.judgeIosPermission('location');
+				if (result) {
+					await this.resetGetLocation();
+				}
+			} else {
+				let result = await permision.requestAndroidPermission('android.permission.ACCESS_FINE_LOCATION');
+				if (result == 1) {
+					await this.resetGetLocation();
+				}
+			}
+		}
+		// #endif
+		// #ifdef MP-WEIXIN || MP-TOUTIAO || H5
+		if (JSON.stringify(this.$store.state.locationObj || {}) === '{}') {
+			await this.getAuthorizeInfo();
+			return;
+		}
+		// #endif
+	},
+	// 发送给朋友
+	onShareAppMessage() {
+		return {
+			title: this.baseSet.shop,
+			path: '/pages/index/index?businessmanId=' + (this.$store.state.userStatus.id || ''),
+			success: res => {
+				console.log(res);
+			}
+		};
+	},
+	// #ifdef MP-WEIXIN
+	// 分享到朋友圈
+	onShareTimeline(obj) {},
+	// 收藏小程序
+	onAddToFavorites() {},
+	// #endif
+	async onLoad(options) {
+		console.log('h获取模板');
+		try{
+		await this.getTemplate();
+		console.log('h获取模板11');
+		await this.getEnterpriseInfo();
+		// #ifdef MP
+		//  获取小程序分销商参数
+		if (options.businessmanId) {
+			this.$store.commit('commit_businessmanId', options.businessmanId);
+			this.relationshipBusinessman(options.businessmanId);
+		} else if (options.scene) {
+			// 扫码进入
+			const scene = decodeURIComponent(options.scene);
+			if (scene.indexOf('_') > -1) {
+				const id = scene.slice(0, scene.length - 1);
+				console.log('staffId', id);
+				this.$store.commit('commit_staffId', id);
+			} else {
+				this.$store.commit('commit_businessmanId', scene);
+				this.relationshipBusinessman(scene);
+			}
+		}
+
+		// #endif
+		this.show_goods_price = this.isLogin ? 5 : this.baseSet.goodsPrice;
+		// 实时定位
+		if (JSON.stringify(this.$store.state.locationObj) !== '{}') {
+			await this.resetGetLocation();
+		}
+		// #ifdef APP-PLUS
+		// 获取APP版本
+		await this.getVersion();
+		// #endif
+		await this.getBasicField();
+		await this.getIndexData();
+		await this.getClassSettingInfo();
+		// #ifdef MP-WEIXIN
+		// 小程序的原生菜单中显示分享按钮
+		uni.showShareMenu({
+			withShareTicket: false,
+			menus: ['shareAppMessage', 'shareTimeline']
+		});
+		// #endif
+		}catch(e){
+			console.log(e,'错误');
+			//TODO handle the exception
+		}
+	},
+	methods: {
+		// #ifdef MP
+		// 添加分销上下级关系 source: 1:首次点击链接 2:首次下单 3:首次付款'
+		async relationshipBusinessman(businessmanId) {
+			console.log('上级ID', businessmanId);
+			if (!this.isLogin) {
+				// 没有登录不请求接口
+				return;
+			}
+			await this.$u.api.relationshipBusinessman({
+				businessmanId: businessmanId,
+				source: 1
+			});
+
+			console.log('上下:', data.data);
+		},
+		// #endif
+		// #ifdef APP-PLUS
+		// app 升级
+		downloadApp() {
+			this.closeUPop();
+			let url;
+			if (this.$common.source() === 2) {
+				this.up_show = true;
+				url = '';
+				const downloadTask = uni.downloadFile({
+					url: url,
+					success: downloadResult => {
+						if (downloadResult.statusCode === 200) {
+							plus.runtime.install(
+								downloadResult.tempFilePath,
+								{
+									force: false
+								},
+								function() {
+									console.log('install success...');
+									plus.runtime.restart();
+								},
+								function(e) {
+									console.log(e);
+									// console.error('install fail...');
+								}
+							);
+						}
+					}
+				});
+				downloadTask.onProgressUpdate(res => {
+					this.up_percent = res.progress;
+				});
+			} else {
+				plus.runtime.openURL(this.downloadUrl);
+			}
+		},
+		// 获取app版本 升级
+		async getVersion() {
+			await this.$u.api
+				.getVersion({
+					oldVersion: this.oldVersion
+				})
+				.then(res => {
+					uni.setStorageSync('isUpdate', res.data.isUpdate);
+					if (res.data.isUpdate) {
+						this.downloadUrl = res.data.downloadUrl;
+						// App 升级机制,检测安卓
+						if (this.$common.source() === 2) {
+							this.upgradePop = true;
+						} else {
+							// IOS 审核通过后再打开升级提示
+							if (this.iosAuditStatus === 5) {
+								this.upgradePop = true;
+							}
+						}
+					}
+				});
+		},
+		closeUPop() {
+			this.upgradePop = false;
+		},
+		// #endif
+		resetGetLocation() {
+			this.amapPlugin.getRegeo({
+				success: data => {
+					const proCity = ['北京市', '天津市', '上海市', '重庆市'];
+					// console.log('获取定位:', data)
+					const provinceName = data[0].regeocodeData.addressComponent.province;
+					const cityName = proCity.includes(provinceName) ? provinceName : data[0].regeocodeData.addressComponent.city;
+					const districtName = data[0].regeocodeData.addressComponent.district;
+					const address = data[0].desc || data[0].name || data[0].regeocodeData.addressComponent.streetNumber.street || data[0].regeocodeData.addressComponent.township;
+
+					const location = {
+						provinceName: provinceName,
+						cityName: cityName,
+						districtName: districtName,
+						address: address
+					};
+					if (location.districtName !== this.$store.state.locationObj.districtName) {
+						uni.showModal({
+							title: '提示',
+							content: '检测到您位置已改变,是否切换到新的位置',
+							success: res => {
+								if (res.confirm) {
+									this.$store.commit('commit_locationObj', {
+										...location,
+										latitude: data[0].latitude,
+										longitude: data[0].longitude
+									});
+								}
+							}
+						});
+					}
+				},
+				fail: err => {
+					console.log('获取位置失败::', err);
+				}
+			});
+		},
+		openLocation() {
+			// #ifdef MP-WEIXIN
+			uni.chooseLocation({
+				success: res => {
+					const location = this.$_utils.getArea(res.address);
+					this.$store.commit('commit_locationObj', {
+						...location,
+						address: location.address || res.name,
+						latitude: res.latitude,
+						longitude: res.longitude
+					});
+				}
+			});
+			// #endif
+			// #ifdef APP-PLUS || MP-TOUTIAO
+			uni.navigateTo({
+				url: '/pages/index/SearchAddress'
+			});
+			// #endif
+		},
+		async getIndexData() {
+			if (getToken()) {
+				await this.getCustomerInfo();
+				await this.getCartByUserCenterId();
+			}
+		},
+
+		//首页
+		async getTemplate() {
+			console.log('请求模板');
+			await this.$u.api
+				.homePage({
+					pageType: 1
+				})
+				.then(({ data }) => {
+					console.log('模板返回',data);
+					uni.stopPullDownRefresh();
+					this.is_data = true;
+					this.model = data.type;
+					if (data.type === 2) {
+						this.temData = data.data;
+						console.log('版面信息',this.temData)
+						this.topData = data.data[0].modelData;
+					} else {
+						const homeObj = {};
+						for (let i in data.data) {
+							const item = data.data[i];
+							homeObj[item.moduleAlias] = item;
+						}
+						this.home_data = homeObj;
+						this.cateOn = this.home_data.goodsCate.moduleData.cateData[0].categoryName;
+						this.goodsData = this.home_data.goodsCate.moduleData.cateData[0].goodsData;
+					}
+				}).catch((e)=>{
+					console.log(e,'末班错误');
+				});
+		},
+		//获取购物车数据
+		async getCartByUserCenterId() {
+			await this.$u.api.getCartByUserCenterId().then(data => {
+				this.$store.commit('commit_cartNum', data.data.goodsNum);
+				this.$store.commit('commit_cartPrice', data.data.totalMoney);
+			});
+		},
+		// 获取分类页面模版
+		async getClassSettingInfo() {
+			await this.$u.api.getClassSettingInfo().then(data => {
+				this.$store.commit('commit_cateModel', data.data.value);
+			});
+		},
+		// 获取商城基本设置
+		async getBasicField() {
+			// personnelReview,客户审核,
+			// finishData: 4,  完善资料 4禁用 5启用
+			// finishDataGo: false,  完善资料登录后立即去完善
+			// shop,商城名称,
+			// images,商城LOGO,
+			// goodsPrice,商品价格是否允许游客查看,
+			// stockDisplay,库存展示设置,4:不显示库存;5: 显示有/无货;6:显示库存数量
+			// themeStyle,风格设置
+			// startUpPage,启动页设置
+			// startDeliveryPrice,起送价
+			// freeExpressPrice 满多少元包邮
+			// isSalesNum,是否显示销量,4:不显示,5:显示
+			// cancelOrder,5开启:订单在出库前客户可以点击取消订单按钮;4禁用:只有待审核的订单客户才能操作取消订单按钮;
+			// cancelOrderAudit,取消订单审核状态 5开启 4禁用
+
+			await this.$u.api
+				.getBasicField({
+					field: [
+						'personnelReview',
+						'finishData',
+						'finishDataGo',
+						'shop',
+						'images',
+						'goodsPrice',
+						'stockDisplay',
+						'themeStyle',
+						'startUpPage',
+						'startDeliveryPrice',
+						'freeExpressPrice',
+						'isSalesNum',
+						'phone',
+						'cancelOrder',
+						'cancelOrderAudit'
+					]
+				})
+				.then(data => {
+					this.show_goods_price = this.isLogin ? 5 : data.data.goodsPrice;
+					this.startUpPage = data.data.startUpPage || {
+						img: '',
+						isEnable: false,
+						time: 5
+					};
+					let themeStyle = '';
+					if (data.data.themeStyle) {
+						let theme = data.data.themeStyle.theme;
+						if (!theme) {
+							switch (data.data.themeStyle.label) {
+								case '纯净绿':
+									theme = 'green';
+									break;
+								case '热情红':
+									theme = 'red';
+									break;
+								case '活力橙':
+									theme = 'orange';
+									break;
+								case '格调金':
+									theme = 'gold';
+									break;
+								case '雅致粉':
+									theme = 'pink';
+									break;
+								case '商务蓝':
+									theme = 'blue';
+									break;
+							}
+						}
+						themeStyle = {
+							...data.data.themeStyle,
+							theme: theme
+						};
+					}
+					this.$store.commit('commit_baseSet', {
+						...data.data,
+						isSalesNum: data.data.isSalesNum || 5,
+						preSale: data.data.preSale || 4,
+						startDeliveryPrice: data.data.startDeliveryPrice || 0,
+						themeStyle: themeStyle || {
+							label: '热情红',
+							theme: 'red',
+							color_t: '#ff3883',
+							color_o: '#fd463e'
+						},
+						startUpPage: data.data.startUpPage || {
+							img: '',
+							isEnable: false,
+							time: 5
+						}
+					});
+				});
+		},
+		//先获取个人资料 用来判断审核状态
+		async getCustomerInfo() {
+			await this.$u.api.getCustomerInfo().then(({ data }) => {
+				this.$store.commit('commit_userStatus', data);
+				if (this.baseSet.finishDataGo && data.status === 0) {
+					this.tip_model = true;
+				}
+			});
+		},
+		async getEnterpriseInfo() {
+			await this.$u.api.getEnterpriseInfo().then(({ data }) => {
+				this.$store.commit('commit_iosAuditStatus', data.iosAuditStatus);
+				this.$store.commit('commit_enterpriseInfo', data);
+				if (new Date().getTime() >= data.expireTime * 1000) {
+					uni.reLaunch({
+						url: '/pages/index/FullScreen'
+					});
+				}
+			});
+		},
+		// 完善资料提示取消
+		tipCancel(){
+			this.tip_model = false;
+		},
+		// 跳转完善资料页面
+		finishCofirm(){
+			this.goPage('/pagesT/user/editUserInfo');
+		}
+	},
+	// 下拉刷新
+	onPullDownRefresh() {
+		this.getTemplate();
+		this.getIndexData();
+		this.getBasicField();
+		this.getClassSettingInfo();
+	},
+	onPageScroll(obj) {
+		this.scrollTop = obj.scrollTop;
+	}
+};
+</script>
+<style lang="scss" scoped>
+.view-wrap {
+	background-repeat: no-repeat;
+	background-color: #f7f8fa;
+	background-size: 750rpx;
+	// background-position: 0 calc(var(--status-bar-height) + 44px);
+}
+
+.upgrade-view {
+	background-color: #fff;
+	text-align: center;
+	width: 600upx;
+	border-radius: 12upx;
+	padding: 24upx;
+	position: relative;
+
+	.closePop {
+		position: absolute;
+		bottom: -100upx;
+		width: 50upx;
+		height: 50upx;
+		color: #fff;
+		left: 50%;
+		transform: translateX(-25upx);
+
+		.ibonguanbi {
+			font-size: 48upx;
+		}
+	}
+
+	.upgrade-img {
+		width: 275upx;
+		height: 275upx;
+		margin: 30upx auto 0;
+		display: block;
+	}
+
+	.upgrade-tit {
+		font-size: 36upx;
+	}
+
+	.upgrade-num {
+		color: #999;
+		font-size: 24upx;
+		padding: 20upx;
+	}
+
+	.upgrade-cont {
+		font-size: 28upx;
+		padding-bottom: 30upx;
+		line-height: 36upx;
+	}
+
+	.upgrade-btn {
+		width: 516upx;
+		height: 86upx;
+		font-size: 32upx;
+		color: #fff;
+		border-radius: 8upx;
+		background-color: #007aff;
+		line-height: 86upx;
+		margin: 0 auto;
+	}
+}
+</style>

+ 1158 - 0
pages/user/user.vue

@@ -0,0 +1,1158 @@
+<template>
+	<view class="user-index" :class="['qn-page-' + theme]">
+		<view class="user-top" :style="{ height: vip_data.name ? '418rpx' : '348rpx' }">
+			<!-- 装饰 -->
+			<view class="circle-big" :style="{ height: vip_data.name ? '418rpx' : '348rpx' }">
+				<view class="circle-one"></view>
+				<view class="circle-two"></view>
+				<view class="vip-view clearfix" v-if="vip_data.name">
+					<view class="float_left">
+						<view class="vip-name">
+							<text class="ibonfont ibonhuiyuan" style="margin-right: 16rpx;"></text>
+							{{ vip_data.name }}
+						</view>
+						<view class="desc" v-if="vip_data.vipDiscount === 5">享受全场{{ vip_data.discount - 0 }}折</view>
+						<view class="desc" v-else>专享会员权益</view>
+					</view>
+					<view class="float_right vip-btn" @click="navTo(`/pagesT/user/VipDetail?id=${vip_data.id}`)">
+						<block v-if="vip_data.isSelf">立即查看</block>
+						<block v-else>立即开通</block>
+					</view>
+				</view>
+			</view>
+			<uniStatusBar />
+			<!-- 未登录 -->
+			<view class="user-info clearfix" v-if="!isLogin">
+				<view class="ui-img float_left">
+					<u-image shape="circle" width="120rpx" height="120rpx" error-icon="photo"
+						src="https://onlineimg.qianniao.vip/user-re.png"></u-image>
+				</view>
+				<view class="user-name float_left" style="padding-top: 20rpx;">
+					<Login @loginSuccess="loginSuccess">
+						<view class="login-btn" slot="lBtn">登录/注册</view>
+					</Login>
+				</view>
+				<view class="float_right right-icon" @click="setUserInfo">
+					<view><text class="ibonfont ibonshezhi21"></text></view>
+					<view class="text">设置</view>
+				</view>
+			</view>
+			<!-- 已登录 -->
+			<view class="user-info clearfix" v-else>
+				<view class="ui-img float_left" @click="setUserInfo">
+					<u-image error-icon="photo" shape="circle" width="120rpx" height="120rpx" :src="userInfo.avatar">
+					</u-image>
+					<view class="edit-bth">{{ userStatus === 0 ? '去完善' : '编辑' }}</view>
+				</view>
+				<view class="user-name float_left">
+					<view class="un-text ellipsis" v-if="userInfo.name">{{ userInfo.name || '匿名用户' }}</view>
+					<view class="un-text-desc"
+						v-if="(personnelReview === 5 || finishData === 5) && (userStatus !== 2 || enableStatus === 4)">
+						<text v-if="enableStatus === 4">已禁用</text>
+						<text v-else-if="userStatus === 0">待完善资料</text>
+						<text v-else-if="userStatus === 1">审核中</text>
+						<text v-else-if="userStatus === 3">已驳回,请重新完善资料</text>
+					</view>
+					<view class="un-text-desc" v-else>
+						<text class="customer-type-name">{{ userInfo.customerSourceTypeName || '默认类型' }}</text>
+					</view>
+					<view class="un-text-desc" style="margin-left: 20rpx;" v-if="vip_data.isSelf"><text
+							class="customer-type-name">VIP会员</text></view>
+				</view>
+				<view class="float_right right-icon" @click="setUserInfo">
+					<view><text class="ibonfont ibonshezhi21"></text></view>
+					<view class="text">设置</view>
+				</view>
+			</view>
+			<block v-if="personnelReview === 5 && userStatus === 3">
+				<u-notice-bar mode="horizontal" :list="['审核失败,原因:' + userInfo.auditFailReason]" :speed="100"
+					:volume-icon="false" :more-icon="true"></u-notice-bar>
+			</block>
+		</view>
+
+		<view class="num-view" v-if="isLogin">
+			<view class="num-li" v-if="en_token !== aier_en_token" @click="navTo('/pagesT/money/Balance')">
+				<view class="num-text">{{ Number(userInfo.memberBalance) || 0 }}</view>
+				<view class="num-tit">余额</view>
+			</view>
+			<view class="num-li" @click="navTo('/pagesT/pointsMall/index')">
+				<view class="num-text">{{ userInfo.integral || 0 }}</view>
+				<view class="num-tit">股权</view>
+			</view>
+			<view class="num-li" @click="navTo('/pagesT/user/DiscountCoupon')">
+				<view class="num-text">{{ userInfo.couponNum || 0 }}</view>
+				<view class="num-tit">优惠券</view>
+			</view>
+			<view class="num-li" @click="navTo('/pagesT/user/Collection')">
+				<view class="num-text">{{ userInfo.collNum || 0 }}</view>
+				<view class="num-tit">收藏</view>
+			</view>
+		</view>
+		<view class="model-view">
+			<view class="model-tit clearfix">
+				<view class="float_left">我的订单</view>
+				<view class="float_right" @click="navTo('/pagesT/order/order?state=0')">
+					<text>查看全部</text>
+					<text class="ibonfont ibonjinru"></text>
+				</view>
+			</view>
+			<view class="model-main fn-ul order-ul">
+				<view class="fn-li" @click="navTo('/pagesT/order/order?state=' + 1)">
+					<u-badge v-if="order_num['2'] > 0 && isLogin" type="error" :offset="[-16, 18]"
+						:count="order_num['2']"></u-badge>
+					<view class="fn-icon">
+						<image :src="'https://onlineimg.qianniao.vip/ic-dfk-' + theme + '.png'"></image>
+					</view>
+					<view class="fn-label">待付款</view>
+				</view>
+				<view class="fn-li" @click="navTo('/pagesT/order/order?state=' + 2)">
+					<u-badge v-if="order_num['3'] > 0 && isLogin" type="error" :offset="[-16, 18]"
+						:count="order_num['3']"></u-badge>
+					<view class="fn-icon">
+						<image :src="'https://onlineimg.qianniao.vip/ic-dfh-' + theme + '.png'"></image>
+					</view>
+					<view class="fn-label">待发货</view>
+				</view>
+				<view class="fn-li" @click="navTo('/pagesT/order/order?state=' + 3)">
+					<u-badge v-if="order_num['4'] > 0 && isLogin" type="error" :offset="[-16, 18]"
+						:count="order_num['4']"></u-badge>
+					<view class="fn-icon">
+						<image :src="'https://onlineimg.qianniao.vip/ic-dsh-' + theme + '.png'"></image>
+					</view>
+					<view class="fn-label">待收货</view>
+				</view>
+				<view class="fn-li" @click="navTo('/pagesT/order/order?state=' + 4)">
+					<u-badge v-if="order_num['5'] > 0 && isLogin" type="error" :offset="[-16, 18]"
+						:count="order_num['5']"></u-badge>
+					<view class="fn-icon">
+						<image :src="'https://onlineimg.qianniao.vip/ic-finish-' + theme + '.png'"></image>
+					</view>
+					<view class="fn-label">已完成</view>
+				</view>
+				<!-- <view class="fn-li" v-if="en_token !== aier_en_token" @click="navTo('/pagesT/order/ReturnOrder')">
+					<u-badge v-if="order_num['10'] > 0 && isLogin" type="error" :offset="[-16, 18]" :count="order_num['10']"></u-badge>
+					<view class="fn-icon"><image :src="'https://onlineimg.qianniao.vip/ic-service-' + theme + '.png'"></image></view>
+					<view class="fn-label">售后服务</view>
+				</view> -->
+			</view>
+		</view>
+		<!-- 负责代表信息 -->
+		<!-- <view class="model-view" v-if="isLogin">
+			<view class="information-top">
+				<image src="https://onlineimg.qianniao.vip/ic-db.png" class="img"></image>
+				<view class="text">负责代表信息</view>
+			</view>
+			<view class="information-bottom">
+				<ul class="ul-list">
+					<li class="ul-item ellipsis">
+						<text class="left">出货门店:</text>
+						<text class="right">{{ userInfo.shopDate.name }}</text>
+					</li>
+					<li class="ul-item">
+						<text class="left">业代姓名:</text>
+						<text class="right">{{ userInfo.salesManName || '客服' }}</text>
+					</li>
+					<li class="ul-item">
+						<text class="left">服务时间:</text>
+						<text class="right">全天</text>
+					</li>
+					<li class="ul-item">
+						<text class="left">门店电话:</text>
+						<text class="right right-last" @click="lianxi(userInfo.salesManMobile || userInfo.shopDate.mobile)">
+							{{ userInfo.salesManMobile || userInfo.shopDate.mobile }}
+						</text>
+					</li>
+				</ul>
+			</view>
+		</view> -->
+		<view class="model-view" v-if="en_token !== aier_en_token">
+			<view class="model-tit">我的服务</view>
+			<view class="model-main fn-ul">
+				<!-- <view class="fn-li" @click="navTo('/pagesT/user/VipList')">
+					<view class="fn-icon"><image :src="'https://onlineimg.qianniao.vip/ic-vip-' + theme + '.png'"></image></view>
+					<view class="fn-label">会员卡</view>
+				</view> -->
+				<view class="fn-li" @click="navTo('/pagesT/user/dyquan')">
+					<view class="fn-icon">
+						<image src="https://api.junhailan.com/img/user/dyq.png"></image>
+					</view>
+					<view class="fn-label">我的抵用券</view>
+				</view>
+				<view class="fn-li" @click="navTo('/pagesT/address/address')">
+					<view class="fn-icon">
+						<image src="https://api.junhailan.com/img/user/wddz.png"></image>
+					</view>
+					<view class="fn-label">我的地址</view>
+				</view>
+				<view class="fn-li" @click="navTo('/pagesT/user/myyhk')">
+					<view class="fn-icon">
+						<image src="https://api.junhailan.com/img/user/yhk.png"></image>
+					</view>
+					<view class="fn-label">我的优惠卡</view>
+				</view>
+				<!-- 	<view class="fn-li" @click="goDistribution">
+					<view class="fn-icon"><image :src="'https://onlineimg.qianniao.vip/ic-fen-' + theme + '.png'"></image></view>
+					<view class="fn-label">分销中心</view>
+				</view> -->
+				<view class="fn-li" @click="navTo('/pagesT/user/Collection')">
+					<view class="fn-icon">
+						<image src="https://api.junhailan.com/img/user/wdsc.png"></image>
+					</view>
+					<view class="fn-label">我的收藏</view>
+				</view>
+			</view>
+		</view>
+		<view class="model-view list-model-view">
+			<view class="model-tit">工具与服务</view>
+			<view class="model-main list-ul new-class">
+				<view class="list-li clearfix" @click="openpop">
+					<view class="fn-icon">
+						<image src="https://api.junhailan.com/img/user/ic-kf.png" mode="aspectFill"></image>
+						<view>{{ userInfo.salesManName ? '专属客服' : '客服中心' }}</view>
+					</view>
+				</view>
+				<!-- <view class="list-li clearfix" v-if="en_token === aier_en_token" @click="navTo('/pagesT/address/address')">
+					<view class="fn-icon">
+						<image src="https://onlineimg.qianniao.vip/ic-dz.png" mode="aspectFill"></image>
+						<view>我的地址</view>
+					</view>
+				</view> -->
+				<!-- <view class="list-li clearfix" v-if="en_token === aier_en_token" @click="navTo('/pagesT/money/CustomerBalanceDetail')">
+					<view class="fn-icon">
+						<image src="https://onlineimg.qianniao.vip/ic-3.png" mode="aspectFill"></image>
+						<view>往来查询</view>
+					</view>
+				</view> -->
+				<view class="list-li clearfix" @click="navTo('/pagesT/unit/yhk')">
+					<view class="fn-icon">
+						<image src="https://api.junhailan.com/img/user/hyk.png" mode="aspectFill"></image>
+						<view>优惠卡</view>
+					</view>
+				</view>
+				<view class="list-li clearfix" @click="navTo('/pagesT/user/GetCoupon')">
+					<view class="fn-icon">
+						<image src="https://api.junhailan.com/img/user/lqzx.png" mode="aspectFill"></image>
+						<view>领券中心</view>
+					</view>
+				</view>
+				<view class="list-li clearfix" @click="navTo('/pagesT/order/orderT?state=1')">
+					<view class="fn-icon">
+						<image src="https://api.junhailan.com/img/user/cgqd.png" mode="aspectFill"></image>
+						<view>我的预约</view>
+					</view>
+				</view>
+				<view class="list-li clearfix" @click="navTo('/pagesT/user/needSubmit')">
+					<view class="fn-icon">
+						<image src="https://api.junhailan.com/img/user/xqtb.png" mode="aspectFill"></image>
+						<view>需求提报</view>
+					</view>
+				</view>
+				<view class="list-li clearfix" @click="navTo('/pagesT/user/guquan')">
+					<view class="fn-icon">
+						<image src="https://api.junhailan.com/img/user/gq.png" mode="aspectFill"></image>
+						<view>股份</view>
+					</view>
+				</view>
+				<!-- #ifdef MP -->
+				<view class="list-li">
+					<button class="clearfix share-btn" open-type="share">
+						<view class="fn-icon">
+							<image src="https://api.junhailan.com/img/user/tjfx.png" mode="aspectFill"></image>
+							<view class="share">推荐分享</view>
+						</view>
+					</button>
+				</view>
+				<!-- #endif -->
+				<!-- #ifdef APP-PLUS -->
+				<!-- <view class="list-li clearfix"  @click="share">
+					<view class="fn-icon">
+						<image src="https://onlineimg.qianniao.vip/ic-5.png" mode="aspectFill"></image>
+						<view>推荐分享</view>
+					</view>
+				</view> -->
+				<!-- <view class="list-li clearfix" @click="share">
+					<view class="float_left">
+						<view class="fn-icon"><image src="https://onlineimg.qianniao.vip/ic-5.png" mode="aspectFill"></image></view>
+						<text>推荐分享</text>
+					</view>
+					<view class="float_right"><text class="ibonfont ibonjinru"></text></view>
+				</view> -->
+				<!-- #endif -->
+
+				<view class="list-li clearfix" v-if="en_token !== aier_en_token" @click="setUserInfo">
+					<view class="fn-icon">
+						<image src="https://api.junhailan.com/img/user/sz.png" mode="aspectFill"></image>
+						<view>设置</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<u-modal v-model="show_change_name" @confirm="nameCofirm" @cancel="nameCancel" :show-cancel-button="true"
+			content="您的昵称为小程序默认昵称,是否立即修改" confirm-text="去修改" cancel-text="下次再说"></u-modal>
+		<u-modal v-model="tip_model" @confirm="finishCofirm" @cancel="tipCancel" :show-cancel-button="true"
+			content="请先完善资料,再进行购物" confirm-text="去完善" cancel-text="逛逛商城"></u-modal>
+		<Tabbar v-model="current"></Tabbar>
+
+		<u-popup v-model="call_show" width="600rpx" mode="center" border-radius="20">
+			<view class="call-pop">
+				<view class="title">
+					<text>专属客户经理</text>
+					<view class="close-icon" @click="cancalCall">
+						<u-icon name="close" size="28" color="#6c6c6c"></u-icon>
+					</view>
+				</view>
+				<view class="call-ul">
+					<view class="call-li">
+						<text class="label">客户经理:</text>
+						<text class="value">{{ userInfo.salesManName }}</text>
+					</view>
+					<view class="call-li">
+						<text class="label">联系方式:</text>
+						<text class="value">{{ userInfo.salesManMobile }}</text>
+					</view>
+				</view>
+				<view class="call-btn primary-btn" @click="lianxi(userInfo.salesManMobile)">一键通话</view>
+			</view>
+		</u-popup>
+	</view>
+</template>
+
+<script>
+	import Login from '@/components/Login.vue';
+	import uniStatusBar from '@/components/uni-status-bar/uni-status-bar.vue';
+	import {
+		getEnToken,
+		getToken
+	} from '@/access/common.js';
+
+	export default {
+		components: {
+			Login,
+			uniStatusBar
+		},
+		// 下拉刷新
+		onPullDownRefresh() {
+			if (this.$store.state.hasLogin) {
+				this.getCustomerInfo();
+				this.getMyVipCards();
+				// 获取分销文字设置
+				this.getTxtSetting();
+				this.getDistributionSetting();
+			} else {
+				uni.stopPullDownRefresh();
+			}
+		},
+		data() {
+			return {
+				tip_model: false,
+				show_change_name: false,
+				call_show: false,
+				current: 3,
+				distributionSet: {},
+				userInfo: {},
+				avatar: '',
+				vip_data: {},
+				vip_num: 0,
+				// 爱尔
+				aier_en_token: '8ecdecee648713391dc144f29bea5ca7',
+				en_token: getEnToken(),
+				order_num: {}
+			};
+		},
+		watch: {
+			'$store.state.locationObj'(val) {
+				if (JSON.stringify(val) === '{}') {
+					this.getAuthorizeInfo();
+					return;
+				}
+				if (this.$store.state.hasLogin) {
+					this.getCustomerInfo();
+				}
+			},
+			isLogin(val) {
+				if (val) {
+					// 获取用户详情
+					this.getCustomerInfo();
+					// 获取分销文字设置
+					this.getTxtSetting();
+					// 获取分销基础设置
+					this.getDistributionSetting();
+					this.getOrderStatusNum();
+				} else {
+					this.vip_data = {};
+					
+				}
+			}
+		},
+		computed: {
+			// 业代姓名
+			salesManName() {
+				if (this.$store.state.userStatus.salesManName) {
+					return this.$store.state.userStatus.salesManName;
+				} else {
+					return '客服';
+				}
+			},
+			// 门店电话
+			salesManMobile() {
+				if (this.$store.state.userStatus.salesManMobile) {
+					return this.$store.state.userStatus.salesManMobile;
+				} else {
+					return this.$store.state.userStatus.enterpriseMobile;
+				}
+			},
+			// 门店
+			enterpriseName() {
+				return this.$store.state.enterpriseInfo.enterpriseName;
+			},
+			baseSet() {
+				return this.$store.state.baseSet;
+			},
+			enterprisemobile() {
+				return this.$store.state.enterpriseInfo.mobile;
+			},
+			isLogin() {
+				return this.$store.state.hasLogin;
+			},
+			// 客户审核
+			personnelReview() {
+				return this.baseSet.personnelReview;
+			},
+			userStatus() {
+				return this.$store.state.userStatus.status;
+			},
+			enableStatus() {
+				return this.$store.state.userStatus.enableStatus;
+			},
+			// 完善资料 4禁用 5启用
+			finishData() {
+				return this.baseSet.finishData;
+			}
+		},
+		onLoad() {
+			if (JSON.stringify(this.$store.state.locationObj) === '{}') {
+				this.getAuthorizeInfo();
+				return;
+			}
+			if (this.$store.state.hasLogin) {
+				// 获取分销文字设置
+				this.getTxtSetting();
+				// 获取分销基础设置
+				this.getDistributionSetting();
+				// this.avatar = this.$common.getAvator();
+			}
+			// #ifdef MP-WEIXIN
+			// 小程序的原生菜单中显示分享按钮
+			uni.showShareMenu({
+				withShareTicket: false,
+				menus: ['shareAppMessage', 'shareTimeline']
+			});
+			// #endif
+		},
+		onShow() {
+			if (this.$store.state.hasLogin) {
+				// 获取用户详情
+				this.getCustomerInfo();
+				this.getOrderStatusNum();
+			}
+		},
+		methods: {
+			// #ifdef APP-PLUS
+			share() {
+				uni.share({
+					provider: 'weixin',
+					scene: 'WXSceneSession',
+					type: 5,
+					title: this.baseSet.shop,
+					imageUrl: this.baseSet.images,
+					success: function(res) {
+						console.log('success:' + JSON.stringify(res));
+					},
+					fail: function(err) {
+						console.log('fail:' + JSON.stringify(err));
+					}
+				});
+			},
+			// #endif
+			// 设置用户信息
+			setUserInfo() {
+				if (!(this.finishData === 5 && this.userInfo.status !== 2)) {
+					this.navTo('/pagesT/selfconfig/selfconfig');
+				} else {
+					this.navTo('/pagesT/user/editUserInfo');
+				}
+			},
+			loginSuccess() {
+				// this.isLogin = this.$store.state.hasLogin;
+				// this.getCustomerInfo();
+				// this.getMyVipCards();
+			},
+			/**
+			 * 统一跳转接口,拦截未登录路由
+			 * navigator标签现在默认没有转场动画,所以用view
+			 */
+			navTo(url) {
+				// console.log(this.hasLogin)
+				// return
+				if (!this.$store.state.hasLogin) {
+					// #ifdef APP-PLUS
+					uni.reLaunch({
+						url: '/pagesT/public/wxLogin'
+					});
+					// #endif
+					// #ifdef MP-WEIXIN
+					uni.reLaunch({
+						url: '/pagesT/binding/bindInfo'
+					});
+					//#endif
+					// #ifdef H5
+					uni.navigateTo({
+						url: '/pagesT/public/wxLogin?loginType=2'
+					});
+					// #endif
+				} else {
+					uni.navigateTo({
+						url
+					});
+				}
+			},
+			async goDistribution() {
+				if (!this.$store.state.hasLogin) {
+					// #ifdef APP-PLUS || H5
+					uni.reLaunch({
+						url: '/pagesT/public/wxLogin'
+					});
+					// #endif
+					// #ifdef MP-WEIXIN
+					uni.reLaunch({
+						url: '/pagesT/binding/bindInfo'
+					});
+					//#endif
+				} else {
+					if (this.distributionSet.level && this.distributionSet.level > 0) {
+						this.getInfoBusinessman();
+					} else {
+						this.$api.msg('抱歉,当前商家暂未开启分销功能');
+					}
+				}
+			},
+			// 获取文字设置
+			async getTxtSetting() {
+				this.$u.api.getTxtSetting().then(({
+					data
+				}) => {
+					this.$store.commit('commit_distributionTextSet', data.base_form || {});
+				});
+			},
+			// 获取分销商详情
+			async getInfoBusinessman() {
+				if (this.userInfo.status !== 2) {
+					this.$api.msg('抱歉,您的账号未通过审核');
+					return;
+				}
+				this.$u.api.getInfoBusinessman().then(({
+					data
+				}) => {
+					if (JSON.stringify(data) === '{}') {
+						// 不是分销商进入申请分销商页面
+						this.goPage('/pagesT/Distribution/ApplyTerm');
+					} else {
+						if (data.auditStatus === 2) {
+							// 进入分销中心页面
+							this.goPage('/pagesT/Distribution/Distribution');
+						} else {
+							this.goPage('/pagesT/Distribution/ApplyAudit?auditStatus=1&applicationCondition=' +
+								data.applicationCondition);
+						}
+					}
+				});
+			},
+			getDistributionSetting() {
+				this.$u.api.getDistributionSetting().then(({
+					data
+				}) => {
+					this.$store.commit('commit_distributionSet', data);
+					this.distributionSet = data;
+				});
+			},
+			// 获取我的会员卡
+			getMyVipCards() {
+				this.$u.api
+					.getMyVipCards({
+						page: 1,
+						pageSize: 1
+					})
+					.then(({
+						data,
+						pageTotal
+					}) => {
+						if (data.length) {
+							this.vip_num = pageTotal;
+							this.vip_data = {
+								...data[0],
+								isSelf: true
+							};
+						} else {
+							this.getAllVipCard();
+						}
+					});
+			},
+			// 获取会员列表
+			getAllVipCard() {
+				this.$u.api
+					.getAllVipCard({
+						page: 1,
+						pageSize: 1
+					})
+					.then(({
+						data
+					}) => {
+						if (data.length) {
+							this.vip_data = data[0];
+						}
+					});
+			},
+			//用户订单状态数量统计
+			getOrderStatusNum() {
+				this.$u.api.getOrderStatusNum().then(res => {
+					this.order_num = res.data;
+				});
+			},
+			// 获取用户信息
+			getCustomerInfo() {
+				this.$u.api.getCustomerInfo().then(({
+					data
+				}) => {
+					uni.stopPullDownRefresh();
+					this.userInfo = data;
+					if (this.userInfo.status === 2) {
+						this.getMyVipCards();
+					}
+					this.$store.commit('commit_userStatus', data);
+					if (this.baseSet.finishDataGo && data.status === 0) {
+						this.tip_model = true;
+					}
+					if (this.userInfo.name == '微信用户') {
+						let show = uni.getStorageSync('showchangename')
+						if(show != 1) {
+							this.show_change_name = true
+						}
+					}
+				});
+			},
+			// 联系客服
+			async lianxi(phone) {
+				this.cancalCall();
+				uni.makePhoneCall({
+					phoneNumber: phone || this.enterprisemobile
+				});
+			},
+			cancalCall() {
+				this.call_show = false;
+			},
+			openpop() {
+				if (this.userInfo.salesManName) {
+					this.call_show = true;
+				} else {
+					this.lianxi(this.enterprisemobile);
+				}
+			},
+			// 完善资料提示取消
+			tipCancel() {
+				this.tip_model = false;
+			},
+			nameCancel() {
+				uni.setStorageSync('showchangename',1)
+				this.show_change_name = false;
+				
+			},
+			// 跳转完善资料页面
+			finishCofirm() {
+				this.goPage('/pagesT/user/editUserInfo');
+			},
+			nameCofirm() {
+				uni.setStorageSync('showchangename',1)
+				this.goPage('/pagesT/selfconfig/selfconfig');
+			},
+			
+		},
+		onShareAppMessage(options) {
+			return {
+				title: this.$store.state.baseSet.shop,
+				path: '/pages/index/index?businessmanId=' + (this.$store.state.userStatus.id || ''),
+				success: res => {
+					console.log(res);
+				}
+			};
+		},
+		// #ifdef MP-WEIXIN
+		// 分享到朋友圈
+		onShareTimeline(obj) {},
+		// 收藏小程序
+		onAddToFavorites() {}
+		// #endif
+	};
+</script>
+
+<style lang="scss">
+	page {
+		background-color: #ffffff;
+	}
+
+	.user-index {
+		overflow-x: hidden;
+		width: 750upx;
+	}
+
+	.user-top {
+		color: #ffffff;
+		position: relative;
+		width: 100%;
+		height: 418rpx;
+		overflow: hidden;
+
+		.circle-big {
+			content: '';
+			display: block;
+			width: 180%;
+			height: 418rpx;
+			position: absolute;
+			left: 50%;
+			transform: translateX(-50%);
+			top: 0;
+			overflow: hidden;
+			border-radius: 0 0 50% 50%;
+			background: linear-gradient(156deg, #ff6b2c 0%, #ec2723 100%);
+
+			.circle-one {
+				position: absolute;
+				top: 0;
+				left: 20%;
+				border-bottom-right-radius: 100%;
+				width: 557rpx;
+				height: 60rpx;
+				background: linear-gradient(180deg, rgba(255, 60, 58, 0.62) 10%, #ff6d2f 100%);
+			}
+
+			.circle-two {
+				width: 155rpx;
+				height: 155rpx;
+				background: linear-gradient(211deg, #ff8d33 0%, #ff633b 62%);
+				border-radius: 100%;
+				position: absolute;
+				bottom: -12rpx;
+				left: 19%;
+			}
+
+			.vip-view {
+				width: 670upx;
+				padding: 26rpx 40rpx;
+				height: 98rpx;
+				border-radius: 15rpx;
+				background: linear-gradient(90deg, #8e0e15 0%, #550609 100%);
+				border-top: 4rpx solid rgba(255, 219, 153, 1);
+				color: #ffe285;
+				z-index: 1;
+				position: absolute;
+				bottom: 0;
+				left: 50%;
+				transform: translateX(-50%);
+				overflow: hidden;
+
+				.vip-name {
+					display: inline-block;
+					font-size: 32rpx;
+					font-weight: 500;
+				}
+
+				.desc {
+					font-size: 28rpx;
+					font-weight: 400;
+					margin-left: 16rpx;
+					display: inline-block;
+				}
+
+				.vip-btn {
+					width: 140rpx;
+					font-size: 24rpx;
+					font-weight: 400;
+					height: 42rpx;
+					background: linear-gradient(90deg, #ffbf59 0%, #ff3b2d 100%);
+					border-radius: 21rpx;
+					color: #ffefc5;
+					text-align: center;
+					line-height: 42rpx;
+				}
+			}
+		}
+
+		.user-info {
+			padding: 0 40rpx;
+			padding-top: 80rpx;
+			position: relative;
+			z-index: 9;
+
+			.ui-img {
+				border-radius: 100%;
+				border: 4upx solid #ffffff;
+				position: relative;
+
+				.edit-bth {
+					position: absolute;
+					width: 86rpx;
+					height: 32rpx;
+					background: #b620e0;
+					border-radius: 16rpx;
+					text-align: center;
+					font-size: 20rpx;
+					line-height: 32rpx;
+					left: 50%;
+					transform: translateX(-50%);
+					bottom: -8rpx;
+				}
+			}
+
+			.right-icon {
+				text-align: center;
+				padding-top: 22rpx;
+
+				.ibonfont {
+					font-size: 40rpx;
+				}
+
+				.text {
+					font-size: 20rpx;
+					font-weight: 400;
+					color: #ffffff;
+					line-height: 28rpx;
+					margin-top: 9rpx;
+				}
+			}
+
+			.user-name {
+				font-size: 32upx;
+				padding-left: 10upx;
+				margin-top: 14rpx;
+				width: 450rpx;
+
+				.login-btn {
+					color: #fff;
+					font-size: 32rpx;
+					width: 100%;
+					text-align: left;
+				}
+
+				.un-text {
+					-webkit-line-clamp: 1;
+				}
+
+				.un-text-desc {
+					float: left;
+					font-size: 20upx;
+					margin-top: 12rpx;
+					width: 120rpx;
+					height: 36rpx;
+					line-height: 36rpx;
+					text-align: center;
+					background: rgba(255, 139, 130, 0.38);
+					border-radius: 18rpx;
+				}
+
+				.ulogin-bth {
+					text-align: left;
+					height: 46upx;
+					line-height: 46upx;
+					border-radius: 46upx;
+					padding: 0;
+					color: #ffffff;
+					float: left;
+					background-color: transparent;
+					margin-top: 20upx;
+
+					&::after {
+						border: 0 none;
+					}
+				}
+			}
+		}
+	}
+
+	.num-view {
+		display: flex;
+		padding-bottom: 10upx;
+		border-bottom: 16rpx solid #f9f9f9;
+		padding: 30rpx 0;
+
+		.num-li {
+			flex: 4;
+			text-align: center;
+			position: relative;
+
+			.num-text {
+				font-size: 32upx;
+				font-weight: 600;
+				padding-bottom: 10upx;
+				font-family: DIN-Medium;
+			}
+
+			.num-tit {
+				font-size: 24upx;
+				font-weight: 400;
+			}
+
+			&::after {
+				content: '';
+				display: block;
+				position: absolute;
+				width: 1px;
+				height: 40upx;
+				background-color: #ffffff;
+				right: 0;
+				top: 50%;
+				transform: translateY(-50%);
+			}
+		}
+
+		.num-li:last-child {
+			&::after {
+				background-color: transparent;
+			}
+		}
+	}
+
+	.model-view {
+		border-bottom: 16rpx solid #f9f9f9;
+		border-radius: 12upx;
+		padding-bottom: 40upx;
+		background-color: #ffffff;
+		position: relative;
+		z-index: 1;
+
+		.information-bottom {
+			// width: 750rpx;
+			height: 100rpx;
+			text-align: center;
+			padding-left: 48rpx;
+
+			.ul-list {
+				display: flex;
+				flex-wrap: wrap;
+				margin-top: 32rpx;
+
+				.ul-item {
+					text-align: left;
+					width: 50%;
+					-webkit-line-clamp: 1;
+
+					&:nth-child(3),
+					&:nth-child(4) {
+						margin-top: 24rpx;
+					}
+
+					.left {
+						font-size: 24rpx;
+						line-height: 33rpx;
+						color: #9d9d9d;
+						font-weight: 500;
+					}
+
+					.right {
+						font-size: 24rpx;
+						line-height: 33rpx;
+						color: #000000;
+						font-weight: 600;
+					}
+
+					.right-last {
+						color: #fa6400;
+						font-weight: 600;
+					}
+				}
+			}
+		}
+
+		// 负责信息
+		.information-top {
+			// width:750rpx ;
+			height: 72rpx;
+			background: url(https://onlineimg.qianniao.vip/bck.png) no-repeat;
+			background-position: -24rpx 0, 0 0;
+			background-size: 800rpx 99rpx;
+			padding-top: 17rpx;
+
+			.img {
+				display: inline-block;
+				width: 33rpx;
+				height: 33rpx;
+				vertical-align: middle;
+				margin-left: 56rpx;
+			}
+
+			.text {
+				font-size: 32rpx;
+				font-weight: 600;
+				color: #2a2a2a;
+				line-height: 45rpx;
+				vertical-align: middle;
+				display: inline-block;
+				margin-left: 6rpx;
+			}
+		}
+
+		.model-tit {
+			padding: 32upx;
+			font-size: 32rpx;
+			font-weight: 600;
+			color: #000000;
+
+			.float_right {
+				font-size: 28upx;
+				color: #9d9d9d;
+				font-weight: 400;
+
+				.ibonjinru {
+					margin-left: 10upx;
+					font-size: 24upx;
+				}
+			}
+		}
+
+		.list-ul {
+			padding: 0 30upx;
+			display: flex;
+			flex-wrap: wrap;
+
+			.list-li {
+				line-height: 90upx;
+				font-size: 28upx;
+				color: #2a2a2a;
+				width: 25%;
+				text-align: center;
+
+				.fn-icon {
+					// margin-right: 24upx;
+					// display: inline-block;
+					text-align: center;
+
+					.share {
+						line-height: 95rpx;
+						padding-left: 8rpx;
+					}
+
+					image {
+						width: 89rpx;
+						height: 89rpx;
+						vertical-align: middle;
+						transform: translateY(3rpx); // width: 50upx;
+						// height: 50upx;
+						// vertical-align: middle;
+						// transform: translateY(-2upx);
+					}
+				}
+
+				.ibonjinru {
+					font-size: 28upx;
+					color: #9d9d9d;
+				}
+
+				.share-btn {
+					background-color: #ffffff;
+					font-size: 28rpx;
+					padding-left: 0;
+					padding-right: 0;
+					padding-top: 2rpx;
+					text-align: left;
+					color: #2a2a2a;
+				}
+			}
+		}
+
+		.fn-ul {
+			display: flex;
+			flex-wrap: wrap;
+
+			.fn-li {
+				width: 25%;
+				flex-grow: 1;
+				text-align: center;
+				font-size: 26upx;
+				margin-top: 16upx;
+
+				.fn-label {
+					color: #6a6a6a;
+					font-size: 26rpx;
+				}
+
+				.fn-icon {
+					image {
+						width: 70upx;
+						height: 70upx;
+					}
+
+					.ibonfont {
+						color: #000000;
+						font-size: 50upx;
+						padding-bottom: 10upx;
+						display: inline-block;
+					}
+				}
+			}
+		}
+
+		.order-ul {
+			.fn-li {
+				width: 20%;
+				position: relative;
+
+				.fn-icon {
+					image {
+						width: 64upx;
+						height: 64upx;
+						margin-bottom: 10rpx;
+					}
+				}
+			}
+		}
+	}
+
+	.list-model-view {
+		margin-bottom: 0;
+		border-bottom: 0;
+		padding-bottom: 0;
+	}
+
+	.call-pop {
+		.title {
+			text-align: center;
+			padding: 0 30rpx;
+			line-height: 90rpx;
+			height: 90rpx;
+			font-weight: bold;
+			position: relative;
+
+			.close-icon {
+				position: absolute;
+				font-weight: normal;
+				right: 30rpx;
+				top: 50%;
+				transform: translateY(-50%);
+			}
+		}
+
+		.call-ul {
+			padding: 0 30rpx 30rpx;
+
+			.call-li {
+				line-height: 80rpx;
+				height: 80rpx;
+			}
+		}
+
+		.call-btn {
+			width: 100%;
+			line-height: 80rpx;
+			height: 80rpx;
+			text-align: center;
+		}
+	}
+</style>

+ 157 - 0
pagesT/Distribution/AddUpMoney.vue

@@ -0,0 +1,157 @@
+<template>
+	<view class="AddUpMoney">
+		<view class="top-money-view">
+			<view class="money-num">{{ totalMoney || 0 }}</view>
+			<view class="add-up-label">{{ text_set.commission_c || '累计佣金' }}(元)</view>
+		</view>
+		<view class="cash-out-view">
+			<view class="money-num">{{ balance || 0 }}</view>
+			<view class="add-up-label">{{ text_set.commission_w || '可提现佣金' }}(元)</view>
+			<view class="cash-our-btn" @click="goPage('/pagesT/Distribution/Withdrawal?balance=' + (balance || 0) + '&id=' + businessman_id)">
+				申请{{ text_set.withdrawal || '提现' }}
+			</view>
+		</view>
+		<view class="cash-ul">
+			<view class="cash-li clearfix">
+				<text class="float_left cash-li-label">{{ text_set.commission_s || '待审核佣金' }}</text>
+				<text class="float_right cash-li-value">
+					¥
+					<text class="num-text">{{ waitAuditWithdraw || 0 }}</text>
+				</text>
+			</view>
+			<view class="cash-li clearfix">
+				<text class="float_left cash-li-label">{{ text_set.commission_d || '待打款佣金' }}</text>
+				<text class="float_right cash-li-value">
+					¥
+					<text class="num-text">{{ auditWithdraw || 0 }}</text>
+				</text>
+			</view>
+			<view class="cash-li clearfix">
+				<text class="float_left cash-li-label">{{ text_set.commission_r || '待入账佣金' }}</text>
+				<text class="float_right cash-li-value">
+					¥
+					<text class="num-text">{{ waitMoney || 0 }}</text>
+				</text>
+			</view>
+		</view>
+		<view class="user-tip">
+			<view class="user-tip-tit">用户须知</view>
+			<view class="user-tip-li">买家确认收货后,立即获得{{ text_set.commission || '佣金' }}</view>
+			<view class="user-tip-li">注意:{{ text_set.commission_w || '可提现佣金' }}满0.01元后才能申请{{ text_set.withdrawal || '提现' }}</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			text_set: {},
+			balance: 0,
+			businessman_id: 0,
+			totalMoney: 0,
+			waitMoney: 0,
+			waitAuditWithdraw: 0,
+			auditWithdraw: 0
+		};
+	},
+	onLoad(options) {
+		uni.setNavigationBarColor({
+			frontColor: '#ffffff',
+			backgroundColor: '#fb604e'
+		});
+
+		this.text_set = this.$store.state.distributionTextSet;
+		if (this.text_set.commission_c) {
+			uni.setNavigationBarTitle({
+				title: this.text_set.commission_c || '累计佣金'
+			});
+		}
+		console.log(options);
+		this.balance = options.balance;
+		this.totalMoney = options.totalMoney;
+		this.waitMoney = options.waitMoney;
+		this.auditWithdraw = options.auditWithdraw;
+		this.waitAuditWithdraw = options.waitAuditWithdraw;
+		this.businessman_id = options.id;
+	}
+};
+</script>
+
+<style lang="scss">
+.top-money-view {
+	background: #fb604e;
+	padding: 50upx 0;
+	text-align: center;
+	.money-num {
+		font-size: 64upx;
+		color: #ffffff;
+		padding-bottom: 20upx;
+	}
+	.add-up-label {
+		color: #ffffff;
+		opacity: 0.5;
+		font-size: 24upx;
+	}
+}
+.cash-out-view {
+	text-align: center;
+	padding: 50upx 0;
+	border-bottom: 20upx solid $page-color-base;
+	.money-num {
+		font-size: 54upx;
+		color: #ff4c1a;
+		padding-bottom: 20upx;
+		font-weight: bold;
+	}
+	.add-up-label {
+		color: #999;
+		font-size: 24upx;
+	}
+	.cash-our-btn {
+		line-height: 60upx;
+		height: 60upx;
+		background-color: #fa502c;
+		color: #fff;
+		text-align: center;
+		font-size: 28upx;
+		border-radius: 60upx;
+		width: 400upx;
+		margin: 50upx auto 0;
+	}
+}
+.cash-ul {
+	padding: 0 20upx;
+	border-bottom: 20upx solid $page-color-base;
+	.cash-li {
+		line-height: 90upx;
+		border-bottom: 1px solid #f5f5f5;
+		font-size: 26upx;
+		.cash-li-value {
+			font-size: 22upx;
+			.num-text {
+				font-weight: bold;
+				font-size: 28upx;
+				margin-left: 4upx;
+			}
+		}
+		&:last-child {
+			border-bottom: 0 none;
+		}
+	}
+}
+.user-tip {
+	padding: 30upx 20upx;
+	.user-tip-tit {
+		font-size: 24upx;
+		font-weight: bold;
+		padding-bottom: 26upx;
+		color: #444;
+	}
+	.user-tip-li {
+		font-size: 24upx;
+		line-height: 36upx;
+		color: #666666;
+	}
+}
+</style>

+ 34 - 0
pagesT/Distribution/Agreement.vue

@@ -0,0 +1,34 @@
+<template>
+	<!-- 申请协议 -->
+	<view>
+		<view class="argee-title">{{ distributionSet.title }}</view>
+		<view class="argee-cont"><u-parse :html="distributionSet.desc"></u-parse></view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			distributionSet: {}
+		};
+	},
+	onLoad() {
+		this.distributionSet = this.$store.state.distributionSet;
+		uni.setNavigationBarTitle({
+			title: this.distributionSet.title
+		});
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+.argee-title {
+	line-height: 32upx;
+	padding: 20upx 0;
+	text-align: center;
+}
+.argee-cont {
+	padding: 0 20upx 20upx;
+}
+</style>

+ 194 - 0
pagesT/Distribution/Application.vue

@@ -0,0 +1,194 @@
+<template>
+	<!-- 提现详情 -->
+	<view class="application">
+		<view class="application_e">
+			<text class="num">+{{ detail_data.money || 0 }}</text>
+			<text class="examine">
+				{{
+					detail_data.auditStatus === 1
+						? '待审核'
+						: detail_data.auditStatus === 2
+						? '打款成功'
+						: detail_data.auditStatus === 3
+						? '无效'
+						: detail_data.auditStatus === 4
+						? '待打款'
+						: ''
+				}}
+			</text>
+		</view>
+		<view class="application_t">
+			<view class="application_type">
+				<text class="application_txt">提现类型</text>
+				<view style="float: right;">
+					<text class="ibonfont ibonweixinzhifu application_img" v-if="detail_data.type === 1"></text>
+					<text class="ibonfont application_img ibonumidd17" v-if="detail_data.type === 2"></text>
+					<text class="ibonfont application_img ibonhuodaofukuan" v-if="detail_data.type === 3"></text>
+					<text class="application_name">{{ detail_data.type === 1 ? '微信钱包' : detail_data.type === 2 ? '支付宝' : detail_data.type === 3 ? '银行卡' : '' }}</text>
+				</view>
+			</view>
+			<view style="margin:30upx 0 0 60upx;">
+				<u-time-line>
+					<u-time-line-item node-top="2">
+						<template v-slot:node>
+							<view class="u-node" :style="{ background: detail_data.auditStatus >= 1 ? '#19be6b' : '#d0d0d0' }">
+								<u-icon name="checkbox-mark" color="#fff" :size="24"></u-icon>
+							</view>
+						</template>
+						<template v-slot:content>
+							<view class="u-line-box" :style="{ color: detail_data.auditStatus >= 1 ? '#333' : '#999999' }">
+								<view class="u-order-desc">申请时间</view>
+								<view class="u-order-time">{{ $_utils.formatDate(detail_data.createTime) }}</view>
+							</view>
+						</template>
+					</u-time-line-item>
+					<u-time-line-item node-top="2">
+						<template v-slot:node>
+							<view class="u-node" :style="{ background: [2, 4].includes(detail_data.auditStatus) ? '#19be6b' : '#d0d0d0' }">
+								<u-icon name="checkbox-mark" color="#fff" :size="24"></u-icon>
+							</view>
+						</template>
+						<template v-slot:content>
+							<view class="u-line-box" :style="{ color: [2, 4].includes(detail_data.auditStatus) ? '#333' : '#999999' }">
+								<view class="u-order-desc">审核时间</view>
+								<view class="u-order-time" v-if="detail_data.auditTime">{{ $_utils.formatDate(detail_data.auditTime) }}</view>
+							</view>
+						</template>
+					</u-time-line-item>
+					<u-time-line-item node-top="2">
+						<template v-slot:node>
+							<view class="u-node" :style="{ background: detail_data.auditStatus === 2 ? '#19be6b' : '#d0d0d0' }">
+								<u-icon name="checkbox-mark" color="#fff" :size="24"></u-icon>
+							</view>
+						</template>
+						<template v-slot:content>
+							<view class="u-line-box" :style="{ color: detail_data.auditStatus === 2 ? '#333' : '#999999' }">
+								<view class="u-order-desc">完成打款</view>
+								<view class="u-order-time" v-if="detail_data.payTime">{{ $_utils.formatDate(detail_data.payTime) }}</view>
+							</view>
+						</template>
+					</u-time-line-item>
+				</u-time-line>
+			</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			withdrawals_id: 0,
+			isLoding: false,
+			detail_data: {}
+		};
+	},
+	onLoad(options) {
+		this.withdrawals_id = options.id;
+	},
+	onShow() {
+		this.CommissionWithdrawalsDetail();
+	},
+	methods: {
+		CommissionWithdrawalsDetail() {
+			this.$u.api.CommissionWithdrawalsDetail(this.withdrawals_id).then(res=>{
+				this.detail_data = res.data;
+			})
+
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+body {
+	background-color: $page-color-base;
+}
+
+.application {
+	.application_e {
+		text-align: center;
+		height: 300upx;
+		background-color: #ffffff;
+
+		.num {
+			font-weight: bold;
+			font-size: 80upx;
+			display: block;
+			padding-top: 80upx;
+		}
+
+		.examine {
+			color: #fd463e;
+			font-size: 30upx;
+			padding-top: 40upx;
+			display: block;
+		}
+	}
+
+	.application_t {
+		margin-top: 20upx;
+		background-color: #ffffff;
+		height: 400upx;
+
+		.application_type {
+			height: 80upx;
+			line-height: 80upx;
+			border-bottom: 1px solid $page-color-base;
+			font-size: 28upx;
+
+			.application_txt {
+				font-size: 26upx;
+				padding-left: 20upx;
+				float: left;
+			}
+
+			.application_img {
+				margin-right: 10upx;
+				font-size: 46;
+				vertical-align: middle;
+			}
+			.ibonweixinzhifu {
+				color: #04be02;
+			}
+			.ibonumidd17 {
+				color: #108ee9;
+			}
+			.ibonhuodaofukuan {
+				color: #f2b844;
+			}
+			.application_name {
+				margin-right: 20upx;
+			}
+		}
+
+		.u-node {
+			width: 44rpx;
+			height: 44rpx;
+			border-radius: 100rpx;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			background: #d0d0d0;
+		}
+		.u-line-box {
+			color: #999999;
+			position: relative;
+		}
+		.u-order-desc {
+			font-size: 28rpx;
+			margin-bottom: 26rpx;
+		}
+
+		.u-order-time {
+			font-size: 26rpx;
+			float: right;
+			margin-right: 20upx;
+			position: absolute;
+			top: 10upx;
+			right: 20upx;
+		}
+	}
+}
+</style>

+ 321 - 0
pagesT/Distribution/ApplyAudit.vue

@@ -0,0 +1,321 @@
+<template>
+	<view class="apply-term">
+		<image :src="distributionSet.image || default_img" mode="aspectFill" class="apply-img"></image>
+		<!-- 成为分销商审核中 -->
+		<view class="apply-cont" v-if="auditStatus === 1 && applicationCondition === 1">
+			<view class="apply-tip">
+				<view class="audit-img"><image src="https://onlineimg.qianniao.vip/audit_img.jpg" mode="aspectFit"></image></view>
+				<view class="tip-text" v-if="applicationCondition === 4">您已购买指定商品,满足申请条件,请等待审核</view>
+				<view class="tip-text" v-else>感谢您的支持,请等待审核</view>
+			</view>
+			<view @click="goPage('/pages/index/index', 'switchTab')" class="sub-btn">去商城逛逛</view>
+		</view>
+		<!--  申请成为分销商条件为累计消费次数或者累计消费金额 -->
+		<view class="apply-cont" v-if="auditStatus === 1 && [2, 3].includes(applicationCondition)">
+			<view class="apply-num-cont">
+				<view>您已累计消费</view>
+				<view class="num-weight" v-if="applicationCondition === 2">
+					<text class="_number">{{ businessmanInfo.statistics ? businessmanInfo.statistics.auditOrderTotal || 0 : 0 }}</text>
+					<text>次</text>
+				</view>
+				<view class="num-weight" v-if="applicationCondition === 3">
+					<text class="_number">{{ businessmanInfo.statistics ? businessmanInfo.statistics.auditTotalMoney || 0 : 0 }}</text>
+					<text>元</text>
+				</view>
+			</view>
+
+			<view class="apply-tip-view" v-if="applicationCondition === 2">
+				<block v-if="distributionSet.buyNum > businessmanInfo.statistics.auditOrderTotal">
+					本店累计消费满
+					<text class="_importent">{{ distributionSet.buyNum }}</text>
+					次,
+					<text v-if="distributionSet.audit === 4">通过审核后</text>
+					即可{{ text_set.distributor || '成为分销商' }}
+				</block>
+				<block v-else>您的累计消费次数满足申请条件,请等待审核</block>
+			</view>
+
+			<view class="apply-tip-view" v-if="applicationCondition === 3">
+				<block v-if="distributionSet.buyAmount > businessmanInfo.statistics.auditTotalMoney">
+					本店累计消费满
+					<text class="_importent">{{ distributionSet.buyAmount }}</text>
+					元,
+					<text v-if="distributionSet.audit === 4">通过审核后</text>
+					即可{{ text_set.distributor || '成为分销商' }}
+				</block>
+				<block v-else>您的累计消费金额满足申请条件,请等待审核</block>
+			</view>
+			<view @click="goPage('/pages/index/index', 'switchTab')" class="sub-btn">继续去购物</view>
+		</view>
+		<!--  申请成为分销商条件为购买商品 -->
+		<view class="apply-cont" v-if="applicationCondition === 4">
+			<scroll-view scroll-y="true" style="height: calc(100vh - 360rpx);">
+				<view>
+					<block v-for="(item, index) in goodsList" :key="index">
+						<view class="goods-item-box clearfix">
+							<!-- 左边 -->
+							<view class="imgStyle float_left" @click="goPage(`/pagesT/product/product?id=${item.goodsId}`)">
+								<image mode="aspectFit" :src="item.images[0]"></image>
+							</view>
+							<!-- 右边 -->
+							<view class="right float_left">
+								<p class="title" @click="goPage(`/pagesT/product/product?id=${item.goodsId}`)">{{ item.goodsName }}</p>
+								<p class="subTitle" @click="goPage(`/pagesT/product/product?id=${item.goodsId}`)">
+									<text class="gradeName">{{ item.gradeName }}</text>
+									{{ item.unitName }}
+									<text v-for="(itemS, indexS) in item.specGroup" :key="indexS">_{{ itemS.specValueName }}</text>
+								</p>
+								<view class="clearfix" style="position:relative">
+									<view class="price float_left" v-if="!isShow" @click="goPage(`/pagesT/product/product?id=${item.goodsId}`)">
+										<text class="icon-rmb">¥</text>
+										<text>{{ item.salePrice }}</text>
+									</view>
+									<view class="float_right" v-if="item.inventory - 0 > 0">
+										<text class="add-cart-btn ibonfont ibongouwuche " @click="addCard(item.goodsId, item.skuId)"></text>
+									</view>
+								</view>
+							</view>
+							<text v-if="!(item.inventory - 0) || item.inventory - 0 <= 0" class="ibonfont ibonyishouwan-copy sale-end-icon"></text>
+						</view>
+					</block>
+				</view>
+			</scroll-view>
+		</view>
+		<AddCardModel :selAddress="now_sel_address" :skuId="goods_sku_id" @close="is_add_show = false" @change="cardModelPopChange" :isShow="is_add_show" :goodsId="goods_id" />
+	</view>
+</template>
+
+<script>
+	import AddCardModel from '@/components/AddCardModel';
+export default {
+	components: {
+		AddCardModel,
+	},
+	data() {
+		return {
+			default_img: 'https://onlineimg.qianniao.vip/931544405107da76ca2ec31cd63fae49/1596008994491apply_banner.png',
+			is_add_show: false,
+			isLoding: false,
+			goods_id: 0,
+			goods_sku_id: 0,
+			now_sel_address: {},
+			goodsList: [],
+			distributionSet: {
+				image: '',
+				info: [],
+				businessmanCondition: 0
+			},
+			auditStatus: 0, // 审核状态
+			applicationCondition: 0, // 申请成为分销商条件
+			text_set: {},
+			businessmanInfo: {
+				statistics:{}
+			}
+		};
+	},
+	onLoad(options) {
+		this.distributionSet = this.$store.state.distributionSet;
+		this.auditStatus = parseInt(options.auditStatus);
+		this.applicationCondition = parseInt(options.applicationCondition);
+		this.text_set = this.$store.state.distributionTextSet;
+		this.getInfoBusinessman()
+		// 申请成为分销商条件为购买商品
+		if (this.applicationCondition === 4) {
+			this.getBuyGoods();
+		}
+	},
+	methods: {
+		// 获取分销商详情
+		 getInfoBusinessman() {
+			this.$u.api.getInfoBusinessman().then(res=>{
+				this.businessmanInfo = res.data;
+			});
+		},
+		// 查询升级商品
+		 getBuyGoods() {
+			this.$u.api.getBuyGoods().then(res=>{
+				this.goodsList = data;
+			});
+		},
+		cardModelPopChange(obj) {
+			if (!obj.show) {
+				this.is_add_show = false;
+			}
+		},
+		addCard(id, skuId) {
+			this.goods_id = id;
+			this.goods_sku_id = skuId;
+			this.is_add_show = true;
+		},
+	}
+};
+</script>
+
+<style lang="scss">
+.apply-img {
+	width: 100%;
+	height: 322upx;
+	display: block;
+}
+.apply-cont {
+	padding: 20upx 30upx;
+	.apply-agree {
+		font-size: 24upx;
+		color: #999;
+		padding: 20upx 0;
+	}
+	.apply-tip-view {
+		text-align: center;
+		._importent {
+			color: #ff5a5f;
+		}
+	}
+	.apply-tip {
+		border-radius: 8upx;
+		width: 650upx;
+		margin: 26upx auto 46upx;
+		box-shadow: 0 0 20upx 4upx #f5f5f5;
+		padding: 50upx 0;
+		.audit-img {
+			image {
+				display: block;
+				width: 200upx;
+				height: 200upx;
+				margin: 0 auto;
+			}
+		}
+		.tip-text {
+			padding: 0 24upx;
+			text-align: center;
+			opacity: 0.9;
+			line-height: 60upx;
+		}
+	}
+	.sub-btn {
+		font-size: 30upx;
+		text-align: center;
+		color: #ffffff;
+		width: 645upx;
+		height: 72upx;
+		background-color: #fe582e;
+		border-radius: 40px;
+		line-height: 72upx;
+		margin: 50upx auto 0;
+	}
+}
+.apply-num-cont {
+	width: 650upx;
+	margin: 46upx auto;
+	font-size: 24upx;
+	color: #898c98;
+	text-align: center;
+	box-shadow: 0 0 20upx 4upx #f5f5f5;
+	padding: 64upx 0;
+	.num-weight {
+		padding-top: 40upx;
+		font-weight: bold;
+		color: #3d404c;
+		._number {
+			margin-right: 10upx;
+			font-size: 66upx;
+		}
+	}
+}
+
+.goods-item-box {
+	border-bottom: 1upx solid #eee;
+	padding: 18upx 0;
+	position: relative;
+	.sale-end-icon {
+		font-size: 90upx;
+		color: $uni-color-error;
+		display: block;
+		position: absolute;
+		right: 60upx;
+		top: 80upx;
+	}
+
+	.right {
+		width: calc(100% - 188upx);
+	}
+
+	.title {
+		font-size: 28upx;
+		color: #303133;
+		width: 100%;
+		height: 76upx;
+		line-height: 36upx;
+		text-overflow: -o-ellipsis-lastline;
+		overflow: hidden;
+		text-overflow: ellipsis;
+		display: -webkit-box;
+		-webkit-line-clamp: 2;
+		line-clamp: 2;
+		-webkit-box-orient: vertical;
+	}
+
+	.subTitle {
+		font-size: 24upx;
+		color: #666;
+		white-space: nowrap;
+		width: 100%;
+		overflow: hidden;
+		/* 默认溢出隐藏 */
+		text-overflow: ellipsis;
+		padding: 6upx 0;
+		height: 48upx;
+		line-height: 42upx;
+		.gradeName {
+			padding: 0 10upx;
+			line-height: 32upx;
+			color: #fe582e;
+			border: 1upx solid #fe582e;
+			border-radius: 20upx;
+			display: inline-block;
+			vertical-align: middle;
+			height: 32upx;
+			margin-right: 10upx;
+		}
+	}
+
+	.price {
+		display: inline-block;
+		font-size: 28upx;
+		color: #fe582e;
+		font-weight: 500;
+	}
+
+	.price .icon-rmb {
+		font-size: 22upx;
+	}
+
+	.imgStyle {
+		padding-right: 24upx;
+	}
+
+	.imgStyle image {
+		width: 160upx;
+		height: 160upx;
+		border: 1px solid #eee;
+		border-radius: 4upx;
+		display: block;
+	}
+
+	/* 选规格 */
+	.add-cart-btn {
+		position: absolute;
+		right: 0;
+		bottom: 45%;
+		transform: translateY(50%);
+		background-color: #fe582e;
+		color: #fff;
+		display: block;
+		width: 50upx;
+		height: 50upx;
+		border-radius: 100%;
+		font-size: 24upx;
+		text-align: center;
+		line-height: 50upx;
+	}
+}
+</style>

+ 374 - 0
pagesT/Distribution/ApplyTerm.vue

@@ -0,0 +1,374 @@
+<template>
+	<view class="apply-term">
+		<image :src="distributionSet.image || default_img" mode="aspectFill" class="apply-img"></image>
+		<!--  无条件成为分销商 -->
+		<view class="apply-cont" v-if="distributionSet.businessmanCondition === 0">
+			<view class="apply-tip">
+				<view class="audit-img"><image src="https://onlineimg.qianniao.vip/no_coll.jpg" mode="aspectFit"></image></view>
+				<view class="tip-text">您还不是{{ text_set.name || '分销商' }},点击下方按钮立即{{ text_set.distributor || '成为分销商' }}</view>
+			</view>
+			<view @click="subApply" class="sub-btn">立即{{ text_set.distributor || '成为分销商' }}</view>
+		</view>
+		<!--  申请成为分销商条件为填写资料申请 -->
+		<view class="apply-cont" v-if="distributionSet.businessmanCondition === 1">
+			<u-form label-width="140rpx">
+				<block v-for="(item, index) in distributionSet.info" :key="index">
+					<u-form-item :label="item.prop"><u-input :clearable="false" v-model="item.value" /></u-form-item>
+				</block>
+			</u-form>
+			<view class="apply-agree" v-if='distributionSet.title'>
+				提交代表您同意
+				<text @click="goPage('/pagesT/Distribution/Agreement')" class="apply-agree-text primary-color">《{{ distributionSet.title }}》</text>
+			</view>
+			<view @click="subApply" class="sub-btn">申请{{ text_set.distributor || '成为分销商' }}</view>
+		</view>
+		<!--  申请成为分销商条件为累计消费次数或者累计消费金额 -->
+		<view class="apply-cont" v-if="[2, 3].includes(distributionSet.businessmanCondition)">
+			<view class="apply-num-cont">
+				<view>您已累计消费</view>
+				<view class="num-weight" v-if="distributionSet.businessmanCondition === 2">
+					<text class="_number">0</text>
+					<text>次</text>
+				</view>
+				<view class="num-weight" v-if="distributionSet.businessmanCondition === 3">
+					<text class="_number">0</text>
+					<text>元</text>
+				</view>
+			</view>
+
+			<view class="apply-tip-view">
+				您还不是{{ text_set.name || '分销商' }},点击下方按钮申请{{ text_set.distributor || '成为分销商' }}
+			</view>
+			<view class="sub-btn" @click="subApply">申请成为分销商</view>
+			<view class="user-discription">
+				<view class="user-d-tit">
+					用户须知
+				</view>
+				<view class="user-d-info">
+					1、当您点击申请成为分销商按钮后,开始累计您在本店的{{distributionSet.businessmanCondition === 3?'消费金额':'消费次数'}}</text>;
+				</view>
+				<view class="user-d-info">
+					2、您在本店累计{{distributionSet.businessmanCondition === 3?'消费金额':'消费次数'}}</text>满<text class="_importent">{{distributionSet.businessmanCondition === 3?distributionSet.buyAmount+'元':distributionSet.buyNum+'次'}}</text>,<text v-if="distributionSet.audit===4">通过审核后</text>即可{{ text_set.distributor || '成为分销商' }}
+				</view>
+			</view>
+		</view>
+		<!--  申请成为分销商条件为购买商品 -->
+		<view class="apply-cont" v-if="distributionSet.businessmanCondition === 4">
+			<view class="apply-tip-view">
+				您还不是{{ text_set.name || '分销商' }},点击下方按钮申请{{ text_set.distributor || '成为分销商' }}
+			</view>
+			<view class="sub-btn" @click="subApply">申请成为分销商</view>
+			<view class="user-discription">
+				<view class="user-d-tit">
+					用户须知
+				</view>
+				<view class="user-d-info">
+					当您点击申请成为分销商按钮后,购买指定商品,<text v-if="distributionSet.audit===4">通过审核后</text>即可{{ text_set.distributor || '成为分销商' }}
+				</view>
+			</view>
+		</view>
+		<AddCardModel :selAddress="now_sel_address" :skuId="goods_sku_id" @close="is_add_show = false" @change="cardModelPopChange" :isShow="is_add_show" :goodsId="goods_id" />
+
+	</view>
+</template>
+
+<script>
+import AddCardModel from '@/components/AddCardModel';
+export default {
+	components: {
+		AddCardModel,
+	},
+	data() {
+		return {
+			default_img: 'https://onlineimg.qianniao.vip/931544405107da76ca2ec31cd63fae49/1596008994491apply_banner.png',
+			is_add_show: false,
+			isLoding: false,
+			goods_id: 0,
+			now_sel_address: {},
+			goodsList: [],
+			apply_form: {
+				email: '',
+				name: '',
+				phone: ''
+			},
+			customerId: 0,
+			userName: '',
+			distributionSet: {
+				image: '',
+				info: [],
+				businessmanCondition: 0
+			},
+			auditStatus: 0, // 审核状态
+			applicationCondition: 0, // 申请成为分销商条件
+			goods_sku_id: 0,
+			text_set: {}
+		};
+	},
+	onLoad(options) {
+		if (options.auditStatus && options.applicationCondition) {
+			this.auditStatus = parseInt(options.auditStatus);
+			this.applicationCondition = parseInt(options.applicationCondition);
+		} else {
+			this.customerId = this.$store.state.userStatus.id;
+			this.userName = this.$store.state.userStatus.name;
+			this.distributionSet = this.$store.state.distributionSet;
+			// 申请成为分销商条件为购买商品
+			if (this.distributionSet.businessmanCondition === 4) {
+				this.getBuyGoods();
+			}
+		}
+		this.text_set = this.$store.state.distributionTextSet;
+	},
+	methods: {
+		// 查询升级商品
+		async getBuyGoods() {
+			this.$u.api.getBuyGoods().then(({data})=>{
+				this.goodsList = data;
+			})
+		},
+		cardModelPopChange(obj) {
+			if (!obj.show) {
+				this.is_add_show = false;
+			}
+		},
+		addCard(id, skuId) {
+			this.goods_id = id;
+			this.goods_sku_id = skuId;
+			this.is_add_show = true;
+		},
+		async subApply() {
+			let params = {
+				customerId: this.customerId
+			};
+			if (this.distributionSet.businessmanCondition === 1) {
+				let isSub = true;
+				for (let i in this.distributionSet.info) {
+					if (!this.distributionSet.info[i].value) {
+						isSub = false;
+						break;
+					}
+				}
+				if (!isSub) {
+					this.$api.msg('请输入申请资料');
+					return;
+				}
+				params.info = this.distributionSet.info;
+			}
+			this.$u.api.applicationBusinessman(params).then(res=>{
+				if (this.distributionSet.businessmanCondition === 0) {
+					// 无条件 点击按钮自动成为分销商
+					this.$api.msg('恭喜您已成为分销商');
+					setTimeout(() => {
+						this.goPage('/pagesT/Distribution/Distribution');
+					}, 500);
+				} else if(this.distributionSet.businessmanCondition === 4){
+					this.$api.msg('申请成功');
+					setTimeout(() => {
+						this.goPage('/pagesT/Distribution/ApplyAudit?auditStatus=1&applicationCondition=4','redirectTo');
+					}, 500);
+				}else {
+					// 不需要审核,填写完了条件成为分销商
+					if (this.distributionSet.audit === 4&&this.distributionSet.businessmanCondition === 1) {
+						this.$api.msg('恭喜您已成为分销商');
+						setTimeout(() => {
+							this.goPage('/pagesT/Distribution/Distribution');
+						}, 500);
+					} else {
+						// 不需要审核,填写完了等待审核
+						this.$api.msg('申请成功,正在审核中');
+						setTimeout(() => {
+							uni.navigateBack();
+						}, 500);
+					}
+				}
+			})
+
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.apply-img {
+	width: 100%;
+	height: 322upx;
+	display: block;
+}
+.apply-cont {
+	padding: 20upx 30upx;
+	.apply-agree {
+		font-size: 24upx;
+		color: #999;
+		padding: 20upx 0;
+	}
+	.apply-tip-view {
+		text-align: center;
+		._importent {
+			color: #ff5a5f;
+		}
+	}
+	.apply-tip {
+		border-radius: 8upx;
+		width: 650upx;
+		margin: 26upx auto 46upx;
+		box-shadow: 0 0 20upx 4upx #f5f5f5;
+		padding: 50upx 0;
+		.audit-img {
+			image {
+				display: block;
+				width: 200upx;
+				height: 200upx;
+				margin: 0 auto;
+			}
+		}
+		.tip-text {
+			padding: 0 24upx;
+			text-align: center;
+			opacity: 0.9;
+			line-height: 60upx;
+		}
+	}
+	.sub-btn {
+		font-size: 30upx;
+		text-align: center;
+		color: #ffffff;
+		width: 645upx;
+		height: 72upx;
+		background-color: #fe582e;
+		border-radius: 40px;
+		line-height: 72upx;
+		margin: 50upx auto 0;
+	}
+	.user-discription{
+		font-size: 24upx;
+		line-height: 40rpx;
+		padding-top: 30rpx;
+		.user-d-tit{
+			color: #333;
+			font-weight: bold;
+		}
+		.user-d-info{
+			color: #666;
+			._importent{
+				color: #fe582e;
+				font-weight: bold;
+			}
+		}
+	}
+}
+.apply-num-cont {
+	width: 650upx;
+	margin: 46upx auto;
+	font-size: 24upx;
+	color: #898c98;
+	text-align: center;
+	box-shadow: 0 0 20upx 4upx #f5f5f5;
+	padding: 64upx 0;
+	.num-weight {
+		padding-top: 40upx;
+		font-weight: bold;
+		color: #3d404c;
+		._number {
+			margin-right: 10upx;
+			font-size: 66upx;
+		}
+	}
+}
+
+.goods-item-box {
+	border-bottom: 1upx solid #eee;
+	padding: 18upx 0;
+	position: relative;
+	.sale-end-icon {
+		font-size: 90upx;
+		color: $uni-color-error;
+		display: block;
+		position: absolute;
+		right: 60upx;
+		top: 80upx;
+	}
+
+	.right {
+		width: calc(100% - 188upx);
+	}
+
+	.title {
+		font-size: 28upx;
+		color: #303133;
+		width: 100%;
+		height: 76upx;
+		line-height: 36upx;
+		text-overflow: -o-ellipsis-lastline;
+		overflow: hidden;
+		text-overflow: ellipsis;
+		display: -webkit-box;
+		-webkit-line-clamp: 2;
+		line-clamp: 2;
+		-webkit-box-orient: vertical;
+	}
+
+	.subTitle {
+		font-size: 24upx;
+		color: #666;
+		white-space: nowrap;
+		width: 100%;
+		overflow: hidden;
+		/* 默认溢出隐藏 */
+		text-overflow: ellipsis;
+		padding: 6upx 0;
+		height: 48upx;
+		line-height: 42upx;
+		.gradeName {
+			padding: 0 10upx;
+			line-height: 32upx;
+			color: #fe582e;
+			border: 1upx solid #fe582e;
+			border-radius: 20upx;
+			display: inline-block;
+			vertical-align: middle;
+			height: 32upx;
+			margin-right: 10upx;
+		}
+	}
+
+	.price {
+		display: inline-block;
+		font-size: 28upx;
+		color: #fe582e;
+		font-weight: 500;
+	}
+
+	.price .icon-rmb {
+		font-size: 22upx;
+	}
+
+	.imgStyle {
+		padding-right: 24upx;
+	}
+
+	.imgStyle image {
+		width: 160upx;
+		height: 160upx;
+		border: 1px solid #eee;
+		border-radius: 4upx;
+		display: block;
+	}
+
+	/* 选规格 */
+	.add-cart-btn {
+		position: absolute;
+		right: 0;
+		bottom: 45%;
+		transform: translateY(50%);
+		background-color: #fe582e;
+		color: #fff;
+		display: block;
+		width: 50upx;
+		height: 50upx;
+		border-radius: 100%;
+		font-size: 24upx;
+		text-align: center;
+		line-height: 50upx;
+	}
+}
+</style>

+ 389 - 0
pagesT/Distribution/DOrder.vue

@@ -0,0 +1,389 @@
+<template>
+	<view style="height: 100vh">
+		<view class="content">
+			<view class="navbar">
+				<view
+					v-for="(item, index) in navList"
+					:key="index"
+					class="nav-item"
+					:class="[ tabCurrentIndex === index?'current primary-color':'']"
+					@click="tabClick(item, index)"
+				>
+					{{ item.text }}
+					<view class="current-line primary-btn"></view>
+				</view>
+			</view>
+
+			<swiper :current="tabCurrentIndex" class="swiper-box" duration="300" @change="changeTab">
+				<swiper-item class="tab-content" v-for="(tabItem, tabIndex) in navList" :key="tabIndex">
+					<scroll-view @scrolltolower="scrollBootom" scroll-y="true" style="height:100%">
+						<Aempty text="您还没有相关订单" src="https://onlineimg.qianniao.vip/order.png" v-if="orderList.length === 0"></Aempty>
+						<view v-for="(item, index) in orderList" :key="index" class="order-item">
+							<view class="clearfix order-no-view" @click="goPage(`/pagesT/Distribution/DorderDetail?id=` + item.id)">
+								<text class="float_left order-no-text">{{ $_utils.formatDate(item.createTime) }}</text>
+								<text class="float_right order-status-text">
+									{{
+										item.orderStatus === 1
+											? '待付款'
+											: item.orderStatus === 2
+											? '待付款'
+											: item.orderStatus === 3
+											? '待发货'
+											: item.orderStatus === 4
+											? '待收货'
+											: item.orderStatus === 5
+											? '已完成'
+											: item.orderStatus === 6
+											? '已关闭'
+											: ''
+									}}
+								</text>
+							</view>
+							<view class="goods-ul">
+								<view
+									class="goods-li clearfix"
+									v-for="(it, gindex) in item.orderGoods"
+									:key="gindex"
+									@click="goPage(`/pagesT/Distribution/DorderDetail?id=` + item.id)"
+								>
+									<image class="goods-img float_left" :src="it.goodsImages" mode="aspectFit"></image>
+									<view class="float_right goods-right">
+										<view class="goods-name">{{ it.goodsName }}</view>
+										<view class="goods-descrip">
+											规格:
+											<text style="padding-right: 6upx;">{{ it.unitName }}</text>
+											<block v-for="(ip, indexSp) in it.specGroup" :key="indexSp">
+												<text v-if="indexSp > 0">-</text>
+												<text>{{ ip.specValueName }}</text>
+											</block>
+										</view>
+										<view class="goods-price clearfix">
+											<view class="float_left">
+												<text class="price primary-color">¥{{ it.price }}</text>
+												<!-- <text class="sku">/{{ it.unitName }}</text> -->
+											</view>
+											<view class="float_right">
+												<text class="icon-jia">*</text>
+												<text class="goods-num">{{ it.buyNum }}</text>
+											</view>
+										</view>
+									</view>
+								</view>
+							</view>
+							<view class="middle clearfix">
+								<view class="float_left money-view">
+									{{ text_set.commission || '佣金' }}:
+									<text class="primary-color">¥{{ item.retMoney }}</text>
+								</view>
+								<view class="float_right">
+									实付:
+									<text class="price primary-color">¥{{ item.payAmount }}</text>
+								</view>
+							</view>
+						</view>
+						<u-loadmore margin-top="20" v-if="orderList.length" :status="loading_status" />
+					</scroll-view>
+				</swiper-item>
+			</swiper>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			orderList: [],
+			tabCurrentIndex: 0,
+			state: 1,
+			loading_status: 'loadmore',
+			navList: [
+				{
+					state: 0,
+					text: '全部',
+					loadingType: 'more',
+					orderList: []
+				},
+				{
+					state: 2,
+					text: '待付款',
+					loadingType: 'more',
+					orderList: []
+				},
+				{
+					state: 3,
+					text: '待发货',
+					loadingType: 'more',
+					orderList: []
+				},
+				{
+					state: 4,
+					text: '待收货',
+					loadingType: 'more',
+					orderList: []
+				},
+				{
+					state: 5,
+					text: '已完成',
+					loadingType: 'more',
+					orderList: []
+				}
+			],
+			page: 1,
+			pageSize: 10,
+			pageTotal: 0,
+			text_set: {}
+		};
+	},
+
+	onLoad(options) {
+		this.state = 0;
+		this.text_set = this.$store.state.distributionTextSet;
+		if (this.text_set.commission_r) {
+			uni.setNavigationBarTitle({
+				title: this.text_set.distribution_order || '分销订单'
+			});
+		}
+	},
+	onShow() {
+		this.getOrderSelect();
+	},
+	methods: {
+		scrollBootom() {
+			if (this.pageTotal / this.pageSize > this.page) {
+				this.page += 1;
+				this.getOrderSelect();
+			}
+		},
+		// 获取订单列表
+		getOrderSelect() {
+			// this.orderList = [];
+			const params = {
+				page: this.page,
+				pageSize: this.pageSize
+			};
+			if (this.state) {
+				params.orderStatus = this.state;
+			}
+			this.loading_status = 'loading';
+			this.$u.api
+				.getCommissionOrder({
+					...params
+				})
+				.then(data => {
+					if (this.page === 1) {
+						this.orderList = data.data;
+					} else {
+						this.orderList = this.orderList.concat(data.data);
+					}
+					this.pageTotal = data.pageTotal;
+					this.loading_status = this.$_utils.loadStatus(this.page, this.pageSize, this.pageTotal);
+				});
+		},
+		//swiper 切换
+		changeTab(e) {
+			this.tabCurrentIndex = e.target.current;
+			this.page = 1;
+			switch (this.tabCurrentIndex) {
+				case 0:
+					this.state = 0;
+					break;
+				case 1:
+					this.state = 2;
+					break;
+				case 2:
+					this.state = 3;
+					break;
+				case 3:
+					this.state = 4;
+					break;
+			}
+			this.orderList = [];
+			this.getOrderSelect();
+		},
+		//顶部tab点击
+		tabClick(item, index) {
+			this.tabCurrentIndex = index;
+			this.state = item.state;
+			// this.getOrderSelect()
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.order-item {
+	margin: 24upx 0;
+	// padding: 0 30upx;
+	background-color: #fff;
+
+	.order-no-view {
+		font-size: 24upx;
+		padding: 24upx 30upx;
+		color: #666;
+		font-weight: 300;
+		border-bottom: 1upx solid #eee;
+		.order-status-text {
+			font-weight: 500;
+		}
+	}
+
+	.goods-li:last-child {
+		margin-bottom: 0;
+	}
+
+	.goods-li {
+		background: #fafafa;
+		padding: 30upx 20upx;
+		margin-bottom: 20upx;
+
+		.goods-img {
+			width: 180upx;
+			height: 180upx;
+		}
+
+		.goods-right {
+			width: 500upx;
+			margin-left: 20upx;
+
+			.goods-name {
+				color: #333;
+				font-size: 32upx;
+				margin-bottom: 19upx;
+				text-overflow: -o-ellipsis-lastline;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				line-clamp: 1;
+				-webkit-box-orient: vertical;
+			}
+
+			.goods-descrip {
+				font-size: 22upx;
+				color: #999;
+				margin-bottom: 28upx;
+				// font-weight: 300;
+				text-overflow: -o-ellipsis-lastline;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				line-clamp: 1;
+				-webkit-box-orient: vertical;
+			}
+
+			.goods-price {
+				.price {
+					color: $price-color;
+					font-size: 40upx;
+				}
+
+				.sku {
+					font-size: 22upx;
+					font-weight: 300;
+					color: #666;
+				}
+
+				.icon-jia {
+					color: #666;
+					font-size: 24upx;
+				}
+
+				.goods-num {
+					font-size: 24upx;
+				}
+			}
+		}
+	}
+}
+
+.middle {
+	font-size: 24upx;
+	position: relative;
+	padding: 24upx 30upx;
+	.money-view {
+		color: #444;
+		.price {
+			font-size: 32upx;
+			font-weight: bold;
+			color: $price-color;
+		}
+	}
+}
+
+.btnS {
+	padding: 0 28upx;
+	line-height: 60upx;
+	color: #6e6e6e;
+	font-size: 24upx;
+	text-align: center;
+	margin-right: 10upx;
+	height: 60upx;
+	background: rgba(241, 241, 241, 1);
+	// box-shadow: 0px 2upx 14upx 0px rgba(0, 0, 0, 0.1);
+	border-radius: 40upx;
+}
+
+.btnSAdd {
+	padding: 0 28upx;
+	line-height: 60upx;
+	color: #ffffff;
+	font-size: 24upx;
+	text-align: center;
+	height: 60upx;
+	border-radius: 40upx;
+}
+.content {
+	background: $page-color-base;
+	height: 100vh;
+}
+
+.swiper-box {
+	height: calc(100% - 80upx);
+}
+
+.list-scroll-content {
+	height: 100%;
+}
+
+.navbar {
+	display: flex;
+	height: 88upx;
+	background: #fff;
+	position: relative;
+	z-index: 10;
+	border-bottom: 1upx solid #eee;
+
+	.nav-item {
+		flex: 1;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		height: 100%;
+		font-size: 28upx;
+		color: #666666;
+		position: relative;
+		font-weight: 300;
+
+		&.current {
+			// color: $uni-color-primary;
+			font-weight: 500;
+			font-size: 32upx;
+
+			.current-line {
+				content: '';
+				position: absolute;
+				left: 50%;
+				bottom: 10upx;
+				transform: translateX(-50%);
+				width: 40upx;
+				height: 6upx;
+				background: $base-btn-bg;
+				border-radius: 6upx;
+				/*border-bottom: 2px solid #F53C28;*/
+			}
+		}
+	}
+}
+</style>

+ 262 - 0
pagesT/Distribution/Distribution.vue

@@ -0,0 +1,262 @@
+<template>
+	<view class="Distribution">
+		<view class="top-view">
+			<view class="lever-view clearfix">
+				<view class="lever-view-left float_left">
+					<image class="user-avator" :src="avator" mode="aspectFill"></image>
+					<text>{{ businessman_detail.gradeName }}</text>
+				</view>
+				<view class="float_right ew-code" @click="goPage('/pagesT/Distribution/Poster')"><text class="ibonfont ibonerweima-copy"></text></view>
+			</view>
+			<view class="cash-out clearfix">
+				<view class="float_left">
+					<view class="cash-tit">{{ text_set.commission_w || '可提现佣金' }}(元)</view>
+					<view class="cash-num">{{ businessman_detail.balance || 0 }}</view>
+				</view>
+				<view class="float_right" @click="goPage('/pagesT/Distribution/Withdrawal?balance=' + (businessman_detail.balance || 0) + '&id=' + businessman_detail.id)">
+					<view class="cash-btn">{{ text_set.withdrawal || '提现' }}</view>
+				</view>
+			</view>
+			<view class="money-num">
+				<view class="money-num-li" @click="goAddUpMoney">
+					<text>{{ text_set.commission_c || '累计佣金' }}</text>
+					<view class="money-num-text">
+						<text class="rmb-icon">¥</text>
+						{{ businessman_detail.totalMoney || 0 }}
+					</view>
+				</view>
+				<view class="money-num-li" @click="goPage('/pagesT/Distribution/NotRecorded?waitMoney=' + businessman_detail.waitMoney || 0)">
+					<text>{{ text_set.commission_r || '待入账佣金' }}</text>
+					<view class="money-num-text">
+						<text class="rmb-icon">¥</text>
+						{{ businessman_detail.waitMoney || 0 }}
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="handel-ul">
+			<view class="handel-li clearfix" @click="goPage('/pagesT/Distribution/DOrder?id=' + businessman_detail.id)">
+				<view class="float_left icon-left-view"><text class="ibonfont ibondingdan icon-left" style="color:#f46248"></text></view>
+				<view class="float_left clearfix handel-right">
+					<text class="float_left">{{ text_set.distribution_order || '分销订单' }}</text>
+					<view class="float_right handel-right-r">
+						<text>{{ businessman_detail.statistics.orderNum || 0 }}笔</text>
+						<text class="ibonfont ibonjinru"></text>
+					</view>
+				</view>
+			</view>
+			<view class="handel-li clearfix" @click="goPage('/pagesT/Distribution/MyGroup?id=' + businessman_detail.id)">
+				<view class="float_left icon-left-view"><text class="ibonfont ibonicon-test icon-left" style="color:#f46248"></text></view>
+				<view class="float_left clearfix handel-right">
+					<text class="float_left">{{ text_set.self || '我的团队' }}</text>
+					<view class="float_right handel-right-r">
+						<text>{{ businessman_detail.statistics.sub || 0 }}人</text>
+						<text class="ibonfont ibonjinru"></text>
+					</view>
+				</view>
+			</view>
+			<view class="handel-li clearfix" @click="goPage('/pagesT/Distribution/IncomeDetails?id=' + businessman_detail.id)">
+				<view class="float_left icon-left-view"><text class="ibonfont ibontixian icon-left" style="color:#46c09b"></text></view>
+				<view class="float_left clearfix handel-right">
+					<text class="float_left">{{ text_set.withdrawal_m || '提现明细' }}</text>
+					<view class="float_right handel-right-r"><text class="ibonfont ibonjinru"></text></view>
+				</view>
+			</view>
+			<view class="handel-li clearfix" @click="goPage('/pagesT/Distribution/GradeDescription?gradeName=' + businessman_detail.gradeName)">
+				<view class="float_left icon-left-view"><text class="ibonfont ibonhuiyuan icon-left" style="color:#2d5dc9"></text></view>
+				<view class="float_left clearfix handel-right">
+					<text class="float_left">等级说明</text>
+					<view class="float_right handel-right-r"><text class="ibonfont ibonjinru"></text></view>
+				</view>
+			</view>
+			<view class="handel-li clearfix" @click="goPage('/pagesT/Distribution/Ranking?id=' + businessman_detail.id)">
+				<view class="float_left icon-left-view"><text class="ibonfont ibondianshang icon-left" style="color:#fed261"></text></view>
+				<view class="float_left clearfix handel-right">
+					<text class="float_left">排行榜</text>
+					<view class="float_right handel-right-r"><text class="ibonfont ibonjinru"></text></view>
+				</view>
+			</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+import { getAvator } from '@/access/common.js';
+export default {
+	data() {
+		return {
+			isLoding: false,
+			text_set: {},
+			avator: '',
+			businessman_detail: {
+				statistics: {}
+			}
+		};
+	},
+	onShareAppMessage() {
+		return {
+			title: this.$store.state.baseSet.shop,
+			path: '/pages/index/index?businessmanId=' + this.$store.state.userStatus.id,
+			imageUrl: this.$store.state.baseSet.images,
+			success: res => {
+				console.log(res);
+			}
+		};
+	},
+	// 下拉刷新
+	onPullDownRefresh() {
+		this.getInfoBusinessman();
+	},
+	onLoad() {
+		uni.setNavigationBarColor({
+			frontColor: '#ffffff',
+			backgroundColor: '#fe582e'
+		});
+		this.text_set = this.$store.state.distributionTextSet;
+		this.avator = getAvator();
+	},
+	onShow() {
+		this.getInfoBusinessman();
+	},
+	methods: {
+		goAddUpMoney() {
+			this.goPage(
+				`/pagesT/Distribution/AddUpMoney?id=${this.businessman_detail.id}&totalMoney=${this.businessman_detail.totalMoney || 0}&waitMoney=${this.businessman_detail
+					.waitMoney || 0}&balance=${this.businessman_detail.balance || 0}&auditWithdraw=${this.businessman_detail.auditWithdraw || 0}&waitAuditWithdraw=${this
+					.businessman_detail.waitAuditWithdraw || 0}`
+			);
+		},
+		// 分销商详情
+		 getInfoBusinessman() {
+			this.$u.api.getInfoBusinessman().then(res=>{
+				uni.stopPullDownRefresh();
+				this.businessman_detail = res.data;
+			});
+
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+body {
+	background: $page-color-base;
+}
+.top-view {
+	color: #ffffff;
+	background-color: #fe582e;
+	.lever-view {
+		padding: 30upx 24upx;
+		.lever-view-left {
+			font-size: 22upx;
+			font-weight: bold;
+			line-height: 38upx;
+			height: 42upx;
+			padding-right: 16upx;
+			border-radius: 22upx;
+			background-color: rgba($color: #ffffff, $alpha: 0.3);
+			text {
+				transform: translateY(4upx);
+				display: inline-block;
+			}
+			.user-avator {
+				margin-right: 8upx;
+				width: 42upx;
+				height: 42upx;
+				border-radius: 100%;
+				vertical-align: middle;
+				transform: translateY(-2upx);
+			}
+		}
+		.ew-code {
+			line-height: 36upx;
+			height: 36upx;
+			opacity: 0.5;
+			.ibonerweima-copy {
+				font-size: 48upx;
+			}
+		}
+	}
+	.cash-out {
+		padding: 0 24upx 30upx;
+		.cash-tit {
+			font-size: 24upx;
+		}
+		.cash-num {
+			font-size: 60upx;
+			font-weight: bold;
+			padding-top: 20upx;
+		}
+		.cash-btn {
+			margin-top: 76upx;
+			font-size: 24upx;
+			width: 146upx;
+			height: 46upx;
+			line-height: 46upx;
+			text-align: center;
+			background-color: #ffffff;
+			border-radius: 40upx;
+			color: #fe582e;
+		}
+	}
+	.money-num {
+		background-color: #f03b28;
+		display: flex;
+		padding: 34upx 0;
+		.money-num-li {
+			flex: 2;
+			font-size: 24upx;
+			padding-left: 24upx;
+			&:first-child {
+				border-right: 1px solid rgba($color: #ffffff, $alpha: 0.3);
+			}
+
+			.money-num-text {
+				font-size: 32upx;
+				margin-left: 16upx;
+				display: inline-block;
+				transform: translateY(4upx);
+				.rmb-icon {
+					font-size: 24upx;
+					margin-right: 6upx;
+				}
+			}
+		}
+	}
+}
+.handel-ul {
+	.handel-li {
+		background-color: #ffffff;
+		padding-left: 20upx;
+		line-height: 100upx;
+		font-size: 28upx;
+		.icon-left-view {
+			line-height: 100upx;
+			height: 100upx;
+			.icon-left {
+				font-size: 36upx;
+				margin-right: 30upx;
+			}
+		}
+
+		.handel-right {
+			width: 660upx;
+			border-bottom: 1px solid #f5f5f5;
+			.handel-right-r {
+				color: #999999;
+				padding-right: 20upx;
+				.ibonjinru {
+					font-size: 28upx;
+					margin-left: 20upx;
+				}
+			}
+		}
+		&:last-child {
+			.handel-right {
+				border-bottom: 0 none;
+			}
+		}
+	}
+}
+</style>

+ 516 - 0
pagesT/Distribution/DorderDetail.vue

@@ -0,0 +1,516 @@
+<template>
+	<view style="height: 100%;">
+		<u-navbar v-if="navFixed" title="订单详情" title-color="#ffffff" back-icon-color="#ffffff" :border-bottom="false" :background="{ backgroundImage: primaryJb }"></u-navbar>
+		<view class="box" v-if="order_detail.orderStatus">
+			<view class="top-view primary-btn">
+				<uniStatusBar/>
+				<view class="nav-bar">
+					<image @click="backPage" class="nv-back" src="https://onlineimg.qianniao.vip/ic-back-fff.png" mode="aspectFit"></image>
+					<text class="title-text">订单详情</text>
+				</view>
+				<view class="order-status-view clearfix">
+					<view class="float_left">
+						<view class="order-status-text">
+							<text>
+								{{
+									order_detail.orderStatus === 1
+										? '待付款'
+										: order_detail.orderStatus === 2
+										? '待付款'
+										: order_detail.orderStatus === 3
+										? '待发货'
+										: order_detail.orderStatus === 4
+										? '待收货'
+										: order_detail.orderStatus === 5
+										? '已完成'
+										: order_detail.orderStatus === 6
+										? '已关闭'
+										: ''
+								}}
+							</text>
+							<view class="children-order-status">
+								{{
+									order_detail.orderStatus === 1
+										? '请尽快付款,宝贝才能快些到您身边哦'
+										: order_detail.orderStatus === 2
+										? '请尽快付款,宝贝才能快些到您身边哦'
+										: order_detail.orderStatus === 3
+										? '正在为您紧急备货中……'
+										: order_detail.orderStatus === 4
+										? '确认宝贝无误后再签收哦!'
+										: order_detail.orderStatus === 5
+										? '本次交易已完成'
+										: order_detail.orderStatus === 6
+										? '本次交易已关闭'
+										: ''
+								}}
+							</view>
+						</view>
+					</view>
+					<view class="float_right">
+						<text
+							class="ibonfont order-icon"
+							:class="[
+								order_detail.orderStatus === 1
+									? 'ibondaifukuan1'
+									: order_detail.orderStatus === 2
+									? 'ibondaifukuan1'
+									: order_detail.orderStatus === 3
+									? 'ibondaifahuo1'
+									: order_detail.orderStatus === 4
+									? 'ibondaishouhuo'
+									: order_detail.orderStatus === 5
+									? 'ibonyiwancheng'
+									: order_detail.orderStatus === 6
+									? 'ibonjiaoyiguanbix'
+									: ''
+							]"
+						></text>
+					</view>
+				</view>
+			</view>
+			<view class="address-view view-main clearfix">
+				<view class="vip-info">
+					<text class="vip-i-label">会员:</text>
+					<image class="customerAvatar" :src="order_detail.customerAvatar" mode="aspectFill"></image>
+					<text>{{ order_detail.customerName }}</text>
+				</view>
+				<view class="vip-info">
+					<text class="vip-i-label">分销层级:</text>
+					<text>{{ order_detail.retLevelMsg }}</text>
+				</view>
+			</view>
+			<view class="goods-view view-main">
+				<block v-for="(it, gindex) in order_detail.orderGoods" :key="gindex">
+					<view class="goods-li clearfix" @click="goPage(`/pagesT/product/product?id=${it.goodsId}`)">
+						<image class="goods-img float_left" :src="it.goodsImages" mode="aspectFit"></image>
+						<view class="float_right goods-right">
+							<view class="goods-name">{{ it.goodsName }}</view>
+							<view class="goods-descrip">
+								规格:
+								<text style="padding-right: 6upx;">{{ it.unitName }}</text>
+								<block v-for="(ip, indexSP) in it.specGroup" :key="indexSP">
+									<text v-if="indexSP > 0">-</text>
+									<text>{{ ip.specValueName }}</text>
+								</block>
+							</view>
+							<view class="goods-price clearfix">
+								<view class="float_left">
+									<text class="price primary-color">¥{{ it.price }}</text>
+								</view>
+								<view class="float_right">
+									<text class="icon-jia">*</text>
+									<text class="goods-num">{{ it.buyNum }}</text>
+								</view>
+							</view>
+						</view>
+					</view>
+				</block>
+			</view>
+			<view class="view-main order-info-view">
+				<view class="order-info-tit">订单信息</view>
+				<view class="order-info-cont">
+					<view class="order-info-li">
+						<view class="clearfix info-item">
+							<text class="subtitle float_left">订单编号:</text>
+							<text class="titledetail float_right">{{ order_detail.orderNo || '--' }}</text>
+						</view>
+						<view class="clearfix info-item">
+							<text class="subtitle float_left">下单时间:</text>
+							<text class="titledetail float_right">{{ $_utils.formatDate(order_detail.createTime) || '--' }}</text>
+						</view>
+					</view>
+
+					<view class="order-info-li order-money-view">
+						<view class="clearfix info-item">
+							<text class="subtitle float_left">支付方式</text>
+							<text class="money-val float_right">{{ order_detail.payTypeMsg }}</text>
+						</view>
+						<view class="clearfix info-item">
+							<text class="subtitle float_left">配送方式</text>
+							<text class="money-val float_right">{{ order_detail.deliveryMsg || '--' }}</text>
+						</view>
+					</view>
+				</view>
+				<view class="order-price-view clearfix">
+					<view class="float_left">
+						<span>{{ text_set.commission || '佣金' }}:</span>
+						<span class="price primary-color">¥{{ order_detail.retMoney }}</span>
+					</view>
+					<view class="float_right">
+						<span>实付款:</span>
+						<span class="price primary-color">¥{{ order_detail.payAmount }}</span>
+					</view>
+				</view>
+			</view>
+		</view>
+
+		<view class="clearfix botton-btn-view" v-if="[1, 2, 4, 5].includes(order_detail.orderStatus)">
+			<!-- #ifdef APP-PLUS||MP-WEIXIN -->
+			<BtnView @click="gopay" class=" float_right" v-if="order_detail.orderStatus === 1 || order_detail.orderStatus === 2"><view class="btnS">去付款</view></BtnView>
+			<!-- #endif -->
+			<BtnView class="float_right" v-if="order_detail.orderStatus === 4" @click="confirmOrder"><view class="btnS">确认收货</view></BtnView>
+			<BtnView class="float_right" v-if="order_detail.orderStatus === 5" @click="againPay"><view class="btnS">再次购买</view></BtnView>
+			<span @click="cancelOrder" class="clearBtnS float_right" v-if="order_detail.orderStatus === 1 || order_detail.orderStatus === 2">取消订单</span>
+		</view>
+
+	</view>
+</template>
+
+<script>
+import uniStatusBar from '@/components/uni-status-bar/uni-status-bar.vue';
+export default {
+	components: {
+		uniStatusBar
+	},
+	data() {
+		return {
+			navFixed: false,
+			order_id: 0,
+			price: '',
+			order_detail: {
+				receiveData: {
+					area: {}
+				},
+				deliveryMsg: ''
+			},
+			no: '',
+			// 再次购买的goodsData
+			goodsData: [],
+			Dorder_id: 0,
+			text_set: {}
+		};
+	},
+	onLoad(options) {
+		this.Dorder_id = options.id;
+		this.text_set = this.$store.state.distributionTextSet;
+	},
+	onShow() {
+		this.getOrderInfoById();
+	},
+	onPageScroll(val) {
+		this.navFixed = val.scrollTop > 5;
+	},
+	methods: {
+		// 再次购买
+		 againPay() {
+			// if (this.$store.state.baseSet.personnelReview === 5) {
+			// 验证账户状态
+			this.userAudit();
+			if (!this.isUserAudit) {
+				return;
+			}
+			// }
+			this.goodsData = this.order_detail.goodsData.map(item => {
+				return {
+					goodsId: item.goodsId,
+					buyNum: item.buyNum,
+					shopId: item.shopId,
+					skuId: item.skuId,
+					source: this.$common.source(),
+					goodsBasicId: item.goodsBasicId
+				};
+			});
+			this.$u.api.addCart({
+				goodsData: this.goodsData
+			}).then(res=>{
+				this.goPage('/pages/cart/cart', 'switchTab');
+			});
+		},
+		// 获取订单详情
+		 getOrderInfoById() {
+			this.$u.api.getCommissionOrderInfo(this.Dorder_id).then(data=>{
+				this.order_detail = data.data;
+				this.price = this.order_detail.totalMoney;
+				this.no = this.order_detail.no;
+				this.order_id = data.data.orderId;
+			});
+		},
+		// 去支付
+		gopay() {
+			uni.navigateTo({
+				url: `/pagesT/money/pay?id=${this.order_id}&price=${this.price}&no=${this.no}&payType=${this.order_detail.payType}`
+			});
+		},
+		//取消订单
+		cancelOrder() {
+			uni.showModal({
+				title: '提示',
+				content: '确定要取消该订单吗?',
+				success: res => {
+					if (res.confirm) {
+						this.$u.api.updateOrderStatus(this.order_id, {
+							orderStatus: 6
+						}).then(res=>{
+							this.$api.msg('取消成功');
+							this.getOrderInfoById();
+						});
+					}
+				}
+			});
+		},
+		confirmOrder() {
+			uni.showModal({
+				title: '提示',
+				content: '确定要确认收货吗?',
+				success:  res => {
+					if (res.confirm) {
+						this.$u.api.updateOrderStatus(this.order_id, {
+							orderStatus: 5
+						}).then(res=>{
+							this.$api.msg('操作成功');
+							this.getOrderInfoById();
+						});
+					}
+				}
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+body {
+	background: $page-color-base;
+}
+.top-view {
+	background: $base-btn-bg;
+	.nav-bar {
+		padding: 24upx 0;
+		position: relative;
+		.nv-back {
+			position: absolute;
+			top: 24upx;
+			left: 24upx;
+		}
+		.title-text {
+			font-size: 32upx;
+			color: #fff;
+			display: inline-block;
+			width: 100%;
+			text-align: center;
+			height: 40upx;
+		}
+	}
+
+	.order-status-view {
+		color: #fff;
+		font-size: 36upx;
+		padding: 40upx;
+		.order-icon {
+			margin-right: 10upx;
+			font-size: 80upx;
+			opacity: 0.9;
+		}
+		.children-order-status {
+			font-size: 24upx;
+			font-weight: 300;
+			padding-top: 10upx;
+		}
+	}
+}
+
+.box {
+	width: 100%;
+	// overflow-y: scroll;
+	padding-bottom: 140upx;
+	// height: 100%;
+	// margin-bottom: 130upx;
+	background: $page-color-base;
+
+	.view-main {
+		margin-bottom: 24upx;
+		background: #fff;
+		// border-radius: 12upx;
+		padding: 24upx;
+	}
+
+	.goods-view {
+		padding: 24upx 0;
+		.shop-name {
+			color: #333;
+			font-weight: bold;
+			font-size: 24upx;
+			padding: 0 24upx 24upx;
+			line-height: 30upx;
+			.shop-logo {
+				width: 30upx;
+				height: 30upx;
+				vertical-align: middle;
+				margin-right: 10upx;
+			}
+			.order-status {
+				color: $uni-color-primary;
+			}
+		}
+
+		.goods-li:last-child {
+			margin-bottom: 0;
+		}
+		.goods-li {
+			background: #fafafa;
+			padding: 30upx 20upx;
+			margin-bottom: 20upx;
+			.goods-img {
+				width: 180upx;
+				height: 180upx;
+			}
+			.goods-right {
+				width: 500upx;
+				margin-left: 20upx;
+				.goods-name {
+					color: #333;
+					font-size: 32upx;
+					margin-bottom: 19upx;
+					text-overflow: -o-ellipsis-lastline;
+					overflow: hidden;
+					text-overflow: ellipsis;
+					display: -webkit-box;
+					-webkit-line-clamp: 1;
+					line-clamp: 1;
+					-webkit-box-orient: vertical;
+				}
+				.goods-descrip {
+					font-size: 22upx;
+					color: #999;
+					margin-bottom: 28upx;
+					font-weight: 300;
+					text-overflow: -o-ellipsis-lastline;
+					overflow: hidden;
+					text-overflow: ellipsis;
+					display: -webkit-box;
+					-webkit-line-clamp: 1;
+					line-clamp: 1;
+					-webkit-box-orient: vertical;
+				}
+				.goods-price {
+					.price {
+						color: $price-color;
+						font-size: 40upx;
+					}
+					.sku {
+						font-size: 22upx;
+						font-weight: 300;
+						color: #666;
+					}
+					.icon-jia {
+						color: #666;
+						font-size: 24upx;
+					}
+					.goods-num {
+						font-size: 24upx;
+					}
+				}
+			}
+		}
+	}
+}
+
+.address-view {
+	font-size: 28upx;
+	.vip-info {
+		padding-bottom: 20upx;
+		.vip-i-label {
+			font-size: 24upx;
+			color: #666;
+		}
+		.customerAvatar {
+			width: 50upx;
+			height: 50upx;
+			border-radius: 100%;
+			margin-right: 20upx;
+			vertical-align: middle;
+		}
+	}
+}
+
+.order-info-view {
+	// font-size: 24upx;
+	color: #3c3c3c;
+	.order-info-tit {
+		font-size: 28upx;
+		padding-bottom: 20upx;
+	}
+	.order-info-cont {
+		font-size: 24upx;
+
+		.info-item {
+			padding-bottom: 10upx;
+			.subtitle {
+				color: #666;
+			}
+		}
+	}
+	.order-info-li {
+		border-bottom: 1upx solid #eee;
+		padding-bottom: 24upx;
+		margin-bottom: 24upx;
+		.info-item {
+			padding-bottom: 10upx;
+			.subtitle {
+				color: #666;
+				font-weight: 300;
+			}
+		}
+	}
+
+	.order-price-view {
+		text-align: right;
+		font-size: 26upx;
+		.price {
+			color: $price-color;
+			padding-left: 6upx;
+			font-size: 32upx;
+			font-weight: 600;
+		}
+	}
+}
+
+.botton-btn-view {
+	background: #fff;
+	position: fixed;
+	box-shadow: 0upx -2upx 10upx 0upx rgba(136, 136, 136, 0.24);
+	left: 0;
+	bottom: 0;
+	width: 100%;
+	padding: 20upx;
+	font-size: 28upx;
+
+	.btnS {
+		width: 240upx;
+		line-height: 64upx;
+		color: #ffffff;
+		text-align: center;
+		height: 64upx;
+		// background: $base-btn-bg;
+		// box-shadow: 0px 2upx 14upx 0upx rgba(116, 190, 66, 0.4);
+		border-radius: 40upx;
+	}
+
+	.clearBtnS {
+		width: 240upx;
+		line-height: 64upx;
+		color: #6e6e6e;
+		text-align: center;
+		margin-right: 10upx;
+		height: 64upx;
+		background: rgba(241, 241, 241, 1);
+		border-radius: 40upx;
+	}
+}
+
+.circleSty {
+	display: inline-block;
+	background-color: #9e9e9e;
+	width: 20upx;
+	height: 20upx;
+	border-radius: 50%;
+	margin-left: 20upx;
+}
+
+.subOrder {
+	position: absolute;
+	top: -10upx;
+	left: 60upx;
+}
+</style>

+ 293 - 0
pagesT/Distribution/GradeDescription.vue

@@ -0,0 +1,293 @@
+<template>
+	<view class="Distribution">
+		<view class="top-view">
+			<view class="lever-view clearfix">
+				<view class="lever-view-left float_left">
+					<image class="user-avator" :src="avator" mode="aspectFill"></image>
+					<text>{{ gradeName }}</text>
+				</view>
+			</view>
+			<!--  -->
+			<!-- <scroll-view class="Grade-view" :scroll-left="scroll_left_num" scroll-x @scroll="scrollGrade">
+				<view style="display: inline-block;width: 280rpx;"></view>
+				<view class="Grade-li" v-for="(item, index) in grade_list" :key="index">
+					<view class="Grade-icon ibonfont ibonhuodaofukuan"></view>
+					<view class="Grade-text">{{ item.name }}</view>
+				</view>
+				<view style="display: inline-block;width: 300rpx;"></view>
+			</scroll-view> -->
+			<swiper class="Grade-swiper" @change="gradeChange" :indicator-dots="false" :autoplay="false">
+				<swiper-item class="left_item"></swiper-item>
+				<swiper-item class="left_item"></swiper-item>
+				<swiper-item class="Grade-item" v-for="(item, index) in grade_list" :key="index">
+					<view class="Grade-li" :class="[grade_on === index ? 'Grade-on' : '']">
+						<view class="Grade-icon ibonfont ibonhuiyuan"></view>
+						<view class="Grade-text">{{ item.name }}</view>
+					</view>
+				</swiper-item>
+			</swiper>
+			<view class="ibonfont ibonxiangshangjiantou top-jt-icon"></view>
+		</view>
+		<view class="money-ratio-view">
+			<view class="money-ratio-tit">{{ text_set.commission || '佣金' }}比例</view>
+			<view class="money-ratio-ul">
+				<view class="money-ratio-li clearfix">
+					<view class="float_left m-label">
+						<text class="ibonfont ibonhuodaofukuan"></text>
+						<text class="m-label-text">{{ text_set.level_one || '一级' }}{{ text_set.commission || '佣金' }}比例</text>
+					</view>
+					<view class="float_right m-value">{{ grade_detail.oneRate }}%</view>
+				</view>
+				<view class="money-ratio-li clearfix">
+					<view class="float_left m-label">
+						<text class="ibonfont ibonhuodaofukuan"></text>
+						<text class="m-label-text">{{ text_set.level_two || '二级' }}{{ text_set.commission || '佣金' }}比例</text>
+					</view>
+					<view class="float_right m-value">{{ grade_detail.twoRate }}%</view>
+				</view>
+				<view class="money-ratio-li clearfix">
+					<view class="float_left m-label">
+						<text class="ibonfont ibonhuodaofukuan"></text>
+						<text class="m-label-text">{{ text_set.level_three || '三级' }}{{ text_set.commission || '佣金' }}比例</text>
+					</view>
+					<view class="float_right m-value">{{ grade_detail.threeRate }}%</view>
+				</view>
+			</view>
+		</view>
+		<view class="up-term" v-if="grade_detail.upgradeConditionInfo.length">
+			<view class="up-term-tit">
+				<text>升级条件</text>
+				<text class="fu-tit">(满足以下条件可升级)</text>
+			</view>
+			<view class="up-term-ul">
+				<view class="up-term-li clearfix" v-for="(item, index) in grade_detail.upgradeConditionInfo" :key="index">
+					<view class="float_left">
+						<text>{{ item.name }}达到</text>
+						<text class="money-u-num">{{ item.value }}</text>
+						<text v-if="item.name.indexOf('额') > -1">元</text>
+						<text v-else-if="item.name.indexOf('人') > -1">人</text>
+						<text v-else>个</text>
+					</view>
+					<view class="float_right">
+						<view class="status-btn" v-if="!item.status">未完成</view>
+						<view class="status-btn status-ac-btn" v-else>已完成</view>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import { getAvator } from '@/access/common.js';
+export default {
+	data() {
+		return {
+			avator: '',
+			scroll_left_num: 0,
+			text_set: {},
+			grade_list: [],
+			gradeName: '',
+			grade_detail: {
+				upgradeConditionInfo: [],
+				oneRate: '',
+				twoRate: '',
+				threeRate: ''
+			},
+			grade_on: 0
+		};
+	},
+	onLoad(options) {
+		uni.setNavigationBarColor({
+			frontColor: '#ffffff',
+			backgroundColor: '#fe582e'
+		});
+		this.avator = getAvator();
+		this.text_set = this.$store.state.distributionTextSet;
+		this.getAllGrade();
+		this.gradeName = options.gradeName;
+	},
+	methods: {
+		scrollGrade(e) {
+			const scrollLeft = e.detail.scrollLeft;
+			// console.log(Math.round(scrollLeft / 50)* 100);
+			// console.log(scrollLeft);
+			// this.scroll_left_num = Math.round(scrollLeft / 50) * 100;
+		},
+		gradeChange(e) {
+			console.log(e);
+			this.grade_on = e.detail.current;
+			this.grade_detail = this.grade_list[this.grade_on];
+		},
+		async getAllGrade() {
+			this.$u.api.getAllGrade().then(({data})=>{
+				this.grade_list = data;
+				this.grade_detail = data[0];
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.top-view {
+	color: #ffffff;
+	background-color: #fe582e;
+	position: relative;
+	.top-jt-icon {
+		position: absolute;
+		bottom: -14upx;
+		line-height: 36upx;
+		height: 36upx;
+		font-size: 36upx;
+		color: #fff;
+		left: 50%;
+		transform: translateX(-18upx);
+	}
+	.lever-view {
+		padding: 30upx 24upx;
+		.lever-view-left {
+			font-size: 22upx;
+			font-weight: bold;
+			line-height: 38upx;
+			height: 42upx;
+			padding-right: 16upx;
+			border-radius: 22upx;
+			background-color: rgba($color: #ffffff, $alpha: 0.3);
+			text {
+				transform: translateY(4upx);
+				display: inline-block;
+			}
+			.user-avator {
+				margin-right: 8upx;
+				width: 42upx;
+				height: 42upx;
+				border-radius: 100%;
+				vertical-align: middle;
+				transform: translateY(-2upx);
+			}
+		}
+	}
+	.Grade-swiper {
+		height: 200rpx;
+		.Grade-item {
+			width: 150upx !important;
+		}
+		.left_item {
+			width: 150upx !important;
+		}
+		.Grade-li {
+			width: 150upx;
+			text-align: center;
+			font-size: 24upx;
+			opacity: 0.6;
+			.Grade-icon {
+				width: 60upx;
+				height: 60upx;
+				line-height: 60upx;
+				font-size: 40upx;
+				margin-bottom: 30upx;
+				display: block;
+				border: 1upx solid #FFFFFF;
+				border-radius: 100%;
+				margin: 0 auto 20upx;
+			}
+		}
+		.Grade-on {
+			opacity: 1;
+			.Grade-icon{
+				background-color: #FFFFFF;
+				color: #fe582e;
+			}
+		}
+	}
+
+	.Grade-view {
+		padding: 50upx 0;
+		white-space: nowrap;
+		width: 100%;
+		.Grade-li {
+			display: inline-block;
+			width: 200upx;
+			text-align: center;
+			font-size: 24upx;
+			opacity: 0.6;
+			.Grade-icon {
+				font-size: 60upx;
+				margin-bottom: 30upx;
+			}
+		}
+		.Grade-on {
+			opacity: 1;
+		}
+	}
+}
+.money-ratio-view {
+	padding: 0 40upx;
+	.money-ratio-tit {
+		line-height: 100upx;
+		font-size: 32upx;
+	}
+	.money-ratio-ul {
+		border-radius: 10upx;
+		background-color: #fbf4e2;
+		color: #9b7953;
+		.money-ratio-li {
+			padding: 0 40upx;
+			line-height: 100upx;
+			border-bottom: 1upx solid #fff;
+			.ibonhuodaofukuan {
+				color: #d8a96c;
+				margin-right: 20upx;
+			}
+			.m-value {
+				font-size: 32upx;
+			}
+		}
+	}
+}
+.up-term {
+	padding: 0 40rpx;
+	.up-term-tit {
+		line-height: 100upx;
+		font-size: 32upx;
+		.fu-tit {
+			font-size: 24upx;
+			color: #666;
+			font-weight: 300;
+		}
+	}
+	.up-term-ul {
+		background-color: #fff;
+		border-radius: 10upx;
+		box-shadow: 0 0 10upx 4upx #f5f5f5;
+		.up-term-li {
+			line-height: 100upx;
+			padding: 0 24upx;
+			border-bottom: 1px solid #f5f5f5;
+			.money-u-num {
+				color: #d83d1f;
+				font-weight: 300;
+				margin-left: 10upx;
+				margin-right: 10upx;
+			}
+			.status-btn {
+				background-color: #fef0f0;
+				color: #fa3534;
+				padding: 6upx 20upx;
+				font-size: 24upx;
+				border-radius: 32upx;
+				line-height: 32upx;
+				display: inline-block;
+			}
+			.status-ac-btn{
+				color: #999999;
+				background-color: #f4f4f4;
+			}
+			&:last-child {
+				border-bottom: 0 none;
+			}
+		}
+	}
+}
+</style>

+ 181 - 0
pagesT/Distribution/IncomeDetails.vue

@@ -0,0 +1,181 @@
+<template>
+	<!-- 提现明细 -->
+	<view class="IncomeDetails">
+		<view class="navbar">
+			<view v-for="(item, index) in tab_list" :key="index" class="nav-item" :class="{ current: tabCurrentIndex === index }" @click="tabClick(item, index)">
+				{{ item.name }}
+				<view class="current-line"></view>
+			</view>
+		</view>
+		<scroll-view class="income-ul" @scrolltolower="scrollBootom" scroll-y="true" style="height:100%">
+			<view class="income-li clearfix" @click="goPage('/pagesT/Distribution/Application?id=' + item.id)" v-for="(item, index) in withdrawals_list" :key="index">
+				<view class="float_left income-label">
+					<view class="income-label-text">提现到{{ item.type === 1 ? '微信钱包' : item.type === 2 ? '支付宝' : item.type === 3 ? '银行卡' : '' }}</view>
+					<view class="income-time">{{ $_utils.formatDate(item.createTime) }}</view>
+				</view>
+				<view class="float_right">
+					<view class="income-money">
+						+
+						<text style="margin-left: 6upx;">{{ item.money }}</text>
+					</view>
+					<view class="status-text">
+						{{ item.auditStatus === 1 ? '待审核' : item.auditStatus === 2 ? '打款成功' : item.auditStatus === 3 ? '无效' : item.auditStatus === 4 ? '待打款' : '' }}
+					</view>
+				</view>
+			</view>
+			<u-loadmore margin-top="20" v-if="withdrawals_list.length" :status="loading_status" />
+		</scroll-view>
+
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			tabCurrentIndex: 0,
+			isLoding: false,
+			loading_status: 'loadmore',
+			//   1待审核 4待打款  2打款成功  3失效
+			tab_list: [
+				{
+					name: '全部',
+					value: 0
+				},
+				{
+					name: '待审核',
+					value: 1
+				},
+				{
+					name: '待打款',
+					value: 4
+				},
+				{
+					name: '已打款',
+					value: 2
+				},
+				{
+					name: '无效',
+					value: 3
+				}
+			],
+			page: 1,
+			pageSize: 10,
+			auditStatus: 0,
+			withdrawals_list: []
+		};
+	},
+	onLoad() {
+		this.text_set = this.$store.state.distributionTextSet;
+		if (this.text_set.commission_r) {
+			uni.setNavigationBarTitle({
+				title: (this.text_set.withdrawal || '提现') + '明细'
+			});
+		}
+	},
+	onShow() {
+		this.CommissionWithdrawalsGetAll();
+	},
+	methods: {
+		scrollBootom() {
+			if (this.pageTotal / this.pageSize > this.page) {
+				this.page += 1;
+				this.CommissionWithdrawalsGetAll();
+			}
+		},
+		tabClick(row, index) {
+			this.auditStatus = row.value;
+			this.tabCurrentIndex = index;
+			this.page = 1;
+			this.CommissionWithdrawalsGetAll();
+		},
+		async CommissionWithdrawalsGetAll() {
+			this.loading_status = 'loading';
+			let params = {
+				page: this.page,
+				pageSize: this.pageSize,
+				auditStatus: this.auditStatus
+			};
+			this.$u.api.CommissionWithdrawalsGetAll({
+				...params
+			}).then(data=>{
+				if (this.page === 1) {
+					this.withdrawals_list = data.data
+				} else {
+					this.withdrawals_list = this.withdrawals_list.concat(data.data);
+				}
+				this.pageTotal = data.pageTotal;
+				this.loading_status =  this.$_utils.loadStatus(this.page, this.pageSize, this.pageTotal);
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.income-ul {
+	.income-li {
+		background-color: #FFFFFF;
+		padding: 20upx;
+		border-bottom: 1upx solid #f5f5f5;
+		.income-label {
+			.income-time {
+				font-size: 24upx;
+				color: #999;
+				padding-top: 10upx;
+			}
+		}
+		.float_right {
+			text-align: right;
+			.income-money {
+				color: #333;
+				font-size: 32upx;
+				font-weight: bold;
+			}
+			.status-text {
+				font-size: 24upx;
+				padding-top: 10upx;
+				color: #fd463e;
+			}
+		}
+	}
+}
+
+.navbar {
+	display: flex;
+	height: 88upx;
+	background: #fff;
+	position: relative;
+	z-index: 10;
+	border-bottom: 1upx solid #eee;
+
+	.nav-item {
+		flex: 1;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		height: 100%;
+		font-size: 28upx;
+		color: #666666;
+		position: relative;
+		font-weight: 300;
+
+		&.current {
+			font-weight: 500;
+			font-size: 32upx;
+			color: #fd463e;
+			.current-line {
+				content: '';
+				position: absolute;
+				left: 50%;
+				bottom: 10upx;
+				transform: translateX(-50%);
+				width: 40upx;
+				height: 6upx;
+				background: #fd463e;
+				border-radius: 6upx;
+			}
+		}
+	}
+}
+</style>

+ 271 - 0
pagesT/Distribution/MyGroup.vue

@@ -0,0 +1,271 @@
+<template>
+	<view class="MyGroup">
+		<view class="top-view">
+			<view class="num-ul">
+				<view class="num-li">
+					<view class="num-li-tit">{{ text_set.Offline || '下线' }}总数</view>
+					<view class="num-li-num">{{ subTotal }}</view>
+				</view>
+				<view class="num-li-line"></view>
+				<view class="num-li">
+					<view class="num-li-tit">{{ text_set.name || '分销商名称' }}总数</view>
+					<view class="num-li-num">{{ businessmanTotal }}</view>
+				</view>
+			</view>
+			<view class="grade-ul" v-if="grade_list.length">
+				<view class="grade-li" @click="tabChange(index)" :class="[level === index + 1 ? 'grade-on' : '']" v-for="(item, index) in grade_list" :key="index">
+					{{ item.name }}
+					<view class="ibonfont ibonxiangshangjiantou top-jt-icon" v-if="level === index + 1"></view>
+				</view>
+			</view>
+		</view>
+		<view class="total-view clearfix" v-if="grade_list.length">
+			<view class="total-left float_left">
+				<view class="left-num">总数:{{ pageTotal }}</view>
+				<view class="line-num"></view>
+				<view class="left-num">{{ text_set.name || '分销商名称' }}总数:{{ subBusinessmanTotal }}</view>
+			</view>
+		</view>
+		<scroll-view @scrolltolower="scrollBootom" scroll-y="true" :style="style" class="group-ul">
+			<view class="group-li" v-for="(item, index) in group_list" :key="index">
+				<view class="user-avator-view"><image class="user-avator" :src="item.avatar" mode="aspectFill"></image></view>
+				<view class="user-info clearfix">
+					<view class="user-info-left float_left">
+						<view class="user-name ellipsis">{{ item.name }}</view>
+						<view class="user-time">消费:¥{{ item.totalMoney || 0 }}</view>
+					</view>
+					<view class="user-info-right float_right">
+						<view class="user-time" style="padding-top: 0;">{{ $_utils.formatDate(item.createTime) }}</view>
+						<view class="user-time">订单:{{ item.orderTotal }}</view>
+					</view>
+				</view>
+			</view>
+			<u-loadmore margin-top="20" v-if="group_list.length" :status="loading_status" />
+		</scroll-view>
+
+	</view>
+</template>
+
+<script>
+
+export default {
+	computed: {
+		style() {
+			const systemInfo = uni.getSystemInfoSync();
+			if(this.distribution_set.level===1){
+				return `height: calc(100vh - ${systemInfo.statusBarHeight + 82}px)`;
+			}else{
+				return `height: calc(100vh - ${systemInfo.statusBarHeight + 171}px)`;
+			}
+
+		},
+		location() {
+			return this.$store.state.locationObj;
+		}
+	},
+	data() {
+		return {
+			loading_status: 'loadmore',
+			isLogin: false,
+			grade_list: [],
+			current: 0,
+			myId: 0,
+			group_list: [],
+			page: 1,
+			pageSize: 10,
+			pageTotal: 0,
+			level: 1,
+			text_set: {},
+			topTotal: 0,
+			subTotal: 0,
+			businessmanTotal: 0,
+			subBusinessmanTotal: 0,
+			distribution_set:{}
+		};
+	},
+	onLoad(options) {
+		uni.setNavigationBarColor({
+			frontColor: '#ffffff',
+			backgroundColor: '#fe582e'
+		});
+		this.text_set = this.$store.state.distributionTextSet;
+		this.distribution_set = this.$store.state.distributionSet;
+		this.myId = parseInt(options.id);
+		if(this.distribution_set.level===2){
+			this.grade_list = [
+				{
+					name: this.text_set.level_one || '一级'
+				},
+				{
+					name: this.text_set.level_two || '二级'
+				}
+			];
+
+		}else if(this.distribution_set.level===3){
+			this.grade_list = [
+				{
+					name: this.text_set.level_one || '一级'
+				},
+				{
+					name: this.text_set.level_two || '二级'
+				},
+				{
+					name: this.text_set.level_three || '三级'
+				}
+			];
+		}
+
+	},
+	onShow() {
+		this.getAllSub();
+	},
+	methods: {
+		// 查询分销商的下级
+		async getAllSub() {
+			this.loading_status = 'loading';
+			this.$u.api.getAllSub({
+				id: this.myId,
+				level: this.level,
+				page: this.page,
+				pageSize: this.pageSize
+			}).then(data=>{
+				if (this.page === 1) {
+					this.group_list = data.data;
+				} else {
+					this.group_list = this.group_list.concat(data.data);
+				}
+				this.pageTotal = data.pageTotal;
+				this.topTotal = data.topTotal;
+				this.subTotal = data.subTotal;
+				this.businessmanTotal = data.businessmanTotal;
+				this.subBusinessmanTotal = data.subBusinessmanTotal;
+				this.loading_status =  this.$_utils.loadStatus(this.page, this.pageSize, this.pageTotal);
+			});
+		},
+		scrollBootom() {
+			if (this.pageTotal / this.pageSize > this.page) {
+				this.page += 1;
+				this.getAllSub();
+			}
+		},
+		tabChange(index) {
+			this.current = index;
+			this.level = index + 1;
+			this.page = 1;
+			this.getAllSub();
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.top-view {
+	color: #ffffff;
+	background-color: #fe582e;
+
+	.num-ul {
+		padding: 40upx 0;
+		display: flex;
+		.num-li {
+			flex: 2;
+			text-align: center;
+			.num-li-tit {
+				font-size: 24upx;
+			}
+			.num-li-num {
+				font-size: 40upx;
+				padding-top: 30upx;
+			}
+		}
+		.num-li-line {
+			width: 1upx;
+			height: 56upx;
+			background-color: #fff;
+			opacity: 0.5;
+			transform: translateY(70upx);
+		}
+	}
+	.grade-ul {
+		background-color: rgba($color: #ffffff, $alpha: 0.2);
+		font-size: 28upx;
+		display: flex;
+		color: rgba($color: #ffffff, $alpha: 0.7);
+		.grade-li {
+			flex: 2;
+			text-align: center;
+			line-height: 90upx;
+			position: relative;
+			.top-jt-icon {
+				position: absolute;
+				bottom: -10upx;
+				left: 50%;
+				transform: translateX(-50%);
+				display: block;
+				height: 30upx;
+				line-height: 30upx;
+				font-size: 32upx;
+				color: rgba($color: #ffffff, $alpha: 1);
+			}
+		}
+		.grade-on {
+			color: rgba($color: #ffffff, $alpha: 1);
+			font-size: 32upx;
+		}
+	}
+}
+.total-view {
+	line-height: 90upx;
+	color: #3d404d;
+	background-color: #fff1f0;
+	font-size: 24upx;
+	.total-left {
+		.left-num {
+			padding: 0 24upx;
+			display: inline-block;
+		}
+		.line-num {
+			display: inline-block;
+			width: 2upx;
+			height: 28upx;
+			background-color: #fff;
+		}
+	}
+}
+.group-ul {
+	.group-li {
+		padding: 20upx;
+		background-color: #fff;
+		border-radius: 8upx;
+		.user-avator-view {
+			display: inline-block;
+			padding-right: 20upx;
+			.user-avator {
+				display: block;
+				width: 100upx;
+				height: 100upx;
+				border-radius: 100%;
+			}
+		}
+		.user-info {
+			border-bottom: 1upx solid #f4f4f4;
+			width: 588upx;
+			display: inline-block;
+			padding-bottom: 20upx;
+			.user-name{
+				width: 310rpx;
+				-webkit-line-clamp:1;
+				height: 40rpx;
+				line-height: 40rpx;
+			}
+			.user-time {
+				color: #999;
+				font-size: 24upx;
+				padding-top: 10upx;
+			}
+			.user-info-right {
+				text-align: right;
+			}
+		}
+	}
+}
+</style>

+ 222 - 0
pagesT/Distribution/NotRecorded.vue

@@ -0,0 +1,222 @@
+<template>
+	<view class="NotRecorded">
+		<view class="top-money-view">
+			<view class="money-num">{{ waitMoney || 0 }}</view>
+			<view class="add-up-label">{{ text_set.commission_r || '待入账佣金' }}(元)</view>
+		</view>
+		<view class="order-list">
+			<view v-for="(item, index) in orderList" :key="index" class="order-item" @click="goPage(`/pagesT/Distribution/DorderDetail?id=` + item.id)">
+				<view class="clearfix order-no-view">
+					<text class="float_left order-no-text">{{ $_utils.formatDate(item.createTime) }}</text>
+					<text class="float_right order-status-text">
+						{{ text_set.commission || '佣金' }}:
+						<text class="rmb-ic">¥</text>
+						<text class="price-num">{{ item.retMoney || 0 }}</text>
+					</text>
+				</view>
+				<view class="goods-ul">
+					<view class="goods-li clearfix" v-for="(it, gindex) in item.orderGoods" :key="gindex">
+						<image class="goods-img float_left" :src="it.goodsImages" mode="aspectFit"></image>
+						<view class="float_right goods-right">
+							<view class="goods-name">{{ it.goodsName }}</view>
+							<view class="goods-descrip">
+								规格:
+								<text style="padding-right: 6upx;">{{ it.unitName }}</text>
+								<block v-for="(ip, indexSp) in it.specGroup" :key="indexSp">
+									<text v-if="indexSp > 0">-</text>
+									<text>{{ ip.specValueName }}</text>
+								</block>
+							</view>
+							<view class="goods-price clearfix">
+								<view class="float_left">
+									<text class="price" style="color: fa3534">¥{{ it.price || 0 }}</text>
+								</view>
+								<view class="float_right">
+									<text class="icon-jia">*</text>
+									<text class="goods-num">{{ it.buyNum }}</text>
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<u-loadmore v-if="orderList.length" :status="loading_status" />
+		</view>
+
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			loading_status: 'loadmore',
+			orderList: [],
+			text_set: {},
+			isLoding: false,
+			page: 1,
+			pageSize: 10,
+			pageTotal: 0,
+			waitMoney: 0
+		};
+	},
+	onLoad(options) {
+		uni.setNavigationBarColor({
+			frontColor: '#ffffff',
+			backgroundColor: '#fb604e'
+		});
+		this.text_set = this.$store.state.distributionTextSet;
+		if (this.text_set.commission_r) {
+			uni.setNavigationBarTitle({
+				title: this.text_set.commission_r || '待入账佣金'
+			});
+		}
+		this.waitMoney = options.waitMoney || 0;
+	},
+	onShow() {
+		this.getCommissionOrder();
+	},
+	onReachBottom() {
+		if (this.pageTotal / this.pageSize > this.page) {
+			this.page += 1;
+			this.getOrderSelect();
+		}
+	},
+	methods: {
+		// 订单
+		 getCommissionOrder() {
+			this.loading_status = 'loading';
+			this.$u.api.getCommissionOrder({
+				page: this.page,
+				pageSize: this.pageSize,
+				orderStatus: [2, 3, 4]
+			}).then(data=>{
+				if (this.page === 1) {
+					this.orderList = data.data;
+				} else {
+					this.orderList = this.orderList.concat(data.data);
+				}
+				this.pageTotal = data.pageTotal;
+				this.loading_status =  this.$_utils.loadStatus(this.page, this.pageSize, this.pageTotal);
+			});
+
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+body {
+	background: $page-color-base;
+}
+.top-money-view {
+	background: #fb604e;
+	padding: 50upx 0;
+	text-align: center;
+	.money-num {
+		font-size: 64upx;
+		color: #ffffff;
+		padding-bottom: 20upx;
+	}
+	.add-up-label {
+		color: #ffffff;
+		opacity: 0.5;
+		font-size: 24upx;
+	}
+}
+.order-item {
+	margin: 24upx 0;
+	// padding: 0 30upx;
+	background-color: #fff;
+	border-bottom: 2upx solid #f5f5f5;
+	.order-no-view {
+		font-size: 24upx;
+		padding: 24upx 30upx;
+		color: #666;
+		font-weight: 300;
+		border-bottom: 1upx solid #eee;
+		.order-status-text {
+			font-weight: 400;
+			color: #999;
+			.rmb-ic {
+				color: #fa3534;
+				font-size: 22upx;
+			}
+			.price-num {
+				color: #fa3534;
+				font-size: 28upx;
+				margin-left: 6upx;
+			}
+		}
+	}
+	.goods-li {
+		// background: #fafafa;
+		border-bottom: 1upx solid #eee;
+		padding: 30upx 20upx;
+		margin-bottom: 20upx;
+
+		.goods-img {
+			width: 180upx;
+			height: 180upx;
+		}
+
+		.goods-right {
+			width: 500upx;
+			margin-left: 20upx;
+
+			.goods-name {
+				color: #333;
+				font-size: 32upx;
+				margin-bottom: 19upx;
+				text-overflow: -o-ellipsis-lastline;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				line-clamp: 1;
+				-webkit-box-orient: vertical;
+			}
+
+			.goods-descrip {
+				font-size: 22upx;
+				color: #999;
+				margin-bottom: 28upx;
+				// font-weight: 300;
+				text-overflow: -o-ellipsis-lastline;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				line-clamp: 1;
+				-webkit-box-orient: vertical;
+			}
+
+			.goods-price {
+				.price {
+					color: $price-color;
+					font-size: 40upx;
+				}
+
+				.sku {
+					font-size: 22upx;
+					font-weight: 300;
+					color: #666;
+				}
+
+				.icon-jia {
+					color: #666;
+					font-size: 24upx;
+				}
+
+				.goods-num {
+					font-size: 24upx;
+				}
+			}
+		}
+	}
+	.goods-li:last-child {
+		margin-bottom: 0;
+		border-bottom: 0 none;
+	}
+}
+</style>

+ 383 - 0
pagesT/Distribution/Poster.vue

@@ -0,0 +1,383 @@
+<template>
+	<view class="poster_page">
+		<canvas canvas-id="poster" class="poster_canvas"></canvas>
+		<view class="poster_image">
+			<image class="poster_bg_image" :src="promoteBgImgs" mode="widthFix"></image>
+			<image class="poster_code_image" :src="promoteCodeImg" mode="aspectFit"></image>
+		</view>
+
+		<view class="share_save_box">
+			<!-- #ifdef MP -->
+			<button open-type="share" class="b-btn">
+				<text class="ibonfont ibonsousuo"></text>
+				<text>发给好友</text>
+			</button>
+			<!-- #endif -->
+			<!-- #ifdef APP-PLUS -->
+			<view @click="onAppShare"  class="b-btn">
+				<text class="ibonfont ibonsousuo"></text>
+				<text>发给好友</text>
+			</view>
+			<!-- #endif -->
+			<view class="b-btn" @click="onSaveImg">
+				<text class="ibonfont ibonbaocun-" style="color: #f2b844;"></text>
+				<text>保存图片</text>
+			</view>
+		</view>
+		<!-- #ifdef H5 -->
+		<view class="h5_press_save" v-if="h5SaveImg" @click="h5SaveImg = ''">
+			<image :src="h5SaveImg" mode="widthFix"></image>
+			<button class="download">长按图片保存图片</button>
+		</view>
+		<!-- #endif -->
+	</view>
+</template>
+
+<script>
+import { mapState, mapMutations } from 'vuex';
+let settingWritePhotosAlbum = false;
+import webUrl from '../../config.js';
+export default {
+	data() {
+		return {
+			promoteCodeImg: '',
+			swiperIndex: 0,
+			posterImgs: [],
+			base_set_info:{},
+			h5SaveImg: '',
+			promoteBgImgs:'https://onlineimg.qianniao.vip/94d23d0a2f4c4e6187de1ba6e12050b5/1595924199706推广.jpg'
+		};
+	},
+	//第一次加载
+	onLoad(e) {
+		this.getQrSrc();
+		this.base_set_info = this.$store.state.baseSet;
+	},
+	computed: {
+		...mapState(['userInfo'])
+	},
+	//方法
+	methods: {
+		async getQrSrc() {
+			// #ifdef MP-TOUTIAO
+			// let pathT = 'pages/index/index' + this.goods_id;
+			// pathT = encodeURIComponent(pathT);
+			// this.$u.api.byteCreateQRCode({
+			// 	path: pathT,
+			// 	params: this.goods_id,
+			// 	appname: 'toutiao'
+			// }).then(res=>{});
+			// #endif
+			// #ifdef MP-WEIXIN || H5
+			let pathS = 'pages/index/index';
+			this.$u.api.createwxaqrcode({
+				path: pathS,
+				params: this.$store.state.userStatus.id
+			}).then(res=>{
+				this.promoteCodeImg = res.data.indexOf('https') > -1 ? res.data : webUrl.QRC_SRC + res.data;
+			})
+			// #endif
+		},
+		// 轮播图变化
+		onSwiperChange(e) {
+			this.swiperIndex = e.detail.current;
+		},
+		// 创建海报
+		createPoster() {
+			return new Promise((resolve, reject) => {
+				if (this.posterImgs[this.swiperIndex]) {
+					resolve(this.posterImgs[this.swiperIndex]);
+				} else {
+					uni.showLoading({
+						title: '海报生成中'
+					});
+					const ctx = uni.createCanvasContext('poster');
+					ctx.fillRect(0, 0, 375, 667);
+					uni.downloadFile({
+						url: this.promoteBgImgs,
+						success: res => {
+							if (res.statusCode === 200) {
+								ctx.drawImage(res.tempFilePath, 0, 0, 375, 667);
+								uni.downloadFile({
+									url: this.promoteCodeImg,
+									success: res => {
+										if (res.statusCode === 200) {
+											ctx.drawImage(res.tempFilePath, 137, 416, 100.1, 100.1);
+											ctx.draw(true, () => {
+												// canvas画布转成图片并返回图片地址
+												uni.canvasToTempFilePath({
+													canvasId: 'poster',
+													width: 375,
+													height: 667,
+													success: res => {
+														if (this.posterImgs[this.swiperIndex]) {
+															this.posterImgs[this.swiperIndex].temporary = res.tempFilePath;
+														} else {
+															this.posterImgs[this.swiperIndex] = {};
+															this.posterImgs[this.swiperIndex].temporary = res.tempFilePath;
+														}
+														resolve(res.tempFilePath);
+														console.log(res.tempFilePath);
+													},
+													fail: () => {
+														uni.hideLoading();
+														reject();
+													}
+												});
+											});
+										} else {
+											uni.hideLoading();
+											uni.showToast({
+												title: '海报制作失败,图片下载失败',
+												icon: 'none'
+											});
+										}
+									},
+									fail: err => {
+										uni.hideLoading();
+										uni.showToast({
+											title: '海报制作失败,图片下载失败',
+											icon: 'none'
+										});
+									}
+								});
+							} else {
+								uni.hideLoading();
+								uni.showToast({
+									title: '海报制作失败,图片下载失败',
+									icon: 'none'
+								});
+							}
+						},
+						fail: err => {
+							uni.hideLoading();
+							uni.showToast({
+								title: '海报制作失败,图片下载失败',
+								icon: 'none'
+							});
+						}
+					});
+				}
+			});
+		},
+		// 保存图片
+		async onSaveImg() {
+			let imgUrl = '';
+			if (this.posterImgs[this.swiperIndex] && this.posterImgs[this.swiperIndex].temporary) {
+				imgUrl = await this.posterImgs[this.swiperIndex].temporary;
+			} else {
+				imgUrl = await this.createPoster();
+			}
+			// #ifdef H5
+			this.h5SaveImg = imgUrl;
+			uni.hideLoading();
+			// #endif
+			// #ifdef MP-WEIXIN
+			uni.showLoading({
+				title: '海报下载中'
+			});
+			if (settingWritePhotosAlbum) {
+				uni.getSetting({
+					success: res => {
+						if (res.authSetting['scope.writePhotosAlbum']) {
+							uni.saveImageToPhotosAlbum({
+								filePath: imgUrl,
+								success: () => {
+									uni.hideLoading();
+									uni.showToast({
+										title: '保存成功'
+									});
+								}
+							});
+						} else {
+							uni.showModal({
+								title: '提示',
+								content: '请先在设置页面打开“保存相册”使用权限',
+								confirmText: '去设置',
+								cancelText: '算了',
+								success: data => {
+									if (data.confirm) {
+										uni.hideLoading();
+										uni.openSetting();
+									}
+								}
+							});
+						}
+					}
+				});
+			} else {
+				settingWritePhotosAlbum = true;
+				uni.authorize({
+					scope: 'scope.writePhotosAlbum',
+					success: () => {
+						uni.saveImageToPhotosAlbum({
+							filePath: imgUrl,
+							success: () => {
+								uni.hideLoading();
+								uni.showToast({
+									title: '保存成功'
+								});
+							}
+						});
+					}
+				});
+			}
+			// #endif
+			// #ifdef APP-PLUS
+			uni.showLoading({
+				title: '海报下载中'
+			});
+			uni.saveImageToPhotosAlbum({
+				filePath: imgUrl,
+				success: () => {
+					uni.hideLoading();
+					uni.showToast({
+						title: '保存成功'
+					});
+				}
+			});
+			// #endif
+		},
+		async onAppShare() {
+			uni.share({
+				provider: 'weixin',
+				scene: 'WXSceneSession',
+				type: 5,
+				title: this.base_set_info.shop,
+				imageUrl: this.base_set_info.images,
+				success: function(res) {
+					console.log('success:' + JSON.stringify(res));
+				},
+				fail: function(err) {
+					console.log('fail:' + JSON.stringify(err));
+				}
+			});
+		}
+	},
+	//页面隐藏
+	onHide() {},
+	//页面卸载
+	onUnload() {},
+	//页面下来刷新
+	onPullDownRefresh() {},
+	//页面上拉触底
+	onReachBottom() {},
+	//用户点击分享
+	onShareAppMessage(e) {
+		return {
+			title: this.$store.state.baseSet.shop,
+			path: '/pages/index/index?businessmanId=' + this.$store.state.userStatus.id,
+			imageUrl: this.$store.state.baseSet.images,
+			success: res => {
+				console.log(res);
+			}
+		}
+	}
+};
+</script>
+<style lang="scss" scoped>
+// @import '@/style/mixin.scss';
+.poster_page {
+	min-height: 100vh;
+	background-color: #fff;
+	display: flex;
+	align-items: center;
+}
+.poster_canvas {
+	width: 750rpx;
+	height: 1334rpx;
+	position: fixed;
+	top: -10000rpx;
+	left: 0rpx;
+}
+.poster_image {
+	position: fixed;
+	top: 0;
+	left: 0;
+	.poster_bg_image {
+		width: 750upx;
+		height: 100vh;
+	}
+	.poster_code_image {
+		position: absolute;
+		bottom: 350rpx;
+		width: 136rpx;
+		height: 136rpx;
+		left: 50%;
+		transform: translateX(-50%);
+	}
+}
+.share_save_box {
+	position: fixed;
+	bottom: 0;
+	left: 0;
+	z-index: 6;
+	width: 100%;
+	display: flex;
+	padding: 10upx 0;
+	background-color: rgba($color: #ffffff, $alpha: 0.6);
+	.b-btn {
+		flex: 2;
+		text-align: center;
+		color: #000000;
+		font-size: 24rpx;
+		height: auto;
+		background-color: transparent;
+		overflow: inherit;
+		line-height: 46upx;
+		padding-left: 0;
+		padding-right: 0;
+		.ibonfont {
+			font-size: 60upx;
+			display: block;
+			color: #04be02;
+			margin: 0 auto 10upx;
+			width: 58rpx;
+			height: 58rpx;
+			border-radius: 100%;
+			background-color: #ffffff;
+			line-height: 60rpx;
+
+		}
+	}
+	button::after{
+		border: 0 none;
+	}
+}
+.h5_press_save {
+	background-color: #000;
+	position: fixed;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+	display: flex;
+	align-items: center;
+	z-index: 100;
+	image {
+		width: 100%;
+	}
+	.download {
+		font-size: 24rpx;
+		color: #ffffff;
+		background-color: rgba(0, 0, 0, 0.5);
+		display: flex;
+		align-items: center;
+		flex-direction: row;
+		justify-content: center;
+		position: absolute;
+		padding: 5rpx 30rpx;
+		border-radius: 40rpx;
+		bottom: 30rpx;
+		left: 50%;
+		transform: translateX(-50%);
+		&:before {
+			content: '';
+			// @include bis('../../../static/demo/icon_download.png');
+			width: 24rpx;
+			height: 24rpx;
+			margin-right: 15rpx;
+		}
+	}
+}
+</style>

+ 222 - 0
pagesT/Distribution/Ranking.vue

@@ -0,0 +1,222 @@
+<template>
+	<view class="Ranking">
+		<u-navbar title="排行榜" title-color="#ffffff" back-icon-color="#ffffff" :border-bottom="false" :background="{ backgroundColor: '#ff4f63' }"></u-navbar>
+		<view class="ranking-cont" v-if="grade_list.length > 0">
+			<image class="ranking-bg" src="https://onlineimg.qianniao.vip/ranking-bg.png" mode=""></image>
+			<view class="top-three clearfix">
+				<view class="top-three-li second">
+					<view class="user-avator-view"  v-if="grade_list[1]">
+						<view class="ranking-sort">
+							2
+						</view>
+						<image class="r-vip" src="https://onlineimg.qianniao.vip/r-two.png" mode="aspectFill"></image>
+						<image class="user-avator" :src="grade_list[1].avatar" mode="aspectFill"></image>
+					</view>
+					<view class="user-info-view" v-if="grade_list[1]">
+						<view class="user-name">{{ grade_list[1].name }}</view>
+						<view class="user-money">¥{{ grade_list[1].totalMoney || 0  }}</view>
+					</view>
+				</view>
+				<view class="top-three-li first">
+					<view class="user-avator-view">
+						<view class="ranking-sort">
+							1
+						</view>
+						<image class="r-vip" src="https://onlineimg.qianniao.vip/r-one.png" mode="aspectFill"></image>
+						<image class="user-avator" :src="grade_list[0].avatar" mode="aspectFill"></image>
+					</view>
+					<view class="user-info-view">
+						<view class="user-name">{{ grade_list[0].name }}</view>
+						<view class="user-money">¥{{ grade_list[0].totalMoney || 0 }}</view>
+					</view>
+				</view>
+				<view class="top-three-li third">
+					<view class="user-avator-view"  v-if="grade_list[2]">
+						<view class="ranking-sort">
+							3
+						</view>
+						<image class="r-vip" src="https://onlineimg.qianniao.vip/r-three.png" mode="aspectFill"></image>
+						<image class="user-avator" :src="grade_list[2].avatar" mode="aspectFill"></image>
+					</view>
+					<view class="user-info-view"  v-if="grade_list[2]">
+						<view class="user-name">{{ grade_list[2].name }}</view>
+						<view class="user-money">¥{{ grade_list[2].totalMoney || 0 }}</view>
+					</view>
+				</view>
+			</view>
+			<view class="ranking-list">
+				<block v-for="(item, index) in grade_list" :key="index">
+					<view class="ranking-li clearfix" v-if="index > 2">
+						<view class="float_left sort-num">{{ index + 1 }}</view>
+						<image class="float_left user-avator" :src="item.avatar" mode="aspectFill"></image>
+						<view class="float_left user-info clearfix">
+							<view class="user-name float_left">{{ item.name }}</view>
+							<view class="money float_right">¥{{ item.totalMoney || 0 }}</view>
+						</view>
+					</view>
+				</block>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			grade_list: []
+		};
+	},
+	onLoad() {
+		this.commissionTop();
+	},
+	methods: {
+		 commissionTop() {
+			this.$u.api.commissionTop().then(res=>{
+				this.grade_list = res.data.moneyTop;
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+body {
+	background-color: #ff4f63;
+}
+.Ranking {
+	.ranking-cont {
+		padding-top: 165upx;
+		.ranking-bg {
+			width: 424upx;
+			height: 79upx;
+			display: block;
+			margin: 0 auto;
+			transform: translateY(-100upx);
+		}
+		.top-three {
+			padding-left: 36upx;
+			.top-three-li {
+				float: left;
+				width: 192upx;
+				height: 309upx;
+				background-color: #ff354c;
+				border-radius: 12upx;
+				.user-avator-view {
+					position: relative;
+					.ranking-sort{
+						font-size: 24upx;
+						width: 34upx;
+						height: 34upx;
+						line-height: 34upx;
+						background-color: #8fc7fe;
+						color: #fff;
+						border-radius: 100%;
+						border: 1px solid #6eb7ff;
+						position: absolute;
+						bottom: 34upx;
+						left: 50%;
+						transform: translateX(-50%);
+						z-index: 9;
+						text-align: center;
+					}
+					.r-vip {
+						width: 58upx;
+						height: 42upx;
+						display: block;
+						position: absolute;
+						top: -68upx;
+						left: 50%;
+						transform: translateX(-29upx);
+					}
+					.user-avator {
+						width: 136upx;
+						height: 136upx;
+						border-radius: 100%;
+						display: block;
+						border: 4upx solid #8cc5fd;
+						margin: 0 auto;
+						transform: translateY(-30upx);
+					}
+				}
+				.user-info-view {
+					text-align: center;
+					color: #ffffff;
+					font-weight: bold;
+					font-size: 32upx;
+					.user-money {
+						font-weight: normal;
+						padding-top: 12upx;
+					}
+				}
+			}
+			.first {
+				width: 260upx;
+				height: 359upx;
+				margin: 0 16upx;
+				transform: translateY(-50upx);
+				.user-avator-view {
+					.user-avator {
+						width: 180upx;
+						height: 180upx;
+						border-color: #fdb10d;
+					}
+					.ranking-sort{
+						width: 44upx;
+						height: 44upx;
+						line-height: 44upx;
+						border-color: #f9ce72;
+						font-size: 26upx;
+						background-color: #febd03;
+					}
+				}
+			}
+			.third {
+				.user-avator-view {
+					.user-avator {
+						border-color: #ffaa6a;
+					}
+					.ranking-sort{
+						border-color: #f5abb5;
+						background-color: #ffaa6a;
+					}
+				}
+			}
+		}
+		.ranking-list {
+			min-height: 756upx;
+			background-color: #fff;
+			border-top-left-radius: 20upx;
+			border-top-right-radius: 20upx;
+			transform: translateY(-70upx);
+			padding: 30upx 0;
+			.ranking-li {
+				padding: 0 36upx 20upx;
+				.sort-num {
+					line-height: 100upx;
+					font-size: 30upx;
+					font-weight: bold;
+					padding-right: 26upx;
+				}
+				.user-avator {
+					width: 100upx;
+					height: 100upx;
+					border-radius: 100%;
+					margin-right: 30upx;
+				}
+				.user-info {
+					width: 500upx;
+					line-height: 100upx;
+					.user-name {
+						font-size: 28upx;
+						font-weight: bold;
+					}
+					.money {
+						color: #fe582e;
+					}
+				}
+			}
+		}
+	}
+}
+</style>

+ 434 - 0
pagesT/Distribution/Withdrawal.vue

@@ -0,0 +1,434 @@
+<template>
+	<!-- 申请提现 -->
+	<view class="Withdrawal">
+		<u-alert-tips v-if="!distributionSet.payType || !distributionSet.payType.length" type="warning" title="抱歉,管理员未配置提现方式" show-icon></u-alert-tips>
+		<view class="w-view w-channel clearfix" @click="openPay">
+			<view class="float_left">转出方式</view>
+			<view class="float_right">
+				<text v-if="cash_out_num">{{ cash_out_num }}</text>
+				<text v-else class="w-input-place">请选择</text>
+				<text class="ibonfont ibonjinru"></text>
+			</view>
+		</view>
+		<view class="w-view clearfix" v-if="cash_out_num && cash_out_num !== '微信钱包'">
+			<view class="float_left">姓名</view>
+			<view class="float_right">
+				<input type="text" placeholder-class="w-input-place" placeholder="请输入真实姓名" class="w-input" v-model="cash_out_form.accountContent.name" />
+			</view>
+		</view>
+		<block v-if="cash_out_num === '支付宝'">
+			<view class="w-view clearfix">
+				<view class="float_left">支付宝账号</view>
+				<view class="float_right">
+					<input placeholder-class="w-input-place" class="w-input" placeholder="请输入支付宝账号" type="text" v-model="cash_out_form.accountContent.account" />
+				</view>
+			</view>
+		</block>
+		<block v-if="cash_out_num === '银行卡'">
+			<picker @change="bindBankChange" :value="bank_index" range-key="cardNum" :range="bank_list">
+				<view class="w-view clearfix">
+					<view class="float_left">选择银行</view>
+					<view class="float_right clearfix" style="width: 480rpx;">
+						<text class="float_left" v-if="cash_out_form.accountContent.bankName">{{ cash_out_form.accountContent.bankName }}</text>
+						<text v-else class="w-input-place float_left">请选择</text>
+						<text class="ibonfont ibonjinru float_right" style="margin-top: 4rpx;"></text>
+					</view>
+				</view>
+			</picker>
+			<view class="w-view clearfix">
+				<view class="float_left">银行卡号</view>
+				<view class="float_right">
+					<input placeholder-class="w-input-place" placeholder="请输入银行卡号" class="w-input" type="text" v-model="cash_out_form.accountContent.account" />
+				</view>
+			</view>
+			<view class="w-view clearfix">
+				<view class="float_left">确认卡号</view>
+				<view class="float_right"><input placeholder-class="w-input-place" placeholder="请再次输入银行卡号" class="w-input" type="text" v-model="agin_card_num" /></view>
+			</view>
+		</block>
+		<view class="w-view w-money">
+			<view class="w-tit">
+				<text>{{ text_set.withdrawal || '提现' }}金额</text>
+				<text class="w-tit-r">最少{{ text_set.withdrawal || '提现' }}金额{{ distributionSet.quota }}元</text>
+			</view>
+			<view class="w-money-input-view">
+				<text class="rmb-icon">¥</text>
+				<input class="w-money-input" type="text" v-model="cash_out_form.money" />
+			</view>
+		</view>
+		<view class="clearfix w-tip">
+			<text class="float_left">{{ text_set.commission_w || '可提现佣金' }}:¥{{ cash_out_form.nowMoney || 0 }}</text>
+			<text class="float_right primary-color" @click="allWitjdrawal">全部{{ text_set.withdrawal || '提现' }}</text>
+		</view>
+		<view class="w-btn" @click="withdrawalsAdd" :class="[cash_out_form.money >= Number(distributionSet.quota) ? 'w-btn-on' : '']">{{ text_set.withdrawal || '提现' }}</view>
+		<u-popup mode="bottom" v-model="payPop" :border-radius="12">
+			<view class="pay-pop-view">
+				<view class="pay-sel-title clearfix">
+					<text class="float_left">{{ text_set.withdrawal || '提现' }}方式</text>
+					<text class="float_right ibonfont ibonguanbi" @click="closePayPop"></text>
+				</view>
+				<view class="pay-ul">
+					<view class="pay-li" @click="paymentChange(4)" v-if="distributionSet.payType.indexOf(4) > -1">
+						<text class="ibonfont ibonweixinzhifu"></text>
+						<view class="pay-name clearfix">
+							<text class="float_left">微信钱包</text>
+							<text class="float_right ibonfont primary-color" :class="[payType === 4 ? 'ibonxuanze1' : 'ibonweixuanze']"></text>
+						</view>
+					</view>
+					<block v-if="distributionSet.payType.indexOf(5) > -1">
+						<!-- <view class="pay-tip">手动打款</view> -->
+						<!-- 手动打款 -->
+						<view class="pay-li" @click="withdrawTypeChange(4)" v-if="distributionSet.withdrawType.indexOf(4) > -1">
+							<text class="ibonfont ibonumidd17"></text>
+							<view class="pay-name clearfix">
+								<text class="float_left">支付宝</text>
+								<text
+									class="float_right ibonfont primary-color"
+									:class="[payType === 5 && withdrawType === 4 ? 'ibonxuanze1' : 'ibonweixuanze']"
+								></text>
+							</view>
+						</view>
+						<view class="pay-li" @click="withdrawTypeChange(5)" v-if="distributionSet.withdrawType.indexOf(5) > -1">
+							<text class="ibonfont ibonyinhangqia"></text>
+							<view class="pay-name clearfix">
+								<text class="float_left">银行卡</text>
+								<text
+									class="float_right ibonfont primary-color"
+									:class="[payType === 5 && withdrawType === 5 ? 'ibonxuanze1' : 'ibonweixuanze']"
+								></text>
+							</view>
+						</view>
+					</block>
+				</view>
+			</view>
+		</u-popup>
+
+	</view>
+</template>
+
+<script>
+import { getOpenid } from '@/access/common.js';
+export default {
+	data() {
+		return {
+			isLoding: false,
+			payPop: false,
+			cash_out_form: {
+				businessmanId: '', // 提现者分销商id
+				type: 1, //1 微信钱包;2,支付宝;3,银行卡
+				accountContent: {
+					name: '', // 提现者姓名
+					account: '', // 提现账号
+					bankName: '' //银行名称
+				},
+				money: 0, // 输入提现金额
+				nowMoney: 0 // 当前实际金额
+			},
+			bank_list: [], // 银行卡列表
+			bank_index: 0, //选择银行卡下标
+			text_set: {}, //文字设置
+			cash_out_num: '', // 转出方式
+			agin_card_num: '', //确认卡号
+			payType: 4, // 自动提现
+			distributionSet: {
+				quota: 0,
+				// 分销基础设置
+				payType: [],
+				withdrawType: []
+			},
+			cardNum: '', //银行卡
+			withdrawType: 4 //手动提现  4:支付宝 5:银行卡',
+		};
+	},
+	onLoad(options) {
+		this.text_set = this.$store.state.distributionTextSet;
+		if (this.text_set.commission_r) {
+			uni.setNavigationBarTitle({
+				title: '申请' + (this.text_set.withdrawal || '提现')
+			});
+		}
+		// 判断申请方式
+		this.distributionSet = this.$store.state.distributionSet;
+		if (this.distributionSet.payType && this.distributionSet.payType.length) {
+			this.payType = this.distributionSet.payType[0];
+			if (this.payType === 5) {
+				if (this.distributionSet.withdrawType && this.distributionSet.withdrawType.length) {
+					this.withdrawType = this.distributionSet.withdrawType[0];
+					this.cash_out_num = this.withdrawType === 4 ? '支付宝' : this.withdrawType === 5 ? '银行卡' : '';
+				}
+			} else {
+				this.cash_out_num = '微信钱包';
+			}
+		}
+		// 可提现金额
+		if (options.balance) {
+			this.cash_out_form.nowMoney = options.balance || 0;
+		}
+		// 银行卡列表
+		if (this.distributionSet.withdrawInfo) {
+			this.bank_list = this.distributionSet.withdrawInfo;
+		}
+
+		// 获取提现者分销商id
+		this.cash_out_form.businessmanId = options.id;
+		// 获取OPenID
+		this.cash_out_form.accountContent.account = getOpenid();
+	},
+	methods: {
+		// 申请提现
+		 withdrawalsAdd() {
+			if (this.cash_out_form.type === 2) {
+				if (!this.cash_out_form.accountContent.name) {
+					this.$api.msg('请输入您的真实姓名');
+					return;
+				}
+				if (!this.cash_out_form.accountContent.account) {
+					this.$api.msg('请输入您的支付宝账号');
+					return;
+				}
+			}
+			if (this.cash_out_form.type === 3) {
+				if (!this.cash_out_form.accountContent.name) {
+					this.$api.msg('请输入您的真实姓名');
+					return;
+				}
+				if (!this.cash_out_form.accountContent.bankName) {
+					this.$api.msg('请选择银行名称');
+					return;
+				}
+				if (!this.cash_out_form.accountContent.account) {
+					this.$api.msg('请输入您的银行账号');
+					return;
+				}
+				if (!this.agin_card_num) {
+					this.$api.msg('请再次输入您的银行账号');
+					return;
+				}
+				if (this.agin_card_num !== this.cash_out_form.accountContent.account) {
+					this.$api.msg('确认卡号与银行卡号不一致');
+					return;
+				}
+			}
+			if (!this.cash_out_form.money) {
+				this.$api.msg('请输入要提现金额');
+				return;
+			}
+			if (this.cash_out_form.money < Number(this.distributionSet.quota)) {
+				this.$api.msg('最低提现金额为' + this.distributionSet.quota + '元');
+				return;
+			}
+			if (this.cash_out_form.money > this.cash_out_form.nowMoney) {
+				this.$api.msg('可提现金额不足');
+				return;
+			}
+			this.$u.api.WithdrawalsAdd(this.cash_out_form).then(res=>{
+				this.$api.msg('提现申请成功');
+				this.goPage('/pagesT/Distribution/Application?id=' + res.data, 'redirectTo');
+			});
+		},
+		// 全部提现按钮点击事件
+		allWitjdrawal() {
+			this.cash_out_form.money = this.cash_out_form.nowMoney;
+		},
+		// 选择银行change事件
+		bindBankChange(e) {
+			const index = e.target.value;
+			this.bank_index = index;
+			this.cash_out_form.accountContent.bankName = this.bank_list[index].cardNum;
+		},
+		// 自动提现
+		paymentChange(val) {
+			this.payType = val;
+			switch (val) {
+				case 4:
+					this.cash_out_num = '微信钱包';
+					this.cash_out_form.type = 1;
+					break;
+				case 5:
+					this.cash_out_num = '手动提现';
+					break;
+			}
+			this.closePayPop();
+		},
+		// 手动提现
+		withdrawTypeChange(val) {
+			this.payType = 5;
+			this.withdrawType = val;
+			switch (val) {
+				case 4:
+					this.cash_out_num = '支付宝';
+					this.cash_out_form.type = 2;
+					break;
+				case 5:
+					this.cash_out_num = '银行卡';
+					this.cash_out_form.type = 3;
+					break;
+			}
+			this.closePayPop();
+		},
+
+		closePayPop() {
+			this.payPop=false
+			this.cash_out_form.accountContent.account = '';
+			this.cash_out_form.accountContent.bankName = '';
+		},
+		openPay() {
+			if (!this.distributionSet.payType || !this.distributionSet.payType.length) {
+				this.$api.msg('抱歉,管理员未配置提现方式');
+				return;
+			}
+			this.payPop=true
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+body {
+	background: $page-color-base;
+}
+.Withdrawal {
+	width: 702upx;
+	margin: 20upx auto;
+	padding: 0 24upx 50upx;
+	background-color: #ffffff;
+	font-size: 28upx;
+	.w-view {
+		border-bottom: 1px solid #f5f5f5;
+		padding: 24upx 0;
+		.ibonjinru {
+			font-size: 28upx;
+			color: #666;
+			height: 32upx;
+			margin-left: 10upx;
+		}
+		.w-input {
+			width: 480rpx;
+		}
+		.w-input-place {
+			color: #b0b3bf;
+			font-size: 26upx;
+		}
+		.w-tit {
+			.w-tit-r {
+				margin-left: 10upx;
+				font-size: 24upx;
+				color: #b0b3bf;
+			}
+		}
+	}
+	.w-money {
+		.w-money-input-view {
+			padding-top: 40upx;
+			.rmb-icon {
+				font-size: 60upx;
+				font-weight: bold;
+				display: inline-block;
+				vertical-align: middle;
+				height: 70upx;
+			}
+			.w-money-input {
+				display: inline-block;
+				width: 580upx;
+				height: 70upx;
+				font-size: 60upx;
+				padding-left: 20upx;
+				font-weight: bold;
+				vertical-align: middle;
+				padding-top: 6rpx;
+			}
+		}
+	}
+	.w-tip {
+		font-size: 24upx;
+		padding: 20upx 0 50upx;
+	}
+	.w-btn {
+		margin: 0 auto;
+		width: 660upx;
+		line-height: 70upx;
+		height: 70upx;
+		color: #666;
+		text-align: center;
+		font-size: 28upx;
+		border-radius: 70upx;
+		background-color: #eee;
+	}
+	.w-btn-on {
+		color: #fff;
+		background-color: #fe582e;
+	}
+}
+.pay-pop-view {
+	background-color: #ffffff;
+	border-top-left-radius: 12upx;
+	border-top-right-radius: 12upx;
+	padding-bottom: 40upx;
+	font-size: 28upx;
+	.pay-sel-title {
+		padding: 0 30upx;
+		line-height: 88upx;
+		font-weight: bold;
+		font-size: 32upx;
+		.ibonfont {
+			color: #999;
+			font-weight: 400;
+		}
+	}
+	.pay-btn {
+		width: 690upx;
+		height: 80upx;
+		line-height: 80upx;
+		color: #fff;
+		font-size: 32upx;
+		text-align: center;
+		margin: 20upx auto 0;
+		border-radius: 80upx;
+	}
+	.pay-ul {
+		.pay-tip {
+			font-size: 24upx;
+			color: #999999;
+			line-height: 32upx;
+			padding: 20upx 30upx 0;
+		}
+		.pay-li {
+			line-height: 100upx;
+
+			.ibonfont {
+				padding-left: 30upx;
+				font-size: 46upx;
+				vertical-align: middle;
+				margin-right: 24upx;
+			}
+			.ibonweixinzhifu {
+				color: #04be02;
+			}
+			.ibonumidd17 {
+				color: #108ee9;
+			}
+			.ibonyinhangqia {
+				color: #f2b844;
+			}
+			.pay-name {
+				width: 650upx;
+				display: inline-block;
+				padding-right: 30upx;
+				vertical-align: middle;
+				border-bottom: 1px solid #f5f5f5;
+				.ibonweixuanze,
+				.ibonxuanze1 {
+					margin-right: 0;
+					padding-left: 0;
+					font-size: 38upx;
+				}
+			}
+		}
+		.pay-li:last-child {
+			.pay-name {
+				border-bottom: 0 none;
+			}
+		}
+	}
+}
+</style>

+ 61 - 0
pagesT/activity/Activity.vue

@@ -0,0 +1,61 @@
+<template>
+	<view v-if="is_data"  :class="['qn-page-' + theme]"><PageDesign :temData="temData" :pageBack="true" :isBackIndex="true"></PageDesign></view>
+</template>
+
+<script>
+import PageDesign from '@/components/PageDesign/PageDesign.vue';
+export default {
+	components: {
+		PageDesign
+	},
+	data() {
+		return {
+			temData: [],
+			is_data: false,
+			page_id: 18
+		};
+	},
+	watch:{
+		 '$store.state.locationObj'(val){
+			if(JSON.stringify(val)==='{}'){
+				this.getAuthorizeInfo();
+				return
+			}
+			this.getDetailById();
+		}
+	},
+	onLoad(options) {
+		if(JSON.stringify(this.$store.state.locationObj)==='{}'){
+			this.getAuthorizeInfo();
+			return
+		}
+		this.page_id = parseInt(options.id);
+		this.getDetailById();
+	},
+	// 下拉刷新
+	onPullDownRefresh() {
+		this.getDetailById();
+	},
+	methods: {
+		//首页
+		 getDetailById() {
+			this.$u.api.getDetailById(this.page_id).then(({data})=>{
+				uni.stopPullDownRefresh();
+				this.is_data = true;
+				this.temData = data;
+			});
+		}
+	},
+	onShareAppMessage(options) {
+		return {
+			title: this.$store.state.baseSet.shop,
+			path: '/pages/index/index?businessmanId=' + (this.$store.state.userStatus.id||''),
+			success: res => {
+				console.log(res);
+			}
+		};
+	}
+};
+</script>
+
+<style></style>

+ 175 - 0
pagesT/address/SelAddress.vue

@@ -0,0 +1,175 @@
+<template>
+	<view :class="['qn-page-' + theme]">
+		<view class="now-address">
+			<view class="a-title">当前配送至</view>
+			<view class="a-sel">
+				<text class="ibonfont ibondizhi2"></text>
+				<text>{{ now_address.provinceName || '' }}-{{ now_address.cityName || '' }}-{{ now_address.districtName || '' }}</text>
+			</view>
+		</view>
+		<view class="address-view">
+			<view class="a-title">从我的收货地址选择</view>
+			<ul class="address-ul">
+				<li class="address-li" v-for="(item, index) in addressList" :key="index" @click="selAddress(item)">
+					<view class="user-info clearfix">
+						<text class="float_left">{{ item.name }}</text>
+						<text class="float_right">{{ item.mobile }}</text>
+					</view>
+					<view class="address-de">
+						<text v-if="item.defaultStatus === 5" class="default-tag">[默认地址]</text>
+						{{ item.area.provinceName }} {{ item.area.cityName }} {{ item.area.districtName }} {{ item.address }}
+					</view>
+				</li>
+			</ul>
+		</view>
+		<view class="fixed-bottom">
+			<RegionSel @pickerRegionChange="pickerRegionChange">
+				<view class="bottom-btn">选择其他地区</view>
+			</RegionSel>
+		</view>
+	</view>
+</template>
+
+<script>
+import RegionSel from '../components/region/RegionSel.vue';
+export default {
+	components: {
+		RegionSel
+	},
+	data() {
+		return {
+			now_address: {},
+			addressList: [],
+			pageTotal: 0,
+			page: 1,
+			pageSize: 10,
+			loading_status: 'loadmore'
+		};
+	},
+	onLoad(options) {
+		this.now_address = JSON.parse(options.address_data);
+		this.getAllShippingAddress();
+	},
+	onPullDownRefresh() {
+		if (this.pageTotal / this.pageSize > this.page) {
+			this.page += 1;
+			this.getAllShippingAddress();
+		}
+	},
+	methods: {
+		pickerRegionChange(row) {
+			this.now_address = {
+				provinceCode: row[0].value,
+				cityCode: row[1].value || '',
+				districtCode: row[2].value || '',
+				provinceName: row[0].label || '',
+				cityName: row[1].label || '',
+				districtName: row[2].label || ''
+			};
+			this.$api.prePage().now_sel_address = this.now_address;
+			uni.navigateBack();
+		},
+		selAddress(row) {
+			this.now_address = {
+				provinceCode: row.provinceCode,
+				cityCode: row.cityCode,
+				districtCode: row.districtCode,
+				provinceName: row.area.provinceName,
+				cityName: row.area.cityName,
+				districtName: row.area.districtName
+			};
+			this.$api.prePage().now_sel_address = this.now_address;
+			uni.navigateBack();
+		},
+		// 获取客户地址列表 getAllShippingAddress
+		getAllShippingAddress() {
+			this.loading_status = 'more';
+			this.$u.api.getAllShippingAddress({
+				page: this.page,
+				pageSize: this.pageSize
+			}).then(data=>{
+				this.loading_status = 'noMore';
+				uni.stopPullDownRefresh();
+				if (this.page === 1) {
+					this.addressList = data.data;
+				} else {
+					this.addressList = this.addressList.concat(data.data);
+				}
+				if (this.addressList.length) {
+					if(!this.now_address.provinceCode){
+						const address = this.addressList.find(item => item.defaultStatus === 5) || this.addressList[0];
+						this.now_address = {
+							provinceCode: address.provinceCode,
+							cityCode: address.cityCode,
+							districtCode: address.districtCode,
+							provinceName: address.area.provinceName,
+							cityName: address.area.cityName,
+							districtName: address.area.districtName
+						};
+					}
+				}
+				this.pageTotal = data.pageTotal;
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+body,
+pages {
+	background-color: #f7f7f7;
+}
+.a-title {
+	font-size: 24upx;
+	color: #999999;
+	line-height: 66upx;
+	padding: 0 24upx;
+}
+.now-address {
+	.a-sel {
+		background-color: #ffffff;
+		line-height: 80upx;
+		padding: 0 24upx;
+		.ibonfont {
+			font-size: 28upx;
+			color: #666666;
+			margin-right: 20upx;
+		}
+	}
+}
+.address-view {
+	.address-ul {
+		.address-li {
+			background-color: #ffffff;
+			padding: 20upx 24upx;
+			border-bottom: 1px solid #f7f7f7;
+			.user-info {
+				font-size: 28upx;
+				padding-bottom: 10upx;
+			}
+			.address-de {
+				font-size: 24upx;
+				.default-tag {
+					margin-right: 10upx;
+				}
+			}
+		}
+	}
+}
+.fixed-bottom {
+	position: fixed;
+	bottom: 30upx;
+	left: 0;
+	width: 100%;
+}
+.bottom-btn {
+	width: 680upx;
+	line-height: 78upx;
+	font-size: 28upx;
+	border-radius: 8upx;
+	text-align: center;
+	color: #ffffff;
+	margin: 0 auto;
+}
+</style>

+ 286 - 0
pagesT/address/address.vue

@@ -0,0 +1,286 @@
+<template>
+	<view class="content" :class="['qn-page-' + theme]">
+		<!-- 空白页 -->
+		<Aempty text="您还没有收货地址哦~~" src="https://onlineimg.qianniao.vip/address.png" v-if="addressList.length === 0"></Aempty>
+		<!-- #ifdef MP-WEIXIN -->
+		<!-- <view class="get-WX-Address clearfix" @click="chooseWxAddress">
+			<text class="ibonfont ibonweixin"></text>
+			<text>获取微信收货地址</text>
+			<text class="ibonfont ibonjinru float_right"></text>
+		</view> -->
+		<!-- #endif -->
+		<view @scrolltolower="lower" v-for="(item, index) in addressList" :key="index" class="address-item">
+			<view class="list-item-in clearfix" @click="checkAddress(item)">
+				<view class="wrapper float_left">
+					<view class="u-box">
+						<text>收货人:</text>
+						<text class="name">{{ item.name }}</text>
+						<text class="mobile">{{ item.mobile }}</text>
+					</view>
+					<view class="address-box ">
+						<text class="address">收货地址:{{ item.area.provinceName }}{{ item.area.cityName }}{{ item.area.districtName }}{{ item.address }}</text>
+					</view>
+				</view>
+			</view>
+			<view class="ad-bottom-view clearfix">
+				<view class="float_left" @click="editAddress(item)">
+					<text class="icon-del ibonfont" :class="[item.defaultStatus===5?'ibonxuanze1 primary-color':'ibonweixuanze']"></text>
+					设为默认
+				</view>
+				<view class="float_right">
+					<view style="margin-right: 40rpx;display: inline-block" @click="addAddress(item.id)">
+						<text class="ibonfont ibonbianji icon-del"></text>
+						编辑
+					</view>
+					<view @click="delData(item.id)" style="display: inline-block">
+						<text class="ibonfont ibonshanchu icon-del"></text>
+						删除
+					</view>
+				</view>
+			</view>
+		</view>
+		<u-loadmore margin-top="20" v-if="addressList.length" :status="loading_status" />
+		<button class="add-btn primary-bg" @click="addAddress('add')">新增地址</button>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			pageTotal: 0,
+			pageSize: 10,
+			page: 1,
+			loading_status: 'loadmore',
+			source: 0,
+			isLoding: false,
+			addressList: [],
+			options: [
+				{
+					text: '删除',
+					style: {
+						backgroundColor: 'rgb(255,58,49)'
+					}
+				}
+			]
+		};
+	},
+	onLoad(option) {
+		this.source = option.source;
+	},
+	onShow() {
+		this.getAllShippingAddress();
+	},
+	onPullDownRefresh() {
+		if (this.pageTotal / this.pageSize > this.page) {
+			this.page += 1;
+			this.getAllShippingAddress();
+		}
+	},
+	methods: {
+		chooseWxAddress() {
+			uni.chooseAddress({
+				success(res) {
+					console.log(res);
+				}
+			});
+		},
+		// 设为默认
+		editAddress(item) {
+			this.$u.api
+				.updateShippingAddress(item.id, {
+					name: item.name,
+					mobile: item.mobile,
+					provinceCode: item.provinceCode,
+					cityCode: item.cityCode,
+					districtCode: item.districtCode,
+					address: item.address,
+					defaultStatus: 5
+				})
+				.then(res => {
+					this.getAllShippingAddress();
+				});
+		},
+		// 点击按钮
+		delData(id) {
+			uni.showModal({
+				title: '提示',
+				content: '你确定删除地址',
+				success: () => {
+					this.$u.api.deleteShippingAddress(id).then(res => {
+						uni.showToast({
+							title: '删除成功',
+							icon: 'none'
+						});
+						this.getAllShippingAddress();
+					});
+				}
+			});
+		},
+		//选择地址
+		checkAddress(item) {
+			if (parseInt(this.source) === 1) {
+				this.$api.prePage().addressData = item;
+				uni.navigateBack();
+			}
+		},
+		addAddress(type, item) {
+			uni.navigateTo({
+				url: `/pagesT/address/addressManage?type=${type}&data=${JSON.stringify(item)}`
+			});
+		},
+		// 获取客户地址列表 getAllShippingAddress
+		getAllShippingAddress() {
+			this.loading_status = 'loading';
+			this.$u.api
+				.getAllShippingAddress({
+					page: this.page,
+					pageSize: 10
+				})
+				.then(data => {
+					uni.stopPullDownRefresh();
+					if (this.page === 1) {
+						this.addressList = data.data;
+					} else {
+						this.addressList = this.addressList.concat(data.data);
+					}
+					const address = data.data.find(item => item.defaultStatus === 5) || this.addressList[0];
+					const addressData = {
+						provinceCode: address.provinceCode,
+						cityCode: address.cityCode,
+						districtCode: address.districtCode,
+						provinceName: address.area.provinceName,
+						cityName: address.area.cityName,
+						districtName: address.area.districtName
+					};
+					this.$store.commit('commit_nowAddress', addressData);
+					this.pageTotal = data.pageTotal;
+					this.loading_status =  this.$_utils.loadStatus(this.page, this.pageSize, this.pageTotal);
+				});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page {
+	padding-bottom: 120upx;
+	background: #fafafa;
+}
+
+.content {
+	position: relative;
+}
+.no-select {
+	display: inline-block;
+	width: 34upx;
+	height: 34upx;
+	border-radius: 100%;
+	border: 1px solid #999;
+}
+.list {
+	display: flex;
+	align-items: center;
+	background: #fff;
+	position: relative;
+}
+
+.address-box {
+	font-size: 26upx;
+	color: #666;
+	font-weight: 300;
+}
+
+.u-box {
+	font-size: 28upx;
+	color: $font-color-dark;
+	padding-bottom: 10upx;
+
+	.name {
+		margin-right: 30upx;
+	}
+}
+
+.address-item {
+	width: 702upx;
+	margin: 20upx auto;
+	background: #ffffff;
+	padding: 28upx 24upx;
+	border-radius: 8upx;
+	box-shadow: 0px 0px 20upx 0px #eee;
+	/*margin-bottom: 20upx;*/
+
+	.ad-bottom-view {
+		font-size: 24upx;
+		font-weight: 300;
+		padding-top: 20upx;
+
+		.icon-del {
+			width: 26upx;
+			height: 26upx;
+			font-size: 26upx;
+			line-height: 26upx;
+			margin-right: 10upx;
+			transform: translateY(4upx);
+		}
+		.ibonfont{
+			font-size: 28rpx;
+		}
+	}
+
+	.list-item-in {
+		padding-bottom: 20upx;
+		border-bottom: 1upx solid #f5f5f5;
+	}
+}
+
+.icon-bianji {
+	display: flex;
+	align-items: center;
+	height: 80upx;
+	font-size: 40upx;
+	color: $font-color-light;
+	padding-left: 30upx;
+}
+
+.add-btn {
+	position: fixed;
+	left: 30upx;
+	right: 30upx;
+	bottom: 16upx;
+	z-index: 95;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	width: 690upx;
+	height: 80upx;
+	font-size: 32upx;
+	color: #fff;
+	// background: $base-btn-bg;
+	// box-shadow: 0px 2upx 14upx 0px rgba(116, 190, 66, 0.4);
+	border-radius: 10upx;
+}
+
+.add-btn:after {
+	border: 0 none;
+}
+.get-WX-Address {
+	line-height: 88upx;
+	height: 88upx;
+	width: 702upx;
+	box-shadow: 0px 0px 20rpx 0px #eee;
+	margin: 20upx auto 0;
+	background-color: #ffffff;
+	padding: 0 24rpx;
+	border-radius: 8upx;
+	.ibonweixin {
+		font-size: 40upx;
+		color: #04be02;
+		margin-right: 10upx;
+	}
+	.ibonjinru {
+		color: #999;
+		font-size: 26upx;
+	}
+}
+</style>

+ 274 - 0
pagesT/address/addressManage.vue

@@ -0,0 +1,274 @@
+<template>
+	<view :class="['qn-page-' + theme]" class="content">
+		<view class="row b-b">
+			<text class="tit">联系人</text>
+			<input class="input" type="text" v-model="addressData.name" placeholder="收货人姓名" placeholder-class="placeholder" />
+		</view>
+		<view class="row b-b">
+			<text class="tit">手机号</text>
+			<!-- #ifdef MP -->
+			<input class="input" type="number" @input="mobileInput" :value="addressData.mobile" placeholder="收货人手机号码" placeholder-class="placeholder" />
+			<!-- #endif -->
+			<!-- #ifdef APP-PLUS -->
+			<input class="input" type="number" v-model="addressData.mobile" placeholder="收货人手机号码" placeholder-class="placeholder" />
+			<!-- #endif -->
+		</view>
+		<!-- <view class="row b-b">
+			<text class="tit">地址</text>
+			<text @click="chooseLocation" class="input">
+				{{addressData.addressName}}
+			</text>
+			<text class="yticon icon-shouhuodizhi"></text>
+		</view> -->
+
+		<RegionSel @getRegionName="getRegionName" @pickerRegionChange="pickerRegionChange" :provinceCode="provinceCode" :cityCode="cityCode" :districtCode="districtCode">
+			<view class="row b-b clearfix" style="border-bottom:1rpx solid #E4E7ED;">
+				<view class="tit float_left">地址</view>
+				<view class="float_right">
+					<span v-if="region_name" style="font-size: 28rpx;">{{ region_name }}</span>
+					<span v-else style="color: #999;font-size: 28rpx;">请选择</span>
+				</view>
+			</view>
+		</RegionSel>
+		<view class="row b-b">
+			<text class="tit">门牌号</text>
+			<input class="input" type="button" v-model="addressData.address" placeholder="楼号、门牌" placeholder-class="placeholder" />
+		</view>
+
+		<view class="row default-row">
+			<text class="tit">设为默认</text>
+			<switch :checked="defaule" color="#45A418" @change="switchChange" />
+		</view>
+
+		<button class="add-btn primary-bg" @click="confirm">提交</button>
+	</view>
+</template>
+
+<script>
+import RegionSel from '../components/region/RegionSel.vue';
+export default {
+	components: {
+		RegionSel
+	},
+	data() {
+		return {
+			provinceCode: 0,
+			cityCode: 0,
+			districtCode: 0,
+			region_name: '',
+			// 地址部分
+			height: '500px',
+			address: [],
+			defaule: false,
+			// 修改地址的id
+			coustrom_id: '',
+			manageType: '', //路由地址
+			addressData: {
+				name: '',
+				mobile: '',
+				defaultStatus: 4,
+				provinceCode: '',
+				cityCode: '',
+				districtCode: '',
+				addressName: '',
+				address: '',
+				area: ''
+			}
+		};
+	},
+	onLoad(option) {
+		// 获取当前是增加页面还是编辑
+		this.manageType = option.type;
+		if (this.manageType != 'add') {
+			this.coustrom_id = this.manageType;
+			this.getShippingAddressInfo();
+			uni.setNavigationBarTitle({
+				title: '修改地址'
+			});
+		} else {
+			uni.setNavigationBarTitle({
+				title: '新增地址'
+			});
+		}
+	},
+	methods: {
+		mobileInput(e) {
+			// #ifdef MP
+			let val = e.detail.value;
+			if (val.length === 3 || val.length === 8) {
+				val += ' ';
+			}
+			this.$nextTick(() => {
+				this.addressData.mobile = val;
+			});
+			// #endif
+		},
+		switchChange(val) {
+			// 添加地址传
+			this.defaule = val.detail.value;
+			if (this.defaule) {
+				this.addressData.defaultStatus = 5;
+			} else {
+				this.addressData.defaultStatus = 4;
+			}
+		},
+		getRegionName(name) {
+			this.region_name = name;
+		},
+		pickerRegionChange(row) {
+			this.addressData.provinceCode = row[0].value;
+			this.addressData.cityCode = row[1].value || '';
+			this.addressData.districtCode = row[2].value || '';
+			this.region_name = row[0].label + (row[1].label ? '-' + row[1].label + (row[2].label ? '-' + row[2].label : '') : '');
+		},
+		// 点击提交Annie
+		confirm() {
+			if (this.coustrom_id) {
+				this.updateShippingAddress();
+			} else {
+				this.addShippingAddress();
+			}
+		},
+		//添加
+		addShippingAddress() {
+			if (!this.addressData.name) {
+				this.$api.msg('请填写收货人姓名');
+				return;
+			}
+			const mobile = this.$_utils.mobileRe(this.addressData.mobile);
+			if (!/(^1[3|4|5|6|7|8|9][0-9]{9}$)/.test(mobile)) {
+				this.$api.msg('请输入正确的手机号码');
+				return;
+			}
+			if (!this.addressData.address) {
+				this.$api.msg('请填写门牌号信息');
+				return;
+			}
+			// 发送请求
+
+			this.$u.api
+				.addShippingAddress({
+					...this.addressData,
+					mobile: mobile,
+					defaultStatus: this.defaule ? 5 : 4
+				})
+				.then(res => {
+					this.$api.msg('添加成功');
+					setTimeout(function() {
+						uni.navigateBack();
+					}, 800);
+				});
+		},
+		// 获取地址的详情
+		getShippingAddressInfo() {
+			this.$u.api.getShippingAddressInfo(this.coustrom_id).then(data => {
+				this.addressData = data.data;
+				this.addressData.mobile = this.$_utils.mobileFormat(data.data.mobile);
+				this.provinceCode = this.addressData.provinceCode;
+				this.cityCode = this.addressData.cityCode;
+				this.districtCode = this.addressData.districtCode;
+				// 获取地址显示页面
+				this.defaule = data.data.defaultStatus === 5;
+			});
+		},
+		// 修改地址
+		updateShippingAddress() {
+			if (!this.addressData.name) {
+				this.$api.msg('请填写收货人姓名');
+				return;
+			}
+			const mobile = this.$_utils.mobileRe(this.addressData.mobile);
+			if (!/(^1[3|4|5|7|8][0-9]{9}$)/.test(mobile)) {
+				this.$api.msg('请输入正确的手机号码');
+				return;
+			}
+			// if(!addressData.addressName){
+			// 	this.$api.msg('请选择所在位置');
+			// 	return;
+			// }
+			if (!this.addressData.address) {
+				this.$api.msg('请填写门牌号信息');
+				return;
+			}
+
+			this.$u.api
+				.updateShippingAddress(this.coustrom_id, {
+					name: this.addressData.name,
+					mobile: mobile,
+					provinceCode: this.addressData.provinceCode,
+					cityCode: this.addressData.cityCode,
+					districtCode: this.addressData.districtCode,
+					address: this.addressData.address,
+					defaultStatus: this.addressData.defaultStatus
+				})
+				.then(res => {
+					this.$api.msg('修改成功');
+					setTimeout(function() {
+						uni.navigateBack();
+					}, 800);
+				});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page {
+	background: $page-color-base;
+	padding-top: 16upx;
+}
+
+.row {
+	display: flex;
+	align-items: center;
+	position: relative;
+	padding: 0 30upx;
+	height: 110upx;
+	background: #fff;
+
+	.tit {
+		flex-shrink: 0;
+		width: 120upx;
+		font-size: 30upx;
+		color: $font-color-dark;
+	}
+
+	.input {
+		flex: 1;
+		font-size: 30upx;
+		color: $font-color-dark;
+	}
+
+	.icon-shouhuodizhi {
+		font-size: 36upx;
+		color: $font-color-light;
+	}
+}
+
+.default-row {
+	margin-top: 16upx;
+
+	.tit {
+		flex: 1;
+	}
+
+	switch {
+		transform: translateX(16upx) scale(0.9);
+	}
+}
+
+.add-btn {
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	width: 690upx;
+	height: 80upx;
+	margin: 60upx auto;
+	font-size: $font-lg;
+	color: #fff;
+	border-radius: 10upx;
+}
+.add-btn:after {
+	border: 0 none;
+}
+</style>

+ 151 - 0
pagesT/binding/bindInfo.vue

@@ -0,0 +1,151 @@
+<template>
+	<view :class="['qn-page-' + theme]" class="box">
+		<view class="close-view"><text class="ibonfont ibonguanbi1" @click="closePage"></text></view>
+		<view class="top-bg"></view>
+		<view class="welcome-title">
+			<view>嗨~朋友</view>
+			<view>欢迎使用{{ base_set_info.shop || '' }}</view>
+		</view>
+		<view class="logo-img"><image :src="base_set_info.images" mode="aspectFill"></image></view>
+		<view class="login-bg">
+			<image src="https://onlineimg.qianniao.vip/login-img.jpg" mode="aspectFill"></image>
+			<view class="login-btn-view">
+				<view class="wx-Btn">
+					<Login @loginFinish="loginFinish">
+						<view slot="lBtn" style="color: #fff;"><text>微信授权快速登录</text></view>
+					</Login>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import Login from '@/components/Login.vue';
+export default {
+	components: {
+		Login
+	},
+	data() {
+		return {
+			userInfo: {},
+			wxUserInfo: {},
+			base_set_info: {}
+		};
+	},
+	onShow() {
+		// #ifdef MP
+		uni.hideHomeButton();
+		// #endif
+	},
+	onLoad() {
+		this.base_set_info = this.$store.state.baseSet;
+	},
+	methods: {
+		loginFinish() {
+			uni.switchTab({
+				url: '/pages/index/index'
+			});
+		},
+		// 拒绝跳转主页面
+		closePage() {
+			this.goPage('/pages/index/index', 'switchTab');
+		}
+	}
+};
+</script>
+<style>
+page {
+	background-color: #ffffff;
+}
+</style>
+<style scoped lang="scss">
+.box {
+	.close-view {
+		position: fixed;
+		left: 0;
+		padding-left: 30upx;
+		width: 100%;
+		top: 70upx;
+		z-index: 99;
+		.ibonguanbi1 {
+			font-size: 30upx;
+		}
+	}
+	.top-bg {
+		width: 385rpx;
+		height: 385rpx;
+		background: linear-gradient(315deg, #fa6400 6%, #b620e0 49%, #32c5ff 88%);
+		opacity: 0.08;
+		filter: blur(50px);
+		position: fixed;
+		top: 20rpx;
+		left: 0;
+		z-index: 0;
+	}
+	.welcome-title {
+		position: fixed;
+		top: 162rpx;
+		left: 56rpx;
+		font-weight: bold;
+		z-index: 1;
+		line-height: 80rpx;
+		font-family: jiangxikaiti;
+		font-size: 46rpx;
+	}
+	.logo-img {
+		position: fixed;
+		top: 150rpx;
+		right: 56rpx;
+		image {
+			width: 120rpx;
+			border-radius: 34rpx;
+			height: 120rpx;
+			display: block;
+			box-shadow: 0px 0px 20rpx 8rpx rgba(250, 100, 0, 0.08);
+		}
+	}
+	.login-bg {
+		position: fixed;
+		top: 430rpx;
+		left: 0;
+		width: 100%;
+		image {
+			width: 360rpx;
+			height: 360rpx;
+			display: block;
+			margin: 0 auto;
+		}
+		.login-btn-view {
+			width: 638rpx;
+			margin: 0 auto;
+			.wx-Btn {
+				margin-top: 156rpx;
+				width: 638rpx;
+				height: 89rpx;
+				background: #fa6400;
+				border-radius: 11rpx;
+				line-height: 89rpx;
+				text-align: center;
+				font-weight: 500;
+				color: #ffffff;
+			}
+			.yzm-Btn {
+				margin-top: 40rpx;
+				text-align: center;
+				width: 638rpx;
+				height: 80rpx;
+				line-height: 80rpx;
+				border-radius: 11rpx;
+				border: 1px solid #cad0d7;
+				color: #2d405e;
+				font-size: 26rpx;
+				.ibonshouji1 {
+					font-size: 26rpx;
+					margin-right: 14rpx;
+				}
+			}
+		}
+	}
+}
+</style>

+ 405 - 0
pagesT/binding/bindPhone.vue

@@ -0,0 +1,405 @@
+<template>
+	<view class="box" :class="['qn-page-' + theme]">
+		<view class="close-view"><text class="ibonfont ibonguanbi1" @click="closePage"></text></view>
+		<view class="top-bg"></view>
+		<view class="welcome-title">
+			<view>嗨~朋友</view>
+			<view>欢迎使用{{ baseSet.shop || '' }}</view>
+		</view>
+		<view class="logo-img"><image :src="baseSet.images" mode="aspectFill"></image></view>
+		<view class="login-bg">
+			<block v-if="login_type === 1">
+				<image src="https://onlineimg.qianniao.vip/login-img.jpg" mode="aspectFill"></image>
+				<view class="login-btn-view"><button class="wx-Btn primary-bg" open-type="getPhoneNumber" @getphonenumber="getphonenumber">一键授权登录</button></view>
+				<!-- <view class="wx-change-btn" @click="login_type = 2">
+					<text class="ibonfont ibonshouji1 wxicon" style="transform: translateY(-4rpx);display: inline-block;"></text>
+					短信验证登录
+				</view> -->
+			</block>
+			<block v-if="login_type === 2">
+				<view class="tab-ul">
+					<view class="tab-li" @click="login_type = 1">微信快捷登录</view>
+					<!-- <view class="tab-on">手机验证登录</view> -->
+				</view>
+				<view class="input-ul">
+					<view class="input-li">
+						<text class="ibonfont ibonshouji1"></text>
+						<input type="number" placeholder-class="input-pl" v-model="phoneNumber" placeholder="请输入手机号" />
+					</view>
+					<view class="input-li">
+						<text class="ibonfont ibonyanzhengma"></text>
+						<input type="number" placeholder-class="input-pl" v-model="smsCode" placeholder="请输入验证码" />
+						<view class="yzm-view">
+							<text v-if="is_dis_yzm">{{ num }}s后重新发送</text>
+							<text v-else @click="getYzm()">获取验证码</text>
+						</view>
+					</view>
+				</view>
+				<view class="login-btn primary-bg" @click="appletsBindMobile()">登录</view>
+			</block>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			is_dis_yzm: false,
+			num: 60,
+			source: 5,
+			smsCode: '',
+			phoneNumber: '',
+			login_type: 1
+		};
+	},
+	computed: {
+		baseSet() {
+			return this.$store.state.baseSet;
+		},
+		source() {
+			return this.$common.source();
+		},
+		staffId() {
+			return this.$store.state.staffId;
+		},
+		businessmanId() {
+			return this.$store.state.businessmanId;
+		}
+	},
+	onShow() {
+		// #ifdef MP
+		uni.hideHomeButton();
+		// #endif
+	},
+	onLoad() {},
+	methods: {
+		// 拒绝跳转主页面
+		closePage() {
+			this.goPage('/pages/index/index', 'switchTab');
+		},
+		// 一键绑定
+		getphonenumber(e) {
+			const iv = e.detail.iv;
+			const encryptedData = e.detail.encryptedData;
+			this.$u.api
+				.decryptData({
+					openid: this.$common.getOpenid(),
+					iv: iv,
+					encryptedData: encryptedData
+				})
+				.then(data => {
+					this.phoneNumber = data.data.phoneNumber;
+					uni.setStorageSync('phoneNumber', this.phoneNumber);
+					// #ifdef MP-WEIXIN
+					this.appletsBindMobile('wx');
+					// #endif
+					// #ifdef MP-TOUTIAO
+					this.appletsBindMobile('byteDance');
+					// #endif
+				});
+		},
+		// 绑定手机号
+		appletsBindMobile(source) {
+			if (!this.phoneNumber) {
+				this.$api.msg('请输入手机号');
+				return;
+			}
+			if (!source) {
+				if (!this.smsCode) {
+					this.$api.msg('请输入验证码');
+					return;
+				}
+			}
+
+			console.log('staffId', this.staffId);
+			const params = {
+				mobile: this.phoneNumber,
+				smsCode: this.smsCode,
+				openId: this.$common.getOpenid(),
+				unionId: this.$common.getUnionId(),
+				salesManId: this.staffId || '',
+				avatar: this.$common.getAvator(),
+				name: this.$common.getName(),
+				source: source || 'sms',
+				type: this.source,
+				shopId: 0
+			};
+			this.$u.api.appletsBindMobile(params).then(data => {
+				this.$api.msg('绑定成功');
+				uni.setStorageSync('token', data.data.token);
+				uni.setStorageSync('expireTime', data.data.expireTime);
+				// 更新登录状态
+				this.$store.commit('commit_hasLogin', true);
+				// 添加分销上下级关系
+				this.relationshipBusinessman();
+				// this.goPage(`/pages/index/index`, 'switchTab');
+			});
+		},
+		// 添加分销上下级关系 source: 1:首次点击链接 2:首次下单 3:首次付款'
+		relationshipBusinessman() {
+			if (!this.businessmanId) {
+				// 是否立即去完善资料
+				if (this.baseSet.finishDataGo) {
+					this.goPage('/pagesT/user/editUserInfo');
+				} else {
+					this.goPage(`/pages/index/index`, 'switchTab');
+				}
+				return;
+			}
+			this.$u.api
+				.relationshipBusinessman({
+					businessmanId: this.businessmanId,
+					source: 1
+				})
+				.then(data => {
+					console.log('上下级关系绑定成功:', data.data);
+					// 是否立即去完善资料
+					if (this.baseSet.finishDataGo) {
+						this.goPage('/pagesT/user/editUserInfo');
+					} else {
+						this.goPage(`/pages/index/index`, 'switchTab');
+					}
+				});
+		},
+		// 验证码
+		getYzm() {
+			const re = /^1[3456789]\d{9}$/;
+			if (!re.test(this.phoneNumber)) {
+				this.$api.msg('手机号格式不正确');
+				return;
+			}
+
+			this.$u.api
+				.sendMobileCode({
+					mobile: this.phoneNumber,
+					source: 6
+				})
+				.then(res => {
+					this.$api.msg('发送成功');
+					// 发送验证码
+					this.is_dis_yzm = !this.is_dis_yzm;
+					const secondNumIn = setInterval(() => {
+						this.num--;
+						if (this.num === 0) {
+							// 清除定时器
+							clearInterval(secondNumIn);
+							this.is_dis_yzm = false;
+							this.num = 60;
+						}
+					}, 1000);
+				});
+		}
+	}
+};
+</script>
+<style>
+page {
+	background-color: #ffffff;
+}
+</style>
+<style lang="scss" scoped>
+.input-pl {
+	color: #b8c0c8;
+	font-size: 28rpx;
+}
+.box {
+	.close-view {
+		position: fixed;
+		left: 0;
+		padding-left: 30upx;
+		width: 100%;
+		top: 70upx;
+		z-index: 99;
+		.ibonguanbi1 {
+			font-size: 30upx;
+		}
+	}
+	.top-bg {
+		width: 385rpx;
+		height: 385rpx;
+		background: linear-gradient(315deg, #fa6400 6%, #b620e0 49%, #32c5ff 88%);
+		opacity: 0.08;
+		filter: blur(50px);
+		position: fixed;
+		top: 20rpx;
+		left: 0;
+		z-index: 0;
+	}
+
+	.welcome-title {
+		position: fixed;
+		top: 162rpx;
+		left: 56rpx;
+		font-weight: bold;
+		z-index: 1;
+		line-height: 80rpx;
+		font-size: 46rpx;
+		font-family: jiangxikaiti;
+	}
+
+	.logo-img {
+		position: fixed;
+		top: 150rpx;
+		right: 56rpx;
+
+		image {
+			width: 120rpx;
+			border-radius: 34rpx;
+			height: 120rpx;
+			display: block;
+			box-shadow: 0px 0px 20rpx 8rpx rgba(250, 100, 0, 0.08);
+		}
+	}
+
+	.login-bg {
+		position: fixed;
+		top: 370rpx;
+		left: 0;
+		width: 100%;
+
+		image {
+			width: 360rpx;
+			height: 360rpx;
+			display: block;
+			margin: 0 auto;
+		}
+
+		.login-btn-view {
+			width: 638rpx;
+			margin: 40rpx auto;
+
+			.wx-Btn {
+				margin-top: 106rpx;
+				width: 638rpx;
+				height: 89rpx;
+				background: #fa6400;
+				border-radius: 11rpx;
+				line-height: 89rpx;
+				text-align: center;
+				font-weight: 500;
+				color: #ffffff;
+				font-size: 28rpx;
+			}
+
+			.yzm-Btn {
+				margin-top: 40rpx;
+				text-align: center;
+				width: 638rpx;
+				height: 80rpx;
+				line-height: 80rpx;
+				border-radius: 11rpx;
+				border: 1px solid #cad0d7;
+				color: #2d405e;
+				font-size: 26rpx;
+
+				.ibonshouji1 {
+					font-size: 26rpx;
+					margin-right: 14rpx;
+				}
+			}
+		}
+
+		.tab-ul {
+			display: flex;
+			padding: 56rpx;
+
+			.tab-li {
+				width: 328rpx;
+				height: 88rpx;
+				line-height: 88rpx;
+				border-radius: 16rpx;
+				color: #fa6400;
+				text-align: center;
+				background: linear-gradient(-62deg, transparent 32rpx, rgba(250, 100, 0, 0.08) 0) top right;
+				background-size: 100% 100%;
+				background-repeat: no-repeat;
+				margin-right: 40rpx;
+			}
+
+			.tab-on {
+				width: 328rpx;
+				height: 88rpx;
+				line-height: 88rpx;
+				border-radius: 16rpx;
+				text-align: center;
+				color: #ffffff;
+				font-weight: 500;
+				background: linear-gradient(117deg, transparent 32rpx, #fa6400 0) top left;
+				background-size: 100% 100%;
+				background-repeat: no-repeat;
+				margin-left: -25px;
+			}
+		}
+
+		.input-ul {
+			.input-li {
+				color: #2d405e;
+				width: 638rpx;
+				margin: 40rpx auto;
+				height: 80rpx;
+				background: #f5f5f6;
+				border-radius: 4rpx;
+				position: relative;
+				padding-left: 88rpx;
+
+				.ibonfont {
+					position: absolute;
+					font-size: 40rpx;
+					top: 50%;
+					transform: translateY(-50%);
+					left: 24rpx;
+				}
+
+				input {
+					color: #2d405e;
+					height: 80rpx;
+					line-height: 80rpx;
+					width: 400rpx;
+				}
+
+				.yzm-view {
+					position: absolute;
+					top: 50%;
+					transform: translateY(-50%);
+					right: 32rpx;
+					color: #fa6400;
+				}
+			}
+		}
+
+		.login-btn {
+			margin: 56rpx auto 170rpx;
+			width: 638rpx;
+			height: 89rpx;
+			background: #fa6400;
+			border-radius: 11rpx;
+			line-height: 89rpx;
+			text-align: center;
+			font-weight: 500;
+			color: #ffffff;
+		}
+
+		.divider-text {
+			margin: 0 27rpx;
+		}
+
+		.wx-change-btn {
+			color: #2d405e;
+			margin: 50rpx auto 0;
+			width: 638rpx;
+			font-size: 26rpx;
+			height: 80rpx;
+			border-radius: 11rpx;
+			line-height: 80rpx;
+			text-align: center;
+			border: 1px solid #cad0d7;
+
+			.wxicon {
+				vertical-align: middle;
+				margin-right: 10rpx;
+			}
+		}
+	}
+}
+</style>

+ 73 - 0
pagesT/components/CartFloat.vue

@@ -0,0 +1,73 @@
+<template>
+	<view class="cart-float">
+		<view class="clearfix cart-float-in car-f-bg" @click="goPage('/pages/cart/cart', 'switchTab')">
+			<text class="float_left ibonfont ibongouwuche"></text>
+			<text class="float_left line"></text>
+			<text class="float_right">¥{{ cartPrice }}</text>
+			<text class="cart-num-text car-f-bg" v-if="cartNum > 0">{{ cartNum }}</text>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {};
+	},
+	computed: {
+		cartPrice() {
+			return this.$store.state.cartPrice || 0;
+		},
+		cartNum() {
+			return this.$store.state.cartNum;
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.cart-float {
+	color: #fff;
+	position: fixed;
+	left: 50upx;
+	bottom: 50upx;
+	.cart-float-in {
+		padding: 0 24rpx;
+		height: 58rpx;
+		line-height: 58rpx;
+		background: linear-gradient(136deg, #FD9D00 0%, #FF846C 100%);
+		border-radius: 36rpx;
+		text {
+			font-size: 20upx;
+		}
+		.ibonfont {
+			font-size: 36rpx;
+		}
+		.line{
+			display: block;
+			width: 2rpx;
+			height: 32rpx;
+			background: #FFFFFF;
+			border-radius: 2rpx;
+			opacity: 0.6;
+			margin: 13rpx 12rpx;
+		}
+		.cart-num-text {
+			position: absolute;
+			display: block;
+			min-width: 28upx;
+			height: 30upx;
+			text-align: center;
+			background: #fff;
+			line-height: 28upx;
+			border-radius: 16rpx;
+			left: 26upx;
+			top: -23upx;
+			font-size: 18upx;
+			color: #ffffff;
+			border: 2rpx solid #ffffff;
+			padding: 0 4rpx;
+		}
+	}
+}
+</style>

+ 222 - 0
pagesT/components/coupon/CouponView.vue

@@ -0,0 +1,222 @@
+<template>
+	<view class="mask" :class="!maskState ? 'none' : maskState ? 'show' : ''">
+		<view class="shadow-bg"></view>
+		<view class="mask-content" @click.stop.prevent="stopPrevent">
+			<view class="dont-use"><text @click="dontUse">不使用优惠券</text></view>
+
+			<!-- 优惠券页面,仿mt -->
+			<view class="coupon-item" v-for="(item, index) in discountList" :key="index" @click="selCoupon(item)">
+				<view class="con">
+					<view class="left">
+						<text class="title">{{ item.name }}</text>
+						<text class="time">有效期至{{ $_utils.formatDate(item.endTime, 'yyyy-MM-dd') }}</text>
+					</view>
+					<view class="right">
+						<text class="price">{{ item.reducePrice }}</text>
+						<text v-if="item.minPrice==='不限金额'||Number(item.minPrice)===0">无门槛使用</text>
+						<text v-else>满{{item.minPrice}}元可用</text>
+					</view>
+
+					<view class="circle l"></view>
+					<view class="circle r"></view>
+				</view>
+				<text class="tips">
+					{{ item.applyRange === 10 ? '全店商品通用' : item.applyRange === 20 ? '指定分类商品可用' : item.applyRange === 30 ? '指定品牌商品可用' : '' }}
+				</text>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			maskState: {
+				type: Boolean,
+				default: false
+			},
+			discountList: {
+				type: Array,
+				default: () => {
+					return [];
+				}
+			}
+		},
+		onLoad() {
+			this.discountList()
+		},
+		data() {
+			return {}
+		},
+		methods: {
+			stopPrevent() {},
+			//不使用优惠
+			dontUse() {
+				this.$emit('dontUse');
+			},
+			// 选择优惠券
+			selCoupon(row) {
+				this.$emit('selCoupon', row);
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	/* 优惠券面板 */
+	.mask {
+		position: fixed;
+		left: 0;
+		top: 100%;
+		// bottom: 0;
+		width: 100%;
+		// background: rgba(0, 0, 0, 0);
+		z-index: 9995;
+		height: 100vh;
+		transition: 0.3s;
+
+		.shadow-bg {
+			background: rgba(0, 0, 0, 0.4);
+			position: absolute;
+			top: 0;
+			left: 0;
+			width: 100%;
+			height: 100vh;
+		}
+
+		.mask-content {
+			position: absolute;
+			bottom: 0;
+			left: 0;
+			width: 100%;
+			min-height: 30vh;
+			max-height: 70vh;
+			background: #f3f3f3;
+			z-index: 9995;
+			// transform: translateY(100%);
+			transition: 0.3s;
+			overflow-y: scroll;
+
+			.dont-use {
+				text-align: right;
+				color: #666;
+				font-size: 24upx;
+				padding: 20upx 30upx;
+			}
+		}
+
+		&.none {
+			top: 100%;
+
+			.shadow-bg {
+				display: none;
+			}
+
+			.mask-content {
+				transform: translateY(100%);
+			}
+		}
+
+		&.show {
+			top: 0;
+
+			.shadow-bg {
+				display: block;
+			}
+
+			.mask-content {
+				transform: translateY(0);
+			}
+		}
+	}
+
+	/* 优惠券列表 */
+	.coupon-item {
+		display: flex;
+		flex-direction: column;
+		margin: 20upx 24upx;
+		background: #fff;
+
+		.con {
+			display: flex;
+			align-items: center;
+			position: relative;
+			height: 120upx;
+			padding: 0 30upx;
+
+			&:after {
+				position: absolute;
+				left: 0;
+				bottom: 0;
+				content: '';
+				width: 100%;
+				height: 0;
+				border-bottom: 1px dashed #f3f3f3;
+				transform: scaleY(50%);
+			}
+		}
+
+		.left {
+			display: flex;
+			flex-direction: column;
+			justify-content: center;
+			flex: 1;
+			overflow: hidden;
+			height: 100upx;
+		}
+
+		.title {
+			font-size: 32upx;
+			color: $font-color-dark;
+			margin-bottom: 10upx;
+		}
+
+		.time {
+			font-size: 24upx;
+			color: $font-color-light;
+		}
+
+		.right {
+			display: flex;
+			flex-direction: column;
+			justify-content: center;
+			align-items: center;
+			font-size: 26upx;
+			color: $font-color-base;
+			height: 100upx;
+		}
+
+		.price {
+			font-size: 44upx;
+			color: $price-color;
+
+			&:before {
+				content: '¥';
+				font-size: 34upx;
+			}
+		}
+
+		.tips {
+			font-size: 24upx;
+			color: $font-color-light;
+			line-height: 60upx;
+			padding-left: 30upx;
+		}
+
+		.circle {
+			position: absolute;
+			left: -6upx;
+			bottom: -10upx;
+			z-index: 10;
+			width: 20upx;
+			height: 20upx;
+			background: #f3f3f3;
+			border-radius: 100px;
+
+			&.r {
+				left: auto;
+				right: -6upx;
+			}
+		}
+	}
+</style>

+ 196 - 0
pagesT/components/coupon/VipView.vue

@@ -0,0 +1,196 @@
+<template>
+	<!-- 会员卡面板 -->
+	<view class="mask" :class="!maskState ? 'none' : maskState ? 'show' : ''">
+		<view class="shadow-bg"></view>
+		<view class="mask-content" @click.stop.prevent="stopPrevent">
+			<view class="dont-use"><text @click="dontUse">不使用会员卡</text></view>
+			<view v-for="(item) in vipList" :key="item.id" @click="selvip(item)" style="margin:10rpx 0">
+				<view class="bg_color" :class="item.styleId===1?'card-style-golden':item.styleId===2?'card-style-erythrine':item.styleId===3?'card-style-gray':item.styleId===4?'card-style-brown':item.styleId===5?'card-style-blue':item.styleId===6?'card-style-black':''">
+					<view class="clearfix">
+						<view class="float_left">
+							<view class="vip-name">
+								<image class="vip-img" src="https://onlineimg.qianniao.vip/vip-icon.png" mode="aspectFit" />
+								<text class="vip-name-tit">{{item.name}}</text>
+							</view>
+							<view class="expiration">有效期至:{{ item.effectiveDate === 5 ? '长期有效' : item.effectiveMonth + '个月'}}</view>
+						</view>
+						<view class="float_right discount">
+							<text class="rmb-ic">¥</text>
+							{{$_utils.formatNub(item.price)}}
+						</view>
+					</view>
+
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			maskState: {
+				type: Boolean,
+				default: false
+			},
+			vipList: {
+				type: Array,
+				default: () => {
+					return [];
+				}
+			}
+		},
+		onLoad() {
+			this.vipList()
+		},
+		data() {
+			return {}
+		},
+		methods: {
+			stopPrevent() {},
+			//不使用优惠
+			dontUse() {
+				this.$emit('dontUse');
+			},
+			// 选择优惠券
+			selvip(row) {
+				this.$emit('selvip', row);
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	/* 优惠券面板 */
+	.mask {
+		position: fixed;
+		left: 0;
+		top: 100%;
+		// bottom: 0;
+		width: 100%;
+		// background: rgba(0, 0, 0, 0);
+		z-index: 9995;
+		height: 100vh;
+		transition: 0.3s;
+
+		.shadow-bg {
+			background: rgba(0, 0, 0, 0.4);
+			position: absolute;
+			top: 0;
+			left: 0;
+			width: 100%;
+			height: 100vh;
+		}
+
+		.mask-content {
+			position: absolute;
+			bottom: 0;
+			left: 0;
+			width: 100%;
+			min-height: 30vh;
+			max-height: 70vh;
+			background: #f3f3f3;
+			z-index: 9995;
+			// transform: translateY(100%);
+			transition: 0.3s;
+			overflow-y: scroll;
+
+			.dont-use {
+				text-align: right;
+				color: #666;
+				font-size: 24upx;
+				padding: 20upx 30upx;
+			}
+		}
+
+		&.none {
+			top: 100%;
+
+			.shadow-bg {
+				display: none;
+			}
+
+			.mask-content {
+				transform: translateY(100%);
+			}
+		}
+
+		&.show {
+			top: 0;
+
+			.shadow-bg {
+				display: block;
+			}
+
+			.mask-content {
+				transform: translateY(0);
+			}
+		}
+	}
+
+	.card-style-golden {
+		background: linear-gradient(to right, #c1a167, #e9d5aa);
+	}
+
+	.card-style-erythrine {
+		background: linear-gradient(to right, #745757, #966d6d);
+	}
+
+	.card-style-gray {
+		background: linear-gradient(to right, #434247, #7a7985);
+	}
+
+	.card-style-brown {
+		background: linear-gradient(to right, #736e6c, #978c8c);
+	}
+
+	.card-style-blue {
+		background: linear-gradient(to right, #576074, #6d7b96);
+	}
+
+	.card-style-black {
+		background: linear-gradient(to right, #373737, #4a4a4a);
+	}
+
+	.bg_color {
+		position: relative;
+		margin: 0 auto;
+		width: 600upx;
+		border-radius: 10upx;
+		color: #FFFFFF;
+		padding: 20upx;
+
+		.vip-img {
+			width: 40rpx;
+			height: 40rpx;
+			vertical-align: middle;
+			opacity: 0.9;
+		}
+
+		.vip-name {
+			font-size: 30upx;
+
+			.vip-name-tit {
+				padding-left: 15upx;
+			}
+		}
+
+		.discount {
+			font-size: 60upx;
+			font-weight: bold;
+			text-align: right;
+
+			.rmb-ic {
+				font-weight: 400;
+				font-size: 24upx;
+				margin-right: 10upx;
+			}
+		}
+
+		.expiration {
+			padding: 10upx 0;
+			font-size: 24upx;
+			color: rgba($color: #ffffff, $alpha: 0.7);
+		}
+	}
+</style>

+ 152 - 0
pagesT/components/qiniu/QiniuUpload.vue

@@ -0,0 +1,152 @@
+<template>
+	<div style="display: inline-block;">
+		<view class="bank-license" v-for="item,index in Fimages" :key='index'>
+			<block v-if="item">
+				<img class="license-pic" :src="item" alt="" />
+				<u-icon v-if="!flag" name="close" class='del-icon' size='30' @click.stop="handleRemove(item, index)">
+				</u-icon>
+			</block>
+		</view>
+		<view class="bank-license" @click="uploadAva">
+			<text>+</text>
+		</view>
+		<!-- <slot v-show="false" name="cont"><button>上传</button></slot> -->
+	</div>
+</template>
+
+<script>
+	import webUrl from '@/config.js';
+	import qiniuUploader from './qiniuUploader.js';
+	import {
+		getEnToken
+	} from '@/access/common.js';
+	export default {
+		data() {
+			return {
+				Fimages: []
+			};
+		},
+		props: {
+			images: {
+				// type: Array,
+				default: () => {
+					return [];
+				}
+			},
+			flag: {
+				type: Boolean,
+				default: false
+			},
+		},
+		watch: {
+			images(val) {
+				this.Fimages = val;
+			}
+		},
+		created() {
+			this.Fimages = this.images;
+		},
+		methods: {
+			// 上传头像
+			uploadAva() {
+				uni.chooseImage({
+					success: async res => {
+						const imgPath = res.tempFilePaths[0]; //选择图片的路径
+						const imgName = imgPath
+							.split('.')
+							.slice(-2)
+							.join('.');
+						const key = `${getEnToken()}/${imgName}`; //图片和企业token拼接 为自定义文件名
+						this.$u.api.uploadToken({
+							bucket: webUrl.QINIU_KEY, //企业token
+							key: key //图片的路径
+						}).then(data => {
+							this.uploadtoken = data.data; //获取上传图片的token
+							// url: 'https://upload-z2.qiniup.com',
+
+							let domain = webUrl.QINIU_UP; //文件上传地址
+							let token = data.data; //token为七牛云的token一般由后台接口提供
+							let filePath = imgPath; //为需要上传的文件
+							uni.showLoading();
+							qiniuUploader.upload(
+								filePath,
+								res => {
+									uni.hideLoading();
+									//图片上传完成后返回值
+									//因为目前只有头像上传,所以压缩图片,限制尺寸为 300 px
+									const imgData = {
+										...res,
+										key: res.key
+									};
+									const uploadPicUrl = `${webUrl.QINIU_URL}/${res.key}`;
+									this.$emit('uploadSuccess', imgData, uploadPicUrl);
+								},
+								error => {
+									uni.hideLoading();
+									// resolve(error)
+								}, {
+									region: 'SCN', // (必须填写正确)ECN, SCN, NCN, NA, ASG,分别对应七牛的:华东,华南,华北,北美,新加坡 5 个区域
+									domain: domain, // // bucket 域名,下载资源时用到。如果设置,会在 success callback 的 res 参数加上可以直接使用的 ImageURL                                         字  段。否则需要自己拼接
+									key: key, // [非必须]自定义文件 key。如果不设置,默认为使用微信小程序 API 的临时文件名
+									// 以下方法三选一即可,优先级为:uptoken > uptokenURL > uptokenFunc
+									uptoken: token // 由其他程序生成七牛 uptoken
+								},
+								res => {
+									//上传进度
+									uni.hideLoading();
+									if (res.progress === 100) {
+										// resolve(keys);
+									}
+								}
+							);
+						});
+					}
+				});
+			},
+			//移除图片
+			handleRemove(url, index) {
+				this.Fimages.splice(index, 1);
+				this.$emit('handleRemove', this.Fimages);
+			}
+		}
+	};
+</script>
+
+<style scoped lang="scss">
+	.bank-license {
+		width: 124upx;
+		height: 124upx;
+		border-radius: 8upx;
+		border: 2upx #999999 dashed;
+		margin: 32upx 10rpx;
+		background: #eee;
+		text-align: center;
+		line-height: 100upx;
+		color: #666;
+		font-size: 100rpx;
+		font-weight: 300;
+		display: inline-block;
+		vertical-align: middle;
+		position: relative;
+
+		.license-pic {
+			width: 120upx;
+			height: 120upx;
+			display: block;
+		}
+
+		.del-icon {
+			box-sizing: border-box;
+			padding-left: 7rpx;
+			position: absolute;
+			color: #fff;
+			right: -12rpx;
+			top: -20upx;
+			background-color: #FD463E;
+			width: 40rpx;
+			height: 40rpx;
+			border-radius: 100%;
+			line-height: 40rpx;
+		}
+	}
+</style>

+ 172 - 0
pagesT/components/qiniu/qiniuUploader.js

@@ -0,0 +1,172 @@
+// created by gpake
+(function() {
+
+var config = {
+    qiniuRegion: '',
+    qiniuImageURLPrefix: '',
+    qiniuUploadToken: '',
+    qiniuUploadTokenURL: '',
+    qiniuUploadTokenFunction: null,
+    qiniuShouldUseQiniuFileName: false
+}
+
+module.exports = {
+    init: init,
+    upload: upload,
+}
+
+// 在整个程序生命周期中,只需要 init 一次即可
+// 如果需要变更参数,再调用 init 即可
+function init(options) {
+    config = {
+        qiniuRegion: '',
+        qiniuImageURLPrefix: '',
+        qiniuUploadToken: '',
+        qiniuUploadTokenURL: '',
+        qiniuUploadTokenFunction: null,
+        qiniuShouldUseQiniuFileName: false
+    };
+    updateConfigWithOptions(options);
+}
+
+function updateConfigWithOptions(options) {
+    if (options.region) {
+        config.qiniuRegion = options.region;
+    } else {
+        console.error('qiniu uploader need your bucket region');
+    }
+    if (options.uptoken) {
+        config.qiniuUploadToken = options.uptoken;
+    } else if (options.uptokenURL) {
+        config.qiniuUploadTokenURL = options.uptokenURL;
+    } else if(options.uptokenFunc) {
+        config.qiniuUploadTokenFunction = options.uptokenFunc;
+    }
+    if (options.domain) {
+        config.qiniuImageURLPrefix = options.domain;
+    }
+    config.qiniuShouldUseQiniuFileName = options.shouldUseQiniuFileName
+}
+
+function upload(filePath, success, fail, options, progress, cancelTask) {
+    if (null == filePath) {
+        console.error('qiniu uploader need filePath to upload');
+        return;
+    }
+    if (options) {
+      updateConfigWithOptions(options);
+    }
+    if (config.qiniuUploadToken) {
+        doUpload(filePath, success, fail, options, progress, cancelTask);
+    } else if (config.qiniuUploadTokenURL) {
+        getQiniuToken(function() {
+            doUpload(filePath, success, fail, options, progress, cancelTask);
+        });
+    } else if (config.qiniuUploadTokenFunction) {
+        config.qiniuUploadToken = config.qiniuUploadTokenFunction();
+        if (null == config.qiniuUploadToken && config.qiniuUploadToken.length > 0) {
+            console.error('qiniu UploadTokenFunction result is null, please check the return value');
+            return
+        }
+        doUpload(filePath, success, fail, options, progress, cancelTask);
+    } else {
+        console.error('qiniu uploader need one of [uptoken, uptokenURL, uptokenFunc]');
+        return;
+    }
+}
+
+function doUpload(filePath, success, fail, options, progress, cancelTask) {
+    if (null == config.qiniuUploadToken && config.qiniuUploadToken.length > 0) {
+        console.error('qiniu UploadToken is null, please check the init config or networking');
+        return
+    }
+    var url = uploadURLFromRegionCode(config.qiniuRegion);
+    var fileName = filePath.split('//')[1];
+    if (options && options.key) {
+        fileName = options.key;
+    }
+    var formData = {
+        'token': config.qiniuUploadToken
+    };
+    if (!config.qiniuShouldUseQiniuFileName) {
+      formData['key'] = fileName
+    }
+    var uploadTask = wx.uploadFile({
+        url: url,
+        filePath: filePath,
+        name: 'file',
+        formData: formData,
+        success: function (res) {
+          var dataString = res.data
+        //   // this if case is a compatibility with wechat server returned a charcode, but was fixed
+        //   if(res.data.hasOwnProperty('type') && res.data.type === 'Buffer'){
+        //     dataString = String.fromCharCode.apply(null, res.data.data)
+        //   }
+          try {
+            var dataObject = JSON.parse(dataString);
+            //do something
+            var fileUrl = config.qiniuImageURLPrefix + '/' + dataObject.key;
+            dataObject.fileUrl = fileUrl
+            dataObject.imageURL = fileUrl;
+            // console.log(dataObject);
+            if (success) {
+              success(dataObject);
+            }
+          } catch(e) {
+            console.log('parse JSON failed, origin String is: ' + dataString)
+            if (fail) {
+              fail(e);
+            }
+          }
+        },
+        fail: function (error) {
+            console.error(error);
+            if (fail) {
+                fail(error);
+            }
+        }
+    })
+
+    uploadTask.onProgressUpdate((res) => {
+        progress && progress(res)
+    })
+
+    cancelTask && cancelTask(() => {
+        uploadTask.abort()
+    })
+}
+
+function getQiniuToken(callback) {
+  wx.request({
+    url: config.qiniuUploadTokenURL,
+    success: function (res) {
+      var token = res.data.uptoken;
+      if (token && token.length > 0) {
+        config.qiniuUploadToken = token;
+        if (callback) {
+            callback();
+        }
+      } else {
+        console.error('qiniuUploader cannot get your token, please check the uptokenURL or server')
+      }
+    },
+    fail: function (error) {
+      console.error('qiniu UploadToken is null, please check the init config or networking: ' + error);
+    }
+  })
+}
+
+function uploadURLFromRegionCode(code) {
+    var uploadURL = null;
+    switch(code) {
+        case 'ECN': uploadURL = 'https://up.qiniup.com'; break;
+        case 'NCN': uploadURL = 'https://up-z1.qiniup.com'; break;
+        case 'SCN': uploadURL = 'https://upload-z2.qiniup.com'; break;
+        case 'NA': uploadURL = 'https://up-na0.qiniup.com'; break;
+        case 'ASG': uploadURL = 'https://up-as0.qiniup.com'; break;
+        default: console.error('please make the region is with one of [ECN, SCN, NCN, NA, ASG]');
+    }
+    return uploadURL;
+}
+
+})();

+ 144 - 0
pagesT/components/region/RegionSel.vue

@@ -0,0 +1,144 @@
+<template>
+	<picker mode="multiSelector" @change="pickerRegionChange" @columnchange="columnRegionChange" :value="Rindex" :range="region" range-key="label"><slot></slot></picker>
+</template>
+
+<script>
+import RegionJson from './area.json';
+export default {
+	props: {
+		provinceCode: {
+			type: [String, Number],
+			default: () => {
+				return 0;
+			}
+		},
+		cityCode: {
+			type: [String, Number],
+			default: () => {
+				return 0;
+			}
+		},
+		districtCode: {
+			type: [String, Number],
+			default: () => {
+				return 0;
+			}
+		}
+	},
+	watch: {
+		districtCode() {
+			this.getRegionName();
+		}
+	},
+	data() {
+		return {
+			Rindex: [0, 0, 0],
+			region: [],
+			province_code: '',
+			city_code: ''
+		};
+	},
+	async created() {
+		// await this.getProvince()
+		// await this.getCity()
+		// await this.getDistrict()
+		let region = JSON.parse(JSON.stringify(this.region));
+		// data.unshift({code:0,id:0,name:'全国'})
+		region[0] = RegionJson;
+		region[1] = RegionJson[0].children;
+		region[2] = RegionJson[0].children[0].children;
+		// this.province_code = RegionJson[0].value
+		this.region = region;
+		await this.getRegionName();
+	},
+	methods: {
+		// 获取名字
+		async getRegionName() {
+			if (!this.provinceCode) return;
+			const provinceIndex = RegionJson.findIndex(item => item.value === parseInt(this.provinceCode));
+			const province = RegionJson.find(item => item.value === parseInt(this.provinceCode));
+
+			const cityIndex = province.children.findIndex(item => item.value === parseInt(this.cityCode));
+			const city = province.children.find(item => item.value === parseInt(this.cityCode));
+
+			const districtIndex = city.children.findIndex(item => item.value === parseInt(this.districtCode));
+			const district = city.children.find(item => item.value === parseInt(this.districtCode));
+
+			const regionName = province.label + '-' + city.label + '-' + district.label;
+			this.region = [RegionJson, province.children, city.children];
+			this.Rindex = [provinceIndex, cityIndex, districtIndex];
+
+			this.$emit('getRegionName', regionName);
+		},
+		// 省
+		getProvince() {
+			this.$u.api.getAllProvince().then(({data})=>{
+				let region = JSON.parse(JSON.stringify(this.region));
+				// data.unshift({code:0,id:0,name:'全国'})
+				region[0] = data;
+				this.province_code = data[0].code;
+				this.region = region;
+			});
+
+		},
+		// 市
+		async getCity() {
+			if (!this.province_code) {
+				let region = JSON.parse(JSON.stringify(this.region));
+				region[1] = [];
+				this.region = region;
+				return;
+			}
+			this.$u.api.getAllCityByProvinceCode(this.province_code).then(({data})=>{
+				let region = JSON.parse(JSON.stringify(this.region));
+				region[1] = data;
+				this.city_code = data[0].code;
+				this.region = region;
+			});
+
+		},
+		// 区
+		async getDistrict() {
+			this.$u.api.getAllAreaByCityCode(this.city_code).then(({data})=>{
+				let region = JSON.parse(JSON.stringify(this.region));
+				region[2] = data;
+				this.region = region;
+			});
+		},
+
+		// select选择器 确定
+		pickerRegionChange(e) {
+			const i = e.detail.value;
+			this.Rindex = i;
+			const params = [
+				this.region[0][i[0]],
+				this.region[1] && this.region[1].length > 0 ? this.region[1][i[1]] : '',
+				this.region[2] && this.region[2].length > 0 ? this.region[2][i[2]] : ''
+			];
+			this.$emit('pickerRegionChange', params);
+		},
+		//某一列的值改变时
+		async columnRegionChange(e) {
+			const column = e.detail.column;
+			const i = e.detail.value;
+			if (column === 0) {
+				let region = JSON.parse(JSON.stringify(this.region));
+				region[1] = RegionJson[i].children;
+				if(region[1].length){
+					region[2] = RegionJson[i].children[0].children;
+				}else{
+					region[2] = []
+				}
+				this.region = region;
+			}
+			if (column === 1) {
+				let region = JSON.parse(JSON.stringify(this.region));
+				region[2] = region[1][i].children;
+				this.region = region;
+			}
+		}
+	}
+};
+</script>
+
+<style></style>

+ 14011 - 0
pagesT/components/region/area.json

@@ -0,0 +1,14011 @@
+[{
+		"id": 1,
+		"children": [{
+			"id": 2,
+			"value": 110100,
+			"label": "北京市",
+			"children": [{
+					"value": 110101,
+					"label": "东城区"
+				},
+				{
+					"value": 110102,
+					"label": "西城区"
+				},
+				{
+					"value": 110105,
+					"label": "朝阳区"
+				},
+				{
+					"value": 110106,
+					"label": "丰台区"
+				},
+				{
+					"value": 110107,
+					"label": "石景山区"
+				},
+				{
+					"value": 110108,
+					"label": "海淀区"
+				},
+				{
+					"value": 110109,
+					"label": "门头沟区"
+				},
+				{
+					"value": 110111,
+					"label": "房山区"
+				},
+				{
+					"value": 110112,
+					"label": "通州区"
+				},
+				{
+					"value": 110113,
+					"label": "顺义区"
+				},
+				{
+					"value": 110114,
+					"label": "昌平区"
+				},
+				{
+					"value": 110115,
+					"label": "大兴区"
+				},
+				{
+					"value": 110116,
+					"label": "怀柔区"
+				},
+				{
+					"value": 110117,
+					"label": "平谷区"
+				},
+				{
+					"value": 110118,
+					"label": "密云区"
+				},
+				{
+					"value": 110119,
+					"label": "延庆区"
+				}
+			],
+			"expand": "true"
+		}],
+		"value": 110000,
+		"label": "北京",
+		"expand": "true"
+	},
+	{
+		"id": 19,
+		"children": [{
+			"id": 20,
+			"value": 120100,
+			"label": "天津市",
+			"children": [{
+					"value": 120103,
+					"label": "河西区"
+				},
+				{
+					"value": 120101,
+					"label": "和平区"
+				},
+				{
+					"value": 120102,
+					"label": "河东区"
+				},
+				{
+					"value": 120104,
+					"label": "南开区"
+				},
+				{
+					"value": 120105,
+					"label": "河北区"
+				},
+				{
+					"value": 120106,
+					"label": "红桥区"
+				},
+				{
+					"value": 120110,
+					"label": "东丽区"
+				},
+				{
+					"value": 120111,
+					"label": "西青区"
+				},
+				{
+					"value": 120112,
+					"label": "津南区"
+				},
+				{
+					"value": 120113,
+					"label": "北辰区"
+				},
+				{
+					"value": 120114,
+					"label": "武清区"
+				},
+				{
+					"value": 120115,
+					"label": "宝坻区"
+				},
+				{
+					"value": 120116,
+					"label": "滨海新区"
+				},
+				{
+					"value": 120117,
+					"label": "宁河区"
+				},
+				{
+					"value": 120118,
+					"label": "静海区"
+				},
+				{
+					"value": 120119,
+					"label": "蓟州区"
+				}
+			],
+			"expand": "true"
+		}],
+		"value": 120000,
+		"label": "天津市",
+		"expand": "true"
+	},
+	{
+		"id": 37,
+		"children": [{
+				"id": 38,
+				"value": 130100,
+				"label": "石家庄市",
+				"children": [{
+						"value": 130102,
+						"label": "长安区"
+					},
+					{
+						"value": 130104,
+						"label": "桥西区"
+					},
+					{
+						"value": 130105,
+						"label": "新华区"
+					},
+					{
+						"value": 130107,
+						"label": "井陉矿区"
+					},
+					{
+						"value": 130108,
+						"label": "裕华区"
+					},
+					{
+						"value": 130109,
+						"label": "藁城区"
+					},
+					{
+						"value": 130110,
+						"label": "鹿泉区"
+					},
+					{
+						"value": 130111,
+						"label": "栾城区"
+					},
+					{
+						"value": 130181,
+						"label": "辛集市"
+					},
+					{
+						"value": 130183,
+						"label": "晋州市"
+					},
+					{
+						"value": 130184,
+						"label": "新乐市"
+					},
+					{
+						"value": 130121,
+						"label": "井陉县"
+					},
+					{
+						"value": 130123,
+						"label": "正定县"
+					},
+					{
+						"value": 130125,
+						"label": "行唐县"
+					},
+					{
+						"value": 130126,
+						"label": "灵寿县"
+					},
+					{
+						"value": 130127,
+						"label": "高邑县"
+					},
+					{
+						"value": 130128,
+						"label": "深泽县"
+					},
+					{
+						"value": 130129,
+						"label": "赞皇县"
+					},
+					{
+						"value": 130130,
+						"label": "无极县"
+					},
+					{
+						"value": 130131,
+						"label": "平山县"
+					},
+					{
+						"value": 130132,
+						"label": "元氏县"
+					},
+					{
+						"value": 130133,
+						"label": "赵县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 61,
+				"value": 130200,
+				"label": "唐山市",
+				"children": [{
+						"value": 130203,
+						"label": "路北区"
+					},
+					{
+						"value": 130202,
+						"label": "路南区"
+					},
+					{
+						"value": 130204,
+						"label": "古冶区"
+					},
+					{
+						"value": 130205,
+						"label": "开平区"
+					},
+					{
+						"value": 130207,
+						"label": "丰南区"
+					},
+					{
+						"value": 130208,
+						"label": "丰润区"
+					},
+					{
+						"value": 130209,
+						"label": "曹妃甸区"
+					},
+					{
+						"value": 130281,
+						"label": "遵化市"
+					},
+					{
+						"value": 130283,
+						"label": "迁安市"
+					},
+					{
+						"value": 130223,
+						"label": "滦县"
+					},
+					{
+						"value": 130224,
+						"label": "滦南县"
+					},
+					{
+						"value": 130225,
+						"label": "乐亭县"
+					},
+					{
+						"value": 130227,
+						"label": "迁西县"
+					},
+					{
+						"value": 130229,
+						"label": "玉田县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 76,
+				"value": 130300,
+				"label": "秦皇岛市",
+				"children": [{
+						"value": 130302,
+						"label": "海港区"
+					},
+					{
+						"value": 130303,
+						"label": "山海关区"
+					},
+					{
+						"value": 130304,
+						"label": "北戴河区"
+					},
+					{
+						"value": 130306,
+						"label": "抚宁区"
+					},
+					{
+						"value": 130322,
+						"label": "昌黎县"
+					},
+					{
+						"value": 130324,
+						"label": "卢龙县"
+					},
+					{
+						"value": 130321,
+						"label": "青龙满族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 84,
+				"value": 130400,
+				"label": "邯郸市",
+				"children": [{
+						"value": 130403,
+						"label": "丛台区"
+					},
+					{
+						"value": 130402,
+						"label": "邯山区"
+					},
+					{
+						"value": 130404,
+						"label": "复兴区"
+					},
+					{
+						"value": 130406,
+						"label": "峰峰矿区"
+					},
+					{
+						"value": 130407,
+						"label": "肥乡区"
+					},
+					{
+						"value": 130408,
+						"label": "永年区"
+					},
+					{
+						"value": 130481,
+						"label": "武安市"
+					},
+					{
+						"value": 130423,
+						"label": "临漳县"
+					},
+					{
+						"value": 130424,
+						"label": "成安县"
+					},
+					{
+						"value": 130425,
+						"label": "大名县"
+					},
+					{
+						"value": 130426,
+						"label": "涉县"
+					},
+					{
+						"value": 130427,
+						"label": "磁县"
+					},
+					{
+						"value": 130430,
+						"label": "邱县"
+					},
+					{
+						"value": 130431,
+						"label": "鸡泽县"
+					},
+					{
+						"value": 130432,
+						"label": "广平县"
+					},
+					{
+						"value": 130433,
+						"label": "馆陶县"
+					},
+					{
+						"value": 130434,
+						"label": "魏县"
+					},
+					{
+						"value": 130435,
+						"label": "曲周县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 103,
+				"value": 130500,
+				"label": "邢台市",
+				"children": [{
+						"value": 130502,
+						"label": "桥东区"
+					},
+					{
+						"value": 130503,
+						"label": "桥西区"
+					},
+					{
+						"value": 130581,
+						"label": "南宫市"
+					},
+					{
+						"value": 130582,
+						"label": "沙河市"
+					},
+					{
+						"value": 130521,
+						"label": "邢台县"
+					},
+					{
+						"value": 130522,
+						"label": "临城县"
+					},
+					{
+						"value": 130523,
+						"label": "内丘县"
+					},
+					{
+						"value": 130524,
+						"label": "柏乡县"
+					},
+					{
+						"value": 130525,
+						"label": "隆尧县"
+					},
+					{
+						"value": 130526,
+						"label": "任县"
+					},
+					{
+						"value": 130527,
+						"label": "南和县"
+					},
+					{
+						"value": 130528,
+						"label": "宁晋县"
+					},
+					{
+						"value": 130529,
+						"label": "巨鹿县"
+					},
+					{
+						"value": 130530,
+						"label": "新河县"
+					},
+					{
+						"value": 130531,
+						"label": "广宗县"
+					},
+					{
+						"value": 130532,
+						"label": "平乡县"
+					},
+					{
+						"value": 130533,
+						"label": "威县"
+					},
+					{
+						"value": 130534,
+						"label": "清河县"
+					},
+					{
+						"value": 130535,
+						"label": "临西县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 123,
+				"value": 130600,
+				"label": "保定市",
+				"children": [{
+						"value": 130602,
+						"label": "竞秀区"
+					},
+					{
+						"value": 130606,
+						"label": "莲池区"
+					},
+					{
+						"value": 130607,
+						"label": "满城区"
+					},
+					{
+						"value": 130608,
+						"label": "清苑区"
+					},
+					{
+						"value": 130609,
+						"label": "徐水区"
+					},
+					{
+						"value": 130681,
+						"label": "涿州市"
+					},
+					{
+						"value": 130682,
+						"label": "定州市"
+					},
+					{
+						"value": 130683,
+						"label": "安国市"
+					},
+					{
+						"value": 130684,
+						"label": "高碑店市"
+					},
+					{
+						"value": 130623,
+						"label": "涞水县"
+					},
+					{
+						"value": 130624,
+						"label": "阜平县"
+					},
+					{
+						"value": 130626,
+						"label": "定兴县"
+					},
+					{
+						"value": 130627,
+						"label": "唐县"
+					},
+					{
+						"value": 130628,
+						"label": "高阳县"
+					},
+					{
+						"value": 130629,
+						"label": "容城县"
+					},
+					{
+						"value": 130630,
+						"label": "涞源县"
+					},
+					{
+						"value": 130631,
+						"label": "望都县"
+					},
+					{
+						"value": 130632,
+						"label": "安新县"
+					},
+					{
+						"value": 130633,
+						"label": "易县"
+					},
+					{
+						"value": 130634,
+						"label": "曲阳县"
+					},
+					{
+						"value": 130635,
+						"label": "蠡县"
+					},
+					{
+						"value": 130636,
+						"label": "顺平县"
+					},
+					{
+						"value": 130637,
+						"label": "博野县"
+					},
+					{
+						"value": 130638,
+						"label": "雄县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 148,
+				"value": 130700,
+				"label": "张家口市",
+				"children": [{
+						"value": 130703,
+						"label": "桥西区"
+					},
+					{
+						"value": 130702,
+						"label": "桥东区"
+					},
+					{
+						"value": 130705,
+						"label": "宣化区"
+					},
+					{
+						"value": 130706,
+						"label": "下花园区"
+					},
+					{
+						"value": 130708,
+						"label": "万全区"
+					},
+					{
+						"value": 130709,
+						"label": "崇礼区"
+					},
+					{
+						"value": 130722,
+						"label": "张北县"
+					},
+					{
+						"value": 130723,
+						"label": "康保县"
+					},
+					{
+						"value": 130724,
+						"label": "沽源县"
+					},
+					{
+						"value": 130725,
+						"label": "尚义县"
+					},
+					{
+						"value": 130726,
+						"label": "蔚县"
+					},
+					{
+						"value": 130727,
+						"label": "阳原县"
+					},
+					{
+						"value": 130728,
+						"label": "怀安县"
+					},
+					{
+						"value": 130730,
+						"label": "怀来县"
+					},
+					{
+						"value": 130731,
+						"label": "涿鹿县"
+					},
+					{
+						"value": 130732,
+						"label": "赤城县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 165,
+				"value": 130800,
+				"label": "承德市",
+				"children": [{
+						"value": 130802,
+						"label": "双桥区"
+					},
+					{
+						"value": 130803,
+						"label": "双滦区"
+					},
+					{
+						"value": 130804,
+						"label": "鹰手营子矿区"
+					},
+					{
+						"value": 130881,
+						"label": "平泉市"
+					},
+					{
+						"value": 130821,
+						"label": "承德县"
+					},
+					{
+						"value": 130822,
+						"label": "兴隆县"
+					},
+					{
+						"value": 130824,
+						"label": "滦平县"
+					},
+					{
+						"value": 130825,
+						"label": "隆化县"
+					},
+					{
+						"value": 130826,
+						"label": "丰宁满族自治县"
+					},
+					{
+						"value": 130827,
+						"label": "宽城满族自治县"
+					},
+					{
+						"value": 130828,
+						"label": "围场满族蒙古族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 177,
+				"value": 130900,
+				"label": "沧州市",
+				"children": [{
+						"value": 130903,
+						"label": "运河区"
+					},
+					{
+						"value": 130902,
+						"label": "新华区"
+					},
+					{
+						"value": 130981,
+						"label": "泊头市"
+					},
+					{
+						"value": 130982,
+						"label": "任丘市"
+					},
+					{
+						"value": 130983,
+						"label": "黄骅市"
+					},
+					{
+						"value": 130984,
+						"label": "河间市"
+					},
+					{
+						"value": 130921,
+						"label": "沧县"
+					},
+					{
+						"value": 130922,
+						"label": "青县"
+					},
+					{
+						"value": 130923,
+						"label": "东光县"
+					},
+					{
+						"value": 130924,
+						"label": "海兴县"
+					},
+					{
+						"value": 130925,
+						"label": "盐山县"
+					},
+					{
+						"value": 130926,
+						"label": "肃宁县"
+					},
+					{
+						"value": 130927,
+						"label": "南皮县"
+					},
+					{
+						"value": 130928,
+						"label": "吴桥县"
+					},
+					{
+						"value": 130929,
+						"label": "献县"
+					},
+					{
+						"value": 130930,
+						"label": "孟村回族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 194,
+				"value": 131000,
+				"label": "廊坊市",
+				"children": [{
+						"value": 131003,
+						"label": "广阳区"
+					},
+					{
+						"value": 131002,
+						"label": "安次区"
+					},
+					{
+						"value": 131081,
+						"label": "霸州市"
+					},
+					{
+						"value": 131082,
+						"label": "三河市"
+					},
+					{
+						"value": 131022,
+						"label": "固安县"
+					},
+					{
+						"value": 131023,
+						"label": "永清县"
+					},
+					{
+						"value": 131024,
+						"label": "香河县"
+					},
+					{
+						"value": 131025,
+						"label": "大城县"
+					},
+					{
+						"value": 131026,
+						"label": "文安县"
+					},
+					{
+						"value": 131028,
+						"label": "大厂回族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 205,
+				"value": 131100,
+				"label": "衡水市",
+				"children": [{
+						"value": 131102,
+						"label": "桃城区"
+					},
+					{
+						"value": 131103,
+						"label": "冀州区"
+					},
+					{
+						"value": 131182,
+						"label": "深州市"
+					},
+					{
+						"value": 131121,
+						"label": "枣强县"
+					},
+					{
+						"value": 131122,
+						"label": "武邑县"
+					},
+					{
+						"value": 131123,
+						"label": "武强县"
+					},
+					{
+						"value": 131124,
+						"label": "饶阳县"
+					},
+					{
+						"value": 131125,
+						"label": "安平县"
+					},
+					{
+						"value": 131126,
+						"label": "故城县"
+					},
+					{
+						"value": 131127,
+						"label": "景县"
+					},
+					{
+						"value": 131128,
+						"label": "阜城县"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 130000,
+		"label": "河北省",
+		"expand": "true"
+	},
+	{
+		"id": 217,
+		"children": [{
+				"id": 218,
+				"value": 140100,
+				"label": "太原市",
+				"children": [{
+						"value": 140107,
+						"label": "杏花岭区"
+					},
+					{
+						"value": 140105,
+						"label": "小店区"
+					},
+					{
+						"value": 140106,
+						"label": "迎泽区"
+					},
+					{
+						"value": 140108,
+						"label": "尖草坪区"
+					},
+					{
+						"value": 140109,
+						"label": "万柏林区"
+					},
+					{
+						"value": 140110,
+						"label": "晋源区"
+					},
+					{
+						"value": 140181,
+						"label": "古交市"
+					},
+					{
+						"value": 140121,
+						"label": "清徐县"
+					},
+					{
+						"value": 140122,
+						"label": "阳曲县"
+					},
+					{
+						"value": 140123,
+						"label": "娄烦县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 229,
+				"value": 140200,
+				"label": "大同市",
+				"children": [{
+						"value": 140202,
+						"label": "城区"
+					},
+					{
+						"value": 140203,
+						"label": "矿区"
+					},
+					{
+						"value": 140211,
+						"label": "南郊区"
+					},
+					{
+						"value": 140212,
+						"label": "新荣区"
+					},
+					{
+						"value": 140221,
+						"label": "阳高县"
+					},
+					{
+						"value": 140222,
+						"label": "天镇县"
+					},
+					{
+						"value": 140223,
+						"label": "广灵县"
+					},
+					{
+						"value": 140224,
+						"label": "灵丘县"
+					},
+					{
+						"value": 140225,
+						"label": "浑源县"
+					},
+					{
+						"value": 140226,
+						"label": "左云县"
+					},
+					{
+						"value": 140227,
+						"label": "大同县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 241,
+				"value": 140300,
+				"label": "阳泉市",
+				"children": [{
+						"value": 140302,
+						"label": "城区"
+					},
+					{
+						"value": 140303,
+						"label": "矿区"
+					},
+					{
+						"value": 140311,
+						"label": "郊区"
+					},
+					{
+						"value": 140321,
+						"label": "平定县"
+					},
+					{
+						"value": 140322,
+						"label": "盂县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 247,
+				"value": 140400,
+				"label": "长治市",
+				"children": [{
+						"value": 140402,
+						"label": "城区"
+					},
+					{
+						"value": 140411,
+						"label": "郊区"
+					},
+					{
+						"value": 140481,
+						"label": "潞城市"
+					},
+					{
+						"value": 140421,
+						"label": "长治县"
+					},
+					{
+						"value": 140423,
+						"label": "襄垣县"
+					},
+					{
+						"value": 140424,
+						"label": "屯留县"
+					},
+					{
+						"value": 140425,
+						"label": "平顺县"
+					},
+					{
+						"value": 140426,
+						"label": "黎城县"
+					},
+					{
+						"value": 140427,
+						"label": "壶关县"
+					},
+					{
+						"value": 140428,
+						"label": "长子县"
+					},
+					{
+						"value": 140429,
+						"label": "武乡县"
+					},
+					{
+						"value": 140430,
+						"label": "沁县"
+					},
+					{
+						"value": 140431,
+						"label": "沁源县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 261,
+				"value": 140500,
+				"label": "晋城市",
+				"children": [{
+						"value": 140502,
+						"label": "城区"
+					},
+					{
+						"value": 140581,
+						"label": "高平市"
+					},
+					{
+						"value": 140521,
+						"label": "沁水县"
+					},
+					{
+						"value": 140522,
+						"label": "阳城县"
+					},
+					{
+						"value": 140524,
+						"label": "陵川县"
+					},
+					{
+						"value": 140525,
+						"label": "泽州县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 268,
+				"value": 140600,
+				"label": "朔州市",
+				"children": [{
+						"value": 140602,
+						"label": "朔城区"
+					},
+					{
+						"value": 140603,
+						"label": "平鲁区"
+					},
+					{
+						"value": 140621,
+						"label": "山阴县"
+					},
+					{
+						"value": 140622,
+						"label": "应县"
+					},
+					{
+						"value": 140623,
+						"label": "右玉县"
+					},
+					{
+						"value": 140624,
+						"label": "怀仁县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 275,
+				"value": 140700,
+				"label": "晋中市",
+				"children": [{
+						"value": 140702,
+						"label": "榆次区"
+					},
+					{
+						"value": 140781,
+						"label": "介休市"
+					},
+					{
+						"value": 140721,
+						"label": "榆社县"
+					},
+					{
+						"value": 140722,
+						"label": "左权县"
+					},
+					{
+						"value": 140723,
+						"label": "和顺县"
+					},
+					{
+						"value": 140724,
+						"label": "昔阳县"
+					},
+					{
+						"value": 140725,
+						"label": "寿阳县"
+					},
+					{
+						"value": 140726,
+						"label": "太谷县"
+					},
+					{
+						"value": 140727,
+						"label": "祁县"
+					},
+					{
+						"value": 140728,
+						"label": "平遥县"
+					},
+					{
+						"value": 140729,
+						"label": "灵石县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 287,
+				"value": 140800,
+				"label": "运城市",
+				"children": [{
+						"value": 140802,
+						"label": "盐湖区"
+					},
+					{
+						"value": 140881,
+						"label": "永济市"
+					},
+					{
+						"value": 140882,
+						"label": "河津市"
+					},
+					{
+						"value": 140821,
+						"label": "临猗县"
+					},
+					{
+						"value": 140822,
+						"label": "万荣县"
+					},
+					{
+						"value": 140823,
+						"label": "闻喜县"
+					},
+					{
+						"value": 140824,
+						"label": "稷山县"
+					},
+					{
+						"value": 140825,
+						"label": "新绛县"
+					},
+					{
+						"value": 140826,
+						"label": "绛县"
+					},
+					{
+						"value": 140827,
+						"label": "垣曲县"
+					},
+					{
+						"value": 140828,
+						"label": "夏县"
+					},
+					{
+						"value": 140829,
+						"label": "平陆县"
+					},
+					{
+						"value": 140830,
+						"label": "芮城县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 301,
+				"value": 140900,
+				"label": "忻州市",
+				"children": [{
+						"value": 140902,
+						"label": "忻府区"
+					},
+					{
+						"value": 140981,
+						"label": "原平市"
+					},
+					{
+						"value": 140921,
+						"label": "定襄县"
+					},
+					{
+						"value": 140922,
+						"label": "五台县"
+					},
+					{
+						"value": 140923,
+						"label": "代县"
+					},
+					{
+						"value": 140924,
+						"label": "繁峙县"
+					},
+					{
+						"value": 140925,
+						"label": "宁武县"
+					},
+					{
+						"value": 140926,
+						"label": "静乐县"
+					},
+					{
+						"value": 140927,
+						"label": "神池县"
+					},
+					{
+						"value": 140928,
+						"label": "五寨县"
+					},
+					{
+						"value": 140929,
+						"label": "岢岚县"
+					},
+					{
+						"value": 140930,
+						"label": "河曲县"
+					},
+					{
+						"value": 140931,
+						"label": "保德县"
+					},
+					{
+						"value": 140932,
+						"label": "偏关县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 316,
+				"value": 141000,
+				"label": "临汾市",
+				"children": [{
+						"value": 141002,
+						"label": "尧都区"
+					},
+					{
+						"value": 141081,
+						"label": "侯马市"
+					},
+					{
+						"value": 141082,
+						"label": "霍州市"
+					},
+					{
+						"value": 141021,
+						"label": "曲沃县"
+					},
+					{
+						"value": 141022,
+						"label": "翼城县"
+					},
+					{
+						"value": 141023,
+						"label": "襄汾县"
+					},
+					{
+						"value": 141024,
+						"label": "洪洞县"
+					},
+					{
+						"value": 141025,
+						"label": "古县"
+					},
+					{
+						"value": 141026,
+						"label": "安泽县"
+					},
+					{
+						"value": 141027,
+						"label": "浮山县"
+					},
+					{
+						"value": 141028,
+						"label": "吉县"
+					},
+					{
+						"value": 141029,
+						"label": "乡宁县"
+					},
+					{
+						"value": 141030,
+						"label": "大宁县"
+					},
+					{
+						"value": 141031,
+						"label": "隰县"
+					},
+					{
+						"value": 141032,
+						"label": "永和县"
+					},
+					{
+						"value": 141033,
+						"label": "蒲县"
+					},
+					{
+						"value": 141034,
+						"label": "汾西县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 334,
+				"value": 141100,
+				"label": "吕梁市",
+				"children": [{
+						"value": 141102,
+						"label": "离石区"
+					},
+					{
+						"value": 141181,
+						"label": "孝义市"
+					},
+					{
+						"value": 141182,
+						"label": "汾阳市"
+					},
+					{
+						"value": 141121,
+						"label": "文水县"
+					},
+					{
+						"value": 141122,
+						"label": "交城县"
+					},
+					{
+						"value": 141123,
+						"label": "兴县"
+					},
+					{
+						"value": 141124,
+						"label": "临县"
+					},
+					{
+						"value": 141125,
+						"label": "柳林县"
+					},
+					{
+						"value": 141126,
+						"label": "石楼县"
+					},
+					{
+						"value": 141127,
+						"label": "岚县"
+					},
+					{
+						"value": 141128,
+						"label": "方山县"
+					},
+					{
+						"value": 141129,
+						"label": "中阳县"
+					},
+					{
+						"value": 141130,
+						"label": "交口县"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 140000,
+		"label": "山西省",
+		"expand": "true"
+	},
+	{
+		"id": 348,
+		"children": [{
+				"id": 349,
+				"value": 150100,
+				"label": "呼和浩特市",
+				"children": [{
+						"value": 150102,
+						"label": "新城区"
+					},
+					{
+						"value": 150103,
+						"label": "回民区"
+					},
+					{
+						"value": 150104,
+						"label": "玉泉区"
+					},
+					{
+						"value": 150105,
+						"label": "赛罕区"
+					},
+					{
+						"value": 150122,
+						"label": "托克托县"
+					},
+					{
+						"value": 150123,
+						"label": "和林格尔县"
+					},
+					{
+						"value": 150124,
+						"label": "清水河县"
+					},
+					{
+						"value": 150125,
+						"label": "武川县"
+					},
+					{
+						"value": 150121,
+						"label": "土默特左旗"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 359,
+				"value": 150200,
+				"label": "包头市",
+				"children": [{
+						"value": 150203,
+						"label": "昆都仑区"
+					},
+					{
+						"value": 150202,
+						"label": "东河区"
+					},
+					{
+						"value": 150204,
+						"label": "青山区"
+					},
+					{
+						"value": 150205,
+						"label": "石拐区"
+					},
+					{
+						"value": 150206,
+						"label": "白云鄂博矿区"
+					},
+					{
+						"value": 150207,
+						"label": "九原区"
+					},
+					{
+						"value": 150222,
+						"label": "固阳县"
+					},
+					{
+						"value": 150221,
+						"label": "土默特右旗"
+					},
+					{
+						"value": 150223,
+						"label": "达尔罕茂明安联合旗"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 369,
+				"value": 150300,
+				"label": "乌海市",
+				"children": [{
+						"value": 150302,
+						"label": "海勃湾区"
+					},
+					{
+						"value": 150303,
+						"label": "海南区"
+					},
+					{
+						"value": 150304,
+						"label": "乌达区"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 373,
+				"value": 150400,
+				"label": "赤峰市",
+				"children": [{
+						"value": 150402,
+						"label": "红山区"
+					},
+					{
+						"value": 150403,
+						"label": "元宝山区"
+					},
+					{
+						"value": 150404,
+						"label": "松山区"
+					},
+					{
+						"value": 150424,
+						"label": "林西县"
+					},
+					{
+						"value": 150429,
+						"label": "宁城县"
+					},
+					{
+						"value": 150421,
+						"label": "阿鲁科尔沁旗"
+					},
+					{
+						"value": 150422,
+						"label": "巴林左旗"
+					},
+					{
+						"value": 150423,
+						"label": "巴林右旗"
+					},
+					{
+						"value": 150425,
+						"label": "克什克腾旗"
+					},
+					{
+						"value": 150426,
+						"label": "翁牛特旗"
+					},
+					{
+						"value": 150428,
+						"label": "喀喇沁旗"
+					},
+					{
+						"value": 150430,
+						"label": "敖汉旗"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 386,
+				"value": 150500,
+				"label": "通辽市",
+				"children": [{
+						"value": 150502,
+						"label": "科尔沁区"
+					},
+					{
+						"value": 150581,
+						"label": "霍林郭勒市"
+					},
+					{
+						"value": 150523,
+						"label": "开鲁县"
+					},
+					{
+						"value": 150524,
+						"label": "库伦旗"
+					},
+					{
+						"value": 150525,
+						"label": "奈曼旗"
+					},
+					{
+						"value": 150526,
+						"label": "扎鲁特旗"
+					},
+					{
+						"value": 150521,
+						"label": "科尔沁左翼中旗"
+					},
+					{
+						"value": 150522,
+						"label": "科尔沁左翼后旗"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 395,
+				"value": 150600,
+				"label": "鄂尔多斯市",
+				"children": [{
+						"value": 150602,
+						"label": "东胜区"
+					},
+					{
+						"value": 150603,
+						"label": "康巴什区"
+					},
+					{
+						"value": 150621,
+						"label": "达拉特旗"
+					},
+					{
+						"value": 150622,
+						"label": "准格尔旗"
+					},
+					{
+						"value": 150623,
+						"label": "鄂托克前旗"
+					},
+					{
+						"value": 150624,
+						"label": "鄂托克旗"
+					},
+					{
+						"value": 150625,
+						"label": "杭锦旗"
+					},
+					{
+						"value": 150626,
+						"label": "乌审旗"
+					},
+					{
+						"value": 150627,
+						"label": "伊金霍洛旗"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 405,
+				"value": 150700,
+				"label": "呼伦贝尔市",
+				"children": [{
+						"value": 150702,
+						"label": "海拉尔区"
+					},
+					{
+						"value": 150703,
+						"label": "扎赉诺尔区"
+					},
+					{
+						"value": 150781,
+						"label": "满洲里市"
+					},
+					{
+						"value": 150782,
+						"label": "牙克石市"
+					},
+					{
+						"value": 150783,
+						"label": "扎兰屯市"
+					},
+					{
+						"value": 150784,
+						"label": "额尔古纳市"
+					},
+					{
+						"value": 150785,
+						"label": "根河市"
+					},
+					{
+						"value": 150721,
+						"label": "阿荣旗"
+					},
+					{
+						"value": 150725,
+						"label": "陈巴尔虎旗"
+					},
+					{
+						"value": 150726,
+						"label": "新巴尔虎左旗"
+					},
+					{
+						"value": 150727,
+						"label": "新巴尔虎右旗"
+					},
+					{
+						"value": 150722,
+						"label": "莫力达瓦达斡尔族自治旗"
+					},
+					{
+						"value": 150723,
+						"label": "鄂伦春自治旗"
+					},
+					{
+						"value": 150724,
+						"label": "鄂温克族自治旗"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 420,
+				"value": 150800,
+				"label": "巴彦淖尔市",
+				"children": [{
+						"value": 150802,
+						"label": "临河区"
+					},
+					{
+						"value": 150821,
+						"label": "五原县"
+					},
+					{
+						"value": 150822,
+						"label": "磴口县"
+					},
+					{
+						"value": 150823,
+						"label": "乌拉特前旗"
+					},
+					{
+						"value": 150824,
+						"label": "乌拉特中旗"
+					},
+					{
+						"value": 150825,
+						"label": "乌拉特后旗"
+					},
+					{
+						"value": 150826,
+						"label": "杭锦后旗"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 428,
+				"value": 150900,
+				"label": "乌兰察布市",
+				"children": [{
+						"value": 150902,
+						"label": "集宁区"
+					},
+					{
+						"value": 150981,
+						"label": "丰镇市"
+					},
+					{
+						"value": 150921,
+						"label": "卓资县"
+					},
+					{
+						"value": 150922,
+						"label": "化德县"
+					},
+					{
+						"value": 150923,
+						"label": "商都县"
+					},
+					{
+						"value": 150924,
+						"label": "兴和县"
+					},
+					{
+						"value": 150925,
+						"label": "凉城县"
+					},
+					{
+						"value": 150926,
+						"label": "察哈尔右翼前旗"
+					},
+					{
+						"value": 150927,
+						"label": "察哈尔右翼中旗"
+					},
+					{
+						"value": 150928,
+						"label": "察哈尔右翼后旗"
+					},
+					{
+						"value": 150929,
+						"label": "四子王旗"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 440,
+				"value": 152200,
+				"label": "兴安盟",
+				"children": [{
+						"value": 152201,
+						"label": "乌兰浩特市"
+					},
+					{
+						"value": 152202,
+						"label": "阿尔山市"
+					},
+					{
+						"value": 152224,
+						"label": "突泉县"
+					},
+					{
+						"value": 152221,
+						"label": "科尔沁右翼前旗"
+					},
+					{
+						"value": 152222,
+						"label": "科尔沁右翼中旗"
+					},
+					{
+						"value": 152223,
+						"label": "扎赉特旗"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 447,
+				"value": 152500,
+				"label": "锡林郭勒盟",
+				"children": [{
+						"value": 152502,
+						"label": "锡林浩特市"
+					},
+					{
+						"value": 152501,
+						"label": "二连浩特市"
+					},
+					{
+						"value": 152531,
+						"label": "多伦县"
+					},
+					{
+						"value": 152522,
+						"label": "阿巴嘎旗"
+					},
+					{
+						"value": 152523,
+						"label": "苏尼特左旗"
+					},
+					{
+						"value": 152524,
+						"label": "苏尼特右旗"
+					},
+					{
+						"value": 152525,
+						"label": "东乌珠穆沁旗"
+					},
+					{
+						"value": 152526,
+						"label": "西乌珠穆沁旗"
+					},
+					{
+						"value": 152527,
+						"label": "太仆寺旗"
+					},
+					{
+						"value": 152528,
+						"label": "镶黄旗"
+					},
+					{
+						"value": 152529,
+						"label": "正镶白旗"
+					},
+					{
+						"value": 152530,
+						"label": "正蓝旗"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 460,
+				"value": 152900,
+				"label": "阿拉善盟",
+				"children": [{
+						"value": 152921,
+						"label": "阿拉善左旗"
+					},
+					{
+						"value": 152922,
+						"label": "阿拉善右旗"
+					},
+					{
+						"value": 152923,
+						"label": "额济纳旗"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 150000,
+		"label": "内蒙古自治区",
+		"expand": "true"
+	},
+	{
+		"id": 464,
+		"children": [{
+				"id": 465,
+				"value": 210100,
+				"label": "沈阳市",
+				"children": [{
+						"value": 210103,
+						"label": "沈河区"
+					},
+					{
+						"value": 210102,
+						"label": "和平区"
+					},
+					{
+						"value": 210104,
+						"label": "大东区"
+					},
+					{
+						"value": 210105,
+						"label": "皇姑区"
+					},
+					{
+						"value": 210106,
+						"label": "铁西区"
+					},
+					{
+						"value": 210111,
+						"label": "苏家屯区"
+					},
+					{
+						"value": 210112,
+						"label": "浑南区"
+					},
+					{
+						"value": 210113,
+						"label": "沈北新区"
+					},
+					{
+						"value": 210114,
+						"label": "于洪区"
+					},
+					{
+						"value": 210115,
+						"label": "辽中区"
+					},
+					{
+						"value": 210181,
+						"label": "新民市"
+					},
+					{
+						"value": 210123,
+						"label": "康平县"
+					},
+					{
+						"value": 210124,
+						"label": "法库县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 479,
+				"value": 210200,
+				"label": "大连市",
+				"children": [{
+						"value": 210203,
+						"label": "西岗区"
+					},
+					{
+						"value": 210202,
+						"label": "中山区"
+					},
+					{
+						"value": 210204,
+						"label": "沙河口区"
+					},
+					{
+						"value": 210211,
+						"label": "甘井子区"
+					},
+					{
+						"value": 210212,
+						"label": "旅顺口区"
+					},
+					{
+						"value": 210213,
+						"label": "金州区"
+					},
+					{
+						"value": 210281,
+						"label": "瓦房店市"
+					},
+					{
+						"value": 210214,
+						"label": "普兰店区"
+					},
+					{
+						"value": 210283,
+						"label": "庄河市"
+					},
+					{
+						"value": 210224,
+						"label": "长海县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 490,
+				"value": 210300,
+				"label": "鞍山市",
+				"children": [{
+						"value": 210302,
+						"label": "铁东区"
+					},
+					{
+						"value": 210303,
+						"label": "铁西区"
+					},
+					{
+						"value": 210304,
+						"label": "立山区"
+					},
+					{
+						"value": 210311,
+						"label": "千山区"
+					},
+					{
+						"value": 210381,
+						"label": "海城市"
+					},
+					{
+						"value": 210321,
+						"label": "台安县"
+					},
+					{
+						"value": 210323,
+						"label": "岫岩满族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 498,
+				"value": 210400,
+				"label": "抚顺市",
+				"children": [{
+						"value": 210411,
+						"label": "顺城区"
+					},
+					{
+						"value": 210402,
+						"label": "新抚区"
+					},
+					{
+						"value": 210403,
+						"label": "东洲区"
+					},
+					{
+						"value": 210404,
+						"label": "望花区"
+					},
+					{
+						"value": 210421,
+						"label": "抚顺县"
+					},
+					{
+						"value": 210422,
+						"label": "新宾满族自治县"
+					},
+					{
+						"value": 210423,
+						"label": "清原满族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 506,
+				"value": 210500,
+				"label": "本溪市",
+				"children": [{
+						"value": 210502,
+						"label": "平山区"
+					},
+					{
+						"value": 210503,
+						"label": "溪湖区"
+					},
+					{
+						"value": 210504,
+						"label": "明山区"
+					},
+					{
+						"value": 210505,
+						"label": "南芬区"
+					},
+					{
+						"value": 210521,
+						"label": "本溪满族自治县"
+					},
+					{
+						"value": 210522,
+						"label": "桓仁满族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 513,
+				"value": 210600,
+				"label": "丹东市",
+				"children": [{
+						"value": 210603,
+						"label": "振兴区"
+					},
+					{
+						"value": 210602,
+						"label": "元宝区"
+					},
+					{
+						"value": 210604,
+						"label": "振安区"
+					},
+					{
+						"value": 210681,
+						"label": "东港市"
+					},
+					{
+						"value": 210682,
+						"label": "凤城市"
+					},
+					{
+						"value": 210624,
+						"label": "宽甸满族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 520,
+				"value": 210700,
+				"label": "锦州市",
+				"children": [{
+						"value": 210711,
+						"label": "太和区"
+					},
+					{
+						"value": 210702,
+						"label": "古塔区"
+					},
+					{
+						"value": 210703,
+						"label": "凌河区"
+					},
+					{
+						"value": 210781,
+						"label": "凌海市"
+					},
+					{
+						"value": 210782,
+						"label": "北镇市"
+					},
+					{
+						"value": 210726,
+						"label": "黑山县"
+					},
+					{
+						"value": 210727,
+						"label": "义县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 528,
+				"value": 210800,
+				"label": "营口市",
+				"children": [{
+						"value": 210802,
+						"label": "站前区"
+					},
+					{
+						"value": 210803,
+						"label": "西市区"
+					},
+					{
+						"value": 210804,
+						"label": "鲅鱼圈区"
+					},
+					{
+						"value": 210811,
+						"label": "老边区"
+					},
+					{
+						"value": 210881,
+						"label": "盖州市"
+					},
+					{
+						"value": 210882,
+						"label": "大石桥市"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 535,
+				"value": 210900,
+				"label": "阜新市",
+				"children": [{
+						"value": 210911,
+						"label": "细河区"
+					},
+					{
+						"value": 210902,
+						"label": "海州区"
+					},
+					{
+						"value": 210903,
+						"label": "新邱区"
+					},
+					{
+						"value": 210904,
+						"label": "太平区"
+					},
+					{
+						"value": 210905,
+						"label": "清河门区"
+					},
+					{
+						"value": 210922,
+						"label": "彰武县"
+					},
+					{
+						"value": 210921,
+						"label": "阜新蒙古族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 543,
+				"value": 211000,
+				"label": "辽阳市",
+				"children": [{
+						"value": 211002,
+						"label": "白塔区"
+					},
+					{
+						"value": 211003,
+						"label": "文圣区"
+					},
+					{
+						"value": 211004,
+						"label": "宏伟区"
+					},
+					{
+						"value": 211005,
+						"label": "弓长岭区"
+					},
+					{
+						"value": 211011,
+						"label": "太子河区"
+					},
+					{
+						"value": 211081,
+						"label": "灯塔市"
+					},
+					{
+						"value": 211021,
+						"label": "辽阳县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 551,
+				"value": 211100,
+				"label": "盘锦市",
+				"children": [{
+						"value": 211103,
+						"label": "兴隆台区"
+					},
+					{
+						"value": 211102,
+						"label": "双台子区"
+					},
+					{
+						"value": 211104,
+						"label": "大洼区"
+					},
+					{
+						"value": 211122,
+						"label": "盘山县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 556,
+				"value": 211200,
+				"label": "铁岭市",
+				"children": [{
+						"value": 211202,
+						"label": "银州区"
+					},
+					{
+						"value": 211204,
+						"label": "清河区"
+					},
+					{
+						"value": 211281,
+						"label": "调兵山市"
+					},
+					{
+						"value": 211282,
+						"label": "开原市"
+					},
+					{
+						"value": 211221,
+						"label": "铁岭县"
+					},
+					{
+						"value": 211223,
+						"label": "西丰县"
+					},
+					{
+						"value": 211224,
+						"label": "昌图县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 564,
+				"value": 211300,
+				"label": "朝阳市",
+				"children": [{
+						"value": 211302,
+						"label": "双塔区"
+					},
+					{
+						"value": 211303,
+						"label": "龙城区"
+					},
+					{
+						"value": 211381,
+						"label": "北票市"
+					},
+					{
+						"value": 211382,
+						"label": "凌源市"
+					},
+					{
+						"value": 211321,
+						"label": "朝阳县"
+					},
+					{
+						"value": 211322,
+						"label": "建平县"
+					},
+					{
+						"value": 211324,
+						"label": "喀喇沁左翼蒙古族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 572,
+				"value": 211400,
+				"label": "葫芦岛市",
+				"children": [{
+						"value": 211403,
+						"label": "龙港区"
+					},
+					{
+						"value": 211402,
+						"label": "连山区"
+					},
+					{
+						"value": 211404,
+						"label": "南票区"
+					},
+					{
+						"value": 211481,
+						"label": "兴城市"
+					},
+					{
+						"value": 211421,
+						"label": "绥中县"
+					},
+					{
+						"value": 211422,
+						"label": "建昌县"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 210000,
+		"label": "辽宁省",
+		"expand": "true"
+	},
+	{
+		"id": 579,
+		"children": [{
+				"id": 580,
+				"value": 220100,
+				"label": "长春市",
+				"children": [{
+						"value": 220102,
+						"label": "南关区"
+					},
+					{
+						"value": 220103,
+						"label": "宽城区"
+					},
+					{
+						"value": 220104,
+						"label": "朝阳区"
+					},
+					{
+						"value": 220105,
+						"label": "二道区"
+					},
+					{
+						"value": 220106,
+						"label": "绿园区"
+					},
+					{
+						"value": 220112,
+						"label": "双阳区"
+					},
+					{
+						"value": 220113,
+						"label": "九台区"
+					},
+					{
+						"value": 220182,
+						"label": "榆树市"
+					},
+					{
+						"value": 220183,
+						"label": "德惠市"
+					},
+					{
+						"value": 220122,
+						"label": "农安县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 591,
+				"value": 220200,
+				"label": "吉林市",
+				"children": [{
+						"value": 220204,
+						"label": "船营区"
+					},
+					{
+						"value": 220202,
+						"label": "昌邑区"
+					},
+					{
+						"value": 220203,
+						"label": "龙潭区"
+					},
+					{
+						"value": 220211,
+						"label": "丰满区"
+					},
+					{
+						"value": 220281,
+						"label": "蛟河市"
+					},
+					{
+						"value": 220282,
+						"label": "桦甸市"
+					},
+					{
+						"value": 220283,
+						"label": "舒兰市"
+					},
+					{
+						"value": 220284,
+						"label": "磐石市"
+					},
+					{
+						"value": 220221,
+						"label": "永吉县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 601,
+				"value": 220300,
+				"label": "四平市",
+				"children": [{
+						"value": 220302,
+						"label": "铁西区"
+					},
+					{
+						"value": 220303,
+						"label": "铁东区"
+					},
+					{
+						"value": 220381,
+						"label": "公主岭市"
+					},
+					{
+						"value": 220382,
+						"label": "双辽市"
+					},
+					{
+						"value": 220322,
+						"label": "梨树县"
+					},
+					{
+						"value": 220323,
+						"label": "伊通满族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 608,
+				"value": 220400,
+				"label": "辽源市",
+				"children": [{
+						"value": 220402,
+						"label": "龙山区"
+					},
+					{
+						"value": 220403,
+						"label": "西安区"
+					},
+					{
+						"value": 220421,
+						"label": "东丰县"
+					},
+					{
+						"value": 220422,
+						"label": "东辽县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 613,
+				"value": 220500,
+				"label": "通化市",
+				"children": [{
+						"value": 220502,
+						"label": "东昌区"
+					},
+					{
+						"value": 220503,
+						"label": "二道江区"
+					},
+					{
+						"value": 220581,
+						"label": "梅河口市"
+					},
+					{
+						"value": 220582,
+						"label": "集安市"
+					},
+					{
+						"value": 220521,
+						"label": "通化县"
+					},
+					{
+						"value": 220523,
+						"label": "辉南县"
+					},
+					{
+						"value": 220524,
+						"label": "柳河县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 621,
+				"value": 220600,
+				"label": "白山市",
+				"children": [{
+						"value": 220602,
+						"label": "浑江区"
+					},
+					{
+						"value": 220605,
+						"label": "江源区"
+					},
+					{
+						"value": 220681,
+						"label": "临江市"
+					},
+					{
+						"value": 220621,
+						"label": "抚松县"
+					},
+					{
+						"value": 220622,
+						"label": "靖宇县"
+					},
+					{
+						"value": 220623,
+						"label": "长白朝鲜族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 628,
+				"value": 220700,
+				"label": "松原市",
+				"children": [{
+						"value": 220702,
+						"label": "宁江区"
+					},
+					{
+						"value": 220781,
+						"label": "扶余市"
+					},
+					{
+						"value": 220722,
+						"label": "长岭县"
+					},
+					{
+						"value": 220723,
+						"label": "乾安县"
+					},
+					{
+						"value": 220721,
+						"label": "前郭尔罗斯蒙古族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 634,
+				"value": 220800,
+				"label": "白城市",
+				"children": [{
+						"value": 220802,
+						"label": "洮北区"
+					},
+					{
+						"value": 220881,
+						"label": "洮南市"
+					},
+					{
+						"value": 220882,
+						"label": "大安市"
+					},
+					{
+						"value": 220821,
+						"label": "镇赉县"
+					},
+					{
+						"value": 220822,
+						"label": "通榆县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 640,
+				"value": 222400,
+				"label": "延边朝鲜族自治州",
+				"children": [{
+						"value": 222401,
+						"label": "延吉市"
+					},
+					{
+						"value": 222402,
+						"label": "图们市"
+					},
+					{
+						"value": 222403,
+						"label": "敦化市"
+					},
+					{
+						"value": 222404,
+						"label": "珲春市"
+					},
+					{
+						"value": 222405,
+						"label": "龙井市"
+					},
+					{
+						"value": 222406,
+						"label": "和龙市"
+					},
+					{
+						"value": 222424,
+						"label": "汪清县"
+					},
+					{
+						"value": 222426,
+						"label": "安图县"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 220000,
+		"label": "吉林省",
+		"expand": "true"
+	},
+	{
+		"id": 649,
+		"children": [{
+				"id": 650,
+				"value": 230100,
+				"label": "哈尔滨市",
+				"children": [{
+						"value": 230109,
+						"label": "松北区"
+					},
+					{
+						"value": 230102,
+						"label": "道里区"
+					},
+					{
+						"value": 230103,
+						"label": "南岗区"
+					},
+					{
+						"value": 230104,
+						"label": "道外区"
+					},
+					{
+						"value": 230108,
+						"label": "平房区"
+					},
+					{
+						"value": 230110,
+						"label": "香坊区"
+					},
+					{
+						"value": 230111,
+						"label": "呼兰区"
+					},
+					{
+						"value": 230112,
+						"label": "阿城区"
+					},
+					{
+						"value": 230113,
+						"label": "双城区"
+					},
+					{
+						"value": 230183,
+						"label": "尚志市"
+					},
+					{
+						"value": 230184,
+						"label": "五常市"
+					},
+					{
+						"value": 230123,
+						"label": "依兰县"
+					},
+					{
+						"value": 230124,
+						"label": "方正县"
+					},
+					{
+						"value": 230125,
+						"label": "宾县"
+					},
+					{
+						"value": 230126,
+						"label": "巴彦县"
+					},
+					{
+						"value": 230127,
+						"label": "木兰县"
+					},
+					{
+						"value": 230128,
+						"label": "通河县"
+					},
+					{
+						"value": 230129,
+						"label": "延寿县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 669,
+				"value": 230200,
+				"label": "齐齐哈尔市",
+				"children": [{
+						"value": 230203,
+						"label": "建华区"
+					},
+					{
+						"value": 230202,
+						"label": "龙沙区"
+					},
+					{
+						"value": 230204,
+						"label": "铁锋区"
+					},
+					{
+						"value": 230205,
+						"label": "昂昂溪区"
+					},
+					{
+						"value": 230206,
+						"label": "富拉尔基区"
+					},
+					{
+						"value": 230207,
+						"label": "碾子山区"
+					},
+					{
+						"value": 230208,
+						"label": "梅里斯达斡尔族区"
+					},
+					{
+						"value": 230281,
+						"label": "讷河市"
+					},
+					{
+						"value": 230221,
+						"label": "龙江县"
+					},
+					{
+						"value": 230223,
+						"label": "依安县"
+					},
+					{
+						"value": 230224,
+						"label": "泰来县"
+					},
+					{
+						"value": 230225,
+						"label": "甘南县"
+					},
+					{
+						"value": 230227,
+						"label": "富裕县"
+					},
+					{
+						"value": 230229,
+						"label": "克山县"
+					},
+					{
+						"value": 230230,
+						"label": "克东县"
+					},
+					{
+						"value": 230231,
+						"label": "拜泉县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 686,
+				"value": 230300,
+				"label": "鸡西市",
+				"children": [{
+						"value": 230302,
+						"label": "鸡冠区"
+					},
+					{
+						"value": 230303,
+						"label": "恒山区"
+					},
+					{
+						"value": 230304,
+						"label": "滴道区"
+					},
+					{
+						"value": 230305,
+						"label": "梨树区"
+					},
+					{
+						"value": 230306,
+						"label": "城子河区"
+					},
+					{
+						"value": 230307,
+						"label": "麻山区"
+					},
+					{
+						"value": 230381,
+						"label": "虎林市"
+					},
+					{
+						"value": 230382,
+						"label": "密山市"
+					},
+					{
+						"value": 230321,
+						"label": "鸡东县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 696,
+				"value": 230400,
+				"label": "鹤岗市",
+				"children": [{
+						"value": 230402,
+						"label": "向阳区"
+					},
+					{
+						"value": 230403,
+						"label": "工农区"
+					},
+					{
+						"value": 230404,
+						"label": "南山区"
+					},
+					{
+						"value": 230405,
+						"label": "兴安区"
+					},
+					{
+						"value": 230406,
+						"label": "东山区"
+					},
+					{
+						"value": 230407,
+						"label": "兴山区"
+					},
+					{
+						"value": 230421,
+						"label": "萝北县"
+					},
+					{
+						"value": 230422,
+						"label": "绥滨县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 705,
+				"value": 230500,
+				"label": "双鸭山市",
+				"children": [{
+						"value": 230502,
+						"label": "尖山区"
+					},
+					{
+						"value": 230503,
+						"label": "岭东区"
+					},
+					{
+						"value": 230505,
+						"label": "四方台区"
+					},
+					{
+						"value": 230506,
+						"label": "宝山区"
+					},
+					{
+						"value": 230521,
+						"label": "集贤县"
+					},
+					{
+						"value": 230522,
+						"label": "友谊县"
+					},
+					{
+						"value": 230523,
+						"label": "宝清县"
+					},
+					{
+						"value": 230524,
+						"label": "饶河县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 714,
+				"value": 230600,
+				"label": "大庆市",
+				"children": [{
+						"value": 230602,
+						"label": "萨尔图区"
+					},
+					{
+						"value": 230603,
+						"label": "龙凤区"
+					},
+					{
+						"value": 230604,
+						"label": "让胡路区"
+					},
+					{
+						"value": 230605,
+						"label": "红岗区"
+					},
+					{
+						"value": 230606,
+						"label": "大同区"
+					},
+					{
+						"value": 230621,
+						"label": "肇州县"
+					},
+					{
+						"value": 230622,
+						"label": "肇源县"
+					},
+					{
+						"value": 230623,
+						"label": "林甸县"
+					},
+					{
+						"value": 230624,
+						"label": "杜尔伯特蒙古族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 724,
+				"value": 230700,
+				"label": "伊春市",
+				"children": [{
+						"value": 230702,
+						"label": "伊春区"
+					},
+					{
+						"value": 230703,
+						"label": "南岔区"
+					},
+					{
+						"value": 230704,
+						"label": "友好区"
+					},
+					{
+						"value": 230705,
+						"label": "西林区"
+					},
+					{
+						"value": 230706,
+						"label": "翠峦区"
+					},
+					{
+						"value": 230707,
+						"label": "新青区"
+					},
+					{
+						"value": 230708,
+						"label": "美溪区"
+					},
+					{
+						"value": 230709,
+						"label": "金山屯区"
+					},
+					{
+						"value": 230710,
+						"label": "五营区"
+					},
+					{
+						"value": 230711,
+						"label": "乌马河区"
+					},
+					{
+						"value": 230712,
+						"label": "汤旺河区"
+					},
+					{
+						"value": 230713,
+						"label": "带岭区"
+					},
+					{
+						"value": 230714,
+						"label": "乌伊岭区"
+					},
+					{
+						"value": 230715,
+						"label": "红星区"
+					},
+					{
+						"value": 230716,
+						"label": "上甘岭区"
+					},
+					{
+						"value": 230781,
+						"label": "铁力市"
+					},
+					{
+						"value": 230722,
+						"label": "嘉荫县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 742,
+				"value": 230800,
+				"label": "佳木斯市",
+				"children": [{
+						"value": 230804,
+						"label": "前进区"
+					},
+					{
+						"value": 230803,
+						"label": "向阳区"
+					},
+					{
+						"value": 230805,
+						"label": "东风区"
+					},
+					{
+						"value": 230811,
+						"label": "郊区"
+					},
+					{
+						"value": 230881,
+						"label": "同江市"
+					},
+					{
+						"value": 230882,
+						"label": "富锦市"
+					},
+					{
+						"value": 230883,
+						"label": "抚远市"
+					},
+					{
+						"value": 230822,
+						"label": "桦南县"
+					},
+					{
+						"value": 230826,
+						"label": "桦川县"
+					},
+					{
+						"value": 230828,
+						"label": "汤原县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 753,
+				"value": 230900,
+				"label": "七台河市",
+				"children": [{
+						"value": 230903,
+						"label": "桃山区"
+					},
+					{
+						"value": 230902,
+						"label": "新兴区"
+					},
+					{
+						"value": 230904,
+						"label": "茄子河区"
+					},
+					{
+						"value": 230921,
+						"label": "勃利县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 758,
+				"value": 231000,
+				"label": "牡丹江市",
+				"children": [{
+						"value": 231002,
+						"label": "东安区"
+					},
+					{
+						"value": 231003,
+						"label": "阳明区"
+					},
+					{
+						"value": 231004,
+						"label": "爱民区"
+					},
+					{
+						"value": 231005,
+						"label": "西安区"
+					},
+					{
+						"value": 231081,
+						"label": "绥芬河市"
+					},
+					{
+						"value": 231083,
+						"label": "海林市"
+					},
+					{
+						"value": 231084,
+						"label": "宁安市"
+					},
+					{
+						"value": 231085,
+						"label": "穆棱市"
+					},
+					{
+						"value": 231086,
+						"label": "东宁市"
+					},
+					{
+						"value": 231025,
+						"label": "林口县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 769,
+				"value": 231100,
+				"label": "黑河市",
+				"children": [{
+						"value": 231102,
+						"label": "爱辉区"
+					},
+					{
+						"value": 231181,
+						"label": "北安市"
+					},
+					{
+						"value": 231182,
+						"label": "五大连池市"
+					},
+					{
+						"value": 231121,
+						"label": "嫩江县"
+					},
+					{
+						"value": 231123,
+						"label": "逊克县"
+					},
+					{
+						"value": 231124,
+						"label": "孙吴县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 776,
+				"value": 231200,
+				"label": "绥化市",
+				"children": [{
+						"value": 231202,
+						"label": "北林区"
+					},
+					{
+						"value": 231281,
+						"label": "安达市"
+					},
+					{
+						"value": 231282,
+						"label": "肇东市"
+					},
+					{
+						"value": 231283,
+						"label": "海伦市"
+					},
+					{
+						"value": 231221,
+						"label": "望奎县"
+					},
+					{
+						"value": 231222,
+						"label": "兰西县"
+					},
+					{
+						"value": 231223,
+						"label": "青冈县"
+					},
+					{
+						"value": 231224,
+						"label": "庆安县"
+					},
+					{
+						"value": 231225,
+						"label": "明水县"
+					},
+					{
+						"value": 231226,
+						"label": "绥棱县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 787,
+				"value": 232700,
+				"label": "大兴安岭地区",
+				"children": [{
+						"value": 232721,
+						"label": "呼玛县"
+					},
+					{
+						"value": 232722,
+						"label": "塔河县"
+					},
+					{
+						"value": 232723,
+						"label": "漠河县"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 230000,
+		"label": "黑龙江省",
+		"expand": "true"
+	},
+	{
+		"id": 791,
+		"children": [{
+			"id": 792,
+			"value": 310100,
+			"label": "上海市",
+			"children": [{
+					"value": 310101,
+					"label": "黄浦区"
+				},
+				{
+					"value": 310104,
+					"label": "徐汇区"
+				},
+				{
+					"value": 310105,
+					"label": "长宁区"
+				},
+				{
+					"value": 310106,
+					"label": "静安区"
+				},
+				{
+					"value": 310107,
+					"label": "普陀区"
+				},
+				{
+					"value": 310109,
+					"label": "虹口区"
+				},
+				{
+					"value": 310110,
+					"label": "杨浦区"
+				},
+				{
+					"value": 310112,
+					"label": "闵行区"
+				},
+				{
+					"value": 310113,
+					"label": "宝山区"
+				},
+				{
+					"value": 310114,
+					"label": "嘉定区"
+				},
+				{
+					"value": 310115,
+					"label": "浦东新区"
+				},
+				{
+					"value": 310116,
+					"label": "金山区"
+				},
+				{
+					"value": 310117,
+					"label": "松江区"
+				},
+				{
+					"value": 310118,
+					"label": "青浦区"
+				},
+				{
+					"value": 310120,
+					"label": "奉贤区"
+				},
+				{
+					"value": 310151,
+					"label": "崇明区"
+				}
+			],
+			"expand": "true"
+		}],
+		"value": 310000,
+		"label": "上海市",
+		"expand": "true"
+	},
+	{
+		"id": 809,
+		"children": [{
+				"id": 810,
+				"value": 320100,
+				"label": "南京市",
+				"children": [{
+						"value": 320102,
+						"label": "玄武区"
+					},
+					{
+						"value": 320104,
+						"label": "秦淮区"
+					},
+					{
+						"value": 320105,
+						"label": "建邺区"
+					},
+					{
+						"value": 320106,
+						"label": "鼓楼区"
+					},
+					{
+						"value": 320111,
+						"label": "浦口区"
+					},
+					{
+						"value": 320113,
+						"label": "栖霞区"
+					},
+					{
+						"value": 320114,
+						"label": "雨花台区"
+					},
+					{
+						"value": 320115,
+						"label": "江宁区"
+					},
+					{
+						"value": 320116,
+						"label": "六合区"
+					},
+					{
+						"value": 320117,
+						"label": "溧水区"
+					},
+					{
+						"value": 320118,
+						"label": "高淳区"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 822,
+				"value": 320200,
+				"label": "无锡市",
+				"children": [{
+						"value": 320205,
+						"label": "锡山区"
+					},
+					{
+						"value": 320206,
+						"label": "惠山区"
+					},
+					{
+						"value": 320211,
+						"label": "滨湖区"
+					},
+					{
+						"value": 320213,
+						"label": "梁溪区"
+					},
+					{
+						"value": 320214,
+						"label": "新吴区"
+					},
+					{
+						"value": 320281,
+						"label": "江阴市"
+					},
+					{
+						"value": 320282,
+						"label": "宜兴市"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 830,
+				"value": 320300,
+				"label": "徐州市",
+				"children": [{
+						"value": 320303,
+						"label": "云龙区"
+					},
+					{
+						"value": 320302,
+						"label": "鼓楼区"
+					},
+					{
+						"value": 320305,
+						"label": "贾汪区"
+					},
+					{
+						"value": 320311,
+						"label": "泉山区"
+					},
+					{
+						"value": 320312,
+						"label": "铜山区"
+					},
+					{
+						"value": 320381,
+						"label": "新沂市"
+					},
+					{
+						"value": 320382,
+						"label": "邳州市"
+					},
+					{
+						"value": 320321,
+						"label": "丰县"
+					},
+					{
+						"value": 320322,
+						"label": "沛县"
+					},
+					{
+						"value": 320324,
+						"label": "睢宁县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 841,
+				"value": 320400,
+				"label": "常州市",
+				"children": [{
+						"value": 320411,
+						"label": "新北区"
+					},
+					{
+						"value": 320402,
+						"label": "天宁区"
+					},
+					{
+						"value": 320404,
+						"label": "钟楼区"
+					},
+					{
+						"value": 320412,
+						"label": "武进区"
+					},
+					{
+						"value": 320413,
+						"label": "金坛区"
+					},
+					{
+						"value": 320481,
+						"label": "溧阳市"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 848,
+				"value": 320500,
+				"label": "苏州市",
+				"children": [{
+						"value": 320508,
+						"label": "姑苏区"
+					},
+					{
+						"value": 320505,
+						"label": "虎丘区"
+					},
+					{
+						"value": 320506,
+						"label": "吴中区"
+					},
+					{
+						"value": 320507,
+						"label": "相城区"
+					},
+					{
+						"value": 320509,
+						"label": "吴江区"
+					},
+					{
+						"value": 320581,
+						"label": "常熟市"
+					},
+					{
+						"value": 320582,
+						"label": "张家港市"
+					},
+					{
+						"value": 320583,
+						"label": "昆山市"
+					},
+					{
+						"value": 320585,
+						"label": "太仓市"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 858,
+				"value": 320600,
+				"label": "南通市",
+				"children": [{
+						"value": 320602,
+						"label": "崇川区"
+					},
+					{
+						"value": 320611,
+						"label": "港闸区"
+					},
+					{
+						"value": 320612,
+						"label": "通州区"
+					},
+					{
+						"value": 320681,
+						"label": "启东市"
+					},
+					{
+						"value": 320682,
+						"label": "如皋市"
+					},
+					{
+						"value": 320684,
+						"label": "海门市"
+					},
+					{
+						"value": 320621,
+						"label": "海安县"
+					},
+					{
+						"value": 320623,
+						"label": "如东县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 867,
+				"value": 320700,
+				"label": "连云港市",
+				"children": [{
+						"value": 320706,
+						"label": "海州区"
+					},
+					{
+						"value": 320703,
+						"label": "连云区"
+					},
+					{
+						"value": 320707,
+						"label": "赣榆区"
+					},
+					{
+						"value": 320722,
+						"label": "东海县"
+					},
+					{
+						"value": 320723,
+						"label": "灌云县"
+					},
+					{
+						"value": 320724,
+						"label": "灌南县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 874,
+				"value": 320800,
+				"label": "淮安市",
+				"children": [{
+						"value": 320803,
+						"label": "淮安区"
+					},
+					{
+						"value": 320804,
+						"label": "淮阴区"
+					},
+					{
+						"value": 320812,
+						"label": "清江浦区"
+					},
+					{
+						"value": 320813,
+						"label": "洪泽区"
+					},
+					{
+						"value": 320826,
+						"label": "涟水县"
+					},
+					{
+						"value": 320830,
+						"label": "盱眙县"
+					},
+					{
+						"value": 320831,
+						"label": "金湖县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 882,
+				"value": 320900,
+				"label": "盐城市",
+				"children": [{
+						"value": 320902,
+						"label": "亭湖区"
+					},
+					{
+						"value": 320903,
+						"label": "盐都区"
+					},
+					{
+						"value": 320904,
+						"label": "大丰区"
+					},
+					{
+						"value": 320981,
+						"label": "东台市"
+					},
+					{
+						"value": 320921,
+						"label": "响水县"
+					},
+					{
+						"value": 320922,
+						"label": "滨海县"
+					},
+					{
+						"value": 320923,
+						"label": "阜宁县"
+					},
+					{
+						"value": 320924,
+						"label": "射阳县"
+					},
+					{
+						"value": 320925,
+						"label": "建湖县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 892,
+				"value": 321000,
+				"label": "扬州市",
+				"children": [{
+						"value": 321003,
+						"label": "邗江区"
+					},
+					{
+						"value": 321002,
+						"label": "广陵区"
+					},
+					{
+						"value": 321012,
+						"label": "江都区"
+					},
+					{
+						"value": 321081,
+						"label": "仪征市"
+					},
+					{
+						"value": 321084,
+						"label": "高邮市"
+					},
+					{
+						"value": 321023,
+						"label": "宝应县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 899,
+				"value": 321100,
+				"label": "镇江市",
+				"children": [{
+						"value": 321102,
+						"label": "京口区"
+					},
+					{
+						"value": 321111,
+						"label": "润州区"
+					},
+					{
+						"value": 321112,
+						"label": "丹徒区"
+					},
+					{
+						"value": 321181,
+						"label": "丹阳市"
+					},
+					{
+						"value": 321182,
+						"label": "扬中市"
+					},
+					{
+						"value": 321183,
+						"label": "句容市"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 906,
+				"value": 321200,
+				"label": "泰州市",
+				"children": [{
+						"value": 321202,
+						"label": "海陵区"
+					},
+					{
+						"value": 321203,
+						"label": "高港区"
+					},
+					{
+						"value": 321204,
+						"label": "姜堰区"
+					},
+					{
+						"value": 321281,
+						"label": "兴化市"
+					},
+					{
+						"value": 321282,
+						"label": "靖江市"
+					},
+					{
+						"value": 321283,
+						"label": "泰兴市"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 913,
+				"value": 321300,
+				"label": "宿迁市",
+				"children": [{
+						"value": 321302,
+						"label": "宿城区"
+					},
+					{
+						"value": 321311,
+						"label": "宿豫区"
+					},
+					{
+						"value": 321322,
+						"label": "沭阳县"
+					},
+					{
+						"value": 321323,
+						"label": "泗阳县"
+					},
+					{
+						"value": 321324,
+						"label": "泗洪县"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 320000,
+		"label": "江苏省",
+		"expand": "true"
+	},
+	{
+		"id": 919,
+		"children": [{
+				"id": 920,
+				"value": 330100,
+				"label": "杭州市",
+				"children": [{
+						"value": 330105,
+						"label": "拱墅区"
+					},
+					{
+						"value": 330102,
+						"label": "上城区"
+					},
+					{
+						"value": 330103,
+						"label": "下城区"
+					},
+					{
+						"value": 330104,
+						"label": "江干区"
+					},
+					{
+						"value": 330106,
+						"label": "西湖区"
+					},
+					{
+						"value": 330108,
+						"label": "滨江区"
+					},
+					{
+						"value": 330109,
+						"label": "萧山区"
+					},
+					{
+						"value": 330110,
+						"label": "余杭区"
+					},
+					{
+						"value": 330111,
+						"label": "富阳区"
+					},
+					{
+						"value": 330182,
+						"label": "建德市"
+					},
+					{
+						"value": 330185,
+						"label": "临安市"
+					},
+					{
+						"value": 330122,
+						"label": "桐庐县"
+					},
+					{
+						"value": 330127,
+						"label": "淳安县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 934,
+				"value": 330200,
+				"label": "宁波市",
+				"children": [{
+						"value": 330203,
+						"label": "海曙区"
+					},
+					{
+						"value": 330205,
+						"label": "江北区"
+					},
+					{
+						"value": 330206,
+						"label": "北仑区"
+					},
+					{
+						"value": 330211,
+						"label": "镇海区"
+					},
+					{
+						"value": 330212,
+						"label": "鄞州区"
+					},
+					{
+						"value": 330213,
+						"label": "奉化区"
+					},
+					{
+						"value": 330281,
+						"label": "余姚市"
+					},
+					{
+						"value": 330282,
+						"label": "慈溪市"
+					},
+					{
+						"value": 330225,
+						"label": "象山县"
+					},
+					{
+						"value": 330226,
+						"label": "宁海县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 945,
+				"value": 330300,
+				"label": "温州市",
+				"children": [{
+						"value": 330302,
+						"label": "鹿城区"
+					},
+					{
+						"value": 330303,
+						"label": "龙湾区"
+					},
+					{
+						"value": 330304,
+						"label": "瓯海区"
+					},
+					{
+						"value": 330305,
+						"label": "洞头区"
+					},
+					{
+						"value": 330381,
+						"label": "瑞安市"
+					},
+					{
+						"value": 330382,
+						"label": "乐清市"
+					},
+					{
+						"value": 330324,
+						"label": "永嘉县"
+					},
+					{
+						"value": 330326,
+						"label": "平阳县"
+					},
+					{
+						"value": 330327,
+						"label": "苍南县"
+					},
+					{
+						"value": 330328,
+						"label": "文成县"
+					},
+					{
+						"value": 330329,
+						"label": "泰顺县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 957,
+				"value": 330400,
+				"label": "嘉兴市",
+				"children": [{
+						"value": 330402,
+						"label": "南湖区"
+					},
+					{
+						"value": 330411,
+						"label": "秀洲区"
+					},
+					{
+						"value": 330481,
+						"label": "海宁市"
+					},
+					{
+						"value": 330482,
+						"label": "平湖市"
+					},
+					{
+						"value": 330483,
+						"label": "桐乡市"
+					},
+					{
+						"value": 330421,
+						"label": "嘉善县"
+					},
+					{
+						"value": 330424,
+						"label": "海盐县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 965,
+				"value": 330500,
+				"label": "湖州市",
+				"children": [{
+						"value": 330502,
+						"label": "吴兴区"
+					},
+					{
+						"value": 330503,
+						"label": "南浔区"
+					},
+					{
+						"value": 330521,
+						"label": "德清县"
+					},
+					{
+						"value": 330522,
+						"label": "长兴县"
+					},
+					{
+						"value": 330523,
+						"label": "安吉县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 971,
+				"value": 330600,
+				"label": "绍兴市",
+				"children": [{
+						"value": 330602,
+						"label": "越城区"
+					},
+					{
+						"value": 330603,
+						"label": "柯桥区"
+					},
+					{
+						"value": 330604,
+						"label": "上虞区"
+					},
+					{
+						"value": 330681,
+						"label": "诸暨市"
+					},
+					{
+						"value": 330683,
+						"label": "嵊州市"
+					},
+					{
+						"value": 330624,
+						"label": "新昌县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 978,
+				"value": 330700,
+				"label": "金华市",
+				"children": [{
+						"value": 330702,
+						"label": "婺城区"
+					},
+					{
+						"value": 330703,
+						"label": "金东区"
+					},
+					{
+						"value": 330781,
+						"label": "兰溪市"
+					},
+					{
+						"value": 330782,
+						"label": "义乌市"
+					},
+					{
+						"value": 330783,
+						"label": "东阳市"
+					},
+					{
+						"value": 330784,
+						"label": "永康市"
+					},
+					{
+						"value": 330723,
+						"label": "武义县"
+					},
+					{
+						"value": 330726,
+						"label": "浦江县"
+					},
+					{
+						"value": 330727,
+						"label": "磐安县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 988,
+				"value": 330800,
+				"label": "衢州市",
+				"children": [{
+						"value": 330802,
+						"label": "柯城区"
+					},
+					{
+						"value": 330803,
+						"label": "衢江区"
+					},
+					{
+						"value": 330881,
+						"label": "江山市"
+					},
+					{
+						"value": 330822,
+						"label": "常山县"
+					},
+					{
+						"value": 330824,
+						"label": "开化县"
+					},
+					{
+						"value": 330825,
+						"label": "龙游县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 995,
+				"value": 330900,
+				"label": "舟山市",
+				"children": [{
+						"value": 330902,
+						"label": "定海区"
+					},
+					{
+						"value": 330903,
+						"label": "普陀区"
+					},
+					{
+						"value": 330921,
+						"label": "岱山县"
+					},
+					{
+						"value": 330922,
+						"label": "嵊泗县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1000,
+				"value": 331000,
+				"label": "台州市",
+				"children": [{
+						"value": 331002,
+						"label": "椒江区"
+					},
+					{
+						"value": 331003,
+						"label": "黄岩区"
+					},
+					{
+						"value": 331004,
+						"label": "路桥区"
+					},
+					{
+						"value": 331081,
+						"label": "温岭市"
+					},
+					{
+						"value": 331082,
+						"label": "临海市"
+					},
+					{
+						"value": 331083,
+						"label": "玉环市"
+					},
+					{
+						"value": 331022,
+						"label": "三门县"
+					},
+					{
+						"value": 331023,
+						"label": "天台县"
+					},
+					{
+						"value": 331024,
+						"label": "仙居县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1010,
+				"value": 331100,
+				"label": "丽水市",
+				"children": [{
+						"value": 331102,
+						"label": "莲都区"
+					},
+					{
+						"value": 331181,
+						"label": "龙泉市"
+					},
+					{
+						"value": 331121,
+						"label": "青田县"
+					},
+					{
+						"value": 331122,
+						"label": "缙云县"
+					},
+					{
+						"value": 331123,
+						"label": "遂昌县"
+					},
+					{
+						"value": 331124,
+						"label": "松阳县"
+					},
+					{
+						"value": 331125,
+						"label": "云和县"
+					},
+					{
+						"value": 331126,
+						"label": "庆元县"
+					},
+					{
+						"value": 331127,
+						"label": "景宁畲族自治县"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 330000,
+		"label": "浙江省",
+		"expand": "true"
+	},
+	{
+		"id": 1020,
+		"children": [{
+				"id": 1021,
+				"value": 340100,
+				"label": "合肥市",
+				"children": [{
+						"value": 340104,
+						"label": "蜀山区"
+					},
+					{
+						"value": 340102,
+						"label": "瑶海区"
+					},
+					{
+						"value": 340103,
+						"label": "庐阳区"
+					},
+					{
+						"value": 340111,
+						"label": "包河区"
+					},
+					{
+						"value": 340181,
+						"label": "巢湖市"
+					},
+					{
+						"value": 340121,
+						"label": "长丰县"
+					},
+					{
+						"value": 340122,
+						"label": "肥东县"
+					},
+					{
+						"value": 340123,
+						"label": "肥西县"
+					},
+					{
+						"value": 340124,
+						"label": "庐江县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1031,
+				"value": 340200,
+				"label": "芜湖市",
+				"children": [{
+						"value": 340207,
+						"label": "鸠江区"
+					},
+					{
+						"value": 340202,
+						"label": "镜湖区"
+					},
+					{
+						"value": 340203,
+						"label": "弋江区"
+					},
+					{
+						"value": 340208,
+						"label": "三山区"
+					},
+					{
+						"value": 340221,
+						"label": "芜湖县"
+					},
+					{
+						"value": 340222,
+						"label": "繁昌县"
+					},
+					{
+						"value": 340223,
+						"label": "南陵县"
+					},
+					{
+						"value": 340225,
+						"label": "无为县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1040,
+				"value": 340300,
+				"label": "蚌埠市",
+				"children": [{
+						"value": 340303,
+						"label": "蚌山区"
+					},
+					{
+						"value": 340302,
+						"label": "龙子湖区"
+					},
+					{
+						"value": 340304,
+						"label": "禹会区"
+					},
+					{
+						"value": 340311,
+						"label": "淮上区"
+					},
+					{
+						"value": 340321,
+						"label": "怀远县"
+					},
+					{
+						"value": 340322,
+						"label": "五河县"
+					},
+					{
+						"value": 340323,
+						"label": "固镇县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1048,
+				"value": 340400,
+				"label": "淮南市",
+				"children": [{
+						"value": 340403,
+						"label": "田家庵区"
+					},
+					{
+						"value": 340402,
+						"label": "大通区"
+					},
+					{
+						"value": 340404,
+						"label": "谢家集区"
+					},
+					{
+						"value": 340405,
+						"label": "八公山区"
+					},
+					{
+						"value": 340406,
+						"label": "潘集区"
+					},
+					{
+						"value": 340421,
+						"label": "凤台县"
+					},
+					{
+						"value": 340422,
+						"label": "寿县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1056,
+				"value": 340500,
+				"label": "马鞍山市",
+				"children": [{
+						"value": 340504,
+						"label": "雨山区"
+					},
+					{
+						"value": 340503,
+						"label": "花山区"
+					},
+					{
+						"value": 340506,
+						"label": "博望区"
+					},
+					{
+						"value": 340521,
+						"label": "当涂县"
+					},
+					{
+						"value": 340522,
+						"label": "含山县"
+					},
+					{
+						"value": 340523,
+						"label": "和县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1063,
+				"value": 340600,
+				"label": "淮北市",
+				"children": [{
+						"value": 340603,
+						"label": "相山区"
+					},
+					{
+						"value": 340602,
+						"label": "杜集区"
+					},
+					{
+						"value": 340604,
+						"label": "烈山区"
+					},
+					{
+						"value": 340621,
+						"label": "濉溪县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1068,
+				"value": 340700,
+				"label": "铜陵市",
+				"children": [{
+						"value": 340705,
+						"label": "铜官区"
+					},
+					{
+						"value": 340706,
+						"label": "义安区"
+					},
+					{
+						"value": 340711,
+						"label": "郊区"
+					},
+					{
+						"value": 340722,
+						"label": "枞阳县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1073,
+				"value": 340800,
+				"label": "安庆市",
+				"children": [{
+						"value": 340803,
+						"label": "大观区"
+					},
+					{
+						"value": 340802,
+						"label": "迎江区"
+					},
+					{
+						"value": 340811,
+						"label": "宜秀区"
+					},
+					{
+						"value": 340881,
+						"label": "桐城市"
+					},
+					{
+						"value": 340822,
+						"label": "怀宁县"
+					},
+					{
+						"value": 340824,
+						"label": "潜山县"
+					},
+					{
+						"value": 340825,
+						"label": "太湖县"
+					},
+					{
+						"value": 340826,
+						"label": "宿松县"
+					},
+					{
+						"value": 340827,
+						"label": "望江县"
+					},
+					{
+						"value": 340828,
+						"label": "岳西县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1084,
+				"value": 341000,
+				"label": "黄山市",
+				"children": [{
+						"value": 341002,
+						"label": "屯溪区"
+					},
+					{
+						"value": 341003,
+						"label": "黄山区"
+					},
+					{
+						"value": 341004,
+						"label": "徽州区"
+					},
+					{
+						"value": 341021,
+						"label": "歙县"
+					},
+					{
+						"value": 341022,
+						"label": "休宁县"
+					},
+					{
+						"value": 341023,
+						"label": "黟县"
+					},
+					{
+						"value": 341024,
+						"label": "祁门县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1092,
+				"value": 341100,
+				"label": "滁州市",
+				"children": [{
+						"value": 341102,
+						"label": "琅琊区"
+					},
+					{
+						"value": 341103,
+						"label": "南谯区"
+					},
+					{
+						"value": 341181,
+						"label": "天长市"
+					},
+					{
+						"value": 341182,
+						"label": "明光市"
+					},
+					{
+						"value": 341122,
+						"label": "来安县"
+					},
+					{
+						"value": 341124,
+						"label": "全椒县"
+					},
+					{
+						"value": 341125,
+						"label": "定远县"
+					},
+					{
+						"value": 341126,
+						"label": "凤阳县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1101,
+				"value": 341200,
+				"label": "阜阳市",
+				"children": [{
+						"value": 341202,
+						"label": "颍州区"
+					},
+					{
+						"value": 341203,
+						"label": "颍东区"
+					},
+					{
+						"value": 341204,
+						"label": "颍泉区"
+					},
+					{
+						"value": 341282,
+						"label": "界首市"
+					},
+					{
+						"value": 341221,
+						"label": "临泉县"
+					},
+					{
+						"value": 341222,
+						"label": "太和县"
+					},
+					{
+						"value": 341225,
+						"label": "阜南县"
+					},
+					{
+						"value": 341226,
+						"label": "颍上县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1110,
+				"value": 341300,
+				"label": "宿州市",
+				"children": [{
+						"value": 341302,
+						"label": "埇桥区"
+					},
+					{
+						"value": 341321,
+						"label": "砀山县"
+					},
+					{
+						"value": 341322,
+						"label": "萧县"
+					},
+					{
+						"value": 341323,
+						"label": "灵璧县"
+					},
+					{
+						"value": 341324,
+						"label": "泗县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1116,
+				"value": 341500,
+				"label": "六安市",
+				"children": [{
+						"value": 341502,
+						"label": "金安区"
+					},
+					{
+						"value": 341503,
+						"label": "裕安区"
+					},
+					{
+						"value": 341504,
+						"label": "叶集区"
+					},
+					{
+						"value": 341522,
+						"label": "霍邱县"
+					},
+					{
+						"value": 341523,
+						"label": "舒城县"
+					},
+					{
+						"value": 341524,
+						"label": "金寨县"
+					},
+					{
+						"value": 341525,
+						"label": "霍山县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1124,
+				"value": 341600,
+				"label": "亳州市",
+				"children": [{
+						"value": 341602,
+						"label": "谯城区"
+					},
+					{
+						"value": 341621,
+						"label": "涡阳县"
+					},
+					{
+						"value": 341622,
+						"label": "蒙城县"
+					},
+					{
+						"value": 341623,
+						"label": "利辛县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1129,
+				"value": 341700,
+				"label": "池州市",
+				"children": [{
+						"value": 341702,
+						"label": "贵池区"
+					},
+					{
+						"value": 341721,
+						"label": "东至县"
+					},
+					{
+						"value": 341722,
+						"label": "石台县"
+					},
+					{
+						"value": 341723,
+						"label": "青阳县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1134,
+				"value": 341800,
+				"label": "宣城市",
+				"children": [{
+						"value": 341802,
+						"label": "宣州区"
+					},
+					{
+						"value": 341881,
+						"label": "宁国市"
+					},
+					{
+						"value": 341821,
+						"label": "郎溪县"
+					},
+					{
+						"value": 341822,
+						"label": "广德县"
+					},
+					{
+						"value": 341823,
+						"label": "泾县"
+					},
+					{
+						"value": 341824,
+						"label": "绩溪县"
+					},
+					{
+						"value": 341825,
+						"label": "旌德县"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 340000,
+		"label": "安徽省",
+		"expand": "true"
+	},
+	{
+		"id": 1142,
+		"children": [{
+				"id": 1143,
+				"value": 350100,
+				"label": "福州市",
+				"children": [{
+						"value": 350102,
+						"label": "鼓楼区"
+					},
+					{
+						"value": 350103,
+						"label": "台江区"
+					},
+					{
+						"value": 350104,
+						"label": "仓山区"
+					},
+					{
+						"value": 350105,
+						"label": "马尾区"
+					},
+					{
+						"value": 350111,
+						"label": "晋安区"
+					},
+					{
+						"value": 350181,
+						"label": "福清市"
+					},
+					{
+						"value": 350182,
+						"label": "长乐市"
+					},
+					{
+						"value": 350121,
+						"label": "闽侯县"
+					},
+					{
+						"value": 350122,
+						"label": "连江县"
+					},
+					{
+						"value": 350123,
+						"label": "罗源县"
+					},
+					{
+						"value": 350124,
+						"label": "闽清县"
+					},
+					{
+						"value": 350125,
+						"label": "永泰县"
+					},
+					{
+						"value": 350128,
+						"label": "平潭县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1157,
+				"value": 350200,
+				"label": "厦门市",
+				"children": [{
+						"value": 350203,
+						"label": "思明区"
+					},
+					{
+						"value": 350205,
+						"label": "海沧区"
+					},
+					{
+						"value": 350206,
+						"label": "湖里区"
+					},
+					{
+						"value": 350211,
+						"label": "集美区"
+					},
+					{
+						"value": 350212,
+						"label": "同安区"
+					},
+					{
+						"value": 350213,
+						"label": "翔安区"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1164,
+				"value": 350300,
+				"label": "莆田市",
+				"children": [{
+						"value": 350302,
+						"label": "城厢区"
+					},
+					{
+						"value": 350303,
+						"label": "涵江区"
+					},
+					{
+						"value": 350304,
+						"label": "荔城区"
+					},
+					{
+						"value": 350305,
+						"label": "秀屿区"
+					},
+					{
+						"value": 350322,
+						"label": "仙游县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1170,
+				"value": 350400,
+				"label": "三明市",
+				"children": [{
+						"value": 350402,
+						"label": "梅列区"
+					},
+					{
+						"value": 350403,
+						"label": "三元区"
+					},
+					{
+						"value": 350481,
+						"label": "永安市"
+					},
+					{
+						"value": 350421,
+						"label": "明溪县"
+					},
+					{
+						"value": 350423,
+						"label": "清流县"
+					},
+					{
+						"value": 350424,
+						"label": "宁化县"
+					},
+					{
+						"value": 350425,
+						"label": "大田县"
+					},
+					{
+						"value": 350426,
+						"label": "尤溪县"
+					},
+					{
+						"value": 350427,
+						"label": "沙县"
+					},
+					{
+						"value": 350428,
+						"label": "将乐县"
+					},
+					{
+						"value": 350429,
+						"label": "泰宁县"
+					},
+					{
+						"value": 350430,
+						"label": "建宁县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1183,
+				"value": 350500,
+				"label": "泉州市",
+				"children": [{
+						"value": 350503,
+						"label": "丰泽区"
+					},
+					{
+						"value": 350502,
+						"label": "鲤城区"
+					},
+					{
+						"value": 350504,
+						"label": "洛江区"
+					},
+					{
+						"value": 350505,
+						"label": "泉港区"
+					},
+					{
+						"value": 350581,
+						"label": "石狮市"
+					},
+					{
+						"value": 350582,
+						"label": "晋江市"
+					},
+					{
+						"value": 350583,
+						"label": "南安市"
+					},
+					{
+						"value": 350521,
+						"label": "惠安县"
+					},
+					{
+						"value": 350524,
+						"label": "安溪县"
+					},
+					{
+						"value": 350525,
+						"label": "永春县"
+					},
+					{
+						"value": 350526,
+						"label": "德化县"
+					},
+					{
+						"value": 350527,
+						"label": "金门县☆"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1196,
+				"value": 350600,
+				"label": "漳州市",
+				"children": [{
+						"value": 350603,
+						"label": "龙文区"
+					},
+					{
+						"value": 350602,
+						"label": "芗城区"
+					},
+					{
+						"value": 350681,
+						"label": "龙海市"
+					},
+					{
+						"value": 350622,
+						"label": "云霄县"
+					},
+					{
+						"value": 350623,
+						"label": "漳浦县"
+					},
+					{
+						"value": 350624,
+						"label": "诏安县"
+					},
+					{
+						"value": 350625,
+						"label": "长泰县"
+					},
+					{
+						"value": 350626,
+						"label": "东山县"
+					},
+					{
+						"value": 350627,
+						"label": "南靖县"
+					},
+					{
+						"value": 350628,
+						"label": "平和县"
+					},
+					{
+						"value": 350629,
+						"label": "华安县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1208,
+				"value": 350700,
+				"label": "南平市",
+				"children": [{
+						"value": 350703,
+						"label": "建阳区"
+					},
+					{
+						"value": 350702,
+						"label": "延平区"
+					},
+					{
+						"value": 350781,
+						"label": "邵武市"
+					},
+					{
+						"value": 350782,
+						"label": "武夷山市"
+					},
+					{
+						"value": 350783,
+						"label": "建瓯市"
+					},
+					{
+						"value": 350721,
+						"label": "顺昌县"
+					},
+					{
+						"value": 350722,
+						"label": "浦城县"
+					},
+					{
+						"value": 350723,
+						"label": "光泽县"
+					},
+					{
+						"value": 350724,
+						"label": "松溪县"
+					},
+					{
+						"value": 350725,
+						"label": "政和县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1219,
+				"value": 350800,
+				"label": "龙岩市",
+				"children": [{
+						"value": 350802,
+						"label": "新罗区"
+					},
+					{
+						"value": 350803,
+						"label": "永定区"
+					},
+					{
+						"value": 350881,
+						"label": "漳平市"
+					},
+					{
+						"value": 350821,
+						"label": "长汀县"
+					},
+					{
+						"value": 350823,
+						"label": "上杭县"
+					},
+					{
+						"value": 350824,
+						"label": "武平县"
+					},
+					{
+						"value": 350825,
+						"label": "连城县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1227,
+				"value": 350900,
+				"label": "宁德市",
+				"children": [{
+						"value": 350902,
+						"label": "蕉城区"
+					},
+					{
+						"value": 350981,
+						"label": "福安市"
+					},
+					{
+						"value": 350982,
+						"label": "福鼎市"
+					},
+					{
+						"value": 350921,
+						"label": "霞浦县"
+					},
+					{
+						"value": 350922,
+						"label": "古田县"
+					},
+					{
+						"value": 350923,
+						"label": "屏南县"
+					},
+					{
+						"value": 350924,
+						"label": "寿宁县"
+					},
+					{
+						"value": 350925,
+						"label": "周宁县"
+					},
+					{
+						"value": 350926,
+						"label": "柘荣县"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 350000,
+		"label": "福建省",
+		"expand": "true"
+	},
+	{
+		"id": 1237,
+		"children": [{
+				"id": 1238,
+				"value": 360100,
+				"label": "南昌市",
+				"children": [{
+						"value": 360102,
+						"label": "东湖区"
+					},
+					{
+						"value": 360103,
+						"label": "西湖区"
+					},
+					{
+						"value": 360104,
+						"label": "青云谱区"
+					},
+					{
+						"value": 360105,
+						"label": "湾里区"
+					},
+					{
+						"value": 360111,
+						"label": "青山湖区"
+					},
+					{
+						"value": 360112,
+						"label": "新建区"
+					},
+					{
+						"value": 360121,
+						"label": "南昌县"
+					},
+					{
+						"value": 360123,
+						"label": "安义县"
+					},
+					{
+						"value": 360124,
+						"label": "进贤县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1248,
+				"value": 360200,
+				"label": "景德镇市",
+				"children": [{
+						"value": 360202,
+						"label": "昌江区"
+					},
+					{
+						"value": 360203,
+						"label": "珠山区"
+					},
+					{
+						"value": 360281,
+						"label": "乐平市"
+					},
+					{
+						"value": 360222,
+						"label": "浮梁县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1253,
+				"value": 360300,
+				"label": "萍乡市",
+				"children": [{
+						"value": 360302,
+						"label": "安源区"
+					},
+					{
+						"value": 360313,
+						"label": "湘东区"
+					},
+					{
+						"value": 360321,
+						"label": "莲花县"
+					},
+					{
+						"value": 360322,
+						"label": "上栗县"
+					},
+					{
+						"value": 360323,
+						"label": "芦溪县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1259,
+				"value": 360400,
+				"label": "九江市",
+				"children": [{
+						"value": 360403,
+						"label": "浔阳区"
+					},
+					{
+						"value": 360402,
+						"label": "濂溪区"
+					},
+					{
+						"value": 360481,
+						"label": "瑞昌市"
+					},
+					{
+						"value": 360482,
+						"label": "共青城市"
+					},
+					{
+						"value": 360483,
+						"label": "庐山市"
+					},
+					{
+						"value": 360421,
+						"label": "九江县"
+					},
+					{
+						"value": 360423,
+						"label": "武宁县"
+					},
+					{
+						"value": 360424,
+						"label": "修水县"
+					},
+					{
+						"value": 360425,
+						"label": "永修县"
+					},
+					{
+						"value": 360426,
+						"label": "德安县"
+					},
+					{
+						"value": 360428,
+						"label": "都昌县"
+					},
+					{
+						"value": 360429,
+						"label": "湖口县"
+					},
+					{
+						"value": 360430,
+						"label": "彭泽县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1273,
+				"value": 360500,
+				"label": "新余市",
+				"children": [{
+						"value": 360502,
+						"label": "渝水区"
+					},
+					{
+						"value": 360521,
+						"label": "分宜县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1276,
+				"value": 360600,
+				"label": "鹰潭市",
+				"children": [{
+						"value": 360602,
+						"label": "月湖区"
+					},
+					{
+						"value": 360681,
+						"label": "贵溪市"
+					},
+					{
+						"value": 360622,
+						"label": "余江县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1280,
+				"value": 360700,
+				"label": "赣州市",
+				"children": [{
+						"value": 360702,
+						"label": "章贡区"
+					},
+					{
+						"value": 360703,
+						"label": "南康区"
+					},
+					{
+						"value": 360704,
+						"label": "赣县区"
+					},
+					{
+						"value": 360781,
+						"label": "瑞金市"
+					},
+					{
+						"value": 360722,
+						"label": "信丰县"
+					},
+					{
+						"value": 360723,
+						"label": "大余县"
+					},
+					{
+						"value": 360724,
+						"label": "上犹县"
+					},
+					{
+						"value": 360725,
+						"label": "崇义县"
+					},
+					{
+						"value": 360726,
+						"label": "安远县"
+					},
+					{
+						"value": 360727,
+						"label": "龙南县"
+					},
+					{
+						"value": 360728,
+						"label": "定南县"
+					},
+					{
+						"value": 360729,
+						"label": "全南县"
+					},
+					{
+						"value": 360730,
+						"label": "宁都县"
+					},
+					{
+						"value": 360731,
+						"label": "于都县"
+					},
+					{
+						"value": 360732,
+						"label": "兴国县"
+					},
+					{
+						"value": 360733,
+						"label": "会昌县"
+					},
+					{
+						"value": 360734,
+						"label": "寻乌县"
+					},
+					{
+						"value": 360735,
+						"label": "石城县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1299,
+				"value": 360800,
+				"label": "吉安市",
+				"children": [{
+						"value": 360802,
+						"label": "吉州区"
+					},
+					{
+						"value": 360803,
+						"label": "青原区"
+					},
+					{
+						"value": 360881,
+						"label": "井冈山市"
+					},
+					{
+						"value": 360821,
+						"label": "吉安县"
+					},
+					{
+						"value": 360822,
+						"label": "吉水县"
+					},
+					{
+						"value": 360823,
+						"label": "峡江县"
+					},
+					{
+						"value": 360824,
+						"label": "新干县"
+					},
+					{
+						"value": 360825,
+						"label": "永丰县"
+					},
+					{
+						"value": 360826,
+						"label": "泰和县"
+					},
+					{
+						"value": 360827,
+						"label": "遂川县"
+					},
+					{
+						"value": 360828,
+						"label": "万安县"
+					},
+					{
+						"value": 360829,
+						"label": "安福县"
+					},
+					{
+						"value": 360830,
+						"label": "永新县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1313,
+				"value": 360900,
+				"label": "宜春市",
+				"children": [{
+						"value": 360902,
+						"label": "袁州区"
+					},
+					{
+						"value": 360981,
+						"label": "丰城市"
+					},
+					{
+						"value": 360982,
+						"label": "樟树市"
+					},
+					{
+						"value": 360983,
+						"label": "高安市"
+					},
+					{
+						"value": 360921,
+						"label": "奉新县"
+					},
+					{
+						"value": 360922,
+						"label": "万载县"
+					},
+					{
+						"value": 360923,
+						"label": "上高县"
+					},
+					{
+						"value": 360924,
+						"label": "宜丰县"
+					},
+					{
+						"value": 360925,
+						"label": "靖安县"
+					},
+					{
+						"value": 360926,
+						"label": "铜鼓县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1324,
+				"value": 361000,
+				"label": "抚州市",
+				"children": [{
+						"value": 361002,
+						"label": "临川区"
+					},
+					{
+						"value": 361003,
+						"label": "东乡区"
+					},
+					{
+						"value": 361021,
+						"label": "南城县"
+					},
+					{
+						"value": 361022,
+						"label": "黎川县"
+					},
+					{
+						"value": 361023,
+						"label": "南丰县"
+					},
+					{
+						"value": 361024,
+						"label": "崇仁县"
+					},
+					{
+						"value": 361025,
+						"label": "乐安县"
+					},
+					{
+						"value": 361026,
+						"label": "宜黄县"
+					},
+					{
+						"value": 361027,
+						"label": "金溪县"
+					},
+					{
+						"value": 361028,
+						"label": "资溪县"
+					},
+					{
+						"value": 361030,
+						"label": "广昌县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1336,
+				"value": 361100,
+				"label": "上饶市",
+				"children": [{
+						"value": 361102,
+						"label": "信州区"
+					},
+					{
+						"value": 361103,
+						"label": "广丰区"
+					},
+					{
+						"value": 361181,
+						"label": "德兴市"
+					},
+					{
+						"value": 361121,
+						"label": "上饶县"
+					},
+					{
+						"value": 361123,
+						"label": "玉山县"
+					},
+					{
+						"value": 361124,
+						"label": "铅山县"
+					},
+					{
+						"value": 361125,
+						"label": "横峰县"
+					},
+					{
+						"value": 361126,
+						"label": "弋阳县"
+					},
+					{
+						"value": 361127,
+						"label": "余干县"
+					},
+					{
+						"value": 361128,
+						"label": "鄱阳县"
+					},
+					{
+						"value": 361129,
+						"label": "万年县"
+					},
+					{
+						"value": 361130,
+						"label": "婺源县"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 360000,
+		"label": "江西省",
+		"expand": "true"
+	},
+	{
+		"id": 1349,
+		"children": [{
+				"id": 1350,
+				"value": 370100,
+				"label": "济南市",
+				"children": [{
+						"value": 370103,
+						"label": "市中区"
+					},
+					{
+						"value": 370102,
+						"label": "历下区"
+					},
+					{
+						"value": 370104,
+						"label": "槐荫区"
+					},
+					{
+						"value": 370105,
+						"label": "天桥区"
+					},
+					{
+						"value": 370112,
+						"label": "历城区"
+					},
+					{
+						"value": 370113,
+						"label": "长清区"
+					},
+					{
+						"value": 370114,
+						"label": "章丘区"
+					},
+					{
+						"value": 370124,
+						"label": "平阴县"
+					},
+					{
+						"value": 370125,
+						"label": "济阳县"
+					},
+					{
+						"value": 370126,
+						"label": "商河县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1361,
+				"value": 370200,
+				"label": "青岛市",
+				"children": [{
+						"value": 370202,
+						"label": "市南区"
+					},
+					{
+						"value": 370203,
+						"label": "市北区"
+					},
+					{
+						"value": 370211,
+						"label": "黄岛区"
+					},
+					{
+						"value": 370212,
+						"label": "崂山区"
+					},
+					{
+						"value": 370213,
+						"label": "李沧区"
+					},
+					{
+						"value": 370214,
+						"label": "城阳区"
+					},
+					{
+						"value": 370281,
+						"label": "胶州市"
+					},
+					{
+						"value": 370282,
+						"label": "即墨市"
+					},
+					{
+						"value": 370283,
+						"label": "平度市"
+					},
+					{
+						"value": 370285,
+						"label": "莱西市"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1372,
+				"value": 370300,
+				"label": "淄博市",
+				"children": [{
+						"value": 370303,
+						"label": "张店区"
+					},
+					{
+						"value": 370302,
+						"label": "淄川区"
+					},
+					{
+						"value": 370304,
+						"label": "博山区"
+					},
+					{
+						"value": 370305,
+						"label": "临淄区"
+					},
+					{
+						"value": 370306,
+						"label": "周村区"
+					},
+					{
+						"value": 370321,
+						"label": "桓台县"
+					},
+					{
+						"value": 370322,
+						"label": "高青县"
+					},
+					{
+						"value": 370323,
+						"label": "沂源县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1381,
+				"value": 370400,
+				"label": "枣庄市",
+				"children": [{
+						"value": 370403,
+						"label": "薛城区"
+					},
+					{
+						"value": 370402,
+						"label": "市中区"
+					},
+					{
+						"value": 370404,
+						"label": "峄城区"
+					},
+					{
+						"value": 370405,
+						"label": "台儿庄区"
+					},
+					{
+						"value": 370406,
+						"label": "山亭区"
+					},
+					{
+						"value": 370481,
+						"label": "滕州市"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1388,
+				"value": 370500,
+				"label": "东营市",
+				"children": [{
+						"value": 370502,
+						"label": "东营区"
+					},
+					{
+						"value": 370503,
+						"label": "河口区"
+					},
+					{
+						"value": 370505,
+						"label": "垦利区"
+					},
+					{
+						"value": 370522,
+						"label": "利津县"
+					},
+					{
+						"value": 370523,
+						"label": "广饶县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1394,
+				"value": 370600,
+				"label": "烟台市",
+				"children": [{
+						"value": 370613,
+						"label": "莱山区"
+					},
+					{
+						"value": 370602,
+						"label": "芝罘区"
+					},
+					{
+						"value": 370611,
+						"label": "福山区"
+					},
+					{
+						"value": 370612,
+						"label": "牟平区"
+					},
+					{
+						"value": 370681,
+						"label": "龙口市"
+					},
+					{
+						"value": 370682,
+						"label": "莱阳市"
+					},
+					{
+						"value": 370683,
+						"label": "莱州市"
+					},
+					{
+						"value": 370684,
+						"label": "蓬莱市"
+					},
+					{
+						"value": 370685,
+						"label": "招远市"
+					},
+					{
+						"value": 370686,
+						"label": "栖霞市"
+					},
+					{
+						"value": 370687,
+						"label": "海阳市"
+					},
+					{
+						"value": 370634,
+						"label": "长岛县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1407,
+				"value": 370700,
+				"label": "潍坊市",
+				"children": [{
+						"value": 370705,
+						"label": "奎文区"
+					},
+					{
+						"value": 370702,
+						"label": "潍城区"
+					},
+					{
+						"value": 370703,
+						"label": "寒亭区"
+					},
+					{
+						"value": 370704,
+						"label": "坊子区"
+					},
+					{
+						"value": 370781,
+						"label": "青州市"
+					},
+					{
+						"value": 370782,
+						"label": "诸城市"
+					},
+					{
+						"value": 370783,
+						"label": "寿光市"
+					},
+					{
+						"value": 370784,
+						"label": "安丘市"
+					},
+					{
+						"value": 370785,
+						"label": "高密市"
+					},
+					{
+						"value": 370786,
+						"label": "昌邑市"
+					},
+					{
+						"value": 370724,
+						"label": "临朐县"
+					},
+					{
+						"value": 370725,
+						"label": "昌乐县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1420,
+				"value": 370800,
+				"label": "济宁市",
+				"children": [{
+						"value": 370811,
+						"label": "任城区"
+					},
+					{
+						"value": 370812,
+						"label": "兖州区"
+					},
+					{
+						"value": 370881,
+						"label": "曲阜市"
+					},
+					{
+						"value": 370883,
+						"label": "邹城市"
+					},
+					{
+						"value": 370826,
+						"label": "微山县"
+					},
+					{
+						"value": 370827,
+						"label": "鱼台县"
+					},
+					{
+						"value": 370828,
+						"label": "金乡县"
+					},
+					{
+						"value": 370829,
+						"label": "嘉祥县"
+					},
+					{
+						"value": 370830,
+						"label": "汶上县"
+					},
+					{
+						"value": 370831,
+						"label": "泗水县"
+					},
+					{
+						"value": 370832,
+						"label": "梁山县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1432,
+				"value": 370900,
+				"label": "泰安市",
+				"children": [{
+						"value": 370902,
+						"label": "泰山区"
+					},
+					{
+						"value": 370911,
+						"label": "岱岳区"
+					},
+					{
+						"value": 370982,
+						"label": "新泰市"
+					},
+					{
+						"value": 370983,
+						"label": "肥城市"
+					},
+					{
+						"value": 370921,
+						"label": "宁阳县"
+					},
+					{
+						"value": 370923,
+						"label": "东平县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1439,
+				"value": 371000,
+				"label": "威海市",
+				"children": [{
+						"value": 371002,
+						"label": "环翠区"
+					},
+					{
+						"value": 371003,
+						"label": "文登区"
+					},
+					{
+						"value": 371082,
+						"label": "荣成市"
+					},
+					{
+						"value": 371083,
+						"label": "乳山市"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1444,
+				"value": 371100,
+				"label": "日照市",
+				"children": [{
+						"value": 371102,
+						"label": "东港区"
+					},
+					{
+						"value": 371103,
+						"label": "岚山区"
+					},
+					{
+						"value": 371121,
+						"label": "五莲县"
+					},
+					{
+						"value": 371122,
+						"label": "莒县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1449,
+				"value": 371200,
+				"label": "莱芜市",
+				"children": [{
+						"value": 371202,
+						"label": "莱城区"
+					},
+					{
+						"value": 371203,
+						"label": "钢城区"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1452,
+				"value": 371300,
+				"label": "临沂市",
+				"children": [{
+						"value": 371302,
+						"label": "兰山区"
+					},
+					{
+						"value": 371311,
+						"label": "罗庄区"
+					},
+					{
+						"value": 371312,
+						"label": "河东区"
+					},
+					{
+						"value": 371321,
+						"label": "沂南县"
+					},
+					{
+						"value": 371322,
+						"label": "郯城县"
+					},
+					{
+						"value": 371323,
+						"label": "沂水县"
+					},
+					{
+						"value": 371324,
+						"label": "兰陵县"
+					},
+					{
+						"value": 371325,
+						"label": "费县"
+					},
+					{
+						"value": 371326,
+						"label": "平邑县"
+					},
+					{
+						"value": 371327,
+						"label": "莒南县"
+					},
+					{
+						"value": 371328,
+						"label": "蒙阴县"
+					},
+					{
+						"value": 371329,
+						"label": "临沭县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1465,
+				"value": 371400,
+				"label": "德州市",
+				"children": [{
+						"value": 371402,
+						"label": "德城区"
+					},
+					{
+						"value": 371403,
+						"label": "陵城区"
+					},
+					{
+						"value": 371481,
+						"label": "乐陵市"
+					},
+					{
+						"value": 371482,
+						"label": "禹城市"
+					},
+					{
+						"value": 371422,
+						"label": "宁津县"
+					},
+					{
+						"value": 371423,
+						"label": "庆云县"
+					},
+					{
+						"value": 371424,
+						"label": "临邑县"
+					},
+					{
+						"value": 371425,
+						"label": "齐河县"
+					},
+					{
+						"value": 371426,
+						"label": "平原县"
+					},
+					{
+						"value": 371427,
+						"label": "夏津县"
+					},
+					{
+						"value": 371428,
+						"label": "武城县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1477,
+				"value": 371500,
+				"label": "聊城市",
+				"children": [{
+						"value": 371502,
+						"label": "东昌府区"
+					},
+					{
+						"value": 371581,
+						"label": "临清市"
+					},
+					{
+						"value": 371521,
+						"label": "阳谷县"
+					},
+					{
+						"value": 371522,
+						"label": "莘县"
+					},
+					{
+						"value": 371523,
+						"label": "茌平县"
+					},
+					{
+						"value": 371524,
+						"label": "东阿县"
+					},
+					{
+						"value": 371525,
+						"label": "冠县"
+					},
+					{
+						"value": 371526,
+						"label": "高唐县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1486,
+				"value": 371600,
+				"label": "滨州市",
+				"children": [{
+						"value": 371602,
+						"label": "滨城区"
+					},
+					{
+						"value": 371603,
+						"label": "沾化区"
+					},
+					{
+						"value": 371621,
+						"label": "惠民县"
+					},
+					{
+						"value": 371622,
+						"label": "阳信县"
+					},
+					{
+						"value": 371623,
+						"label": "无棣县"
+					},
+					{
+						"value": 371625,
+						"label": "博兴县"
+					},
+					{
+						"value": 371626,
+						"label": "邹平县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1494,
+				"value": 371700,
+				"label": "菏泽市",
+				"children": [{
+						"value": 371702,
+						"label": "牡丹区"
+					},
+					{
+						"value": 371703,
+						"label": "定陶区"
+					},
+					{
+						"value": 371721,
+						"label": "曹县"
+					},
+					{
+						"value": 371722,
+						"label": "单县"
+					},
+					{
+						"value": 371723,
+						"label": "成武县"
+					},
+					{
+						"value": 371724,
+						"label": "巨野县"
+					},
+					{
+						"value": 371725,
+						"label": "郓城县"
+					},
+					{
+						"value": 371726,
+						"label": "鄄城县"
+					},
+					{
+						"value": 371728,
+						"label": "东明县"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 370000,
+		"label": "山东省",
+		"expand": "true"
+	},
+	{
+		"id": 1504,
+		"children": [{
+				"id": 1505,
+				"value": 410100,
+				"label": "郑州市",
+				"children": [{
+						"value": 410102,
+						"label": "中原区"
+					},
+					{
+						"value": 410103,
+						"label": "二七区"
+					},
+					{
+						"value": 410104,
+						"label": "管城回族区"
+					},
+					{
+						"value": 410105,
+						"label": "金水区"
+					},
+					{
+						"value": 410106,
+						"label": "上街区"
+					},
+					{
+						"value": 410108,
+						"label": "惠济区"
+					},
+					{
+						"value": 410181,
+						"label": "巩义市"
+					},
+					{
+						"value": 410182,
+						"label": "荥阳市"
+					},
+					{
+						"value": 410183,
+						"label": "新密市"
+					},
+					{
+						"value": 410184,
+						"label": "新郑市"
+					},
+					{
+						"value": 410185,
+						"label": "登封市"
+					},
+					{
+						"value": 410122,
+						"label": "中牟县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1518,
+				"value": 410200,
+				"label": "开封市",
+				"children": [{
+						"value": 410204,
+						"label": "鼓楼区"
+					},
+					{
+						"value": 410202,
+						"label": "龙亭区"
+					},
+					{
+						"value": 410203,
+						"label": "顺河回族区"
+					},
+					{
+						"value": 410205,
+						"label": "禹王台区"
+					},
+					{
+						"value": 410212,
+						"label": "祥符区"
+					},
+					{
+						"value": 410221,
+						"label": "杞县"
+					},
+					{
+						"value": 410222,
+						"label": "通许县"
+					},
+					{
+						"value": 410223,
+						"label": "尉氏县"
+					},
+					{
+						"value": 410225,
+						"label": "兰考县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1528,
+				"value": 410300,
+				"label": "洛阳市",
+				"children": [{
+						"value": 410303,
+						"label": "西工区"
+					},
+					{
+						"value": 410302,
+						"label": "老城区"
+					},
+					{
+						"value": 410304,
+						"label": "瀍河回族区"
+					},
+					{
+						"value": 410305,
+						"label": "涧西区"
+					},
+					{
+						"value": 410306,
+						"label": "吉利区"
+					},
+					{
+						"value": 410311,
+						"label": "洛龙区"
+					},
+					{
+						"value": 410381,
+						"label": "偃师市"
+					},
+					{
+						"value": 410322,
+						"label": "孟津县"
+					},
+					{
+						"value": 410323,
+						"label": "新安县"
+					},
+					{
+						"value": 410324,
+						"label": "栾川县"
+					},
+					{
+						"value": 410325,
+						"label": "嵩县"
+					},
+					{
+						"value": 410326,
+						"label": "汝阳县"
+					},
+					{
+						"value": 410327,
+						"label": "宜阳县"
+					},
+					{
+						"value": 410328,
+						"label": "洛宁县"
+					},
+					{
+						"value": 410329,
+						"label": "伊川县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1544,
+				"value": 410400,
+				"label": "平顶山市",
+				"children": [{
+						"value": 410402,
+						"label": "新华区"
+					},
+					{
+						"value": 410403,
+						"label": "卫东区"
+					},
+					{
+						"value": 410404,
+						"label": "石龙区"
+					},
+					{
+						"value": 410411,
+						"label": "湛河区"
+					},
+					{
+						"value": 410481,
+						"label": "舞钢市"
+					},
+					{
+						"value": 410482,
+						"label": "汝州市"
+					},
+					{
+						"value": 410421,
+						"label": "宝丰县"
+					},
+					{
+						"value": 410422,
+						"label": "叶县"
+					},
+					{
+						"value": 410423,
+						"label": "鲁山县"
+					},
+					{
+						"value": 410425,
+						"label": "郏县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1555,
+				"value": 410500,
+				"label": "安阳市",
+				"children": [{
+						"value": 410503,
+						"label": "北关区"
+					},
+					{
+						"value": 410502,
+						"label": "文峰区"
+					},
+					{
+						"value": 410505,
+						"label": "殷都区"
+					},
+					{
+						"value": 410506,
+						"label": "龙安区"
+					},
+					{
+						"value": 410581,
+						"label": "林州市"
+					},
+					{
+						"value": 410522,
+						"label": "安阳县"
+					},
+					{
+						"value": 410523,
+						"label": "汤阴县"
+					},
+					{
+						"value": 410526,
+						"label": "滑县"
+					},
+					{
+						"value": 410527,
+						"label": "内黄县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1565,
+				"value": 410600,
+				"label": "鹤壁市",
+				"children": [{
+						"value": 410611,
+						"label": "淇滨区"
+					},
+					{
+						"value": 410602,
+						"label": "鹤山区"
+					},
+					{
+						"value": 410603,
+						"label": "山城区"
+					},
+					{
+						"value": 410621,
+						"label": "浚县"
+					},
+					{
+						"value": 410622,
+						"label": "淇县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1571,
+				"value": 410700,
+				"label": "新乡市",
+				"children": [{
+						"value": 410703,
+						"label": "卫滨区"
+					},
+					{
+						"value": 410702,
+						"label": "红旗区"
+					},
+					{
+						"value": 410704,
+						"label": "凤泉区"
+					},
+					{
+						"value": 410711,
+						"label": "牧野区"
+					},
+					{
+						"value": 410781,
+						"label": "卫辉市"
+					},
+					{
+						"value": 410782,
+						"label": "辉县市"
+					},
+					{
+						"value": 410721,
+						"label": "新乡县"
+					},
+					{
+						"value": 410724,
+						"label": "获嘉县"
+					},
+					{
+						"value": 410725,
+						"label": "原阳县"
+					},
+					{
+						"value": 410726,
+						"label": "延津县"
+					},
+					{
+						"value": 410727,
+						"label": "封丘县"
+					},
+					{
+						"value": 410728,
+						"label": "长垣县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1584,
+				"value": 410800,
+				"label": "焦作市",
+				"children": [{
+						"value": 410802,
+						"label": "解放区"
+					},
+					{
+						"value": 410803,
+						"label": "中站区"
+					},
+					{
+						"value": 410804,
+						"label": "马村区"
+					},
+					{
+						"value": 410811,
+						"label": "山阳区"
+					},
+					{
+						"value": 410882,
+						"label": "沁阳市"
+					},
+					{
+						"value": 410883,
+						"label": "孟州市"
+					},
+					{
+						"value": 410821,
+						"label": "修武县"
+					},
+					{
+						"value": 410822,
+						"label": "博爱县"
+					},
+					{
+						"value": 410823,
+						"label": "武陟县"
+					},
+					{
+						"value": 410825,
+						"label": "温县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1595,
+				"value": 410900,
+				"label": "濮阳市",
+				"children": [{
+						"value": 410902,
+						"label": "华龙区"
+					},
+					{
+						"value": 410922,
+						"label": "清丰县"
+					},
+					{
+						"value": 410923,
+						"label": "南乐县"
+					},
+					{
+						"value": 410926,
+						"label": "范县"
+					},
+					{
+						"value": 410927,
+						"label": "台前县"
+					},
+					{
+						"value": 410928,
+						"label": "濮阳县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1602,
+				"value": 411000,
+				"label": "许昌市",
+				"children": [{
+						"value": 411002,
+						"label": "魏都区"
+					},
+					{
+						"value": 411003,
+						"label": "建安区"
+					},
+					{
+						"value": 411081,
+						"label": "禹州市"
+					},
+					{
+						"value": 411082,
+						"label": "长葛市"
+					},
+					{
+						"value": 411024,
+						"label": "鄢陵县"
+					},
+					{
+						"value": 411025,
+						"label": "襄城县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1609,
+				"value": 411100,
+				"label": "漯河市",
+				"children": [{
+						"value": 411103,
+						"label": "郾城区"
+					},
+					{
+						"value": 411102,
+						"label": "源汇区"
+					},
+					{
+						"value": 411104,
+						"label": "召陵区"
+					},
+					{
+						"value": 411121,
+						"label": "舞阳县"
+					},
+					{
+						"value": 411122,
+						"label": "临颍县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1615,
+				"value": 411200,
+				"label": "三门峡市",
+				"children": [{
+						"value": 411202,
+						"label": "湖滨区"
+					},
+					{
+						"value": 411203,
+						"label": "陕州区"
+					},
+					{
+						"value": 411281,
+						"label": "义马市"
+					},
+					{
+						"value": 411282,
+						"label": "灵宝市"
+					},
+					{
+						"value": 411221,
+						"label": "渑池县"
+					},
+					{
+						"value": 411224,
+						"label": "卢氏县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1622,
+				"value": 411300,
+				"label": "南阳市",
+				"children": [{
+						"value": 411303,
+						"label": "卧龙区"
+					},
+					{
+						"value": 411302,
+						"label": "宛城区"
+					},
+					{
+						"value": 411381,
+						"label": "邓州市"
+					},
+					{
+						"value": 411321,
+						"label": "南召县"
+					},
+					{
+						"value": 411322,
+						"label": "方城县"
+					},
+					{
+						"value": 411323,
+						"label": "西峡县"
+					},
+					{
+						"value": 411324,
+						"label": "镇平县"
+					},
+					{
+						"value": 411325,
+						"label": "内乡县"
+					},
+					{
+						"value": 411326,
+						"label": "淅川县"
+					},
+					{
+						"value": 411327,
+						"label": "社旗县"
+					},
+					{
+						"value": 411328,
+						"label": "唐河县"
+					},
+					{
+						"value": 411329,
+						"label": "新野县"
+					},
+					{
+						"value": 411330,
+						"label": "桐柏县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1636,
+				"value": 411400,
+				"label": "商丘市",
+				"children": [{
+						"value": 411402,
+						"label": "梁园区"
+					},
+					{
+						"value": 411403,
+						"label": "睢阳区"
+					},
+					{
+						"value": 411481,
+						"label": "永城市"
+					},
+					{
+						"value": 411421,
+						"label": "民权县"
+					},
+					{
+						"value": 411422,
+						"label": "睢县"
+					},
+					{
+						"value": 411423,
+						"label": "宁陵县"
+					},
+					{
+						"value": 411424,
+						"label": "柘城县"
+					},
+					{
+						"value": 411425,
+						"label": "虞城县"
+					},
+					{
+						"value": 411426,
+						"label": "夏邑县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1646,
+				"value": 411500,
+				"label": "信阳市",
+				"children": [{
+						"value": 411502,
+						"label": "浉河区"
+					},
+					{
+						"value": 411503,
+						"label": "平桥区"
+					},
+					{
+						"value": 411521,
+						"label": "罗山县"
+					},
+					{
+						"value": 411522,
+						"label": "光山县"
+					},
+					{
+						"value": 411523,
+						"label": "新县"
+					},
+					{
+						"value": 411524,
+						"label": "商城县"
+					},
+					{
+						"value": 411525,
+						"label": "固始县"
+					},
+					{
+						"value": 411526,
+						"label": "潢川县"
+					},
+					{
+						"value": 411527,
+						"label": "淮滨县"
+					},
+					{
+						"value": 411528,
+						"label": "息县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1657,
+				"value": 411600,
+				"label": "周口市",
+				"children": [{
+						"value": 411602,
+						"label": "川汇区"
+					},
+					{
+						"value": 411681,
+						"label": "项城市"
+					},
+					{
+						"value": 411621,
+						"label": "扶沟县"
+					},
+					{
+						"value": 411622,
+						"label": "西华县"
+					},
+					{
+						"value": 411623,
+						"label": "商水县"
+					},
+					{
+						"value": 411624,
+						"label": "沈丘县"
+					},
+					{
+						"value": 411625,
+						"label": "郸城县"
+					},
+					{
+						"value": 411626,
+						"label": "淮阳县"
+					},
+					{
+						"value": 411627,
+						"label": "太康县"
+					},
+					{
+						"value": 411628,
+						"label": "鹿邑县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1668,
+				"value": 411700,
+				"label": "驻马店市",
+				"children": [{
+						"value": 411702,
+						"label": "驿城区"
+					},
+					{
+						"value": 411721,
+						"label": "西平县"
+					},
+					{
+						"value": 411722,
+						"label": "上蔡县"
+					},
+					{
+						"value": 411723,
+						"label": "平舆县"
+					},
+					{
+						"value": 411724,
+						"label": "正阳县"
+					},
+					{
+						"value": 411725,
+						"label": "确山县"
+					},
+					{
+						"value": 411726,
+						"label": "泌阳县"
+					},
+					{
+						"value": 411727,
+						"label": "汝南县"
+					},
+					{
+						"value": 411728,
+						"label": "遂平县"
+					},
+					{
+						"value": 411729,
+						"label": "新蔡县"
+					},
+					{
+						"value": 419001,
+						"label": "济源市"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 410000,
+		"label": "河南省",
+		"expand": "true"
+	},
+	{
+		"id": 1680,
+		"children": [{
+				"id": 1681,
+				"value": 420100,
+				"label": "武汉市",
+				"children": [{
+						"value": 420102,
+						"label": "江岸区"
+					},
+					{
+						"value": 420103,
+						"label": "江汉区"
+					},
+					{
+						"value": 420104,
+						"label": "硚口区"
+					},
+					{
+						"value": 420105,
+						"label": "汉阳区"
+					},
+					{
+						"value": 420106,
+						"label": "武昌区"
+					},
+					{
+						"value": 420107,
+						"label": "青山区"
+					},
+					{
+						"value": 420111,
+						"label": "洪山区"
+					},
+					{
+						"value": 420112,
+						"label": "东西湖区"
+					},
+					{
+						"value": 420113,
+						"label": "汉南区"
+					},
+					{
+						"value": 420114,
+						"label": "蔡甸区"
+					},
+					{
+						"value": 420115,
+						"label": "江夏区"
+					},
+					{
+						"value": 420116,
+						"label": "黄陂区"
+					},
+					{
+						"value": 420117,
+						"label": "新洲区"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1695,
+				"value": 420200,
+				"label": "黄石市",
+				"children": [{
+						"value": 420204,
+						"label": "下陆区"
+					},
+					{
+						"value": 420202,
+						"label": "黄石港区"
+					},
+					{
+						"value": 420203,
+						"label": "西塞山区"
+					},
+					{
+						"value": 420205,
+						"label": "铁山区"
+					},
+					{
+						"value": 420281,
+						"label": "大冶市"
+					},
+					{
+						"value": 420222,
+						"label": "阳新县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1702,
+				"value": 420300,
+				"label": "十堰市",
+				"children": [{
+						"value": 420302,
+						"label": "茅箭区"
+					},
+					{
+						"value": 420303,
+						"label": "张湾区"
+					},
+					{
+						"value": 420304,
+						"label": "郧阳区"
+					},
+					{
+						"value": 420381,
+						"label": "丹江口市"
+					},
+					{
+						"value": 420322,
+						"label": "郧西县"
+					},
+					{
+						"value": 420323,
+						"label": "竹山县"
+					},
+					{
+						"value": 420324,
+						"label": "竹溪县"
+					},
+					{
+						"value": 420325,
+						"label": "房县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1711,
+				"value": 420500,
+				"label": "宜昌市",
+				"children": [{
+						"value": 420502,
+						"label": "西陵区"
+					},
+					{
+						"value": 420503,
+						"label": "伍家岗区"
+					},
+					{
+						"value": 420504,
+						"label": "点军区"
+					},
+					{
+						"value": 420505,
+						"label": "猇亭区"
+					},
+					{
+						"value": 420506,
+						"label": "夷陵区"
+					},
+					{
+						"value": 420581,
+						"label": "宜都市"
+					},
+					{
+						"value": 420582,
+						"label": "当阳市"
+					},
+					{
+						"value": 420583,
+						"label": "枝江市"
+					},
+					{
+						"value": 420525,
+						"label": "远安县"
+					},
+					{
+						"value": 420526,
+						"label": "兴山县"
+					},
+					{
+						"value": 420527,
+						"label": "秭归县"
+					},
+					{
+						"value": 420528,
+						"label": "长阳土家族自治县"
+					},
+					{
+						"value": 420529,
+						"label": "五峰土家族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1725,
+				"value": 420600,
+				"label": "襄阳市",
+				"children": [{
+						"value": 420602,
+						"label": "襄城区"
+					},
+					{
+						"value": 420606,
+						"label": "樊城区"
+					},
+					{
+						"value": 420607,
+						"label": "襄州区"
+					},
+					{
+						"value": 420682,
+						"label": "老河口市"
+					},
+					{
+						"value": 420683,
+						"label": "枣阳市"
+					},
+					{
+						"value": 420684,
+						"label": "宜城市"
+					},
+					{
+						"value": 420624,
+						"label": "南漳县"
+					},
+					{
+						"value": 420625,
+						"label": "谷城县"
+					},
+					{
+						"value": 420626,
+						"label": "保康县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1735,
+				"value": 420700,
+				"label": "鄂州市",
+				"children": [{
+						"value": 420704,
+						"label": "鄂城区"
+					},
+					{
+						"value": 420702,
+						"label": "梁子湖区"
+					},
+					{
+						"value": 420703,
+						"label": "华容区"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1739,
+				"value": 420800,
+				"label": "荆门市",
+				"children": [{
+						"value": 420802,
+						"label": "东宝区"
+					},
+					{
+						"value": 420804,
+						"label": "掇刀区"
+					},
+					{
+						"value": 420881,
+						"label": "钟祥市"
+					},
+					{
+						"value": 420821,
+						"label": "京山县"
+					},
+					{
+						"value": 420822,
+						"label": "沙洋县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1745,
+				"value": 420900,
+				"label": "孝感市",
+				"children": [{
+						"value": 420902,
+						"label": "孝南区"
+					},
+					{
+						"value": 420981,
+						"label": "应城市"
+					},
+					{
+						"value": 420982,
+						"label": "安陆市"
+					},
+					{
+						"value": 420984,
+						"label": "汉川市"
+					},
+					{
+						"value": 420921,
+						"label": "孝昌县"
+					},
+					{
+						"value": 420922,
+						"label": "大悟县"
+					},
+					{
+						"value": 420923,
+						"label": "云梦县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1753,
+				"value": 421000,
+				"label": "荆州市",
+				"children": [{
+						"value": 421002,
+						"label": "沙市区"
+					},
+					{
+						"value": 421003,
+						"label": "荆州区"
+					},
+					{
+						"value": 421081,
+						"label": "石首市"
+					},
+					{
+						"value": 421083,
+						"label": "洪湖市"
+					},
+					{
+						"value": 421087,
+						"label": "松滋市"
+					},
+					{
+						"value": 421022,
+						"label": "公安县"
+					},
+					{
+						"value": 421023,
+						"label": "监利县"
+					},
+					{
+						"value": 421024,
+						"label": "江陵县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1762,
+				"value": 421100,
+				"label": "黄冈市",
+				"children": [{
+						"value": 421102,
+						"label": "黄州区"
+					},
+					{
+						"value": 421181,
+						"label": "麻城市"
+					},
+					{
+						"value": 421182,
+						"label": "武穴市"
+					},
+					{
+						"value": 421121,
+						"label": "团风县"
+					},
+					{
+						"value": 421122,
+						"label": "红安县"
+					},
+					{
+						"value": 421123,
+						"label": "罗田县"
+					},
+					{
+						"value": 421124,
+						"label": "英山县"
+					},
+					{
+						"value": 421125,
+						"label": "浠水县"
+					},
+					{
+						"value": 421126,
+						"label": "蕲春县"
+					},
+					{
+						"value": 421127,
+						"label": "黄梅县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1773,
+				"value": 421200,
+				"label": "咸宁市",
+				"children": [{
+						"value": 421202,
+						"label": "咸安区"
+					},
+					{
+						"value": 421281,
+						"label": "赤壁市"
+					},
+					{
+						"value": 421221,
+						"label": "嘉鱼县"
+					},
+					{
+						"value": 421222,
+						"label": "通城县"
+					},
+					{
+						"value": 421223,
+						"label": "崇阳县"
+					},
+					{
+						"value": 421224,
+						"label": "通山县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1780,
+				"value": 421300,
+				"label": "随州市",
+				"children": [{
+						"value": 421303,
+						"label": "曾都区"
+					},
+					{
+						"value": 421381,
+						"label": "广水市"
+					},
+					{
+						"value": 421321,
+						"label": "随县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1784,
+				"value": 422800,
+				"label": "恩施土家族苗族自治州",
+				"children": [{
+						"value": 422801,
+						"label": "恩施市"
+					},
+					{
+						"value": 422802,
+						"label": "利川市"
+					},
+					{
+						"value": 422822,
+						"label": "建始县"
+					},
+					{
+						"value": 422823,
+						"label": "巴东县"
+					},
+					{
+						"value": 422825,
+						"label": "宣恩县"
+					},
+					{
+						"value": 422826,
+						"label": "咸丰县"
+					},
+					{
+						"value": 422827,
+						"label": "来凤县"
+					},
+					{
+						"value": 422828,
+						"label": "鹤峰县"
+					},
+					{
+						"value": 429004,
+						"label": "仙桃市"
+					},
+					{
+						"value": 429005,
+						"label": "潜江市"
+					},
+					{
+						"value": 429006,
+						"label": "天门市"
+					},
+					{
+						"value": 429021,
+						"label": "神农架林区"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 420000,
+		"label": "湖北省",
+		"expand": "true"
+	},
+	{
+		"id": 1797,
+		"children": [{
+				"id": 1798,
+				"value": 430100,
+				"label": "长沙市",
+				"children": [{
+						"value": 430104,
+						"label": "岳麓区"
+					},
+					{
+						"value": 430102,
+						"label": "芙蓉区"
+					},
+					{
+						"value": 430103,
+						"label": "天心区"
+					},
+					{
+						"value": 430105,
+						"label": "开福区"
+					},
+					{
+						"value": 430111,
+						"label": "雨花区"
+					},
+					{
+						"value": 430112,
+						"label": "望城区"
+					},
+					{
+						"value": 430181,
+						"label": "浏阳市"
+					},
+					{
+						"value": 430182,
+						"label": "宁乡市"
+					},
+					{
+						"value": 430121,
+						"label": "长沙县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1808,
+				"value": 430200,
+				"label": "株洲市",
+				"children": [{
+						"value": 430211,
+						"label": "天元区"
+					},
+					{
+						"value": 430202,
+						"label": "荷塘区"
+					},
+					{
+						"value": 430203,
+						"label": "芦淞区"
+					},
+					{
+						"value": 430204,
+						"label": "石峰区"
+					},
+					{
+						"value": 430281,
+						"label": "醴陵市"
+					},
+					{
+						"value": 430221,
+						"label": "株洲县"
+					},
+					{
+						"value": 430223,
+						"label": "攸县"
+					},
+					{
+						"value": 430224,
+						"label": "茶陵县"
+					},
+					{
+						"value": 430225,
+						"label": "炎陵县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1818,
+				"value": 430300,
+				"label": "湘潭市",
+				"children": [{
+						"value": 430304,
+						"label": "岳塘区"
+					},
+					{
+						"value": 430302,
+						"label": "雨湖区"
+					},
+					{
+						"value": 430381,
+						"label": "湘乡市"
+					},
+					{
+						"value": 430382,
+						"label": "韶山市"
+					},
+					{
+						"value": 430321,
+						"label": "湘潭县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1824,
+				"value": 430400,
+				"label": "衡阳市",
+				"children": [{
+						"value": 430408,
+						"label": "蒸湘区"
+					},
+					{
+						"value": 430405,
+						"label": "珠晖区"
+					},
+					{
+						"value": 430406,
+						"label": "雁峰区"
+					},
+					{
+						"value": 430407,
+						"label": "石鼓区"
+					},
+					{
+						"value": 430412,
+						"label": "南岳区"
+					},
+					{
+						"value": 430481,
+						"label": "耒阳市"
+					},
+					{
+						"value": 430482,
+						"label": "常宁市"
+					},
+					{
+						"value": 430421,
+						"label": "衡阳县"
+					},
+					{
+						"value": 430422,
+						"label": "衡南县"
+					},
+					{
+						"value": 430423,
+						"label": "衡山县"
+					},
+					{
+						"value": 430424,
+						"label": "衡东县"
+					},
+					{
+						"value": 430426,
+						"label": "祁东县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1837,
+				"value": 430500,
+				"label": "邵阳市",
+				"children": [{
+						"value": 430503,
+						"label": "大祥区"
+					},
+					{
+						"value": 430502,
+						"label": "双清区"
+					},
+					{
+						"value": 430511,
+						"label": "北塔区"
+					},
+					{
+						"value": 430581,
+						"label": "武冈市"
+					},
+					{
+						"value": 430521,
+						"label": "邵东县"
+					},
+					{
+						"value": 430522,
+						"label": "新邵县"
+					},
+					{
+						"value": 430523,
+						"label": "邵阳县"
+					},
+					{
+						"value": 430524,
+						"label": "隆回县"
+					},
+					{
+						"value": 430525,
+						"label": "洞口县"
+					},
+					{
+						"value": 430527,
+						"label": "绥宁县"
+					},
+					{
+						"value": 430528,
+						"label": "新宁县"
+					},
+					{
+						"value": 430529,
+						"label": "城步苗族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1850,
+				"value": 430600,
+				"label": "岳阳市",
+				"children": [{
+						"value": 430602,
+						"label": "岳阳楼区"
+					},
+					{
+						"value": 430603,
+						"label": "云溪区"
+					},
+					{
+						"value": 430611,
+						"label": "君山区"
+					},
+					{
+						"value": 430681,
+						"label": "汨罗市"
+					},
+					{
+						"value": 430682,
+						"label": "临湘市"
+					},
+					{
+						"value": 430621,
+						"label": "岳阳县"
+					},
+					{
+						"value": 430623,
+						"label": "华容县"
+					},
+					{
+						"value": 430624,
+						"label": "湘阴县"
+					},
+					{
+						"value": 430626,
+						"label": "平江县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1860,
+				"value": 430700,
+				"label": "常德市",
+				"children": [{
+						"value": 430702,
+						"label": "武陵区"
+					},
+					{
+						"value": 430703,
+						"label": "鼎城区"
+					},
+					{
+						"value": 430781,
+						"label": "津市市"
+					},
+					{
+						"value": 430721,
+						"label": "安乡县"
+					},
+					{
+						"value": 430722,
+						"label": "汉寿县"
+					},
+					{
+						"value": 430723,
+						"label": "澧县"
+					},
+					{
+						"value": 430724,
+						"label": "临澧县"
+					},
+					{
+						"value": 430725,
+						"label": "桃源县"
+					},
+					{
+						"value": 430726,
+						"label": "石门县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1870,
+				"value": 430800,
+				"label": "张家界市",
+				"children": [{
+						"value": 430802,
+						"label": "永定区"
+					},
+					{
+						"value": 430811,
+						"label": "武陵源区"
+					},
+					{
+						"value": 430821,
+						"label": "慈利县"
+					},
+					{
+						"value": 430822,
+						"label": "桑植县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1875,
+				"value": 430900,
+				"label": "益阳市",
+				"children": [{
+						"value": 430903,
+						"label": "赫山区"
+					},
+					{
+						"value": 430902,
+						"label": "资阳区"
+					},
+					{
+						"value": 430981,
+						"label": "沅江市"
+					},
+					{
+						"value": 430921,
+						"label": "南县"
+					},
+					{
+						"value": 430922,
+						"label": "桃江县"
+					},
+					{
+						"value": 430923,
+						"label": "安化县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1882,
+				"value": 431000,
+				"label": "郴州市",
+				"children": [{
+						"value": 431002,
+						"label": "北湖区"
+					},
+					{
+						"value": 431003,
+						"label": "苏仙区"
+					},
+					{
+						"value": 431081,
+						"label": "资兴市"
+					},
+					{
+						"value": 431021,
+						"label": "桂阳县"
+					},
+					{
+						"value": 431022,
+						"label": "宜章县"
+					},
+					{
+						"value": 431023,
+						"label": "永兴县"
+					},
+					{
+						"value": 431024,
+						"label": "嘉禾县"
+					},
+					{
+						"value": 431025,
+						"label": "临武县"
+					},
+					{
+						"value": 431026,
+						"label": "汝城县"
+					},
+					{
+						"value": 431027,
+						"label": "桂东县"
+					},
+					{
+						"value": 431028,
+						"label": "安仁县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1894,
+				"value": 431100,
+				"label": "永州市",
+				"children": [{
+						"value": 431103,
+						"label": "冷水滩区"
+					},
+					{
+						"value": 431102,
+						"label": "零陵区"
+					},
+					{
+						"value": 431121,
+						"label": "祁阳县"
+					},
+					{
+						"value": 431122,
+						"label": "东安县"
+					},
+					{
+						"value": 431123,
+						"label": "双牌县"
+					},
+					{
+						"value": 431124,
+						"label": "道县"
+					},
+					{
+						"value": 431125,
+						"label": "江永县"
+					},
+					{
+						"value": 431126,
+						"label": "宁远县"
+					},
+					{
+						"value": 431127,
+						"label": "蓝山县"
+					},
+					{
+						"value": 431128,
+						"label": "新田县"
+					},
+					{
+						"value": 431129,
+						"label": "江华瑶族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1906,
+				"value": 431200,
+				"label": "怀化市",
+				"children": [{
+						"value": 431202,
+						"label": "鹤城区"
+					},
+					{
+						"value": 431281,
+						"label": "洪江市"
+					},
+					{
+						"value": 431221,
+						"label": "中方县"
+					},
+					{
+						"value": 431222,
+						"label": "沅陵县"
+					},
+					{
+						"value": 431223,
+						"label": "辰溪县"
+					},
+					{
+						"value": 431224,
+						"label": "溆浦县"
+					},
+					{
+						"value": 431225,
+						"label": "会同县"
+					},
+					{
+						"value": 431226,
+						"label": "麻阳苗族自治县"
+					},
+					{
+						"value": 431227,
+						"label": "新晃侗族自治县"
+					},
+					{
+						"value": 431228,
+						"label": "芷江侗族自治县"
+					},
+					{
+						"value": 431229,
+						"label": "靖州苗族侗族自治县"
+					},
+					{
+						"value": 431230,
+						"label": "通道侗族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1919,
+				"value": 431300,
+				"label": "娄底市",
+				"children": [{
+						"value": 431302,
+						"label": "娄星区"
+					},
+					{
+						"value": 431381,
+						"label": "冷水江市"
+					},
+					{
+						"value": 431382,
+						"label": "涟源市"
+					},
+					{
+						"value": 431321,
+						"label": "双峰县"
+					},
+					{
+						"value": 431322,
+						"label": "新化县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1925,
+				"value": 433100,
+				"label": "湘西土家族苗族自治州",
+				"children": [{
+						"value": 433101,
+						"label": "吉首市"
+					},
+					{
+						"value": 433122,
+						"label": "泸溪县"
+					},
+					{
+						"value": 433123,
+						"label": "凤凰县"
+					},
+					{
+						"value": 433124,
+						"label": "花垣县"
+					},
+					{
+						"value": 433125,
+						"label": "保靖县"
+					},
+					{
+						"value": 433126,
+						"label": "古丈县"
+					},
+					{
+						"value": 433127,
+						"label": "永顺县"
+					},
+					{
+						"value": 433130,
+						"label": "龙山县"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 430000,
+		"label": "湖南省",
+		"expand": "true"
+	},
+	{
+		"id": 1934,
+		"children": [{
+				"id": 1935,
+				"value": 440100,
+				"label": "广州市",
+				"children": [{
+						"value": 440104,
+						"label": "越秀区"
+					},
+					{
+						"value": 440103,
+						"label": "荔湾区"
+					},
+					{
+						"value": 440105,
+						"label": "海珠区"
+					},
+					{
+						"value": 440106,
+						"label": "天河区"
+					},
+					{
+						"value": 440111,
+						"label": "白云区"
+					},
+					{
+						"value": 440112,
+						"label": "黄埔区"
+					},
+					{
+						"value": 440113,
+						"label": "番禺区"
+					},
+					{
+						"value": 440114,
+						"label": "花都区"
+					},
+					{
+						"value": 440115,
+						"label": "南沙区"
+					},
+					{
+						"value": 440118,
+						"label": "增城区"
+					},
+					{
+						"value": 440117,
+						"label": "从化区"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1947,
+				"value": 440200,
+				"label": "韶关市",
+				"children": [{
+						"value": 440204,
+						"label": "浈江区"
+					},
+					{
+						"value": 440203,
+						"label": "武江区"
+					},
+					{
+						"value": 440205,
+						"label": "曲江区"
+					},
+					{
+						"value": 440281,
+						"label": "乐昌市"
+					},
+					{
+						"value": 440282,
+						"label": "南雄市"
+					},
+					{
+						"value": 440222,
+						"label": "始兴县"
+					},
+					{
+						"value": 440224,
+						"label": "仁化县"
+					},
+					{
+						"value": 440229,
+						"label": "翁源县"
+					},
+					{
+						"value": 440233,
+						"label": "新丰县"
+					},
+					{
+						"value": 440232,
+						"label": "乳源瑶族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1958,
+				"value": 440300,
+				"label": "深圳市",
+				"children": [{
+						"value": 440304,
+						"label": "福田区"
+					},
+					{
+						"value": 440303,
+						"label": "罗湖区"
+					},
+					{
+						"value": 440305,
+						"label": "南山区"
+					},
+					{
+						"value": 440306,
+						"label": "宝安区"
+					},
+					{
+						"value": 440307,
+						"label": "龙岗区"
+					},
+					{
+						"value": 440308,
+						"label": "盐田区"
+					},
+					{
+						"value": 440309,
+						"label": "龙华区"
+					},
+					{
+						"value": 440310,
+						"label": "坪山区"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1967,
+				"value": 440400,
+				"label": "珠海市",
+				"children": [{
+						"value": 440402,
+						"label": "香洲区"
+					},
+					{
+						"value": 440403,
+						"label": "斗门区"
+					},
+					{
+						"value": 440404,
+						"label": "金湾区"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1971,
+				"value": 440500,
+				"label": "汕头市",
+				"children": [{
+						"value": 440511,
+						"label": "金平区"
+					},
+					{
+						"value": 440507,
+						"label": "龙湖区"
+					},
+					{
+						"value": 440512,
+						"label": "濠江区"
+					},
+					{
+						"value": 440513,
+						"label": "潮阳区"
+					},
+					{
+						"value": 440514,
+						"label": "潮南区"
+					},
+					{
+						"value": 440515,
+						"label": "澄海区"
+					},
+					{
+						"value": 440523,
+						"label": "南澳县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1979,
+				"value": 440600,
+				"label": "佛山市",
+				"children": [{
+						"value": 440604,
+						"label": "禅城区"
+					},
+					{
+						"value": 440605,
+						"label": "南海区"
+					},
+					{
+						"value": 440606,
+						"label": "顺德区"
+					},
+					{
+						"value": 440607,
+						"label": "三水区"
+					},
+					{
+						"value": 440608,
+						"label": "高明区"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1985,
+				"value": 440700,
+				"label": "江门市",
+				"children": [{
+						"value": 440703,
+						"label": "蓬江区"
+					},
+					{
+						"value": 440704,
+						"label": "江海区"
+					},
+					{
+						"value": 440705,
+						"label": "新会区"
+					},
+					{
+						"value": 440781,
+						"label": "台山市"
+					},
+					{
+						"value": 440783,
+						"label": "开平市"
+					},
+					{
+						"value": 440784,
+						"label": "鹤山市"
+					},
+					{
+						"value": 440785,
+						"label": "恩平市"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 1993,
+				"value": 440800,
+				"label": "湛江市",
+				"children": [{
+						"value": 440802,
+						"label": "赤坎区"
+					},
+					{
+						"value": 440803,
+						"label": "霞山区"
+					},
+					{
+						"value": 440804,
+						"label": "坡头区"
+					},
+					{
+						"value": 440811,
+						"label": "麻章区"
+					},
+					{
+						"value": 440881,
+						"label": "廉江市"
+					},
+					{
+						"value": 440882,
+						"label": "雷州市"
+					},
+					{
+						"value": 440883,
+						"label": "吴川市"
+					},
+					{
+						"value": 440823,
+						"label": "遂溪县"
+					},
+					{
+						"value": 440825,
+						"label": "徐闻县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2003,
+				"value": 440900,
+				"label": "茂名市",
+				"children": [{
+						"value": 440902,
+						"label": "茂南区"
+					},
+					{
+						"value": 440904,
+						"label": "电白区"
+					},
+					{
+						"value": 440981,
+						"label": "高州市"
+					},
+					{
+						"value": 440982,
+						"label": "化州市"
+					},
+					{
+						"value": 440983,
+						"label": "信宜市"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2009,
+				"value": 441200,
+				"label": "肇庆市",
+				"children": [{
+						"value": 441202,
+						"label": "端州区"
+					},
+					{
+						"value": 441203,
+						"label": "鼎湖区"
+					},
+					{
+						"value": 441204,
+						"label": "高要区"
+					},
+					{
+						"value": 441284,
+						"label": "四会市"
+					},
+					{
+						"value": 441223,
+						"label": "广宁县"
+					},
+					{
+						"value": 441224,
+						"label": "怀集县"
+					},
+					{
+						"value": 441225,
+						"label": "封开县"
+					},
+					{
+						"value": 441226,
+						"label": "德庆县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2018,
+				"value": 441300,
+				"label": "惠州市",
+				"children": [{
+						"value": 441302,
+						"label": "惠城区"
+					},
+					{
+						"value": 441303,
+						"label": "惠阳区"
+					},
+					{
+						"value": 441322,
+						"label": "博罗县"
+					},
+					{
+						"value": 441323,
+						"label": "惠东县"
+					},
+					{
+						"value": 441324,
+						"label": "龙门县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2024,
+				"value": 441400,
+				"label": "梅州市",
+				"children": [{
+						"value": 441402,
+						"label": "梅江区"
+					},
+					{
+						"value": 441403,
+						"label": "梅县区"
+					},
+					{
+						"value": 441481,
+						"label": "兴宁市"
+					},
+					{
+						"value": 441422,
+						"label": "大埔县"
+					},
+					{
+						"value": 441423,
+						"label": "丰顺县"
+					},
+					{
+						"value": 441424,
+						"label": "五华县"
+					},
+					{
+						"value": 441426,
+						"label": "平远县"
+					},
+					{
+						"value": 441427,
+						"label": "蕉岭县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2033,
+				"value": 441500,
+				"label": "汕尾市",
+				"children": [{
+						"value": 441502,
+						"label": "城区"
+					},
+					{
+						"value": 441581,
+						"label": "陆丰市"
+					},
+					{
+						"value": 441521,
+						"label": "海丰县"
+					},
+					{
+						"value": 441523,
+						"label": "陆河县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2038,
+				"value": 441600,
+				"label": "河源市",
+				"children": [{
+						"value": 441602,
+						"label": "源城区"
+					},
+					{
+						"value": 441621,
+						"label": "紫金县"
+					},
+					{
+						"value": 441622,
+						"label": "龙川县"
+					},
+					{
+						"value": 441623,
+						"label": "连平县"
+					},
+					{
+						"value": 441624,
+						"label": "和平县"
+					},
+					{
+						"value": 441625,
+						"label": "东源县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2045,
+				"value": 441700,
+				"label": "阳江市",
+				"children": [{
+						"value": 441702,
+						"label": "江城区"
+					},
+					{
+						"value": 441704,
+						"label": "阳东区"
+					},
+					{
+						"value": 441781,
+						"label": "阳春市"
+					},
+					{
+						"value": 441721,
+						"label": "阳西县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2050,
+				"value": 441800,
+				"label": "清远市",
+				"children": [{
+						"value": 441802,
+						"label": "清城区"
+					},
+					{
+						"value": 441803,
+						"label": "清新区"
+					},
+					{
+						"value": 441881,
+						"label": "英德市"
+					},
+					{
+						"value": 441882,
+						"label": "连州市"
+					},
+					{
+						"value": 441821,
+						"label": "佛冈县"
+					},
+					{
+						"value": 441823,
+						"label": "阳山县"
+					},
+					{
+						"value": 441825,
+						"label": "连山壮族瑶族自治县"
+					},
+					{
+						"value": 441826,
+						"label": "连南瑶族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2059,
+				"value": 441900,
+				"label": "东莞市",
+				"children": []
+			},
+			{
+				"id": 2060,
+				"value": 442000,
+				"label": "中山市",
+				"children": []
+			},
+			{
+				"id": 2061,
+				"value": 445100,
+				"label": "潮州市",
+				"children": [{
+						"value": 445102,
+						"label": "湘桥区"
+					},
+					{
+						"value": 445103,
+						"label": "潮安区"
+					},
+					{
+						"value": 445122,
+						"label": "饶平县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2065,
+				"value": 445200,
+				"label": "揭阳市",
+				"children": [{
+						"value": 445202,
+						"label": "榕城区"
+					},
+					{
+						"value": 445203,
+						"label": "揭东区"
+					},
+					{
+						"value": 445281,
+						"label": "普宁市"
+					},
+					{
+						"value": 445222,
+						"label": "揭西县"
+					},
+					{
+						"value": 445224,
+						"label": "惠来县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2071,
+				"value": 445300,
+				"label": "云浮市",
+				"children": [{
+						"value": 445302,
+						"label": "云城区"
+					},
+					{
+						"value": 445303,
+						"label": "云安区"
+					},
+					{
+						"value": 445381,
+						"label": "罗定市"
+					},
+					{
+						"value": 445321,
+						"label": "新兴县"
+					},
+					{
+						"value": 445322,
+						"label": "郁南县"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 440000,
+		"label": "广东省",
+		"expand": "true"
+	},
+	{
+		"id": 2077,
+		"children": [{
+				"id": 2078,
+				"value": 450100,
+				"label": "南宁市",
+				"children": [{
+						"value": 450103,
+						"label": "青秀区"
+					},
+					{
+						"value": 450102,
+						"label": "兴宁区"
+					},
+					{
+						"value": 450105,
+						"label": "江南区"
+					},
+					{
+						"value": 450107,
+						"label": "西乡塘区"
+					},
+					{
+						"value": 450108,
+						"label": "良庆区"
+					},
+					{
+						"value": 450109,
+						"label": "邕宁区"
+					},
+					{
+						"value": 450110,
+						"label": "武鸣区"
+					},
+					{
+						"value": 450123,
+						"label": "隆安县"
+					},
+					{
+						"value": 450124,
+						"label": "马山县"
+					},
+					{
+						"value": 450125,
+						"label": "上林县"
+					},
+					{
+						"value": 450126,
+						"label": "宾阳县"
+					},
+					{
+						"value": 450127,
+						"label": "横县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2091,
+				"value": 450200,
+				"label": "柳州市",
+				"children": [{
+						"value": 450205,
+						"label": "柳北区"
+					},
+					{
+						"value": 450202,
+						"label": "城中区"
+					},
+					{
+						"value": 450203,
+						"label": "鱼峰区"
+					},
+					{
+						"value": 450204,
+						"label": "柳南区"
+					},
+					{
+						"value": 450206,
+						"label": "柳江区"
+					},
+					{
+						"value": 450222,
+						"label": "柳城县"
+					},
+					{
+						"value": 450223,
+						"label": "鹿寨县"
+					},
+					{
+						"value": 450224,
+						"label": "融安县"
+					},
+					{
+						"value": 450225,
+						"label": "融水苗族自治县"
+					},
+					{
+						"value": 450226,
+						"label": "三江侗族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2102,
+				"value": 450300,
+				"label": "桂林市",
+				"children": [{
+						"value": 450312,
+						"label": "临桂区"
+					},
+					{
+						"value": 450302,
+						"label": "秀峰区"
+					},
+					{
+						"value": 450303,
+						"label": "叠彩区"
+					},
+					{
+						"value": 450304,
+						"label": "象山区"
+					},
+					{
+						"value": 450305,
+						"label": "七星区"
+					},
+					{
+						"value": 450311,
+						"label": "雁山区"
+					},
+					{
+						"value": 450321,
+						"label": "阳朔县"
+					},
+					{
+						"value": 450323,
+						"label": "灵川县"
+					},
+					{
+						"value": 450324,
+						"label": "全州县"
+					},
+					{
+						"value": 450325,
+						"label": "兴安县"
+					},
+					{
+						"value": 450326,
+						"label": "永福县"
+					},
+					{
+						"value": 450327,
+						"label": "灌阳县"
+					},
+					{
+						"value": 450329,
+						"label": "资源县"
+					},
+					{
+						"value": 450330,
+						"label": "平乐县"
+					},
+					{
+						"value": 450331,
+						"label": "荔浦县"
+					},
+					{
+						"value": 450328,
+						"label": "龙胜各族自治县"
+					},
+					{
+						"value": 450332,
+						"label": "恭城瑶族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2120,
+				"value": 450400,
+				"label": "梧州市",
+				"children": [{
+						"value": 450405,
+						"label": "长洲区"
+					},
+					{
+						"value": 450403,
+						"label": "万秀区"
+					},
+					{
+						"value": 450406,
+						"label": "龙圩区"
+					},
+					{
+						"value": 450481,
+						"label": "岑溪市"
+					},
+					{
+						"value": 450421,
+						"label": "苍梧县"
+					},
+					{
+						"value": 450422,
+						"label": "藤县"
+					},
+					{
+						"value": 450423,
+						"label": "蒙山县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2128,
+				"value": 450500,
+				"label": "北海市",
+				"children": [{
+						"value": 450502,
+						"label": "海城区"
+					},
+					{
+						"value": 450503,
+						"label": "银海区"
+					},
+					{
+						"value": 450512,
+						"label": "铁山港区"
+					},
+					{
+						"value": 450521,
+						"label": "合浦县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2133,
+				"value": 450600,
+				"label": "防城港市",
+				"children": [{
+						"value": 450602,
+						"label": "港口区"
+					},
+					{
+						"value": 450603,
+						"label": "防城区"
+					},
+					{
+						"value": 450681,
+						"label": "东兴市"
+					},
+					{
+						"value": 450621,
+						"label": "上思县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2138,
+				"value": 450700,
+				"label": "钦州市",
+				"children": [{
+						"value": 450702,
+						"label": "钦南区"
+					},
+					{
+						"value": 450703,
+						"label": "钦北区"
+					},
+					{
+						"value": 450721,
+						"label": "灵山县"
+					},
+					{
+						"value": 450722,
+						"label": "浦北县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2143,
+				"value": 450800,
+				"label": "贵港市",
+				"children": [{
+						"value": 450802,
+						"label": "港北区"
+					},
+					{
+						"value": 450803,
+						"label": "港南区"
+					},
+					{
+						"value": 450804,
+						"label": "覃塘区"
+					},
+					{
+						"value": 450881,
+						"label": "桂平市"
+					},
+					{
+						"value": 450821,
+						"label": "平南县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2149,
+				"value": 450900,
+				"label": "玉林市",
+				"children": [{
+						"value": 450902,
+						"label": "玉州区"
+					},
+					{
+						"value": 450903,
+						"label": "福绵区"
+					},
+					{
+						"value": 450981,
+						"label": "北流市"
+					},
+					{
+						"value": 450921,
+						"label": "容县"
+					},
+					{
+						"value": 450922,
+						"label": "陆川县"
+					},
+					{
+						"value": 450923,
+						"label": "博白县"
+					},
+					{
+						"value": 450924,
+						"label": "兴业县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2157,
+				"value": 451000,
+				"label": "百色市",
+				"children": [{
+						"value": 451002,
+						"label": "右江区"
+					},
+					{
+						"value": 451081,
+						"label": "靖西市"
+					},
+					{
+						"value": 451021,
+						"label": "田阳县"
+					},
+					{
+						"value": 451022,
+						"label": "田东县"
+					},
+					{
+						"value": 451023,
+						"label": "平果县"
+					},
+					{
+						"value": 451024,
+						"label": "德保县"
+					},
+					{
+						"value": 451026,
+						"label": "那坡县"
+					},
+					{
+						"value": 451027,
+						"label": "凌云县"
+					},
+					{
+						"value": 451028,
+						"label": "乐业县"
+					},
+					{
+						"value": 451029,
+						"label": "田林县"
+					},
+					{
+						"value": 451030,
+						"label": "西林县"
+					},
+					{
+						"value": 451031,
+						"label": "隆林各族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2170,
+				"value": 451100,
+				"label": "贺州市",
+				"children": [{
+						"value": 451102,
+						"label": "八步区"
+					},
+					{
+						"value": 451103,
+						"label": "平桂区"
+					},
+					{
+						"value": 451121,
+						"label": "昭平县"
+					},
+					{
+						"value": 451122,
+						"label": "钟山县"
+					},
+					{
+						"value": 451123,
+						"label": "富川瑶族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2176,
+				"value": 451200,
+				"label": "河池市",
+				"children": [{
+						"value": 451202,
+						"label": "金城江区"
+					},
+					{
+						"value": 451203,
+						"label": "宜州区"
+					},
+					{
+						"value": 451221,
+						"label": "南丹县"
+					},
+					{
+						"value": 451222,
+						"label": "天峨县"
+					},
+					{
+						"value": 451223,
+						"label": "凤山县"
+					},
+					{
+						"value": 451224,
+						"label": "东兰县"
+					},
+					{
+						"value": 451225,
+						"label": "罗城仫佬族自治县"
+					},
+					{
+						"value": 451226,
+						"label": "环江毛南族自治县"
+					},
+					{
+						"value": 451227,
+						"label": "巴马瑶族自治县"
+					},
+					{
+						"value": 451228,
+						"label": "都安瑶族自治县"
+					},
+					{
+						"value": 451229,
+						"label": "大化瑶族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2188,
+				"value": 451300,
+				"label": "来宾市",
+				"children": [{
+						"value": 451302,
+						"label": "兴宾区"
+					},
+					{
+						"value": 451381,
+						"label": "合山市"
+					},
+					{
+						"value": 451321,
+						"label": "忻城县"
+					},
+					{
+						"value": 451322,
+						"label": "象州县"
+					},
+					{
+						"value": 451323,
+						"label": "武宣县"
+					},
+					{
+						"value": 451324,
+						"label": "金秀瑶族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2195,
+				"value": 451400,
+				"label": "崇左市",
+				"children": [{
+						"value": 451402,
+						"label": "江州区"
+					},
+					{
+						"value": 451481,
+						"label": "凭祥市"
+					},
+					{
+						"value": 451421,
+						"label": "扶绥县"
+					},
+					{
+						"value": 451422,
+						"label": "宁明县"
+					},
+					{
+						"value": 451423,
+						"label": "龙州县"
+					},
+					{
+						"value": 451424,
+						"label": "大新县"
+					},
+					{
+						"value": 451425,
+						"label": "天等县"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 450000,
+		"label": "广西壮族自治区",
+		"expand": "true"
+	},
+	{
+		"id": 2203,
+		"children": [{
+				"id": 2204,
+				"value": 460100,
+				"label": "海口市",
+				"children": [{
+						"value": 460106,
+						"label": "龙华区"
+					},
+					{
+						"value": 460105,
+						"label": "秀英区"
+					},
+					{
+						"value": 460107,
+						"label": "琼山区"
+					},
+					{
+						"value": 460108,
+						"label": "美兰区"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2209,
+				"value": 460200,
+				"label": "三亚市",
+				"children": [{
+						"value": 460203,
+						"label": "吉阳区"
+					},
+					{
+						"value": 460202,
+						"label": "海棠区"
+					},
+					{
+						"value": 460204,
+						"label": "天涯区"
+					},
+					{
+						"value": 460205,
+						"label": "崖州区"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2214,
+				"value": 460300,
+				"label": "三沙市",
+				"children": []
+			},
+			{
+				"id": 2215,
+				"value": 460400,
+				"label": "儋州市",
+				"children": [{
+						"value": 469001,
+						"label": "五指山市"
+					},
+					{
+						"value": 469002,
+						"label": "琼海市"
+					},
+					{
+						"value": 469005,
+						"label": "文昌市"
+					},
+					{
+						"value": 469006,
+						"label": "万宁市"
+					},
+					{
+						"value": 469007,
+						"label": "东方市"
+					},
+					{
+						"value": 469021,
+						"label": "定安县"
+					},
+					{
+						"value": 469022,
+						"label": "屯昌县"
+					},
+					{
+						"value": 469023,
+						"label": "澄迈县"
+					},
+					{
+						"value": 469024,
+						"label": "临高县"
+					},
+					{
+						"value": 469025,
+						"label": "白沙黎族自治县"
+					},
+					{
+						"value": 469026,
+						"label": "昌江黎族自治县"
+					},
+					{
+						"value": 469027,
+						"label": "乐东黎族自治县"
+					},
+					{
+						"value": 469028,
+						"label": "陵水黎族自治县"
+					},
+					{
+						"value": 469029,
+						"label": "保亭黎族苗族自治县"
+					},
+					{
+						"value": 469030,
+						"label": "琼中黎族苗族自治县"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 460000,
+		"label": "海南省",
+		"expand": "true"
+	},
+	{
+		"id": 2231,
+		"children": [{
+			"id": 2232,
+			"value": 500100,
+			"label": "重庆市",
+			"children": [{
+					"value": 500103,
+					"label": "渝中区"
+				},
+				{
+					"value": 500101,
+					"label": "万州区"
+				},
+				{
+					"value": 500102,
+					"label": "涪陵区"
+				},
+				{
+					"value": 500104,
+					"label": "大渡口区"
+				},
+				{
+					"value": 500105,
+					"label": "江北区"
+				},
+				{
+					"value": 500106,
+					"label": "沙坪坝区"
+				},
+				{
+					"value": 500107,
+					"label": "九龙坡区"
+				},
+				{
+					"value": 500108,
+					"label": "南岸区"
+				},
+				{
+					"value": 500109,
+					"label": "北碚区"
+				},
+				{
+					"value": 500110,
+					"label": "綦江区"
+				},
+				{
+					"value": 500111,
+					"label": "大足区"
+				},
+				{
+					"value": 500112,
+					"label": "渝北区"
+				},
+				{
+					"value": 500113,
+					"label": "巴南区"
+				},
+				{
+					"value": 500114,
+					"label": "黔江区"
+				},
+				{
+					"value": 500115,
+					"label": "长寿区"
+				},
+				{
+					"value": 500116,
+					"label": "江津区"
+				},
+				{
+					"value": 500117,
+					"label": "合川区"
+				},
+				{
+					"value": 500118,
+					"label": "永川区"
+				},
+				{
+					"value": 500119,
+					"label": "南川区"
+				},
+				{
+					"value": 500120,
+					"label": "璧山区"
+				},
+				{
+					"value": 500151,
+					"label": "铜梁区"
+				},
+				{
+					"value": 500152,
+					"label": "潼南区"
+				},
+				{
+					"value": 500153,
+					"label": "荣昌区"
+				},
+				{
+					"value": 500154,
+					"label": "开州区"
+				},
+				{
+					"value": 500155,
+					"label": "梁平区"
+				},
+				{
+					"value": 500156,
+					"label": "武隆区"
+				},
+				{
+					"value": 500229,
+					"label": "城口县"
+				},
+				{
+					"value": 500230,
+					"label": "丰都县"
+				},
+				{
+					"value": 500231,
+					"label": "垫江县"
+				},
+				{
+					"value": 500233,
+					"label": "忠县"
+				},
+				{
+					"value": 500235,
+					"label": "云阳县"
+				},
+				{
+					"value": 500236,
+					"label": "奉节县"
+				},
+				{
+					"value": 500237,
+					"label": "巫山县"
+				},
+				{
+					"value": 500238,
+					"label": "巫溪县"
+				},
+				{
+					"value": 500240,
+					"label": "石柱土家族自治县"
+				},
+				{
+					"value": 500241,
+					"label": "秀山土家族苗族自治县"
+				},
+				{
+					"value": 500242,
+					"label": "酉阳土家族苗族自治县"
+				},
+				{
+					"value": 500243,
+					"label": "彭水苗族土家族自治县"
+				}
+			],
+			"expand": "true"
+		}],
+		"value": 500000,
+		"label": "重庆市",
+		"expand": "true"
+	},
+	{
+		"id": 2271,
+		"children": [{
+				"id": 2272,
+				"value": 510100,
+				"label": "成都市",
+				"children": [{
+						"value": 510107,
+						"label": "武侯区"
+					},
+					{
+						"value": 510104,
+						"label": "锦江区"
+					},
+					{
+						"value": 510105,
+						"label": "青羊区"
+					},
+					{
+						"value": 510106,
+						"label": "金牛区"
+					},
+					{
+						"value": 510108,
+						"label": "成华区"
+					},
+					{
+						"value": 510112,
+						"label": "龙泉驿区"
+					},
+					{
+						"value": 510113,
+						"label": "青白江区"
+					},
+					{
+						"value": 510114,
+						"label": "新都区"
+					},
+					{
+						"value": 510115,
+						"label": "温江区"
+					},
+					{
+						"value": 510116,
+						"label": "双流区"
+					},
+					{
+						"value": 510117,
+						"label": "郫都区"
+					},
+					{
+						"value": 510181,
+						"label": "都江堰市"
+					},
+					{
+						"value": 510182,
+						"label": "彭州市"
+					},
+					{
+						"value": 510183,
+						"label": "邛崃市"
+					},
+					{
+						"value": 510184,
+						"label": "崇州市"
+					},
+					{
+						"value": 510185,
+						"label": "简阳市"
+					},
+					{
+						"value": 510121,
+						"label": "金堂县"
+					},
+					{
+						"value": 510129,
+						"label": "大邑县"
+					},
+					{
+						"value": 510131,
+						"label": "蒲江县"
+					},
+					{
+						"value": 510132,
+						"label": "新津县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2293,
+				"value": 510300,
+				"label": "自贡市",
+				"children": [{
+						"value": 510302,
+						"label": "自流井区"
+					},
+					{
+						"value": 510303,
+						"label": "贡井区"
+					},
+					{
+						"value": 510304,
+						"label": "大安区"
+					},
+					{
+						"value": 510311,
+						"label": "沿滩区"
+					},
+					{
+						"value": 510321,
+						"label": "荣县"
+					},
+					{
+						"value": 510322,
+						"label": "富顺县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2300,
+				"value": 510400,
+				"label": "攀枝花市",
+				"children": [{
+						"value": 510402,
+						"label": "东区"
+					},
+					{
+						"value": 510403,
+						"label": "西区"
+					},
+					{
+						"value": 510411,
+						"label": "仁和区"
+					},
+					{
+						"value": 510421,
+						"label": "米易县"
+					},
+					{
+						"value": 510422,
+						"label": "盐边县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2306,
+				"value": 510500,
+				"label": "泸州市",
+				"children": [{
+						"value": 510502,
+						"label": "江阳区"
+					},
+					{
+						"value": 510503,
+						"label": "纳溪区"
+					},
+					{
+						"value": 510504,
+						"label": "龙马潭区"
+					},
+					{
+						"value": 510521,
+						"label": "泸县"
+					},
+					{
+						"value": 510522,
+						"label": "合江县"
+					},
+					{
+						"value": 510524,
+						"label": "叙永县"
+					},
+					{
+						"value": 510525,
+						"label": "古蔺县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2314,
+				"value": 510600,
+				"label": "德阳市",
+				"children": [{
+						"value": 510603,
+						"label": "旌阳区"
+					},
+					{
+						"value": 510681,
+						"label": "广汉市"
+					},
+					{
+						"value": 510682,
+						"label": "什邡市"
+					},
+					{
+						"value": 510683,
+						"label": "绵竹市"
+					},
+					{
+						"value": 510626,
+						"label": "罗江县"
+					},
+					{
+						"value": 510623,
+						"label": "中江县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2321,
+				"value": 510700,
+				"label": "绵阳市",
+				"children": [{
+						"value": 510703,
+						"label": "涪城区"
+					},
+					{
+						"value": 510704,
+						"label": "游仙区"
+					},
+					{
+						"value": 510705,
+						"label": "安州区"
+					},
+					{
+						"value": 510781,
+						"label": "江油市"
+					},
+					{
+						"value": 510722,
+						"label": "三台县"
+					},
+					{
+						"value": 510723,
+						"label": "盐亭县"
+					},
+					{
+						"value": 510725,
+						"label": "梓潼县"
+					},
+					{
+						"value": 510727,
+						"label": "平武县"
+					},
+					{
+						"value": 510726,
+						"label": "北川羌族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2331,
+				"value": 510800,
+				"label": "广元市",
+				"children": [{
+						"value": 510802,
+						"label": "利州区"
+					},
+					{
+						"value": 510811,
+						"label": "昭化区"
+					},
+					{
+						"value": 510812,
+						"label": "朝天区"
+					},
+					{
+						"value": 510821,
+						"label": "旺苍县"
+					},
+					{
+						"value": 510822,
+						"label": "青川县"
+					},
+					{
+						"value": 510823,
+						"label": "剑阁县"
+					},
+					{
+						"value": 510824,
+						"label": "苍溪县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2339,
+				"value": 510900,
+				"label": "遂宁市",
+				"children": [{
+						"value": 510903,
+						"label": "船山区"
+					},
+					{
+						"value": 510904,
+						"label": "安居区"
+					},
+					{
+						"value": 510921,
+						"label": "蓬溪县"
+					},
+					{
+						"value": 510922,
+						"label": "射洪县"
+					},
+					{
+						"value": 510923,
+						"label": "大英县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2345,
+				"value": 511000,
+				"label": "内江市",
+				"children": [{
+						"value": 511002,
+						"label": "市中区"
+					},
+					{
+						"value": 511011,
+						"label": "东兴区"
+					},
+					{
+						"value": 511083,
+						"label": "隆昌市"
+					},
+					{
+						"value": 511024,
+						"label": "威远县"
+					},
+					{
+						"value": 511025,
+						"label": "资中县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2351,
+				"value": 511100,
+				"label": "乐山市",
+				"children": [{
+						"value": 511102,
+						"label": "市中区"
+					},
+					{
+						"value": 511111,
+						"label": "沙湾区"
+					},
+					{
+						"value": 511112,
+						"label": "五通桥区"
+					},
+					{
+						"value": 511113,
+						"label": "金口河区"
+					},
+					{
+						"value": 511181,
+						"label": "峨眉山市"
+					},
+					{
+						"value": 511123,
+						"label": "犍为县"
+					},
+					{
+						"value": 511124,
+						"label": "井研县"
+					},
+					{
+						"value": 511126,
+						"label": "夹江县"
+					},
+					{
+						"value": 511129,
+						"label": "沐川县"
+					},
+					{
+						"value": 511132,
+						"label": "峨边彝族自治县"
+					},
+					{
+						"value": 511133,
+						"label": "马边彝族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2363,
+				"value": 511300,
+				"label": "南充市",
+				"children": [{
+						"value": 511302,
+						"label": "顺庆区"
+					},
+					{
+						"value": 511303,
+						"label": "高坪区"
+					},
+					{
+						"value": 511304,
+						"label": "嘉陵区"
+					},
+					{
+						"value": 511381,
+						"label": "阆中市"
+					},
+					{
+						"value": 511321,
+						"label": "南部县"
+					},
+					{
+						"value": 511322,
+						"label": "营山县"
+					},
+					{
+						"value": 511323,
+						"label": "蓬安县"
+					},
+					{
+						"value": 511324,
+						"label": "仪陇县"
+					},
+					{
+						"value": 511325,
+						"label": "西充县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2373,
+				"value": 511400,
+				"label": "眉山市",
+				"children": [{
+						"value": 511402,
+						"label": "东坡区"
+					},
+					{
+						"value": 511403,
+						"label": "彭山区"
+					},
+					{
+						"value": 511421,
+						"label": "仁寿县"
+					},
+					{
+						"value": 511423,
+						"label": "洪雅县"
+					},
+					{
+						"value": 511424,
+						"label": "丹棱县"
+					},
+					{
+						"value": 511425,
+						"label": "青神县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2380,
+				"value": 511500,
+				"label": "宜宾市",
+				"children": [{
+						"value": 511502,
+						"label": "翠屏区"
+					},
+					{
+						"value": 511503,
+						"label": "南溪区"
+					},
+					{
+						"value": 511521,
+						"label": "宜宾县"
+					},
+					{
+						"value": 511523,
+						"label": "江安县"
+					},
+					{
+						"value": 511524,
+						"label": "长宁县"
+					},
+					{
+						"value": 511525,
+						"label": "高县"
+					},
+					{
+						"value": 511526,
+						"label": "珙县"
+					},
+					{
+						"value": 511527,
+						"label": "筠连县"
+					},
+					{
+						"value": 511528,
+						"label": "兴文县"
+					},
+					{
+						"value": 511529,
+						"label": "屏山县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2391,
+				"value": 511600,
+				"label": "广安市",
+				"children": [{
+						"value": 511602,
+						"label": "广安区"
+					},
+					{
+						"value": 511603,
+						"label": "前锋区"
+					},
+					{
+						"value": 511681,
+						"label": "华蓥市"
+					},
+					{
+						"value": 511621,
+						"label": "岳池县"
+					},
+					{
+						"value": 511622,
+						"label": "武胜县"
+					},
+					{
+						"value": 511623,
+						"label": "邻水县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2398,
+				"value": 511700,
+				"label": "达州市",
+				"children": [{
+						"value": 511702,
+						"label": "通川区"
+					},
+					{
+						"value": 511703,
+						"label": "达川区"
+					},
+					{
+						"value": 511781,
+						"label": "万源市"
+					},
+					{
+						"value": 511722,
+						"label": "宣汉县"
+					},
+					{
+						"value": 511723,
+						"label": "开江县"
+					},
+					{
+						"value": 511724,
+						"label": "大竹县"
+					},
+					{
+						"value": 511725,
+						"label": "渠县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2406,
+				"value": 511800,
+				"label": "雅安市",
+				"children": [{
+						"value": 511802,
+						"label": "雨城区"
+					},
+					{
+						"value": 511803,
+						"label": "名山区"
+					},
+					{
+						"value": 511822,
+						"label": "荥经县"
+					},
+					{
+						"value": 511823,
+						"label": "汉源县"
+					},
+					{
+						"value": 511824,
+						"label": "石棉县"
+					},
+					{
+						"value": 511825,
+						"label": "天全县"
+					},
+					{
+						"value": 511826,
+						"label": "芦山县"
+					},
+					{
+						"value": 511827,
+						"label": "宝兴县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2415,
+				"value": 511900,
+				"label": "巴中市",
+				"children": [{
+						"value": 511902,
+						"label": "巴州区"
+					},
+					{
+						"value": 511903,
+						"label": "恩阳区"
+					},
+					{
+						"value": 511921,
+						"label": "通江县"
+					},
+					{
+						"value": 511922,
+						"label": "南江县"
+					},
+					{
+						"value": 511923,
+						"label": "平昌县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2421,
+				"value": 512000,
+				"label": "资阳市",
+				"children": [{
+						"value": 512002,
+						"label": "雁江区"
+					},
+					{
+						"value": 512022,
+						"label": "乐至县"
+					},
+					{
+						"value": 512021,
+						"label": "安岳县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2425,
+				"value": 513200,
+				"label": "阿坝藏族羌族自治州",
+				"children": [{
+						"value": 513201,
+						"label": "马尔康市"
+					},
+					{
+						"value": 513221,
+						"label": "汶川县"
+					},
+					{
+						"value": 513222,
+						"label": "理县"
+					},
+					{
+						"value": 513223,
+						"label": "茂县"
+					},
+					{
+						"value": 513224,
+						"label": "松潘县"
+					},
+					{
+						"value": 513225,
+						"label": "九寨沟县"
+					},
+					{
+						"value": 513226,
+						"label": "金川县"
+					},
+					{
+						"value": 513227,
+						"label": "小金县"
+					},
+					{
+						"value": 513228,
+						"label": "黑水县"
+					},
+					{
+						"value": 513230,
+						"label": "壤塘县"
+					},
+					{
+						"value": 513231,
+						"label": "阿坝县"
+					},
+					{
+						"value": 513232,
+						"label": "若尔盖县"
+					},
+					{
+						"value": 513233,
+						"label": "红原县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2439,
+				"value": 513300,
+				"label": "甘孜藏族自治州",
+				"children": [{
+						"value": 513301,
+						"label": "康定市"
+					},
+					{
+						"value": 513322,
+						"label": "泸定县"
+					},
+					{
+						"value": 513323,
+						"label": "丹巴县"
+					},
+					{
+						"value": 513324,
+						"label": "九龙县"
+					},
+					{
+						"value": 513325,
+						"label": "雅江县"
+					},
+					{
+						"value": 513326,
+						"label": "道孚县"
+					},
+					{
+						"value": 513327,
+						"label": "炉霍县"
+					},
+					{
+						"value": 513328,
+						"label": "甘孜县"
+					},
+					{
+						"value": 513329,
+						"label": "新龙县"
+					},
+					{
+						"value": 513330,
+						"label": "德格县"
+					},
+					{
+						"value": 513331,
+						"label": "白玉县"
+					},
+					{
+						"value": 513332,
+						"label": "石渠县"
+					},
+					{
+						"value": 513333,
+						"label": "色达县"
+					},
+					{
+						"value": 513334,
+						"label": "理塘县"
+					},
+					{
+						"value": 513335,
+						"label": "巴塘县"
+					},
+					{
+						"value": 513336,
+						"label": "乡城县"
+					},
+					{
+						"value": 513337,
+						"label": "稻城县"
+					},
+					{
+						"value": 513338,
+						"label": "得荣县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2458,
+				"value": 513400,
+				"label": "凉山彝族自治州",
+				"children": [{
+						"value": 513401,
+						"label": "西昌市"
+					},
+					{
+						"value": 513423,
+						"label": "盐源县"
+					},
+					{
+						"value": 513424,
+						"label": "德昌县"
+					},
+					{
+						"value": 513425,
+						"label": "会理县"
+					},
+					{
+						"value": 513426,
+						"label": "会东县"
+					},
+					{
+						"value": 513427,
+						"label": "宁南县"
+					},
+					{
+						"value": 513428,
+						"label": "普格县"
+					},
+					{
+						"value": 513429,
+						"label": "布拖县"
+					},
+					{
+						"value": 513430,
+						"label": "金阳县"
+					},
+					{
+						"value": 513431,
+						"label": "昭觉县"
+					},
+					{
+						"value": 513432,
+						"label": "喜德县"
+					},
+					{
+						"value": 513433,
+						"label": "冕宁县"
+					},
+					{
+						"value": 513434,
+						"label": "越西县"
+					},
+					{
+						"value": 513435,
+						"label": "甘洛县"
+					},
+					{
+						"value": 513436,
+						"label": "美姑县"
+					},
+					{
+						"value": 513437,
+						"label": "雷波县"
+					},
+					{
+						"value": 513422,
+						"label": "木里藏族自治县"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 510000,
+		"label": "四川省",
+		"expand": "true"
+	},
+	{
+		"id": 2476,
+		"children": [{
+				"id": 2477,
+				"value": 520100,
+				"label": "贵阳市",
+				"children": [{
+						"value": 520112,
+						"label": "乌当区"
+					},
+					{
+						"value": 520102,
+						"label": "南明区"
+					},
+					{
+						"value": 520103,
+						"label": "云岩区"
+					},
+					{
+						"value": 520111,
+						"label": "花溪区"
+					},
+					{
+						"value": 520113,
+						"label": "白云区"
+					},
+					{
+						"value": 520115,
+						"label": "观山湖区"
+					},
+					{
+						"value": 520181,
+						"label": "清镇市"
+					},
+					{
+						"value": 520121,
+						"label": "开阳县"
+					},
+					{
+						"value": 520122,
+						"label": "息烽县"
+					},
+					{
+						"value": 520123,
+						"label": "修文县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2488,
+				"value": 520200,
+				"label": "六盘水市",
+				"children": [{
+						"value": 520201,
+						"label": "钟山区"
+					},
+					{
+						"value": 520281,
+						"label": "盘州市"
+					},
+					{
+						"value": 520221,
+						"label": "水城县"
+					},
+					{
+						"value": 520203,
+						"label": "六枝特区"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2493,
+				"value": 520300,
+				"label": "遵义市",
+				"children": [{
+						"value": 520303,
+						"label": "汇川区"
+					},
+					{
+						"value": 520302,
+						"label": "红花岗区"
+					},
+					{
+						"value": 520304,
+						"label": "播州区"
+					},
+					{
+						"value": 520381,
+						"label": "赤水市"
+					},
+					{
+						"value": 520382,
+						"label": "仁怀市"
+					},
+					{
+						"value": 520322,
+						"label": "桐梓县"
+					},
+					{
+						"value": 520323,
+						"label": "绥阳县"
+					},
+					{
+						"value": 520324,
+						"label": "正安县"
+					},
+					{
+						"value": 520327,
+						"label": "凤冈县"
+					},
+					{
+						"value": 520328,
+						"label": "湄潭县"
+					},
+					{
+						"value": 520329,
+						"label": "余庆县"
+					},
+					{
+						"value": 520330,
+						"label": "习水县"
+					},
+					{
+						"value": 520325,
+						"label": "道真仡佬族苗族自治县"
+					},
+					{
+						"value": 520326,
+						"label": "务川仡佬族苗族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2508,
+				"value": 520400,
+				"label": "安顺市",
+				"children": [{
+						"value": 520402,
+						"label": "西秀区"
+					},
+					{
+						"value": 520403,
+						"label": "平坝区"
+					},
+					{
+						"value": 520422,
+						"label": "普定县"
+					},
+					{
+						"value": 520423,
+						"label": "镇宁布依族苗族自治县"
+					},
+					{
+						"value": 520424,
+						"label": "关岭布依族苗族自治县"
+					},
+					{
+						"value": 520425,
+						"label": "紫云苗族布依族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2515,
+				"value": 520500,
+				"label": "毕节市",
+				"children": [{
+						"value": 520502,
+						"label": "七星关区"
+					},
+					{
+						"value": 520521,
+						"label": "大方县"
+					},
+					{
+						"value": 520522,
+						"label": "黔西县"
+					},
+					{
+						"value": 520523,
+						"label": "金沙县"
+					},
+					{
+						"value": 520524,
+						"label": "织金县"
+					},
+					{
+						"value": 520525,
+						"label": "纳雍县"
+					},
+					{
+						"value": 520527,
+						"label": "赫章县"
+					},
+					{
+						"value": 520526,
+						"label": "威宁彝族回族苗族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2524,
+				"value": 520600,
+				"label": "铜仁市",
+				"children": [{
+						"value": 520602,
+						"label": "碧江区"
+					},
+					{
+						"value": 520603,
+						"label": "万山区"
+					},
+					{
+						"value": 520621,
+						"label": "江口县"
+					},
+					{
+						"value": 520623,
+						"label": "石阡县"
+					},
+					{
+						"value": 520624,
+						"label": "思南县"
+					},
+					{
+						"value": 520626,
+						"label": "德江县"
+					},
+					{
+						"value": 520622,
+						"label": "玉屏侗族自治县"
+					},
+					{
+						"value": 520625,
+						"label": "印江土家族苗族自治县"
+					},
+					{
+						"value": 520627,
+						"label": "沿河土家族自治县"
+					},
+					{
+						"value": 520628,
+						"label": "松桃苗族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2535,
+				"value": 522300,
+				"label": "黔西南布依族苗族自治州",
+				"children": [{
+						"value": 522301,
+						"label": "兴义市"
+					},
+					{
+						"value": 522322,
+						"label": "兴仁县"
+					},
+					{
+						"value": 522323,
+						"label": "普安县"
+					},
+					{
+						"value": 522324,
+						"label": "晴隆县"
+					},
+					{
+						"value": 522325,
+						"label": "贞丰县"
+					},
+					{
+						"value": 522326,
+						"label": "望谟县"
+					},
+					{
+						"value": 522327,
+						"label": "册亨县"
+					},
+					{
+						"value": 522328,
+						"label": "安龙县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2544,
+				"value": 522600,
+				"label": "黔东南苗族侗族自治州",
+				"children": [{
+						"value": 522601,
+						"label": "凯里市"
+					},
+					{
+						"value": 522622,
+						"label": "黄平县"
+					},
+					{
+						"value": 522623,
+						"label": "施秉县"
+					},
+					{
+						"value": 522624,
+						"label": "三穗县"
+					},
+					{
+						"value": 522625,
+						"label": "镇远县"
+					},
+					{
+						"value": 522626,
+						"label": "岑巩县"
+					},
+					{
+						"value": 522627,
+						"label": "天柱县"
+					},
+					{
+						"value": 522628,
+						"label": "锦屏县"
+					},
+					{
+						"value": 522629,
+						"label": "剑河县"
+					},
+					{
+						"value": 522630,
+						"label": "台江县"
+					},
+					{
+						"value": 522631,
+						"label": "黎平县"
+					},
+					{
+						"value": 522632,
+						"label": "榕江县"
+					},
+					{
+						"value": 522633,
+						"label": "从江县"
+					},
+					{
+						"value": 522634,
+						"label": "雷山县"
+					},
+					{
+						"value": 522635,
+						"label": "麻江县"
+					},
+					{
+						"value": 522636,
+						"label": "丹寨县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2561,
+				"value": 522700,
+				"label": "黔南布依族苗族自治州",
+				"children": [{
+						"value": 522701,
+						"label": "都匀市"
+					},
+					{
+						"value": 522702,
+						"label": "福泉市"
+					},
+					{
+						"value": 522722,
+						"label": "荔波县"
+					},
+					{
+						"value": 522723,
+						"label": "贵定县"
+					},
+					{
+						"value": 522725,
+						"label": "瓮安县"
+					},
+					{
+						"value": 522726,
+						"label": "独山县"
+					},
+					{
+						"value": 522727,
+						"label": "平塘县"
+					},
+					{
+						"value": 522728,
+						"label": "罗甸县"
+					},
+					{
+						"value": 522729,
+						"label": "长顺县"
+					},
+					{
+						"value": 522730,
+						"label": "龙里县"
+					},
+					{
+						"value": 522731,
+						"label": "惠水县"
+					},
+					{
+						"value": 522732,
+						"label": "三都水族自治县"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 520000,
+		"label": "贵州省",
+		"expand": "true"
+	},
+	{
+		"id": 2574,
+		"children": [{
+				"id": 2575,
+				"value": 530100,
+				"label": "昆明市",
+				"children": [{
+						"value": 530114,
+						"label": "呈贡区"
+					},
+					{
+						"value": 530102,
+						"label": "五华区"
+					},
+					{
+						"value": 530103,
+						"label": "盘龙区"
+					},
+					{
+						"value": 530111,
+						"label": "官渡区"
+					},
+					{
+						"value": 530112,
+						"label": "西山区"
+					},
+					{
+						"value": 530113,
+						"label": "东川区"
+					},
+					{
+						"value": 530115,
+						"label": "晋宁区"
+					},
+					{
+						"value": 530181,
+						"label": "安宁市"
+					},
+					{
+						"value": 530124,
+						"label": "富民县"
+					},
+					{
+						"value": 530125,
+						"label": "宜良县"
+					},
+					{
+						"value": 530127,
+						"label": "嵩明县"
+					},
+					{
+						"value": 530126,
+						"label": "石林彝族自治县"
+					},
+					{
+						"value": 530128,
+						"label": "禄劝彝族苗族自治县"
+					},
+					{
+						"value": 530129,
+						"label": "寻甸回族彝族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2590,
+				"value": 530300,
+				"label": "曲靖市",
+				"children": [{
+						"value": 530302,
+						"label": "麒麟区"
+					},
+					{
+						"value": 530303,
+						"label": "沾益区"
+					},
+					{
+						"value": 530381,
+						"label": "宣威市"
+					},
+					{
+						"value": 530321,
+						"label": "马龙县"
+					},
+					{
+						"value": 530322,
+						"label": "陆良县"
+					},
+					{
+						"value": 530323,
+						"label": "师宗县"
+					},
+					{
+						"value": 530324,
+						"label": "罗平县"
+					},
+					{
+						"value": 530325,
+						"label": "富源县"
+					},
+					{
+						"value": 530326,
+						"label": "会泽县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2600,
+				"value": 530400,
+				"label": "玉溪市",
+				"children": [{
+						"value": 530402,
+						"label": "红塔区"
+					},
+					{
+						"value": 530403,
+						"label": "江川区"
+					},
+					{
+						"value": 530422,
+						"label": "澄江县"
+					},
+					{
+						"value": 530423,
+						"label": "通海县"
+					},
+					{
+						"value": 530424,
+						"label": "华宁县"
+					},
+					{
+						"value": 530425,
+						"label": "易门县"
+					},
+					{
+						"value": 530426,
+						"label": "峨山彝族自治县"
+					},
+					{
+						"value": 530427,
+						"label": "新平彝族傣族自治县"
+					},
+					{
+						"value": 530428,
+						"label": "元江哈尼族彝族傣族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2610,
+				"value": 530500,
+				"label": "保山市",
+				"children": [{
+						"value": 530502,
+						"label": "隆阳区"
+					},
+					{
+						"value": 530581,
+						"label": "腾冲市"
+					},
+					{
+						"value": 530521,
+						"label": "施甸县"
+					},
+					{
+						"value": 530523,
+						"label": "龙陵县"
+					},
+					{
+						"value": 530524,
+						"label": "昌宁县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2616,
+				"value": 530600,
+				"label": "昭通市",
+				"children": [{
+						"value": 530602,
+						"label": "昭阳区"
+					},
+					{
+						"value": 530621,
+						"label": "鲁甸县"
+					},
+					{
+						"value": 530622,
+						"label": "巧家县"
+					},
+					{
+						"value": 530623,
+						"label": "盐津�����"
+					},
+					{
+						"value": 530624,
+						"label": "���关县"
+					},
+					{
+						"value": 530625,
+						"label": "永善县"
+					},
+					{
+						"value": 530626,
+						"label": "绥江县"
+					},
+					{
+						"value": 530627,
+						"label": "镇雄县"
+					},
+					{
+						"value": 530628,
+						"label": "彝良县"
+					},
+					{
+						"value": 530629,
+						"label": "威信县"
+					},
+					{
+						"value": 530630,
+						"label": "水富县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2628,
+				"value": 530700,
+				"label": "丽江市",
+				"children": [{
+						"value": 530702,
+						"label": "古城区"
+					},
+					{
+						"value": 530722,
+						"label": "永胜县"
+					},
+					{
+						"value": 530723,
+						"label": "华坪县"
+					},
+					{
+						"value": 530721,
+						"label": "玉龙纳西族自治县"
+					},
+					{
+						"value": 530724,
+						"label": "宁蒗彝族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2634,
+				"value": 530800,
+				"label": "普洱市",
+				"children": [{
+						"value": 530802,
+						"label": "思茅区"
+					},
+					{
+						"value": 530821,
+						"label": "宁洱哈尼族彝族自治县"
+					},
+					{
+						"value": 530822,
+						"label": "墨江哈尼族自治县"
+					},
+					{
+						"value": 530823,
+						"label": "景东彝族自治县"
+					},
+					{
+						"value": 530824,
+						"label": "景谷傣族彝族自治县"
+					},
+					{
+						"value": 530825,
+						"label": "镇沅彝族哈尼族拉祜族自治县"
+					},
+					{
+						"value": 530826,
+						"label": "江城哈尼族彝族自治县"
+					},
+					{
+						"value": 530827,
+						"label": "孟连傣族拉祜族佤族自治县"
+					},
+					{
+						"value": 530828,
+						"label": "澜沧拉祜族自治县"
+					},
+					{
+						"value": 530829,
+						"label": "西盟佤族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2645,
+				"value": 530900,
+				"label": "临沧市",
+				"children": [{
+						"value": 530902,
+						"label": "临翔区"
+					},
+					{
+						"value": 530921,
+						"label": "凤庆县"
+					},
+					{
+						"value": 530922,
+						"label": "云县"
+					},
+					{
+						"value": 530923,
+						"label": "永德县"
+					},
+					{
+						"value": 530924,
+						"label": "镇康县"
+					},
+					{
+						"value": 530925,
+						"label": "双江拉祜族佤族布朗族傣族自治县"
+					},
+					{
+						"value": 530926,
+						"label": "耿马傣族佤族自治县"
+					},
+					{
+						"value": 530927,
+						"label": "沧源佤族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2654,
+				"value": 532300,
+				"label": "楚雄彝族自治州",
+				"children": [{
+						"value": 532301,
+						"label": "楚雄市"
+					},
+					{
+						"value": 532322,
+						"label": "双柏县"
+					},
+					{
+						"value": 532323,
+						"label": "牟定县"
+					},
+					{
+						"value": 532324,
+						"label": "南华县"
+					},
+					{
+						"value": 532325,
+						"label": "姚安县"
+					},
+					{
+						"value": 532326,
+						"label": "大姚县"
+					},
+					{
+						"value": 532327,
+						"label": "永仁县"
+					},
+					{
+						"value": 532328,
+						"label": "元谋县"
+					},
+					{
+						"value": 532329,
+						"label": "武定县"
+					},
+					{
+						"value": 532331,
+						"label": "禄丰县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2665,
+				"value": 532500,
+				"label": "红河哈尼族彝族自治州",
+				"children": [{
+						"value": 532503,
+						"label": "蒙自市"
+					},
+					{
+						"value": 532501,
+						"label": "个旧市"
+					},
+					{
+						"value": 532502,
+						"label": "开远市"
+					},
+					{
+						"value": 532504,
+						"label": "弥勒市"
+					},
+					{
+						"value": 532524,
+						"label": "建水县"
+					},
+					{
+						"value": 532525,
+						"label": "石屏县"
+					},
+					{
+						"value": 532527,
+						"label": "泸西县"
+					},
+					{
+						"value": 532528,
+						"label": "元阳县"
+					},
+					{
+						"value": 532529,
+						"label": "红河县"
+					},
+					{
+						"value": 532531,
+						"label": "绿春县"
+					},
+					{
+						"value": 532523,
+						"label": "屏边苗族自治县"
+					},
+					{
+						"value": 532530,
+						"label": "金平苗族瑶族傣族自治县"
+					},
+					{
+						"value": 532532,
+						"label": "河口瑶族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2679,
+				"value": 532600,
+				"label": "文山壮族苗族自治州",
+				"children": [{
+						"value": 532601,
+						"label": "文山市"
+					},
+					{
+						"value": 532622,
+						"label": "砚山县"
+					},
+					{
+						"value": 532623,
+						"label": "西畴县"
+					},
+					{
+						"value": 532624,
+						"label": "麻栗坡县"
+					},
+					{
+						"value": 532625,
+						"label": "马关县"
+					},
+					{
+						"value": 532626,
+						"label": "丘北县"
+					},
+					{
+						"value": 532627,
+						"label": "广南县"
+					},
+					{
+						"value": 532628,
+						"label": "富宁县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2688,
+				"value": 532800,
+				"label": "西双版纳傣族自治州",
+				"children": [{
+						"value": 532801,
+						"label": "景洪市"
+					},
+					{
+						"value": 532822,
+						"label": "勐海县"
+					},
+					{
+						"value": 532823,
+						"label": "勐腊县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2692,
+				"value": 532900,
+				"label": "大理白族自治州",
+				"children": [{
+						"value": 532901,
+						"label": "大理市"
+					},
+					{
+						"value": 532923,
+						"label": "祥云县"
+					},
+					{
+						"value": 532924,
+						"label": "宾川县"
+					},
+					{
+						"value": 532925,
+						"label": "弥渡县"
+					},
+					{
+						"value": 532928,
+						"label": "永平县"
+					},
+					{
+						"value": 532929,
+						"label": "云龙县"
+					},
+					{
+						"value": 532930,
+						"label": "洱源县"
+					},
+					{
+						"value": 532931,
+						"label": "剑川县"
+					},
+					{
+						"value": 532932,
+						"label": "鹤庆县"
+					},
+					{
+						"value": 532922,
+						"label": "漾濞彝族自治县"
+					},
+					{
+						"value": 532926,
+						"label": "南涧彝族自治县"
+					},
+					{
+						"value": 532927,
+						"label": "巍山彝族回族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2705,
+				"value": 533100,
+				"label": "德宏傣族景颇族自治州",
+				"children": [{
+						"value": 533103,
+						"label": "芒市"
+					},
+					{
+						"value": 533102,
+						"label": "瑞丽市"
+					},
+					{
+						"value": 533122,
+						"label": "梁河县"
+					},
+					{
+						"value": 533123,
+						"label": "盈江县"
+					},
+					{
+						"value": 533124,
+						"label": "陇川县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2711,
+				"value": 533300,
+				"label": "怒江傈僳族自治州",
+				"children": [{
+						"value": 533301,
+						"label": "泸水市"
+					},
+					{
+						"value": 533323,
+						"label": "福贡县"
+					},
+					{
+						"value": 533324,
+						"label": "贡山独龙族怒族自治县"
+					},
+					{
+						"value": 533325,
+						"label": "兰坪白族普米族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2716,
+				"value": 533400,
+				"label": "迪庆藏族自治州",
+				"children": [{
+						"value": 533401,
+						"label": "香格里拉市"
+					},
+					{
+						"value": 533422,
+						"label": "德钦县"
+					},
+					{
+						"value": 533423,
+						"label": "维西傈僳族自治县"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 530000,
+		"label": "云南省",
+		"expand": "true"
+	},
+	{
+		"id": 2720,
+		"children": [{
+				"id": 2721,
+				"value": 540100,
+				"label": "拉萨市",
+				"children": [{
+						"value": 540102,
+						"label": "城关区"
+					},
+					{
+						"value": 540121,
+						"label": "林周县"
+					},
+					{
+						"value": 540122,
+						"label": "当雄县"
+					},
+					{
+						"value": 540123,
+						"label": "尼木县"
+					},
+					{
+						"value": 540124,
+						"label": "曲水县"
+					},
+					{
+						"value": 540103,
+						"label": "堆龙德庆区"
+					},
+					{
+						"value": 540126,
+						"label": "达孜县"
+					},
+					{
+						"value": 540127,
+						"label": "墨竹工卡县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2730,
+				"value": 540200,
+				"label": "日喀则市",
+				"children": [{
+						"value": 540202,
+						"label": "桑珠孜区"
+					},
+					{
+						"value": 540221,
+						"label": "南木林县"
+					},
+					{
+						"value": 540222,
+						"label": "江孜县"
+					},
+					{
+						"value": 540223,
+						"label": "定日县"
+					},
+					{
+						"value": 540224,
+						"label": "萨迦县"
+					},
+					{
+						"value": 540225,
+						"label": "拉孜县"
+					},
+					{
+						"value": 540226,
+						"label": "昂仁县"
+					},
+					{
+						"value": 540227,
+						"label": "谢通门县"
+					},
+					{
+						"value": 540228,
+						"label": "白朗县"
+					},
+					{
+						"value": 540229,
+						"label": "仁布县"
+					},
+					{
+						"value": 540230,
+						"label": "康马县"
+					},
+					{
+						"value": 540231,
+						"label": "定结县"
+					},
+					{
+						"value": 540232,
+						"label": "仲巴县"
+					},
+					{
+						"value": 540233,
+						"label": "亚东县"
+					},
+					{
+						"value": 540234,
+						"label": "吉隆县"
+					},
+					{
+						"value": 540235,
+						"label": "聂拉木县"
+					},
+					{
+						"value": 540236,
+						"label": "萨嘎县"
+					},
+					{
+						"value": 540237,
+						"label": "岗巴县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2749,
+				"value": 540300,
+				"label": "昌都市",
+				"children": [{
+						"value": 540302,
+						"label": "卡若区"
+					},
+					{
+						"value": 540321,
+						"label": "江达县"
+					},
+					{
+						"value": 540322,
+						"label": "贡觉县"
+					},
+					{
+						"value": 540323,
+						"label": "类乌齐县"
+					},
+					{
+						"value": 540324,
+						"label": "丁青县"
+					},
+					{
+						"value": 540325,
+						"label": "察雅县"
+					},
+					{
+						"value": 540326,
+						"label": "八宿县"
+					},
+					{
+						"value": 540327,
+						"label": "左贡县"
+					},
+					{
+						"value": 540328,
+						"label": "芒康县"
+					},
+					{
+						"value": 540329,
+						"label": "洛隆县"
+					},
+					{
+						"value": 540330,
+						"label": "边坝县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2761,
+				"value": 540400,
+				"label": "林芝市",
+				"children": [{
+						"value": 540402,
+						"label": "巴宜区"
+					},
+					{
+						"value": 540421,
+						"label": "工布江达县"
+					},
+					{
+						"value": 540422,
+						"label": "米林县"
+					},
+					{
+						"value": 540423,
+						"label": "墨脱县"
+					},
+					{
+						"value": 540424,
+						"label": "波密县"
+					},
+					{
+						"value": 540425,
+						"label": "察隅县"
+					},
+					{
+						"value": 540426,
+						"label": "朗县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2769,
+				"value": 540500,
+				"label": "山南市",
+				"children": [{
+						"value": 540502,
+						"label": "乃东区"
+					},
+					{
+						"value": 540521,
+						"label": "扎囊县"
+					},
+					{
+						"value": 540522,
+						"label": "贡嘎县"
+					},
+					{
+						"value": 540523,
+						"label": "桑日县"
+					},
+					{
+						"value": 540524,
+						"label": "琼结县"
+					},
+					{
+						"value": 540525,
+						"label": "曲松县"
+					},
+					{
+						"value": 540526,
+						"label": "措美县"
+					},
+					{
+						"value": 540527,
+						"label": "洛扎县"
+					},
+					{
+						"value": 540528,
+						"label": "加查县"
+					},
+					{
+						"value": 540529,
+						"label": "隆子县"
+					},
+					{
+						"value": 540530,
+						"label": "错那县"
+					},
+					{
+						"value": 540531,
+						"label": "浪卡子县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2782,
+				"value": 542400,
+				"label": "那曲地区",
+				"children": [{
+						"value": 542421,
+						"label": "那曲县"
+					},
+					{
+						"value": 542422,
+						"label": "嘉黎县"
+					},
+					{
+						"value": 542423,
+						"label": "比如县"
+					},
+					{
+						"value": 542424,
+						"label": "聂荣县"
+					},
+					{
+						"value": 542425,
+						"label": "安多县"
+					},
+					{
+						"value": 542426,
+						"label": "申扎县"
+					},
+					{
+						"value": 542427,
+						"label": "索县"
+					},
+					{
+						"value": 542428,
+						"label": "班戈县"
+					},
+					{
+						"value": 542429,
+						"label": "巴青县"
+					},
+					{
+						"value": 542430,
+						"label": "尼玛县"
+					},
+					{
+						"value": 542431,
+						"label": "双湖县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2794,
+				"value": 542500,
+				"label": "阿里地区",
+				"children": [{
+						"value": 542523,
+						"label": "噶尔县"
+					},
+					{
+						"value": 542521,
+						"label": "普兰县"
+					},
+					{
+						"value": 542522,
+						"label": "札达县"
+					},
+					{
+						"value": 542524,
+						"label": "日土县"
+					},
+					{
+						"value": 542525,
+						"label": "革吉县"
+					},
+					{
+						"value": 542526,
+						"label": "改则县"
+					},
+					{
+						"value": 542527,
+						"label": "措勤县"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 540000,
+		"label": "西藏自治区",
+		"expand": "true"
+	},
+	{
+		"id": 2802,
+		"children": [{
+				"id": 2803,
+				"value": 610100,
+				"label": "西安市",
+				"children": [{
+						"value": 610112,
+						"label": "未央区"
+					},
+					{
+						"value": 610102,
+						"label": "新城区"
+					},
+					{
+						"value": 610103,
+						"label": "碑林区"
+					},
+					{
+						"value": 610104,
+						"label": "莲湖区"
+					},
+					{
+						"value": 610111,
+						"label": "灞桥区"
+					},
+					{
+						"value": 610113,
+						"label": "雁塔区"
+					},
+					{
+						"value": 610114,
+						"label": "阎良区"
+					},
+					{
+						"value": 610115,
+						"label": "临潼区"
+					},
+					{
+						"value": 610116,
+						"label": "长安区"
+					},
+					{
+						"value": 610117,
+						"label": "高陵区"
+					},
+					{
+						"value": 610118,
+						"label": "鄠邑区"
+					},
+					{
+						"value": 610122,
+						"label": "蓝田县"
+					},
+					{
+						"value": 610124,
+						"label": "周至县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2817,
+				"value": 610200,
+				"label": "铜川市",
+				"children": [{
+						"value": 610204,
+						"label": "耀州区"
+					},
+					{
+						"value": 610202,
+						"label": "王益区"
+					},
+					{
+						"value": 610203,
+						"label": "印台区"
+					},
+					{
+						"value": 610222,
+						"label": "宜君县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2822,
+				"value": 610300,
+				"label": "宝鸡市",
+				"children": [{
+						"value": 610303,
+						"label": "金台区"
+					},
+					{
+						"value": 610302,
+						"label": "渭滨区"
+					},
+					{
+						"value": 610304,
+						"label": "陈仓区"
+					},
+					{
+						"value": 610322,
+						"label": "凤翔县"
+					},
+					{
+						"value": 610323,
+						"label": "岐山县"
+					},
+					{
+						"value": 610324,
+						"label": "扶风县"
+					},
+					{
+						"value": 610326,
+						"label": "眉县"
+					},
+					{
+						"value": 610327,
+						"label": "陇县"
+					},
+					{
+						"value": 610328,
+						"label": "千阳县"
+					},
+					{
+						"value": 610329,
+						"label": "麟游县"
+					},
+					{
+						"value": 610330,
+						"label": "凤县"
+					},
+					{
+						"value": 610331,
+						"label": "太白县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2835,
+				"value": 610400,
+				"label": "咸阳市",
+				"children": [{
+						"value": 610402,
+						"label": "秦都区"
+					},
+					{
+						"value": 610403,
+						"label": "杨陵区"
+					},
+					{
+						"value": 610404,
+						"label": "渭城区"
+					},
+					{
+						"value": 610481,
+						"label": "兴平市"
+					},
+					{
+						"value": 610422,
+						"label": "三原县"
+					},
+					{
+						"value": 610423,
+						"label": "泾阳县"
+					},
+					{
+						"value": 610424,
+						"label": "乾县"
+					},
+					{
+						"value": 610425,
+						"label": "礼泉县"
+					},
+					{
+						"value": 610426,
+						"label": "永寿县"
+					},
+					{
+						"value": 610427,
+						"label": "彬县"
+					},
+					{
+						"value": 610428,
+						"label": "长武县"
+					},
+					{
+						"value": 610429,
+						"label": "旬邑县"
+					},
+					{
+						"value": 610430,
+						"label": "淳化县"
+					},
+					{
+						"value": 610431,
+						"label": "武功县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2850,
+				"value": 610500,
+				"label": "渭南市",
+				"children": [{
+						"value": 610502,
+						"label": "临渭区"
+					},
+					{
+						"value": 610581,
+						"label": "韩城市"
+					},
+					{
+						"value": 610582,
+						"label": "华阴市"
+					},
+					{
+						"value": 610503,
+						"label": "华州区"
+					},
+					{
+						"value": 610522,
+						"label": "潼关县"
+					},
+					{
+						"value": 610523,
+						"label": "大荔县"
+					},
+					{
+						"value": 610524,
+						"label": "合阳县"
+					},
+					{
+						"value": 610525,
+						"label": "澄城县"
+					},
+					{
+						"value": 610526,
+						"label": "蒲城县"
+					},
+					{
+						"value": 610527,
+						"label": "白水县"
+					},
+					{
+						"value": 610528,
+						"label": "富平县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2862,
+				"value": 610600,
+				"label": "延安市",
+				"children": [{
+						"value": 610602,
+						"label": "宝塔区"
+					},
+					{
+						"value": 610603,
+						"label": "安塞区"
+					},
+					{
+						"value": 610621,
+						"label": "延长县"
+					},
+					{
+						"value": 610622,
+						"label": "延川县"
+					},
+					{
+						"value": 610623,
+						"label": "子长县"
+					},
+					{
+						"value": 610625,
+						"label": "志丹县"
+					},
+					{
+						"value": 610626,
+						"label": "吴起县"
+					},
+					{
+						"value": 610627,
+						"label": "甘泉县"
+					},
+					{
+						"value": 610628,
+						"label": "富县"
+					},
+					{
+						"value": 610629,
+						"label": "洛川县"
+					},
+					{
+						"value": 610630,
+						"label": "宜川县"
+					},
+					{
+						"value": 610631,
+						"label": "黄龙县"
+					},
+					{
+						"value": 610632,
+						"label": "黄陵县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2876,
+				"value": 610700,
+				"label": "汉中市",
+				"children": [{
+						"value": 610702,
+						"label": "汉台区"
+					},
+					{
+						"value": 610721,
+						"label": "南郑县"
+					},
+					{
+						"value": 610722,
+						"label": "城固县"
+					},
+					{
+						"value": 610723,
+						"label": "洋县"
+					},
+					{
+						"value": 610724,
+						"label": "西乡县"
+					},
+					{
+						"value": 610725,
+						"label": "勉县"
+					},
+					{
+						"value": 610726,
+						"label": "宁强县"
+					},
+					{
+						"value": 610727,
+						"label": "略阳县"
+					},
+					{
+						"value": 610728,
+						"label": "镇巴县"
+					},
+					{
+						"value": 610729,
+						"label": "留坝县"
+					},
+					{
+						"value": 610730,
+						"label": "佛坪县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2888,
+				"value": 610800,
+				"label": "榆林市",
+				"children": [{
+						"value": 610802,
+						"label": "榆阳区"
+					},
+					{
+						"value": 610881,
+						"label": "神木市"
+					},
+					{
+						"value": 610822,
+						"label": "府谷县"
+					},
+					{
+						"value": 610803,
+						"label": "横山区"
+					},
+					{
+						"value": 610824,
+						"label": "靖边县"
+					},
+					{
+						"value": 610825,
+						"label": "定边县"
+					},
+					{
+						"value": 610826,
+						"label": "绥德县"
+					},
+					{
+						"value": 610827,
+						"label": "米脂县"
+					},
+					{
+						"value": 610828,
+						"label": "佳县"
+					},
+					{
+						"value": 610829,
+						"label": "吴堡县"
+					},
+					{
+						"value": 610830,
+						"label": "清涧县"
+					},
+					{
+						"value": 610831,
+						"label": "子洲县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2901,
+				"value": 610900,
+				"label": "安康市",
+				"children": [{
+						"value": 610902,
+						"label": "汉滨区"
+					},
+					{
+						"value": 610921,
+						"label": "汉阴县"
+					},
+					{
+						"value": 610922,
+						"label": "石泉县"
+					},
+					{
+						"value": 610923,
+						"label": "宁陕县"
+					},
+					{
+						"value": 610924,
+						"label": "紫阳县"
+					},
+					{
+						"value": 610925,
+						"label": "岚皋县"
+					},
+					{
+						"value": 610926,
+						"label": "平利县"
+					},
+					{
+						"value": 610927,
+						"label": "镇坪县"
+					},
+					{
+						"value": 610928,
+						"label": "旬阳县"
+					},
+					{
+						"value": 610929,
+						"label": "白河县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2912,
+				"value": 611000,
+				"label": "商洛市",
+				"children": [{
+						"value": 611002,
+						"label": "商州区"
+					},
+					{
+						"value": 611021,
+						"label": "洛南县"
+					},
+					{
+						"value": 611022,
+						"label": "丹凤县"
+					},
+					{
+						"value": 611023,
+						"label": "商南县"
+					},
+					{
+						"value": 611024,
+						"label": "山阳县"
+					},
+					{
+						"value": 611025,
+						"label": "镇安县"
+					},
+					{
+						"value": 611026,
+						"label": "柞水县"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 610000,
+		"label": "陕西省",
+		"expand": "true"
+	},
+	{
+		"id": 2920,
+		"children": [{
+				"id": 2921,
+				"value": 620100,
+				"label": "兰州市",
+				"children": [{
+						"value": 620102,
+						"label": "城关区"
+					},
+					{
+						"value": 620103,
+						"label": "七里河区"
+					},
+					{
+						"value": 620104,
+						"label": "西固区"
+					},
+					{
+						"value": 620105,
+						"label": "安宁区"
+					},
+					{
+						"value": 620111,
+						"label": "红古区"
+					},
+					{
+						"value": 620121,
+						"label": "永登县"
+					},
+					{
+						"value": 620122,
+						"label": "皋兰县"
+					},
+					{
+						"value": 620123,
+						"label": "榆中县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2930,
+				"value": 620200,
+				"label": "嘉峪关市",
+				"children": []
+			},
+			{
+				"id": 2931,
+				"value": 620300,
+				"label": "金昌市",
+				"children": [{
+						"value": 620302,
+						"label": "金川区"
+					},
+					{
+						"value": 620321,
+						"label": "永昌县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2934,
+				"value": 620400,
+				"label": "白银市",
+				"children": [{
+						"value": 620402,
+						"label": "白银区"
+					},
+					{
+						"value": 620403,
+						"label": "平川区"
+					},
+					{
+						"value": 620421,
+						"label": "靖远县"
+					},
+					{
+						"value": 620422,
+						"label": "会宁县"
+					},
+					{
+						"value": 620423,
+						"label": "景泰县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2940,
+				"value": 620500,
+				"label": "天水市",
+				"children": [{
+						"value": 620502,
+						"label": "秦州区"
+					},
+					{
+						"value": 620503,
+						"label": "麦积区"
+					},
+					{
+						"value": 620521,
+						"label": "清水县"
+					},
+					{
+						"value": 620522,
+						"label": "秦安县"
+					},
+					{
+						"value": 620523,
+						"label": "甘谷县"
+					},
+					{
+						"value": 620524,
+						"label": "武山县"
+					},
+					{
+						"value": 620525,
+						"label": "张家川回族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2948,
+				"value": 620600,
+				"label": "武威市",
+				"children": [{
+						"value": 620602,
+						"label": "凉州区"
+					},
+					{
+						"value": 620621,
+						"label": "民勤县"
+					},
+					{
+						"value": 620622,
+						"label": "古浪县"
+					},
+					{
+						"value": 620623,
+						"label": "天祝藏族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2953,
+				"value": 620700,
+				"label": "张掖市",
+				"children": [{
+						"value": 620702,
+						"label": "甘州区"
+					},
+					{
+						"value": 620722,
+						"label": "民乐县"
+					},
+					{
+						"value": 620723,
+						"label": "临泽县"
+					},
+					{
+						"value": 620724,
+						"label": "高台县"
+					},
+					{
+						"value": 620725,
+						"label": "山丹县"
+					},
+					{
+						"value": 620721,
+						"label": "肃南裕固族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2960,
+				"value": 620800,
+				"label": "平凉市",
+				"children": [{
+						"value": 620802,
+						"label": "崆峒区"
+					},
+					{
+						"value": 620821,
+						"label": "泾川县"
+					},
+					{
+						"value": 620822,
+						"label": "灵台县"
+					},
+					{
+						"value": 620823,
+						"label": "崇信县"
+					},
+					{
+						"value": 620824,
+						"label": "华亭县"
+					},
+					{
+						"value": 620825,
+						"label": "庄浪县"
+					},
+					{
+						"value": 620826,
+						"label": "静宁县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2968,
+				"value": 620900,
+				"label": "酒泉市",
+				"children": [{
+						"value": 620902,
+						"label": "肃州区"
+					},
+					{
+						"value": 620981,
+						"label": "玉门市"
+					},
+					{
+						"value": 620982,
+						"label": "敦煌市"
+					},
+					{
+						"value": 620921,
+						"label": "金塔县"
+					},
+					{
+						"value": 620922,
+						"label": "瓜州县"
+					},
+					{
+						"value": 620923,
+						"label": "肃北蒙古族自治县"
+					},
+					{
+						"value": 620924,
+						"label": "阿克塞哈萨克族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2976,
+				"value": 621000,
+				"label": "庆阳市",
+				"children": [{
+						"value": 621002,
+						"label": "西峰区"
+					},
+					{
+						"value": 621021,
+						"label": "庆城县"
+					},
+					{
+						"value": 621022,
+						"label": "环县"
+					},
+					{
+						"value": 621023,
+						"label": "华池县"
+					},
+					{
+						"value": 621024,
+						"label": "合水县"
+					},
+					{
+						"value": 621025,
+						"label": "正宁县"
+					},
+					{
+						"value": 621026,
+						"label": "宁县"
+					},
+					{
+						"value": 621027,
+						"label": "镇原县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2985,
+				"value": 621100,
+				"label": "定西市",
+				"children": [{
+						"value": 621102,
+						"label": "安定区"
+					},
+					{
+						"value": 621121,
+						"label": "通渭县"
+					},
+					{
+						"value": 621122,
+						"label": "陇西县"
+					},
+					{
+						"value": 621123,
+						"label": "渭源县"
+					},
+					{
+						"value": 621124,
+						"label": "临洮县"
+					},
+					{
+						"value": 621125,
+						"label": "漳县"
+					},
+					{
+						"value": 621126,
+						"label": "岷县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 2993,
+				"value": 621200,
+				"label": "陇南市",
+				"children": [{
+						"value": 621202,
+						"label": "武都区"
+					},
+					{
+						"value": 621221,
+						"label": "成县"
+					},
+					{
+						"value": 621222,
+						"label": "文县"
+					},
+					{
+						"value": 621223,
+						"label": "宕昌县"
+					},
+					{
+						"value": 621224,
+						"label": "康县"
+					},
+					{
+						"value": 621225,
+						"label": "西和县"
+					},
+					{
+						"value": 621226,
+						"label": "礼县"
+					},
+					{
+						"value": 621227,
+						"label": "徽县"
+					},
+					{
+						"value": 621228,
+						"label": "两当县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3003,
+				"value": 622900,
+				"label": "临夏回族自治州",
+				"children": [{
+						"value": 622901,
+						"label": "临夏市"
+					},
+					{
+						"value": 622921,
+						"label": "临夏县"
+					},
+					{
+						"value": 622922,
+						"label": "康乐县"
+					},
+					{
+						"value": 622923,
+						"label": "永靖县"
+					},
+					{
+						"value": 622924,
+						"label": "广河县"
+					},
+					{
+						"value": 622925,
+						"label": "和政县"
+					},
+					{
+						"value": 622926,
+						"label": "东乡族自治县"
+					},
+					{
+						"value": 622927,
+						"label": "积石山保安族东乡族撒拉族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3012,
+				"value": 623000,
+				"label": "甘南藏族自治州",
+				"children": [{
+						"value": 623001,
+						"label": "合作市"
+					},
+					{
+						"value": 623021,
+						"label": "临潭县"
+					},
+					{
+						"value": 623022,
+						"label": "卓尼县"
+					},
+					{
+						"value": 623023,
+						"label": "舟曲县"
+					},
+					{
+						"value": 623024,
+						"label": "迭部县"
+					},
+					{
+						"value": 623025,
+						"label": "玛曲县"
+					},
+					{
+						"value": 623026,
+						"label": "碌曲县"
+					},
+					{
+						"value": 623027,
+						"label": "夏河县"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 620000,
+		"label": "甘肃省",
+		"expand": "true"
+	},
+	{
+		"id": 3021,
+		"children": [{
+				"id": 3022,
+				"value": 630100,
+				"label": "西宁市",
+				"children": [{
+						"value": 630103,
+						"label": "城中区"
+					},
+					{
+						"value": 630102,
+						"label": "城东区"
+					},
+					{
+						"value": 630104,
+						"label": "城西区"
+					},
+					{
+						"value": 630105,
+						"label": "城北区"
+					},
+					{
+						"value": 630122,
+						"label": "湟中县"
+					},
+					{
+						"value": 630123,
+						"label": "湟源县"
+					},
+					{
+						"value": 630121,
+						"label": "大通回族土族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3030,
+				"value": 630200,
+				"label": "海东市",
+				"children": [{
+						"value": 630202,
+						"label": "乐都区"
+					},
+					{
+						"value": 630203,
+						"label": "平安区"
+					},
+					{
+						"value": 630222,
+						"label": "民和回族土族自治县"
+					},
+					{
+						"value": 630223,
+						"label": "互助土族自治县"
+					},
+					{
+						"value": 630224,
+						"label": "化隆回族自治县"
+					},
+					{
+						"value": 630225,
+						"label": "循化撒拉族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3037,
+				"value": 632200,
+				"label": "海北藏族自治州",
+				"children": [{
+						"value": 632223,
+						"label": "海晏县"
+					},
+					{
+						"value": 632222,
+						"label": "祁连县"
+					},
+					{
+						"value": 632224,
+						"label": "刚察县"
+					},
+					{
+						"value": 632221,
+						"label": "门源回族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3042,
+				"value": 632300,
+				"label": "黄南藏族自治州",
+				"children": [{
+						"value": 632321,
+						"label": "同仁县"
+					},
+					{
+						"value": 632322,
+						"label": "尖扎县"
+					},
+					{
+						"value": 632323,
+						"label": "泽库县"
+					},
+					{
+						"value": 632324,
+						"label": "河南蒙古族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3047,
+				"value": 632500,
+				"label": "海南藏族自治州",
+				"children": [{
+						"value": 632521,
+						"label": "共和县"
+					},
+					{
+						"value": 632522,
+						"label": "同德县"
+					},
+					{
+						"value": 632523,
+						"label": "贵德县"
+					},
+					{
+						"value": 632524,
+						"label": "兴海县"
+					},
+					{
+						"value": 632525,
+						"label": "贵南县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3053,
+				"value": 632600,
+				"label": "果洛藏族自治州",
+				"children": [{
+						"value": 632621,
+						"label": "玛沁县"
+					},
+					{
+						"value": 632622,
+						"label": "班玛县"
+					},
+					{
+						"value": 632623,
+						"label": "甘德县"
+					},
+					{
+						"value": 632624,
+						"label": "达日县"
+					},
+					{
+						"value": 632625,
+						"label": "久治县"
+					},
+					{
+						"value": 632626,
+						"label": "玛多县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3060,
+				"value": 632700,
+				"label": "玉树藏族自治州",
+				"children": [{
+						"value": 632701,
+						"label": "玉树市"
+					},
+					{
+						"value": 632722,
+						"label": "杂多县"
+					},
+					{
+						"value": 632723,
+						"label": "称多县"
+					},
+					{
+						"value": 632724,
+						"label": "治多县"
+					},
+					{
+						"value": 632725,
+						"label": "囊谦县"
+					},
+					{
+						"value": 632726,
+						"label": "曲麻莱县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3067,
+				"value": 632800,
+				"label": "海西蒙古族藏族自治州",
+				"children": [{
+						"value": 632802,
+						"label": "德令哈市"
+					},
+					{
+						"value": 632801,
+						"label": "格尔木市"
+					},
+					{
+						"value": 632821,
+						"label": "乌兰县"
+					},
+					{
+						"value": 632822,
+						"label": "都兰县"
+					},
+					{
+						"value": 632823,
+						"label": "天峻县"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 630000,
+		"label": "青海省",
+		"expand": "true"
+	},
+	{
+		"id": 3073,
+		"children": [{
+				"id": 3074,
+				"value": 640100,
+				"label": "银川市",
+				"children": [{
+						"value": 640106,
+						"label": "金凤区"
+					},
+					{
+						"value": 640104,
+						"label": "兴庆区"
+					},
+					{
+						"value": 640105,
+						"label": "西夏区"
+					},
+					{
+						"value": 640181,
+						"label": "灵武市"
+					},
+					{
+						"value": 640121,
+						"label": "永宁县"
+					},
+					{
+						"value": 640122,
+						"label": "贺兰县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3081,
+				"value": 640200,
+				"label": "石嘴山市",
+				"children": [{
+						"value": 640202,
+						"label": "大武口区"
+					},
+					{
+						"value": 640205,
+						"label": "惠农区"
+					},
+					{
+						"value": 640221,
+						"label": "平罗县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3085,
+				"value": 640300,
+				"label": "吴忠市",
+				"children": [{
+						"value": 640302,
+						"label": "利通区"
+					},
+					{
+						"value": 640303,
+						"label": "红寺堡区"
+					},
+					{
+						"value": 640381,
+						"label": "青铜峡市"
+					},
+					{
+						"value": 640323,
+						"label": "盐池县"
+					},
+					{
+						"value": 640324,
+						"label": "同心县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3091,
+				"value": 640400,
+				"label": "固原市",
+				"children": [{
+						"value": 640402,
+						"label": "原州区"
+					},
+					{
+						"value": 640422,
+						"label": "西吉县"
+					},
+					{
+						"value": 640423,
+						"label": "隆德县"
+					},
+					{
+						"value": 640424,
+						"label": "泾源县"
+					},
+					{
+						"value": 640425,
+						"label": "彭阳县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3097,
+				"value": 640500,
+				"label": "中卫市",
+				"children": [{
+						"value": 640502,
+						"label": "沙坡头区"
+					},
+					{
+						"value": 640521,
+						"label": "中宁县"
+					},
+					{
+						"value": 640522,
+						"label": "海原县"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 640000,
+		"label": "宁夏回族自治区",
+		"expand": "true"
+	},
+	{
+		"id": 3101,
+		"children": [{
+				"id": 3102,
+				"value": 650100,
+				"label": "乌鲁木齐市",
+				"children": [{
+						"value": 650102,
+						"label": "天山区"
+					},
+					{
+						"value": 650103,
+						"label": "沙依巴克区"
+					},
+					{
+						"value": 650104,
+						"label": "新市区"
+					},
+					{
+						"value": 650105,
+						"label": "水磨沟区"
+					},
+					{
+						"value": 650106,
+						"label": "头屯河区"
+					},
+					{
+						"value": 650107,
+						"label": "达坂城区"
+					},
+					{
+						"value": 650109,
+						"label": "米东区"
+					},
+					{
+						"value": 650121,
+						"label": "乌鲁木齐县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3111,
+				"value": 650200,
+				"label": "克拉玛依市",
+				"children": [{
+						"value": 650203,
+						"label": "克拉玛依区"
+					},
+					{
+						"value": 650202,
+						"label": "独山子区"
+					},
+					{
+						"value": 650204,
+						"label": "白碱滩区"
+					},
+					{
+						"value": 650205,
+						"label": "乌尔禾区"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3116,
+				"value": 650400,
+				"label": "吐鲁番市",
+				"children": [{
+						"value": 650402,
+						"label": "高昌区"
+					},
+					{
+						"value": 650421,
+						"label": "鄯善县"
+					},
+					{
+						"value": 650422,
+						"label": "托克逊县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3120,
+				"value": 650500,
+				"label": "哈密市",
+				"children": [{
+						"value": 650502,
+						"label": "伊州区"
+					},
+					{
+						"value": 650522,
+						"label": "伊吾县"
+					},
+					{
+						"value": 650521,
+						"label": "巴里坤哈萨克自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3124,
+				"value": 652900,
+				"label": "阿克苏地区",
+				"children": [{
+						"value": 652901,
+						"label": "阿克苏市"
+					},
+					{
+						"value": 652922,
+						"label": "温宿县"
+					},
+					{
+						"value": 652923,
+						"label": "库车县"
+					},
+					{
+						"value": 652924,
+						"label": "沙雅县"
+					},
+					{
+						"value": 652925,
+						"label": "新和县"
+					},
+					{
+						"value": 652926,
+						"label": "拜城县"
+					},
+					{
+						"value": 652927,
+						"label": "乌什县"
+					},
+					{
+						"value": 652928,
+						"label": "阿瓦提县"
+					},
+					{
+						"value": 652929,
+						"label": "柯坪县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3134,
+				"value": 653100,
+				"label": "喀什地区",
+				"children": [{
+						"value": 653101,
+						"label": "喀什市"
+					},
+					{
+						"value": 653121,
+						"label": "疏附县"
+					},
+					{
+						"value": 653122,
+						"label": "疏勒县"
+					},
+					{
+						"value": 653123,
+						"label": "英吉沙县"
+					},
+					{
+						"value": 653124,
+						"label": "泽普县"
+					},
+					{
+						"value": 653125,
+						"label": "莎车县"
+					},
+					{
+						"value": 653126,
+						"label": "叶城县"
+					},
+					{
+						"value": 653127,
+						"label": "麦盖提县"
+					},
+					{
+						"value": 653128,
+						"label": "岳普湖县"
+					},
+					{
+						"value": 653129,
+						"label": "伽师县"
+					},
+					{
+						"value": 653130,
+						"label": "巴楚县"
+					},
+					{
+						"value": 653131,
+						"label": "塔什库尔干塔吉克自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3147,
+				"value": 653200,
+				"label": "和田地区",
+				"children": [{
+						"value": 653201,
+						"label": "和田市"
+					},
+					{
+						"value": 653221,
+						"label": "和田县"
+					},
+					{
+						"value": 653222,
+						"label": "墨玉县"
+					},
+					{
+						"value": 653223,
+						"label": "皮山县"
+					},
+					{
+						"value": 653224,
+						"label": "洛浦县"
+					},
+					{
+						"value": 653225,
+						"label": "策勒县"
+					},
+					{
+						"value": 653226,
+						"label": "于田县"
+					},
+					{
+						"value": 653227,
+						"label": "民丰县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3156,
+				"value": 652300,
+				"label": "昌吉回族自治州",
+				"children": [{
+						"value": 652301,
+						"label": "昌吉市"
+					},
+					{
+						"value": 652302,
+						"label": "阜康市"
+					},
+					{
+						"value": 652323,
+						"label": "呼图壁县"
+					},
+					{
+						"value": 652324,
+						"label": "玛纳斯县"
+					},
+					{
+						"value": 652325,
+						"label": "奇台县"
+					},
+					{
+						"value": 652327,
+						"label": "吉木萨尔县"
+					},
+					{
+						"value": 652328,
+						"label": "木垒哈萨克自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3164,
+				"value": 652700,
+				"label": "博尔塔拉蒙古自治州",
+				"children": [{
+						"value": 652701,
+						"label": "博乐市"
+					},
+					{
+						"value": 652702,
+						"label": "阿拉山口市"
+					},
+					{
+						"value": 652722,
+						"label": "精河县"
+					},
+					{
+						"value": 652723,
+						"label": "温泉县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3169,
+				"value": 652800,
+				"label": "巴音郭楞蒙古自治州",
+				"children": [{
+						"value": 652801,
+						"label": "库尔勒市"
+					},
+					{
+						"value": 652822,
+						"label": "轮台县"
+					},
+					{
+						"value": 652823,
+						"label": "尉犁县"
+					},
+					{
+						"value": 652824,
+						"label": "若羌县"
+					},
+					{
+						"value": 652825,
+						"label": "且末县"
+					},
+					{
+						"value": 652827,
+						"label": "和静县"
+					},
+					{
+						"value": 652828,
+						"label": "和硕县"
+					},
+					{
+						"value": 652829,
+						"label": "博湖县"
+					},
+					{
+						"value": 652826,
+						"label": "焉耆回族自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3179,
+				"value": 653000,
+				"label": "克孜勒苏柯尔克孜自治州",
+				"children": [{
+						"value": 653001,
+						"label": "阿图什市"
+					},
+					{
+						"value": 653022,
+						"label": "阿克陶县"
+					},
+					{
+						"value": 653023,
+						"label": "阿合奇县"
+					},
+					{
+						"value": 653024,
+						"label": "乌恰县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3184,
+				"value": 654000,
+				"label": "伊犁哈萨克自治州",
+				"children": [{
+						"value": 654002,
+						"label": "伊宁市"
+					},
+					{
+						"value": 654003,
+						"label": "奎屯市"
+					},
+					{
+						"value": 654004,
+						"label": "霍尔果斯市"
+					},
+					{
+						"value": 654021,
+						"label": "伊宁县"
+					},
+					{
+						"value": 654023,
+						"label": "霍城县"
+					},
+					{
+						"value": 654024,
+						"label": "巩留县"
+					},
+					{
+						"value": 654025,
+						"label": "新源县"
+					},
+					{
+						"value": 654026,
+						"label": "昭苏县"
+					},
+					{
+						"value": 654027,
+						"label": "特克斯县"
+					},
+					{
+						"value": 654028,
+						"label": "尼勒克县"
+					},
+					{
+						"value": 654022,
+						"label": "察布查尔锡伯自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3196,
+				"value": 654200,
+				"label": "塔城地区",
+				"children": [{
+						"value": 654201,
+						"label": "塔城市"
+					},
+					{
+						"value": 654202,
+						"label": "乌苏市"
+					},
+					{
+						"value": 654221,
+						"label": "额敏县"
+					},
+					{
+						"value": 654223,
+						"label": "沙湾县"
+					},
+					{
+						"value": 654224,
+						"label": "托里县"
+					},
+					{
+						"value": 654225,
+						"label": "裕民县"
+					},
+					{
+						"value": 654226,
+						"label": "和布克赛尔蒙古自治县"
+					}
+				],
+				"expand": "true"
+			},
+			{
+				"id": 3204,
+				"value": 654300,
+				"label": "阿勒泰地区",
+				"children": [{
+						"value": 654301,
+						"label": "阿勒泰市"
+					},
+					{
+						"value": 654321,
+						"label": "布尔津县"
+					},
+					{
+						"value": 654322,
+						"label": "富蕴县"
+					},
+					{
+						"value": 654323,
+						"label": "福海县"
+					},
+					{
+						"value": 654324,
+						"label": "哈巴河县"
+					},
+					{
+						"value": 654325,
+						"label": "青河县"
+					},
+					{
+						"value": 654326,
+						"label": "吉木乃县"
+					},
+					{
+						"value": 659001,
+						"label": "石河子市"
+					},
+					{
+						"value": 659002,
+						"label": "阿拉尔市"
+					},
+					{
+						"value": 659003,
+						"label": "图木舒克市"
+					},
+					{
+						"value": 659004,
+						"label": "五家渠市"
+					},
+					{
+						"value": 659005,
+						"label": "北屯市"
+					},
+					{
+						"value": 659006,
+						"label": "铁门关市"
+					},
+					{
+						"value": 659007,
+						"label": "双河市"
+					},
+					{
+						"value": 659008,
+						"label": "可克达拉市"
+					},
+					{
+						"value": 659009,
+						"label": "昆玉市"
+					}
+				],
+				"expand": "true"
+			}
+		],
+		"value": 650000,
+		"label": "新疆维吾尔自治区",
+		"expand": "true"
+	},
+	{
+		"id": 3221,
+		"children": [{
+			"id": 3222,
+			"value": 810100,
+			"label": "香港特别行政区",
+			"children": []
+		}],
+		"value": 810000,
+		"label": "香港特别行政区",
+		"expand": "true"
+	},
+	{
+		"id": 3223,
+		"children": [{
+			"children": [],
+			"id": 3224,
+			"value": 820100,
+			"label": "澳门特别行政区(澳)"
+		}],
+		"value": 820000,
+		"label": "澳门特别行政区",
+		"expand": "true"
+	},
+	{
+		"id": 3225,
+		"children": [],
+		"value": 710000,
+		"label": "台湾省",
+		"expand": "true"
+	}
+]

+ 438 - 0
pagesT/components/wm-poster/wm-poster.vue

@@ -0,0 +1,438 @@
+<template>
+	<view class="Canvas-view">
+		<canvas :canvas-id="CanvasID" :style="{ width: canvasW + 'px', height: canvasH + 'px' }"></canvas>
+		<view class="Canvas-two"><canvas canvas-id="CanvasTwo" :style="{ width: canvasWT + 'px', height: canvasHT + 'px' }"></canvas></view>
+		<view class="btn-view primary-bg" @click="saveImg">保存图片</view>
+		<view class="btn-view-close" @click="cancelImg">取消</view>
+	</view>
+</template>
+
+<script>
+import { getName } from '@/access/common.js';
+var _this;
+export default {
+	name: 'wm-poster',
+	props: {
+		CanvasID: {
+			//CanvasID 等同于 canvas-id
+			Type: String,
+			default: 'PosterCanvas'
+		},
+		imgSrc: {
+			//展示图
+			Type: String,
+			default: ''
+		},
+		QrSrc: {
+			//二维码
+			Type: String,
+			default: ''
+		},
+		Title: {
+			//文本内容
+			Type: String,
+			default: ''
+		},
+		TitleColor: {
+			//标题颜色
+			Type: String,
+			default: '#333333'
+		},
+		LineType: {
+			//标题显示行数		(注超出2行显示会导致画布布局絮乱)
+			Type: [String, Boolean],
+			default: true
+		},
+		PriceTxt: {
+			//价格值
+			Type: String,
+			default: ''
+		},
+		PriceColor: {
+			//价格颜色
+			Type: String,
+			default: '#e31d1a'
+		},
+		OriginalTxt: {
+			//原价值
+			Type: String,
+			default: ''
+		},
+		OriginalColor: {
+			//默认颜色(如原价与扫描二维码颜色)
+			Type: String,
+			default: '#b8b8b8'
+		},
+		Width: {
+			//画布宽度  (高度根据图片比例计算 单位upx)
+			Type: String,
+			default: 750
+		},
+		WidthT: {
+			//画布宽度  (高度根据图片比例计算 单位upx)
+			Type: String,
+			default: 1500
+		},
+		CanvasBg: {
+			//canvas画布背景色
+			Type: String,
+			default: '#ffffff'
+		},
+		Referrer: {
+			//推荐人信息
+			Type: String,
+			default: getName() + '推荐给你'
+		},
+		ViewDetails: {
+			//描述提示文字
+			Type: String,
+			// #ifdef MP-TOUTIAO
+			default: '抖音/头条APP扫描查看商品'
+			// #endif
+			// #ifdef MP-WEIXIN || H5 || APP-PLUS
+			default: '微信长按或扫描查看商品',
+			// #endif
+		}
+	},
+	data() {
+		return {
+			canvasW: 0,
+			canvasH: 0,
+			canvasWT: 0,
+			canvasHT: 0,
+			canvasImgSrc: '',
+			ctx: null
+		};
+	},
+	methods: {
+		async OnCanvas() {
+			uni.showLoading({
+				title: '海报生成中'
+			});
+			let imgSrc = this.imgSrc;
+			if (this.imgSrc.slice(0, this.imgSrc.indexOf('://')) === 'http') {
+				imgSrc = 'https' + this.imgSrc.slice(this.imgSrc.indexOf('://'));
+			}
+			let QrSrc = this.QrSrc;
+			if (this.QrSrc.slice(0, this.QrSrc.indexOf('://')) === 'http') {
+				QrSrc = 'https' + this.QrSrc.slice(this.QrSrc.indexOf('://'));
+			}
+			_this.ctx = uni.createCanvasContext(_this.CanvasID, this);
+			const C_W = uni.upx2px(_this.Width), //canvas宽度
+				C_P = uni.upx2px(0), //canvas Paddng 间距
+				C_Q = uni.upx2px(150); //二维码或太阳码宽高
+			let _strlineW = 0; //文本宽度
+			let _imgInfo = await _this.getImageInfo({ imgSrc: imgSrc }); //广告图
+			let _QrCode = await _this.getImageInfo({ imgSrc: QrSrc }); //二维码或太阳码
+			let r = [_imgInfo.width, _imgInfo.height];
+			let q = [_QrCode.width, _QrCode.height];
+			let imgW = C_W - C_P * 2;
+			if (r[1] != imgW) {
+				r[0] = Math.floor((imgW / r[1]) * r[0]);
+				r[1] = imgW;
+			}
+			if (q[0] != C_Q) {
+				q[1] = Math.floor((C_Q / q[0]) * q[1]);
+				q[0] = C_Q;
+			}
+			_this.canvasW = C_W;
+			_this.canvasH = r[1] + q[1] + 128;
+			_this.ctx.setFillStyle(_this.CanvasBg); //canvas背景颜色
+			_this.ctx.fillRect(0, 0, C_W, _this.canvasH); //canvas画布大小
+
+			//添加图片展示
+
+			_this.ctx.drawImage(_imgInfo.path, (C_W-r[0])/2 , C_P, r[0], r[1]);
+			//添加图片展示 end
+
+			//设置文本
+			_this.ctx.setFontSize(uni.upx2px(28)); //设置标题字体大小
+			_this.ctx.setFillStyle(_this.TitleColor); //设置标题文本颜色
+			let _strLastIndex = 0; //每次开始截取的字符串的索引
+			let _strHeight = r[1] + C_P * 2 + 20; //绘制字体距离canvas顶部的初始高度
+			let _num = 1;
+			for (let i = 0; i < _this.Title.length; i++) {
+				_strlineW += _this.ctx.measureText(_this.Title[i]).width;
+				if (_strlineW > r[0]) {
+					if (_num == 2 && _this.LineType) {
+						//文字换行数量大于二进行省略号处理
+						// _this.ctx.fillText(_this.Title.substring(_strLastIndex, i - 8) + '...', C_P, _strHeight);
+						_this.ctx.fillText(_this.Title.substring(_strLastIndex, i - 8) + '...', 15, _strHeight, C_W - 30);
+						_strlineW = 0;
+						_strLastIndex = i;
+						_num++;
+						break;
+					} else {
+						// _this.ctx.fillText(_this.Title.substring(_strLastIndex, i), C_P, _strHeight);
+						_this.ctx.fillText(_this.Title.substring(_strLastIndex, i), 15, _strHeight, C_W - 30);
+						_strlineW = 0;
+						_strHeight += 20;
+						_strLastIndex = i;
+						_num++;
+					}
+				} else if (i == _this.Title.length - 1) {
+					// _this.ctx.fillText(_this.Title.substring(_strLastIndex, i + 1), C_P, _strHeight);
+					_this.ctx.fillText(_this.Title.substring(_strLastIndex, i + 1), 15, _strHeight, C_W - 30);
+					_strlineW = 0;
+				}
+			}
+			//设置文本 end
+
+			//设置价格
+			_strlineW = C_P;
+			_strHeight += uni.upx2px(60);
+			if (_num == 1) {
+				_strHeight += 20; //单行标题时占位符
+			}
+
+			if (_this.PriceTxt != '') {
+				//判断是否有销售价格
+				_this.ctx.setFillStyle(_this.PriceColor);
+				_this.ctx.setFontSize(uni.upx2px(38));
+				// _this.ctx.fillText(_this.PriceTxt, _strlineW, _strHeight); //商品价格
+				_this.ctx.fillText(_this.PriceTxt, 15, _strHeight); //商品价格
+				console.log('_this.PriceTxt:', _this.PriceTxt.length*10)
+				// _strlineW += _this.ctx.measureText(_this.PriceTxt).width + uni.upx2px(10);
+				_strlineW += _this.PriceTxt.length*10
+			}
+			if (_this.PriceTxt != '' && _this.OriginalTxt != '') {
+				//判断是否有销售价格且原价
+				_this.ctx.setFillStyle(_this.OriginalColor);
+				_this.ctx.setFontSize(uni.upx2px(24));
+				_this.ctx.fillText(_this.OriginalTxt, _strlineW + 25, _strHeight); //商品原价
+			}
+			_this.ctx.strokeStyle = _this.OriginalColor;
+			_this.ctx.moveTo(_strlineW + 25, _strHeight - uni.upx2px(10)); //起点
+			_this.ctx.lineTo(_strlineW + _this.ctx.measureText(_this.OriginalTxt).width + 25, _strHeight - uni.upx2px(10)); //终点
+			_this.ctx.stroke();
+			//设置价格 end
+
+			//添加二维码
+			_strHeight += uni.upx2px(20);
+			// _this.ctx.drawImage(_QrCode.path, r[0] - q[0] + C_P, _strHeight, q[0], q[1]);
+			_this.ctx.drawImage(_QrCode.path, q[0] + 30, _strHeight, q[0], q[1]);
+			//添加二维码 end
+
+			//添加推荐人与描述
+			// #ifdef MP
+			// _this.ctx.setFillStyle(_this.TitleColor);
+			// _this.ctx.setFontSize(uni.upx2px(30));
+			// _this.ctx.fillText(_this.Referrer, C_P, _strHeight + q[1] / 2);
+			//  #endif
+			_this.ctx.setFillStyle(_this.OriginalColor);
+			_this.ctx.setFontSize(uni.upx2px(24));
+			_this.ctx.fillText(_this.ViewDetails, q[0] + 10, _strHeight + q[1] + 20);
+			//添加推荐人与描述 end
+
+			//延迟后渲染至canvas上
+			setTimeout(function() {
+				_this.ctx.draw(true, ret => {
+					_this.getNewImage();
+				});
+			}, 600);
+		},
+		async OnCanvasTwo() {
+			let imgSrc = this.imgSrc;
+			if (this.imgSrc.slice(0, this.imgSrc.indexOf('://')) === 'http') {
+				imgSrc = 'https' + this.imgSrc.slice(this.imgSrc.indexOf('://'));
+			}
+			let QrSrc = this.QrSrc;
+			if (this.QrSrc.slice(0, this.QrSrc.indexOf('://')) === 'http') {
+				QrSrc = 'https' + this.QrSrc.slice(this.QrSrc.indexOf('://'));
+			}
+			_this.ctx = uni.createCanvasContext(_this.CanvasID, this);
+			const C_W = uni.upx2px(_this.WidthT), //canvas宽度
+				C_P = uni.upx2px(30), //canvas Paddng 间距
+				C_Q = uni.upx2px(150); //二维码或太阳码宽高
+			let _strlineW = 0; //文本宽度
+			let _imgInfo = await _this.getImageInfo({ imgSrc: imgSrc }); //广告图
+			let _QrCode = await _this.getImageInfo({ imgSrc: QrSrc }); //二维码或太阳码
+			let r = [_imgInfo.width, _imgInfo.height];
+			let q = [_QrCode.width, _QrCode.height];
+			let imgW = C_W - C_P * 2;
+			if (r[0] != imgW) {
+				r[1] = Math.floor((imgW / r[0]) * r[1]);
+				r[0] = imgW;
+			}
+			if (q[0] != C_Q) {
+				q[1] = Math.floor((C_Q / q[0]) * q[1]);
+				q[0] = C_Q;
+			}
+			_this.canvasW = C_W;
+			_this.canvasH = r[1] + q[1] + 128;
+			_this.ctx.setFillStyle(_this.CanvasBg); //canvas背景颜色
+			_this.ctx.fillRect(0, 0, C_W, _this.canvasH); //canvas画布大小
+
+			//添加图片展示
+			_this.ctx.drawImage(_imgInfo.path, C_P, C_P, r[0], r[1]);
+			//添加图片展示 end
+
+			//设置文本
+			_this.ctx.setFontSize(uni.upx2px(28)); //设置标题字体大小
+			_this.ctx.setFillStyle(_this.TitleColor); //设置标题文本颜色
+			let _strLastIndex = 0; //每次开始截取的字符串的索引
+			let _strHeight = r[1] + C_P * 2 + 10; //绘制字体距离canvas顶部的初始高度
+			let _num = 1;
+			for (let i = 0; i < _this.Title.length; i++) {
+				_strlineW += _this.ctx.measureText(_this.Title[i]).width;
+				if (_strlineW > r[0]) {
+					if (_num == 2 && _this.LineType) {
+						//文字换行数量大于二进行省略号处理
+						_this.ctx.fillText(_this.Title.substring(_strLastIndex, i - 8) + '...', C_P, _strHeight);
+						_strlineW = 0;
+						_strLastIndex = i;
+						_num++;
+						break;
+					} else {
+						_this.ctx.fillText(_this.Title.substring(_strLastIndex, i), C_P, _strHeight);
+						_strlineW = 0;
+						_strHeight += 20;
+						_strLastIndex = i;
+						_num++;
+					}
+				} else if (i == _this.Title.length - 1) {
+					_this.ctx.fillText(_this.Title.substring(_strLastIndex, i + 1), C_P, _strHeight);
+					_strlineW = 0;
+				}
+			}
+			//设置文本 end
+
+			//设置价格
+			_strlineW = C_P;
+			_strHeight += uni.upx2px(60);
+			if (_num == 1) {
+				_strHeight += 20; //单行标题时占位符
+			}
+
+			if (_this.PriceTxt != '') {
+				//判断是否有销售价格
+				_this.ctx.setFillStyle(_this.PriceColor);
+				_this.ctx.setFontSize(uni.upx2px(38));
+				_this.ctx.fillText(_this.PriceTxt, _strlineW, _strHeight); //商品价格
+				_strlineW += _this.ctx.measureText(_this.PriceTxt).width + uni.upx2px(10);
+			}
+			if (_this.PriceTxt != '' && _this.OriginalTxt != '') {
+				//判断是否有销售价格且原价
+				_this.ctx.setFillStyle(_this.OriginalColor);
+				_this.ctx.setFontSize(uni.upx2px(24));
+				_this.ctx.fillText(_this.OriginalTxt, _strlineW, _strHeight); //商品原价
+			}
+			_this.ctx.strokeStyle = _this.OriginalColor;
+			_this.ctx.moveTo(_strlineW, _strHeight - uni.upx2px(10)); //起点
+			_this.ctx.lineTo(_strlineW + _this.ctx.measureText(_this.OriginalTxt).width, _strHeight - uni.upx2px(10)); //终点
+			_this.ctx.stroke();
+			//设置价格 end
+
+			//添加二维码
+			_strHeight += uni.upx2px(20);
+			_this.ctx.drawImage(_QrCode.path, r[0] - q[0] + C_P, _strHeight, q[0], q[1]);
+			//添加二维码 end
+
+			//添加推荐人与描述
+			_this.ctx.setFillStyle(_this.TitleColor);
+			_this.ctx.setFontSize(uni.upx2px(30));
+			// _this.ctx.fillText(_this.Referrer, C_P, _strHeight + q[1] / 2);
+			_this.ctx.setFillStyle(_this.OriginalColor);
+			_this.ctx.setFontSize(uni.upx2px(24));
+			_this.ctx.fillText(_this.ViewDetails, C_P, _strHeight + q[1] / 2 + 20);
+			//添加推荐人与描述 end
+
+			//延迟后渲染至canvas上
+			setTimeout(function() {
+				_this.ctx.draw(true, ret => {
+					_this.getNewImage();
+				});
+			}, 600);
+		},
+
+		async getImageInfo({ imgSrc }) {
+			return new Promise((resolve, errs) => {
+				uni.getImageInfo({
+					src: imgSrc,
+					success: function(image) {
+						resolve(image);
+					},
+					fail(err) {
+						errs(err);
+					}
+				});
+			});
+		},
+		getNewImage() {
+			uni.canvasToTempFilePath(
+				{
+					fileType: 'jpg',
+					canvasId: _this.CanvasID,
+					quality: 1,
+					complete: res => {
+						console.log(res.tempFilePath);
+						_this.$emit('success', res);
+					}
+				},
+				this
+			);
+			uni.hideLoading();
+		},
+		cancelImg() {
+			this.$emit('cancelImg');
+		},
+		saveImg() {
+			// destWidth: _this.canvasW * 2,
+			// destHeight: _this.canvasH * 2,
+			uni.canvasToTempFilePath(
+				{
+					fileType: 'jpg',
+					canvasId: _this.CanvasID,
+					quality: 1,
+					destWidth: _this.canvasW * 2,
+					destHeight: _this.canvasH * 2,
+					complete: res => {
+						console.log(res.tempFilePath);
+						uni.saveImageToPhotosAlbum({
+							filePath: res.tempFilePath,
+							success: function() {
+								_this.$emit('saveImage');
+							}
+						});
+					}
+				},
+				this
+			);
+		}
+	},
+	mounted() {
+		_this = this;
+		_this.OnCanvas();
+		// _this.OnCanvasTwo();
+	}
+};
+</script>
+
+<style lang="scss">
+.Canvas-view {
+	.btn-view-close {
+		text-align: center;
+		line-height: 78upx;
+		font-size: 28upx;
+		color: #fff;
+		border-radius: 12upx;
+		width: 400upx;
+		margin: 0 auto;
+	}
+	.btn-view {
+		background: $base-btn-bg;
+		text-align: center;
+		line-height: 78upx;
+		font-size: 28upx;
+		color: #fff;
+		border-radius: 12upx;
+		width: 400upx;
+		margin: 0 auto;
+		margin-top: 30upx;
+	}
+	.Canvas-two {
+		display: none;
+		transform: translate(-1600upx, -1600upx);
+	}
+}
+</style>

+ 443 - 0
pagesT/goodsGroup/goodsGroupDetail.vue

@@ -0,0 +1,443 @@
+<template>
+	<view :class="['qn-page-' + theme]">
+		<view class="goods-ul">
+			<view class="goods-li clearfix" v-for="(item, index) in group_detail.goodsData" :key="index">
+				<view class="float_left goods-img">
+					<block v-if="item.isDistribution === 4">
+						<view v-if="!(item.inventorTotal - 0) || item.inventorTotal - 0 <= 0" class="sale-end"><text class="ibonfont ibonbuhuozhong"></text></view>
+					</block>
+					<image :src="item.images[0]" mode="aspectFill"></image>
+				</view>
+				<view class="float_left goods-info">
+					<view class="goods-name ellipsis">{{ item.title }}</view>
+					<view class="goods-sku" @click="skuOpen(item, index)">
+						<block v-if="item.nowSkuData">
+							<text>{{ item.nowSkuData.unitName }};</text>
+							<text v-for="(spec, specI) in item.nowSkuData.specGroup" :key="specI">{{ spec.specValueName }};</text>
+						</block>
+
+						<text v-else>请选择商品规格</text>
+						<text class="ibonfont iboncollpse"></text>
+					</view>
+					<view class="num-view clearfix">
+						<view class="godos-price float_left">原价 ¥{{ item.maxMarketPrice }}</view>
+						<view class="goods-num float_right">
+							<text class="ibonfont ibonguanbi1"></text>
+							<text>1</text>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="bottom-view clearfix">
+			<view class="price-main float_left">
+				<view class="total">
+					<text>总价:</text>
+					<text class="primary-color">¥{{ group_detail.price || '0.00' }}</text>
+				</view>
+				<view class="desc">已省¥{{ group_detail.originPrice - group_detail.price }}</view>
+			</view>
+			<view class="confirm-btn float_right" @click="buyNow">立即购买</view>
+		</view>
+		<u-popup :mask-close-able="false" border-radius="16" mode="bottom" v-model="sku_show">
+			<view class="sku-sel-pop" v-if="goods_detail.id">
+				<text class="ibonfont ibonguanbi1" @click="skuCancel"></text>
+				<view class="goods-view clearfix">
+					<view class="float_left goods-img"><image :src="goods_detail.images[0]" mode="aspectFill"></image></view>
+					<view class="float_right goods-info">
+						<view class="goods-name ellipsis">{{ goods_detail.title }}</view>
+						<block v-if="now_sku_data.id">
+							<view class="goods-stock">库存:{{ Number(now_sku_data.inventory) || 0 }}</view>
+							<view class="goods-price">原价:¥{{ now_sku_data.salePrice || 0 }}</view>
+						</block>
+						<block v-else>
+							<view class="goods-stock">库存:{{ Number(goods_detail.inventory) || 0 }}</view>
+							<view class="goods-price">原价:¥{{ goods_detail.maxSalePrice || 0 }}</view>
+						</block>
+					</view>
+				</view>
+				<scroll-view scroll-y="true" style="max-height: 700upx;overflow-y: auto;">
+					<view class="sku-ul">
+						<view class="sku-li">
+							<view class="sku-name">单位</view>
+							<view class="sku-val-ul">
+								<view
+									class="sku-val-li"
+									v-for="(unit, uniti) in goods_detail.unitData"
+									:key="uniti"
+									:class="[parseInt(spec_id_group[1]) === parseInt(unit.unitId) ? 'primary-btn-pain' : '']"
+									@click="changeSku(unit.unitId, 1, '', unit)"
+								>
+									<text :style="{ color: !unit.isdisabled ? '#999' : '' }">{{ unit.unitName }}</text>
+								</view>
+							</view>
+						</view>
+						<view class="sku-li" v-for="(item, index) in goods_detail.specGroup" :key="index">
+							<view class="sku-name">{{ item.groupSpec.specName }}</view>
+							<view class="sku-val-ul">
+								<view
+									v-for="(sku, skuI) in item.params"
+									:key="skuI"
+									class="sku-val-li"
+									:class="[parseInt(spec_id_group[index + 2]) === parseInt(sku.specValueId) ? 'primary-btn-pain' : '']"
+									@click="changeSku(sku.specValueId, index + 2, item.groupSpec.specId, sku)"
+								>
+									<text :style="{ color: !sku.isdisabled ? '#999' : '' }">{{ sku.specValueName }}</text>
+								</view>
+							</view>
+						</view>
+					</view>
+				</scroll-view>
+
+				<view class="confirm-btn primary-btn" @click="skuConfirm">确定</view>
+			</view>
+		</u-popup>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			sku_show: false,
+			group_id: '',
+			group_detail: {},
+			goods_detail: {},
+			now_sku_data: {},
+			spec_id_group: [],
+			goods_index: ''
+		};
+	},
+	computed: {
+		baseSet() {
+			return this.$store.state.baseSet;
+		}
+	},
+	onLoad(options) {
+		this.group_id = options.id;
+		this.detailsApiComBinPackage();
+	},
+	onShow() {},
+	methods: {
+		skuConfirm() {
+			if (!this.now_sku_data.id) {
+				this.$u.toast('请选择要购买的规格');
+				return;
+			}
+			if (this.goods_detail.joinSku && this.goods_detail.joinSku.length) {
+				if (this.goods_detail.joinSku.indexOf(this.now_sku_data.id) === -1) {
+					this.$u.toast('抱歉该规格没有参与组合套餐活动');
+					return;
+				}
+			}
+			this.skuCancel();
+		},
+		skuCancel() {
+			this.sku_show = false;
+		},
+		skuOpen(goods, index) {
+			this.sku_show = true;
+			this.spec_id_group = [goods.id];
+			this.now_sku_data = {};
+
+			this.goods_index = index;
+
+			// 过滤出没有参与活动的规格
+			if (goods.joinSku && goods.joinSku.length) {
+				goods.specMultiple = goods.specMultiple.filter(item => goods.joinSku.includes(item.id));
+			}
+			// 多规格时处理属性禁用标示
+			if (goods.specType === 2) {
+				goods.specGroup = goods.specGroup.map(item => {
+					return {
+						...item,
+						params: item.params.map(itemP => {
+							return {
+								...itemP,
+								isdisabled: true
+							};
+						})
+					};
+				});
+				goods.unitData.forEach(item => {
+					item.isdisabled = true;
+				});
+			} else {
+				//单规格 添加当前单位没有库存的标记
+				const arr = goods.specMultiple.filter(item => item.inventory <= 0);
+				goods.unitData.forEach(item => {
+					// 没有开启预售判断库存
+					if (goods.isDistribution === 4) {
+						item.isdisabled = !arr.find(itemF => itemF.unitId === item.unitId);
+					} else {
+						item.isdisabled = true;
+					}
+				});
+			}
+			this.goods_detail = goods;
+		},
+		async detailsApiComBinPackage() {
+			this.$u.api.detailsApiComBinPackage(this.group_id).then(res => {
+				this.group_detail = res.data;
+			});
+		},
+		changeSku(id, index, specId, row) {
+			if (row && !row.isdisabled) {
+				return;
+			}
+			this.$set(this.spec_id_group, index, parseInt(id));
+			if (this.spec_id_group.every(item => !!item)) {
+				const indexGroup = this.spec_id_group.join(':');
+				const nowSkuData = this.goods_detail.specMultiple.find(item => item.index === indexGroup);
+				if (nowSkuData) {
+					this.now_sku_data = nowSkuData;
+					let target = this.$u.deepClone(this.group_detail);
+					target.goodsData[this.goods_index].nowSkuData = nowSkuData;
+					this.group_detail = target;
+				}
+			}
+			// 判断当前规格是否要禁用,规格组不存在或者库存为0的时候,当前规格禁用
+			if (index) {
+				// 过滤出包含当前规格的规格组
+				const containSpecMultiple = this.goods_detail.specMultiple.filter(item => item.indexGroup.includes(id + ''));
+				const target = this.$u.deepClone(this.goods_detail.specGroup);
+				target.forEach(item => {
+					if (item.groupSpec.specId !== specId) {
+						item.params.forEach(itemP => {
+							// 没有开启预售判断库存
+							if (this.baseSet.preSale === 4) {
+								const isObj = containSpecMultiple.find(itemF => {
+									return itemF.indexGroup.includes(itemP.specValueId + '');
+								});
+								itemP.isdisabled = !!isObj && isObj.inventory > 0;
+							} else {
+								itemP.isdisabled = true;
+							}
+						});
+					}
+				});
+				// console.log(target);
+				this.goods_detail.specGroup = target;
+			}
+		},
+		buyNow() {
+			const isBuy = this.group_detail.goodsData.find(item => {
+				return !item.nowSkuData;
+			});
+			if (isBuy) {
+				this.$u.toast('请选择规格');
+				return;
+			}
+			const lists = this.group_detail.goodsData.map(item => {
+				return {
+					goodsId: item.id,
+					skuId: item.nowSkuData.id,
+					buyNum: 1
+				};
+			});
+			const params = {
+				sourceType: 1, //组合套餐固定传1
+				comBinId: this.group_id, //组合套餐id
+				lists: lists
+			};
+			this.goPage('/pageT/order/createOrder?params=' + JSON.stringify(params));
+		}
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+.goods-ul {
+	padding: 0 36rpx;
+	background-color: #ffffff;
+
+	.goods-li {
+		padding: 30rpx 0;
+		border-bottom: 1px solid #f5f5f5;
+
+		&:last-child {
+			border-bottom: 0 none;
+		}
+
+		.goods-img {
+			padding-right: 20rpx;
+			position: relative;
+			image {
+				display: block;
+				width: 210rpx;
+				height: 210rpx;
+				border-radius: 10rpx;
+			}
+			.sale-end {
+				position: absolute;
+				width: 210rpx;
+				height: 210rpx;
+				border-radius: 10upx;
+				display: block;
+				left: 0;
+				top: 0;
+				z-index: 1;
+				text-align: center;
+				line-height: 210rpx;
+				background-color: rgba($color: #000000, $alpha: 0.3);
+				.ibonfont {
+					font-size: 120rpx;
+					color: #ffffff;
+				}
+			}
+		}
+
+		.goods-info {
+			width: 444rpx;
+
+			.goods-sku {
+				margin-top: 12rpx;
+				line-height: 46rpx;
+				padding-left: 10rpx;
+				padding-right: 46rpx;
+				font-size: 24rpx;
+				color: #999999;
+				background-color: #fafafa;
+				border-radius: 8rpx;
+				position: relative;
+				display: inline-block;
+
+				.iboncollpse {
+					font-size: 24rpx;
+					color: #999999;
+					position: absolute;
+					right: 10rpx;
+					top: 50%;
+					transform: translateY(-50%);
+				}
+			}
+
+			.num-view {
+				font-size: 24rpx;
+				color: #999999;
+				padding-top: 30rpx;
+
+				.goods-num {
+					.ibonguanbi1 {
+						font-size: 16rpx;
+						color: #999999;
+						width: 38rpx;
+						display: inline-block;
+					}
+				}
+			}
+		}
+	}
+}
+
+.sku-sel-pop {
+	padding: 30rpx;
+	padding-top: 50rpx;
+	position: relative;
+
+	.ibonguanbi1 {
+		color: #999999;
+		font-size: 26rpx;
+		position: absolute;
+		top: 20rpx;
+		right: 24rpx;
+		display: inline-block;
+		width: 50rpx;
+	}
+
+	.goods-view {
+		.goods-img {
+			image {
+				display: block;
+				width: 200rpx;
+				height: 200rpx;
+				border-radius: 10rpx;
+			}
+		}
+
+		.goods-info {
+			width: 450rpx;
+			padding-top: 10rpx;
+
+			.goods-stock {
+				font-size: 24rpx;
+				color: #999999;
+				padding: 10rpx 0;
+			}
+
+			.goods-price {
+				font-size: 24rpx;
+			}
+		}
+	}
+
+	.sku-ul {
+		padding-top: 30rpx;
+
+		.sku-li {
+			padding-bottom: 20rpx;
+
+			.sku-name {
+				line-height: 70rpx;
+			}
+
+			.sku-val-ul {
+				.sku-val-li {
+					display: inline-block;
+					line-height: 60rpx;
+					min-width: 80rpx;
+					font-size: 26rpx;
+					border: 1px solid #eeedf2;
+					margin-right: 20rpx;
+					border-radius: 6rpx;
+					text-align: center;
+
+					&:last-child {
+						margin-right: 0;
+					}
+				}
+			}
+		}
+	}
+
+	.confirm-btn {
+		width: 680rpx;
+		line-height: 70rpx;
+		text-align: center;
+		border-radius: 10rpx;
+		color: #ffffff;
+		margin: 30rpx auto 0;
+	}
+}
+
+.bottom-view {
+	background-color: #ffffff;
+	padding: 20rpx 0;
+	position: fixed;
+	left: 0;
+	bottom: 0;
+	z-index: 95;
+	width: 100%;
+
+	.price-main {
+		width: 490rpx;
+		text-align: right;
+
+		.desc {
+			color: #999999;
+			font-size: 24rpx;
+		}
+	}
+
+	.confirm-btn {
+		height: 74upx;
+		line-height: 74upx;
+		color: #ffffff;
+		background-color: #f63434;
+		width: 206upx;
+		text-align: center;
+		border-radius: 10upx;
+		margin-right: 20rpx;
+	}
+}
+</style>

+ 171 - 0
pagesT/goodsGroup/index.vue

@@ -0,0 +1,171 @@
+<template>
+	<view :class="['qn-page-' + theme]">
+		<view class="group-ul">
+			<view class="group-li clearfix" @click="goPage('/pageT/goodsGroup/goodsGroupDetail?id=1')">
+				<view class="float_left">
+					<scroll-view scroll-x="true" class="left-scroll">
+						<view class="goods-ul">
+							<view class="goods-li">
+								<image src="https://onlineimg.qianniao.vip/audit_img.jpg" mode="aspectFill"></image>
+								<view class="goods-name ellipsis">测试商品测试商品</view>
+							</view>
+							<view class="plus-icon">
+								<u-icon name="plus" color="#cecece" size="28"></u-icon>
+							</view>
+							<view class="goods-li">
+								<image src="https://onlineimg.qianniao.vip/audit_img.jpg" mode="aspectFill"></image>
+								<view class="goods-name ellipsis">测试商品测试商品</view>
+							</view>
+							<view class="plus-icon">
+								<u-icon name="plus" color="#cecece" size="28"></u-icon>
+							</view>
+							<view class="goods-li">
+								<image src="https://onlineimg.qianniao.vip/audit_img.jpg" mode="aspectFill"></image>
+								<view class="goods-name ellipsis">测试商品测试商品</view>
+							</view>
+						</view>
+					</scroll-view>
+				</view>
+				<view class="float_left dy-icon">
+					<text class="ibonfont ibonicon"></text>
+				</view>
+				<view class="float_left price-right">
+					<view class="group-price">
+						<text>套餐价</text>
+						<text class="primary-color">¥100.00</text>
+					</view>
+					<view class="save-price primary-color">
+						可省¥288.00
+					</view>
+					<view class="buy-btn primary-btn">
+						立即购买
+					</view>
+				</view>
+			</view>
+			<view class="group-li clearfix">
+				<view class="float_left">
+					<scroll-view scroll-x="true" class="left-scroll">
+						<view class="goods-ul">
+							<view class="goods-li">
+								<image src="https://onlineimg.qianniao.vip/audit_img.jpg" mode="aspectFill"></image>
+								<view class="goods-name ellipsis">测试商品测试商品</view>
+							</view>
+							<view class="plus-icon">
+								<u-icon name="plus" color="#cecece" size="28"></u-icon>
+							</view>
+							<view class="goods-li">
+								<image src="https://onlineimg.qianniao.vip/audit_img.jpg" mode="aspectFill"></image>
+								<view class="goods-name ellipsis">测试商品测试商品</view>
+							</view>
+							<view class="plus-icon">
+								<u-icon name="plus" color="#cecece" size="28"></u-icon>
+							</view>
+							<view class="goods-li">
+								<image src="https://onlineimg.qianniao.vip/audit_img.jpg" mode="aspectFill"></image>
+								<view class="goods-name ellipsis">测试商品测试商品</view>
+							</view>
+						</view>
+					</scroll-view>
+				</view>
+				<view class="float_left dy-icon">
+					<text class="ibonfont ibonicon"></text>
+				</view>
+				<view class="float_left price-right">
+					<view class="group-price">
+						<text>套餐价</text>
+						<text class="primary-color">¥100.00</text>
+					</view>
+					<view class="save-price primary-color">
+						可省¥288.00
+					</view>
+					<view class="buy-btn primary-btn">
+						立即购买
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	
+</script>
+
+<style lang="scss" scoped>
+	.group-ul{
+		padding: 20rpx;
+		.group-li{
+			background-color: #FFFFFF;
+			border-radius: 12rpx;
+			padding: 20rpx;
+			margin-bottom: 20rpx;
+			.float_left{
+				.left-scroll{
+					width: 430rpx;
+					white-space: nowrap;
+					.goods-li{
+						display: inline-block;
+						vertical-align: middle;
+						image{
+							display: block;
+							width: 150rpx;
+							height: 150rpx;
+							border-radius: 10rpx;
+							margin: 0 auto;
+						}
+						text-align: center;
+						.goods-name{
+							width: 150rpx;
+							height: 36rpx;
+							line-height: 36rpx;
+							margin-top: 10rpx;
+							font-size: 24rpx;
+							-webkit-line-clamp: 1;
+						}
+					}
+					.plus-icon{
+						vertical-align: middle;
+						display: inline-block;
+						line-height: 150rpx;
+						padding: 0 10rpx;
+						height: 200rpx;
+					}
+				}
+			}
+			.dy-icon{
+				padding: 0 10rpx;
+				line-height: 150rpx;
+				padding: 0 10rpx;
+				height: 200rpx;
+				color: #cecece;
+				.ibonicon{
+					font-size: 26rpx;
+				}
+			}
+			.price-right{
+				color: #666666;
+				font-size: 24rpx;
+				text-align: center;
+				width: 190rpx;
+				.group-price{
+					.primary-color{
+						font-weight: 700;
+						font-size: 28rpx;
+					}
+				}
+				.save-price{
+					padding: 10rpx 0;
+				}
+				.buy-btn{
+					line-height: 56rpx;
+					height: 56rpx;
+					border-radius: 8rpx;
+					text-align: center;
+					color: #FFFFFF;
+					width: 150rpx;
+					margin: 10rpx auto 0;
+				}
+			}
+		}
+	}
+</style>

+ 109 - 0
pagesT/money/Balance.vue

@@ -0,0 +1,109 @@
+<template>
+	<view :class="['qn-page-' + theme]">
+		<view class="balace-view primary-lg">
+			<view class="label">账户余额</view>
+			<view class="money">
+				<text class="icon">¥</text>
+				<text>{{ Number(userInfo.memberBalance) || 0 }}</text>
+			</view>
+		</view>
+		<view class="bth-ul">
+			<view class="btn-li" @click="goPage('/pagesT/money/addWithdrawal')">
+				<text class="ibonfont ibondaifukuan"></text>
+				<text class="label">余额提现</text>
+				<text class="ibonfont ibonjinru float_right"></text>
+			</view>
+
+			<view class="btn-li clearfix" @click="goPage('/pagesT/money/BalanceDetail')">
+				<text class="ibonfont ibonnavicon-jylstj"></text>
+				<text class="label">余额流水</text>
+				<text class="ibonfont ibonjinru float_right"></text>
+			</view>
+			<view class="btn-li" @click="setPassword">
+				<text class="ibonfont ibonpassword"></text>
+				<text class="label">设置支付密码</text>
+				<text class="ibonfont ibonjinru float_right"></text>
+			</view>
+			<view class="btn-li clearfix" @click="goPage('/pagesT/money/CustomerBalanceDetail')">
+				<text class="ibonfont iboncaiwuliushui"></text>
+				<text class="label">往来查询</text>
+				<text class="ibonfont ibonjinru float_right"></text>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			userInfo: {}
+		};
+	},
+	onShow() {
+		this.getCustomerInfo();
+	},
+	methods: {
+		// 获取用户信息
+		getCustomerInfo() {
+			this.$u.api.getCustomerInfo().then(({ data }) => {
+				this.userInfo = data;
+				this.$store.commit('commit_userStatus', data);
+			});
+		},
+		setPassword() {
+			// 已经设置过密码
+			if (this.userInfo.payPassword) {
+				this.goPage('/pagesT/money/PayPasswordEditCheck');
+			} else {
+				// 未设置过密码
+				this.goPage('/pagesT/money/PayPassword');
+			}
+		}
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+.balace-view {
+	width: 710rpx;
+	margin: 20rpx auto;
+	text-align: center;
+	color: #ffffff;
+	border-radius: 20rpx;
+	padding: 50rpx 0;
+	.label {
+		font-size: 24rpx;
+		padding-bottom: 10rpx;
+	}
+	.money {
+		font-size: 50rpx;
+		font-weight: bold;
+		font-family: DIN-Medium;
+		.icon {
+			font-size: 28rpx;
+		}
+	}
+}
+.bth-ul {
+	padding: 0 30rpx;
+	width: 710rpx;
+	margin: 40rpx auto 0;
+	background-color: #ffffff;
+	border-radius: 20rpx;
+	.btn-li {
+		line-height: 90rpx;
+		border-bottom: 1px solid #f5f5f5;
+		.label {
+			margin-left: 20rpx;
+		}
+		.ibonjinru {
+			font-size: 28rpx;
+			color: #999999;
+		}
+		&:last-child {
+			border-bottom: 0;
+		}
+	}
+}
+</style>

+ 105 - 0
pagesT/money/BalanceDetail.vue

@@ -0,0 +1,105 @@
+<template>
+	<view :class="['qn-page-' + theme]">
+		<view class="detail-ul">
+			<view class="detail-li" v-for="(item, index) in detail_list" :key="index">
+				<view class="ellipsis title">{{ item.purpose }}</view>
+				<view class="time">{{ $u.timeFormat(item.createTime, 'yyyy-mm-dd hh:MM:ss') }}</view>
+				<view class="money">
+					<text>{{ item.type === 4 ? '-' : '+' }}</text>
+					<text>¥{{ item.money }}</text>
+				</view>
+			</view>
+			<!-- 空白页 -->
+			<Aempty text="暂无数据" src="https://onlineimg.qianniao.vip/list.png" v-if="detail_list.length === 0"></Aempty>
+			<u-loadmore v-else :status="load_status" />
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			load_status: 'nomore',
+			page: 1,
+			pageSize: 10,
+			total: 0,
+			detail_list: []
+		};
+	},
+	computed: {
+		userId() {
+			return this.$store.state.userStatus.id;
+		}
+	},
+	onLoad() {
+		this.getAllMemberBalanceDetail();
+	},
+	onPullDownRefresh() {
+		this.page = 1;
+		this.getAllMemberBalanceDetail();
+	},
+	onReachBottom() {
+		if (this.total / this.pageSize > this.page) {
+			this.page += 1;
+			this.getAllMemberBalanceDetail();
+		}
+	},
+	methods: {
+		getAllMemberBalanceDetail() {
+			this.load_status = 'loading';
+			this.$u.api
+				.getAllMemberBalanceDetail({
+					page: this.page,
+					pageSize: this.pageSize,
+					customerId: this.userId
+				})
+				.then(res => {
+					uni.stopPullDownRefresh();
+					if (this.page === 1) {
+						this.detail_list = res.data;
+					} else {
+						this.detail_list = this.detail_list.concat(res.data);
+					}
+					this.total = res.pageTotal;
+					this.load_status = this.$_utils.loadStatus(this.page, this.pageSize, this.total);
+				})
+				.catch(res => {
+					uni.stopPullDownRefresh();
+					this.load_status = 'nomore';
+				});
+		}
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+.detail-ul {
+	.detail-li {
+		width: 710rpx;
+		margin: 20rpx auto;
+		background-color: #ffffff;
+		border-radius: 16rpx;
+		padding: 24rpx;
+		position: relative;
+		.title {
+			font-weight: bold;
+			padding-bottom: 12rpx;
+			-webkit-line-clamp: 2;
+		}
+		.time {
+			font-size: 24rpx;
+			color: #6c6c6c;
+		}
+		.money {
+			font-weight: bold;
+			font-family: DIN-Medium;
+			position: absolute;
+			right: 24rpx;
+			top: 50%;
+			transform: translateY(-50%);
+			color: $price-color;
+		}
+	}
+}
+</style>

+ 304 - 0
pagesT/money/BankPay.vue

@@ -0,0 +1,304 @@
+<template>
+	<view :class="['qn-page-' + theme]">
+		<u-navbar title="上传打款凭证" :custom-back="customBack"></u-navbar>
+		<view class="money-view">
+			<view class="num">
+				<text class="icon">¥</text>
+				{{ payAmount }}
+			</view>
+			<view class="label">订单金额</view>
+		</view>
+		<view class="bank-view">
+			<u-form label-width="180">
+				<u-form-item label="账户名称">
+					<view class="form-item-in">
+						<u-input @click="copyData(bank_data.name)" v-model="bank_data.name" disabled />
+						<text class="copy-text">复制</text>
+					</view>
+				</u-form-item>
+				<u-form-item label="开户行">
+					<view class="form-item-in">
+						<u-input @click="copyData(bank_data.bankName)" v-model="bank_data.bankName" disabled />
+						<text class="copy-text">复制</text>
+					</view>
+				</u-form-item>
+				<u-form-item label="开户人">
+					<view class="form-item-in">
+						<u-input @click="copyData(bank_data.bankAccount)" v-model="bank_data.bankAccount" disabled />
+						<text class="copy-text">复制</text>
+					</view>
+				</u-form-item>
+				<u-form-item label="银行账户">
+					<view class="form-item-in">
+						<u-input @click="copyData(bank_data.accountNumber)" v-model="bank_data.accountNumber"
+							disabled />
+						<text class="copy-text">复制</text>
+					</view>
+				</u-form-item>
+				<u-form-item label="上传凭证">
+					<QiniuUpload @uploadSuccess="uploadSuccess" :images="bank_data.image" @handleRemove="imgRemove">
+						<!-- <div slot="cont">
+							<view class="bank-license" v-for="item,index in bank_data.image" :key='index'>
+								<block v-if="item">
+									<img class="license-pic" :src="item" alt="" />
+									<u-icon name="close" class='del-icon' size='30' @click.stop="handleRemove(item, index)">
+									</u-icon>
+								</block>
+							</view>
+							<view class="bank-license">
+								<text>+</text>
+							</view>
+						</div> -->
+					</QiniuUpload>
+				</u-form-item>
+				<u-form-item label="备注">
+					<view class="form-item-in">
+						<u-input v-model="bank_data.remark" disabled />
+					</view>
+				</u-form-item>
+			</u-form>
+		</view>
+		<view class="confirm-btn primary-bg" @click="backConfirm">
+			<u-loading v-if="loading" mode="circle"></u-loading>
+			确定
+		</view>
+	</view>
+</template>
+
+<script>
+	import QiniuUpload from '../components/qiniu/QiniuUpload.vue';
+	export default {
+		components: {
+			QiniuUpload
+		},
+		data() {
+			return {
+				loading: false,
+				bank_data: {
+					// 银行信息
+					id: '',
+					name: '',
+					image: [],
+					bankName: '',
+					accountNumber: ''
+				},
+				payAmount: 0,
+				orderId: 0,
+				tmplIds: []
+			};
+		},
+		onLoad(options) {
+			this.payAmount = options.payAmount || '0.00';
+			if (Array.isArray(options.orderId)) {
+				this.orderId = options.orderId;
+			} else {
+				this.orderId = [options.orderId];
+			}
+
+			this.getPaymentType();
+			// 获取订阅消息模版
+			// #ifdef MP-WEIXIN
+			this.getSettingDataByMessageId()
+			// #endif
+		},
+		methods: {
+			// 复制到剪贴板
+			copyData(data) {
+				uni.setClipboardData({
+					data: data,
+					success: () => {
+						this.$u.toast('已复制到剪贴板');
+					}
+				});
+			},
+			// 上传银行凭证
+			uploadSuccess(imgData, uploadPicUrl) {
+				this.bank_data.image.push(uploadPicUrl);
+			},
+			// 确定 订阅消息
+			backConfirm() {
+				// #ifdef MP-WEIXIN
+				console.log(this.tmplIds)
+				if (this.tmplIds.length) {
+					uni.requestSubscribeMessage({
+						tmplIds: this.tmplIds,
+						success: res => {
+							this.addOrderBankData();
+						},
+						fail: res => {
+							this.addOrderBankData();
+						}
+					});
+				} else {
+					this.addOrderBankData();
+				}
+				// #endif
+				// #ifdef APP-PLUS
+				this.addOrderBankData();
+				// #endif
+			},
+			// 确定
+			addOrderBankData() {
+				if (this.loading) {
+					return;
+				}
+
+				if (!this.bank_data.image && !this.bank_data.image.length) {
+					this.$u.toast('请上传打款凭证');
+					return;
+				}
+				this.loading = true;
+				this.$u.api
+					.addOrderBankData({
+						orderId: this.orderId,
+						bankData: this.bank_data
+					})
+					.then(res => {
+						this.loading = false;
+						this.$u.toast('操作成功');
+						setTimeout(res => {
+							this.customBack();
+						}, 1500);
+					})
+					.catch(err => {
+						this.loading = false;
+					});
+			},
+			customBack() {
+				uni.redirectTo({
+					url: '/pagesT/order/order?state=0'
+				});
+			},
+			getPaymentType() {
+				this.$u.api.getPaymentType().then(res => {
+					const bankType = res.data.find(item => item.id === 4);
+					if (bankType) {
+						const accountData = bankType.accountData;
+						this.bank_data = {
+							id: accountData.id,
+							name: accountData.name,
+							image: [],
+							bankName: accountData.bankName,
+							accountNumber: accountData.accountNumber,
+							bankAccount: accountData.bankAccount,
+							remark: accountData.remark,
+						};
+					}
+				});
+			},
+			// 获取消息模版ID
+			getSettingDataByMessageId() {
+				this.$u.api
+					.getSettingDataByMessageId({
+						id: [4]
+					})
+					.then(res => {
+						if (res.data.length > 0) {
+							this.tmplIds = res.data.map(item => {
+								return item.weixinTemplateId;
+							});
+						}
+					});
+			},
+			//移除图片
+			// handleRemove(url, index) {
+			// 	this.bank_data.image.splice(index, 1);
+			// }
+			imgRemove(arr) {
+				this.bank_data.image = arr;
+			}
+		}
+	};
+</script>
+
+<style scoped lang="scss">
+	.bank-view {
+		background-color: #ffffff;
+		padding: 0 30rpx;
+		width: 700rpx;
+		margin: 0 auto;
+		border-radius: 16rpx;
+
+		.form-item-in {
+			position: relative;
+
+			.copy-text {
+				position: absolute;
+				right: 20rpx;
+				display: block;
+				top: 50%;
+				transform: translateY(-50%);
+				color: #999999;
+				font-size: 24rpx;
+			}
+		}
+
+		.bank-license {
+			width: 124upx;
+			height: 124upx;
+			border-radius: 8upx;
+			border: 2upx #999999 dashed;
+			margin: 32upx 10rpx;
+			background: #eee;
+			text-align: center;
+			line-height: 100upx;
+			color: #666;
+			font-size: 100rpx;
+			font-weight: 300;
+			display: inline-block;
+			vertical-align: middle;
+			position: relative;
+
+			.del-icon {
+				box-sizing: border-box;
+				padding-left: 7rpx;
+				position: absolute;
+				color: #fff;
+				right: -12rpx;
+				top: -20upx;
+				background-color: #FD463E;
+				width: 40rpx;
+				height: 40rpx;
+				border-radius: 100%;
+				line-height: 40rpx;
+			}
+		}
+
+		.license-pic {
+			width: 120upx;
+			height: 120upx;
+			display: block;
+		}
+	}
+
+	.confirm-btn {
+		color: #ffffff;
+		line-height: 90rpx;
+		text-align: center;
+		position: fixed;
+		bottom: 0;
+		width: 100%;
+		left: 0;
+	}
+
+	.money-view {
+		padding: 60rpx 0;
+		text-align: center;
+
+		.num {
+			font-family: DIN-Medium;
+			font-weight: bold;
+			font-size: 64rpx;
+
+			.icon {
+				font-size: 40rpx;
+			}
+		}
+
+		.label {
+			color: #6c6c6c;
+			font-size: 24rpx;
+			padding-top: 20rpx;
+		}
+	}
+</style>

+ 315 - 0
pagesT/money/CustomerBalanceDetail.vue

@@ -0,0 +1,315 @@
+<template>
+	<view :class="['qn-page-' + theme]">
+		<view class="tabs-view">
+			<view class="time-search">
+				<view class="time-li" @click="timeShow('start_show')">{{ $u.timeFormat(start, 'yyyy-mm-dd') }}</view>
+				<view class="icon"><u-icon name="arrow-right"></u-icon></view>
+				<view class="time-li" @click="timeShow('end_show')">{{ $u.timeFormat(end, 'yyyy-mm-dd') }}</view>
+			</view>
+			<view class="start-view clearfix">
+				<text class="float_left">期初余额</text>
+				<text class="float_right">{{ $_utils.formattedNumber(openingBalance) }}</text>
+			</view>
+		</view>
+		<view class="list-ul">
+			<view class="list-li" v-for="(item, index) in balance_list" :key="index">
+				<view class="title">{{ item.no }}</view>
+				<view class="list-cont">
+					<view class="info-li type">{{ item.financeType }}</view>
+					<view class="info-li">源单号:{{ item.sourceNo }}</view>
+					<view class="money-ul">
+						<view class="money-li">
+							<text>销售金额:</text>
+							{{ $_utils.formattedNumber(item.salesAmount) }}
+						</view>
+						<view class="money-li">
+							<text>优惠金额:</text>
+							{{ $_utils.formattedNumber(item.discountMoney) }}
+						</view>
+						<view class="money-li">
+							<text>应收金额:</text>
+							{{ $_utils.formattedNumber(item.receivableAmount) }}
+						</view>
+					</view>
+					<view class="money-ul">
+						<view class="money-li">
+							<text>实收金额:</text>
+							{{ $_utils.formattedNumber(item.actualReceivableAmount) }}
+						</view>
+						<view class="money-li">
+							<text>应收余额:</text>
+							<text class="money">{{ $_utils.formattedNumber(item.receivableBalance) }}</text>
+						</view>
+					</view>
+				</view>
+				<view class="remark">{{ item.remark }}</view>
+			</view>
+			<Aempty v-if="!balance_list.length" text="暂无数据" src="https://onlineimg.qianniao.vip/data.png"></Aempty>
+			<u-loadmore v-else :status="load_status" />
+		</view>
+		<view class="bottom-view">
+			<view class="end-view clearfix">
+				<text class="float_left">期末余额</text>
+				<text class="float_right">{{ $_utils.formattedNumber(endingBalance) }}</text>
+			</view>
+			<view class="clearfix total-view">
+				<text class="float_left">合计</text>
+				<view class="float_right">
+					<view class="money-li">实收金额:{{ $_utils.formattedNumber(actualReceiveTotal) }}</view>
+					<view class="money-li">
+						应收余额:
+						<text>{{ $_utils.formattedNumber(shouldReceiveTotal) }}</text>
+					</view>
+				</view>
+			</view>
+		</view>
+		<u-picker v-model="start_show" mode="time" :params="time_params" @confirm="startconfirm"></u-picker>
+		<u-picker v-model="end_show" mode="time" :params="time_params" @confirm="endconfirm"></u-picker>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			load_status: 'nomore',
+			balance_list: [],
+			time_params: {
+				year: true,
+				month: true,
+				day: true,
+				hour: false,
+				minute: false,
+				second: false
+			},
+			start_show: false,
+			end_show: false,
+			keyword: '',
+			page: 1,
+			pageSize: 10,
+			total: 0,
+			show: false,
+			customerId: '',
+			start: '',
+			end: '',
+			openingBalance: 0,
+			endingBalance: 0,
+			actualReceiveTotal: 0,
+			shouldReceiveTotal: 0,
+			customerData: ''
+		};
+	},
+	computed:{
+		userInfo(){
+			return this.$store.state.userStatus
+		}
+	},
+	onReachBottom() {
+		if (this.total / this.pageSize > this.page) {
+			this.page += 1;
+			this.getAllCustomerBalanceDetail();
+		}
+	},
+	onLoad() {
+		// 开始时间本月第一天 结束时间当前时间
+		this.start = this.$_utils.dateToStamp(this.$_utils.showMonthFirstDay())
+		this.end = parseInt(new Date().getTime()/1000)
+		this.getAllCustomerBalanceDetail();
+	},
+	methods: {
+		clearValue(){
+			this.keyword = '';
+			this.customerId = '';
+			this.page = 1;
+			this.getAllCustomerBalanceDetail()
+		},
+		tabsChange(index) {
+			this.tabs_current = index;
+			this.page = 1;
+		},
+		timeShow(params) {
+			this[params] = true;
+		},
+		getAllCustomerBalanceDetail() {
+			this.load_status='loading'
+			let params = {
+				page: this.page,
+				pageSize: this.pageSize,
+				customerId: this.userInfo.id,
+				start: this.start,
+				end: this.end
+			};
+			this.$u.api.getAllCustomerBalanceDetail(params).then(res => {
+				if (this.page === 1) {
+					this.balance_list = res.data;
+				} else {
+					this.balance_list = this.balance_list.concat(res.data);
+				}
+				this.openingBalance = res.openingBalance;
+				this.endingBalance = res.endingBalance;
+				this.actualReceiveTotal = res.actualReceiveTotal;
+				this.shouldReceiveTotal = res.shouldReceiveTotal;
+				this.load_status = this.$_utils.loadStatus(this.page, this.pageSize, res.pageTotal);
+				this.total = res.pageTotal;
+			});
+		},
+		startconfirm(val) {
+			this.start = this.$_utils.dateToStamp(val.year + '-' + val.month + '-' + val.day + ' 00:00:00');
+			this.page = 1;
+		},
+		endconfirm(val) {
+			this.end = this.$_utils.dateToStamp(val.year + '-' + val.month + '-' + val.day + ' 23:59:59');
+			this.page = 1;
+			if (!this.customerId) {
+				this.$u.toast('请选择客户');
+				return;
+			}
+			this.getAllCustomerBalanceDetail();
+		}
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+.tabs-view {
+	position: fixed;
+	top: 0;
+	left: 0;
+	width: 100%;
+	background-color: #ffffff;
+	z-index: 99;
+	.time-search {
+		line-height: 80rpx;
+		text-align: center;
+		border-bottom: 1px solid #eeeeee;
+
+		.time-li {
+			display: inline-block;
+			width: 350rpx;
+		}
+
+		.icon {
+			width: 50rpx;
+			display: inline-block;
+		}
+	}
+
+	.start-view {
+		line-height: 80rpx;
+		padding: 0 30rpx;
+		background-color: #ffffff;
+
+		.float_right {
+			color: $uni-color-error;
+			font-size: 32rpx;
+			font-weight: bold;
+		}
+	}
+}
+
+.list-ul {
+	padding-top: 160rpx;
+	padding-bottom: 200rpx;
+	.list-li {
+		width: 710rpx;
+		margin: 20rpx auto;
+		padding: 0 30rpx 24rpx;
+		background-color: #ffffff;
+		border-radius: 20rpx;
+
+		.title {
+			line-height: 80rpx;
+			border-bottom: 1px solid #eeeeee;
+		}
+
+		.remark {
+			line-height: 80rpx;
+			border-top: 1px solid #eeeeee;
+			margin-top: 20rpx;
+		}
+
+		.list-cont {
+			margin-top: 10rpx;
+			font-size: 24rpx;
+			line-height: 40rpx;
+
+			.type {
+				font-weight: bold;
+				font-size: 28rpx;
+				padding: 10rpx 0;
+			}
+
+			.money-ul {
+				margin-top: 10rpx;
+				display: flex;
+
+				.money-li {
+					flex: 3;
+					text-align: center;
+					font-weight: bold;
+
+					text {
+						color: #999999;
+						font-weight: normal;
+					}
+
+					.money {
+						color: $uni-color-error;
+						font-weight: bold;
+					}
+
+					&:last-child {
+						text-align: right;
+					}
+
+					&:first-child {
+						text-align: left;
+					}
+				}
+			}
+		}
+	}
+}
+
+.bottom-view {
+	box-shadow: 0px 2px 12rpx rgba(0, 0, 0, 0.2);
+	position: fixed;
+	bottom: 0;
+	width: 100%;
+	left: 0;
+	background-color: #ffffff;
+	padding: 20rpx 30rpx;
+	z-index: 9;
+	// line-height: 90rpx;
+	.end-view {
+		padding-bottom: 20rpx;
+		border-bottom: 1px solid #eeeeee;
+		margin-bottom: 20rpx;
+
+		.float_right {
+			color: $uni-color-error;
+			font-size: 32rpx;
+			font-weight: bold;
+		}
+	}
+
+	.total-view {
+		color: #6c6c6c;
+
+		.float_right {
+			font-size: 24rpx;
+
+			.money-li {
+				margin-left: 30rpx;
+				display: inline-block;
+
+				text {
+					color: $uni-color-error;
+					font-size: 32rpx;
+					font-weight: bold;
+				}
+			}
+		}
+	}
+}
+</style>

+ 95 - 0
pagesT/money/PayPassword.vue

@@ -0,0 +1,95 @@
+<template>
+	<view :class="['qn-page-' + theme]">
+		<view class="back-icon" @click="backPage"><u-icon name="close" size="32"></u-icon></view>
+		<view>
+			<view class="top-view">
+				<view class="title">设置支付密码</view>
+				<view class="desc">请输入支付密码,用户支付验证</view>
+			</view>
+			<view class="u-flex u-row-center">
+				<u-message-input :mask="false" mode="box" :maxlength="6" :dot-fill="true" v-model="password" :disabled-keyboard="true" @finish="finish"></u-message-input>
+			</view>
+		</view>
+		<u-keyboard
+			default=""
+			ref="uKeyboard"
+			mode="number"
+			:mask="false"
+			:mask-close-able="false"
+			:dot-enabled="false"
+			v-model="show"
+			:safe-area-inset-bottom="true"
+			:tooltip="false"
+			@change="onChange"
+			@backspace="onBackspace"
+		></u-keyboard>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			show: true,
+			password: ''
+		};
+	},
+	onLoad() {},
+	methods: {
+		backPage() {
+			uni.navigateBack();
+		},
+		//按键被点击(不包含退格键被点击)
+		onChange(val) {
+			if (this.password.length < 6) {
+				this.password += val;
+			}
+
+			if (this.password.length >= 6) {
+				this.pay();
+			}
+		},
+		//键盘退格键被点击
+		onBackspace(e) {
+			if (this.password.length > 0) {
+				this.password = this.password.substring(0, this.password.length - 1);
+			}
+		},
+		pay() {
+			this.goPage('/pagesT/money/PayPasswordAgin?password=' + this.password, 'redirectTo');
+		},
+		showPop(flag = true) {
+			this.password = '';
+			this.show = flag;
+		},
+		finish() {
+			console.log(11111);
+		}
+	}
+};
+</script>
+<style>
+page {
+	background-color: #ffffff;
+}
+</style>
+<style lang="scss" scoped>
+.top-view {
+	text-align: center;
+	padding-top: 300rpx;
+	.title {
+		font-size: 32rpx;
+		font-weight: bold;
+		padding-bottom: 30rpx;
+	}
+	.desc {
+		padding-bottom: 100rpx;
+	}
+}
+.back-icon {
+	position: fixed;
+	top: 100rpx;
+	left: 40rpx;
+	z-index: 999999;
+}
+</style>

+ 164 - 0
pagesT/money/PayPasswordAgin.vue

@@ -0,0 +1,164 @@
+<template>
+	<view :class="['qn-page-' + theme]">
+		<view class="back-icon" @click="backPage"><u-icon name="close" size="32"></u-icon></view>
+		<view>
+			<view class="top-view">
+				<view class="title">设置支付密码</view>
+				<view class="desc">请再次填写确认</view>
+			</view>
+			<view class="u-flex u-row-center" @click="openKey">
+				<u-message-input :mask="false" mode="box" :maxlength="6" :dot-fill="true" v-model="password" :disabled-keyboard="true" @finish="finish"></u-message-input>
+			</view>
+			<view class="confirm-btn primary-btn" @click="confirm">完成</view>
+		</view>
+		<u-keyboard
+			default=""
+			ref="uKeyboard"
+			mode="number"
+			:mask="false"
+			:mask-close-able="false"
+			:dot-enabled="false"
+			v-model="keyboard_show"
+			:safe-area-inset-bottom="true"
+			:tooltip="false"
+			@change="onChange"
+			@backspace="onBackspace"
+		></u-keyboard>
+		<u-modal
+			v-model="model_show"
+			:show-cancel-button="true"
+			content="是否要放弃设置支付密码?"
+			cancel-text="否"
+			confirm-text="是"
+			:confirm-color="primaryColor"
+			@confirm="modelConfirm"
+		></u-modal>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			model_show: false,
+			keyboard_show: true,
+			password: '',
+			agin_pwd: ''
+		};
+	},
+	computed: {
+		userInfo() {
+			return this.$store.state.userStatus;
+		}
+	},
+	onLoad(options) {
+		this.agin_pwd = options.password;
+	},
+	methods: {
+		backPage() {
+			this.model_show = true;
+		},
+		openKey() {
+			this.keyboard_show = true;
+		},
+		//按键被点击(不包含退格键被点击)
+		onChange(val) {
+			if (this.password.length < 6) {
+				this.password += val;
+			}
+			if (this.password.length >= 6) {
+				if (this.agin_pwd !== this.password) {
+					this.password = '';
+					this.$u.toast('两次密码输入不一致');
+				} else {
+					this.keyboard_show = false;
+				}
+			}
+		},
+		//键盘退格键被点击
+		onBackspace(e) {
+			if (this.password.length > 0) {
+				this.password = this.password.substring(0, this.password.length - 1);
+			}
+		},
+		modelConfirm() {
+			uni.navigateBack();
+		},
+		confirm() {
+			if (!this.userInfo.payPassword) {
+				this.$u.api
+					.addpayPassword({
+						id: this.userInfo.id,
+						payPassword: this.password
+					})
+					.then(res => {
+						this.$u.toast('设置成功');
+						this.$store.commit('commit_userStatus', {
+							...this.userInfo,
+							payPassword: this.password
+						});
+						setTimeout(res => {
+							uni.navigateBack();
+						}, 2000);
+					});
+			} else {
+				this.$u.api
+					.updatePayPassword({
+						id: this.userInfo.id,
+						payPassword: this.password
+					})
+					.then(res => {
+						this.$u.toast('修改成功');
+						this.$store.commit('commit_userStatus', {
+							...this.userInfo,
+							payPassword: this.password
+						});
+						setTimeout(res => {
+							uni.navigateBack();
+						}, 2000);
+					});
+			}
+		},
+		finish() {
+			console.log(11111);
+		}
+	}
+};
+</script>
+<style>
+page {
+	background-color: #ffffff;
+}
+</style>
+<style lang="scss" scoped>
+.top-view {
+	text-align: center;
+	padding-top: 300rpx;
+	.title {
+		font-size: 32rpx;
+		font-weight: bold;
+		padding-bottom: 30rpx;
+	}
+	.desc {
+		padding-bottom: 100rpx;
+	}
+}
+.confirm-btn {
+	width: 680rpx;
+	margin: 40rpx auto;
+	color: #ffffff;
+	background-color: $uni-color-primary;
+	line-height: 80rpx;
+	height: 80rpx;
+	text-align: center;
+	border-radius: 12rpx;
+	position: relative;
+	z-index: 10070;
+}
+.back-icon {
+	position: fixed;
+	top: 100rpx;
+	left: 40rpx;
+	z-index: 999999;
+}
+</style>

+ 110 - 0
pagesT/money/PayPasswordEditCheck.vue

@@ -0,0 +1,110 @@
+<template>
+	<view>
+		<view class="back-icon" @click="backPage"><u-icon name="close" size="32"></u-icon></view>
+		<view>
+			<view class="top-view">
+				<view class="title">设置支付密码</view>
+				<view class="desc">请输入支付密码,以验证身份</view>
+			</view>
+			<view class="u-flex u-row-center">
+				<u-message-input :mask="false" mode="box" :maxlength="6" :dot-fill="true" v-model="password" :disabled-keyboard="true" @finish="finish"></u-message-input>
+			</view>
+		</view>
+		<u-keyboard
+			default=""
+			ref="uKeyboard"
+			mode="number"
+			:mask="false"
+			:mask-close-able="false"
+			:dot-enabled="false"
+			v-model="show"
+			:safe-area-inset-bottom="true"
+			:tooltip="false"
+			@change="onChange"
+			@backspace="onBackspace"
+		></u-keyboard>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			show: true,
+			password: ''
+		};
+	},
+	computed: {
+		userInfo() {
+			return this.$store.state.userStatus;
+		}
+	},
+	onLoad() {},
+	methods: {
+		backPage() {
+			uni.navigateBack();
+		},
+		//按键被点击(不包含退格键被点击)
+		onChange(val) {
+			if (this.password.length < 6) {
+				this.password += val;
+			}
+
+			if (this.password.length >= 6) {
+				this.checkPayPassword();
+			}
+		},
+		//键盘退格键被点击
+		onBackspace(e) {
+			if (this.password.length > 0) {
+				this.password = this.password.substring(0, this.password.length - 1);
+			}
+		},
+		checkPayPassword() {
+			this.$u.api
+				.checkPayPassword({
+					id: this.userInfo.id,
+					payPassword: this.password
+				})
+				.then(res => {
+					this.goPage('/pagesT/money/PayPassword', 'redirectTo');
+				})
+				.catch(err => {
+					this.password = '';
+				});
+		},
+		showPop(flag = true) {
+			this.password = '';
+			this.show = flag;
+		},
+		finish() {
+			console.log(11111);
+		}
+	}
+};
+</script>
+<style>
+page {
+	background-color: #ffffff;
+}
+</style>
+<style lang="scss" scoped>
+.top-view {
+	text-align: center;
+	padding-top: 300rpx;
+	.title {
+		font-size: 32rpx;
+		font-weight: bold;
+		padding-bottom: 30rpx;
+	}
+	.desc {
+		padding-bottom: 100rpx;
+	}
+}
+.back-icon {
+	position: fixed;
+	top: 100rpx;
+	left: 40rpx;
+	z-index: 999999;
+}
+</style>

+ 397 - 0
pagesT/money/addWithdrawal.vue

@@ -0,0 +1,397 @@
+<template>
+	<!-- 申请提现 -->
+	<view class="Withdrawal" :class="['qn-page-' + theme]">
+		<view class="w-view w-channel clearfix" @click="openPay" v-if="!shenhe">
+			<!-- <view class="w-view w-channel clearfix" @click="openPay" v-if="shenhe == 1"> -->
+			<view class="float_left">转出方式</view>
+			<view class="float_right">
+				<text v-if="cash_out_form.reflectType">{{ cash_out_form.reflectType }}</text>
+				<text v-else class="w-input-place">请选择</text>
+				<text class="ibonfont ibonjinru"></text>
+			</view>
+		</view>
+		<view class="w-view clearfix" v-if="cash_out_form.reflectType">
+			<view class="float_left">姓名</view>
+			<view class="float_right">
+				<input type="text" placeholder-class="w-input-place" placeholder="请输入真实姓名" class="w-input" v-model="cash_out_form.reflectInfo.name" />
+			</view>
+		</view>
+		<block v-if="cash_out_form.reflectType === '微信钱包'">
+			<view class="w-view clearfix">
+				<view class="float_left">微信账号</view>
+				<view class="float_right">
+					<input placeholder-class="w-input-place" class="w-input" placeholder="请输入微信账号" type="text" v-model="cash_out_form.reflectInfo.account" />
+				</view>
+			</view>
+		</block>
+		<block v-if="cash_out_form.reflectType === '支付宝'">
+			<view class="w-view clearfix">
+				<view class="float_left">支付宝账号</view>
+				<view class="float_right">
+					<input placeholder-class="w-input-place" class="w-input" placeholder="请输入支付宝账号" type="text" v-model="cash_out_form.reflectInfo.account" />
+				</view>
+			</view>
+		</block>
+		<block v-if="cash_out_form.reflectType === '银行卡'">
+			<view class="w-view clearfix">
+				<view class="float_left">开户银行</view>
+				<view class="float_right">
+					<input placeholder-class="w-input-place" placeholder="请输入开户银行" class="w-input" type="text" v-model="cash_out_form.reflectInfo.bankName" />
+				</view>
+			</view>
+			<view class="w-view clearfix">
+				<view class="float_left">银行卡号</view>
+				<view class="float_right">
+					<input placeholder-class="w-input-place" placeholder="请输入银行卡号" class="w-input" type="number" v-model="cash_out_form.reflectInfo.account" />
+				</view>
+			</view>
+			<view class="w-view clearfix">
+				<view class="float_left">确认卡号</view>
+				<view class="float_right"><input placeholder-class="w-input-place" placeholder="请再次输入银行卡号" class="w-input" type="text" v-model="agin_card_num" /></view>
+			</view>
+		</block>
+		<view class="w-view w-money">
+			<view class="w-tit">
+				<text>提现金额</text>
+				<text class="w-tit-r">最少提现金额{{ min_money }}元</text>
+			</view>
+			<view class="w-money-input-view">
+				<text class="rmb-ic">¥</text>
+				<input class="w-money-input" type="number" v-model="cash_out_form.money" />
+			</view>
+		</view>
+		<view class="clearfix w-tip">
+			<view class="float_left">
+				<text>可提现:¥{{ userInfo.memberBalance }}</text>
+				<!-- <text>(手续费:10%)</text> -->
+			</view>
+			<view class="float_right primary-color" @click="allWitjdrawal">全部提现</view>
+		</view>
+		<view class="w-btn w-btn-on" @click="withdrawalsAdd">
+			<u-loading :show="isLoding"></u-loading>
+			<text style="margin-left: 10rpx;">提现</text>
+		</view>
+		<u-popup mode="bottom" v-model="payPop" :border-radius="12">
+			<view class="pay-pop-view">
+				<view class="pay-sel-title clearfix">
+					<text class="float_left">提现方式</text>
+					<text class="float_right ibonfont ibonguanbi1" @click="closePayPop"></text>
+				</view>
+				<view class="pay-ul">
+					<view class="pay-li" @click="paymentChange('微信钱包')">
+						<text class="ibonfont ibonweixinzhifu"></text>
+						<view class="pay-name clearfix">
+							<text class="float_left">微信钱包</text>
+							<text class="float_right ibonfont primary-color" :class="[cash_out_form.reflectType === '微信钱包' ? 'ibonxuanze_xuanzhong' : 'ibonxuanze']"></text>
+						</view>
+					</view>
+					<view class="pay-li" @click="paymentChange('支付宝')">
+						<text class="ibonfont ibonumidd17"></text>
+						<view class="pay-name clearfix">
+							<text class="float_left">支付宝</text>
+							<text class="float_right ibonfont primary-color" :class="[cash_out_form.reflectType === '支付宝' ? 'ibonxuanze_xuanzhong' : 'ibonxuanze']"></text>
+						</view>
+					</view>
+					<view class="pay-li" @click="paymentChange('银行卡')">
+						<text class="ibonfont ibonyinhangqia"></text>
+						<view class="pay-name clearfix">
+							<text class="float_left">银行卡</text>
+							<text class="float_right ibonfont primary-color" :class="[cash_out_form.reflectType === '银行卡' ? 'ibonxuanze_xuanzhong' : 'ibonxuanze']"></text>
+						</view>
+					</view>
+				</view>
+			</view>
+		</u-popup>
+	</view>
+</template>
+
+<script>
+// import { getOpenid } from '@/access/common.js';
+export default {
+	data() {
+		return {
+			min_money: 1, // 最少提现
+			isLoding: false,
+			payPop: false,
+			cash_out_form: {
+				customerId: '',
+				reflectType: '', //提现方式
+				money: 0, // 输入提现金额
+				reflectInfo: {
+					name: '', // 提现者姓名
+					account: '', // 提现账号
+					bankName: '' //银行名称
+				},
+				remark: ''
+			},
+			agin_card_num: '', //确认卡号
+			userInfo: {},
+			shenhe: true,//true->审核中 false->已过审
+		};
+	},
+
+	onShow() {
+		this.getCustomerInfo();
+		this.getSh()
+	},
+	methods: {
+		getSh() {
+			this.$u.api.getBasicField({'field': ["shenhe"]}).then(({data})=> {
+				// this.shenhe = data/
+				// console.log(data);
+				this.shenhe = data.shenhe
+			})
+		},
+		// 获取用户信息
+		getCustomerInfo() {
+			this.$u.api.getCustomerInfo().then(({ data }) => {
+				this.userInfo = data;
+				this.$store.commit('commit_userStatus', data);
+			});
+		},
+		// 申请提现
+		withdrawalsAdd() {
+			if (this.cash_out_form.reflectType === '支付宝') {
+				if (!this.$u.trim(this.cash_out_form.reflectInfo.name)) {
+					this.$u.toast('请输入您的真实姓名');
+					return;
+				}
+				if (!this.$u.trim(this.cash_out_form.reflectInfo.account)) {
+					this.$u.toast('请输入您的支付宝账号');
+					return;
+				}
+			} else if (this.cash_out_form.reflectType === '银行卡') {
+				if (!this.$u.trim(this.cash_out_form.reflectInfo.name)) {
+					this.$u.toast('请输入您的真实姓名');
+					return;
+				}
+				if (!this.$u.trim(this.cash_out_form.reflectInfo.bankName)) {
+					this.$u.toast('请选择银行名称');
+					return;
+				}
+				if (!this.$u.trim(this.cash_out_form.reflectInfo.account)) {
+					this.$u.toast('请输入您的银行账号');
+					return;
+				}
+				if (!this.$u.trim(this.agin_card_num)) {
+					this.$u.toast('请再次输入您的银行账号');
+					return;
+				}
+				if (this.agin_card_num !== this.cash_out_form.reflectInfo.account) {
+					this.$u.toast('确认卡号与银行卡号不一致');
+					return;
+				}
+			} else {
+				if (!this.$u.trim(this.cash_out_form.reflectInfo.name)) {
+					this.$u.toast('请输入您的真实姓名');
+					return;
+				}
+				if (!this.$u.trim(this.cash_out_form.reflectInfo.account)) {
+					this.$u.toast('请输入您的微信手机号');
+					return;
+				}
+				if (!this.$u.trim(this.cash_out_form.reflectInfo.account)) {
+					this.$u.toast('请输入您的微信账号');
+					return;
+				}
+			}
+			if (!this.cash_out_form.money) {
+				this.$u.toast('请输入要提现金额');
+				return;
+			}
+			if (Number(this.cash_out_form.money) < this.min_money) {
+				this.$u.toast('最低提现金额为' + this.min_money + '元');
+				return;
+			}
+			if (Number(this.cash_out_form.money) > Number(this.userInfo.memberBalance)) {
+				this.$u.toast('可提现金额不足');
+				return;
+			}
+			this.isLoding = true;
+			this.$u.api
+				.addReflectDetail({
+					...this.cash_out_form,
+					customerId: this.userInfo.id
+				})
+				.then(res => {
+					this.isLoding = false;
+					this.$u.toast('提现申请成功');
+					setTimeout(res => {
+						this.goPage('/pages/user/user', 'switchTab');
+					}, 2000);
+				})
+				.catch(res => {
+					this.isLoding = false;
+				});
+		},
+		// 全部提现按钮点击事件
+		allWitjdrawal() {
+			this.cash_out_form.money = this.cash_out_form.nowMoney;
+			console.log(this.cash_out_form.nowMoney,'this.cash_out_form.nowMoney');
+		},
+		// 自动提现
+		paymentChange(val) {
+			this.cash_out_form.reflectType = val;
+			this.closePayPop();
+		},
+		closePayPop() {
+			this.payPop = false;
+			this.cash_out_form.reflectInfo.account = '';
+			this.cash_out_form.reflectInfo.bankName = '';
+		},
+		openPay() {
+			this.payPop = true;
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.Withdrawal {
+	width: 702upx;
+	margin: 20upx auto;
+	padding: 0 24upx 50upx;
+	background-color: #ffffff;
+	font-size: 28upx;
+	.w-view {
+		border-bottom: 1px solid #f5f5f5;
+		padding: 24upx 0;
+		.ibonjinru {
+			font-size: 28upx;
+			color: #666;
+			height: 32upx;
+			margin-left: 10upx;
+		}
+		.w-input {
+			width: 480rpx;
+		}
+		.w-input-place {
+			color: #b0b3bf;
+			font-size: 26upx;
+		}
+		.w-tit {
+			.w-tit-r {
+				margin-left: 10upx;
+				font-size: 24upx;
+				color: #b0b3bf;
+			}
+		}
+	}
+	.w-money {
+		.w-money-input-view {
+			padding-top: 40upx;
+			.rmb-ic {
+				font-size: 60upx;
+				font-weight: bold;
+				display: inline-block;
+				vertical-align: middle;
+				height: 70upx;
+			}
+			.w-money-input {
+				display: inline-block;
+				width: 580upx;
+				height: 70upx;
+				font-size: 60upx;
+				padding-left: 20upx;
+				font-weight: bold;
+				vertical-align: middle;
+				padding-top: 6rpx;
+			}
+		}
+	}
+	.w-tip {
+		font-size: 24upx;
+		padding: 20upx 0 50upx;
+	}
+	.w-btn {
+		margin: 0 auto;
+		width: 660upx;
+		line-height: 70upx;
+		height: 70upx;
+		color: #666;
+		text-align: center;
+		font-size: 28upx;
+		border-radius: 70upx;
+		background-color: #eee;
+	}
+	.w-btn-on {
+		color: #fff;
+		background-color: #fe582e;
+	}
+}
+.pay-pop-view {
+	background-color: #ffffff;
+	border-top-left-radius: 12upx;
+	border-top-right-radius: 12upx;
+	padding-bottom: 40upx;
+	font-size: 28upx;
+	.pay-sel-title {
+		padding: 0 30upx;
+		line-height: 88upx;
+		font-weight: bold;
+		font-size: 32upx;
+		.ibonfont {
+			color: #999;
+			font-weight: 400;
+			width: 50rpx;
+			text-align: center;
+			font-size: 24rpx;
+		}
+	}
+	.pay-btn {
+		width: 690upx;
+		height: 80upx;
+		line-height: 80upx;
+		color: #fff;
+		font-size: 32upx;
+		text-align: center;
+		margin: 20upx auto 0;
+		border-radius: 80upx;
+	}
+	.pay-ul {
+		.pay-tip {
+			font-size: 24upx;
+			color: #999999;
+			line-height: 32upx;
+			padding: 20upx 30upx 0;
+		}
+		.pay-li {
+			line-height: 100upx;
+
+			.ibonfont {
+				padding-left: 30upx;
+				font-size: 46upx;
+				vertical-align: middle;
+				margin-right: 24upx;
+			}
+			.ibonweixinzhifu {
+				color: #04be02;
+			}
+			.ibonumidd17 {
+				color: #108ee9;
+			}
+			.ibonyinhangqia {
+				color: #f2b844;
+			}
+			.pay-name {
+				width: 650upx;
+				display: inline-block;
+				padding-right: 30upx;
+				vertical-align: middle;
+				border-bottom: 1px solid #f5f5f5;
+				.ibonxuanze,
+				.ibonxuanze_xuanzhong {
+					margin-right: 0;
+					padding-left: 0;
+					font-size: 38upx;
+				}
+			}
+		}
+		.pay-li:last-child {
+			.pay-name {
+				border-bottom: 0 none;
+			}
+		}
+	}
+}
+</style>

+ 699 - 0
pagesT/money/pay.vue

@@ -0,0 +1,699 @@
+<template>
+	<view :class="['qn-page-' + theme]" class="app">
+		<view class="price-box">
+			<text>支付金额</text>
+			<text class="price primary-color">{{ price }}</text>
+		</view>
+		<view class="pay-type-list" @click="changePayType(item)" v-for="(item, index) in payWay" :key="index">
+			<view class="type-item">
+				<text v-if="item.title.indexOf('微信') !== -1" class="ibonfont ibonweixinzhifu"></text>
+				<text v-else-if="item.title.indexOf('支付宝') !== -1" class="ibonfont ibonumidd17"></text>
+				<text v-else class="ibonfont ibonhuodaofukuan"></text>
+				<view class="con">
+					<view class="tit">
+						<text>{{ item.title }}</text>
+						<text class="user-balance" v-if="item.id === 7">(余额:¥{{ Number(userInfo.memberBalance) }})</text>
+					</view>
+					<text v-if="item.defaultStatus === 5">推荐使用{{ item.title }}</text>
+					<block v-if="item.id === 7">
+						<text v-if="price > Number(userInfo.memberBalance)" class="balance-tip primary-color">可支付余额不足,请搭配其他支付方式</text>
+					</block>
+				</view>
+				<label class="radio"><radio :value="item.id" :color="primaryColor" :checked="pay_id.indexOf(parseInt(item.id)) > -1"></radio></label>
+			</view>
+		</view>
+		<text class="mix-btn primary-bg" @click="confirm">确认支付</text>
+		<!-- 余额支付密码弹窗 -->
+		<u-keyboard
+			default=""
+			ref="uKeyboard"
+			mode="number"
+			:mask="true"
+			:mask-close-able="false"
+			:dot-enabled="false"
+			v-model="pwd_show"
+			:safe-area-inset-bottom="true"
+			:tooltip="false"
+			@change="balancePopChange"
+			@backspace="onBackspace"
+		>
+			<view>
+				<view class="u-text-center u-padding-20 balance-money">
+					<text v-if="pay_id.length > 1">{{ Number(userInfo.memberBalance) }}</text>
+					<text v-else>{{ price }}</text>
+					<text class="u-font-20 u-padding-left-10">元</text>
+					<view class="u-padding-10 close" data-flag="false" @tap="balanceShowPop(false)"><u-icon name="close" color="#333333" size="28"></u-icon></view>
+				</view>
+				<view class="u-flex u-row-center">
+					<u-message-input mode="box" :maxlength="6" :dot-fill="true" v-model="balance_pwd" :disabled-keyboard="true" @finish="balanceFinish"></u-message-input>
+				</view>
+				<view class="u-text-center u-padding-top-10 u-padding-bottom-20 tips">支付键盘</view>
+			</view>
+		</u-keyboard>
+		<!-- 提示去设置支付密码 -->
+		<u-modal
+			v-model="tip_show"
+			content="抱歉,您未设置支付密码,无法使用余额支付"
+			:show-cancel-button="true"
+			confirm-text="立即设置"
+			cancel-text="取消"
+			@confirm="setPassword"
+		></u-modal>
+	</view>
+</template>
+
+<script>
+import QiniuUpload from '../components/qiniu/QiniuUpload.vue';
+export default {
+	components: {
+		QiniuUpload
+	},
+	data() {
+		return {
+			tip_show: false, // 余额支付提示
+			pwd_show: false, // 余额支付密码输入弹窗
+			balance_pwd: '', // 余额支付密码
+			bank_data: {
+				// 银行信息
+				id: '',
+				name: '',
+				bankName: '',
+				accountNumber: '',
+				image: ''
+			},
+			pay_id: [],
+			orderInfo: {},
+			vipId: '',
+			payWay: {},
+			price: '',
+			no: '',
+			orderId: '',
+			vip: 0,
+			source: '', //订单来源
+			payInfo: '',
+			tmplIds: []
+		};
+	},
+	onLoad(options) {
+		if (options.payType) {
+			this.pay_id = options.payType.split(',').map(item => parseInt(item));
+		}
+		this.orderId = options.id ? Number(options.id) : '';
+		this.price = Number(options.price);
+		this.vip = options.vip || '';
+		this.vipId = options.vipId || '';
+		this.source = this.$common.source();
+		this.no = options.no;
+		this.getPaymentType();
+		this.getCustomerInfo();
+	},
+	computed: {
+		userInfo() {
+			return this.$store.state.userStatus;
+		}
+	},
+	methods: {
+		// 获取用户信息
+		getCustomerInfo() {
+			this.$u.api.getCustomerInfo().then(({ data }) => {
+				this.userInfo = data;
+				// 如果余额为0 则不能选择余额支付方式
+				const index = this.pay_id.findIndex(item => item === 7);
+				if (!Number(data.memberBalance)) {
+					if (index > -1) {
+						this.pay_id.splice(index, 1);
+					}
+				}
+
+				this.$store.commit('commit_userStatus', data);
+			});
+		},
+		// 选择支付的方式
+		changePayType(item) {
+			if (item.id === 7 && Number(this.userInfo.memberBalance) <= 0) {
+				this.$u.toast('抱歉,您的可用余额不足');
+			} else {
+				// 已选择过该支付方式就把支付方式从数组去掉
+				const payIndex = this.pay_id.indexOf(item.id);
+				if (payIndex > -1) {
+					this.pay_id.splice(payIndex, 1);
+					return;
+				}
+				// 用户可支付余额不足
+				if (this.price > Number(this.userInfo.memberBalance)) {
+					// 查找余额支付的支付方式ID
+					const balaceObj = this.payWay.find(item => item.id === 7);
+					// 已选择过余额支付,可选择其他支付
+					const balaceindex = balaceObj ? this.pay_id.indexOf(balaceObj.id) : -1;
+					if (balaceObj && balaceindex > -1) {
+						//余额付款只能和微信支付进行组合
+						if (item.id !== 1) {
+							this.pay_id = [item.id];
+							return;
+						}
+						if (this.pay_id.length >= 2) {
+							if (balaceindex === 0) {
+								this.$set(this.pay_id, 1, item.id);
+							} else {
+								this.$set(this.pay_id, 0, item.id);
+							}
+						} else {
+							this.pay_id.push(item.id);
+						}
+					} else {
+						// 未选择余额支付,当支付数组length未0,直接把支付方式放入数组
+						if (this.pay_id.length === 0) {
+							this.pay_id.push(item.id);
+						} else {
+							//余额付款只能和微信支付进行组合
+							if (this.pay_id.indexOf(1) === -1) {
+								//  替换 之前选择的支付方式
+								this.pay_id.splice(0, 1, item.id);
+							} else {
+								// 如果当前选择的支付方式是余额支付,则放入数组
+								if (item.id === 7) {
+									this.pay_id.push(item.id);
+								} else {
+									// 否则 替换 之前选择的支付方式
+									this.pay_id.splice(0, 1, item.id);
+								}
+							}
+						}
+					}
+				} else {
+					this.$set(this.pay_id, 0, item.id);
+				}
+			}
+		},
+		// 支付列表
+		getPaymentType() {
+			this.$u.api
+				.getPaymentType({
+					price: this.price
+				})
+				.then(({ data }) => {
+					this.payWay = data.filter(item => item.id !== 3);
+					// 判断支付购买会员卡,支付列表没有货到付款
+					if (this.vip) {
+						this.payWay = data.filter(item => item.id === 1);
+					} else {
+						this.payWay = data.filter(item => item.title.indexOf('支付宝') === -1);
+					}
+					// 银行信息
+					const banck_data = this.payWay.find(item => item.id === 4);
+					this.bank_data = banck_data
+						? {
+								id: banck_data.accountData.id,
+								name: banck_data.accountData.name,
+								bankName: banck_data.accountData.bankName,
+								accountNumber: banck_data.accountData.accountNumber,
+								image: ''
+						  }
+						: {};
+				});
+		},
+		// 余额支付密码键盘按键被点击(不包含退格键被点击)
+		balancePopChange(val) {
+			if (this.balance_pwd.length < 6) {
+				this.balance_pwd += val;
+			}
+
+			if (this.balance_pwd.length >= 6) {
+				// 唤起密码验证
+				this.checkPayPassword();
+			}
+		},
+		//键盘退格键被点击
+		onBackspace(e) {
+			if (this.balance_pwd.length > 0) {
+				this.balance_pwd = this.balance_pwd.substring(0, this.balance_pwd.length - 1);
+			}
+		},
+		// 余额密码弹窗显示
+		balanceShowPop(flag = true) {
+			this.balance_pwd = '';
+			this.pwd_show = flag;
+		},
+		// 余额密码输入完成
+		balanceFinish() {
+			// 唤起支付
+			this.addOrder();
+		},
+		// 去设置支付密码
+		setPassword() {
+			this.goPage('/pagesT/money/PayPassword');
+		},
+		// 支付密码校验
+		checkPayPassword() {
+			this.$u.api
+				.checkPayPassword({
+					id: this.userInfo.id,
+					payPassword: this.balance_pwd
+				})
+				.then(res => {
+					this.addOrder();
+				})
+				.catch(res => {
+					this.balance_pwd = '';
+				});
+		},
+		//确认支付
+		confirm() {
+			if (!this.pay_id.length) {
+				uni.showToast({
+					title: '请选择支付方式',
+					icon: 'none'
+				});
+				return false;
+			}
+			if (this.price > Number(this.userInfo.memberBalance)) {
+				if (this.pay_id.indexOf(7) > -1 && this.pay_id.length !== 2) {
+					this.$u.toast('可支付余额不足,请搭配其他支付方式');
+					return;
+				}
+			}
+			// 余额支付弹窗
+			if (this.pay_id.indexOf(7) > -1) {
+				if (this.userInfo.payPassword) {
+					this.balanceShowPop();
+				} else {
+					this.tip_show = true;
+				}
+				return;
+			}
+			this.addOrder();
+		},
+		// 打开银行上传凭证弹窗
+		openBankPop() {
+			// 银行打款弹窗
+			if (this.pay_id.indexOf(4) > -1) {
+				uni.redirectTo({
+					url: `/pagesT/money/BankPay?orderId=${this.orderId}&payAmount=${this.price}`
+				});
+				return;
+			}
+		},
+		addOrder() {
+			this.createOrder();
+			return;
+			// #ifdef MP-WEIXIN
+			if (this.tmplIds.length) {
+				uni.requestSubscribeMessage({
+					tmplIds: this.tmplIds,
+					success: res => {
+						this.createOrder();
+					},
+					fail: res => {
+						this.createOrder();
+					}
+				});
+			} else {
+				this.createOrder();
+			}
+			// #endif
+			// #ifdef APP-PLUS
+			this.createOrder();
+			// #endif
+		},
+		createOrder() {
+			if (!this.vip) {
+				// 余额支付数据
+				let admixPayData = [];
+				if (this.pay_id.length === 2) {
+					// 查找余额支付的支付方式ID
+					const balaceObj = this.payWay.find(item => item.id === 7);
+					admixPayData = this.pay_id.map(item => {
+						let obj = {};
+						if (balaceObj.id === item) {
+							obj = {
+								payType: item,
+								title: balaceObj.title,
+								payMoney: Number(this.userInfo.memberBalance)
+							};
+						} else {
+							obj = {
+								payType: item,
+								title: this.payWay.find(pay => pay.id === item).title,
+								payMoney: (this.price - this.userInfo.memberBalance).toFixed(2)
+							};
+						}
+
+						return obj;
+					});
+				}
+
+				const params = {
+					payType: this.pay_id.join(','),
+					no: this.no,
+					source: this.source
+				};
+				if (this.pay_id.length === 2) {
+					params.admixPayData = admixPayData;
+				}
+
+				this.$u.api.payOrder(params).then(({ data }) => {
+					// 货到付款 直接进入订单页面
+					if (this.pay_id.length === 1) {
+						if (this.pay_id.indexOf(3) > -1) {
+							uni.redirectTo({
+								url: '/pagesT/order/order?state=0'
+							});
+							return;
+						} else if (this.pay_id.indexOf(4) > -1) {
+							// 银行打款弹窗
+							this.openBankPop();
+							return;
+						}
+					}
+
+					this.payInfo = data;
+					this.requestPayment();
+				});
+			} else {
+				this.$u.api
+					.createVipCardOrder({
+						payType: this.pay_id.join(','),
+						source: this.source,
+						vipCardId: this.vipId
+					})
+					.then(({ data }) => {
+						this.payInfo = data;
+						this.requestPayment();
+					});
+			}
+		},
+		requestPayment() {
+			// #ifdef APP-PLUS
+			let provider = '';
+			if (this.pay_id.indexOf(1) > 1) {
+				provider = 'wxpay';
+			} else if (this.pay_id.indexOf(2) > 1) {
+				provider = 'alipay';
+			}
+			if (!provider) {
+				if (!this.vip) {
+					uni.redirectTo({
+						url: '/pagesT/order/order?state=0'
+					});
+				} else {
+					uni.redirectTo({
+						url: '/pagesT/user/VipList'
+					});
+				}
+				return;
+			}
+			uni.requestPayment({
+				provider: provider, //供应商
+				orderInfo: this.payInfo,
+				success: res => {
+					if (!this.vip) {
+						// 银行打款弹窗
+						this.openBankPop();
+						setTimeout(() => {
+							uni.redirectTo({
+								url: '/pagesT/money/paySuccess?price=' + this.price
+							});
+						}, 2000);
+					} else {
+						this.$api.msg('支付成功');
+						setTimeout(() => {
+							uni.redirectTo({
+								url: '/pagesT/user/VipList'
+							});
+						}, 2000);
+					}
+				},
+				fail: err => {
+					this.$api.msg('支付未成功');
+					if (!this.vip) {
+						setTimeout(() => {
+							uni.redirectTo({
+								url: '/pagesT/order/order?state=0'
+							});
+						}, 2000);
+					} else {
+						setTimeout(() => {
+							uni.redirectTo({
+								url: '/pagesT/user/VipList'
+							});
+						}, 2000);
+					}
+				}
+			});
+			// #endif
+			// #ifdef MP-TOUTIAO
+			if (this.pay_id.indexOf(1) === 1) {
+				uni.redirectTo({
+					url: '/pagesT/order/order?state=0'
+				});
+				return;
+			}
+			uni.requestPayment({
+				provider: 'toutiao',
+				service: 3, //字节跳动小程序必填,service=3: 微信API支付,不拉起小程序收银台;service=4: 支付宝API支付,不拉起小程序收银台。
+				orderInfo: this.payInfo,
+				success: res => {
+					this.$u.api
+						.orderquery({
+							out_trade_no: this.payInfo.out_order_no
+						})
+						.then(data => {
+							const payStatus = data.data;
+							if (payStatus === 'SUCCESS') {
+								if (!this.vip) {
+									// 银行打款弹窗
+									this.openBankPop();
+									setTimeout(() => {
+										uni.redirectTo({
+											url: '/pagesT/money/paySuccess?price=' + this.price
+										});
+									}, 2000);
+								} else {
+									this.$api.msg('支付成功');
+									setTimeout(() => {
+										uni.redirectTo({
+											url: '/pagesT/user/VipList'
+										});
+									}, 2000);
+								}
+							} else {
+								uni.redirectTo({
+									url: '/pagesT/order/order?state=0'
+								});
+							}
+						});
+				},
+				fail: err => {
+					console.log('err:', err);
+					if (!this.vip) {
+						setTimeout(() => {
+							uni.redirectTo({
+								url: '/pagesT/order/order?state=0'
+							});
+						}, 2000);
+					} else {
+						this.$api.msg('支付未成功');
+						setTimeout(() => {
+							uni.redirectTo({
+								url: '/pagesT/user/VipList'
+							});
+						}, 2000);
+					}
+				}
+			});
+			// #endif
+			// #ifdef MP-WEIXIN
+			if (this.pay_id.indexOf(1) === -1) {
+				uni.redirectTo({
+					url: '/pagesT/order/order?state=0'
+				});
+				return;
+			}
+			uni.requestPayment({
+				provider: this.payInfo.provider, //供应商
+				timeStamp: this.payInfo.timeStamp, //当前时间
+				nonceStr: this.payInfo.nonceStr, //随机字符串,长度在32一下
+				package: this.payInfo.package, //统一单接口返回的prepay_id
+				signType: this.payInfo.signType, //签名算法,目前支持MD5
+				paySign: this.payInfo.paySign, //签名
+				success: res => {
+					if (!this.vip) {
+						// 银行打款弹窗
+						this.openBankPop();
+						setTimeout(() => {
+							uni.redirectTo({
+								url: '/pagesT/money/paySuccess?price=' + this.price
+							});
+						}, 100);
+					} else {
+						this.$api.msg('支付成功');
+						uni.redirectTo({
+							url: '/pagesT/user/VipList'
+						});
+					}
+				},
+				fail: err => {
+					this.$api.msg('支付未成功');
+					if (!this.vip) {
+						setTimeout(() => {
+							uni.redirectTo({
+								url: '/pagesT/order/order?state=0'
+							});
+						}, 100);
+					}
+				}
+			});
+			// #endif
+		},
+		// 获取消息模版ID
+		getSettingDataByMessageId() {
+			this.$u.api
+				.getSettingDataByMessageId({
+					id: [2]
+				})
+				.then(res => {
+					if (res.data.length) {
+						this.tmplIds = res.data.map(item => {
+							return item.weixinTemplateId;
+						});
+					}
+				});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.app {
+	width: 100%;
+}
+
+.imgLogo {
+	width: 52upx;
+	height: 54upx;
+	border-radius: 50%;
+}
+
+.price-box {
+	background-color: #fff;
+	height: 265upx;
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+	align-items: center;
+	font-size: 28upx;
+	color: #909399;
+
+	.price {
+		font-size: 52upx;
+		color: $price-color;
+		font-weight: bold;
+		margin-top: 12upx;
+		font-family: DIN-Medium;
+		&:before {
+			content: '¥';
+			font-size: 28upx;
+		}
+	}
+}
+
+.pay-type-list {
+	width: 710rpx;
+	margin: 20rpx auto;
+	background-color: #fff;
+	padding-left: 60upx;
+	border-radius: 16rpx;
+
+	.type-item {
+		height: 120upx;
+		padding: 20upx 0;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		padding-right: 60upx;
+		font-size: 30upx;
+		position: relative;
+		.balance-tip {
+			font-size: 22rpx;
+			line-height: 36rpx;
+			bottom: 10rpx;
+			left: 0;
+		}
+	}
+
+	.ibonfont {
+		width: 80upx;
+		font-size: 48upx;
+	}
+
+	.ibonhuodaofukuan {
+		color: #fe8e2e;
+	}
+
+	.ibonweixinzhifu {
+		color: #36cb59;
+	}
+
+	.ibonumidd17 {
+		color: #01aaef;
+	}
+
+	.tit {
+		font-size: 28rpx;
+		color: $font-color-dark;
+		margin-bottom: 4upx;
+	}
+	.user-balance {
+		font-size: 24rpx;
+		color: #999999;
+	}
+	.con {
+		flex: 1;
+		display: flex;
+		flex-direction: column;
+		font-size: $font-sm;
+		color: $font-color-light;
+	}
+}
+
+.mix-btn {
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	width: 630upx;
+	height: 80upx;
+	margin: 80upx auto 30upx;
+	font-size: $font-lg;
+	color: #fff;
+	background-color: #f53c28;
+	border-radius: 10upx;
+}
+.self-shop-title {
+	padding: 0 30upx;
+	line-height: 88upx;
+	font-weight: bold;
+	font-size: 32upx;
+	.ibonfont {
+		color: #999;
+		font-weight: 400;
+	}
+}
+.confirm-btn {
+	color: #ffffff;
+	line-height: 90rpx;
+	text-align: center;
+}
+.balance-money {
+	font-size: 80rpx;
+	color: $u-type-warning;
+	position: relative;
+
+	.close {
+		position: absolute;
+		top: 20rpx;
+		right: 20rpx;
+		line-height: 28rpx;
+		font-size: 28rpx;
+	}
+}
+</style>

+ 125 - 0
pagesT/money/paySuccess.vue

@@ -0,0 +1,125 @@
+<template>
+	<view :class="['qn-page-' + theme]" class="content">
+		<text class="success-icon ibonfont ibonxuanze_xuanzhong"></text>
+		<text class="tit">支付成功</text>
+
+		<view class="btn-group">
+			<navigator url="/pagesT/order/order?state=0" open-type="redirect" class="mix-btn primary-btn" v-if="isyy == 0 && isyhk == 0">查看订单</navigator>
+			<navigator url="/pagesT/user/myyhk" open-type="redirect" class="mix-btn primary-btn" v-if="isyhk == 1">查看优惠卡</navigator>
+			<navigator url="/pagesT/order/orderT?state=1" open-type="redirect" class="mix-btn primary-btn" v-if="isyy == 1">查看预约订单</navigator>
+			<navigator url="/pages/index/index" open-type="switchTab" class="mix-btn hollow">返回首页</navigator>
+		</view>
+		<view class="coupon-view" v-if="get_coupon">
+			<image class="coupon-bg" src="https://onlineimg.qianniao.vip/getcoupon-bg.png" mode="aspectFit"></image>
+			<text class="close-icon ibonfont ibonguanbi1"></text>
+			<view class="coupon-btn" @click="goPage('/pagesT/user/DiscountCoupon', 'redirectTo')">立即查看</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			get_coupon: false,
+			price: 0,
+			isyy: 0,
+			isyhk: 0
+		};
+	},
+	onLoad(options) {
+		this.price=options.price
+		this.isyhk = options.isyhk
+		this.isyy = options.isyy
+		console.log(this.price)
+		// this.price = 10;
+		this.getData();
+	},
+	methods: {
+		getData() {
+			this.$u.api.couponList({
+				grantType: '40',
+				payAmount: this.price
+			}).then(data=>{
+				if (data.data && data.data.length) {
+					this.get_coupon = true;
+				}
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.content {
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+	align-items: center;
+}
+.success-icon {
+	font-size: 160upx;
+	color: #ff4724;
+	margin-top: 100upx;
+}
+.tit {
+	font-size: 38upx;
+	color: #303133;
+}
+.btn-group {
+	padding-top: 100upx;
+}
+.mix-btn {
+	margin-top: 30upx;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	width: 600upx;
+	height: 80upx;
+	font-size: $font-lg;
+	color: #fff;
+	background-color: $base-color;
+	border-radius: 10upx;
+	&.hollow {
+		background: #fff;
+		color: #303133;
+		border: 1px solid #ccc;
+	}
+}
+.coupon-view {
+	position: fixed;
+	top: 40%;
+	left: 50%;
+	width: 400upx;
+	height: 452upx;
+	transform: translate(-50%, -50%);
+	.coupon-bg {
+		width: 400upx;
+		height: 452upx;
+	}
+	.coupon-btn {
+		position: absolute;
+		bottom: 12upx;
+		left: 50%;
+		width: 240upx;
+		transform: translateX(-50%);
+		height: 60upx;
+		font-size: 26upx;
+		color: #fff;
+		background: linear-gradient(#ff7f00, #ff6500);
+		border-radius: 60upx;
+		text-align: center;
+		line-height: 60upx;
+	}
+	.close-icon {
+		position: absolute;
+		top: 0upx;
+		right: 0;
+		font-size: 32rpx;
+		display: block;
+		width: 32rpx;
+		height: 32rpx;
+		color: #999999;
+	}
+}
+</style>

+ 133 - 0
pagesT/order/CancelOrder.vue

@@ -0,0 +1,133 @@
+<template>
+	<u-popup @close="close" :value="show" :closeable="true" mode="bottom" border-radius="16">
+		<view class="pop-view">
+			<view class="title">请选择取消原因</view>
+			<view style="padding-bottom: 30rpx;">
+				<view v-for="(item, index) in reason" :key="index" class="reason-li clearfix" @click="resonChange(item)">
+					<text class="float_left">{{ item }}</text>
+					<text class="float_right ibonfont primary-color" :class="[cancel_reason === item ? 'ibonxuanze1' : 'ibonweixuanze']"></text>
+				</view>
+			</view>
+			<view class="other-reason" v-if="cancel_reason === '其他原因'"><u-input type="textarea" v-model="other_reason" :border="true" :height="150"></u-input></view>
+		</view>
+		<view class="confirm-btn primary-bg" @click="confirm">
+			<u-loading v-if="loading" mode="circle"></u-loading>
+			确定
+		</view>
+	</u-popup>
+</template>
+
+<script>
+export default {
+	props: {
+		show: {
+			type: Boolean,
+			default: false
+		},
+		orderId: {
+			type: [Number, String],
+			default: ''
+		},
+		cancelbeforeOrderStatus: {
+			type: [Number, String],
+			default: ''
+		},
+		payStatus: {
+			type: [Number, String],
+			default: ''
+		}
+	},
+	computed: {
+		// 系统是否开启取消订单审核状态
+		cancelOrderAudit() {
+			return this.$store.state.baseSet.cancelOrderAudit || 4;
+		}
+	},
+	data() {
+		return {
+			other_reason: '',
+			loading: false,
+			cancel_reason: '',
+			reason: ['不想买了', '信息填错了', '买错商品了', '卖家缺货', '其他原因']
+		};
+	},
+	methods: {
+		resonChange(item) {
+			this.cancel_reason = item;
+		},
+		confirm() {
+			if (!this.cancel_reason) {
+				this.$api.msg('请选择取消订单的原因');
+				return;
+			}
+			if (this.cancel_reason === '其他原因' && !this.other_reason) {
+				this.$api.msg('请输入取消订单的原因');
+				return;
+			}
+			if (this.loading) {
+				return;
+			}
+			let obj = {
+				orderStatus: this.payStatus === 4 ? 6 : 7,
+				cancelReason: this.cancel_reason === '其他原因' ? this.other_reason : this.cancel_reason
+			};
+			if (this.cancelOrderAudit === 5) {
+				obj.cancelbeforeOrderStatus = this.cancelbeforeOrderStatus;
+			}
+			this.loading = true;
+			this.$u.api
+				.updateOrderStatus(this.orderId, obj)
+				.then(res => {
+					this.loading = false;
+					this.$api.msg('取消成功');
+					this.close();
+					this.$emit('confirm');
+				})
+				.catch(err => {
+					this.loading = false;
+				});
+		},
+		close() {
+			this.$emit('close');
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.confirm-btn {
+	color: #ffffff;
+	line-height: 90rpx;
+	text-align: center;
+	width: 100%;
+}
+.pop-view {
+	padding: 0 30rpx;
+	.title {
+		font-weight: bold;
+		line-height: 70rpx;
+		padding-top: 10rpx;
+	}
+	.desc {
+		color: #6c6c6c;
+		font-size: 24rpx;
+		line-height: 60rpx;
+		padding-bottom: 30rpx;
+	}
+	.reason-li {
+		line-height: 90upx;
+		padding-right: 30upx;
+		vertical-align: middle;
+		border-bottom: 1px solid #f5f5f5;
+		.ibonxuanze1,
+		.ibonweixuanze {
+			margin-right: 0;
+			padding-left: 0;
+			font-size: 38upx;
+		}
+	}
+	.other-reason {
+		padding-bottom: 30rpx;
+	}
+}
+</style>

+ 134 - 0
pagesT/order/ReturnOrder.vue

@@ -0,0 +1,134 @@
+<template>
+	<view class="order-ul" :class="['qn-page-' + theme]">
+		<view class="order-li" v-for="(item, index) in order_list" :key="index">
+			<view class="shop-view">
+				<text class="ibonfont ibonmendian"></text>
+				{{ item.shopName }}
+			</view>
+			<view class="goods-view clearfix">
+				<view class="float_left goods-img"><image :src="item.images[0]" mode="aspectFill"></image></view>
+				<view class="float_right goods-info">
+					<view class="ellipsis goods-name">{{ item.goodsName }}</view>
+					<view class="sku">{{ item.unitName || '' }} {{ item.skuName || '' }}</view>
+					<view class="return-money clearfix">
+						<text class="float_left primary-color">¥{{ $_utils.formatNub(item.returnUnitPrice) }}</text>
+						<text class="float_right">x {{ $_utils.formatNub(item.goodsNum) }}</text>
+					</view>
+				</view>
+			</view>
+			<view class="return-status">
+				{{ item.auditStatus === 2 ? '退货成功' : item.auditStatus === 1 ? '正在审核中' : '已驳回' }}
+				<block v-if="item.auditStatus !== 3">
+					,退款
+					<text style="font-weight: bold;">¥{{ $_utils.formatNub(item.returnTotalPrice) }}</text>
+				</block>
+				<block v-else>
+					,原因:{{item.auditFailReason}}
+				</block>
+			</view>
+		</view>
+		<!-- 空白页 -->
+		<Aempty text="暂无数据" src="https://onlineimg.qianniao.vip/list.png" v-if="order_list.length === 0"></Aempty>
+		<u-loadmore v-else :status="load_status" />
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			order_list: [],
+			page: 1,
+			pageSize: 10,
+			total: 0,
+			load_status: 'nomore'
+		};
+	},
+	onShow() {
+		this.getAllOrderReturn();
+	},
+	onPullDownRefresh() {
+		this.page = 1;
+		this.getAllOrderReturn();
+	},
+	onReachBottom() {
+		if (this.total / this.pageSize > this.page) {
+			this.page += 1;
+			this.getAllOrderReturn();
+		}
+	},
+	methods: {
+		getAllOrderReturn() {
+			this.load_status = 'loading';
+			this.$u.api
+				.getAllOrderReturn({
+					page: this.page,
+					pageSize: this.pageSize
+				})
+				.then(res => {
+					uni.stopPullDownRefresh();
+					if (this.page === 1) {
+						this.order_list = res.data;
+					} else {
+						this.order_list = this.order_list.concat(res.data);
+					}
+					this.total = res.pageTotal;
+					this.load_status = this.$_utils.loadStatus(this.page, this.pageSize, this.total);
+				})
+				.catch(res => {
+					uni.stopPullDownRefresh();
+					this.load_status = 'nomore';
+				});
+		}
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+.order-ul {
+	.order-li {
+		width: 700rpx;
+		margin: 20rpx auto;
+		padding: 0 20rpx 30rpx;
+		background-color: #ffffff;
+		border-radius: 16rpx;
+		.shop-view {
+			line-height: 70rpx;
+			.ibonfont {
+				font-size: 32rpx;
+				margin-right: 10rpx;
+				color: #cacaca;
+			}
+		}
+		.goods-view {
+			.goods-img {
+				margin-right: 20rpx;
+				image {
+					width: 120rpx;
+					height: 120rpx;
+					border-radius: 10rpx;
+				}
+			}
+			.goods-info {
+				width: 518rpx;
+				.sku {
+					font-size: 24rpx;
+					color: #999999;
+					margin: 10rpx 0;
+				}
+				.return-money {
+					font-size: 24rpx;
+				}
+			}
+		}
+		.return-status {
+			line-height: 36rpx;
+			background-color: #f6f7f9;
+			margin-top: 20rpx;
+			border-radius: 10rpx;
+			padding: 24rpx 30rpx;
+			font-size: 26rpx;
+		}
+	}
+}
+</style>

+ 271 - 0
pagesT/order/ReturnSales.vue

@@ -0,0 +1,271 @@
+<template>
+	<view class="Return" :class="['qn-page-' + theme]" v-if="goods_data.id">
+		<view class="header">
+			<view style="margin-left: 30rpx; font-weight: 600;">退款商品</view>
+			<view class="content">
+				<image :src="goods_data.images[0]" mode="aspectFill"></image>
+				<view class="texts">
+					<text class="ellipsis goods-name">{{ goods_data.goodsName }}</text>
+					<view class="details">
+						<text v-if="goods_data.isEq === 5">{{ goods_data.u_1 }};</text>
+						<text v-else>{{ goods_data.unitName }};</text>
+						<block v-for="(ip, indexSP) in goods_data.specGroup" :key="indexSP">
+							<text>{{ ip.specValueName }};</text>
+						</block>
+					</view>
+					<view class="primary-color goods-price">
+						<text v-if="goods_data.isEq === 5">{{ goods_data.originPrice }};</text>
+						<text v-else>¥{{ goods_data.price }}</text>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="ReturnMessage">
+			<view class="title">退款信息</view>
+			<view class="money number-box">
+				<view>
+					退款数量
+					<text class="unit" v-if="goods_data.isEq === 5">/{{ goods_data.u_1 }}</text>
+					<text class="unit" v-else>/{{ goods_data.unitName }}</text>
+				</view>
+				<block v-if="goods_data.returnStatus === 0">
+					<u-number-box :positive-integer="false" :max="goods_data.outNumCopy" :min="0" v-model="goods_data.outNum"></u-number-box>
+				</block>
+				<block v-else>{{ goods_data.outNum }}</block>
+			</view>
+			<!-- <view class="money number-box">
+				<view>
+					退款金额
+					<text class="unit">/元</text>
+				</view>
+				<block v-if="order_detail.returnStatus !== 2">
+					<u-number-box :positive-integer="false" :max="goods_data.returnPriceCopy" :min="0" v-model="goods_data.returnPrice"></u-number-box>
+				</block>
+				<block v-else>{{ goods_data.returnPrice }}</block>
+			</view>
+			<view v-if="order_detail.returnStatus !== 2">
+				<text class="Remarks">可修改,最多退款金额¥{{ goods_data.returnPriceCopy }}, 退款数量{{ goods_data.outNumCopy }}{{ goods_data.unitName }}</text>
+			</view> -->
+		</view>
+		<view class="description">
+			<view class="title">退款原因</view>
+			<view class="news">
+				<u-input v-if="goods_data.returnStatus === 0" v-model="add_form.remark" type="textarea" placeholder="请输入描述,有助于商家更好的处理" />
+				<u-input v-else disabled v-model="add_form.remark" type="textarea" placeholder="退款原因" />
+			</view>
+		</view>
+		<button v-if="goods_data.returnStatus === 0" class="primary-btn" @click="submit">提交</button>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			add_form: {},
+			order_id: 0,
+			goods_id: 0,
+			skuId: 0,
+			order_detail: {},
+			goods_data: {}
+		};
+	},
+	onLoad(options) {
+		console.log(options);
+		this.order_id = options.orderId;
+		this.goods_id = options.goodsId;
+		this.skuId = options.skuId;
+		this.getOrderInfoById();
+	},
+	methods: {
+		outNumBlur(val) {
+			if (this.goods_data.outNum > this.goods_data.outNumCopy) {
+				this.goods_data.outNum = this.goods_data.outNumCopy;
+			}
+		},
+		priceBlur(val) {
+			if (this.goods_data.returnPrice > this.goods_data.returnPriceCopy) {
+				this.goods_data.returnPrice = this.goods_data.returnPriceCopy;
+			}
+		},
+		// 获取订单详情
+		getOrderInfoById() {
+			this.$u.api.getOrderInfoById(this.order_id).then(({ data }) => {
+				this.order_detail = data;
+				const goods = data.goodsData.find(item => {
+					return item.goodsId === parseInt(this.goods_id) && item.skuId === parseInt(this.skuId);
+				});
+				const outNum = goods.isEq === 5 ? Number(goods.u_1_buy) : Number(goods.outNum) || Number(goods.buyNum);
+				this.goods_data = {
+					...goods,
+					originNum: goods.outNum,
+					outNum: outNum,
+					// returnPrice: goods.totalMoney,
+					returnPriceCopy: Number(goods.totalMoney),
+					outNumCopy: outNum
+				};
+				this.add_form = {
+					originId: data.id,
+					originNo: data.no,
+					shopId: goods.shopId,
+					shopName: goods.shopName,
+					operatorName: data.operatorName,
+					operatorId: data.operatorId,
+					userCenterId: data.userCenterId,
+					remark: '',
+					customerId: data.customerId,
+					customerName: data.customerName
+				};
+			});
+		},
+		submit() {
+			if (!this.goods_data.outNum) {
+				this.$u.toast('退货数量需大于0');
+				return;
+			}
+			if (!this.goods_data.returnPrice) {
+				this.$u.toast('退货金额需大于0');
+				return;
+			}
+			const skuName = this.goods_data.specGroup
+				.map(itemM => {
+					return itemM.specValueName;
+				})
+				.join('_');
+			let num = '';
+			if (this.goods_data.isEq === 5) {
+				if (this.goods_data.outNum === this.goods_data.u_1_buy) {
+					num = this.goods_data.originNum;
+				} else {
+					num = this.$NP.times(this.goods_data.outNum, this.goods_data.conversion);
+				}
+			} else {
+				num = this.goods_data.outNum;
+			}
+			let details = [
+				{
+					goodsBasicId: this.goods_data.goodsBasicId,
+					goodsCode: this.goods_data.goodsCode,
+					goodsId: this.goods_data.goodsId,
+					goodsName: this.goods_data.goodsName,
+					id: this.goods_data.id,
+					num: num,
+					returnTotalPrice: this.$NP.times(num, this.goods_data.returnPrice),
+					returnUnitPrice: this.goods_data.returnPrice,
+					saleNum: this.goods_data.buyNum,
+					saleTotalPrice: this.goods_data.totalMoney,
+					saleUnitPrice: this.goods_data.price,
+					skuId: this.goods_data.skuId,
+					skuName: skuName,
+					unitName: this.goods_data.unitName
+				}
+			];
+			this.$u.api
+				.addOrderReturn({
+					...this.add_form,
+					details: details
+				})
+				.then(res => {
+					this.$u.toast('提交成功');
+					setTimeout(res => {
+						uni.navigateBack();
+					}, 2000);
+				});
+		}
+	}
+};
+</script>
+
+<style scoped lang="scss">
+.Return {
+	padding: 15rpx;
+	.header {
+		width: 710rpx;
+		padding-top: 16rpx;
+		background-color: #ffffff;
+		width: 100%;
+		height: 250rpx;
+		border-radius: 20rpx;
+		.content {
+			height: 200rpx;
+			display: flex;
+			justify-content: space-between;
+			padding-top: 30rpx;
+			image {
+				margin-left: 40rpx;
+				width: 140rpx;
+				height: 140rpx;
+				border-radius: 10px;
+			}
+			.texts {
+				padding: 10rpx;
+				width: 500rpx;
+				height: 140rpx;
+				// border: 1rpx solid blue;
+				margin-right: 30rpx;
+				font-weight: 500rpx;
+				.details {
+					padding-top: 10rpx;
+					font-size: 24rpx;
+					color: #999999;
+				}
+				.goods-price {
+					padding-top: 10rpx;
+				}
+			}
+		}
+	}
+	.ReturnMessage {
+		width: 710rpx;
+		margin: 20rpx 0;
+		width: 100%;
+		border-radius: 16rpx;
+		background-color: #ffffff;
+		padding: 30rpx;
+		.title {
+			padding-bottom: 10rpx;
+			font-weight: bold;
+		}
+		.money {
+			line-height: 80rpx;
+			display: flex;
+			justify-content: space-between;
+			.unit {
+				font-size: 24rpx;
+				color: #6c6c6c;
+			}
+		}
+		.Remarks {
+			font-size: 22rpx;
+			color: #999999;
+		}
+	}
+	.description {
+		width: 710rpx;
+		background-color: #ffffff;
+		width: 100%;
+		border-radius: 16rpx;
+		padding: 30rpx;
+		.title {
+			padding-bottom: 10rpx;
+			font-weight: bold;
+		}
+		.news {
+			font-size: 20rpx;
+			margin-top: 10rpx;
+			background-color: #f5f9fc;
+			height: 150rpx;
+			border-radius: 15rpx;
+			padding: 15rpx;
+		}
+	}
+	.primary-btn {
+		width: 710rpx;
+		position: fixed;
+		height: 80rpx;
+		bottom: 10rpx;
+		font-size: 28rpx;
+		line-height: 80rpx;
+	}
+}
+</style>

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 33 - 0
pagesT/order/createOrder.vue


+ 868 - 0
pagesT/order/createOrderT.vue

@@ -0,0 +1,868 @@
+<template>
+	<view class="content page-contanier" :class="['qn-page-' + theme]">
+		<view class="" style="background-color: #4076d6;height: 100rpx;">
+
+		</view>
+		<view class="good-info-wrap">
+			<view class="good-list">
+				<!-- <view class="empty" v-if="xmlist.length == 0" @click="chooseGoods">
+					选择项目
+				</view> -->
+				<!-- 商品详情 -->
+				<view class="good-wrap">
+					<view class="good">
+						<image :src="item_detail.image" mode="" class="good-img"></image>
+						<view class="good-info">
+							<view class="good-name clamp2">
+								{{item_detail.name}}
+							</view>
+							<view class="good-price">
+								{{item_detail.price}}
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="mjly">
+				<view class="ly-left">
+					买家留言
+				</view>
+				<input type="text" placeholder="请输入留言内容" class="ly-right" v-model="mjly">
+			</view>
+
+		</view>
+		<!-- <view class="mj-info" @click="goPage('/pagesT/customer/selCustomer')">
+			<view class="mjly" style="border-bottom: 1rpx solid #f7f8fa;">
+				<view class="ly-left">
+					客户姓名
+				</view>
+				<input type="text" placeholder="请输入留言内容" class="ly-right" v-model="customerData.name" v-if="customerData.name" disabled>
+				<image src="../../static/img/downright.png" mode="" v-else></image>
+			</view>
+			<view class="mjly" >
+				<view class="ly-left">
+					联系方式
+				</view>
+				<input type="number" placeholder="请填写联系方式" class="ly-right" v-model="customerData.mobile" @click.stop="">
+			</view>
+		</view> -->
+		<!-- 选择门店 -->
+		<view class="sc-md">
+			<view class="sc-tip">
+				选择门店
+			</view>
+			<view class="store-info" @click="openStoreChoose">
+				<image :src="choose_store.logo" mode="" class="store-logo"></image>
+				<view class="info">
+					<view class="store-name">
+						{{choose_store.name}}
+					</view>
+					<view class="store-address">
+						{{choose_store.area.provinceName + choose_store.area.cityName + choose_store.area.districtName +  choose_store.area.address}}
+					</view>
+				</view>
+				<view class="float_right"><text class="ibonfont ibonjinru"></text></view>
+			</view>
+		</view>
+		<!-- 门店列表弹出层 -->
+		<u-popup v-model="store_choose_show" mode="bottom" @close="close" @open="open" border-radius="14">
+			<view>
+				<scroll-view scroll-y="true" class="store-list" @scrolltolower="getStoreList()">
+					<view class="store-info " :class="{'choose-stroe': storeitem.id == choose_store.id}"
+						v-for="(storeitem,storeindex) in store.list" @click="chooseStore(storeitem)">
+						<image :src="storeitem.logo" mode="" class="store-logo"></image>
+						<view class="info">
+							<view class="store-name">
+								{{storeitem.name}}
+							</view>
+							<view class="store-address">
+								{{storeitem.area.provinceName + storeitem.area.cityName + storeitem.area.districtName +  storeitem.area.address}}
+							</view>
+						</view>
+						<view class="float_right"></text></view>
+					</view>
+					<u-loadmore :status="store.loadingType" />
+				</scroll-view>
+			</view>
+
+		</u-popup>
+		<!-- 预约 -->
+		<its-calendar :sta_num="start_time" :end_num="end_time" :int_num="30" @getTime="getTime"></its-calendar>
+		<!-- 指派 -->
+		<scroll-view scroll-x="true" class="zp-wrap" v-if="timed">
+			<view class="zp-item" v-for="ygitem in yg.list" @click="choosYg(ygitem)"
+				:class="{'choose': ygitem.uid == choose_yg.uid}">
+				<image :src="ygitem.avatar" mode="" class="zp-logo"></image>
+				<view class="zp-name">{{ygitem.staffName}}</view>
+			</view>
+		</scroll-view>
+		<!-- 结算 -->
+		<!-- 填充 -->
+		<view class="" style="height: 110rpx;"></view>
+		<view class="tj-dd">
+			<view class="">
+				<text style="font-size: 26rpx;color: #999;">实付</text>
+				<text style="color: #CE372E;font-size: 44rpx;font-weight: bold;padding-left: 10rpx;"
+					class="rmb">{{order_detail.pay_price || '0'}}</text>
+				<!-- <text style="font-size: 22rpx;color: #333333;font-weight: bold;">(包含预约费¥3元)</text> -->
+			</view>
+			<view class="tj-btn" @click="canpay?selPayFun():''" :class="{'canpay': canpay}">
+				提交
+			</view>
+			<!-- <view class="tj-btn" @click="selPayFun()" :class="{'canpay': canpay}">
+				提交
+			</view> -->
+		</view>
+		<u-popup v-model="payPop" mode="bottom" :border-radius="12">
+			<view class="pay-pop-view">
+				<view class="pay-sel-title clearfix">
+					<text class="float_left">付款方式</text>
+					<text class="float_right ibonfont ibonguanbi" @click="closePayPop"></text>
+				</view>
+				<view class="pay-ul">
+					<view class="pay-li" @click="pay_type = 1">
+						<text class="ibonfont ibonhuodaofukuan"></text>
+						<view class="pay-name clearfix"
+							:class="[order_detail.pay_price*1 > Number(order_detail.memberBalance) ? 'balance-pay-name' : '']">
+							<view class="float_left">
+								<text>余额</text>
+								<text class="balace-num">(余额:¥{{ Number(order_detail.memberBalance) }})</text>
+							</view>
+							<text class="float_right ibonfont  ibonxuanze1" v-if="pay_type == 1"></text>
+							<text class="float_right ibonfont  ibonxuanze1" style="color: #CCCCCC;" v-else></text>
+						</view>
+					</view>
+					<view class="pay-li" @click="pay_type = 2" v-if="order_detail.pay_price*1 > 0">
+						<text class="ibonfont ibonweixinzhifu"></text>
+						<view class="pay-name clearfix ">
+							<view class="float_left">
+								<text>微信</text>
+							</view>
+							<text class="float_right ibonfont ibonxuanze1" v-if="pay_type == 2"></text>
+							<text class="float_right ibonfont ibonxuanze1" style="color: #CCCCCC;" v-else></text>
+						</view>
+					</view>
+				</view>
+				<view class="pay-btn primary-btn" @click="submit">
+					<text>确定</text>
+				</view>
+			</view>
+		</u-popup>
+	</view>
+</template>
+
+<script>
+	import its from '@/components/its-calendar/its-calendar.vue'
+	export default {
+		components: {
+			its
+		},
+		data() {
+			return {
+				payPop: false,
+				canpay: false,
+				good_id: '',
+				item_detail: {},
+				mjly: '',
+				customerData: {},
+				store: {
+					page: 1,
+					page_size: 10,
+					list: [],
+					loadingType: 'loadmore',
+					loaded: false,
+				},
+				yg: {
+					page: 1,
+					page_size: 10,
+					list: [],
+					loadingType: 'loadmore',
+					loaded: false,
+				},
+				choose_yg: {
+
+				},
+				choose_store: {},
+				choose_time: '',
+				choose_time_detail: '',
+				order_detail: {}, //计算结果
+				timed: false, //是否选择完时间
+				store_choose_show: false, //门店选择弹出层开关
+				start_time: 0,
+				end_time: 24,
+				yyshow: true,
+				pay_type: 1, //1余额2微信3支付宝
+			}
+		},
+		computed: {
+			// start_time() {
+			// 	let start = this.store.state
+			// },
+			// end_time() {
+
+			// }
+		},
+		watch: {
+			choose_store(newval, oldval) {
+				this.choose_yg = {}
+				if (newval.openTime.isAllDay != 1) {
+					let start = newval.openTime.start.split(':')
+					let end = newval.openTime.end.split(':')
+					if (start[1] > 30) {
+						this.start_time = start[0] * 1 + 1
+					} else {
+						this.start_time = start[0] * 1
+					}
+					this.end_time = end[0] * 1
+					console.log(this.start_time)
+				} else {
+					this.start_time = 0
+					this.end_time = 24
+					console.log(this.start_time)
+				}
+				if (this.choose_time != '') {
+					console.log(this.choose_time, 'this.choose_time ')
+					this.getYgList('reload')
+				}
+			},
+			choose_time(newval, oldval) {
+				this.getYgList('reload')
+			},
+			choose_yg(newval, oldval) {
+				if (newval.staffName && newval.uid != 0) {
+					this.getYgYyTimeArea()
+				} else {
+					if (newval.staffName == '随机指派' && this.choose_time) {
+						this.canpay = true
+					}
+				}
+
+			},
+			choose_time_detail(newval, oldval) {
+				if (this.choose_store && this.choose_yg.uid != 0) {
+					
+					this.getYgYyTimeArea()
+				}
+			}
+		},
+		onLoad(opt) {
+			this.good_id = opt.id
+			this.getItemDetail()
+			this.calculation()
+			console.log(this.$store.state.locationObj, 'this.$store.state.locationObj')
+			this.getStoreList()
+		},
+		onShow() {
+			console.log(this.customerData)
+		},
+		onReachBottom() {
+
+		},
+		onReady() {
+
+		},
+		methods: {
+			close() {
+				this.store_choose_show = false
+			},
+			open() {
+
+			},
+			// 打开门店选择
+			openStoreChoose() {
+				console.log('打开门店选择')
+				this.store_choose_show = true
+			},
+			//选择门店
+			chooseStore(item) {
+				this.choose_store = item
+				this.close()
+			},
+			getTime(e) {
+				console.log(e);
+				this.timed = true
+				this.choose_time = e.time.split(' ')[0]
+				this.choose_time_detail = e.time.split(' ')[1]
+
+			},
+			//计算价格
+			calculation() {
+				let that = this
+				that.$u.api.calculation({
+					id: that.good_id
+				}).then(({
+					data
+				}) => {
+					console.log(data, 'price')
+					this.order_detail = data
+				}).catch(err => {
+
+				})
+			},
+			getItemDetail() {
+				this.$u.api.getItemDetail({
+					id: this.good_id
+				}).then(({
+					data
+				}) => {
+					this.item_detail = data
+				}).catch(err => {
+
+				})
+			},
+			// 获取门店列表
+			getStoreList() {
+				console.log('获取门店列表')
+				let item = this.store
+				if (item.loadingType == 'loading' || item.loadingType == 'nomore') {
+					return
+				}
+				item.loadingType = 'loading'
+				this.$u.api.getStoreList({
+					page: item.page,
+					pageSize: item.page_size,
+					longitude: this.$store.state.locationObj.longitude,
+					latitude: this.$store.state.locationObj.latitude
+				}).then(({
+					data
+				}) => {
+					console.log(data, '门店列表')
+					item.list = item.list.concat(data)
+					if (item.page == 1) {
+						this.choose_store = item.list[0]
+					}
+					item.page++
+					if (item.page_size == data.length) {
+						item.loadingType = 'loadmore'
+					} else {
+						item.loadingType = 'nomore'
+					}
+
+				})
+			},
+			//获取员工列表
+			getYgList(type) {
+				let item = this.yg
+				if (type == 'reload') {
+					item.list = []
+					item.loadingType = 'loadmore'
+				}
+				if (item.loadingType == 'loading' || item.loadingType == 'nomore') {
+					return
+				}
+				item.loadingType = 'loading'
+				this.$u.api.getTimeYgList({
+					time: this.choose_time,
+					'SHOP-TOKEN': this.choose_store.token
+				}).then(({
+					data
+				}) => {
+					let arr = [{
+						uid: 0,
+						staffName: '随机指派'
+					}]
+					item.list = arr.concat(data)
+
+					item.loadingType = 'nomore'
+				})
+			},
+			cannot(title = '该员工不在工作时间') {
+				uni.showToast({
+					title: title,
+					icon: 'none'
+				})
+				this.canpay = false
+			},
+			//判断是否能预约员工
+			getYgYyTimeArea() {
+				let that = this
+				that.$u.api.getYgYyTimeArea({
+					time: that.choose_time,
+					uid: that.choose_yg.uid
+				}).then(({
+					data
+				}) => {
+					console.log()
+					let choose_time = that.choose_time_detail.replace(/\:/g, '')
+					let worktime = [data.time_slot[0][0].replace(/\:/g, ''), data.time_slot[0][1].replace(/\:/g,
+						'')]
+					// 判断员工是否在工作时间
+					console.log(choose_time, worktime)
+					if (choose_time * 1 >= worktime[0] * 1 && choose_time * 1 <= worktime[1] * 1) {
+						this.canpay = true
+					} else {
+						console.log('该员工不在工作时间')
+						that.cannot()
+					}
+					if (data.reserved.length > 0) {
+						for (let i = 0; i < data.reserved.length; i++) {
+							console.log(i)
+							if (that.choose_time_detail == data.reserved[i]) {
+								that.cannot('该员工已有预约')
+								break
+							}
+						}
+					}
+
+				})
+			},
+			choosYg(item) {
+				this.choose_yg = item
+				// //查看员工是否有空
+				// if (this.choose_yg.uid != 0) {
+				// 	this.getYgYyTimeArea()
+				// }
+			},
+			selPayFun() {
+				// if (!this.is_notExpress) {
+				// 	return;
+				// }
+				this.payPop = true;
+			},
+			// 创建项目订单
+			createItemOrder() {
+				let that = this
+				that.$u.api.createItemOrder({
+					"order_id": that.order_detail.order_id,
+					"time": that.choose_time + ' ' + that.choose_time_detail, //预约时间
+					"staff_id": that.choose_yg.uid, //0随机排员工 指定员工传入员工id
+					"pay_type": 2, //1余额2微信3支付宝
+					"source": 3, //微信8h5支付3小程序支付0app支付
+					"remarks": that.mjly, //备注
+					"SHOP-TOKEN": that.choose_store.token
+				}).then(({
+					data
+				}) => {
+
+				})
+			},
+			submit() {
+				let that = this
+				// 判断余额是否足够
+
+				if (that.pay_type == 1 && (that.order_detail.pay_price * 1 > that.order_detail.memberBalance * 1)) {
+					return this.$u.toast('抱歉,您的可用余额不足');
+				}
+				that.$u.api.createItemOrder({
+					"order_id": that.order_detail.order_id,
+					"time": that.choose_time + ' ' + that.choose_time_detail, //预约时间
+					"staff_id": that.choose_yg.uid, //0随机排员工 指定员工传入员工id
+					"pay_type": that.pay_type, //1余额2微信3支付宝
+					"source": that.pay_type == 2 ? 3 : '',
+					"remarks": that.mjly, //备注
+					"SHOP-TOKEN": that.choose_store.token
+				}).then(({
+					data
+				}) => {
+					// 余额支付
+					if (that.pay_type == 1) {
+						console.log(data)
+						if (data == '支付成功' || data.data == '支付成功') {
+							that.payPop = false
+							setTimeout(() => {
+								uni.navigateTo({
+									url: '/pagesT/money/paySuccess?price=' + that.order_detail
+										.pay_price + '&isyy=1'
+								})
+							}, 200);
+						}
+					}
+					// 微信支付
+					if (that.pay_type == 2) {
+						// data.data
+						let payInfo = data.data
+						// #ifdef MP-WEIXIN
+						uni.requestPayment({
+							provider: 'wxpay',
+							timeStamp: payInfo.timeStamp, //当前时间
+							nonceStr: payInfo.nonceStr, //随机字符串,长度在32一下
+							package: payInfo.package, //统一单接口返回的prepay_id
+							signType: payInfo.signType, //签名算法,目前支持MD5
+							paySign: payInfo.paySign, //签名
+							success: res => {
+								// 订单审核,取消订单提醒
+								that.payPop = false
+								setTimeout(() => {
+									uni.navigateTo({
+										url: '/pagesT/money/paySuccess?price=' + that
+											.order_detail.pay_price + '&isyy=1'
+									})
+
+								}, 200);
+							},
+							fail: async err => {
+								that.payPop = false
+								console.log('支付失败');
+								await setTimeout(() => {
+									uni.redirectTo({
+										url: '/pagesT/order/orderT?state=0'
+									});
+								}, 100);
+							}
+						});
+						// #endif
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.good-info-wrap {
+		margin: -50rpx auto 20rpx;
+		width: 712rpx;
+		min-height: 285rpx;
+		background: #FFFFFF;
+		border-radius: 10rpx;
+		padding: 10rpx 20rpx;
+
+		.good-list {
+			min-height: 177rpx;
+			width: 100%;
+
+			.good-wrap {
+				min-height: 177rpx;
+
+				.good {
+					height: 177rpx;
+					border-bottom: 1px solid #f7f8fa;
+					display: flex;
+					justify-content: flex-start;
+					align-items: center;
+
+					.good-info {
+						height: 177rpx;
+						width: 365rpx;
+						padding: 25rpx 0 25rpx 20rpx;
+						display: flex;
+						flex-direction: column;
+						justify-content: space-between;
+						align-items: flex-start;
+
+						.good-name {
+							font-size: 26rpx;
+							font-weight: 500;
+							color: #333333;
+						}
+
+						.good-price {
+							margin-top: 20rpx;
+							font-size: 34rpx;
+							font-weight: bold;
+							color: #CE372E;
+
+							&::before {
+								content: '¥';
+								font-size: 24rpx;
+								color: #CE372E;
+							}
+						}
+					}
+
+					.good-img {
+						width: 133rpx;
+						height: 133rpx;
+						border-radius: 10rpx;
+						background-color: #eee;
+					}
+				}
+			}
+
+			.empty {
+				// display: ;
+				font-size: 28rpx;
+				height: 177rpx;
+				background-color: #ecf1f7;
+				text-align: center;
+				line-height: 177rpx;
+				color: #4472bd;
+				border-radius: 10rpx;
+			}
+		}
+
+	}
+
+	.mj-info {
+		width: 712rpx;
+		height: 200rpx;
+		background: #FFFFFF;
+		border-radius: 10px;
+		margin: 20rpx auto;
+		padding: 0 20rpx;
+	}
+
+	.mjly {
+		height: 100rpx;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		font-size: 26rpx;
+
+		.ly-left {
+			font-weight: 500;
+			color: #000;
+
+		}
+
+		.ly-right {
+			width: 400rpx;
+			text-align: right;
+		}
+
+		image {
+			width: 15rpx;
+			height: 28rpx;
+		}
+	}
+
+	//指派
+	.zp-wrap {
+		margin-top: 20rpx;
+		width: 750rpx;
+		height: 216rpx;
+		white-space: nowrap;
+
+
+
+		.zp-item {
+			display: inline-block;
+			margin-right: 15rpx;
+			padding-top: 34rpx;
+			width: 172rpx;
+			height: 216rpx;
+			// background: #E02020;
+			background-color: #fff;
+			border-radius: 10rpx;
+
+			.zp-logo {
+				display: block;
+				width: 106rpx;
+				height: 106rpx;
+				margin: auto;
+				border-radius: 50%;
+				background-color: #999999;
+			}
+
+			.zp-name {
+				margin-top: 15rpx;
+				width: 100%;
+				text-align: center;
+				font-size: 30rpx;
+				font-weight: bold;
+				color: #333333;
+			}
+		}
+
+		.choose {
+			background-color: #262261 !important;
+
+			.zp-name {
+				color: #fff !important;
+			}
+
+		}
+	}
+
+	.tj-dd {
+		width: 750rpx;
+		height: 100rpx;
+		position: fixed;
+		bottom: 0;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		background-color: #fff;
+		padding: 0 20rpx;
+
+		.tj-btn {
+			width: 200rpx;
+			height: 75rpx;
+			line-height: 75rpx;
+			color: #fff;
+			background-color: #999;
+			border-radius: 10rpx;
+			text-align: center;
+			font-size: 28rpx;
+			font-weight: 500;
+
+		}
+
+		.canpay {
+			background-color: #d84840;
+		}
+	}
+
+	.rmb {
+		&::before {
+			content: '¥';
+			color: #CE372E;
+			font-size: 30rpx;
+		}
+	}
+
+	// 门店
+	.sc-md {
+		margin: 20rpx auto;
+		width: 712rpx;
+		height: 210rpx;
+		background: #FFFFFF;
+		border-radius: 10rpx;
+
+		.sc-tip {
+			padding-left: 20rpx;
+			line-height: 70rpx;
+			width: 712rpx;
+			height: 70rpx;
+			background: #e9e8ef;
+			border-radius: 10rpx 10rpx 0px 0px;
+			font-size: 26rpx;
+			font-weight: 500;
+			color: #262261;
+		}
+
+
+	}
+
+	.store-info {
+		display: flex;
+		justify-content: flex-start;
+		align-items: center;
+		height: 140rpx;
+		padding: 0 30rpx 0 20rpx;
+
+		.store-logo {
+			width: 61rpx;
+			height: 61rpx;
+			background-color: #eee;
+			border-radius: 50%;
+		}
+
+		.info {
+			flex-grow: 1;
+			display: flex;
+			flex-direction: column;
+			justify-content: center;
+			padding: 0 40rpx 0 20rpx;
+
+			.store-name {
+				font-size: 25rpx;
+				font-weight: 500;
+				color: #333333;
+			}
+
+			.store-address {
+				margin-top: 15rpx;
+				font-size: 22rpx;
+				font-weight: 500;
+				color: #999999;
+			}
+		}
+
+	}
+
+	.store-list {
+		min-height: 280rpx;
+		max-height: 450rpx;
+		width: 750upx;
+		padding-top: 1rpx;
+		background-color: #fff;
+
+		.store-info {
+			width: 712rpx;
+			margin: 20rpx auto;
+			border: 1px solid #aaa;
+			border-radius: 20rpx;
+		}
+
+		.choose-stroe {
+			border: 1px solid #262261;
+		}
+	}
+
+	.pay-pop-view {
+		background-color: #ffffff;
+		border-top-left-radius: 12upx;
+		border-top-right-radius: 12upx;
+		font-size: 28upx;
+
+		.pay-sel-title {
+			padding: 0 30upx;
+			line-height: 88upx;
+			font-weight: bold;
+			font-size: 32upx;
+
+			.ibonfont {
+				color: #999;
+				font-weight: 400;
+			}
+		}
+
+		.pay-btn {
+			height: 90upx;
+			line-height: 90upx;
+			color: #000;
+			font-size: 32upx;
+			text-align: center;
+			background-color: #108ee9;
+		}
+
+		.pay-ul {
+			.pay-li {
+				line-height: 100upx;
+
+				.ibonfont {
+					padding-left: 30upx;
+					font-size: 46upx;
+					vertical-align: middle;
+					margin-right: 24upx;
+				}
+
+				.ibonweixinzhifu {
+					color: #04be02;
+				}
+
+				.ibonumidd17 {
+					color: #108ee9;
+				}
+
+				.ibonhuodaofukuan {
+					color: #f2b844;
+				}
+
+				.pay-name {
+					width: 650upx;
+					display: inline-block;
+					padding-right: 30upx;
+					vertical-align: middle;
+					border-bottom: 1px solid #f5f5f5;
+
+					.ibonxuanze1,
+					.ibonweixuanze {
+						margin-right: 0;
+						padding-left: 0;
+						font-size: 38upx;
+					}
+
+					.balace-num {
+						font-size: 24rpx;
+						color: #6c6c6c;
+					}
+				}
+
+				.balance-pay-name {
+					position: relative;
+					padding-bottom: 20rpx;
+
+					.balance-tip {
+						position: absolute;
+						font-size: 22rpx;
+						line-height: 36rpx;
+						bottom: 10rpx;
+						left: 0;
+					}
+				}
+			}
+		}
+	}
+</style>

+ 583 - 0
pagesT/order/order.vue

@@ -0,0 +1,583 @@
+<template>
+	<view :class="['qn-page-' + theme]" style="height: 100vh">
+		<view class="content">
+			<view class="navbar">
+				<view v-for="(item, index) in navList" :key="index" class="nav-item" :class="[tabCurrentIndex === index ? 'current' : '']" @click="tabClick(item, index)">
+					{{ item.text }}
+					<view class="current-line primary-btn"></view>
+				</view>
+			</view>
+
+			<swiper :current="tabCurrentIndex" class="swiper-box" duration="300" @change="changeTab">
+				<swiper-item class="tab-content" v-for="(tabItem, tabIndex) in navList" :key="tabIndex">
+					<scroll-view @scrolltolower="scrollBootom" scroll-y="true" style="height:100%">
+						<Aempty text="您还没有相关订单" src="https://onlineimg.qianniao.vip/order.png" v-if="orderList.length === 0"></Aempty>
+						<view v-for="(item, index) in orderList" :key="index" class="order-item">
+							<view class="clearfix order-no-view" @click="goPage(`/pagesT/order/orderDetail?id=` + item.id)">
+								<text class="float_left order-no-text">{{ $_utils.formatDate(item.createTime) }}</text>
+								<text class="float_right order-status-text">
+									{{
+										item.orderStatus === 1
+											? '待付款'
+											: item.orderStatus === 2
+											? '待付款'
+											: item.orderStatus === 3
+											? '待发货'
+											: item.orderStatus === 4
+											? '待收货'
+											: item.orderStatus === 5
+											? '已完成'
+											: item.orderStatus === 6
+											? '已关闭'
+											: item.orderStatus === 7
+											? '取消审核中'
+											: ''
+									}}
+								</text>
+								<text v-if="item.deliveryTypeMsg === '上门自提'" class="float_right order-status-text" style="font-weight: bold;margin-right: 20rpx;">
+									自提码:{{ item.verifyCode }}
+								</text>
+							</view>
+							<view class="goods-ul" @click="goPage(`/pagesT/order/orderDetail?id=` + item.id)">
+								<block v-for="(it, gindex) in item.goodsData" :key="gindex">
+									<view class="goods-li clearfix" v-if="gindex <= 4">
+										<image class="goods-img float_left" :src="it.images && it.images.length ? it.images[0] : ''" mode="aspectFill"></image>
+										<view class="buyNum">x{{ it.isEq === 5 ? it.extends.u_1_buy : it.buyNum }}</view>
+										<!-- <view class="float_right goods-right">
+											<view class="goods-name">{{ it.goodsName }}</view>
+											<view class="goods-descrip">
+												规格:{{ it.unitName }};
+												<text v-for="(ip, indexSp) in it.specGroup" :key="indexSp">{{ ip.specValueName }};</text>
+											</view>
+											<view class="goods-price clearfix">
+												<view class="float_left primary-color">¥{{ it.price }}</view>
+												<view class="float_right">*{{ it.buyNum }}</view>
+											</view>
+										</view> -->
+									</view>
+								</block>
+								<view class="goods-li" style="font-size: 20rpx;color: #666;">查看明细</view>
+							</view>
+							<view class="money-view">
+								共{{ item.goodsNum || 0 }}件商品,总价:¥{{ item.totalMoney || '0.00' }}
+								<!-- <view class="price">
+									实付款:
+									<text style="font-size: 20rpx;">¥</text>
+									<view style="display: inline-block;font-size: 32rpx;"><rich-text :nodes="$_utils.splitPrice(item.payAmount)"></rich-text></view>
+								</view> -->
+							</view>
+							<view class="middle clearfix" v-if="[1, 2, 3, 4, 5].includes(item.orderStatus)">
+								<!-- #ifdef APP-PLUS||MP-WEIXIN -->
+								<!-- (未付款||部分付款)&&订单状态不为已完成&&付款方式不为银行付款 -->
+								<view
+									class="btnSAdd float_right primary-btn"
+									@click="goPay(item)"
+									v-if="(parseInt(item.payStatus) === 4 || parseInt(item.payStatus) === 3) && item.orderStatus !== 5 && item.payType.indexOf('4') === -1"
+								>
+									去付款
+								</view>
+								<!-- #endif -->
+								<!-- 出库状态等于5 的时候可以确认收货 以及出库状态等于6加上退款状态等于5的状态可以确认收货 -->
+								<view
+									class="btnSAdd float_right primary-btn"
+									v-if="(item.orderStatus === 4 && item.outStatus === 5) || (item.orderStatus === 4 && item.outStatus === 6 && item.isRet === 5)"
+									@click="confirmOrder(item.id)"
+								>
+									确认收货
+								</view>
+								<view @click="goPage('/pagesT/order/orderLogistics?id=' + item.id)" v-if="item.orderStatus > 3 && item.deliveryType === 1" class="btnS float_right">
+									查看物流
+								</view>
+								<view v-if="item.orderStatus === 5" class="btnSAdd float_right primary-btn" @click="againPay(item)">再次购买</view>
+								<view v-if="item.payType.indexOf('4') > -1 && [1, 2].includes(item.orderStatus)" class="btnSAdd float_right primary-btn" @click="upBankPic(item)">
+									上传凭证
+								</view>
+								<view
+									@click="cancelOrder(item)"
+									v-if="[1, 2].includes(item.orderStatus) || (item.orderStatus === 3 && isCancelOrder === 5)"
+									class="btnS float_right"
+								>
+									取消订单
+								</view>
+							</view>
+						</view>
+						<u-loadmore margin-top="20" v-if="orderList.length" :status="loading_status" />
+					</scroll-view>
+				</swiper-item>
+			</swiper>
+		</view>
+		<CancelOrder
+			@confirm="cancelOrderConfirm"
+			:payStatus="pay_status"
+			:cancelbeforeOrderStatus="order_status"
+			:orderId="order_id"
+			@close="closeCancel"
+			:show="cancel_show"
+		></CancelOrder>
+	</view>
+</template>
+
+<script>
+import CancelOrder from './CancelOrder.vue';
+export default {
+	components: {
+		CancelOrder
+	},
+	data() {
+		return {
+			order_id: 0,
+			order_status: '',
+			pay_status: '',
+			cancel_show: false,
+			orderList: [],
+			tabCurrentIndex: 0,
+			state: 1,
+			loading_status: 'loadmore',
+			navList: [
+				{
+					state: 0,
+					text: '全部'
+				},
+				{
+					state: 2,
+					text: '待付款'
+				},
+				{
+					state: 3,
+					text: '待发货'
+				},
+				{
+					state: 4,
+					text: '待收货'
+				},
+				{
+					state: 5,
+					text: '已完成'
+				}
+				// {
+				// 	state: 6,
+				// 	text: '已关闭',
+				// }
+			],
+			page: 1,
+			pageSize: 10,
+			pageTotal: 0,
+			tmplIds: []
+		};
+	},
+	computed: {
+		// 是否在发货前可以取消订单
+		isCancelOrder() {
+			return this.$store.state.baseSet.cancelOrder || 5;
+		}
+	},
+	onLoad(options) {
+		this.tabCurrentIndex = +options.state;
+		switch (this.tabCurrentIndex) {
+			case 0:
+				this.state = 0;
+				break;
+			case 1:
+				this.state = 2;
+				break;
+			case 2:
+				this.state = 3;
+				break;
+			case 3:
+				this.state = 4;
+				break;
+			case 4:
+				this.state = 5;
+				break;
+			case 5:
+				this.state = 6;
+				break;
+		}
+		// #ifdef MP-WEIXIN
+		this.getSettingDataByMessageId();
+		// #endif
+	},
+	onShow() {
+		this.getOrderSelect();
+	},
+	methods: {
+		closeCancel() {
+			this.cancel_show = false;
+		},
+		// 上传打款凭证
+		upBankPic(item) {
+			const payAmount = item.payStatus === 3 ? item.notPayMoney : item.payAmount;
+			this.goPage(`/pagesT/money/BankPay?orderId=${item.id}&payAmount=${payAmount}`, 'redirectTo');
+		},
+		// 再次购买
+		againPay(row) {
+			// if (this.$store.state.baseSet.personnelReview === 5) {
+			// 验证账户状态
+			this.userAudit();
+			if (!this.isUserAudit) {
+				return;
+			}
+			// }
+			const goodsData = row.goodsData.map(item => {
+				let obj = {};
+				if (item.isEq === 5) {
+					obj = {
+						goodsId: item.goodsId,
+						buyNum: item.extends.u_1_buy,
+						shopId: item.shopId,
+						skuId: item.extends.uId_1,
+						source: this.$common.source(),
+						goodsBasicId: item.goodsBasicId
+					};
+				} else {
+					obj = {
+						goodsId: item.goodsId,
+						buyNum: item.buyNum,
+						shopId: item.shopId,
+						skuId: item.skuId,
+						source: this.$common.source(),
+						goodsBasicId: item.goodsBasicId
+					};
+				}
+
+				return obj;
+			});
+			this.$u.api
+				.addCart({
+					goodsData: goodsData
+				})
+				.then(res => {
+					this.goPage('/pages/cart/cart', 'switchTab');
+				});
+		},
+		// 点击支付
+		goPay(item) {
+			const price = item.payStatus === 3 ? item.notPayMoney : item.payAmount;
+			uni.navigateTo({
+				url: `/pagesT/money/pay?id=${item.id}&price=${price}&no=${item.no}&payType=${item.payType}`
+			});
+		},
+		scrollBootom() {
+			if (this.pageTotal / this.pageSize > this.page) {
+				this.page += 1;
+				this.getOrderSelect();
+			}
+		},
+		// 获取订单列表
+		getOrderSelect() {
+			const params = {
+				page: this.page,
+				pageSize: this.pageSize
+			};
+			if (this.state) {
+				params.orderStatus = this.state;
+			}
+			this.loading_status = 'loading';
+			this.$u.api
+				.getOrderSelect({
+					...params
+				})
+				.then(res => {
+					if (this.page === 1) {
+						this.orderList = res.data;
+					} else {
+						this.orderList = this.orderList.concat(res.data);
+					}
+					this.pageTotal = res.pageTotal;
+					this.loading_status = this.$_utils.loadStatus(this.page, this.pageSize, this.pageTotal);
+				});
+		},
+		//swiper 切换
+		changeTab(e) {
+			this.tabCurrentIndex = e.target.current;
+			this.page = 1;
+			switch (this.tabCurrentIndex) {
+				case 0:
+					this.state = 0;
+					break;
+				case 1:
+					this.state = 2;
+					break;
+				case 2:
+					this.state = 3;
+					break;
+				case 3:
+					this.state = 4;
+					break;
+			}
+			this.orderList = [];
+			this.getOrderSelect();
+		},
+		//顶部tab点击
+		tabClick(item, index) {
+			this.tabCurrentIndex = index;
+			this.state = item.state;
+			// this.getOrderSelect()
+		},
+		//取消订单
+		cancelOrder(row) {
+			this.cancelHandel(row);
+			// #ifdef MP-WEIXIN
+			if (this.tmplIds.length) {
+				uni.requestSubscribeMessage({
+					tmplIds: this.tmplIds,
+					success: res => {
+						this.cancelHandel(row);
+					},
+					fail: res => {
+						console.log(res);
+						this.cancelHandel(row);
+					}
+				});
+			} else {
+				this.cancelHandel(row);
+			}
+			// #endif
+			// #ifdef APP-PLUS
+			this.cancelHandel(row);
+			// #endif
+		},
+		cancelHandel(row) {
+			this.order_id = row.id;
+			this.order_status = row.orderStatus;
+			this.pay_status = row.payStatus;
+			this.cancel_show = true;
+		},
+		cancelOrderConfirm() {
+			this.getOrderSelect();
+		},
+		// 确认收货
+		confirmOrder(id) {
+			uni.showModal({
+				title: '提示',
+				content: '确定要确认收货吗?',
+				success: res => {
+					if (res.confirm) {
+						this.$u.api
+							.updateOrderStatus(id, {
+								orderStatus: 5
+							})
+							.then(data => {
+								this.$api.msg('操作成功');
+								this.getOrderSelect();
+							});
+					}
+				}
+			});
+		},
+		// 获取消息模版ID 后台取消订单, 退款通知
+		getSettingDataByMessageId() {
+			this.$u.api
+				.getSettingDataByMessageId({
+					id: [5, 7]
+				})
+				.then(res => {
+					if (res.data.length > 0) {
+						this.tmplIds = res.data.map(item => {
+							return item.weixinTemplateId;
+						});
+					}
+				});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.order-item {
+	margin: 24upx 0;
+	padding-bottom: 24rpx;
+	background-color: #fff;
+
+	.order-no-view {
+		font-size: 24upx;
+		padding: 24upx 30upx;
+		color: #666;
+		font-weight: 300;
+		border-bottom: 1upx solid #eee;
+		.order-status-text {
+			font-weight: 500;
+		}
+	}
+
+	.goods-li:last-child {
+		margin-bottom: 0;
+	}
+	.goods-ul {
+		padding: 20rpx 10rpx 0;
+		.goods-li {
+			margin: 0 10rpx;
+			display: inline-block;
+			text-align: center;
+			line-height: 100rpx;
+			background: #eeeeee;
+			border-radius: 16rpx;
+			overflow: hidden;
+			width: 100upx;
+			height: 100upx;
+			.goods-img {
+				width: 100%;
+				height: 100%;
+			}
+			position: relative;
+			.buyNum {
+				position: absolute;
+				font-size: 20rpx;
+				color: #ffffff;
+				line-height: 32rpx;
+				background-color: rgba($color: #000000, $alpha: 0.6);
+				padding: 0 10rpx;
+				right: 0;
+				bottom: 0;
+			}
+		}
+	}
+
+	.goods-li {
+		// background: #fafafa;
+		// padding: 30upx 20upx;
+		// margin-bottom: 20upx;
+		// margin-right: 10rpx;
+
+		.goods-right {
+			width: 500upx;
+			margin-left: 20upx;
+
+			.goods-name {
+				color: #333;
+				font-size: 32upx;
+				margin-bottom: 19upx;
+				text-overflow: -o-ellipsis-lastline;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				line-clamp: 1;
+				-webkit-box-orient: vertical;
+			}
+
+			.goods-descrip {
+				font-size: 22upx;
+				color: #999;
+				margin-bottom: 28upx;
+				// font-weight: 300;
+				text-overflow: -o-ellipsis-lastline;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				line-clamp: 1;
+				-webkit-box-orient: vertical;
+			}
+
+			.goods-price {
+				.price {
+					color: $price-color;
+					font-size: 40upx;
+				}
+
+				.sku {
+					font-size: 22upx;
+					font-weight: 300;
+					color: #666;
+				}
+				.float_right {
+					font-size: 24upx;
+				}
+			}
+		}
+	}
+}
+
+.money-view {
+	color: #666666;
+	text-align: right;
+	font-size: 24upx;
+	padding: 24upx 30upx;
+	.price {
+		font-size: 24upx;
+		font-weight: bold;
+		color: #000000;
+		margin-left: 10rpx;
+		display: inline-block;
+	}
+}
+.middle {
+	font-size: 24upx;
+	position: relative;
+	padding: 0 30upx;
+}
+
+.btnS {
+	padding: 0 20upx;
+	line-height: 50upx;
+	color: #6e6e6e;
+	font-size: 24upx;
+	text-align: center;
+	margin-left: 20upx;
+	height: 50upx;
+	background: rgba(241, 241, 241, 1);
+	// box-shadow: 0px 2upx 14upx 0px rgba(0, 0, 0, 0.1);
+	border-radius: 8upx;
+}
+
+.btnSAdd {
+	padding: 0 20upx;
+	line-height: 50upx;
+	color: #ffffff;
+	font-size: 24upx;
+	text-align: center;
+	height: 50upx;
+	border-radius: 8upx;
+	margin-left: 20rpx;
+}
+.content {
+	background: $page-color-base;
+	height: 100vh;
+}
+
+.swiper-box {
+	height: calc(100% - 80upx);
+}
+
+.list-scroll-content {
+	height: 100%;
+}
+
+.navbar {
+	display: flex;
+	height: 88upx;
+	background: #fff;
+	position: relative;
+	z-index: 10;
+	border-bottom: 1upx solid #eee;
+
+	.nav-item {
+		flex: 1;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		height: 100%;
+		font-size: 28upx;
+		color: #666666;
+		position: relative;
+		font-weight: 300;
+
+		&.current {
+			font-weight: 500;
+			.current-line {
+				content: '';
+				position: absolute;
+				left: 50%;
+				bottom: 10upx;
+				transform: translateX(-50%);
+				width: 40upx;
+				height: 6upx;
+				background: $base-btn-bg;
+				border-radius: 6upx;
+				/*border-bottom: 2px solid #F53C28;*/
+			}
+		}
+	}
+}
+</style>

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov