喻文俊 3 년 전
부모
커밋
1cb8f04060
93개의 변경된 파일2879개의 추가작업 그리고 4885개의 파일을 삭제
  1. 4 15
      App.vue
  2. 0 0
      common/addressdata.js
  3. 0 0
      common/authorize.js
  4. 0 0
      common/common.js
  5. 0 18
      common/config/global.component.js
  6. 7 0
      common/global.component.js
  7. 0 0
      common/uma.init.js
  8. 0 0
      common/utilsTools.js
  9. 43 43
      components/clipboard/clipboard.thorui.js
  10. 262 258
      components/clipboard/formValidation.js
  11. 22 22
      components/clipboard/utils.js
  12. 0 107
      components/cm-custom/au-custom.vue
  13. 0 122
      components/cm-custom/cm-custom.vue
  14. 0 114
      components/cm-custom/cu-custom.vue
  15. 0 159
      components/cm-custom/custom-d.vue
  16. 0 229
      components/cm-custom/custom-p.vue
  17. 0 160
      components/cm-custom/index-custom.vue
  18. 0 0
      components/cm-module/cm-drag/cm-drag.vue
  19. 0 0
      components/cm-module/createOrder/address.vue
  20. 0 0
      components/cm-module/createOrder/freight.vue
  21. 0 0
      components/cm-module/createOrder/goodsList.vue
  22. 0 0
      components/cm-module/createOrder/sellerFreight.vue
  23. 0 0
      components/cm-module/createOrder/sellerInvoice.vue
  24. 0 0
      components/cm-module/createOrder/sellerRegulations.vue
  25. 0 0
      components/cm-module/empty/empty.vue
  26. 0 209
      components/cm-module/headerNavbar/header-back.vue
  27. 167 0
      components/cm-module/headerNavbar/header-cart.vue
  28. 208 0
      components/cm-module/headerNavbar/header-order.vue
  29. 0 0
      components/cm-module/headerNavbar/header-pay.vue
  30. 0 0
      components/cm-module/headerNavbar/header-payment.vue
  31. 233 220
      components/cm-module/headerNavbar/header-poduct.vue
  32. 0 162
      components/cm-module/headerNavbar/headerNavbar.vue
  33. 0 4
      components/cm-module/homeIndex/customer.vue
  34. 1 3
      components/cm-module/listTemplate/classifyProductList.vue
  35. 2 4
      components/cm-module/listTemplate/immediatelyList.vue
  36. 2 4
      components/cm-module/listTemplate/productList.vue
  37. 0 0
      components/cm-module/modal-layer/modal-layer.vue
  38. 197 228
      components/cm-module/orderDetails/activipopu.vue
  39. 190 173
      components/cm-module/orderDetails/logisticsRecord.vue
  40. 143 137
      components/cm-module/orderDetails/orderButton.vue
  41. 227 225
      components/cm-module/orderDetails/orderInformation.vue
  42. 199 228
      components/cm-module/productDetails/cm-activipopu.vue
  43. 316 338
      components/cm-module/productDetails/cm-price-activity.vue
  44. 315 337
      components/cm-module/productDetails/cm-price.vue
  45. 1 9
      components/cm-module/productDetails/evaluate.vue
  46. 1 7
      components/cm-module/productDetails/instrument-recommend.vue
  47. 1 7
      components/cm-module/productDetails/recommend.vue
  48. 0 0
      components/cm-module/share/share.vue
  49. 1 1
      components/mpvue-citypicker/mpvueCityPicker.vue
  50. 0 166
      components/tui-components/loadmore/loadmore.vue
  51. 0 119
      components/tui-components/nomore/nomore.vue
  52. 0 233
      components/tui-components/tui-tabs/tui-tabs.vue
  53. 0 161
      components/tui-loadmore/tui-loadmore.vue
  54. 0 115
      components/tui-nomore/tui-nomore.vue
  55. 0 246
      components/tui-skeleton/tui-skeleton.vue
  56. 0 0
      components/uni-components/uni-badge/uni-badge.vue
  57. 0 0
      components/uni-components/uni-calendar/calendar.js
  58. 0 0
      components/uni-components/uni-calendar/uni-calendar-item.vue
  59. 0 0
      components/uni-components/uni-calendar/uni-calendar.vue
  60. 0 0
      components/uni-components/uni-calendar/util.js
  61. 0 0
      components/uni-components/uni-grade/uni-grade.vue
  62. 0 0
      components/uni-components/uni-number-box/uni-number-box.vue
  63. 0 0
      components/uni-components/uni-search/bt-search.vue
  64. 1 1
      components/uni-components/uni-search/or-search.vue
  65. 0 0
      components/uni-components/uni-stars/uni-stars.vue
  66. 216 0
      components/uni-components/uni-swiper-dot/uni-swiper-dot.vue
  67. 4 4
      main.js
  68. 2 1
      pages.json
  69. 2 2
      pages/authorize/authorize.vue
  70. 7 14
      pages/goods/cart.vue
  71. 1 9
      pages/goods/good-floorMore.vue
  72. 7 10
      pages/goods/product-activi.vue
  73. 9 12
      pages/goods/product.vue
  74. 2 4
      pages/goods/search.vue
  75. 1 1
      pages/login/login.vue
  76. 3 10
      pages/tabBar/cart/index.vue
  77. 5 10
      pages/tabBar/index/index.vue
  78. 1 1
      pages/tabBar/user/index.vue
  79. 1 1
      pages/user/activity/activity.vue
  80. 6 2
      pages/user/address/addressManage.vue
  81. 6 6
      pages/user/order/create-order.vue
  82. 6 6
      pages/user/order/order-details.vue
  83. 7 15
      pages/user/order/order-list-retail.vue
  84. 7 15
      pages/user/order/order-list.vue
  85. 1 1
      pages/user/order/order-logistics.vue
  86. 8 4
      pages/user/order/order-payment.vue
  87. 3 9
      pages/user/order/search-order.vue
  88. 7 7
      pages/user/order/success.vue
  89. 2 2
      services/wxLogin.js
  90. 1 5
      store/getters.js
  91. 16 114
      store/index.js
  92. 5 11
      store/modules/app.js
  93. 0 25
      store/store.js

+ 4 - 15
App.vue

@@ -4,7 +4,7 @@
  */
 import Vue from 'vue'
 import { mapState, mapMutations } from 'vuex'
-import authorize from '@/common/config/authorize.js'
+import authorize from '@/common/authorize.js'
 import wxLogin from '@/services/wxLogin.js'
 export default {
     onLaunch: function() {
@@ -13,20 +13,8 @@ export default {
             success: function(e) {
                 let modelmes = e.model
                 self.$store.commit('app/setWindowHeight', e.windowHeight)
-                let reg =
-                    /iphone\sx/i.test(modelmes) ||
-                    (/iphone/i.test(modelmes) && /unknown/.test(modelmes)) ||
-                    /iphone\s11/.test(modelmes) ||
-                    /iPhone 11/i.test(modelmes) ||
-                    /iPhone X/i.test(modelmes)
-                console.log(reg)
-                if (
-                    modelmes.search('iPhone 11') != -1 ||
-                    modelmes.search('iPhone 11 Pro Max') != -1 ||
-                    modelmes.search('iPhone 12') != -1 ||
-                    modelmes.search('iPhone X') != -1
-                ) {
-                    //XS,XR,XS MAX均可以适配
+                // iphone x以上的版本都要控制下巴高度
+                if (/iphone [1|x]\s?/i.test(modelmes)) { 
                     self.$store.dispatch('app/setVariableFun', true)
                 } else {
                     self.$store.dispatch('app/setVariableFun', false)
@@ -196,4 +184,5 @@ page {
 .placeholder {
     color: #999999;
 }
+.uni-swiper__dots-box{display: none !important;}
 </style>

+ 0 - 0
common/config/addressdata.js → common/addressdata.js


+ 0 - 0
common/config/authorize.js → common/authorize.js


+ 0 - 0
common/config/common.js → common/common.js


+ 0 - 18
common/config/global.component.js

@@ -1,18 +0,0 @@
-import cuCustom from '@/components/cm-custom/cu-custom.vue'
-import auCustom from '@/components/cm-custom/au-custom.vue'
-import cmCustom from '@/components/cm-custom/cm-custom.vue'
-import wsCustom from '@/components/cm-custom/ws-custom.vue'
-import scrollTop from '@/components/cm-module/scrollTop/scrollTop.vue'
-import CityPicker from '@/components/mpvue-citypicker/mpvueCityPicker.vue' //全局注册地址组件
-
-const install = Vue => {
-    console.log('注册全局组件')
-    Vue.component('cu-custom', cuCustom)
-    Vue.component('au-custom', auCustom)
-    Vue.component('cm-custom', cmCustom)
-    Vue.component('ws-custom', wsCustom)
-    Vue.component('scroll-top', scrollTop)
-    Vue.component('city-Picker', CityPicker)
-}
-
-export default install

+ 7 - 0
common/global.component.js

@@ -0,0 +1,7 @@
+import scrollTop from '@/components/cm-module/scrollTop/scrollTop.vue'
+
+const install = Vue => {
+    Vue.component('scroll-top', scrollTop)
+}
+
+export default install

+ 0 - 0
common/config/uma.init.js → common/uma.init.js


+ 0 - 0
common/config/utilsTools.js → common/utilsTools.js


+ 43 - 43
components/clipboard/clipboard.thorui.js

@@ -5,51 +5,51 @@
  * @version 1.0.0
  **/
 // #ifdef H5
-import ClipboardJS from "@/components/clipboard/clipboard.min.js"
+import ClipboardJS from '@/components/clipboard/clipboard.min.js'
 // #endif
 const thorui = {
-	getClipboardData: function(data, callback) {
-		// #ifdef APP-PLUS || MP
-		uni.setClipboardData({
-			data: data,
-			success(res) {
-				uni.getClipboardData({
-					success(res) {
-						("function" == typeof callback) && callback(true)
-					},
-					fail(res) {
-						("function" == typeof callback) && callback(false)
-					}
-				})
-			},
-			fail(res) {
-				("function" == typeof callback) && callback(false)
-			}
-		})
-		// #endif
+    getClipboardData: function(data, callback) {
+        // #ifdef APP-PLUS || MP
+        uni.setClipboardData({
+            data: data,
+            success(res) {
+                uni.getClipboardData({
+                    success(res) {
+                        ('function' == typeof callback) && callback(true)
+                    },
+                    fail(res) {
+                        ('function' == typeof callback) && callback(false)
+                    }
+                })
+            },
+            fail(res) {
+                ('function' == typeof callback) && callback(false)
+            }
+        })
+        // #endif
 
-		// #ifdef H5
-		let event = window.event || {}
-		let clipboard = new ClipboardJS("", {
-			text: () => data
-		})
-		clipboard.on('success', (e) => {
-			("function" == typeof callback) && callback(true)
-			clipboard.off('success')
-			clipboard.off('error')
-			clipboard.destroy()
-		});
-		clipboard.on('error', (e) => {
-			("function" == typeof callback) && callback(false)
-			clipboard.off('success')
-			clipboard.off('error')
-			clipboard.destroy()
-		});
-		clipboard.onClick(event)
-		// #endif
-	}
-};
+        // #ifdef H5
+        let event = window.event || {}
+        let clipboard = new ClipboardJS('', {
+            text: () => data
+        })
+        clipboard.on('success', (e) => {
+            ('function' == typeof callback) && callback(true)
+            clipboard.off('success')
+            clipboard.off('error')
+            clipboard.destroy()
+        })
+        clipboard.on('error', (e) => {
+            ('function' == typeof callback) && callback(false)
+            clipboard.off('success')
+            clipboard.off('error')
+            clipboard.destroy()
+        })
+        clipboard.onClick(event)
+        // #endif
+    }
+}
 
 module.exports = {
-	getClipboardData: thorui.getClipboardData
-};
+    getClipboardData: thorui.getClipboardData
+}

+ 262 - 258
components/clipboard/formValidation.js

@@ -5,263 +5,267 @@
  **/
 
 const form = {
-	//当出现错误时返回错误消息,否则返回空即为验证通过
-	/*
-	 formData:Object 表单对象。{key:value,key:value},key==rules.name
-	 rules: Array [{name:name,rule:[],msg:[]},{name:name,rule:[],msg:[]}]
-			name:name 属性=> 元素的名称
-			rule:字符串数组 ["required","isMobile","isEmail","isCarNo","isIdCard","isAmount","isNum","isChinese","isEnglish",isEnAndNo","isSpecial","isEmoji",""isDate","isUrl","isSame:key","range:[1,9]","minLength:9","maxLength:Number"]
-			msg:数组 []。 与数组 rule 长度相同,对应的错误提示信息
-	*/
-	validation: function(formData, rules) {
-		for (let item of rules) {
-			let key = item.name;
-			let rule = item.rule;
-			let msgArr = item.msg;
-			if (!key || !rule || rule.length === 0 || !msgArr || msgArr.length === 0) {
-				continue;
-			}
-			for (let i = 0, length = rule.length; i < length; i++) {
-				let ruleItem = rule[i];
-				let msg = msgArr[i];
-				if (!ruleItem || !msg) {
-					continue;
-				}
-				//数据处理
-				let value = null;
-				if (~ruleItem.indexOf(":")) {
-					let temp = ruleItem.split(":");
-					ruleItem = temp[0];
-					value = temp[1];
-				}
-				let isError = false;
-				switch (ruleItem) {
-					case "required":
-						isError = form._isNullOrEmpty(formData[key]);
-						break;
-					case "isMobile":
-						isError = !form._isMobile(formData[key]);
-						break;
-					case "isEmail":
-						isError = !form._isEmail(formData[key]);
-						break;
-					case "isCarNo":
-						isError = !form._isCarNo(formData[key]);
-						break;
-					case "isIdCard":
-						isError = !form._isIdCard(formData[key]);
-						break;
-					case "isAmount":
-						isError = !form._isAmount(formData[key]);
-						break;
-					case "isNum":
-						isError = !form._isNum(formData[key]);
-						break;
-					case "isChinese":
-						isError = !form._isChinese(formData[key]);
-						break;
-					case "isEnglish":
-						isError = !form._isEnglish(formData[key]);
-						break;
-					case "isEnAndNo":
-						isError = !form._isEnAndNo(formData[key]);
-						break;
-					case "isEnOrNo":
-						isError = !form._isEnOrNo(formData[key]);
-						break;
-					case "isSpecial":
-						isError = form._isSpecial(formData[key]);
-						break;
-					case "isEmoji":
-						isError = form._isEmoji(formData[key]);
-						break;
-					case "isDate":
-						isError = !form._isDate(formData[key]);
-						break;
-					case "isUrl":
-						isError = !form._isUrl(formData[key]);
-						break;
-					case "isSame":
-						isError = !form._isSame(formData[key], formData[value]);
-						break;
-					case "range":
-						let range = null;
-						try {
-							range = JSON.parse(value);
-							if (range.length <= 1) {
-								throw new Error("range值传入有误!")
-							}
-						} catch (e) {
-							return "range值传入有误!"
-						}
-						isError = !form._isRange(formData[key], range[0], range[1])
-						break;
-					case "minLength":
-						isError = !form._minLength(formData[key], value)
-						break;
-					case "maxLength":
-						isError = !form._maxLength(formData[key], value)
-						break;
-					default:
-						break;
-				}
-				if (isError) {
-					return msg;
-				}
-			}
-		}
-		return "";
-	},
-	_isNullOrEmpty: function(value) {
-		return (value === null || value === '' || value === undefined) ? true : false;
-	},
-	_isMobile: function(value) {
-		return /^(?:13\d|14\d|15\d|16\d|17\d|18\d|19\d)\d{5}(\d{3}|\*{3})$/.test(value);
-	},
-	_isEmail: function(value) {
-		return /^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/.test(value);
-	},
-	_isCarNo: function(value) {
-		// 新能源车牌
-		const xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/;
-		// 旧车牌
-		const creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;
-		if (value.length === 7) {
-			return creg.test(value);
-		} else if (value.length === 8) {
-			return xreg.test(value);
-		} else {
-			return false;
-		}
-	},
-	_isIdCard: function(value) {
-		let idCard = value;
-		if (idCard.length == 15) {
-			return this.__isValidityBrithBy15IdCard;
-		} else if (idCard.length == 18) {
-			let arrIdCard = idCard.split("");
-			if (this.__isValidityBrithBy18IdCard(idCard) && this.__isTrueValidateCodeBy18IdCard(arrIdCard)) {
-				return true;
-			} else {
-				return false;
-			}
-		} else {
-			return false;
-		}
-	},
-	__isTrueValidateCodeBy18IdCard: function(arrIdCard) {
-		let sum = 0;
-		let Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1];
-		let ValideCode = [1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2];
-		if (arrIdCard[17].toLowerCase() == 'x') {
-			arrIdCard[17] = 10;
-		}
-		for (let i = 0; i < 17; i++) {
-			sum += Wi[i] * arrIdCard[i];
-		}
-		let valCodePosition = sum % 11;
-		if (arrIdCard[17] == ValideCode[valCodePosition]) {
-			return true;
-		} else {
-			return false;
-		}
-	},
-	__isValidityBrithBy18IdCard: function(idCard18) {
-		let year = idCard18.substring(6, 10);
-		let month = idCard18.substring(10, 12);
-		let day = idCard18.substring(12, 14);
-		let temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day));
-		if (temp_date.getFullYear() != parseFloat(year) || temp_date.getMonth() != parseFloat(month) - 1 || temp_date.getDate() !=
-			parseFloat(day)) {
-			return false;
-		} else {
-			return true;
-		}
-	},
-	__isValidityBrithBy15IdCard: function(idCard15) {
-		let year = idCard15.substring(6, 8);
-		let month = idCard15.substring(8, 10);
-		let day = idCard15.substring(10, 12);
-		let temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day));
+    //当出现错误时返回错误消息,否则返回空即为验证通过
+    /*
+     formData:Object 表单对象。{key:value,key:value},key==rules.name
+     rules: Array [{name:name,rule:[],msg:[]},{name:name,rule:[],msg:[]}]
+    		name:name 属性=> 元素的名称
+    		rule:字符串数组 ["required","isMobile","isEmail","isCarNo","isIdCard","isAmount","isNum","isChinese","isEnglish",isEnAndNo","isSpecial","isEmoji",""isDate","isUrl","isSame:key","range:[1,9]","minLength:9","maxLength:Number"]
+    		msg:数组 []。 与数组 rule 长度相同,对应的错误提示信息
+    */
+    validation: function(formData, rules) {
+        for (let item of rules) {
+            let key = item.name
+            let rule = item.rule
+            let msgArr = item.msg
+            if (!key || !rule || rule.length === 0 || !msgArr || msgArr.length === 0) {
+                continue
+            }
+            for (let i = 0, length = rule.length; i < length; i++) {
+                let ruleItem = rule[i]
+                let msg = msgArr[i]
+                if (!ruleItem || !msg) {
+                    continue
+                }
+                //数据处理
+                let value = null
+                if (~ruleItem.indexOf(':')) {
+                    let temp = ruleItem.split(':')
+                    ruleItem = temp[0]
+                    value = temp[1]
+                }
+                let isError = false
+                switch (ruleItem) {
+                case 'required':
+                    isError = form._isNullOrEmpty(formData[key])
+                    break
+                case 'isMobile':
+                    isError = !form._isMobile(formData[key])
+                    break
+                case 'isEmail':
+                    isError = !form._isEmail(formData[key])
+                    break
+                case 'isCarNo':
+                    isError = !form._isCarNo(formData[key])
+                    break
+                case 'isIdCard':
+                    isError = !form._isIdCard(formData[key])
+                    break
+                case 'isAmount':
+                    isError = !form._isAmount(formData[key])
+                    break
+                case 'isNum':
+                    isError = !form._isNum(formData[key])
+                    break
+                case 'isChinese':
+                    isError = !form._isChinese(formData[key])
+                    break
+                case 'isEnglish':
+                    isError = !form._isEnglish(formData[key])
+                    break
+                case 'isEnAndNo':
+                    isError = !form._isEnAndNo(formData[key])
+                    break
+                case 'isEnOrNo':
+                    isError = !form._isEnOrNo(formData[key])
+                    break
+                case 'isSpecial':
+                    isError = form._isSpecial(formData[key])
+                    break
+                case 'isEmoji':
+                    isError = form._isEmoji(formData[key])
+                    break
+                case 'isDate':
+                    isError = !form._isDate(formData[key])
+                    break
+                case 'isUrl':
+                    isError = !form._isUrl(formData[key])
+                    break
+                case 'isSame':
+                    isError = !form._isSame(formData[key], formData[value])
+                    break
+                case 'range':
+                    let range = null
+                    try {
+                        range = JSON.parse(value)
+                        if (range.length <= 1) {
+                            throw new Error('range值传入有误!')
+                        }
+                    } catch (e) {
+                        return 'range值传入有误!'
+                    }
+                    isError = !form._isRange(formData[key], range[0], range[1])
+                    break
+                case 'minLength':
+                    isError = !form._minLength(formData[key], value)
+                    break
+                case 'maxLength':
+                    isError = !form._maxLength(formData[key], value)
+                    break
+                default:
+                    break
+                }
+                if (isError) {
+                    return msg
+                }
+            }
+        }
+        return ''
+    },
+    _isNullOrEmpty: function(value) {
+        return (value === null || value === '' || value === undefined) ? true : false
+    },
+    _isMobile: function(value) {
+        return /^(?:13\d|14\d|15\d|16\d|17\d|18\d|19\d)\d{5}(\d{3}|\*{3})$/.test(value)
+    },
+    _isEmail: function(value) {
+        return /^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/.test(value)
+    },
+    _isCarNo: function(value) {
+        // 新能源车牌
+        const xreg =
+            /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/
+        // 旧车牌
+        const creg =
+            /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/
+        if (value.length === 7) {
+            return creg.test(value)
+        } else if (value.length === 8) {
+            return xreg.test(value)
+        } else {
+            return false
+        }
+    },
+    _isIdCard: function(value) {
+        let idCard = value
+        if (idCard.length == 15) {
+            return this.__isValidityBrithBy15IdCard
+        } else if (idCard.length == 18) {
+            let arrIdCard = idCard.split('')
+            if (this.__isValidityBrithBy18IdCard(idCard) && this.__isTrueValidateCodeBy18IdCard(arrIdCard)) {
+                return true
+            } else {
+                return false
+            }
+        } else {
+            return false
+        }
+    },
+    __isTrueValidateCodeBy18IdCard: function(arrIdCard) {
+        let sum = 0
+        let Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1]
+        let ValideCode = [1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2]
+        if (arrIdCard[17].toLowerCase() == 'x') {
+            arrIdCard[17] = 10
+        }
+        for (let i = 0; i < 17; i++) {
+            sum += Wi[i] * arrIdCard[i]
+        }
+        let valCodePosition = sum % 11
+        if (arrIdCard[17] == ValideCode[valCodePosition]) {
+            return true
+        } else {
+            return false
+        }
+    },
+    __isValidityBrithBy18IdCard: function(idCard18) {
+        let year = idCard18.substring(6, 10)
+        let month = idCard18.substring(10, 12)
+        let day = idCard18.substring(12, 14)
+        let temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day))
+        if (temp_date.getFullYear() != parseFloat(year) || temp_date.getMonth() != parseFloat(month) - 1 ||
+            temp_date.getDate() !=
+            parseFloat(day)) {
+            return false
+        } else {
+            return true
+        }
+    },
+    __isValidityBrithBy15IdCard: function(idCard15) {
+        let year = idCard15.substring(6, 8)
+        let month = idCard15.substring(8, 10)
+        let day = idCard15.substring(10, 12)
+        let temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day))
 
-		if (temp_date.getYear() != parseFloat(year) || temp_date.getMonth() != parseFloat(month) - 1 || temp_date.getDate() !=
-			parseFloat(day)) {
-			return false;
-		} else {
-			return true;
-		}
-	},
-	_isAmount: function(value) {
-		//金额,只允许保留两位小数
-		return /^([0-9]*[.]?[0-9])[0-9]{0,1}$/.test(value);
-	},
-	_isNum: function(value) {
-		//只能为数字
-		return /^[0-9]+$/.test(value);
-	},
-	_isChinese: function(value) {
-		let reg = /.*[\u4e00-\u9fa5]+.*$/;
-		return value !== "" && reg.test(value) && !form._isSpecial(value) && !form._isEmoji(value)
-	},
-	_isEnglish: function(value) {
-		return /^[a-zA-Z]*$/.test(value)
-	},
-	_isEnAndNo: function(value) {
-		//8~20位数字和字母组合
-		return /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,20}$/.test(value);
-	},
-	_isEnOrNo: function(value) {
-		//英文或者数字
-		let reg = /.*[\u4e00-\u9fa5]+.*$/;
-		let result = true;
-		if (reg.test(value) || form._isSpecial(value) || form._isEmoji(value)) {
-			result = false
-		}
-		return result
-	},
-	_isSpecial: function(value) {
-		//是否包含特殊字符
-		let regEn = /[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/im,
-			regCn = /[·!#¥(——):;“”‘、,|《。》?、【】[\]]/im;
-		if (regEn.test(value) || regCn.test(value)) {
-			return true;
-		}
-		return false;
-	},
-	_isEmoji: function(value) {
-		//是否包含表情
-		return /\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g.test(value);
-	},
-	_isDate: function(value) {
-		//2019-10-12
-		const reg =
-			/^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/;
-		return reg.test(value);
-	},
-	_isUrl: function(value) {
-		return /^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/.test(value);
-	},
-	_isSame: function(value1, value2) {
-		return value1 === value2
-	},
-	_isRange: function(value, range1, range2) {
-		if ((!range1 && range1 != 0) && (!range2 && range2 != 0)) {
-			return true;
-		} else if (!range1 && range1 != 0) {
-			return value <= range2
-		} else if (!range2 && range2 != 0) {
-			return value >= range1
-		} else {
-			return value >= range1 && value <= range2
-		}
-	},
-	_minLength: function(value, min) {
-		return value.length >= Number(min)
-	},
-	_maxLength: function(value, max) {
-		return value.length <= Number(max)
-	}
-};
+        if (temp_date.getYear() != parseFloat(year) || temp_date.getMonth() != parseFloat(month) - 1 ||
+            temp_date.getDate() !=
+            parseFloat(day)) {
+            return false
+        } else {
+            return true
+        }
+    },
+    _isAmount: function(value) {
+        //金额,只允许保留两位小数
+        return /^([0-9]*[.]?[0-9])[0-9]{0,1}$/.test(value)
+    },
+    _isNum: function(value) {
+        //只能为数字
+        return /^[0-9]+$/.test(value)
+    },
+    _isChinese: function(value) {
+        let reg = /.*[\u4e00-\u9fa5]+.*$/
+        return value !== '' && reg.test(value) && !form._isSpecial(value) && !form._isEmoji(value)
+    },
+    _isEnglish: function(value) {
+        return /^[a-zA-Z]*$/.test(value)
+    },
+    _isEnAndNo: function(value) {
+        //8~20位数字和字母组合
+        return /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,20}$/.test(value)
+    },
+    _isEnOrNo: function(value) {
+        //英文或者数字
+        let reg = /.*[\u4e00-\u9fa5]+.*$/
+        let result = true
+        if (reg.test(value) || form._isSpecial(value) || form._isEmoji(value)) {
+            result = false
+        }
+        return result
+    },
+    _isSpecial: function(value) {
+        //是否包含特殊字符
+        let regEn = /[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/im,
+            regCn = /[·!#¥(——):;“”‘、,|《。》?、【】[\]]/im
+        if (regEn.test(value) || regCn.test(value)) {
+            return true
+        }
+        return false
+    },
+    _isEmoji: function(value) {
+        //是否包含表情
+        return /\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g.test(value)
+    },
+    _isDate: function(value) {
+        //2019-10-12
+        const reg =
+            /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/
+        return reg.test(value)
+    },
+    _isUrl: function(value) {
+        return /^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/.test(value)
+    },
+    _isSame: function(value1, value2) {
+        return value1 === value2
+    },
+    _isRange: function(value, range1, range2) {
+        if ((!range1 && range1 != 0) && (!range2 && range2 != 0)) {
+            return true
+        } else if (!range1 && range1 != 0) {
+            return value <= range2
+        } else if (!range2 && range2 != 0) {
+            return value >= range1
+        } else {
+            return value >= range1 && value <= range2
+        }
+    },
+    _minLength: function(value, min) {
+        return value.length >= Number(min)
+    },
+    _maxLength: function(value, max) {
+        return value.length <= Number(max)
+    }
+}
 module.exports = {
-	validation: form.validation
-};
+    validation: form.validation
+}

+ 22 - 22
components/clipboard/utils.js

@@ -1,25 +1,25 @@
 const utils = {
-  getComponent: function(selector) {
-    const pages = getCurrentPages();
-    const current = pages[pages.length - 1];
-    //const component = current.selectAllComponents(selector);
-    const component = current.selectComponent(selector);
-    if (!component) {
-      return null;
+    getComponent: function(selector) {
+        const pages = getCurrentPages()
+        const current = pages[pages.length - 1]
+        //const component = current.selectAllComponents(selector);
+        const component = current.selectComponent(selector)
+        if (!component) {
+            return null
+        }
+        return component
+    },
+    toast: function(options) {
+        const {
+            //selector = '.tui-tips-ctx'
+            selector = '#tui-tips-ctx'
+        } = options
+        const component = utils.getComponent(selector)
+        if (component) {
+            component.showTips(options)
+        }
     }
-    return component;
-  },
-  toast: function(options) {
-    const {
-      //selector = '.tui-tips-ctx'
-      selector = '#tui-tips-ctx'
-    } = options;
-    const component = utils.getComponent(selector);
-    if (component) {
-      component.showTips(options);
-    }
-  }
-};
+}
 module.exports = {
-  toast: utils.toast
-};
+    toast: utils.toast
+}

+ 0 - 107
components/cm-custom/au-custom.vue

@@ -1,107 +0,0 @@
-<template name="headerNavbar">
-	<!-- 自定义导航栏 -->
-	<view class='navbar-wrap' :style="{height:CustomBar+'px',paddingTop:StatusBar+'px'}"> 
-	  	<view class="navbar-text" 
-			  :style="{color:navbarData.textColor ? navbarData.textColor:'',lineHeight:(CustomBar - StatusBar)+'px;',fontSize:fontSizeSetting+'px;',paddingLeft:navbarData.textLeft ? '' : (capsule.height+10)+'px'}" :class="platformClass">
-	    	  {{navbarData.title ? navbarData.title : " "}}
-	  	</view>
-	  	<view class="navbar-icon" v-if="navbarData.showCapsule == 1 ? true : false" 
-			  :style="{color:navbarData.textColor ? navbarData.textColor:'',top:capsule.top +'px;',left:((screenWidth-capsule.right)+5)+'px;',height:capsule.height+'px;',lineHeight:capsule.height+'px;'}">
-			  <text v-if="navbarData.haveBack" @tap="BackPage" class="iconfont icon-fanhui"></text>
-	  	</view>
-	</view>
-</template>
-
-<script>
-	var self;
-	export default{
-		name:'headerNavbar',
-		props:{
-		    navbarData: { // 由父页面传递的数据
-				type: Object
-		    }
-		},
-		data() {
-			return{
-				CustomBar:this.CustomBar,// 顶部导航栏高度
-				StatusBar: this.StatusBar,
-				fontSizeSetting:this.fontSizeSetting,
-				screenWidth:this.screenWidth,
-				capsule:this.capsule,
-				platformClass:this.platformClass,
-			}
-		},
-		created() {
-			if (getCurrentPages().length === 1) { // 当只有一个页面时
-			      this.navbarData.haveBack = false;
-			} else {
-			      this.navbarData.haveBack = true;
-			}
-		},
-		onLoad(){
-			
-		},
-		methods:{
-			BackPage: function () {
-				this.$emit('navigateBack')
-		    },
-			_goSearchPath:function () {
-				this.$emit('goSearchPath')
-			},
-			_goHome:function(){
-				uni.switchTab({
-		        	url: '/pages/tabBar/index/index'
-		      	})
-			}
-		},
-		onShow(){
-	
-		}
-	}
-</script>
-
-<style lang="scss">
-	.navbar-wrap {
-		 position: fixed;
-		 width: 100%;
-		 top: 0;
-		 z-index: 100000;
-		 box-sizing: border-box;
-	}
-	.navbar-text {
-		 font-size: 30rpx;
-		 color: #000000;
-		 font-weight: 500;
-	}
-	.navbar-text.center{
-		text-align: center;
-	}
-	.navbar-text.left{
-		text-align: left;
-		padding-left: 45px;
-	}
-	.navbar-icon {
-		 position: fixed;
-		 display: flex;
-		 box-sizing: border-box;
-	}
-	.navbar-icon .iconfont {
-		 display: inline-block;
-		 overflow: hidden;
-		 font-size: 44rpx;
-		 padding-right:40rpx;
-		 margin-top: 1px;
-	}
-	.navbar-icon .icon-sousuo {
-		color: #000000;
-	}
-	.navbar-icon view {
-		 height: 18px;
-		 border-left: 0.5px solid rgba(0,0,0, 0.3);
-		 margin-top: 6px;
-	}
-	.navbar-loading {
-		 background: #fff;
-		 text-align: center;
-	}
-</style>

+ 0 - 122
components/cm-custom/cm-custom.vue

@@ -1,122 +0,0 @@
-<template name="headerNavbar">
-	<!-- 自定义导航栏 -->
-	<view class='navbar-wrap' :style="{height:CustomBar+'px',paddingTop:StatusBar+'px',background:navbarData.bgColor ? navbarData.bgColor : ''}"> 
-	  	<view class="navbar-text" 
-			  :style="{color:navbarData.textColor ? navbarData.textColor:'',lineHeight:(CustomBar - StatusBar)+'px;',fontSize:fontSizeSetting+'px;',paddingLeft:navbarData.textLeft ? '' : 12+'px'}" :class="platformClass">
-	    	  {{navbarData.title ? navbarData.title : " "}}
-	  	</view>
-	  	<view class="navbar-icon" v-if="navbarData.showCapsule == 1 ? true : false" 
-			  :style="{top:capsule.top +'px;',left:((screenWidth-capsule.right)+5)+'px;',height:capsule.height+'px;',lineHeight:capsule.height+'px;'}">
-			  <text v-if="navbarData.haveBack" @tap="BackPage" class="iconfont icon-fanhui"></text>
-			  <text v-if="navbarData.haveHome" @tap="_goHome" class="iconfont icon-fanhuishouye"></text>
-	  	</view>
-		<view class="navbar-icon" v-if="navbarData.showSearch == 1 ? true : false"
-			  :style="{top:capsule.top+'px;',right:(capsule.width)+'px;',height:capsule.height+'px;',lineHeight:capsule.height+'px;'}">
-			  <text @click.stop="_goSearchPath" class="iconfont icon-sousuo"></text>
-	  	</view>
-	</view>
-</template>
-
-<script>
-	var self;
-	export default{
-		name:'headerNavbar',
-		props:{
-		    navbarData: { // 由父页面传递的数据
-				type: Object,
-				default: () =>({
-					showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
-					showSearch: 0,
-					title: '', // 导航栏 中间的标题
-					haveBack:false,
-					home:false,
-					textLeft:false,
-					bgColor:'',
-					textColor:'#000000'
-				})
-		    }
-		},
-		data() {
-			return{
-				CustomBar:this.CustomBar,// 顶部导航栏高度
-				StatusBar: this.StatusBar,
-				fontSizeSetting:this.fontSizeSetting,
-				screenWidth:this.screenWidth,
-				capsule:this.capsule,
-				platformClass:this.platformClass,
-			}
-		},
-		created() {
-			if (getCurrentPages().length === 1) { // 当只有一个页面时
-			      this.navbarData.haveBack = false;
-			} else {
-			      this.navbarData.haveBack = true;
-			}
-		},
-		onLoad(){
-			
-		},
-		methods:{
-			BackPage: function () {
-				this.$emit('navigateBack')
-		    },
-			_goSearchPath:function () {
-				this.$emit('goSearchPath')
-			},
-			_goHome:function(){
-				uni.switchTab({
-		        	url: '/pages/tabBar/index/index'
-		      	})
-			}
-		},
-		onShow(){
-	
-		}
-	}
-</script>
-
-<style lang="scss">
-	.navbar-wrap {
-		 position: fixed;
-		 width: 100%;
-		 top: 0;
-		 z-index: 100000;
-		 box-sizing: border-box;
-	}
-	.navbar-text {
-		 font-size: 30rpx;
-		 color: #000000;
-		 font-weight: 500;
-	}
-	.navbar-text.center{
-		text-align: center;
-	}
-	.navbar-text.left{
-		text-align: left;
-		padding-left: 45px;
-	}
-	.navbar-icon {
-		 position: fixed;
-		 display: flex;
-		 box-sizing: border-box;
-	}
-	.navbar-icon .iconfont {
-		 display: inline-block;
-		 overflow: hidden;
-		 font-size: 44rpx;
-		 padding-right:40rpx;
-		 margin-top: 1px;
-	}
-	.navbar-icon .icon-sousuo {
-		color: #000000;
-	}
-	.navbar-icon view {
-		 height: 18px;
-		 border-left: 0.5px solid rgba(0,0,0, 0.3);
-		 margin-top: 6px;
-	}
-	.navbar-loading {
-		 background: #fff;
-		 text-align: center;
-	}
-</style>

+ 0 - 114
components/cm-custom/cu-custom.vue

@@ -1,114 +0,0 @@
-<template name="headerNavbar">
-	<!-- 自定义导航栏 -->
-	<view class='navbar-wrap' :style="{height:CustomBar+'px',paddingTop:StatusBar+'px',background:navbarData.bgColor ? navbarData.bgColor : '#FFFFFF'}"> 
-	  	<view class="navbar-text" 
-			  :style="{color:navbarData.textColor ? navbarData.textColor:'',lineHeight:(CustomBar - StatusBar)+'px;',fontSize:fontSizeSetting+'px;',paddingLeft:navbarData.textLeft ? '' : (capsule.height+10)+'px'}" :class="platformClass">
-	    	  {{navbarData.title ? navbarData.title : " "}}
-	  	</view>
-	  	<view class="navbar-icon" v-if="navbarData.showCapsule == 1 ? true : false" 
-			  :style="{top:capsule.top +'px;',left:((screenWidth-capsule.right)+5)+'px;',height:capsule.height+'px;',lineHeight:capsule.height+'px;'}">
-			  <text v-if="navbarData.haveBack" @tap="BackPage" class="iconfont icon-daohangfanhui"></text>
-			  <text v-if="navbarData.haveHome" @tap="_goHome" class="iconfont icon-fanhuishouye"></text>
-	  	</view>
-		<view class="navbar-icon" v-if="navbarData.showSearch == 1 ? true : false"
-			  :style="{top:capsule.top+'px;',right:(capsule.width)+'px;',height:capsule.height+'px;',lineHeight:capsule.height+'px;'}">
-			  <text @click.stop="_goSearchPath" class="iconfont icon-sousuo"></text>
-	  	</view>
-	</view>
-</template>
-
-<script>
-	var self;
-	export default{
-		name:'headerNavbar',
-		props:{
-		    navbarData: { // 由父页面传递的数据
-				type: Object
-		    }
-		},
-		data() {
-			return{
-				CustomBar:this.CustomBar,// 顶部导航栏高度
-				StatusBar: this.StatusBar,
-				fontSizeSetting:this.fontSizeSetting,
-				screenWidth:this.screenWidth,
-				capsule:this.capsule,
-				platformClass:this.platformClass,
-			}
-		},
-		created() {
-			if (getCurrentPages().length === 1) { // 当只有一个页面时
-			      this.navbarData.haveBack = false;
-			} else {
-			      this.navbarData.haveBack = true;
-			}
-		},
-		onLoad(){
-			
-		},
-		methods:{
-			BackPage: function () {
-				this.$emit('navigateBack')
-		    },
-			_goSearchPath:function () {
-				this.$emit('goSearchPath')
-			},
-			_goHome:function(){
-				uni.switchTab({
-		        	url: '/pages/tabBar/index/index'
-		      	})
-			}
-		},
-		onShow(){
-	
-		}
-	}
-</script>
-
-<style lang="scss">
-	.navbar-wrap {
-		 position: fixed;
-		 width: 100%;
-		 top: 0;
-		 z-index: 100000;
-		 box-sizing: border-box;
-		 background: #FFFFFF;
-		 border-bottom: 1px solid #F7F7F7;
-	}
-	.navbar-text {
-		 font-size: 30rpx;
-		 color: #000000;
-		 font-weight: 500;
-	}
-	.navbar-text.center{
-		text-align: center;
-	}
-	.navbar-text.left{
-		text-align: left;
-		padding-left: 45px;
-	}
-	.navbar-icon {
-		 position: fixed;
-		 display: flex;
-		 box-sizing: border-box;
-	}
-	.navbar-icon .iconfont {
-		 display: inline-block;
-		 overflow: hidden;
-		 font-size: 44rpx;
-		 padding-right:40rpx;
-		 margin-top: 1px;
-	}
-	.navbar-icon .icon-sousuo {
-		color: #000000;
-	}
-	.navbar-icon view {
-		 height: 18px;
-		 border-left: 0.5px solid rgba(0,0,0, 0.3);
-		 margin-top: 6px;
-	}
-	.navbar-loading {
-		 background: #fff;
-		 text-align: center;
-	}
-</style>

+ 0 - 159
components/cm-custom/custom-d.vue

@@ -1,159 +0,0 @@
-<template name="headerNavbar">
-	<!-- 发货记录自定义导航栏 -->
-	<view class='navbar-wrap' :style="{height:navbarHeight+'px',paddingTop:statusBarHeight+'px'}"> 
-	  	<view class="navbar-text" :style="{lineHeight:(navbarHeight - statusBarHeight)+'px;',fontSize:fontSizeSetting+'px;'}">
-	    	{{navbarData.title ? navbarData.title : " "}}
-	  	</view>
-	  	<view class="navbar-icon" :style="{width:headerBtnPosi.width+'px',lineHeight:(navbarBtn.height)+'px',top:navbarBtn.top + statusBarHeight+'px',left:navbarBtn.right+'px',height:(navbarBtn.height)+'px'}">
-			  <text @click="_goBack" class="iconfont icon-shangyibu" :style="{width:headerBtnPosi.width/2+'px',height:navbarBtn.height+'px'}"></text>
-	      	  <text class="iconfont icon-vertical_line" :style="{borderColor:navbarData.borderColor ? navbarData.borderColor : 'rgba(0,0,0,0.4)'}"></text>
-			  <text @click="_goDetails" class="iconfont icon-fanhuishouye" :style="{width:headerBtnPosi.width/2+'px',height:navbarBtn.height+'px'}"></text>
-	  	</view>
-	</view>
-</template>
-
-<script>
-	var self;
-	export default{
-		name:'headerNavbar',
-		props:{
-		    navbarData: { // 由父页面传递的数据
-				type: Object
-		    },
-			systeminfo:{
-				type:Object
-			},
-			headerBtnPosi:{
-				type:Object
-			},
-			page:{
-				type:Number
-			}
-		},
-		data() {
-			return{
-				haveBack: true, // 是否有返回按钮,true 有 false 没有 若从分享页进入则为 false
-			    statusBarHeight: 0, // 状态栏高度
-			    navbarHeight: 0, // 顶部导航栏高度
-			    navbarBtn: { // 胶囊位置信息
-			      height: 0,
-			      width: 0,
-			      top: 0,
-			      bottom: 0,
-			      right: 0
-				},
-				platform:'',
-				fontSizeSetting:0,
-				screenWidth:0
-			}
-		},
-		created() {
-			this.fontSizeSetting = this.systeminfo.fontSizeSetting
-			let statusBarHeight = this.systeminfo.statusBarHeight // 状态栏高度
-			let headerPosi = this.headerBtnPosi // 胶囊位置信息
-		    /**
-		     * wx.getMenuButtonBoundingClientRect() 坐标信息以屏幕左上角为原点
-		     * 菜单按键宽度: 87
-		     * 菜单按键高度: 32
-		     * 菜单按键左边界坐标: 278
-		     * 菜单按键上边界坐标: 26
-		     * 菜单按键右边界坐标: 365
-		     * 菜单按键下边界坐标: 58
-		     */
-			let btnPosi = { // 胶囊实际位置,坐标信息不是左上角原点
-			      height: headerPosi.height,
-			      width: headerPosi.width,
-			      // 胶囊top - 状态栏高度
-			      top: headerPosi.top - statusBarHeight,
-			      // 胶囊bottom - 胶囊height - 状态栏height (现胶囊bottom 为距离导航栏底部的长度)
-			      bottom: headerPosi.bottom - headerPosi.height - statusBarHeight,
-			      // 屏幕宽度 - 胶囊right
-			      right: this.systeminfo.screenWidth - headerPosi.right
-			}
-			let haveBack;
-			if (getCurrentPages().length === 1) { // 当只有一个页面时
-			     haveBack = false;
-			} else {
-			     haveBack = true;
-			}
-		    this.haveBack=haveBack, // 获取是否是通过分享进入的小程序
-		    this.statusBarHeight=statusBarHeight,
-		    this.navbarHeight= headerPosi.bottom + btnPosi.bottom, // 原胶囊bottom + 现胶囊bottom
-		    this.navbarBtn=btnPosi
-		},
-		onLoad(){
-			
-		},
-		methods:{
-			_goBack: function () {
-		      	uni.navigateBack({
-		        	delta: this.page
-		      	});
-		    },
-		    _goDetails: function () {
-		      this.$emit('pageDetails')
-		    }
-		},
-		onShow(){
-	
-		}
-	}
-</script>
-
-<style lang="scss">
-	.navbar-wrap {
-		 position: fixed;
-		 width: 100%;
-		 top: 0;
-		 z-index: 9999;
-		 box-sizing: border-box;
-		 background: #FFFFFF;
-		 border-bottom: 1px solid #F8F8F8;
-	}
-	.navbar-text {
-		 text-align: center;
-		 color: #000000;
-		 font-weight: 500;
-	}
-	.navbar-icon {
-		 position: fixed;
-		 display: flex;
-		 border-radius: 64rpx;
-		 border: 0.5px solid rgba(0,0,0, 0.2);
-		 box-sizing: border-box;
-	}
-	.navbar-icon .iconfont {
-		 text-align: center;
-		 display: inline-block;
-		 overflow: hidden;
-		 margin-bottom: 1px;
-	}
-	.navbar-icon .icon-vertical_line {
-		color: #999999;
-	}
-	.navbar-loading {
-		 background: #fff;
-		 text-align: center;
-	}
-</style>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

+ 0 - 229
components/cm-custom/custom-p.vue

@@ -1,229 +0,0 @@
-<template name="headerNavbar">
-	<!-- 自定义导航栏 -->
-	<view class='navbar-wrap' :class="[headerColor? 'bg-color' : 'no-color']" :style="{height:navbarHeight+'px',paddingTop:statusBarHeight+'px'}"> 
-	  	<view class="navbar-icon" v-if="navbarData.showCapsule ? navbarData.showCapsule : true" 
-			  :style="{top:navbarBtn.top + statusBarHeight+'px;',lineHeight:navbarBtn.height+'px;',left:navbarBtn.right+'px;',width:navbarBtn.height+'px;',height:navbarBtn.height+'px;'}">
-			  <text v-if='haveBack' @click="_goBack" class="iconfont icon-daohangfanhui"></text>
-			  <text v-else  @click="_goHome" class="iconfont icon-fanhuishouye"></text>
-	  	</view>
-		<view class="navbar-text" :style="{top:navbarBtn.top + statusBarHeight+'px;',height:navbarBtn.height+'px;',fontSize:fontSizeSetting+'px;'}">
-	    	<view class="gosearch-btn" :style="{paddingLeft:navbarBtn.height+'px;',right:(navbarBtn.width+20)+'px;',borderRadius:(navbarBtn.height/2)+'px;',width:(375-navbarBtn.width*2)+'px;',lineHeight:navbarBtn.height+'px;'}">
-				<text class="iconfont icon-sousuo" :style="{width:navbarBtn.height+'px;',height:navbarBtn.height+'px;',lineHeight:navbarBtn.height+'px;'}"></text>
-				<view class="input" @click="this.$api.navigateTo(clickPath)">搜索商品/供应商/项目仪器</view>
-			</view>
-	  	</view>
-	</view>
-</template>
-
-<script>
-	var self;
-	export default{
-		name:'headerNavbar',
-		props:{
-		    navbarData: { // 由父页面传递的数据
-				type: Object
-		    },
-			systeminfo:{
-				type:Object
-			},
-			headerBtnPosi:{
-				type:Object
-			},
-			page:{
-				type:Number
-			},
-			headerColor:{
-				type:Boolean
-			},
-			headerTitle:{
-				type:String
-			},
-			type:{
-				type:String
-			},
-		},
-		data() {
-			return{
-				headerType:'',
-				clickPath:'/search/pages/search/search', 
-				haveBack: true, // 是否有返回按钮,true 有 false 没有 若从分享页进入则为 false
-			    statusBarHeight: 0, // 状态栏高度
-			    navbarHeight: 0, // 顶部导航栏高度,
-			    navbarBtn: { // 胶囊位置信息
-			      height: 0,
-			      width: 0,
-			      top: 0,
-			      bottom: 0,
-			      right: 0
-				},
-				platform:'',
-				fontSizeSetting:0
-			}
-		},
-		created() {
-			this.headerType = this.type
-			this.fontSizeSetting = this.systeminfo.fontSizeSetting
-			let statusBarHeight = this.systeminfo.statusBarHeight // 状态栏高度
-			let headerPosi = this.headerBtnPosi // 胶囊位置信息
-		    /**
-		     * wx.getMenuButtonBoundingClientRect() 坐标信息以屏幕左上角为原点
-		     * 菜单按键宽度: 87
-		     * 菜单按键高度: 32
-		     * 菜单按键左边界坐标: 278
-		     * 菜单按键上边界坐标: 26
-		     * 菜单按键右边界坐标: 365
-		     * 菜单按键下边界坐标: 58
-		     */
-			let btnPosi = { // 胶囊实际位置,坐标信息不是左上角原点
-			      height: headerPosi.height,
-			      width: headerPosi.width,
-			      // 胶囊top - 状态栏高度
-			      top: headerPosi.top - statusBarHeight,
-			      // 胶囊bottom - 胶囊height - 状态栏height (现胶囊bottom 为距离导航栏底部的长度)
-			      bottom: headerPosi.bottom - headerPosi.height - statusBarHeight,
-			      // 屏幕宽度 - 胶囊right
-			      right: this.systeminfo.screenWidth - headerPosi.right
-			}
-			console.log(btnPosi)
-			let haveBack;
-			if (getCurrentPages().length === 1) { // 当只有一个页面时
-			     haveBack = false;
-			} else {
-			     haveBack = true;
-			}
-		    this.haveBack=haveBack, // 获取是否是通过分享进入的小程序
-		    this.statusBarHeight=statusBarHeight,
-		    this.navbarHeight= headerPosi.bottom + btnPosi.bottom, // 原胶囊bottom + 现胶囊bottom
-			this.$parent.navbarHeight = this.navbarHeight
-			this.$parent.statusBarHeight = this.statusBarHeight
-			// console.log(this.navbarHeight);
-		    this.navbarBtn=btnPosi
-		},
-		onLoad(){
-			
-		},
-		methods:{
-			_goBack: function () {
-		      	uni.navigateBack({
-		        	delta: this.page
-		      	});
-		    },
-		    _goHome: function () {
-		      	uni.switchTab({
-		        	url: '/pages/tabBar/index/index'
-		      	})
-		    }
-		},
-		onShow(){
-	
-		}
-	}
-</script>
-
-<style lang="scss">
-	.navbar-wrap {
-		 position: fixed;
-		 width: 100%;
-		 top: 0;
-		 z-index: 100000;
-		 box-sizing: border-box;
-		 &.bg-color{
-			animation: showColor 0.3s ease-in-out both;
-		 }
-		 &.no-color{
-		    animation: hideColor 0.3s ease-in-out both;
-		 }
-	}
-	.navbar-text {
-		 width: 100%;
-		 color: #000000;
-		 font-weight: 500;
-		 position: fixed;
-	}
-	.gosearch-btn{
-		height: 100%;
-		background: rgba(255, 255, 255, 0.6);
-		font-size: 28rpx;
-		color: #999999;
-		position: relative;
-		box-sizing: border-box;
-		position:absolute ;
-		top: 0;
-		border: 0.5px solid rgba(0, 0, 0, 0.1);
-		.icon-sousuo{
-			height: 100%;
-			text-align: center;
-			display: block;
-			position: absolute;
-			left: 0;
-			top: 0;
-			font-size: 34rpx;
-			color: #999999;
-			z-index: 10;
-		}
-		.input{
-			height: 100%;
-			float: left;
-			font-size: $font-size-24;
-			text-align: left;
-		}
-	}
-	.navbar-icon {
-		 position: fixed;
-		 display: flex;
-		 border-radius: 50%;
-		 text-align: center;
-		 background: rgba(255,255,255,0.6);
-		 border: 0.5px solid rgba(0,0,0, 0.1);
-		 box-sizing: border-box;
-		 z-index: 9999;
-	}
-	.navbar-icon .iconfont {
-		 height: 100%;
-		 width: 100%;
-		 font-size: 38rpx;
-		 font-weight: bold;
-		 display: inline-block;
-		 overflow: hidden;
-	}
-	.navbar-icon view {
-		 height: 18px;
-		 border-left: 0.5px solid rgba(0,0,0, 0.3);
-		 margin-top: 6px;
-	}
-	.navbar-loading {
-		 background: #fff;
-		 text-align: center;
-	}
-	@keyframes showColor {
-		0% {background: rgba(255,255,255,0);}
-		50% {background: rgba(255,255,255,0.5);}
-		100% {background: rgba(255,255,255,1);}
-	}
-	@keyframes hideColor {
-		0% {background: rgba(255,255,255,1);}
-		50% {background: rgba(255,255,255,0.5);}
-		100% {background: rgba(255,255,255,0);}
-	}
-</style>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

+ 0 - 160
components/cm-custom/index-custom.vue

@@ -1,160 +0,0 @@
-<template name="headerNavbar">
-	<!-- 自定义导航栏 -->
-	<view class='navbar-wrap' :style="{height:(CustomBar+55)+'px',paddingTop:StatusBar+'px'}"> 
-	  	<view class="navbar-text" 
-			  :style="{color:navbarData.textColor ? navbarData.textColor:'',lineHeight:(CustomBar - StatusBar)+'px;',fontSize:fontSizeSetting+'px;',paddingLeft:navbarData.textLeft ? '' : 12+'px'}" :class="platformClass">
-	    	  {{navbarData.title ? navbarData.title : " "}}
-	  	</view>
-		<view class="search-input">
-			<view class="gosearch-btn" @click="this.$api.navigateTo(clickPath)">
-				<view class="search-icon">
-					<text class="iconfont icon-iconfonticonfontsousuo1"></text>
-				</view>
-				<view class="search-text">{{hotSearchText}}</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	var self;
-	import btSearch from '@/components/uni-search/bt-search.vue'
-	export default{
-		name:'headerNavbar',
-		components:{
-			btSearch,
-		},
-		props:{
-		    navbarData: { // 由父页面传递的数据
-				type: Object
-		    }
-		},
-		data() {
-			return{
-				clickPath:'/search/pages/search/search',
-				hotSearchText:'搜索商品/项目仪器',
-				CustomBar:this.CustomBar,// 顶部导航栏高度
-				StatusBar: this.StatusBar,
-				fontSizeSetting:this.fontSizeSetting,
-				screenWidth:this.screenWidth,
-				capsule:this.capsule,
-				platformClass:this.platformClass,
-			}
-		},
-		created() {
-			if (getCurrentPages().length === 1) { // 当只有一个页面时
-			      this.navbarData.haveBack = false;
-			} else {
-			      this.navbarData.haveBack = true;
-			}
-		},
-		onLoad(){
-			
-		},
-		methods:{
-			BackPage: function () {
-				this.$emit('navigateBack')
-		    },
-			_goSearchPath:function () {
-				this.$emit('goSearchPath')
-			},
-			_goHome:function(){
-				uni.switchTab({
-		        	url: '/pages/tabBar/index/index'
-		      	})
-			}
-		},
-		onShow(){
-	
-		}
-	}
-</script>
-
-<style lang="scss">
-	.navbar-wrap {
-		 position: fixed;
-		 width: 100%;
-		 top: 0;
-		 z-index: 100000;
-		 box-sizing: border-box;
-		 background: url(https://img.caimei365.com/group1/M00/03/B0/Cmis217Z9LCAF_anAADHlsIu3aE475.png);
-		 background-size: cover;
-		 border-bottom:none;
-	}
-	.navbar-text {
-		 font-size: 30rpx;
-		 color: #000000;
-		 font-weight: 500;
-	}
-	.navbar-text.center{
-		text-align: center;
-	}
-	.navbar-text.left{
-		text-align: left;
-		padding-left: 45px;
-	}
-	.navbar-icon {
-		 position: fixed;
-		 display: flex;
-		 box-sizing: border-box;
-	}
-	.navbar-icon .iconfont {
-		 display: inline-block;
-		 overflow: hidden;
-		 font-size: 44rpx;
-		 padding-right:40rpx;
-		 margin-top: 1px;
-	}
-	.navbar-icon .icon-iconfonticonfontsousuo1 {
-		color: #000000;
-	}
-	.navbar-icon view {
-		 height: 18px;
-		 border-left: 0.5px solid rgba(0,0,0, 0.3);
-		 margin-top: 6px;
-	}
-	.navbar-loading {
-		 background: #fff;
-		 text-align: center;
-	}
-	.search-input{
-		width: 100%;
-		height: 110rpx;
-		padding: 20rpx 24rpx;
-		box-sizing: border-box;
-		.gosearch-btn{
-			width: 100%;
-			height: 100%;
-			border-radius: 40rpx;
-			background: #F0F0F0;
-			margin: 0 auto;
-			font-size: 28rpx;
-			line-height: 70rpx;
-			color: #8A8A8A;
-			background: #FFFFFF;
-			position: relative;
-			box-sizing: border-box;
-			padding-left: 80rpx;
-			.search-icon{
-				width: 80rpx;
-				height: 70rpx;
-				position:absolute ;
-				left: 0;
-				top: 2rpx;
-				text-align: center;
-				line-height: 70rpx;
-				.icon-iconfonticonfontsousuo1{
-					margin:0 6rpx;
-					font-size: $font-size-34;
-					color: #8A8A8A;
-					z-index: 10;
-				}
-			}
-			.search-text{
-				font-size: $font-size-24;
-				line-height: 70rpx;
-				color: #8A8A8A;
-			}
-		}
-	}
-</style>

+ 0 - 0
components/cm-custom/cm-drag.vue → components/cm-module/cm-drag/cm-drag.vue


+ 0 - 0
components/cm-module/creatOrder/address.vue → components/cm-module/createOrder/address.vue


+ 0 - 0
components/cm-module/creatOrder/freight.vue → components/cm-module/createOrder/freight.vue


+ 0 - 0
components/cm-module/creatOrder/goodsList.vue → components/cm-module/createOrder/goodsList.vue


+ 0 - 0
components/cm-module/creatOrder/sellerFreight.vue → components/cm-module/createOrder/sellerFreight.vue


+ 0 - 0
components/cm-module/creatOrder/sellerInvoice.vue → components/cm-module/createOrder/sellerInvoice.vue


+ 0 - 0
components/cm-module/creatOrder/sellerRegulations.vue → components/cm-module/createOrder/sellerRegulations.vue


+ 0 - 0
components/empty.vue → components/cm-module/empty/empty.vue


+ 0 - 209
components/cm-module/headerNavbar/header-back.vue

@@ -1,209 +0,0 @@
-<template name="headerNavbar">
-	<!-- 自定义导航栏 -->
-	<view class='navbar-wrap' :style="{height:navbarHeight+'px',paddingTop:statusBarHeight+'px'}"> 
-	  	<view class="navbar-text" :style="{lineHeight:(navbarHeight - statusBarHeight)+'px;',fontSize:fontSizeSetting+'px;'}" :class="platformClass">
-	    	{{navbarData.title ? navbarData.title : " "}}
-	  	</view>
-	  	<view class="navbar-icon" v-if="navbarData.showCapsule == 1 ? true : false" 
-			  :style="{top:navbarBtn.top + statusBarHeight+'px;',left:(navbarBtn.right)+'px;',height:navbarBtn.height+'px;',lineHeight:navbarBtn.height+'px;'}">
-			  <text v-if='haveBack' @click="_goBack" class="iconfont icon-daohangfanhui"></text>
-	  	</view>
-		<view class="navbar-icon" v-if="navbarData.showSearch == 1 ? true : false"
-			  :style="{top:navbarBtn.top + statusBarHeight+'px;',right:(navbarBtn.width)+'px;',height:navbarBtn.height+'px;',lineHeight:navbarBtn.height+'px;'}">
-			  <text @click.stop="_goSearchPath" class="iconfont icon-sousuo"></text>
-	  	</view>
-	</view>
-</template>
-
-<script>
-	var self;
-	export default{
-		name:'headerNavbar',
-		props:{ 
-		    navbarData: { // 由父页面传递的数据
-				type: Object
-		    },
-			systeminfo:{
-				type:Object
-			},
-			headerBtnPosi:{
-				type:Object
-			},
-			isShare:{
-				type:Boolean
-			},
-			isDelete:{
-				type:Boolean
-			},
-			isConfim:{
-				type:Boolean
-			},
-			isUsertype:{
-				type:Number
-			}
-		},
-		data() {
-			return{
-				haveBack: true,     // 是否有返回按钮,true 有 false 没有 若从分享页进入则为 false
-			    statusBarHeight: 0, // 状态栏高度
-			    navbarHeight: 0,    // 顶部导航栏高度
-			    navbarBtn: {        // 胶囊位置信息
-			      height: 0,
-			      width: 0,
-			      top: 0,
-			      bottom: 0,
-			      right: 0
-				},
-				platformClass:'',
-				fontSizeSetting:0,
-				
-			}
-		},
-		created() {
-			let statusBarHeight = this.systeminfo.statusBarHeight // 状态栏高度
-			let headerPosi = this.headerBtnPosi // 胶囊位置信息
-			this.fontSizeSetting = this.systeminfo.fontSizeSetting
-			if(this.systeminfo.platform == 'android'){
-				this.platformClass = 'left'
-			}else{
-				this.platformClass = 'center'
-			}
-		    /**
-		     * wx.getMenuButtonBoundingClientRect() 坐标信息以屏幕左上角为原点
-		     * 菜单按键宽度: 87
-		     * 菜单按键高度: 32
-		     * 菜单按键左边界坐标: 278
-		     * 菜单按键上边界坐标: 26
-		     * 菜单按键右边界坐标: 365
-		     * 菜单按键下边界坐标: 58
-		     */
-			let btnPosi = { // 胶囊实际位置,坐标信息不是左上角原点
-			      height: headerPosi.height,
-			      width: headerPosi.width,
-			      // 胶囊top - 状态栏高度
-			      top: headerPosi.top - statusBarHeight,
-			      // 胶囊bottom - 胶囊height - 状态栏height (现胶囊bottom 为距离导航栏底部的长度)
-			      bottom: headerPosi.bottom - headerPosi.height - statusBarHeight,
-			      // 屏幕宽度 - 胶囊right
-			      right: this.systeminfo.screenWidth - headerPosi.right
-			}
-			let haveBack;
-			if (getCurrentPages().length === 1) { // 当只有一个页面时
-			     haveBack = false;
-			} else {
-			     haveBack = true;
-			}
-		    this.haveBack=haveBack, // 获取是否是通过分享进入的小程序
-		    this.statusBarHeight=statusBarHeight,
-		    this.navbarHeight= headerPosi.bottom + btnPosi.bottom, // 原胶囊bottom + 现胶囊bottom
-		    this.navbarBtn=btnPosi
-		},
-		onLoad(){
-			
-		},
-		methods:{
-			_goBack: function () {
-				if(this.isShare){
-					this._goHome()
-				}else if(this.isDelete){
-					this._goUser()
-				}else if(this.isConfim){
-					this._goOrderList()
-				}else{
-					uni.navigateBack({
-			        	delta: 1
-			      	});
-				}
-		    },
-		    _goHome: function () {
-		      	uni.switchTab({
-		        	url: '/pages/tabBar/index/index'
-		      	})
-		    },
-		    _goUser: function () {
-		      	uni.switchTab({
-		        	url: '/pages/tabBar/user/index'
-		      	})
-		    }, 
-			_goOrderList: function () {
-		      	uni.navigateTo({
-		        	url: '/pages/user/order/order-list?state=0'
-		      	})
-		    },
-			_goSearchPath:function () {
-				this.$emit('goSearchPath')
-			}
-		},
-		onShow(){
-	
-		}
-	}
-</script>
-
-<style lang="scss">
-	.navbar-wrap {
-		 position: fixed;
-		 width: 100%;
-		 top: 0;
-		 z-index: 100000;
-		 box-sizing: border-box;
-		 background: #FFFFFF;
-	}
-	.navbar-text {
-		 font-size: 30rpx;
-		 color: #000000;
-		 font-weight: 500;
-	}
-	.navbar-text.center{
-		text-align: center;
-	}
-	.navbar-text.left{
-		text-align: left;
-		padding-left: 38px;
-	}
-	.navbar-icon {
-		 position: fixed;
-		 display: flex;
-		 box-sizing: border-box;
-	}
-	.navbar-icon .iconfont {
-		 display: inline-block;
-		 overflow: hidden;
-		 font-size: 42rpx;
-		 padding-right:40rpx;
-		 margin-top: 1px;
-	}
-	.navbar-icon .icon-sousuo {
-		color: #000000;
-	}
-	.navbar-icon view {
-		 height: 18px;
-		 border-left: 0.5px solid rgba(0,0,0, 0.3);
-		 margin-top: 6px;
-	}
-	.navbar-loading {
-		 background: #fff;
-		 text-align: center;
-	}
-</style>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

+ 167 - 0
components/cm-module/headerNavbar/header-cart.vue

@@ -0,0 +1,167 @@
+<template name="headerNavbar">
+    <!-- 自定义导航栏 -->
+    <view class="navbar-wrap" :style="{ height: navbarHeight + 'px', paddingTop: statusBarHeight + 'px' }">
+        <view
+            class="navbar-text"
+            :style="{ lineHeight: navbarHeight - statusBarHeight + 'px;', fontSize: fontSizeSetting + 'px;' }"
+        >
+            {{ navbarData.title ? navbarData.title : ' ' }}
+        </view>
+        <view
+            class="navbar-icon"
+            v-if="navbarData.showCapsule ? navbarData.showCapsule : true"
+            :style="{
+                width: headerBtnPosi.width + 'px;',
+                lineHeight: navbarBtn.height + 'px',
+                top: navbarBtn.top + statusBarHeight + 'px;',
+                left: navbarBtn.right + 'px;',
+                height: navbarBtn.height + 'px;'
+            }"
+        >
+            <text v-if="haveBack" @click="_goBack" class="iconfont icon-daohangfanhui"></text>
+            <text
+                v-if="haveBack"
+                class="iconfont icon-vertical_line"
+                :style="{ borderColor: navbarData.borderColor ? navbarData.borderColor : 'rgba(0,0,0,0.4)' }"
+            ></text>
+            <text @click="_goHome" class="iconfont icon-fanhuishouye"></text>
+        </view>
+    </view>
+</template>
+
+<script>
+var self
+export default {
+    name: 'headerNavbar',
+    props: {
+        navbarData: {
+            // 由父页面传递的数据
+            type: Object
+        },
+        systeminfo: {
+            type: Object
+        },
+        headerBtnPosi: {
+            type: Object
+        },
+        page: {
+            type: Number
+        }
+    },
+    data() {
+        return {
+            haveBack: true, // 是否有返回按钮,true 有 false 没有 若从分享页进入则为 false
+            statusBarHeight: 0, // 状态栏高度
+            navbarHeight: 0, // 顶部导航栏高度
+            navbarBtn: {
+                // 胶囊位置信息
+                height: 0,
+                width: 0,
+                top: 0,
+                bottom: 0,
+                right: 0
+            },
+            platform: '',
+            fontSizeSetting: 0,
+            screenWidth: 0
+        }
+    },
+    created() {
+        this.fontSizeSetting = this.systeminfo.fontSizeSetting
+        let statusBarHeight = this.systeminfo.statusBarHeight // 状态栏高度
+        let headerPosi = this.headerBtnPosi // 胶囊位置信息
+        /**
+         * wx.getMenuButtonBoundingClientRect() 坐标信息以屏幕左上角为原点
+         * 菜单按键宽度: 87
+         * 菜单按键高度: 32
+         * 菜单按键左边界坐标: 278
+         * 菜单按键上边界坐标: 26
+         * 菜单按键右边界坐标: 365
+         * 菜单按键下边界坐标: 58
+         */
+        let btnPosi = {
+            // 胶囊实际位置,坐标信息不是左上角原点
+            height: headerPosi.height,
+            width: headerPosi.width,
+            // 胶囊top - 状态栏高度
+            top: headerPosi.top - statusBarHeight,
+            // 胶囊bottom - 胶囊height - 状态栏height (现胶囊bottom 为距离导航栏底部的长度)
+            bottom: headerPosi.bottom - headerPosi.height - statusBarHeight,
+            // 屏幕宽度 - 胶囊right
+            right: this.systeminfo.screenWidth - headerPosi.right
+        }
+        let haveBack
+        if (getCurrentPages().length === 1) {
+            // 当只有一个页面时
+            haveBack = false
+        } else {
+            haveBack = true
+        }
+        ;(this.haveBack = haveBack), // 获取是否是通过分享进入的小程序
+            (this.statusBarHeight = statusBarHeight),
+            (this.navbarHeight = headerPosi.bottom + btnPosi.bottom), // 原胶囊bottom + 现胶囊bottom
+            (this.navbarBtn = btnPosi)
+    },
+    onLoad() {},
+    methods: {
+        _goBack: function() {
+            uni.navigateBack({
+                delta: this.page
+            })
+        },
+        _goHome: function() {
+            uni.switchTab({
+                url: '/pages/tabBar/index/index'
+            })
+        }
+    },
+    onShow() {}
+}
+</script>
+
+<style lang="scss">
+.navbar-wrap {
+    position: fixed;
+    width: 100%;
+    top: 0;
+    z-index: 9999;
+    box-sizing: border-box;
+    background: #ffffff;
+    border-bottom: 1px solid #f8f8f8;
+}
+.navbar-text {
+    text-align: center;
+    color: #000000;
+    font-weight: 500;
+}
+.navbar-icon {
+    position: fixed;
+    display: flex;
+    padding: 0 10rpx;
+    justify-content: space-around;
+    align-items: center;
+    border-radius: 64rpx;
+    border: 0.5px solid rgba(0, 0, 0, 0.2);
+    box-sizing: border-box;
+}
+.navbar-icon .iconfont {
+    font-size: 36rpx;
+    text-align: center;
+    display: inline-block;
+    overflow: hidden;
+    padding: 0;
+    margin: 0;
+}
+.navbar-icon .iconfont.icon-daohangfanhui,
+.navbar-icon .iconfont.icon-fanhuishouye {
+    flex: 1;
+}
+
+.navbar-icon .icon-vertical_line {
+    color: #999999;
+}
+.navbar-loading {
+    background: #fff;
+    text-align: center;
+}
+</style>

+ 208 - 0
components/cm-module/headerNavbar/header-order.vue

@@ -0,0 +1,208 @@
+<template name="headerNavbar">
+    <!-- 自定义导航栏 -->
+    <view class="navbar-wrap" :style="{ height: navbarHeight + 'px', paddingTop: statusBarHeight + 'px' }">
+        <view
+            class="navbar-text"
+            :style="{ lineHeight: navbarHeight - statusBarHeight + 'px;', fontSize: fontSizeSetting + 'px;' }"
+            :class="platformClass"
+        >
+            {{ navbarData.title ? navbarData.title : ' ' }}
+        </view>
+        <view
+            class="navbar-icon"
+            v-if="navbarData.showCapsule == 1 ? true : false"
+            :style="{
+                top: navbarBtn.top + statusBarHeight + 'px;',
+                left: navbarBtn.right + 'px;',
+                height: navbarBtn.height + 'px;',
+                lineHeight: navbarBtn.height + 'px;'
+            }"
+        >
+            <text v-if="haveBack" @click="_goBack" class="iconfont icon-daohangfanhui"></text>
+        </view>
+        <view
+            class="navbar-icon"
+            v-if="navbarData.showSearch == 1 ? true : false"
+            :style="{
+                top: navbarBtn.top + statusBarHeight + 'px;',
+                right: navbarBtn.width + 'px;',
+                height: navbarBtn.height + 'px;',
+                lineHeight: navbarBtn.height + 'px;'
+            }"
+        >
+            <text @click.stop="_goSearchPath" class="iconfont icon-sousuo"></text>
+        </view>
+    </view>
+</template>
+
+<script>
+var self
+export default {
+    name: 'headerNavbar',
+    props: {
+        navbarData: {
+            // 由父页面传递的数据
+            type: Object
+        },
+        systeminfo: {
+            type: Object
+        },
+        headerBtnPosi: {
+            type: Object
+        },
+        isShare: {
+            type: Boolean
+        },
+        isDelete: {
+            type: Boolean
+        },
+        isConfim: {
+            type: Boolean
+        },
+        isUsertype: {
+            type: Number
+        }
+    },
+    data() {
+        return {
+            haveBack: true, // 是否有返回按钮,true 有 false 没有 若从分享页进入则为 false
+            statusBarHeight: 0, // 状态栏高度
+            navbarHeight: 0, // 顶部导航栏高度
+            navbarBtn: {
+                // 胶囊位置信息
+                height: 0,
+                width: 0,
+                top: 0,
+                bottom: 0,
+                right: 0
+            },
+            platformClass: '',
+            fontSizeSetting: 0
+        }
+    },
+    created() {
+        let statusBarHeight = this.systeminfo.statusBarHeight // 状态栏高度
+        let headerPosi = this.headerBtnPosi // 胶囊位置信息
+        this.fontSizeSetting = this.systeminfo.fontSizeSetting
+        if (this.systeminfo.platform == 'android') {
+            this.platformClass = 'left'
+        } else {
+            this.platformClass = 'center'
+        }
+        /**
+         * wx.getMenuButtonBoundingClientRect() 坐标信息以屏幕左上角为原点
+         * 菜单按键宽度: 87
+         * 菜单按键高度: 32
+         * 菜单按键左边界坐标: 278
+         * 菜单按键上边界坐标: 26
+         * 菜单按键右边界坐标: 365
+         * 菜单按键下边界坐标: 58
+         */
+        let btnPosi = {
+            // 胶囊实际位置,坐标信息不是左上角原点
+            height: headerPosi.height,
+            width: headerPosi.width,
+            // 胶囊top - 状态栏高度
+            top: headerPosi.top - statusBarHeight,
+            // 胶囊bottom - 胶囊height - 状态栏height (现胶囊bottom 为距离导航栏底部的长度)
+            bottom: headerPosi.bottom - headerPosi.height - statusBarHeight,
+            // 屏幕宽度 - 胶囊right
+            right: this.systeminfo.screenWidth - headerPosi.right
+        }
+        let haveBack
+        if (getCurrentPages().length === 1) {
+            // 当只有一个页面时
+            haveBack = false
+        } else {
+            haveBack = true
+        }
+        ;(this.haveBack = haveBack), // 获取是否是通过分享进入的小程序
+            (this.statusBarHeight = statusBarHeight),
+            (this.navbarHeight = headerPosi.bottom + btnPosi.bottom), // 原胶囊bottom + 现胶囊bottom
+            (this.navbarBtn = btnPosi)
+    },
+    onLoad() {},
+    methods: {
+        _goBack: function() {
+            if (this.isShare) {
+                this._goHome()
+            } else if (this.isDelete) {
+                this._goUser()
+            } else if (this.isConfim) {
+                this._goOrderList()
+            } else {
+                uni.navigateBack({
+                    delta: 1
+                })
+            }
+        },
+        _goHome: function() {
+            uni.switchTab({
+                url: '/pages/tabBar/index/index'
+            })
+        },
+        _goUser: function() {
+            uni.switchTab({
+                url: '/pages/tabBar/user/index'
+            })
+        },
+        _goOrderList: function() {
+            uni.navigateTo({
+                url: '/pages/user/order/order-list?state=0'
+            })
+        },
+        _goSearchPath: function() {
+            this.$emit('goSearchPath')
+        }
+    },
+    onShow() {}
+}
+</script>
+
+<style lang="scss">
+.navbar-wrap {
+    position: fixed;
+    width: 100%;
+    top: 0;
+    z-index: 100000;
+    box-sizing: border-box;
+    background: #ffffff;
+}
+.navbar-text {
+    font-size: 30rpx;
+    color: #000000;
+    font-weight: 500;
+}
+.navbar-text.center {
+    text-align: center;
+}
+.navbar-text.left {
+    text-align: left;
+    padding-left: 38px;
+}
+.navbar-icon {
+    position: fixed;
+    display: flex;
+    box-sizing: border-box;
+    border: 0;
+}
+.navbar-icon .iconfont {
+    display: inline-block;
+    overflow: hidden;
+    font-size: 42rpx;
+    padding-right: 40rpx;
+    margin-top: 1px;
+}
+.navbar-icon .icon-sousuo {
+    color: #000000;
+}
+.navbar-icon view {
+    height: 18px;
+    border-left: 0.5px solid rgba(0, 0, 0, 0.3);
+    margin-top: 6px;
+}
+.navbar-loading {
+    background: #fff;
+    text-align: center;
+}
+</style>

+ 0 - 0
components/cm-custom/pay-custom.vue → components/cm-module/headerNavbar/header-pay.vue


+ 0 - 0
components/cm-custom/ws-custom.vue → components/cm-module/headerNavbar/header-payment.vue


+ 233 - 220
components/cm-module/headerNavbar/header-poduct.vue

@@ -1,228 +1,241 @@
 <template name="headerNavbar">
-	<!-- 自定义导航栏 -->
-	<view class='navbar-wrap' :class="[headerColor? 'bg-color' : 'bg-color']" :style="{height:navbarHeight+'px',paddingTop:CustomBar/2+'px'}"> 
-	  	<view class="navbar-icon" v-if="navbarData.showCapsule ? navbarData.showCapsule : true" 
-			  :style="{top:navbarBtn.top + statusBarHeight+'px;',lineHeight:navbarBtn.height+'px;',left:12+'px;',width:navbarBtn.height+'px;',height:navbarBtn.height+'px;'}">
-			  <text v-if='haveBack' @click="_goBack" class="iconfont icon-daohangfanhui"></text>
-			  <text v-else  @click="_goHome" class="iconfont icon-fanhuishouye"></text>
-	  	</view>
-		<view class="navbar-text" :style="{top:navbarBtn.top + statusBarHeight+'px;',height:navbarBtn.height+'px;',fontSize:fontSizeSetting+'px;'}">
-			商品详情
-		</view>
-	</view>
+    <!-- 自定义导航栏 -->
+    <view
+        class="navbar-wrap"
+        :class="[headerColor ? 'bg-color' : 'bg-color']"
+        :style="{ height: navbarHeight + 'px', paddingTop: CustomBar / 2 + 'px' }"
+    >
+        <view
+            class="navbar-icon"
+            v-if="navbarData.showCapsule ? navbarData.showCapsule : true"
+            :style="{
+                top: navbarBtn.top + statusBarHeight + 'px;',
+                lineHeight: navbarBtn.height + 'px;',
+                left: 12 + 'px;',
+                width: navbarBtn.height + 'px;',
+                height: navbarBtn.height + 'px;'
+            }"
+        >
+            <text v-if="haveBack" @click="_goBack" class="iconfont icon-daohangfanhui"></text>
+            <text v-else @click="_goHome" class="iconfont icon-fanhuishouye"></text>
+        </view>
+        <view
+            class="navbar-text"
+            :style="{
+                top: navbarBtn.top + statusBarHeight + 'px;',
+                height: navbarBtn.height + 'px;',
+                fontSize: fontSizeSetting + 'px;'
+            }"
+        >
+            商品详情
+        </view>
+    </view>
 </template>
 
 <script>
-	var self;
-	export default{
-		name:'headerNavbar',
-		props:{
-		    navbarData: { // 由父页面传递的数据
-				type: Object
-		    },
-			systeminfo:{
-				type:Object
-			},
-			headerBtnPosi:{
-				type:Object
-			},
-			page:{
-				type:Number
-			},
-			headerColor:{
-				type:Boolean
-			},
-			headerTitle:{
-				type:String
-			},
-			type:{
-				type:String
-			},
-		},
-		data() {
-			return{
-				headerType:'',
-				CustomBar:this.CustomBar,// 顶部导航栏高度
-				clickPath:'/search/pages/search/search',
-				haveBack: true, // 是否有返回按钮,true 有 false 没有 若从分享页进入则为 false
-			    statusBarHeight: 0, // 状态栏高度
-			    navbarHeight: 0, // 顶部导航栏高度,
-			    navbarBtn: { // 胶囊位置信息
-			      height: 0,
-			      width: 0,
-			      top: 0,
-			      bottom: 0,
-			      right: 0
-				},
-				platform:'',
-				fontSizeSetting:0
-			}
-		},
-		created() {
-			this.headerType = this.type
-			this.fontSizeSetting = this.systeminfo.fontSizeSetting
-			let statusBarHeight = this.systeminfo.statusBarHeight // 状态栏高度
-			let headerPosi = this.headerBtnPosi // 胶囊位置信息
-		    /**
-		     * wx.getMenuButtonBoundingClientRect() 坐标信息以屏幕左上角为原点
-		     * 菜单按键宽度: 87
-		     * 菜单按键高度: 32
-		     * 菜单按键左边界坐标: 278
-		     * 菜单按键上边界坐标: 26
-		     * 菜单按键右边界坐标: 365
-		     * 菜单按键下边界坐标: 58
-		     */
-			let btnPosi = { // 胶囊实际位置,坐标信息不是左上角原点
-			      height: headerPosi.height,
-			      width: headerPosi.width,
-			      // 胶囊top - 状态栏高度
-			      top: headerPosi.top - statusBarHeight,
-			      // 胶囊bottom - 胶囊height - 状态栏height (现胶囊bottom 为距离导航栏底部的长度)
-			      bottom: headerPosi.bottom - headerPosi.height - statusBarHeight,
-			      // 屏幕宽度 - 胶囊right
-			      right: this.systeminfo.screenWidth - headerPosi.right
-			}
-			console.log(btnPosi)
-			let haveBack;
-			if (getCurrentPages().length === 1) { // 当只有一个页面时
-			     haveBack = false;
-			} else {
-			     haveBack = true;
-			}
-		    this.haveBack=haveBack, // 获取是否是通过分享进入的小程序
-		    this.statusBarHeight=statusBarHeight,
-		    this.navbarHeight= headerPosi.bottom + btnPosi.bottom, // 原胶囊bottom + 现胶囊bottom
-			this.$parent.navbarHeight = this.navbarHeight
-			this.$parent.statusBarHeight = this.statusBarHeight
-			// console.log(this.navbarHeight);
-		    this.navbarBtn=btnPosi
-		},
-		onLoad(){
-			
-		},
-		methods:{
-			_goBack: function () {
-		      	uni.navigateBack({
-		        	delta: this.page
-		      	});
-		    },
-		    _goHome: function () {
-		      	uni.switchTab({
-		        	url: '/pages/tabBar/index/index'
-		      	})
-		    }
-		},
-		onShow(){
-	
-		}
-	}
+var self
+export default {
+    name: 'headerNavbar',
+    props: {
+        navbarData: {
+            // 由父页面传递的数据
+            type: Object
+        },
+        systeminfo: {
+            type: Object
+        },
+        headerBtnPosi: {
+            type: Object
+        },
+        page: {
+            type: Number
+        },
+        headerColor: {
+            type: Boolean
+        },
+        headerTitle: {
+            type: String
+        },
+        type: {
+            type: String
+        }
+    },
+    data() {
+        return {
+            headerType: '',
+            CustomBar: this.CustomBar, // 顶部导航栏高度
+            clickPath: '/search/pages/search/search',
+            haveBack: true, // 是否有返回按钮,true 有 false 没有 若从分享页进入则为 false
+            statusBarHeight: 0, // 状态栏高度
+            navbarHeight: 0, // 顶部导航栏高度,
+            navbarBtn: {
+                // 胶囊位置信息
+                height: 0,
+                width: 0,
+                top: 0,
+                bottom: 0,
+                right: 0
+            },
+            platform: '',
+            fontSizeSetting: 0
+        }
+    },
+    created() {
+        this.headerType = this.type
+        this.fontSizeSetting = this.systeminfo.fontSizeSetting
+        let statusBarHeight = this.systeminfo.statusBarHeight // 状态栏高度
+        let headerPosi = this.headerBtnPosi // 胶囊位置信息
+        /**
+         * wx.getMenuButtonBoundingClientRect() 坐标信息以屏幕左上角为原点
+         * 菜单按键宽度: 87
+         * 菜单按键高度: 32
+         * 菜单按键左边界坐标: 278
+         * 菜单按键上边界坐标: 26
+         * 菜单按键右边界坐标: 365
+         * 菜单按键下边界坐标: 58
+         */
+        let btnPosi = {
+            // 胶囊实际位置,坐标信息不是左上角原点
+            height: headerPosi.height,
+            width: headerPosi.width,
+            // 胶囊top - 状态栏高度
+            top: headerPosi.top - statusBarHeight,
+            // 胶囊bottom - 胶囊height - 状态栏height (现胶囊bottom 为距离导航栏底部的长度)
+            bottom: headerPosi.bottom - headerPosi.height - statusBarHeight,
+            // 屏幕宽度 - 胶囊right
+            right: this.systeminfo.screenWidth - headerPosi.right
+        }
+        console.log(btnPosi)
+        let haveBack
+        if (getCurrentPages().length === 1) {
+            // 当只有一个页面时
+            haveBack = false
+        } else {
+            haveBack = true
+        }
+        ;(this.haveBack = haveBack), // 获取是否是通过分享进入的小程序
+            (this.statusBarHeight = statusBarHeight),
+            (this.navbarHeight = headerPosi.bottom + btnPosi.bottom), // 原胶囊bottom + 现胶囊bottom
+            (this.$parent.navbarHeight = this.navbarHeight)
+        this.$parent.statusBarHeight = this.statusBarHeight
+        // console.log(this.navbarHeight);
+        this.navbarBtn = btnPosi
+    },
+    onLoad() {},
+    methods: {
+        _goBack: function() {
+            uni.navigateBack({
+                delta: this.page
+            })
+        },
+        _goHome: function() {
+            uni.switchTab({
+                url: '/pages/tabBar/index/index'
+            })
+        }
+    },
+    onShow() {}
+}
 </script>
 
 <style lang="scss">
-	.navbar-wrap {
-		 position: fixed;
-		 width: 100%;
-		 top: 0;
-		 z-index: 100000;
-		 box-sizing: border-box;
-		 &.bg-color{
-			animation: showColor 0.3s ease-in-out both;
-		 }
-		 &.no-color{
-		    animation: hideColor 0.3s ease-in-out both;
-		 }
-	}
-	.navbar-text {
-		 width: 100%;
-		 color: #000000;
-		 font-weight: 500;
-		 position: fixed;
-		 text-align: center;
-	}
-	.gosearch-btn{
-		height: 100%;
-		background: rgba(255, 255, 255, 0.6);
-		font-size: 28rpx;
-		color: #999999;
-		position: relative;
-		box-sizing: border-box;
-		position:absolute ;
-		top: 0;
-		border: 0.5px solid rgba(0, 0, 0, 0.1);
-		.icon-sousuo{
-			height: 100%;
-			text-align: center;
-			display: block;
-			position: absolute;
-			left: 0;
-			top: 0;
-			font-size: 34rpx;
-			color: #999999;
-			z-index: 10;
-		}
-		.input{
-			height: 100%;
-			float: left;
-			font-size: $font-size-24;
-			text-align: left;
-		}
-	}
-	.navbar-icon {
-		 position: fixed;
-		 display: flex;
-		 border-radius: 50%;
-		 text-align: center;
-		 background: rgba(255,255,255,0.6);
-		 border: 0.5px solid rgba(0,0,0, 0.1);
-		 box-sizing: border-box;
-		 z-index: 9999;
-	}
-	.navbar-icon .iconfont {
-		 height: 100%;
-		 width: 100%;
-		 font-size: 30rpx;
-		 font-weight: bold;
-		 display: inline-block;
-		 overflow: hidden;
-	}
-	.navbar-icon view {
-		 height: 18px;
-		 border-left: 0.5px solid rgba(0,0,0, 0.3);
-		 margin-top: 6px;
-	}
-	.navbar-loading {
-		 background: #fff;
-		 text-align: center;
-	}
-	@keyframes showColor {
-		0% {background: rgba(255,255,255,0);}
-		50% {background: rgba(255,255,255,0.5);}
-		100% {background: rgba(255,255,255,1);}
-	}
-	@keyframes hideColor {
-		0% {background: rgba(255,255,255,1);}
-		50% {background: rgba(255,255,255,0.5);}
-		100% {background: rgba(255,255,255,0);}
-	}
+.navbar-wrap {
+    position: fixed;
+    width: 100%;
+    top: 0;
+    z-index: 100000;
+    box-sizing: border-box;
+    &.bg-color {
+        animation: showColor 0.3s ease-in-out both;
+    }
+    &.no-color {
+        animation: hideColor 0.3s ease-in-out both;
+    }
+}
+.navbar-text {
+    width: 100%;
+    color: #000000;
+    font-weight: 500;
+    position: fixed;
+    text-align: center;
+}
+.gosearch-btn {
+    height: 100%;
+    background: rgba(255, 255, 255, 0.6);
+    font-size: 28rpx;
+    color: #999999;
+    position: relative;
+    box-sizing: border-box;
+    position: absolute;
+    top: 0;
+    border: 0.5px solid rgba(0, 0, 0, 0.1);
+    .icon-sousuo {
+        height: 100%;
+        text-align: center;
+        display: block;
+        position: absolute;
+        left: 0;
+        top: 0;
+        font-size: 34rpx;
+        color: #999999;
+        z-index: 10;
+    }
+    .input {
+        height: 100%;
+        float: left;
+        font-size: $font-size-24;
+        text-align: left;
+    }
+}
+.navbar-icon {
+    position: fixed;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    border-radius: 50%;
+    text-align: center;
+    background: rgba(255, 255, 255, 0.6);
+    border: 0.5px solid rgba(0, 0, 0, 0.1);
+    box-sizing: border-box;
+    z-index: 9999;
+}
+.navbar-icon .iconfont {
+    flex: 1;
+    font-size: 30rpx;
+    font-weight: bold;
+    overflow: hidden;
+    padding: 0;
+    margin: 0;
+}
+.navbar-icon view {
+    height: 18px;
+    border-left: 0.5px solid rgba(0, 0, 0, 0.3);
+    margin-top: 6px;
+}
+.navbar-loading {
+    background: #fff;
+    text-align: center;
+}
+@keyframes showColor {
+    0% {
+        background: rgba(255, 255, 255, 0);
+    }
+    50% {
+        background: rgba(255, 255, 255, 0.5);
+    }
+    100% {
+        background: rgba(255, 255, 255, 1);
+    }
+}
+@keyframes hideColor {
+    0% {
+        background: rgba(255, 255, 255, 1);
+    }
+    50% {
+        background: rgba(255, 255, 255, 0.5);
+    }
+    100% {
+        background: rgba(255, 255, 255, 0);
+    }
+}
 </style>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

+ 0 - 162
components/cm-module/headerNavbar/headerNavbar.vue

@@ -1,162 +0,0 @@
-<template name="headerNavbar">
-	<!-- 自定义导航栏 -->
-	<view class='navbar-wrap' :style="{height:navbarHeight+'px',paddingTop:statusBarHeight+'px'}"> 
-	  	<view class="navbar-text" :style="{lineHeight:(navbarHeight - statusBarHeight)+'px;',fontSize:fontSizeSetting+'px;'}">
-	    	{{navbarData.title ? navbarData.title : " "}}
-	  	</view>
-	  	<view class="navbar-icon" v-if="navbarData.showCapsule ? navbarData.showCapsule : true" 
-			  :style="{width:headerBtnPosi.width+'px;',lineHeight:(navbarBtn.height)+'px',top:navbarBtn.top + statusBarHeight+'px;',left:navbarBtn.right+'px;',height:(navbarBtn.height)+'px;'}">
-			  <text v-if='haveBack' @click="_goBack" class="iconfont icon-daohangfanhui" :style="{width:headerBtnPosi.width/2+'px',height:navbarBtn.height+'px'}"></text>
-	      	  <text  v-if='haveBack' class="iconfont icon-vertical_line" :style="{borderColor:navbarData.borderColor ? navbarData.borderColor : 'rgba(0,0,0,0.4)'}"></text>
-			  <text @click="_goHome" class="iconfont icon-fanhuishouye" :style="{width:headerBtnPosi.width/2+'px',height:navbarBtn.height+'px'}"></text>
-	  	</view>
-	</view>
-</template>
-
-<script>
-	var self;
-	export default{
-		name:'headerNavbar',
-		props:{
-		    navbarData: { // 由父页面传递的数据
-				type: Object
-		    },
-			systeminfo:{
-				type:Object
-			},
-			headerBtnPosi:{
-				type:Object
-			},
-			page:{
-				type:Number
-			}
-		},
-		data() {
-			return{
-				haveBack: true, // 是否有返回按钮,true 有 false 没有 若从分享页进入则为 false
-			    statusBarHeight: 0, // 状态栏高度
-			    navbarHeight: 0, // 顶部导航栏高度
-			    navbarBtn: { // 胶囊位置信息
-			      height: 0,
-			      width: 0,
-			      top: 0,
-			      bottom: 0,
-			      right: 0
-				},
-				platform:'',
-				fontSizeSetting:0,
-				screenWidth:0
-			}
-		},
-		created() {
-			this.fontSizeSetting = this.systeminfo.fontSizeSetting
-			let statusBarHeight = this.systeminfo.statusBarHeight // 状态栏高度
-			let headerPosi = this.headerBtnPosi // 胶囊位置信息
-		    /**
-		     * wx.getMenuButtonBoundingClientRect() 坐标信息以屏幕左上角为原点
-		     * 菜单按键宽度: 87
-		     * 菜单按键高度: 32
-		     * 菜单按键左边界坐标: 278
-		     * 菜单按键上边界坐标: 26
-		     * 菜单按键右边界坐标: 365
-		     * 菜单按键下边界坐标: 58
-		     */
-			let btnPosi = { // 胶囊实际位置,坐标信息不是左上角原点
-			      height: headerPosi.height,
-			      width: headerPosi.width,
-			      // 胶囊top - 状态栏高度
-			      top: headerPosi.top - statusBarHeight,
-			      // 胶囊bottom - 胶囊height - 状态栏height (现胶囊bottom 为距离导航栏底部的长度)
-			      bottom: headerPosi.bottom - headerPosi.height - statusBarHeight,
-			      // 屏幕宽度 - 胶囊right
-			      right: this.systeminfo.screenWidth - headerPosi.right
-			}
-			let haveBack;
-			if (getCurrentPages().length === 1) { // 当只有一个页面时
-			     haveBack = false;
-			} else {
-			     haveBack = true;
-			}
-		    this.haveBack=haveBack, // 获取是否是通过分享进入的小程序
-		    this.statusBarHeight=statusBarHeight,
-		    this.navbarHeight= headerPosi.bottom + btnPosi.bottom, // 原胶囊bottom + 现胶囊bottom
-		    this.navbarBtn=btnPosi
-		},
-		onLoad(){
-			
-		},
-		methods:{
-			_goBack: function () {
-		      	uni.navigateBack({
-		        	delta: this.page
-		      	});
-		    },
-		    _goHome: function () {
-		      	uni.switchTab({
-		        	url: '/pages/tabBar/index/index'
-		      	})
-		    }
-		},
-		onShow(){
-	
-		}
-	}
-</script>
-
-<style lang="scss">
-	.navbar-wrap {
-		 position: fixed;
-		 width: 100%;
-		 top: 0;
-		 z-index: 9999;
-		 box-sizing: border-box;
-		 background: #FFFFFF;
-		 border-bottom: 1px solid #F8F8F8;
-	}
-	.navbar-text {
-		 text-align: center;
-		 color: #000000;
-		 font-weight: 500;
-	}
-	.navbar-icon {
-		 position: fixed;
-		 display: flex;
-		 border-radius: 64rpx;
-		 border: 0.5px solid rgba(0,0,0, 0.2);
-		 box-sizing: border-box;
-	}
-	.navbar-icon .iconfont {
-		 text-align: center;
-		 display: inline-block;
-		 overflow: hidden;
-		 margin-bottom: 1px;
-	}
-	.navbar-icon .icon-vertical_line {
-		color: #999999;
-	}
-	.navbar-loading {
-		 background: #fff;
-		 text-align: center;
-	}
-</style>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

+ 0 - 4
components/cm-module/homeIndex/customer.vue

@@ -18,12 +18,8 @@
 
 <script>
 	var self;
-	import btSearch from '@/components/uni-search/bt-search.vue'
 	export default{
 		name:'headerNavbar',
-		components:{
-			btSearch,
-		},
 		props:{
 		    navbarData: { // 由父页面传递的数据
 				type: Object

+ 1 - 3
components/cm-module/listTemplate/classifyProductList.vue

@@ -87,15 +87,13 @@
 
 <script>
 	import listSkeleton from '@/components/cm-module/listTemplate/listSkeleton'
-	import modalLayer from "@/components/modal-layer"
-	import uniStars from '@/components/uni-stars/uni-stars.vue'
+	import modalLayer from '@/components/cm-module/modal-layer/modal-layer'
 	import { mapState,mapMutations } from 'vuex';
 	export default{
 		name:'CommodityList',
 		components:{
 			listSkeleton,
 			modalLayer,
-			uniStars
 		},
 		props: {
 			emptyText: {

+ 2 - 4
components/cm-module/listTemplate/immediatelyList.vue

@@ -92,9 +92,8 @@
 
 <script>
 import listSkeleton from '@/components/cm-module/listTemplate/listSkeleton'
-import modalLayer from '@/components/modal-layer'
-import uniStars from '@/components/uni-stars/uni-stars.vue'
-import cmDrag from '@/components/cm-custom/cm-drag.vue'
+import modalLayer from '@/components/cm-module/modal-layer/modal-layer'
+import cmDrag from '@/components/cm-module/cm-drag/cm-drag'
 import tuiTag from '@/components/thorui/tui-tag/tui-tag'
 import { mapState, mapMutations } from 'vuex'
 export default {
@@ -102,7 +101,6 @@ export default {
 	components: {
 		listSkeleton,
 		modalLayer,
-		uniStars,
 		cmDrag,
 		tuiTag
 	},

+ 2 - 4
components/cm-module/listTemplate/productList.vue

@@ -99,16 +99,14 @@
 
 <script>
 import listSkeleton from '@/components/cm-module/listTemplate/listSkeleton'
-import modalLayer from '@/components/modal-layer'
-import uniStars from '@/components/uni-stars/uni-stars.vue'
-import cmDrag from '@/components/cm-custom/cm-drag.vue'
+import modalLayer from '@/components/cm-module/modal-layer/modal-layer'
+import cmDrag from '@/components/cm-module/cm-drag/cm-drag'
 import { mapState, mapMutations } from 'vuex'
 export default {
 	name: 'productList',
 	components: {
 		listSkeleton,
 		modalLayer,
-		uniStars,
 		cmDrag,
 	},
 	props: {

+ 0 - 0
components/modal-layer.vue → components/cm-module/modal-layer/modal-layer.vue


+ 197 - 228
components/cm-module/orderDetails/activipopu.vue

@@ -1,235 +1,204 @@
 <template name="cm-price">
-	<!--促销活动弹窗提示-->
-	<tui-bottom-popup :radius="true" :show="popupShow" @close="hidePopup()">
-		<view class="tui-popup-box clearfix">
-			<view class="tui-scrollview-box">
-				<view class="box-text">
-					<text>促销时间:</text>
-					<text class="txt" v-if="Promotion.status == 1">不限时</text>
-					<text class="txt" v-else>{{ Promotion.beginTime }} ~ {{ Promotion.endTime }}</text>
-				</view>
-				<view class="box-title" v-show="Promotion.mode ==2">
-					<text>此商品参与{{Promotion.name}},满</text>
-					<text class="txt">¥{{Promotion == null ? '0.00' : Promotion.touchPrice | NumFormat}}</text>减
-					<text class="txt">¥{{Promotion == null ? '0.00' : Promotion.reducedPrice | NumFormat}}</text>
-				</view>
-				<view class="box-title" v-show="Promotion.mode==3">
-					<text>此商品参与{{Promotion.name}},满</text>
-					<text class="txt">¥{{Promotion.touchPrice}}</text>赠送商品(赠品见订单详情)
-				</view>
-			</view>
-			<view class="tui-right-flex tui-popup-btn" :style="{ paddingBottom :isIphoneX ? '68rpx' : '0rpx' }">
-				<view class="tui-flex-1">
-					<view class="tui-button" @click="hidePopup()">了解</view>
-				</view>
-			</view>
-		</view>	
-	</tui-bottom-popup>
+    <!--促销活动弹窗提示-->
+    <tui-bottom-popup :radius="true" :show="popupShow" @close="hidePopup()">
+        <view class="tui-popup-box clearfix">
+            <view class="tui-scrollview-box">
+                <view class="box-text">
+                    <text>促销时间:</text> <text class="txt" v-if="Promotion.status == 1">不限时</text>
+                    <text class="txt" v-else>{{ Promotion.beginTime }} ~ {{ Promotion.endTime }}</text>
+                </view>
+                <view class="box-title" v-show="Promotion.mode == 2">
+                    <text>此商品参与{{ Promotion.name }},满</text>
+                    <text class="txt">¥{{ Promotion == null ? '0.00' : Promotion.touchPrice | NumFormat }}</text
+                    >减 <text class="txt">¥{{ Promotion == null ? '0.00' : Promotion.reducedPrice | NumFormat }}</text>
+                </view>
+                <view class="box-title" v-show="Promotion.mode == 3">
+                    <text>此商品参与{{ Promotion.name }},满</text> <text class="txt">¥{{ Promotion.touchPrice }}</text
+                    >赠送商品(赠品见订单详情)
+                </view>
+            </view>
+            <view class="tui-right-flex tui-popup-btn" :style="{ paddingBottom: isIphoneX ? '68rpx' : '0rpx' }">
+                <view class="tui-flex-1"> <view class="tui-button" @click="hidePopup()">了解</view> </view>
+            </view>
+        </view>
+    </tui-bottom-popup>
 </template>
 
 <script>
-	import { mapState,mapMutations } from 'vuex'
-	export default{
-		name:'cm-price',
-		props:{
-			Promotion:{
-				type:Object,
-			},
-			popupShow:{
-				type:Boolean,
-				default:false
-			}
-		},
-		data() {
-			return{
-				isIphoneX:this.$store.state.isIphoneX,
-			}
-		},
-		filters: {
-			NumFormat:function(text) {//处理金额
-				return Number(text).toFixed(2);
-			},
-		},
-		created() {
-			
-		},
-		computed: {
-			...mapState(['hasLogin','isWxAuthorize'])
-		},
-		methods:{
-			hidePopup(){
-				this.$parent.popupShow = false
-			},
-			goGoodActiveFn(id){
-				this.$parent.popupShow = false
-				this.$api.navigateTo('/pages/goods/goods-active?id='+id)
-			}
-		},
-		
-	}
+import { mapGetters } from 'vuex'
+export default {
+    name: 'cm-price',
+    props: {
+        Promotion: {
+            type: Object
+        },
+        popupShow: {
+            type: Boolean,
+            default: false
+        }
+    },
+    filters: {
+        NumFormat: function(text) {
+            //处理金额
+            return Number(text).toFixed(2)
+        }
+    },
+    created() {},
+    computed: {
+        ...mapGetters(['hasLogin', 'isWxAuthorize', 'isIphoneX'])
+    },
+    methods: {
+        hidePopup() {
+            this.$parent.popupShow = false
+        },
+        goGoodActiveFn(id) {
+            this.$parent.popupShow = false
+            this.$api.navigateTo('/pages/goods/goods-active?id=' + id)
+        }
+    }
+}
 </script>
 
-<style lang="scss">	
-	.tui-flex-1 {
-		flex: 1;
-	}
-	.tui-popup-box {
-		position: relative;
-		box-sizing: border-box;
-		min-height: 220rpx;
-		padding:24rpx 24rpx 0 24rpx;
-	}
-	.tui-scrollview-box{
-		width: 100%;
-		height: auto;
-		float: left;
-		box-sizing: border-box;
-		.ladder-main{
-			width: 100%;
-			height: 320rpx;
-			border: 1px solid rgba(225,86,22,0.3);
-			border-radius: 10rpx;
-			.ladder-item{
-				width: 100%;
-				height: 80rpx;
-				float: left;
-				border-bottom: 1px solid rgba(225,86,22,0.3);
-				&:nth-child(1){
-					.ladder-item-td{
-						color: #333333;
-					}
-				}
-				&:last-child{
-					border-bottom: none;
-				}
-				.ladder-item-td{
-					width:50%;
-					text-align: center;
-					line-height: 80rpx;
-					font-size: $font-size-24;
-					color: $color-system;
-					box-sizing: border-box;
-					float: left;
-					&:nth-child(1){
-						border-right: 1px solid rgba(225,86,22,0.3);
-					}
-				}
-			}
-		}
-		.box-title{
-			font-size: $font-size-26;
-			color: $text-color;
-			text-align: left;
-			line-height: 56rpx;
-			.txt{
-				color: $color-system;
-				margin: 0 8rpx;
-			}
-		}
-		.box-text{
-			font-size: $font-size-26;
-			color: $text-color;
-			text-align: left;
-			line-height: 56rpx;
-			.txt{
-				color: $color-system;
-			}
-		}
-		.box-product{
-			width: 100%;
-			height: auto;
-			margin-top: 20rpx;
-			.title{
-				font-size: $font-size-24;
-				color: $text-color;
-				text-align: left;
-				line-height: 54rpx;
-			}
-			.box-product-main{
-				width: 100%;
-				height: 136rpx;
-				.image{
-					width: 134rpx;
-					height: 134rpx;
-					border: 1px solid #EBEBEB;
-					float: left;
-					image{
-						width: 100%;
-						height: 100%;
-						display: block;
-					}
-				}
-				.info{
-					width: 540rpx;
-					height: 134rpx;
-					float: left;
-					margin-left: 16rpx;
-					position: relative;
-					.name{
-						width: 100%;
-						float: left;
-						line-height: 40rpx;
-						font-size: $font-size-28;
-						color: $text-color;
-						-o-text-overflow: ellipsis;
-						text-overflow: ellipsis;
-						display: -webkit-box;
-						word-break: break-all;
-						-webkit-box-orient: vertical;
-						-webkit-line-clamp: 2;
-						overflow: hidden;
-					}
-					.num{
-						width: 100%;
-						height: 44rpx;
-						font-size: $font-size-24;
-						color: $text-color;
-						text-align: left;
-						line-height: 44rpx;
-						position: absolute;
-						bottom: 0;
-						left: 0;
-					}
-				}
-			}
-		}
-	}
-	
-	.tui-popup-btn {
-		width: 100%;
-		height: auto;
-		float: left;
-		margin-top: 24rpx;
-		.tui-button{
-			width: 100%;
-			height: 88rpx;
-			background: $btn-confirm;
-			line-height: 88rpx;
-			text-align: center;
-			color: #FFFFFF;
-			font-size: $font-size-28;
-			border-radius: 14rpx;
-		}
-	}
+<style lang="scss">
+.tui-flex-1 {
+    flex: 1;
+}
+.tui-popup-box {
+    position: relative;
+    box-sizing: border-box;
+    min-height: 220rpx;
+    padding: 24rpx 24rpx 0 24rpx;
+}
+.tui-scrollview-box {
+    width: 100%;
+    height: auto;
+    float: left;
+    box-sizing: border-box;
+    .ladder-main {
+        width: 100%;
+        height: 320rpx;
+        border: 1px solid rgba(225, 86, 22, 0.3);
+        border-radius: 10rpx;
+        .ladder-item {
+            width: 100%;
+            height: 80rpx;
+            float: left;
+            border-bottom: 1px solid rgba(225, 86, 22, 0.3);
+            &:nth-child(1) {
+                .ladder-item-td {
+                    color: #333333;
+                }
+            }
+            &:last-child {
+                border-bottom: none;
+            }
+            .ladder-item-td {
+                width: 50%;
+                text-align: center;
+                line-height: 80rpx;
+                font-size: $font-size-24;
+                color: $color-system;
+                box-sizing: border-box;
+                float: left;
+                &:nth-child(1) {
+                    border-right: 1px solid rgba(225, 86, 22, 0.3);
+                }
+            }
+        }
+    }
+    .box-title {
+        font-size: $font-size-26;
+        color: $text-color;
+        text-align: left;
+        line-height: 56rpx;
+        .txt {
+            color: $color-system;
+            margin: 0 8rpx;
+        }
+    }
+    .box-text {
+        font-size: $font-size-26;
+        color: $text-color;
+        text-align: left;
+        line-height: 56rpx;
+        .txt {
+            color: $color-system;
+        }
+    }
+    .box-product {
+        width: 100%;
+        height: auto;
+        margin-top: 20rpx;
+        .title {
+            font-size: $font-size-24;
+            color: $text-color;
+            text-align: left;
+            line-height: 54rpx;
+        }
+        .box-product-main {
+            width: 100%;
+            height: 136rpx;
+            .image {
+                width: 134rpx;
+                height: 134rpx;
+                border: 1px solid #ebebeb;
+                float: left;
+                image {
+                    width: 100%;
+                    height: 100%;
+                    display: block;
+                }
+            }
+            .info {
+                width: 540rpx;
+                height: 134rpx;
+                float: left;
+                margin-left: 16rpx;
+                position: relative;
+                .name {
+                    width: 100%;
+                    float: left;
+                    line-height: 40rpx;
+                    font-size: $font-size-28;
+                    color: $text-color;
+                    -o-text-overflow: ellipsis;
+                    text-overflow: ellipsis;
+                    display: -webkit-box;
+                    word-break: break-all;
+                    -webkit-box-orient: vertical;
+                    -webkit-line-clamp: 2;
+                    overflow: hidden;
+                }
+                .num {
+                    width: 100%;
+                    height: 44rpx;
+                    font-size: $font-size-24;
+                    color: $text-color;
+                    text-align: left;
+                    line-height: 44rpx;
+                    position: absolute;
+                    bottom: 0;
+                    left: 0;
+                }
+            }
+        }
+    }
+}
+
+.tui-popup-btn {
+    width: 100%;
+    height: auto;
+    float: left;
+    margin-top: 24rpx;
+    .tui-button {
+        width: 100%;
+        height: 88rpx;
+        background: $btn-confirm;
+        line-height: 88rpx;
+        text-align: center;
+        color: #ffffff;
+        font-size: $font-size-28;
+        border-radius: 14rpx;
+    }
+}
 </style>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

+ 190 - 173
components/cm-module/orderDetails/logisticsRecord.vue

@@ -1,181 +1,198 @@
 <template name="logistics">
-	<view class="logistics-template">
-		<!-- 物流信息 -->
-		<view class="logistics-content" v-if="logisticsData.length > 0" v-for="(item,index) in logisticsData" :key="index">
-			<view class="logistics-top">
-				<text class="name">物流信息</text>
-			</view>
-			<view class="logistics-warp">
-				<view  class="logistics-warp__wrapper">
-					<view class="logistics-main">
-					 	<view class="logistics-main-top">
-					 		<view class="main-top" @click="showlogistics(index)">
-								{{item.expressname}}:{{item.expressNumber}}
-								<text class="clipboard" @click="clipboard(item.expressNumber)">复制</text>
-								<text class="arrow-showMore iconfont icon-web_xiangxiazhankai" :style="{'transform':item.isOpen?'rotate(180deg)':'rotate(0)'}"></text>
-							</view>
-					 		<view class="main-bot">
-								发货时间:{{item.expressNewtime}}
-							</view>
-					 	</view>
-						<view v-if="item.expressRecord.length > 0" v-for="(infoItem,infoIndex) in item.expressRecord" :key="infoIndex" :class="{'logistics-warp--hide':!item.isOpen}" class="logistics-main-bot logistics-animation" :style="{'transform':item.isOpen?'translateY(0)':'translateY(-50%)','-webkit-transform':item.isOpen?'translateY(0)':'translateY(-50%)'}" >
-							{{infoItem.time}}  {{infoItem.desc}}
-						</view>
-						<view v-if="item.expressRecord" :class="{'logistics-warp--hide':!item.isOpen}" class="logistics-main-bot logistics-animation" :style="{'transform':item.isOpen?'translateY(0)':'translateY(-50%)','-webkit-transform':item.isOpen?'translateY(0)':'translateY(-50%)'}">
-							暂无物流信息
-						</view>
-					</view>
-				</view>
-			</view>
-		</view>
-		<view class="logistics-content" v-else>
-			暂无物流信息
-		 </view>
-	</view>
+    <view class="logistics-template">
+        <!-- 物流信息 -->
+        <view
+            class="logistics-content"
+            v-if="logisticsData.length > 0"
+            v-for="(item, index) in logisticsData"
+            :key="index"
+        >
+            <view class="logistics-top"> <text class="name">物流信息</text> </view>
+            <view class="logistics-warp">
+                <view class="logistics-warp__wrapper">
+                    <view class="logistics-main">
+                        <view class="logistics-main-top">
+                            <view class="main-top" @click="showlogistics(index)">
+                                {{ item.expressname }}:{{ item.expressNumber }}
+                                <text class="clipboard" @click="clipboard(item.expressNumber)">复制</text>
+                                <text
+                                    class="arrow-showMore iconfont icon-web_xiangxiazhankai"
+                                    :style="{ transform: item.isOpen ? 'rotate(180deg)' : 'rotate(0)' }"
+                                ></text>
+                            </view>
+                            <view class="main-bot"> 发货时间:{{ item.expressNewtime }} </view>
+                        </view>
+                        <view
+                            v-if="item.expressRecord.length > 0"
+                            v-for="(infoItem, infoIndex) in item.expressRecord"
+                            :key="infoIndex"
+                            :class="{ 'logistics-warp--hide': !item.isOpen }"
+                            class="logistics-main-bot logistics-animation"
+                            :style="{
+                                transform: item.isOpen ? 'translateY(0)' : 'translateY(-50%)',
+                                '-webkit-transform': item.isOpen ? 'translateY(0)' : 'translateY(-50%)'
+                            }"
+                        >
+                            {{ infoItem.time }} {{ infoItem.desc }}
+                        </view>
+                        <view
+                            v-if="item.expressRecord"
+                            :class="{ 'logistics-warp--hide': !item.isOpen }"
+                            class="logistics-main-bot logistics-animation"
+                            :style="{
+                                transform: item.isOpen ? 'translateY(0)' : 'translateY(-50%)',
+                                '-webkit-transform': item.isOpen ? 'translateY(0)' : 'translateY(-50%)'
+                            }"
+                        >
+                            暂无物流信息
+                        </view>
+                    </view>
+                </view>
+            </view>
+        </view>
+        <view class="logistics-content" v-else> 暂无物流信息 </view>
+    </view>
 </template>
 
 <script>
-	const thorui = require("@/components/clipboard/clipboard.thorui.js")
-	export default{
-		name:"logistics",
-		data() {
-			return{
-				title:'发票信息',
-				logisticsData:''
-			}
-		},
-		created(){
-			
-		},
-		computed: {
-
-		},
-		methods:{
-			initData(res) {
-				this.logisticsData = res;
-			},
-			showlogistics(index){
-				let isOpen = this.logisticsData[index]['isOpen'];
-				this.logisticsData[index]['isOpen'] = !isOpen;
-			},
-			clipboard(data) {
-				thorui.getClipboardData(data, (res) => {
-					if (res) {
-						this.$util.msg("复制成功",2000,true,'success');
-					} else {
-						this.$util.msg("复制失败",2000,true,'none');
-					}
-				})
-			}
-		}
-	}
+import thorui from '@/components/clipboard/clipboard.thorui.js'
+export default {
+    name: 'logistics',
+    data() {
+        return {
+            title: '发票信息',
+            logisticsData: ''
+        }
+    },
+    created() {},
+    computed: {},
+    methods: {
+        initData(res) {
+            this.logisticsData = res
+        },
+        showlogistics(index) {
+            let isOpen = this.logisticsData[index]['isOpen']
+            this.logisticsData[index]['isOpen'] = !isOpen
+        },
+        clipboard(data) {
+            thorui.getClipboardData(data, res => {
+                if (res) {
+                    this.$util.msg('复制成功', 2000, true, 'success')
+                } else {
+                    this.$util.msg('复制失败', 2000, true, 'none')
+                }
+            })
+        }
+    }
+}
 </script>
 
 <style lang="scss">
-	.logistics-template{
-		width: 100%;
-		height: 100%;
-		background: #FFFFFF;
-		float: left;
-		.logistics-content{
-			width: 702rpx;
-			padding: 20rpx 24rpx;
-			height: auto;
-			.arrow-showMore {
-				position: absolute;
-				right: 24rpx;
-				z-index: 99;
-			}
-			.logistics-top{
-				width: 100%;
-				height: 40rpx;
-				line-height: 40rpx;
-				font-size: $font-size-28;
-				color: $text-color;
-				text-align: left;
-				padding-bottom: 24rpx;
-				border-bottom: 1px solid #F8F8F8;
-				.name{
-					float: left;
-					font-weight: bold;
-				}
-				.icon-web_xiangxiazhankai{
-					transform: rotate(0deg);
-					transform-origin: center center;
-					float: right;
-					font-size: $font-size-32;
-					color: #000000;
-					/* transition: transform 0.3s ease;*/
-					transition-property: transform;
-					transition-duration: 0.3s;
-					transition-timing-function: ease;
-				}
-				.icon-web_xiangxiazhankai-active{
-					transform: rotate(180deg);
-				}
-			}
-			.logistics-warp{
-				width: 100%;
-				overflow: hidden;
-				.table{
-					height: 76rpx;
-					line-height: 76rpx;
-					font-size: $font-size-26;
-					color: $text-color;
-					text-align: left;
-				}
-			}	
-			.logistics-main-top{
-				width: 100%;
-				height: auto;
-				float: left;
-				padding-top: 24rpx;
-				margin-bottom: 14rpx;
-				.main-top,.main-bot{
-					font-size: $font-size-28;
-					color: $text-color;
-					line-height: 40rpx;
-					margin: 4rpx 0;
-				}
-			}
-			.logistics-main-bot{
-				width: 100%;
-				height: auto;
-				font-size: $font-size-24;
-				color: $text-color;
-				line-height: 56rpx;
-				text-align: justify;
-			}
-			.logistics-animation {
-				/* transition: transform 0.3s ease;*/
-				transition-property: transform;
-				transition-duration: 0.3s;
-				transition-timing-function: ease;
-			}
-			.logistics-warp__wrapper{
-				/* #ifndef APP-NVUE */
-				display: flex;
-				/* #endif */
-				flex-direction: column;
-			}
-			.logistics-warp--hide {
-				// padding: 0 0;
-				// height: 0px;
-				// line-height: 0px;
-				display: none;
-			}	
-			.clipboard{
-				width: 84rpx;
-				height: 36rpx;
-				background: linear-gradient(34deg,rgba(255,41,41,1) 0%,rgba(255,109,27,1) 100%);
-				text-align: center;
-				font-size: $font-size-24;
-				color: #FFFFFF;
-				border-radius: 6rpx;
-				line-height: 36rpx;
-				display: inline-block;
-				margin-left: 42rpx;
-			}
-		}
-	}
+.logistics-template {
+    width: 100%;
+    height: 100%;
+    background: #ffffff;
+    float: left;
+    .logistics-content {
+        width: 702rpx;
+        padding: 20rpx 24rpx;
+        height: auto;
+        .arrow-showMore {
+            position: absolute;
+            right: 24rpx;
+            z-index: 99;
+        }
+        .logistics-top {
+            width: 100%;
+            height: 40rpx;
+            line-height: 40rpx;
+            font-size: $font-size-28;
+            color: $text-color;
+            text-align: left;
+            padding-bottom: 24rpx;
+            border-bottom: 1px solid #f8f8f8;
+            .name {
+                float: left;
+                font-weight: bold;
+            }
+            .icon-web_xiangxiazhankai {
+                transform: rotate(0deg);
+                transform-origin: center center;
+                float: right;
+                font-size: $font-size-32;
+                color: #000000;
+                /* transition: transform 0.3s ease;*/
+                transition-property: transform;
+                transition-duration: 0.3s;
+                transition-timing-function: ease;
+            }
+            .icon-web_xiangxiazhankai-active {
+                transform: rotate(180deg);
+            }
+        }
+        .logistics-warp {
+            width: 100%;
+            overflow: hidden;
+            .table {
+                height: 76rpx;
+                line-height: 76rpx;
+                font-size: $font-size-26;
+                color: $text-color;
+                text-align: left;
+            }
+        }
+        .logistics-main-top {
+            width: 100%;
+            height: auto;
+            float: left;
+            padding-top: 24rpx;
+            margin-bottom: 14rpx;
+            .main-top,
+            .main-bot {
+                font-size: $font-size-28;
+                color: $text-color;
+                line-height: 40rpx;
+                margin: 4rpx 0;
+            }
+        }
+        .logistics-main-bot {
+            width: 100%;
+            height: auto;
+            font-size: $font-size-24;
+            color: $text-color;
+            line-height: 56rpx;
+            text-align: justify;
+        }
+        .logistics-animation {
+            /* transition: transform 0.3s ease;*/
+            transition-property: transform;
+            transition-duration: 0.3s;
+            transition-timing-function: ease;
+        }
+        .logistics-warp__wrapper {
+            /* #ifndef APP-NVUE */
+            display: flex;
+            /* #endif */
+            flex-direction: column;
+        }
+        .logistics-warp--hide {
+            // padding: 0 0;
+            // height: 0px;
+            // line-height: 0px;
+            display: none;
+        }
+        .clipboard {
+            width: 84rpx;
+            height: 36rpx;
+            background: linear-gradient(34deg, rgba(255, 41, 41, 1) 0%, rgba(255, 109, 27, 1) 100%);
+            text-align: center;
+            font-size: $font-size-24;
+            color: #ffffff;
+            border-radius: 6rpx;
+            line-height: 36rpx;
+            display: inline-block;
+            margin-left: 42rpx;
+        }
+    }
+}
 </style>

+ 143 - 137
components/cm-module/orderDetails/orderButton.vue

@@ -1,145 +1,151 @@
 <template name="button">
-	<view class="button-template" :style="{paddingBottom :isIphoneX ? '68rpx' : '0rpx'}">
-		<!-- 底部按钮  -->
-		<view class="button-content">
-			<view class="btn btn-pay" v-if="btnState.isPay" @click.stop="btnConfirm('pay',order)">付款</view>
-			<view class="btn btn-pay" v-if="btnState.isConfirm" @click.stop="btnConfirm('confirm',order)">确认收货</view>
-			<view class="btn btn-pay" v-if="btnState.isAgain" @click.stop="btnConfirm('again',order)">再次购买</view>
-			<view class="btn btn-cancel" v-if="btnState.isCancel" @click.stop="btnConfirm('cancel',order)">取消订单</view>
-			<view class="btn btn-cancel" v-if="btnState.isDelete" @click.stop="btnConfirm('delete',order)">删除订单</view>
-			<view class="btn btn-cancel" v-if="btnState.isQuery" @click.stop="btnConfirm('query',order)">查看物流</view>
-		</view>
-	</view>
+    <view class="button-template" :style="{ paddingBottom: isIphoneX ? '68rpx' : '0rpx' }">
+        <!-- 底部按钮  -->
+        <view class="button-content">
+            <view class="btn btn-pay" v-if="btnState.isPay" @click.stop="btnConfirm('pay', order)">付款</view>
+            <view class="btn btn-pay" v-if="btnState.isConfirm" @click.stop="btnConfirm('confirm', order)"
+                >确认收货</view
+            >
+            <view class="btn btn-pay" v-if="btnState.isAgain" @click.stop="btnConfirm('again', order)">再次购买</view>
+            <view class="btn btn-cancel" v-if="btnState.isCancel" @click.stop="btnConfirm('cancel', order)"
+                >取消订单</view
+            >
+            <view class="btn btn-cancel" v-if="btnState.isDelete" @click.stop="btnConfirm('delete', order)"
+                >删除订单</view
+            >
+            <view class="btn btn-cancel" v-if="btnState.isQuery" @click.stop="btnConfirm('query', order)"
+                >查看物流</view
+            >
+        </view>
+    </view>
 </template>
 
 <script>
-	export default{
-		name:"button",
-		props:{
-			status:{
-				type:Number
-			},
-			order: {
-				type:Object
-			},
-			shareCode:{
-				type:String
-			},
-		},
-		watch:{
-			status:{
-				handler:function(val){
-					this.initData(val)
-				},
-				deep:true//对象内部的属性监听,也叫深度监听
-			}
-		},
-		data() {
-			return{
-				btnState:this.initStatus(),
-				isIphoneX:this.$store.state.isIphoneX,
-				mapStateArr:[
-					{label:'isQuery',val:[4,5,12,13,33,22,23,32,77],status: true},
-					{label:'isDelete',val:[6],status: true},
-					{label:'isCancel',val:[0,111],status: true},
-					{label:'isConfirm',val:[33],status: true},
-					{label:'isAgain',val:[33],status: true},
-					{label:'isPay',val:[11,12,13,21,22,23,111],status: true},
-				]
-			}
-		},
-		created(){
-			this.initData(this.status)
-		},
-		computed: {
-
-		},
-		methods:{
-			initData(resVal) {
-				/**
-				 * @分享按钮统一显示
-				 * @按钮根据状态显示
-				 * @(4、5、7、12、22、23、32)显示[查看物流]按钮,其他隐藏
-				 * @(6)显示[删除订单],其他隐藏
-				 * @(0、111)显示[取消订单],其他隐藏
-				 * @(21,31)只显示分享
-				 * @(13,33)显示[确认收货]和[查看物流]
-				 */
-				this.btnState = this.initStatus()
-				this.mapStateArr.forEach(el => {
-					el.val.forEach(value => {
-						if(resVal === value){
-							this.btnState[el.label] = el.status
-						}
-					})
-				})
-			},
-			initStatus(){
-				let btnState= {
-						isQuery: false,
-						isDelete: false,
-						isCancel: false,
-						isConfirm: false,
-						isAgain: false,
-					}
-				return 	btnState
-			},
-			btnConfirm(type,order){
-				let data = {
-						type:type,
-						orderId:order.orderId,
-						order:order
-					}
-				this.$emit('buttonConfirm',data)
-			}
-		}
-	}
+export default {
+    name: 'button',
+    props: {
+        status: {
+            type: Number
+        },
+        order: {
+            type: Object
+        },
+        shareCode: {
+            type: String
+        }
+    },
+    watch: {
+        status: {
+            handler: function(val) {
+                this.initData(val)
+            },
+            deep: true //对象内部的属性监听,也叫深度监听
+        }
+    },
+    data() {
+        return {
+            btnState: this.initStatus(),
+            isIphoneX: this.$store.getters.isIphoneX,
+            mapStateArr: [
+                { label: 'isQuery', val: [4, 5, 12, 13, 33, 22, 23, 32, 77], status: true },
+                { label: 'isDelete', val: [6], status: true },
+                { label: 'isCancel', val: [0, 111], status: true },
+                { label: 'isConfirm', val: [33], status: true },
+                { label: 'isAgain', val: [33], status: true },
+                { label: 'isPay', val: [11, 12, 13, 21, 22, 23, 111], status: true }
+            ]
+        }
+    },
+    created() {
+        this.initData(this.status)
+    },
+    computed: {},
+    methods: {
+        initData(resVal) {
+            /**
+             * @分享按钮统一显示
+             * @按钮根据状态显示
+             * @(4、5、7、12、22、23、32)显示[查看物流]按钮,其他隐藏
+             * @(6)显示[删除订单],其他隐藏
+             * @(0、111)显示[取消订单],其他隐藏
+             * @(21,31)只显示分享
+             * @(13,33)显示[确认收货]和[查看物流]
+             */
+            this.btnState = this.initStatus()
+            this.mapStateArr.forEach(el => {
+                el.val.forEach(value => {
+                    if (resVal === value) {
+                        this.btnState[el.label] = el.status
+                    }
+                })
+            })
+        },
+        initStatus() {
+            let btnState = {
+                isQuery: false,
+                isDelete: false,
+                isCancel: false,
+                isConfirm: false,
+                isAgain: false
+            }
+            return btnState
+        },
+        btnConfirm(type, order) {
+            let data = {
+                type: type,
+                orderId: order.orderId,
+                order: order
+            }
+            this.$emit('buttonConfirm', data)
+        }
+    }
+}
 </script>
 
 <style lang="scss">
-	.button-template{
-		width: 100%;
-		height: auto;
-		position: fixed;
-		bottom: 0;
-		left: 0;
-		background: #FFFFFF;
-		.button-content{
-			padding:0 24rpx;
-			height: auto;
-			float: right;
-			position: relative;
-			.share-code{
-				width: 200rpx;
-				height:  64rpx;
-				line-height: 64rpx;
-				color: #2A45FF;
-				text-align: left;
-				position: absolute;
-				font-size: $font-size-28;
-				font-weight: bold;
-				left: 24rpx;
-				top: 24rpx;
-			}
-			.btn{
-				width: 160rpx;
-				height:  64rpx;
-				margin:22rpx 22rpx 22rpx 0;
-				line-height: 64rpx;
-				font-size:$font-size-26;
-				color: #333333;
-				text-align: center;
-				float: right;
-				border: 2rpx solid #333333;
-				border-radius: 34rpx;
-				&.btn-pay{
-					border-color: $color-system;
-					color: $color-system;
-				}
-				&.btn-cancel{
-					text-align: center;
-				}
-			}
-		}
-	}
+.button-template {
+    width: 100%;
+    height: auto;
+    position: fixed;
+    bottom: 0;
+    left: 0;
+    background: #ffffff;
+    .button-content {
+        padding: 0 24rpx;
+        height: auto;
+        float: right;
+        position: relative;
+        .share-code {
+            width: 200rpx;
+            height: 64rpx;
+            line-height: 64rpx;
+            color: #2a45ff;
+            text-align: left;
+            position: absolute;
+            font-size: $font-size-28;
+            font-weight: bold;
+            left: 24rpx;
+            top: 24rpx;
+        }
+        .btn {
+            width: 160rpx;
+            height: 64rpx;
+            margin: 22rpx 22rpx 22rpx 0;
+            line-height: 64rpx;
+            font-size: $font-size-26;
+            color: #333333;
+            text-align: center;
+            float: right;
+            border: 2rpx solid #333333;
+            border-radius: 34rpx;
+            &.btn-pay {
+                border-color: $color-system;
+                color: $color-system;
+            }
+            &.btn-cancel {
+                text-align: center;
+            }
+        }
+    }
+}
 </style>

+ 227 - 225
components/cm-module/orderDetails/orderInformation.vue

@@ -1,234 +1,236 @@
 <template name="information">
-	<view class="information-template">
-		 <!-- 订单信息 -->
-		 <view class="information-content">
-			<view class="information-view title">
-				<view class="view-num">
-					<view class="bage-text">
-						订单编号:<label class="label">{{orderData.orderNo ? orderData.orderNo : '' }}</label>
-						<text class="clipboard" @click="clipboard(orderData.orderNo)">复制</text>
-					</view>
-				</view>
-			</view>
-			<view class="information-view title">
-				<view class="view-num">
-					订单总额:<label class="label">¥{{ orderData.payTotalFee ? (orderData.payTotalFee | NumFormat) : ''  }}</label>
-				</view>
-			</view>
-			<view class="information-view">
-				<view class="view-num time">
-					下单时间:<label class="label">{{ orderData.orderTime ? orderData.orderTime: ''  }}</label>
-				</view>
-			</view>
-			<view class="information-view bame">
-				<view class="view-num">
-					运费:<label class="label">包邮</label>
-				</view>
-			</view>
-			<view class="information-view">
-				<view class="view-num time" v-if="orderData.receiptAmount>0">
-					支付时间:<label class="label">{{ orderData.receiptDate ? orderData.receiptDate :  '' }}</label>
-				</view>
-			</view>
-			<view class="information-view bame">
-				<view class="view-man">
-					已退货/已取消:<label class="label">{{ orderData.returnedNum }}/{{ orderData.actualCancelNum }}</label>
-				</view>
-			</view>
-		 </view>
-	</view>
+    <view class="information-template">
+        <!-- 订单信息 -->
+        <view class="information-content">
+            <view class="information-view title">
+                <view class="view-num">
+                    <view class="bage-text">
+                        订单编号:<label class="label">{{ orderData.orderNo ? orderData.orderNo : '' }}</label>
+                        <text class="clipboard" @click="clipboard(orderData.orderNo)">复制</text>
+                    </view>
+                </view>
+            </view>
+            <view class="information-view title">
+                <view class="view-num">
+                    订单总额:<label class="label"
+                        >¥{{ orderData.payTotalFee ? (orderData.payTotalFee | NumFormat) : '' }}</label
+                    >
+                </view>
+            </view>
+            <view class="information-view">
+                <view class="view-num time">
+                    下单时间:<label class="label">{{ orderData.orderTime ? orderData.orderTime : '' }}</label>
+                </view>
+            </view>
+            <view class="information-view bame">
+                <view class="view-num"> 运费:<label class="label">包邮</label> </view>
+            </view>
+            <view class="information-view">
+                <view class="view-num time" v-if="orderData.receiptAmount > 0">
+                    支付时间:<label class="label">{{ orderData.receiptDate ? orderData.receiptDate : '' }}</label>
+                </view>
+            </view>
+            <view class="information-view bame">
+                <view class="view-man">
+                    已退货/已取消:<label class="label"
+                        >{{ orderData.returnedNum }}/{{ orderData.actualCancelNum }}</label
+                    >
+                </view>
+            </view>
+        </view>
+    </view>
 </template>
 
 <script>
-	const thorui = require("@/components/clipboard/clipboard.thorui.js")
-	export default{
-		name:"information",
-		props:{
-			information:{
-				type:Object
-			}
-		},
-		data() {
-			return{
-				orderData:'',
-				freePostFlag:'',
-			}
-		},
-		created(){
-			this.initData(this.information)
-		},
-		filters:{
-			NumFormat(value) {//处理金额
-				return Number(value).toFixed(2);
-			},
-			TextFormat(status) {//处理金额
-				let HtmlText,
-					typeTextObject={
-						0:'待确认',
-						4:'交易完成',
-						5:'订单完成',
-						6:'已关闭',
-						7:'交易全退',
-						77:'交易全退',
-						11:'待付款待发货',
-						12:'待付款部分发货',
-						13:'待付款已发货',
-						21:'部分付款待发货',
-						22:'部分付款部分发货',
-						23:'部分付款已发货',
-						31:'已付款待发货',
-						32:'已付款部分发货',
-						33:'已付款已发货',
-						111:'待付款待发货',
-					};
-				
-				Object.keys(typeTextObject).forEach(key => {
-					if(key == status){
-						HtmlText = typeTextObject[key]
-					}
-				})
-				return HtmlText
-			},
-		},	
-		computed: {
+import thorui from '@/components/clipboard/clipboard.thorui.js'; 
+export default {
+    name: 'information',
+    props: {
+        information: {
+            type: Object
+        }
+    },
+    data() {
+        return {
+            orderData: '',
+            freePostFlag: ''
+        }
+    },
+    created() {
+        this.initData(this.information)
+    },
+    filters: {
+        NumFormat(value) {
+            //处理金额
+            return Number(value).toFixed(2)
+        },
+        TextFormat(status) {
+            //处理金额
+            let HtmlText,
+                typeTextObject = {
+                    0: '待确认',
+                    4: '交易完成',
+                    5: '订单完成',
+                    6: '已关闭',
+                    7: '交易全退',
+                    77: '交易全退',
+                    11: '待付款待发货',
+                    12: '待付款部分发货',
+                    13: '待付款已发货',
+                    21: '部分付款待发货',
+                    22: '部分付款部分发货',
+                    23: '部分付款已发货',
+                    31: '已付款待发货',
+                    32: '已付款部分发货',
+                    33: '已付款已发货',
+                    111: '待付款待发货'
+                }
 
-		},
-		watch:{
-			information:{
-				handler:function(val){
-					this.initData(val)
-				},
-				deep:true//对象内部的属性监听,也叫深度监听
-			}
-		},
-		methods:{
-			initData(res) {
-				this.orderData = res;
-			},
-			clipboard(data) {
-				thorui.getClipboardData(data, (res) => {
-					if (res) {
-						this.$util.msg("复制成功",2000,true,'success');
-					} else {
-						this.$util.msg("复制失败",2000,true,'none');
-					}
-				})
-			}
-		}
-	}
+            Object.keys(typeTextObject).forEach(key => {
+                if (key == status) {
+                    HtmlText = typeTextObject[key]
+                }
+            })
+            return HtmlText
+        }
+    },
+    computed: {},
+    watch: {
+        information: {
+            handler: function(val) {
+                this.initData(val)
+            },
+            deep: true //对象内部的属性监听,也叫深度监听
+        }
+    },
+    methods: {
+        initData(res) {
+            this.orderData = res
+        },
+        clipboard(data) {
+            thorui.getClipboardData(data, res => {
+                if (res) {
+                    this.$util.msg('复制成功', 2000, true, 'success')
+                } else {
+                    this.$util.msg('复制失败', 2000, true, 'none')
+                }
+            })
+        }
+    }
+}
 </script>
 
 <style lang="scss">
-	.information-template{
-		width: 100%;
-		height: auto;
-		background: #FFFFFF;
-		float: left;
-		margin-top: 24rpx;
-		.information-content{
-			width: 702rpx;
-			padding: 15rpx  24rpx 20rpx 24rpx;
-			.information-view{
-				height: 50rpx;
-				line-height: 50rpx;
-				font-size: $font-size-24;
-				margin: 4rpx 0;
-				// display: flex;
-				width: 58%;
-				display: inline-block;
-				&.same{
-					width: 100%;
-					text-align: right;
-				}
-				&.bame{
-					width: 42%;
-					text-align: right;
-				}
-				&.title{
-					width: 100%;
-				}
-				view{
-					// flex: 1;
-					color: $text-color;
-					color: #999999;
-					.label{
-						color: #666666;
-					}
-				}
-				.view-num.title{
-					height: 68rpx;
-					line-height: 68rpx;
-					position: relative;
-					.bage-icon{
-						width: 50rpx;
-						height: 50rpx;
-						display: block;
-						position: absolute;
-						right: 0;
-						top: 9rpx;
-					}
-					.bage-text{
-						display: inline-block;
-						font-size: $font-size-28;
-						line-height: 68rpx;
-						text-align: left;
-						color: $color-system;
-						// margin-left: 10rpx;
-					}
-				}
-				.view-num.ord{
-					color: $color-system;
-					text-align: left;
-					flex:3;
-					font-weight: bold;
-				}
-				.view-num.time{
-					color: #999999;
-					flex: 6;
-				}
-				// .bold{
-				// 	font-weight: bold;
-				// }
-				.red{
-					color: #FF2A2A;
-				}
-				.view-type{
-					float: right;
-					text-align: right;
-					color: #FF2A2A;
-					flex:4;
-				}
-				.clipboard{
-					width: 64rpx;
-					height: 32rpx;
-					background: #fff8fd;
-					text-align: center;
-					font-size: $font-size-22;
-					color: $color-system;
-					border-radius: 8rpx;
-					line-height: 32rpx;
-					display: inline-block;
-					margin-left: 15rpx;
-				}
-			}
-		}
-	}
-	.openinfo{
-		.btnInfo{
-			width: 140rpx;
-			height: 40rpx;
-			border: 2rpx solid #e1e1e1;
-			border-radius: 6rpx;
-			padding: 5rpx;
-			text-align: center;
-			color: #b2b2b2;
-			margin: 20rpx auto;
-			font-size:  $font-size-24;
-			.iconfont{
-				position: relative;
-				top: 5rpx;
-				right: -3rpx;
-			}
-		}
-	}
+.information-template {
+    width: 100%;
+    height: auto;
+    background: #ffffff;
+    float: left;
+    margin-top: 24rpx;
+    .information-content {
+        width: 702rpx;
+        padding: 15rpx 24rpx 20rpx 24rpx;
+        .information-view {
+            height: 50rpx;
+            line-height: 50rpx;
+            font-size: $font-size-24;
+            margin: 4rpx 0;
+            // display: flex;
+            width: 58%;
+            display: inline-block;
+            &.same {
+                width: 100%;
+                text-align: right;
+            }
+            &.bame {
+                width: 42%;
+                text-align: right;
+            }
+            &.title {
+                width: 100%;
+            }
+            view {
+                // flex: 1;
+                color: $text-color;
+                color: #999999;
+                .label {
+                    color: #666666;
+                }
+            }
+            .view-num.title {
+                height: 68rpx;
+                line-height: 68rpx;
+                position: relative;
+                .bage-icon {
+                    width: 50rpx;
+                    height: 50rpx;
+                    display: block;
+                    position: absolute;
+                    right: 0;
+                    top: 9rpx;
+                }
+                .bage-text {
+                    display: inline-block;
+                    font-size: $font-size-28;
+                    line-height: 68rpx;
+                    text-align: left;
+                    color: $color-system;
+                    // margin-left: 10rpx;
+                }
+            }
+            .view-num.ord {
+                color: $color-system;
+                text-align: left;
+                flex: 3;
+                font-weight: bold;
+            }
+            .view-num.time {
+                color: #999999;
+                flex: 6;
+            }
+            // .bold{
+            // 	font-weight: bold;
+            // }
+            .red {
+                color: #ff2a2a;
+            }
+            .view-type {
+                float: right;
+                text-align: right;
+                color: #ff2a2a;
+                flex: 4;
+            }
+            .clipboard {
+                width: 64rpx;
+                height: 32rpx;
+                background: #fff8fd;
+                text-align: center;
+                font-size: $font-size-22;
+                color: $color-system;
+                border-radius: 8rpx;
+                line-height: 32rpx;
+                display: inline-block;
+                margin-left: 15rpx;
+            }
+        }
+    }
+}
+.openinfo {
+    .btnInfo {
+        width: 140rpx;
+        height: 40rpx;
+        border: 2rpx solid #e1e1e1;
+        border-radius: 6rpx;
+        padding: 5rpx;
+        text-align: center;
+        color: #b2b2b2;
+        margin: 20rpx auto;
+        font-size: $font-size-24;
+        .iconfont {
+            position: relative;
+            top: 5rpx;
+            right: -3rpx;
+        }
+    }
+}
 </style>

+ 199 - 228
components/cm-module/productDetails/cm-activipopu.vue

@@ -1,235 +1,206 @@
 <template name="cm-price">
-	<!--促销活动弹窗提示-->
-	<tui-bottom-popup :radius="true" :show="popupShow" @close="hidePopup()">
-		<view class="tui-popup-box clearfix">
-			<template v-if="product.activeStatus == 1">
-				<view class="tui-scrollview-box">
-					<view class="ladder-main clearfix">
-						<view class="ladder-item">
-							<view class="ladder-item-td">购买数</view>
-							<view class="ladder-item-td">价格</view>
-						</view>
-						<view class="ladder-item" v-for="(ladd, index) in product.ladderList" :key="index">
-							<view class="ladder-item-td">{{ ladd.buyNum }}</view>
-							<view class="ladder-item-td">{{ ladd.buyPrice | NumFormat }}</view>
-						</view>
-					</view>
-				</view>	
-			</template>	
-			<view class="tui-right-flex tui-popup-btn" :style="{ paddingBottom :isIphoneX ? '68rpx' : '0rpx' }">
-				<view class="tui-flex-1">
-					<view class="tui-button" @click="hidePopup()">了解</view>
-				</view>
-			</view>
-		</view>	
-	</tui-bottom-popup>
+    <!--促销活动弹窗提示-->
+    <tui-bottom-popup :radius="true" :show="popupShow" @close="hidePopup()">
+        <view class="tui-popup-box clearfix">
+            <template v-if="product.activeStatus == 1">
+                <view class="tui-scrollview-box">
+                    <view class="ladder-main clearfix">
+                        <view class="ladder-item">
+                            <view class="ladder-item-td">购买数</view> <view class="ladder-item-td">价格</view>
+                        </view>
+                        <view class="ladder-item" v-for="(ladd, index) in product.ladderList" :key="index">
+                            <view class="ladder-item-td">{{ ladd.buyNum }}</view>
+                            <view class="ladder-item-td">{{ ladd.buyPrice | NumFormat }}</view>
+                        </view>
+                    </view>
+                </view>
+            </template>
+            <view class="tui-right-flex tui-popup-btn" :style="{ paddingBottom: isIphoneX ? '68rpx' : '0rpx' }">
+                <view class="tui-flex-1"> <view class="tui-button" @click="hidePopup()">了解</view> </view>
+            </view>
+        </view>
+    </tui-bottom-popup>
 </template>
 
 <script>
-	import { mapState,mapMutations } from 'vuex'
-	export default{
-		name:'cm-price',
-		props:{
-			product:{
-				type:Object,
-			},
-			popupShow:{
-				type:Boolean,
-				default:false
-			}
-		},
-		data() {
-			return{
-				isIphoneX:this.$store.state.isIphoneX,
-			}
-		},
-		filters: {
-			NumFormat:function(text) {//处理金额
-				return Number(text).toFixed(2);
-			},
-		},
-		created() {
-			console.log(this.product)
-		},
-		computed: {
-			...mapState(['hasLogin','isWxAuthorize'])
-		},
-		methods:{
-			hidePopup(){
-				this.$parent.popupShow = false
-			},
-			goGoodActiveFn(id){
-				this.$parent.popupShow = false
-				this.$api.navigateTo('/pages/goods/goods-active?id='+id)
-			}
-		},
-		
-	}
+import { mapGetters } from 'vuex'
+export default {
+    name: 'cm-price',
+    props: {
+        product: {
+            type: Object
+        },
+        popupShow: {
+            type: Boolean,
+            default: false
+        }
+    },
+    filters: {
+        NumFormat: function(text) {
+            //处理金额
+            return Number(text).toFixed(2)
+        }
+    },
+    created() {
+        console.log(this.product)
+    },
+    computed: {
+        ...mapGetters(['hasLogin', 'isWxAuthorize', 'isIphoneX'])
+    },
+    methods: {
+        hidePopup() {
+            this.$parent.popupShow = false
+        },
+        goGoodActiveFn(id) {
+            this.$parent.popupShow = false
+            this.$api.navigateTo('/pages/goods/goods-active?id=' + id)
+        }
+    }
+}
 </script>
 
-<style lang="scss">	
-	.tui-flex-1 {
-		flex: 1;
-	}
-	.tui-popup-box {
-		position: relative;
-		box-sizing: border-box;
-		min-height: 220rpx;
-		padding:24rpx 24rpx 0 24rpx;
-		z-index: 9999;
-	}
-	.tui-scrollview-box{
-		width: 100%;
-		height: auto;
-		float: left;
-		box-sizing: border-box;
-		.ladder-main{
-			width: 100%;
-			border: 1px solid $color-system;
-			border-radius: 10rpx;
-			.ladder-item{
-				width: 100%;
-				height: 80rpx;
-				float: left;
-				border-bottom: 1px solid $color-system;
-				&:nth-child(1){
-					.ladder-item-td{
-						color: #333333;
-					}
-				}
-				&:last-child{
-					border-bottom: none;
-				}
-				.ladder-item-td{
-					width:50%;
-					text-align: center;
-					line-height: 80rpx;
-					font-size: $font-size-24;
-					color: $color-system;
-					box-sizing: border-box;
-					float: left;
-					&:nth-child(1){
-						border-right: 1px solid $color-system;
-					}
-				}
-			}
-		}
-		.box-title{
-			font-size: $font-size-26;
-			color: $text-color;
-			text-align: left;
-			line-height: 56rpx;
-			.txt{
-				color: $color-system;
-				margin: 0 8rpx;
-			}
-		}
-		.box-text{
-			font-size: $font-size-26;
-			color: $text-color;
-			text-align: left;
-			line-height: 56rpx;
-			.txt{
-				color: #ff2a2a;
-			}
-		}
-		.box-product{
-			width: 100%;
-			height: auto;
-			margin-top: 20rpx;
-			.title{
-				font-size: $font-size-24;
-				color: $text-color;
-				text-align: left;
-				line-height: 54rpx;
-			}
-			.box-product-main{
-				width: 100%;
-				height: 136rpx;
-				float: left;
-				margin: 10rpx 0;
-				.image{
-					width: 134rpx;
-					height: 134rpx;
-					border: 1px solid #EBEBEB;
-					float: left;
-					image{
-						width: 100%;
-						height: 100%;
-						display: block;
-					}
-				}
-				.info{
-					width: 540rpx;
-					height: 134rpx;
-					float: left;
-					margin-left: 16rpx;
-					position: relative;
-					.name{
-						width: 100%;
-						float: left;
-						line-height: 40rpx;
-						font-size: $font-size-28;
-						color: $text-color;
-						-o-text-overflow: ellipsis;
-						text-overflow: ellipsis;
-						display: -webkit-box;
-						word-break: break-all;
-						-webkit-box-orient: vertical;
-						-webkit-line-clamp: 2;
-						overflow: hidden;
-					}
-					.num{
-						width: 100%;
-						height: 44rpx;
-						font-size: $font-size-24;
-						color: $text-color;
-						text-align: left;
-						line-height: 44rpx;
-						position: absolute;
-						bottom: 0;
-						left: 0;
-					}
-				}
-			}
-		}
-	}
-	
-	.tui-popup-btn {
-		width: 100%;
-		height: auto;
-		float: left;
-		margin-top: 24rpx;
-		.tui-button{
-			width: 100%;
-			height: 88rpx;
-			background: $btn-confirm;
-			line-height: 88rpx;
-			text-align: center;
-			color: #FFFFFF;
-			font-size: $font-size-28;
-			border-radius: 44rpx;
-		}
-	}
+<style lang="scss">
+.tui-flex-1 {
+    flex: 1;
+}
+.tui-popup-box {
+    position: relative;
+    box-sizing: border-box;
+    min-height: 220rpx;
+    padding: 24rpx 24rpx 0 24rpx;
+    z-index: 9999;
+}
+.tui-scrollview-box {
+    width: 100%;
+    height: auto;
+    float: left;
+    box-sizing: border-box;
+    .ladder-main {
+        width: 100%;
+        border: 1px solid $color-system;
+        border-radius: 10rpx;
+        .ladder-item {
+            width: 100%;
+            height: 80rpx;
+            float: left;
+            border-bottom: 1px solid $color-system;
+            &:nth-child(1) {
+                .ladder-item-td {
+                    color: #333333;
+                }
+            }
+            &:last-child {
+                border-bottom: none;
+            }
+            .ladder-item-td {
+                width: 50%;
+                text-align: center;
+                line-height: 80rpx;
+                font-size: $font-size-24;
+                color: $color-system;
+                box-sizing: border-box;
+                float: left;
+                &:nth-child(1) {
+                    border-right: 1px solid $color-system;
+                }
+            }
+        }
+    }
+    .box-title {
+        font-size: $font-size-26;
+        color: $text-color;
+        text-align: left;
+        line-height: 56rpx;
+        .txt {
+            color: $color-system;
+            margin: 0 8rpx;
+        }
+    }
+    .box-text {
+        font-size: $font-size-26;
+        color: $text-color;
+        text-align: left;
+        line-height: 56rpx;
+        .txt {
+            color: #ff2a2a;
+        }
+    }
+    .box-product {
+        width: 100%;
+        height: auto;
+        margin-top: 20rpx;
+        .title {
+            font-size: $font-size-24;
+            color: $text-color;
+            text-align: left;
+            line-height: 54rpx;
+        }
+        .box-product-main {
+            width: 100%;
+            height: 136rpx;
+            float: left;
+            margin: 10rpx 0;
+            .image {
+                width: 134rpx;
+                height: 134rpx;
+                border: 1px solid #ebebeb;
+                float: left;
+                image {
+                    width: 100%;
+                    height: 100%;
+                    display: block;
+                }
+            }
+            .info {
+                width: 540rpx;
+                height: 134rpx;
+                float: left;
+                margin-left: 16rpx;
+                position: relative;
+                .name {
+                    width: 100%;
+                    float: left;
+                    line-height: 40rpx;
+                    font-size: $font-size-28;
+                    color: $text-color;
+                    -o-text-overflow: ellipsis;
+                    text-overflow: ellipsis;
+                    display: -webkit-box;
+                    word-break: break-all;
+                    -webkit-box-orient: vertical;
+                    -webkit-line-clamp: 2;
+                    overflow: hidden;
+                }
+                .num {
+                    width: 100%;
+                    height: 44rpx;
+                    font-size: $font-size-24;
+                    color: $text-color;
+                    text-align: left;
+                    line-height: 44rpx;
+                    position: absolute;
+                    bottom: 0;
+                    left: 0;
+                }
+            }
+        }
+    }
+}
+
+.tui-popup-btn {
+    width: 100%;
+    height: auto;
+    float: left;
+    margin-top: 24rpx;
+    .tui-button {
+        width: 100%;
+        height: 88rpx;
+        background: $btn-confirm;
+        line-height: 88rpx;
+        text-align: center;
+        color: #ffffff;
+        font-size: $font-size-28;
+        border-radius: 44rpx;
+    }
+}
 </style>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

+ 316 - 338
components/cm-module/productDetails/cm-price-activity.vue

@@ -1,358 +1,336 @@
 <template name="cm-price">
-	<!-- 商品详情价格判断 -->
-	<view class="wrap-main">
-		<!-- 协销  -->
-		<view class="wrap-main-item">
-			<view class="p-price tui-skeleton-fillet">
-				<text class="txt sm">¥</text>
-				<text class="txt big">{{ showIndexOfMoney }} </text>
-				<text class="txt sm">{{ smallMoney }} </text>
-			</view>
-			<view class="floor-item-act" v-if="product.activeStatus == 1 && product.ladderList.length>0">
-				<text class="tag tag-01">促销</text>
-				<view class="tag tag-02" @click.stop="clickPopupShow()">活动价</view>
-			</view>
-		</view>
-		<!--促销活动弹窗提示-->
-		<tui-bottom-popup :radius="true" :show="popupShow" @close="hidePopup()">
-			<view class="tui-popup-box clearfix">
-				<template v-if="product.activeStatus == 1">
-					<view class="tui-scrollview-box">
-						<view class="ladder-main clearfix">
-							<view class="ladder-item">
-								<view class="ladder-item-td">购买数</view>
-								<view class="ladder-item-td">价格</view>
-							</view>
-							<view
-								class="ladder-item"
-								v-for="(ladd, index) in product.ladderList"
-								:key="index"
-							>
-								<view class="ladder-item-td">{{ ladd.buyNum }}</view>
-								<view class="ladder-item-td">{{ ladd.buyPrice | NumFormat }}</view>
-							</view>
-						</view>
-					</view>
-				</template>
-				<template v-else>
-					<view class="tui-scrollview-box">
-						<view class="box-text">
-							<text>促销时间:</text>
-							<text class="txt" v-if="product.promotion.status == 1">不限时</text>
-							<text class="txt" v-else
-								>{{ product.promotion.beginTime }}~{{ product.promotion.endTime }}</text
-							>
-						</view>
-						<view class="box-title" v-show="product.promotion.mode == 2">
-							<text>购买{{ product.promotion.name }}商品,满</text>
-							<text class="txt"
-								>¥{{
-									product.promotion == null
-										? '0.00'
-										: product.promotion.touchPrice | NumFormat
-								}}</text
-							>减
-							<text class="txt"
-								>¥{{
-									product.promotion == null
-										? '0.00'
-										: product.promotion.reducedPrice | NumFormat
-								}}</text
-							>
-						</view>
-						<view class="box-title" v-show="product.promotion.mode == 3">
-							<text>购买{{ product.promotion.name }}商品,满</text>
-							<text class="txt"
-								>¥{{
-									product.promotion == null
-										? '0.00'
-										: product.promotion.touchPrice | NumFormat
-								}}</text
-							>赠送商品
-						</view>
-						<view class="box-product" v-show="product.promotion.mode == 3">
-							<view
-								class="box-product-main"
-								v-for="(item, index) in product.promotion.productGifts"
-								:key="index"
-							>
-								<view class="image"
-									><image :src="item.mainImage" mode="widthFix"></image
-								></view>
-								<view class="info">
-									<view class="name">{{ item.productName }}</view>
-									<view class="num">X{{ item.productCount }}</view>
-								</view>
-							</view>
-						</view>
-					</view>
-				</template>
-				<view
-					class="tui-right-flex tui-popup-btn"
-					:style="{ paddingBottom: isIphoneX ? '68rpx' : '0rpx' }"
-				>
-					<view class="tui-flex-1">
-						<view
-							class="tui-button"
-							v-if="product.promotion.type == 2"
-							@click="goGoodActiveFn(product.promotion.id)"
-							>更多凑单商品</view
-						>
-						<view class="tui-button" v-else @click="hidePopup()">了解</view>
-					</view>
-				</view>
-			</view>
-		</tui-bottom-popup>
-		<!-- </template> -->
-	</view>
+    <!-- 商品详情价格判断 -->
+    <view class="wrap-main">
+        <!-- 协销  -->
+        <view class="wrap-main-item">
+            <view class="p-price tui-skeleton-fillet">
+                <text class="txt sm">¥</text> <text class="txt big">{{ showIndexOfMoney }} </text>
+                <text class="txt sm">{{ smallMoney }} </text>
+            </view>
+            <view class="floor-item-act" v-if="product.activeStatus == 1 && product.ladderList.length > 0">
+                <text class="tag tag-01">促销</text>
+                <view class="tag tag-02" @click.stop="clickPopupShow()">活动价</view>
+            </view>
+        </view>
+        <!--促销活动弹窗提示-->
+        <tui-bottom-popup :radius="true" :show="popupShow" @close="hidePopup()">
+            <view class="tui-popup-box clearfix">
+                <template v-if="product.activeStatus == 1">
+                    <view class="tui-scrollview-box">
+                        <view class="ladder-main clearfix">
+                            <view class="ladder-item">
+                                <view class="ladder-item-td">购买数</view> <view class="ladder-item-td">价格</view>
+                            </view>
+                            <view class="ladder-item" v-for="(ladd, index) in product.ladderList" :key="index">
+                                <view class="ladder-item-td">{{ ladd.buyNum }}</view>
+                                <view class="ladder-item-td">{{ ladd.buyPrice | NumFormat }}</view>
+                            </view>
+                        </view>
+                    </view>
+                </template>
+                <template v-else>
+                    <view class="tui-scrollview-box">
+                        <view class="box-text">
+                            <text>促销时间:</text>
+                            <text class="txt" v-if="product.promotion.status == 1">不限时</text>
+                            <text class="txt" v-else
+                                >{{ product.promotion.beginTime }}~{{ product.promotion.endTime }}</text
+                            >
+                        </view>
+                        <view class="box-title" v-show="product.promotion.mode == 2">
+                            <text>购买{{ product.promotion.name }}商品,满</text>
+                            <text class="txt"
+                                >¥{{
+                                    product.promotion == null ? '0.00' : product.promotion.touchPrice | NumFormat
+                                }}</text
+                            >减
+                            <text class="txt"
+                                >¥{{
+                                    product.promotion == null ? '0.00' : product.promotion.reducedPrice | NumFormat
+                                }}</text
+                            >
+                        </view>
+                        <view class="box-title" v-show="product.promotion.mode == 3">
+                            <text>购买{{ product.promotion.name }}商品,满</text>
+                            <text class="txt"
+                                >¥{{
+                                    product.promotion == null ? '0.00' : product.promotion.touchPrice | NumFormat
+                                }}</text
+                            >赠送商品
+                        </view>
+                        <view class="box-product" v-show="product.promotion.mode == 3">
+                            <view
+                                class="box-product-main"
+                                v-for="(item, index) in product.promotion.productGifts"
+                                :key="index"
+                            >
+                                <view class="image"><image :src="item.mainImage" mode="widthFix"></image></view>
+                                <view class="info">
+                                    <view class="name">{{ item.productName }}</view>
+                                    <view class="num">X{{ item.productCount }}</view>
+                                </view>
+                            </view>
+                        </view>
+                    </view>
+                </template>
+                <view class="tui-right-flex tui-popup-btn" :style="{ paddingBottom: isIphoneX ? '68rpx' : '0rpx' }">
+                    <view class="tui-flex-1">
+                        <view
+                            class="tui-button"
+                            v-if="product.promotion.type == 2"
+                            @click="goGoodActiveFn(product.promotion.id)"
+                            >更多凑单商品</view
+                        >
+                        <view class="tui-button" v-else @click="hidePopup()">了解</view>
+                    </view>
+                </view>
+            </view>
+        </tui-bottom-popup>
+        <!-- </template> -->
+    </view>
 </template>
 
 <script>
-import { mapState, mapMutations } from 'vuex'
-import uniGrader from '@/components/uni-grade/uni-grade.vue'
+import { mapGetters } from 'vuex'
 export default {
-	name: 'cm-price',
-	components: {
-		uniGrader
-	},
-	props: {
-		product: {
-			type: Object
-		},
-		userIdentity: {
-			type: Number,
-			default: 2
-		},
-		ladderList: {
-			type: Array
-		},
-		promotion: {
-			type: Object
-		}
-	},
-	data() {
-		return {
-			productInfo:{},
-			popupShow: false,
-			promotionType: 0,
-			isIphoneX: this.$store.state.isIphoneX,
-			ableUserMoney:'',
-			showIndexOfMoney:'',
-			smallMoney:''
-		}
-	},
-	filters: {
-		NumFormat: function(text) {
-			//处理金额
-			return Number(text).toFixed(2)
-		}
-	},
-	created() {
-		
-		this.InfoData(this.product)			
-	},
-	computed: {
-		...mapState(['hasLogin', 'isWxAuthorize'])
-	},
-	methods: {
-		InfoData(data){
-			this.productInfo = data
-			if(this.productInfo.price == 0){
-				this.showIndexOfMoney ='0';
-				this.smallMoney=".00"
-			}else{
-				this.ableUserMoney = this.$api.FormatMoney(this.productInfo.price) ;
-				let i =  this.ableUserMoney.toString().lastIndexOf('.');
-				if(i==-1){
-					this.showIndexOfMoney=this.$api.FormatMoney(this.ableUserMoney)
-					this.smallMoney=".00"
-				}else{
-					this.smallMoney = this.ableUserMoney.toString().substring(i,i+3);
-					this.showIndexOfMoney= this.$api.FormatMoney(this.ableUserMoney.toString().substring(0,i))
-					if(this.smallMoney.length == 2) { //补0,实际上用不着
-						this.smallMoney = this.smallMoney + '0';
-					}
-				}
-			}
-			console.log('this.showIndexOfMoney',this.showIndexOfMoney)
-			console.log('this.smallMoney',this.smallMoney)
-		},
-		clickPopupShow(type) {
-			if(this.product.ladderList.length>0){
-				this.popupShow = true
-				this.promotionType = type
-			}
-		},
-		hidePopup() {
-			this.popupShow = false
-		},
-		promotionFormat(promo) {
-			//促销活动类型数据处理
-			if (promo != null) {
-				if (promo.type == 1 && promo.mode == 1) {
-					return true
-				} else {
-					return false
-				}
-			}
-			return false
-		},
-		goUpgradeApply() {
-			this.$api.navigateTo('/pages/login/apply')
-		},
-		loginClick() {
-			this.$api.navigateTo('/pages/login/login')
-		},
-		goGoodActiveFn(id) {
-			this.$parent.popupShow = false
-			this.$api.navigateTo('/pages/goods/goods-active?id=' + id)
-		}
-	}
+    name: 'cm-price',
+    props: {
+        product: {
+            type: Object
+        },
+        userIdentity: {
+            type: Number,
+            default: 2
+        },
+        ladderList: {
+            type: Array
+        },
+        promotion: {
+            type: Object
+        }
+    },
+    data() {
+        return {
+            productInfo: {},
+            popupShow: false,
+            promotionType: 0,
+            ableUserMoney: '',
+            showIndexOfMoney: '',
+            smallMoney: ''
+        }
+    },
+    filters: {
+        NumFormat: function(text) {
+            //处理金额
+            return Number(text).toFixed(2)
+        }
+    },
+    created() {
+        this.InfoData(this.product)
+    },
+    computed: {
+        ...mapGetters(['hasLogin', 'isWxAuthorize', 'isIphoneX'])
+    },
+    methods: {
+        InfoData(data) {
+            this.productInfo = data
+            if (this.productInfo.price == 0) {
+                this.showIndexOfMoney = '0'
+                this.smallMoney = '.00'
+            } else {
+                this.ableUserMoney = this.$api.FormatMoney(this.productInfo.price)
+                let i = this.ableUserMoney.toString().lastIndexOf('.')
+                if (i == -1) {
+                    this.showIndexOfMoney = this.$api.FormatMoney(this.ableUserMoney)
+                    this.smallMoney = '.00'
+                } else {
+                    this.smallMoney = this.ableUserMoney.toString().substring(i, i + 3)
+                    this.showIndexOfMoney = this.$api.FormatMoney(this.ableUserMoney.toString().substring(0, i))
+                    if (this.smallMoney.length == 2) {
+                        //补0,实际上用不着
+                        this.smallMoney = this.smallMoney + '0'
+                    }
+                }
+            }
+            console.log('this.showIndexOfMoney', this.showIndexOfMoney)
+            console.log('this.smallMoney', this.smallMoney)
+        },
+        clickPopupShow(type) {
+            if (this.product.ladderList.length > 0) {
+                this.popupShow = true
+                this.promotionType = type
+            }
+        },
+        hidePopup() {
+            this.popupShow = false
+        },
+        promotionFormat(promo) {
+            //促销活动类型数据处理
+            if (promo != null) {
+                if (promo.type == 1 && promo.mode == 1) {
+                    return true
+                } else {
+                    return false
+                }
+            }
+            return false
+        },
+        goUpgradeApply() {
+            this.$api.navigateTo('/pages/login/apply')
+        },
+        loginClick() {
+            this.$api.navigateTo('/pages/login/login')
+        },
+        goGoodActiveFn(id) {
+            this.$parent.popupShow = false
+            this.$api.navigateTo('/pages/goods/goods-active?id=' + id)
+        }
+    }
 }
 </script>
 
 <style lang="scss">
 .tui-flex-1 {
-	flex: 1;
+    flex: 1;
 }
 .tui-popup-box {
-	position: relative;
-	box-sizing: border-box;
-	min-height: 220rpx;
-	padding: 24rpx 24rpx 0 24rpx;
+    position: relative;
+    box-sizing: border-box;
+    min-height: 220rpx;
+    padding: 24rpx 24rpx 0 24rpx;
 }
 .tui-scrollview-box {
-	width: 100%;
-	height: auto;
-	float: left;
-	box-sizing: border-box;
-	.ladder-main {
-		width: 100%;
-		border: 1px solid rgba(225, 86, 22, 0.3);
-		border-radius: 10rpx;
-		.ladder-item {
-			width: 100%;
-			height: 80rpx;
-			float: left;
-			border-bottom: 1px solid rgba(225, 86, 22, 0.3);
-			&:nth-child(1) {
-				.ladder-item-td {
-					color: #333333;
-				}
-			}
-			&:last-child {
-				border-bottom: none;
-			}
-			.ladder-item-td {
-				width: 50%;
-				text-align: center;
-				line-height: 80rpx;
-				font-size: $font-size-24;
-				color: $color-system;
-				box-sizing: border-box;
-				float: left;
-				&:nth-child(1) {
-					border-right: 1px solid rgba(225, 86, 22, 0.3);
-				}
-			}
-		}
-	}
-	.box-title {
-		font-size: $font-size-26;
-		color: $text-color;
-		text-align: left;
-		line-height: 56rpx;
-		.txt {
-			color: $color-system;
-			margin: 0 8rpx;
-		}
-	}
-	.box-text{
-		font-size: $font-size-26;
-		color: $text-color;
-		text-align: left;
-		line-height: 56rpx;
-		.txt{
-			color: #ff2a2a;
-		}
-	}
-	.box-product {
-		width: 100%;
-		height: auto;
-		margin-top: 20rpx;
-		.title {
-			font-size: $font-size-24;
-			color: $text-color;
-			text-align: left;
-			line-height: 54rpx;
-		}
-		.box-product-main {
-			width: 100%;
-			height: 136rpx;
-			float: left;
-			margin: 10rpx 0;
-			.image {
-				width: 134rpx;
-				height: 134rpx;
-				border: 1px solid #ebebeb;
-				float: left;
-				image {
-					width: 100%;
-					height: 100%;
-					display: block;
-				}
-			}
-			.info {
-				width: 540rpx;
-				height: 134rpx;
-				float: left;
-				margin-left: 16rpx;
-				position: relative;
-				.name {
-					width: 100%;
-					float: left;
-					line-height: 40rpx;
-					font-size: $font-size-28;
-					color: $text-color;
-					-o-text-overflow: ellipsis;
-					text-overflow: ellipsis;
-					display: -webkit-box;
-					word-break: break-all;
-					-webkit-box-orient: vertical;
-					-webkit-line-clamp: 2;
-					overflow: hidden;
-				}
-				.num {
-					width: 100%;
-					height: 44rpx;
-					font-size: $font-size-24;
-					color: $text-color;
-					text-align: left;
-					line-height: 44rpx;
-					position: absolute;
-					bottom: 0;
-					left: 0;
-				}
-			}
-		}
-	}
+    width: 100%;
+    height: auto;
+    float: left;
+    box-sizing: border-box;
+    .ladder-main {
+        width: 100%;
+        border: 1px solid rgba(225, 86, 22, 0.3);
+        border-radius: 10rpx;
+        .ladder-item {
+            width: 100%;
+            height: 80rpx;
+            float: left;
+            border-bottom: 1px solid rgba(225, 86, 22, 0.3);
+            &:nth-child(1) {
+                .ladder-item-td {
+                    color: #333333;
+                }
+            }
+            &:last-child {
+                border-bottom: none;
+            }
+            .ladder-item-td {
+                width: 50%;
+                text-align: center;
+                line-height: 80rpx;
+                font-size: $font-size-24;
+                color: $color-system;
+                box-sizing: border-box;
+                float: left;
+                &:nth-child(1) {
+                    border-right: 1px solid rgba(225, 86, 22, 0.3);
+                }
+            }
+        }
+    }
+    .box-title {
+        font-size: $font-size-26;
+        color: $text-color;
+        text-align: left;
+        line-height: 56rpx;
+        .txt {
+            color: $color-system;
+            margin: 0 8rpx;
+        }
+    }
+    .box-text {
+        font-size: $font-size-26;
+        color: $text-color;
+        text-align: left;
+        line-height: 56rpx;
+        .txt {
+            color: #ff2a2a;
+        }
+    }
+    .box-product {
+        width: 100%;
+        height: auto;
+        margin-top: 20rpx;
+        .title {
+            font-size: $font-size-24;
+            color: $text-color;
+            text-align: left;
+            line-height: 54rpx;
+        }
+        .box-product-main {
+            width: 100%;
+            height: 136rpx;
+            float: left;
+            margin: 10rpx 0;
+            .image {
+                width: 134rpx;
+                height: 134rpx;
+                border: 1px solid #ebebeb;
+                float: left;
+                image {
+                    width: 100%;
+                    height: 100%;
+                    display: block;
+                }
+            }
+            .info {
+                width: 540rpx;
+                height: 134rpx;
+                float: left;
+                margin-left: 16rpx;
+                position: relative;
+                .name {
+                    width: 100%;
+                    float: left;
+                    line-height: 40rpx;
+                    font-size: $font-size-28;
+                    color: $text-color;
+                    -o-text-overflow: ellipsis;
+                    text-overflow: ellipsis;
+                    display: -webkit-box;
+                    word-break: break-all;
+                    -webkit-box-orient: vertical;
+                    -webkit-line-clamp: 2;
+                    overflow: hidden;
+                }
+                .num {
+                    width: 100%;
+                    height: 44rpx;
+                    font-size: $font-size-24;
+                    color: $text-color;
+                    text-align: left;
+                    line-height: 44rpx;
+                    position: absolute;
+                    bottom: 0;
+                    left: 0;
+                }
+            }
+        }
+    }
 }
 
 .tui-popup-btn {
-	width: 100%;
-	height: auto;
-	float: left;
-	margin-top: 24rpx;
-	.tui-button {
-		width: 100%;
-		height: 88rpx;
-		background: $btn-confirm;
-		line-height: 88rpx;
-		text-align: center;
-		color: #ffffff;
-		font-size: $font-size-28;
-		border-radius: 44rpx;
-	}
+    width: 100%;
+    height: auto;
+    float: left;
+    margin-top: 24rpx;
+    .tui-button {
+        width: 100%;
+        height: 88rpx;
+        background: $btn-confirm;
+        line-height: 88rpx;
+        text-align: center;
+        color: #ffffff;
+        font-size: $font-size-28;
+        border-radius: 44rpx;
+    }
 }
 
 // .wrap-main{

+ 315 - 337
components/cm-module/productDetails/cm-price.vue

@@ -1,357 +1,335 @@
 <template name="cm-price">
-	<!-- 商品详情价格判断 -->
-	<view class="wrap-main">
-		<!-- 协销  -->
-		<view class="wrap-main-item">
-			<view class="p-price tui-skeleton-fillet">
-				<text class="txt sm">¥</text>
-				<text class="txt big">{{ showIndexOfMoney }} </text>
-				<text class="txt sm">{{ smallMoney }} </text>
-			</view>
-			<view class="floor-item-act" v-if="product.activeStatus == 1">
-				<view class="tag tag-02" @click.stop="clickPopupShow()">活动价</view>
-			</view>
-		</view>
-		<!--促销活动弹窗提示-->
-		<tui-bottom-popup :radius="true" :show="popupShow" @close="hidePopup()">
-			<view class="tui-popup-box clearfix">
-				<template v-if="product.activeStatus == 1">
-					<view class="tui-scrollview-box">
-						<view class="ladder-main clearfix">
-							<view class="ladder-item">
-								<view class="ladder-item-td">购买数</view>
-								<view class="ladder-item-td">价格</view>
-							</view>
-							<view
-								class="ladder-item"
-								v-for="(ladd, index) in product.ladderList"
-								:key="index"
-							>
-								<view class="ladder-item-td">{{ ladd.buyNum }}</view>
-								<view class="ladder-item-td">{{ ladd.buyPrice | NumFormat }}</view>
-							</view>
-						</view>
-					</view>
-				</template>
-				<template v-else>
-					<view class="tui-scrollview-box">
-						<view class="box-text">
-							<text>促销时间:</text>
-							<text class="txt" v-if="product.promotion.status == 1">不限时</text>
-							<text class="txt" v-else
-								>{{ product.promotion.beginTime }}~{{ product.promotion.endTime }}</text
-							>
-						</view>
-						<view class="box-title" v-show="product.promotion.mode == 2">
-							<text>购买{{ product.promotion.name }}商品,满</text>
-							<text class="txt"
-								>¥{{
-									product.promotion == null
-										? '0.00'
-										: product.promotion.touchPrice | NumFormat
-								}}</text
-							>减
-							<text class="txt"
-								>¥{{
-									product.promotion == null
-										? '0.00'
-										: product.promotion.reducedPrice | NumFormat
-								}}</text
-							>
-						</view>
-						<view class="box-title" v-show="product.promotion.mode == 3">
-							<text>购买{{ product.promotion.name }}商品,满</text>
-							<text class="txt"
-								>¥{{
-									product.promotion == null
-										? '0.00'
-										: product.promotion.touchPrice | NumFormat
-								}}</text
-							>赠送商品
-						</view>
-						<view class="box-product" v-show="product.promotion.mode == 3">
-							<view
-								class="box-product-main"
-								v-for="(item, index) in product.promotion.productGifts"
-								:key="index"
-							>
-								<view class="image"
-									><image :src="item.mainImage" mode="widthFix"></image
-								></view>
-								<view class="info">
-									<view class="name">{{ item.productName }}</view>
-									<view class="num">X{{ item.productCount }}</view>
-								</view>
-							</view>
-						</view>
-					</view>
-				</template>
-				<view
-					class="tui-right-flex tui-popup-btn"
-					:style="{ paddingBottom: isIphoneX ? '68rpx' : '0rpx' }"
-				>
-					<view class="tui-flex-1">
-						<view
-							class="tui-button"
-							v-if="product.promotion.type == 2"
-							@click="goGoodActiveFn(product.promotion.id)"
-							>更多凑单商品</view
-						>
-						<view class="tui-button" v-else @click="hidePopup()">了解</view>
-					</view>
-				</view>
-			</view>
-		</tui-bottom-popup>
-		<!-- </template> -->
-	</view>
+    <!-- 商品详情价格判断 -->
+    <view class="wrap-main">
+        <!-- 协销  -->
+        <view class="wrap-main-item">
+            <view class="p-price tui-skeleton-fillet">
+                <text class="txt sm">¥</text> <text class="txt big">{{ showIndexOfMoney }} </text>
+                <text class="txt sm">{{ smallMoney }} </text>
+            </view>
+            <view class="floor-item-act" v-if="product.activeStatus == 1">
+                <view class="tag tag-02" @click.stop="clickPopupShow()">活动价</view>
+            </view>
+        </view>
+        <!--促销活动弹窗提示-->
+        <tui-bottom-popup :radius="true" :show="popupShow" @close="hidePopup()">
+            <view class="tui-popup-box clearfix">
+                <template v-if="product.activeStatus == 1">
+                    <view class="tui-scrollview-box">
+                        <view class="ladder-main clearfix">
+                            <view class="ladder-item">
+                                <view class="ladder-item-td">购买数</view> <view class="ladder-item-td">价格</view>
+                            </view>
+                            <view class="ladder-item" v-for="(ladd, index) in product.ladderList" :key="index">
+                                <view class="ladder-item-td">{{ ladd.buyNum }}</view>
+                                <view class="ladder-item-td">{{ ladd.buyPrice | NumFormat }}</view>
+                            </view>
+                        </view>
+                    </view>
+                </template>
+                <template v-else>
+                    <view class="tui-scrollview-box">
+                        <view class="box-text">
+                            <text>促销时间:</text>
+                            <text class="txt" v-if="product.promotion.status == 1">不限时</text>
+                            <text class="txt" v-else
+                                >{{ product.promotion.beginTime }}~{{ product.promotion.endTime }}</text
+                            >
+                        </view>
+                        <view class="box-title" v-show="product.promotion.mode == 2">
+                            <text>购买{{ product.promotion.name }}商品,满</text>
+                            <text class="txt"
+                                >¥{{
+                                    product.promotion == null ? '0.00' : product.promotion.touchPrice | NumFormat
+                                }}</text
+                            >减
+                            <text class="txt"
+                                >¥{{
+                                    product.promotion == null ? '0.00' : product.promotion.reducedPrice | NumFormat
+                                }}</text
+                            >
+                        </view>
+                        <view class="box-title" v-show="product.promotion.mode == 3">
+                            <text>购买{{ product.promotion.name }}商品,满</text>
+                            <text class="txt"
+                                >¥{{
+                                    product.promotion == null ? '0.00' : product.promotion.touchPrice | NumFormat
+                                }}</text
+                            >赠送商品
+                        </view>
+                        <view class="box-product" v-show="product.promotion.mode == 3">
+                            <view
+                                class="box-product-main"
+                                v-for="(item, index) in product.promotion.productGifts"
+                                :key="index"
+                            >
+                                <view class="image"><image :src="item.mainImage" mode="widthFix"></image></view>
+                                <view class="info">
+                                    <view class="name">{{ item.productName }}</view>
+                                    <view class="num">X{{ item.productCount }}</view>
+                                </view>
+                            </view>
+                        </view>
+                    </view>
+                </template>
+                <view class="tui-right-flex tui-popup-btn" :style="{ paddingBottom: isIphoneX ? '68rpx' : '0rpx' }">
+                    <view class="tui-flex-1">
+                        <view
+                            class="tui-button"
+                            v-if="product.promotion.type == 2"
+                            @click="goGoodActiveFn(product.promotion.id)"
+                            >更多凑单商品</view
+                        >
+                        <view class="tui-button" v-else @click="hidePopup()">了解</view>
+                    </view>
+                </view>
+            </view>
+        </tui-bottom-popup>
+        <!-- </template> -->
+    </view>
 </template>
 
 <script>
-import { mapState, mapMutations } from 'vuex'
-import uniGrader from '@/components/uni-grade/uni-grade.vue'
+import { mapGetters } from 'vuex'
 export default {
-	name: 'cm-price',
-	components: {
-		uniGrader
-	},
-	props: {
-		product: {
-			type: Object
-		},
-		userIdentity: {
-			type: Number,
-			default: 2
-		},
-		ladderList: {
-			type: Array
-		},
-		promotion: {
-			type: Object
-		}
-	},
-	data() {
-		return {
-			productInfo:{},
-			popupShow: false,
-			promotionType: 0,
-			isIphoneX: this.$store.state.isIphoneX,
-			ableUserMoney:'',
-			showIndexOfMoney:'',
-			smallMoney:''
-		}
-	},
-	filters: {
-		NumFormat: function(text) {
-			//处理金额
-			return Number(text).toFixed(2)
-		}
-	},
-	created() {
-		
-		this.InfoData(this.product)			
-	},
-	computed: {
-		...mapState(['hasLogin', 'isWxAuthorize'])
-	},
-	methods: {
-		InfoData(data){
-			this.productInfo = data
-			if(this.productInfo.price == 0){
-				this.showIndexOfMoney ='0';
-				this.smallMoney=".00"
-			}else{
-				this.ableUserMoney = this.$api.FormatMoney(this.productInfo.price) ;
-				let i =  this.ableUserMoney.toString().lastIndexOf('.');
-				if(i==-1){
-					this.showIndexOfMoney=this.$api.FormatMoney(this.ableUserMoney)
-					this.smallMoney=".00"
-				}else{
-					this.smallMoney = this.ableUserMoney.toString().substring(i);
-					this.showIndexOfMoney= this.$api.FormatMoney(this.ableUserMoney.toString().substring(0,i))
-					if(this.smallMoney.length == 2) { //补0,实际上用不着
-						this.smallMoney = this.smallMoney + '0';
-					}
-				}
-			}
-			console.log('this.showIndexOfMoney',this.showIndexOfMoney)
-			console.log('this.smallMoney',this.smallMoney)
-		},
-		clickPopupShow(type) {
-			if(this.product.ladderList.length>0){
-				this.popupShow = true
-				this.promotionType = type
-			}
-		},
-		hidePopup() {
-			this.popupShow = false
-		},
-		promotionFormat(promo) {
-			//促销活动类型数据处理
-			if (promo != null) {
-				if (promo.type == 1 && promo.mode == 1) {
-					return true
-				} else {
-					return false
-				}
-			}
-			return false
-		},
-		goUpgradeApply() {
-			this.$api.navigateTo('/pages/login/apply')
-		},
-		loginClick() {
-			this.$api.navigateTo('/pages/login/login')
-		},
-		goGoodActiveFn(id) {
-			this.$parent.popupShow = false
-			this.$api.navigateTo('/pages/goods/goods-active?id=' + id)
-		}
-	}
+    name: 'cm-price',
+    props: {
+        product: {
+            type: Object
+        },
+        userIdentity: {
+            type: Number,
+            default: 2
+        },
+        ladderList: {
+            type: Array
+        },
+        promotion: {
+            type: Object
+        }
+    },
+    data() {
+        return {
+            productInfo: {},
+            popupShow: false,
+            promotionType: 0,
+            ableUserMoney: '',
+            showIndexOfMoney: '',
+            smallMoney: ''
+        }
+    },
+    filters: {
+        NumFormat: function(text) {
+            //处理金额
+            return Number(text).toFixed(2)
+        }
+    },
+    created() {
+        this.InfoData(this.product)
+    },
+    computed: {
+        ...mapGetters(['hasLogin', 'isWxAuthorize', 'isIphoneX'])
+    },
+    methods: {
+        InfoData(data) {
+            this.productInfo = data
+            if (this.productInfo.price == 0) {
+                this.showIndexOfMoney = '0'
+                this.smallMoney = '.00'
+            } else {
+                this.ableUserMoney = this.$api.FormatMoney(this.productInfo.price)
+                let i = this.ableUserMoney.toString().lastIndexOf('.')
+                if (i == -1) {
+                    this.showIndexOfMoney = this.$api.FormatMoney(this.ableUserMoney)
+                    this.smallMoney = '.00'
+                } else {
+                    this.smallMoney = this.ableUserMoney.toString().substring(i)
+                    this.showIndexOfMoney = this.$api.FormatMoney(this.ableUserMoney.toString().substring(0, i))
+                    if (this.smallMoney.length == 2) {
+                        //补0,实际上用不着
+                        this.smallMoney = this.smallMoney + '0'
+                    }
+                }
+            }
+            console.log('this.showIndexOfMoney', this.showIndexOfMoney)
+            console.log('this.smallMoney', this.smallMoney)
+        },
+        clickPopupShow(type) {
+            if (this.product.ladderList.length > 0) {
+                this.popupShow = true
+                this.promotionType = type
+            }
+        },
+        hidePopup() {
+            this.popupShow = false
+        },
+        promotionFormat(promo) {
+            //促销活动类型数据处理
+            if (promo != null) {
+                if (promo.type == 1 && promo.mode == 1) {
+                    return true
+                } else {
+                    return false
+                }
+            }
+            return false
+        },
+        goUpgradeApply() {
+            this.$api.navigateTo('/pages/login/apply')
+        },
+        loginClick() {
+            this.$api.navigateTo('/pages/login/login')
+        },
+        goGoodActiveFn(id) {
+            this.$parent.popupShow = false
+            this.$api.navigateTo('/pages/goods/goods-active?id=' + id)
+        }
+    }
 }
 </script>
 
 <style lang="scss">
 .tui-flex-1 {
-	flex: 1;
+    flex: 1;
 }
 .tui-popup-box {
-	position: relative;
-	box-sizing: border-box;
-	min-height: 220rpx;
-	padding: 24rpx 24rpx 0 24rpx;
+    position: relative;
+    box-sizing: border-box;
+    min-height: 220rpx;
+    padding: 24rpx 24rpx 0 24rpx;
 }
 .tui-scrollview-box {
-	width: 100%;
-	height: auto;
-	float: left;
-	box-sizing: border-box;
-	.ladder-main {
-		width: 100%;
-		border: 1px solid rgba(225, 86, 22, 0.3);
-		border-radius: 10rpx;
-		.ladder-item {
-			width: 100%;
-			height: 80rpx;
-			float: left;
-			border-bottom: 1px solid rgba(225, 86, 22, 0.3);
-			&:nth-child(1) {
-				.ladder-item-td {
-					color: #333333;
-				}
-			}
-			&:last-child {
-				border-bottom: none;
-			}
-			.ladder-item-td {
-				width: 50%;
-				text-align: center;
-				line-height: 80rpx;
-				font-size: $font-size-24;
-				color: $color-system;
-				box-sizing: border-box;
-				float: left;
-				&:nth-child(1) {
-					border-right: 1px solid rgba(225, 86, 22, 0.3);
-				}
-			}
-		}
-	}
-	.box-title {
-		font-size: $font-size-26;
-		color: $text-color;
-		text-align: left;
-		line-height: 56rpx;
-		.txt {
-			color: $color-system;
-			margin: 0 8rpx;
-		}
-	}
-	.box-text{
-		font-size: $font-size-26;
-		color: $text-color;
-		text-align: left;
-		line-height: 56rpx;
-		.txt{
-			color: #ff2a2a;
-		}
-	}
-	.box-product {
-		width: 100%;
-		height: auto;
-		margin-top: 20rpx;
-		.title {
-			font-size: $font-size-24;
-			color: $text-color;
-			text-align: left;
-			line-height: 54rpx;
-		}
-		.box-product-main {
-			width: 100%;
-			height: 136rpx;
-			float: left;
-			margin: 10rpx 0;
-			.image {
-				width: 134rpx;
-				height: 134rpx;
-				border: 1px solid #ebebeb;
-				float: left;
-				image {
-					width: 100%;
-					height: 100%;
-					display: block;
-				}
-			}
-			.info {
-				width: 540rpx;
-				height: 134rpx;
-				float: left;
-				margin-left: 16rpx;
-				position: relative;
-				.name {
-					width: 100%;
-					float: left;
-					line-height: 40rpx;
-					font-size: $font-size-28;
-					color: $text-color;
-					-o-text-overflow: ellipsis;
-					text-overflow: ellipsis;
-					display: -webkit-box;
-					word-break: break-all;
-					-webkit-box-orient: vertical;
-					-webkit-line-clamp: 2;
-					overflow: hidden;
-				}
-				.num {
-					width: 100%;
-					height: 44rpx;
-					font-size: $font-size-24;
-					color: $text-color;
-					text-align: left;
-					line-height: 44rpx;
-					position: absolute;
-					bottom: 0;
-					left: 0;
-				}
-			}
-		}
-	}
+    width: 100%;
+    height: auto;
+    float: left;
+    box-sizing: border-box;
+    .ladder-main {
+        width: 100%;
+        border: 1px solid rgba(225, 86, 22, 0.3);
+        border-radius: 10rpx;
+        .ladder-item {
+            width: 100%;
+            height: 80rpx;
+            float: left;
+            border-bottom: 1px solid rgba(225, 86, 22, 0.3);
+            &:nth-child(1) {
+                .ladder-item-td {
+                    color: #333333;
+                }
+            }
+            &:last-child {
+                border-bottom: none;
+            }
+            .ladder-item-td {
+                width: 50%;
+                text-align: center;
+                line-height: 80rpx;
+                font-size: $font-size-24;
+                color: $color-system;
+                box-sizing: border-box;
+                float: left;
+                &:nth-child(1) {
+                    border-right: 1px solid rgba(225, 86, 22, 0.3);
+                }
+            }
+        }
+    }
+    .box-title {
+        font-size: $font-size-26;
+        color: $text-color;
+        text-align: left;
+        line-height: 56rpx;
+        .txt {
+            color: $color-system;
+            margin: 0 8rpx;
+        }
+    }
+    .box-text {
+        font-size: $font-size-26;
+        color: $text-color;
+        text-align: left;
+        line-height: 56rpx;
+        .txt {
+            color: #ff2a2a;
+        }
+    }
+    .box-product {
+        width: 100%;
+        height: auto;
+        margin-top: 20rpx;
+        .title {
+            font-size: $font-size-24;
+            color: $text-color;
+            text-align: left;
+            line-height: 54rpx;
+        }
+        .box-product-main {
+            width: 100%;
+            height: 136rpx;
+            float: left;
+            margin: 10rpx 0;
+            .image {
+                width: 134rpx;
+                height: 134rpx;
+                border: 1px solid #ebebeb;
+                float: left;
+                image {
+                    width: 100%;
+                    height: 100%;
+                    display: block;
+                }
+            }
+            .info {
+                width: 540rpx;
+                height: 134rpx;
+                float: left;
+                margin-left: 16rpx;
+                position: relative;
+                .name {
+                    width: 100%;
+                    float: left;
+                    line-height: 40rpx;
+                    font-size: $font-size-28;
+                    color: $text-color;
+                    -o-text-overflow: ellipsis;
+                    text-overflow: ellipsis;
+                    display: -webkit-box;
+                    word-break: break-all;
+                    -webkit-box-orient: vertical;
+                    -webkit-line-clamp: 2;
+                    overflow: hidden;
+                }
+                .num {
+                    width: 100%;
+                    height: 44rpx;
+                    font-size: $font-size-24;
+                    color: $text-color;
+                    text-align: left;
+                    line-height: 44rpx;
+                    position: absolute;
+                    bottom: 0;
+                    left: 0;
+                }
+            }
+        }
+    }
 }
 
 .tui-popup-btn {
-	width: 100%;
-	height: auto;
-	float: left;
-	margin-top: 24rpx;
-	.tui-button {
-		width: 100%;
-		height: 88rpx;
-		background: $btn-confirm;
-		line-height: 88rpx;
-		text-align: center;
-		color: #ffffff;
-		font-size: $font-size-28;
-		border-radius: 44rpx;
-	}
+    width: 100%;
+    height: auto;
+    float: left;
+    margin-top: 24rpx;
+    .tui-button {
+        width: 100%;
+        height: 88rpx;
+        background: $btn-confirm;
+        line-height: 88rpx;
+        text-align: center;
+        color: #ffffff;
+        font-size: $font-size-28;
+        border-radius: 44rpx;
+    }
 }
 
 // .wrap-main{

+ 1 - 9
components/cm-module/productDetails/evaluate.vue

@@ -29,10 +29,7 @@
 </template>
 
 <script>
-	import authorize from '@/common/config/authorize.js'
-	import tuiLoadmore from "@/components/tui-components/loadmore/loadmore"
-	import tuiNomore from "@/components/tui-components/nomore/nomore"
-	import uniStars from '@/components/uni-stars/uni-stars.vue'
+	import authorize from '@/common/authorize.js'
 	
 	export default{
 		name:'evaluate',
@@ -43,11 +40,6 @@
 				default: 0
 			}
 		},
-		components:{
-			tuiLoadmore,
-			tuiNomore,
-			uniStars
-		},
 		data() {
 			return{
 				evaluateList:[],

+ 1 - 7
components/cm-module/productDetails/instrument-recommend.vue

@@ -12,9 +12,7 @@
 </template>
 
 <script>
-	import authorize from '@/common/config/authorize.js'
-	import tuiLoadmore from "@/components/tui-components/loadmore/loadmore"
-	import tuiNomore from "@/components/tui-components/nomore/nomore"
+	import authorize from '@/common/authorize.js'
 	
 	export default{
 		name:'recommend',
@@ -24,10 +22,6 @@
 				type: Array
 			}
 		},
-		components:{
-			tuiLoadmore,
-			tuiNomore,
-		},
 		data() {
 			return{
 				

+ 1 - 7
components/cm-module/productDetails/recommend.vue

@@ -13,9 +13,7 @@
 
 <script>
 	import { mapState,mapMutations} from 'vuex';
-	import authorize from '@/common/config/authorize.js'
-	import tuiLoadmore from "@/components/tui-components/loadmore/loadmore"
-	import tuiNomore from "@/components/tui-components/nomore/nomore"
+	import authorize from '@/common/authorize.js'
 	
 	export default{
 		name:'recommend',
@@ -29,10 +27,6 @@
 				default: '0'
 			}
 		},
-		components:{
-			tuiLoadmore,
-			tuiNomore,
-		},
 		data() {
 			return{
 				current:0,

+ 0 - 0
components/share.vue → components/cm-module/share/share.vue


+ 1 - 1
components/mpvue-citypicker/mpvueCityPicker.vue

@@ -24,7 +24,7 @@
 </template>
 
 <script>	
-	import { provinceData,cityData,areaData } from '@/common/config/addressdata.js';
+	import { provinceData,cityData,areaData } from '@/common/addressdata.js';
 	export default {
 		data() {
 			return {

+ 0 - 166
components/tui-components/loadmore/loadmore.vue

@@ -1,166 +0,0 @@
-<template>
-	<view class="tui-loadmore" v-if="visible">
-		<view :class="['tui-loading-'+index, (index==3 && type)?'tui-loading-'+type:'']"></view>
-		<view class="tui-loadmore-tips">{{text}}</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: "tuiLoadmore",
-		props: {
-			//显示文本
-			text: {
-				type: String,
-				default: "正在加载..."
-			},
-			//是否可见
-			visible: {
-				type: Boolean,
-				default: false
-			},
-			//loading 样式 :1,2,3
-			index: {
-				type: Number,
-				default: 1
-			},
-			//颜色设置,只有index=3时生效:primary,red,orange,green
-			type: {
-				type: String,
-				default: ""
-			}
-		}
-	}
-</script>
-
-<style>
-	.tui-loadmore {
-		width: 48%;
-		margin: 1.5em auto;
-		line-height: 1.5em;
-		font-size: 24upx;
-		text-align: center;
-	}
-
-	.tui-loading-1 {
-		margin: 0 5px;
-		width: 20px;
-		height: 20px;
-		display: inline-block;
-		vertical-align: middle;
-		-webkit-animation: a 1s steps(12) infinite;
-		animation: a 1s steps(12) infinite;
-		background: transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=) no-repeat;
-		background-size: 100%;
-	}
-
-	@-webkit-keyframes a {
-		0% {
-			-webkit-transform: rotate(0deg);
-			transform: rotate(0deg);
-		}
-
-		to {
-			-webkit-transform: rotate(1turn);
-			transform: rotate(1turn);
-		}
-	}
-
-	@keyframes a {
-		0% {
-			-webkit-transform: rotate(0deg);
-			transform: rotate(0deg);
-		}
-
-		to {
-			-webkit-transform: rotate(1turn);
-			transform: rotate(1turn);
-		}
-	}
-
-	.tui-loadmore-tips {
-		display: inline-block;
-		vertical-align: middle;
-	}
-
-	.tui-loading-2 {
-		width: 28upx;
-		height: 28upx;
-		border: 1px solid #8f8d8e;
-		border-radius: 50%;
-		margin: 0 6px;
-		display: inline-block;
-		vertical-align: middle;
-		clip-path: polygon(0% 0%,100% 0%,100% 30%,0% 30%);
-		animation: rotate 1s linear infinite;
-	}
-
-	@-webkit-keyframes rotate {
-		from {
-			transform: rotatez(0deg);
-		}
-
-		to {
-			transform: rotatez(360deg);
-		}
-	}
-
-	@keyframes rotate {
-		from {
-			transform: rotatez(0deg);
-		}
-
-		to {
-			transform: rotatez(360deg);
-		}
-	}
-
-	.tui-loading-3 {
-		display: inline-block;
-		margin: 0 6px;
-		vertical-align: middle;
-		width: 28upx;
-		height: 28upx;
-		background: 0 0;
-		border-radius: 50%;
-		border: 2px solid;
-		border-color: #e5e5e5 #e5e5e5 #e5e5e5 #8f8d8e;
-		animation: tui-rotate 0.7s linear infinite;
-	}
-
-	.tui-loading-3.tui-loading-primary {
-		border-color: #e5e5e5 #e5e5e5 #e5e5e5 #5677fc;
-	}
-
-	.tui-loading-3.tui-loading-green {
-		border-color: #e5e5e5 #e5e5e5 #e5e5e5 #19be6b;
-	}
-
-	.tui-loading-3.tui-loading-orange {
-		border-color: #e5e5e5 #e5e5e5 #e5e5e5 #ff7900;
-	}
-
-	.tui-loading-3.tui-loading-red {
-		border-color: #ededed #ededed #ededed #ed3f14;
-	}
-
-	@-webkit-keyframes tui-rotate {
-		0% {
-			transform: rotate(0);
-		}
-
-		100% {
-			transform: rotate(360deg);
-		}
-	}
-
-	@keyframes tui-rotate {
-		0% {
-			transform: rotate(0);
-		}
-
-		100% {
-			transform: rotate(360deg);
-		}
-	}
-</style>

+ 0 - 119
components/tui-components/nomore/nomore.vue

@@ -1,119 +0,0 @@
-<template>
-	<view class="tui-nomore-class tui-loadmore-none" v-if="visible">
-		<view :class="[isDot?'tui-nomore-dot':'tui-nomore']">
-			<view :style="{background:bgcolor}" :class="[isDot?'tui-dot-text':'tui-nomore-text']">{{isDot?dotText:text}}</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: "tuiNomore",
-		props: {
-			//是否可见
-			visible: {
-				type: Boolean,
-				default: false
-			},
-			//当前页面背景颜色
-			bgcolor: {
-				type: String,
-				default: "#F7F7F7"
-			},
-			//是否以圆点代替 "没有更多了"
-			isDot: {
-				type: Boolean,
-				default: false
-			},
-			//isDot为false时生效
-			text: {
-				type: String,
-				default: "已至底部"
-			}
-		},
-		data() {
-			return {
-				dotText: "●"
-			};
-		}
-	}
-</script>
-
-<style>
-	.tui-loadmore-none {
-		width: 50%;
-		margin: 1em auto;
-		line-height: 1.5em;
-		font-size: 24rpx;
-		display: flex;
-		justify-content: center;
-	}
-
-	.tui-nomore {
-		width: 100%;
-		height: 100%;
-		position: relative;
-		display: flex;
-		justify-content: center;
-		margin-top: 10rpx;
-		padding-bottom: 6rpx;
-	}
-
-	.tui-nomore::before {
-		content: ' ';
-		position: absolute;
-		border-bottom: 1rpx solid #e5e5e5;
-		-webkit-transform: scaleY(0.5);
-		transform: scaleY(0.5);
-		width: 100%;
-		top: 18rpx;
-		left: 0;
-	}
-
-	.tui-nomore-text {
-		color: #999;
-		font-size: 24rpx;
-		text-align: center;
-		padding: 0 18rpx;
-		height: 36rpx;
-		line-height: 36rpx;
-		position: relative;
-		z-index: 1;
-	}
-
-	.tui-nomore-dot {
-		position: relative;
-		text-align: center;
-		-webkit-display: flex;
-		display: flex;
-		-webkit-justify-content: center;
-		justify-content: center;
-		margin-top: 10rpx;
-		padding-bottom: 6rpx;
-	}
-
-	.tui-nomore-dot::before {
-		content: '';
-		position: absolute;
-		border-bottom: 1rpx solid #e5e5e5;
-		-webkit-transform: scaleY(0.5);
-		transform: scaleY(0.5);
-		width: 360rpx;
-		top: 18rpx;
-	}
-
-	.tui-dot-text {
-		position: relative;
-		color: #e5e5e5;
-		font-size: 10px;
-		text-align: center;
-		width: 50rpx;
-		height: 36rpx;
-		line-height: 36rpx;
-		-webkit-transform: scale(0.8);
-		transform: scale(0.8);
-		-webkit-transform-origin: center center;
-		transform-origin: center center;
-		z-index: 1;
-	}
-</style>

+ 0 - 233
components/tui-components/tui-tabs/tui-tabs.vue

@@ -1,233 +0,0 @@
-<template>
-	<view class="tui-tabs-view" :class="[isFixed?'tui-tabs-fixed':'tui-tabs-relative',unlined?'tui-unlined':'']" :style="{height:height+'rpx',padding:`0 ${padding}rpx`,background:bgColor,marginTop:marginTop+'px',top:isFixed?top+'px':'auto'}">
-		<view v-for="(item,index) in tabs" :key="index" class="tui-tabs-item" :style="{width:itemWidth}" @tap.stop="swichTabs(index)">
-			<view class="tui-tabs-title" :class="{'tui-tabs-active':currentTab==index,'tui-tabs-disabled':item.disabled}" :style="{color:currentTab==index?selectedColor:color,fontSize:size+'rpx',lineHeight:size+'rpx',fontWeight:bold && currentTab==index?'bold':'normal'}">{{item.name}}</view>
-		</view>
-		<view class="tui-tabs-slider" :style="{transform:'translateX('+scrollLeft+'px)',width:(sliderWidth+5)+'rpx',height:
-	sliderHeight+'rpx',borderRadius:sliderRadius,bottom:bottom,background:sliderBgColor,marginBottom:bottom=='50%'?('-'+sliderHeight/2+'rpx'):0}"></view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: "tuiTabs",
-		props: {
-			//标签页
-			tabs: {
-				type: Array,
-				default () {
-					return []
-				}
-			},
-			//rpx
-			height: {
-				type: Number,
-				default: 80
-			},
-			//rpx 只对左右padding起作用,上下为0
-			padding: {
-				type: Number,
-				default: 22
-			},
-			marginTop:{
-				type:Number,
-				default:0
-			},
-			//背景色
-			bgColor: {
-				type: String,
-				default: "#FFFFFF"
-			},
-			//是否固定
-			isFixed: {
-				type: Boolean,
-				default: false
-			},
-			//px
-			top: {
-				type: Number
-					// #ifndef H5
-					,
-				default: 0
-					// #endif
-					// #ifdef H5
-					,
-				default: 44
-				// #endif
-			},
-			//是否去掉底部线条
-			unlined: {
-				type: Boolean,
-				default: false
-			},
-			//当前选项卡
-			currentTab: {
-				type: Number,
-				default: 0
-			},
-			//滑块宽度
-			sliderWidth: {
-				type: Number,
-				default: 88
-			},
-			//滑块高度
-			sliderHeight: {
-				type: Number,
-				default: 4
-			},
-			//滑块背景颜色
-			sliderBgColor: {
-				type: String,
-				default: "#5677fc"
-			},
-			sliderRadius:{
-				type: String,
-				default: "50rpx"
-			},
-			//滑块bottom
-			bottom: {
-				type: String,
-				default: "0"
-			},
-			//标签页宽度
-			itemWidth: {
-				type: String,
-				default: "25%"
-			},
-			//字体颜色
-			color: {
-				type: String,
-				default: "#666"
-			},
-			//选中后字体颜色
-			selectedColor: {
-				type: String,
-				default: "#5677fc"
-			},
-			//字体大小
-			size: {
-				type: Number,
-				default: 28
-			},
-			//选中后 是否加粗 ,未选中则无效
-			bold: {
-				type: Boolean,
-				default: false
-			}
-		},
-		watch: {
-			currentTab() {
-				this.checkCor();
-			}
-		},
-		created() {
-			setTimeout(() => {
-				// 高度自适应
-				uni.getSystemInfo({
-					success: (res) => {
-						this.winWidth = res.windowWidth;
-						this.checkCor()
-					}
-				});
-			}, 50);
-		},
-		data() {
-			return {
-				winWidth: 0,
-				scrollLeft: 0
-			};
-		},
-		methods: {
-			checkCor: function() {
-				let tabsNum = this.tabs.length
-				let padding = this.winWidth / 750 * this.padding
-				let width = this.winWidth - padding * 2
-				let left = (width / tabsNum - (this.winWidth / 750 * this.sliderWidth)) / 2 + padding
-				let scrollLeft = left
-				if (this.currentTab > 0) {
-					scrollLeft = scrollLeft + (width / tabsNum) * this.currentTab
-				}
-				this.scrollLeft = scrollLeft
-			},
-			// 点击标题切换当前页时改变样式
-			swichTabs: function(index) {
-				let item = this.tabs[index]
-				if (item && item.disabled) return;
-				if (this.currentTab == index) {
-					return false;
-				} else {
-					this.$emit("change", {
-						index: Number(index)
-					})
-				}
-			}
-		}
-	}
-</script>
-
-<style>
-	.tui-tabs-view {
-		width: 100%;
-		box-sizing: border-box;
-		display: flex;
-		align-items: center;
-		justify-content: space-between;
-		z-index: 1000;
-	}
-
-	.tui-tabs-relative {
-		position: relative;
-	}
-
-	.tui-tabs-fixed {
-		position: fixed;
-		left: 0;
-	}
-
-	.tui-tabs-fixed::before,
-	.tui-tabs-relative::before {
-		content: '';
-		position: absolute;
-		border-bottom: 1upx solid #eaeef1;
-		-webkit-transform: scaleY(0.5);
-		transform: scaleY(0.5);
-		bottom: 0;
-		right: 0;
-		left: 0;
-	}
-
-	.tui-unlined::before {
-		border-bottom: 0 !important
-	}
-
-	.tui-tabs-item {
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		height: 100%;
-	}
-
-	.tui-tabs-disabled {
-		opacity: .6;
-	}
-
-	.tui-tabs-title {
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		position: relative;
-		z-index: 2;
-	}
-
-	.tui-tabs-active {
-		transition: all 0.15s ease-in-out;
-	}
-
-	.tui-tabs-slider {
-		position: absolute;
-		left: 0;
-		transition: all 0.15s ease-in-out;
-		z-index: 0;
-		transform: translateZ(0);
-	}
-</style>

+ 0 - 161
components/tui-loadmore/tui-loadmore.vue

@@ -1,161 +0,0 @@
-<template>
-	<view class="tui-loadmore">
-		<view :class="['tui-loading-'+index, (index==3 && type)?'tui-loading-'+type:'']"></view>
-		<view class="tui-loadmore-tips">{{text}}</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: "tuiLoadmore",
-		props: {
-			//显示文本
-			text: {
-				type: String,
-				default: "正在加载..."
-			},
-			//loading 样式 :1,2,3
-			index: {
-				type: Number,
-				default: 1
-			},
-			//颜色设置,只有index=3时生效:primary,red,orange,green
-			type: {
-				type: String,
-				default: ""
-			}
-		}
-	}
-</script>
-
-<style scoped>
-	.tui-loadmore {
-		width: 48%;
-		margin: 1.5em auto;
-		line-height: 1.5em;
-		font-size: 24rpx;
-		text-align: center;
-	}
-
-	.tui-loading-1 {
-		margin: 0 5px;
-		width: 20px;
-		height: 20px;
-		display: inline-block;
-		vertical-align: middle;
-		-webkit-animation: a 1s steps(12) infinite;
-		animation: a 1s steps(12) infinite;
-		background: transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=) no-repeat;
-		background-size: 100%;
-	}
-
-	@-webkit-keyframes a {
-		0% {
-			-webkit-transform: rotate(0deg);
-			transform: rotate(0deg);
-		}
-
-		to {
-			-webkit-transform: rotate(1turn);
-			transform: rotate(1turn);
-		}
-	}
-
-	@keyframes a {
-		0% {
-			-webkit-transform: rotate(0deg);
-			transform: rotate(0deg);
-		}
-
-		to {
-			-webkit-transform: rotate(1turn);
-			transform: rotate(1turn);
-		}
-	}
-
-	.tui-loadmore-tips {
-		display: inline-block;
-		vertical-align: middle;
-	}
-
-	.tui-loading-2 {
-		width: 28rpx;
-		height: 28rpx;
-		border: 1px solid #8f8d8e;
-		border-radius: 50%;
-		margin: 0 6px;
-		display: inline-block;
-		vertical-align: middle;
-		clip-path: polygon(0% 0%,100% 0%,100% 30%,0% 30%);
-		animation: rotate 1s linear infinite;
-	}
-
-	@-webkit-keyframes rotate {
-		from {
-			transform: rotatez(0deg);
-		}
-
-		to {
-			transform: rotatez(360deg);
-		}
-	}
-
-	@keyframes rotate {
-		from {
-			transform: rotatez(0deg);
-		}
-
-		to {
-			transform: rotatez(360deg);
-		}
-	}
-
-	.tui-loading-3 {
-		display: inline-block;
-		margin: 0 6px;
-		vertical-align: middle;
-		width: 28rpx;
-		height: 28rpx;
-		background: 0 0;
-		border-radius: 50%;
-		border: 2px solid;
-		border-color: #e5e5e5 #e5e5e5 #e5e5e5 #8f8d8e;
-		animation: tui-rotate 0.7s linear infinite;
-	}
-
-	.tui-loading-3.tui-loading-primary {
-		border-color: #e5e5e5 #e5e5e5 #e5e5e5 #5677fc;
-	}
-
-	.tui-loading-3.tui-loading-green {
-		border-color: #e5e5e5 #e5e5e5 #e5e5e5 #19be6b;
-	}
-
-	.tui-loading-3.tui-loading-orange {
-		border-color: #e5e5e5 #e5e5e5 #e5e5e5 #ff7900;
-	}
-
-	.tui-loading-3.tui-loading-red {
-		border-color: #ededed #ededed #ededed #ed3f14;
-	}
-
-	@-webkit-keyframes tui-rotate {
-		0% {
-			transform: rotate(0);
-		}
-
-		100% {
-			transform: rotate(360deg);
-		}
-	}
-
-	@keyframes tui-rotate {
-		0% {
-			transform: rotate(0);
-		}
-
-		100% {
-			transform: rotate(360deg);
-		}
-	}
-</style>

+ 0 - 115
components/tui-nomore/tui-nomore.vue

@@ -1,115 +0,0 @@
-<template>
-	<view class="tui-nomore-class tui-loadmore-none">
-		<view :class="[isDot?'tui-nomore-dot':'tui-nomore']">
-			<view :style="{backgroundColor:backgroundColor}" :class="[isDot?'tui-dot-text':'tui-nomore-text']">{{isDot?dotText:text}}</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: "tuiNomore",
-		props: {
-			//当前页面背景颜色
-			backgroundColor: {
-				type: String,
-				default: "#fafafa"
-			},
-			//是否以圆点代替 "没有更多了"
-			isDot: {
-				type: Boolean,
-				default: false
-			},
-			//isDot为false时生效
-			text: {
-				type: String,
-				default: "没有更多了"
-			}
-		},
-		data() {
-			return {
-				dotText: "●"
-			};
-		}
-	}
-</script>
-
-<style scoped>
-	.tui-loadmore-none {
-		width: 50%;
-		margin: 1.5em auto;
-		line-height: 1.5em;
-		font-size: 24rpx;
-		display: flex;
-		justify-content: center;
-	}
-
-	.tui-nomore {
-		width: 100%;
-		height: 100%;
-		position: relative;
-		display: flex;
-		justify-content: center;
-		margin-top: 10rpx;
-		padding-bottom: 6rpx;
-	}
-
-	.tui-nomore::before {
-		content: ' ';
-		position: absolute;
-		border-bottom: 1rpx solid #e5e5e5;
-		-webkit-transform: scaleY(0.5);
-		transform: scaleY(0.5);
-		width: 100%;
-		top: 18rpx;
-		left: 0;
-	}
-
-	.tui-nomore-text {
-		color: #999;
-		font-size: 24rpx;
-		text-align: center;
-		padding: 0 18rpx;
-		height: 36rpx;
-		line-height: 36rpx;
-		position: relative;
-		z-index: 1;
-	}
-
-	.tui-nomore-dot {
-		position: relative;
-		text-align: center;
-		-webkit-display: flex;
-		display: flex;
-		-webkit-justify-content: center;
-		justify-content: center;
-		margin-top: 10rpx;
-		padding-bottom: 6rpx;
-	}
-
-	.tui-nomore-dot::before {
-		content: '';
-		position: absolute;
-		border-bottom: 1rpx solid #e5e5e5;
-		-webkit-transform: scaleY(0.5)  translateX(-50%);
-		transform: scaleY(0.5)  translateX(-50%);
-		width: 360rpx;
-		top: 18rpx;
-		left: 50%;
-	}
-
-	.tui-dot-text {
-		position: relative;
-		color: #e5e5e5;
-		font-size: 10px;
-		text-align: center;
-		width: 50rpx;
-		height: 36rpx;
-		line-height: 36rpx;
-		-webkit-transform: scale(0.8);
-		transform: scale(0.8);
-		-webkit-transform-origin: center center;
-		transform-origin: center center;
-		z-index: 1;
-	}
-</style>

+ 0 - 246
components/tui-skeleton/tui-skeleton.vue

@@ -1,246 +0,0 @@
-<template>
-	<view class="tui-skeleton-cmomon tui-skeleton-box" :style="{width: winWidth+'px', height:winHeight+'px', backgroundColor:backgroundColor}">
-		<view class="tui-skeleton-cmomon" v-for="(item,index) in skeletonElements" :key="index" :style="{width: item.width+'px', height:item.height+'px', left: item.left+'px', top: item.top+'px',backgroundColor: skeletonBgColor,borderRadius:getRadius(item.skeletonType,borderRadius)}"></view>
-		<view class="tui-loading" :class="[getLoadingType(loadingType)]" v-if="isLoading"></view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: "tuiSkeleton",
-		props: {
-			//选择器(外层容器)
-			selector: {
-				type: String,
-				default: "tui-skeleton"
-			},
-			//外层容器背景颜色
-			backgroundColor: {
-				type: String,
-				default: "#fff"
-			},
-			//骨架元素背景颜色
-			skeletonBgColor: {
-				type: String,
-				default: "#e9e9e9"
-			},
-			//骨架元素类型:矩形,圆形,带圆角矩形["rect","circular","fillet"]
-			//默认所有,根据页面情况进行传值
-			//页面对应元素class为:tui-skeleton-rect,tui-skeleton-circular,tui-skeleton-fillet
-			//如果传入的值不在下列数组中,则为自定义class值,默认按矩形渲染
-			skeletonType: {
-				type: Array,
-				default () {
-					return ["rect", "circular", "fillet"]
-				}
-			},
-			//圆角值,skeletonType=fillet时生效
-			borderRadius: {
-				type: String,
-				default: "16rpx"
-			},
-			//骨架屏预生成数据:提前生成好的数据,当传入该属性值时,则不会再次查找子节点信息
-			preloadData: {
-				type: Array,
-				default () {
-					return []
-				}
-			},
-			//是否需要loading
-			isLoading: {
-				type: Boolean,
-				default: true
-			},
-			//loading类型[1-10]
-			loadingType: {
-				type: Number,
-				default: 1
-			}
-		},
-		created() {
-			const res = uni.getSystemInfoSync();
-			this.winWidth = res.windowWidth;
-			this.winHeight = res.windowHeight;
-			//如果有预生成数据,则直接使用
-			this.isPreload(true)
-		},
-		// #ifdef H5
-		mounted() {
-			this.$nextTick(() => {
-				this.nodesRef(`.${this.selector}`).then((res) => {
-					this.winHeight = res[0].height + Math.abs(res[0].top)
-				});
-				!this.isPreload() && this.selectorQuery()
-			})
-
-		},
-		// #endif
-		onReady() {
-			this.nodesRef(`.${this.selector}`).then((res) => {
-				if(res[0]){
-					this.winHeight = res[0].height + Math.abs(res[0].top)
-				}
-			});
-			!this.isPreload() && this.selectorQuery()
-		},
-		data() {
-			return {
-				winWidth: 375,
-				winHeight: 800,
-				skeletonElements: []
-			};
-		},
-		methods: {
-			getLoadingType: function(type) {
-				let value = 1
-				if (type && type > 0 && type < 11) {
-					value = type
-				}
-				return 'tui-loading-' + value
-			},
-			getRadius: function(type, val) {
-				let radius = "0"
-				if (type == "circular") {
-					radius = "50%"
-				} else if (type == "fillet") {
-					radius = val
-				}
-				return radius;
-			},
-			isPreload(init) {
-				let preloadData = this.preloadData || []
-				if (preloadData.length) {
-					init && (this.skeletonElements = preloadData)
-					return true
-				}
-				return false
-			},
-			async selectorQuery() {
-				let skeletonType = this.skeletonType || []
-				let nodes = []
-				for (let item of skeletonType) {
-					let className = `.${this.selector} >>> .${item}`
-					// #ifdef H5
-					className = `.${item}`
-					// #endif
-					if (~"rect_circular_fillet".indexOf(item)) {
-						// #ifndef H5
-						className = `.${this.selector} >>> .${this.selector}-${item}`
-						// #endif
-						// #ifdef H5
-						className = `.${this.selector}-${item}`
-						// #endif
-					}
-					await this.nodesRef(className).then((res) => {
-						res.map(d => {
-							d.skeletonType = item
-						})
-						nodes = nodes.concat(res)
-					})
-				}
-				this.skeletonElements = nodes
-			},
-			async nodesRef(className) {
-				return await new Promise((resolve, reject) => {
-					uni.createSelectorQuery().selectAll(className).boundingClientRect((res) => {
-						if (res) {
-							resolve(res);
-						} else {
-							reject(res)
-						}
-					}).exec();
-				})
-			}
-		}
-	}
-</script>
-
-<style>
-	.tui-skeleton-cmomon {
-		position: absolute;
-		z-index: 99999;
-		overflow: hidden;
-	}
-
-	.tui-skeleton-box {
-		left: 0;
-		top: 0;
-	}
-
-	.tui-loading {
-		display: inline-block;
-		vertical-align: middle;
-		width: 40rpx;
-		height: 40rpx;
-		background: 0 0;
-		border-radius: 50%;
-		border: 2px solid;
-		animation: tui-rotate 0.7s linear infinite;
-		position: fixed;
-		z-index: 999999;
-		left: 50%;
-		top: 50%;
-		margin-left: -20rpx;
-		margin-top: -20rpx;
-	}
-
-	.tui-loading-1 {
-		border-color: #e5e5e5 #e5e5e5 #e5e5e5 #5677fc;
-	}
-
-	.tui-loading-2 {
-		border-color: #e5e5e5 #e5e5e5 #e5e5e5 #8f8d8e;
-	}
-
-	.tui-loading-3 {
-		border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) #fff;
-	}
-
-	.tui-loading-4 {
-		border-color: #e5e5e5 #e5e5e5 #e5e5e5 #35b06a;
-	}
-
-	.tui-loading-5 {
-		border-color: #e5e5e5 #e5e5e5 #e5e5e5 #fc872d;
-	}
-
-	.tui-loading-6 {
-		border-color: #e5e5e5 #e5e5e5 #e5e5e5 #eb0909;
-	}
-
-	.tui-loading-7 {
-		border-color: #5677fc transparent #5677fc transparent;
-	}
-
-	.tui-loading-8 {
-		border-color: #35b06a transparent #35b06a transparent;
-	}
-
-	.tui-loading-9 {
-		border-color: #fc872d transparent #fc872d transparent;
-	}
-
-	.tui-loading-10 {
-		border-color: #eb0909 transparent #eb0909 transparent;
-	}
-
-	@-webkit-keyframes tui-rotate {
-		0% {
-			transform: rotate(0);
-		}
-
-		100% {
-			transform: rotate(360deg);
-		}
-	}
-
-	@keyframes tui-rotate {
-		0% {
-			transform: rotate(0);
-		}
-
-		100% {
-			transform: rotate(360deg);
-		}
-	}
-</style>

+ 0 - 0
components/uni-badge/uni-badge.vue → components/uni-components/uni-badge/uni-badge.vue


+ 0 - 0
components/uni-calendar/calendar.js → components/uni-components/uni-calendar/calendar.js


+ 0 - 0
components/uni-calendar/uni-calendar-item.vue → components/uni-components/uni-calendar/uni-calendar-item.vue


+ 0 - 0
components/uni-calendar/uni-calendar.vue → components/uni-components/uni-calendar/uni-calendar.vue


+ 0 - 0
components/uni-calendar/util.js → components/uni-components/uni-calendar/util.js


+ 0 - 0
components/uni-grade/uni-grade.vue → components/uni-components/uni-grade/uni-grade.vue


+ 0 - 0
components/uni-number-box.vue → components/uni-components/uni-number-box/uni-number-box.vue


+ 0 - 0
components/uni-search/bt-search.vue → components/uni-components/uni-search/bt-search.vue


+ 1 - 1
components/uni-search/or-search.vue → components/uni-components/uni-search/or-search.vue

@@ -25,7 +25,7 @@
 </template>
 
 <script>
-	import authorize from '@/common/config/authorize.js'
+	import authorize from '@/common/authorize.js'
 	export default{
 		name:"or-search",
 		props:{

+ 0 - 0
components/uni-stars/uni-stars.vue → components/uni-components/uni-stars/uni-stars.vue


+ 216 - 0
components/uni-components/uni-swiper-dot/uni-swiper-dot.vue

@@ -0,0 +1,216 @@
+<template>
+	<view class="uni-swiper__warp">
+		<slot />
+		<view v-if="mode === 'default'" :style="{'bottom':dots.bottom + 'px'}" class="uni-swiper__dots-box" key='default'>
+			<view v-for="(item,index) in info" @click="clickItem(index)" :style="{
+        'width': (index === current? dots.width*2:dots.width ) + 'px','height':dots.width/3 +'px' ,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor,'border-radius':'0px'}"
+			 :key="index" class="uni-swiper__dots-item uni-swiper__dots-bar" />
+		</view>
+		<view v-if="mode === 'dot'" :style="{'bottom':dots.bottom + 'px'}" class="uni-swiper__dots-box" key='dot'>
+			<view v-for="(item,index) in info" @click="clickItem(index)" :style="{
+        'width': dots.width + 'px','height':dots.height +'px' ,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor,'border':index !==current ? dots.border:dots.selectedBorder}"
+			 :key="index" class="uni-swiper__dots-item" />
+		</view>
+		<view v-if="mode === 'round'" :style="{'bottom':dots.bottom + 'px'}" class="uni-swiper__dots-box" key='round'>
+			<view v-for="(item,index) in info" @click="clickItem(index)" :class="[index === current&&'uni-swiper__dots-long']" :style="{
+		    'width':(index === current? dots.width*3:dots.width ) + 'px','height':dots.height +'px' ,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor,'border':index !==current ? dots.border:dots.selectedBorder}"
+			 :key="index" class="uni-swiper__dots-item " />
+		</view>
+		<view v-if="mode === 'nav'" key='nav' :style="{'background-color':dotsStyles.backgroundColor,'bottom':'0'}" class="uni-swiper__dots-box uni-swiper__dots-nav">
+			<text :style="{'color':dotsStyles.color}" class="uni-swiper__dots-nav-item">{{ (current+1)+"/"+info.length +' ' +info[current][field] }}</text>
+		</view>
+		<view v-if="mode === 'indexes'" key='indexes' :style="{'bottom':dots.bottom + 'px'}" class="uni-swiper__dots-box">
+			<view v-for="(item,index) in info" @click="clickItem(index)" :style="{
+        'width':dots.width + 'px','height':dots.height +'px' ,'color':index === current?dots.selectedColor:dots.color,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor,'border':index !==current ? dots.border:dots.selectedBorder}"
+			 :key="index" class="uni-swiper__dots-item uni-swiper__dots-indexes"><text class="uni-swiper__dots-indexes-text">{{ index+1 }}</text></view>
+		</view>
+	</view>
+</template>
+
+<script>
+
+	/**
+	 * SwiperDod 轮播图指示点
+	 * @description 自定义轮播图指示点
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=284
+	 * @property {Number} current 当前指示点索引,必须是通过 `swiper` 的 `change` 事件获取到的 `e.detail.current`
+	 * @property {String} mode = [default|round|nav|indexes] 指示点的类型
+	 * 	@value defualt 默认指示点
+	 * 	@value round 圆形指示点
+	 * 	@value nav 条形指示点
+	 * 	@value indexes 索引指示点
+	 * @property {String} field mode 为 nav 时,显示的内容字段(mode = nav 时必填)
+	 * @property {String} info 轮播图的数据,通过数组长度决定指示点个数
+	 * @property {Object} dotsStyles 指示点样式
+	 * @event {Function} clickItem 组件触发点击事件时触发,e={currentIndex}
+	 */
+
+	export default {
+		name: 'UniSwiperDot',
+		emits:['clickItem'],
+		props: {
+			info: {
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			current: {
+				type: Number,
+				default: 0
+			},
+			dotsStyles: {
+				type: Object,
+				default () {
+					return {}
+				}
+			},
+			// 类型 :default(默认) indexes long nav
+			mode: {
+				type: String,
+				default: 'default'
+			},
+			// 只在 nav 模式下生效,变量名称
+			field: {
+				type: String,
+				default: ''
+			}
+		},
+		data() {
+			return {
+				dots: {
+					width: 8,
+					height: 8,
+					bottom: 10,
+					color: '#fff',
+					backgroundColor: 'rgba(0, 0, 0, .3)',
+					border: '1px rgba(0, 0, 0, .3) solid',
+					selectedBackgroundColor: '#333',
+					selectedBorder: '1px rgba(0, 0, 0, .9) solid'
+				}
+			}
+		},
+		watch: {
+			dotsStyles(newVal) {
+				this.dots = Object.assign(this.dots, this.dotsStyles)
+			},
+			mode(newVal) {
+				if (newVal === 'indexes') {
+					this.dots.width = 20
+					this.dots.height = 20
+				} else {
+					this.dots.width = 8
+					this.dots.height = 8
+				}
+			}
+
+		},
+		created() {
+			if (this.mode === 'indexes') {
+				this.dots.width = 20
+				this.dots.height = 20
+			}
+			this.dots = Object.assign(this.dots, this.dotsStyles)
+		},
+		methods: {
+			clickItem(index) {
+				this.$emit('clickItem', index)
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.uni-swiper__warp {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex: 1;
+		flex-direction: column;
+		position: relative;
+		overflow: hidden;
+	}
+
+	.uni-swiper__dots-box {
+		position: absolute;
+		bottom: 10px;
+		left: 0;
+		right: 0;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.uni-swiper__dots-item {
+		width: 8px;
+		border-radius: 100px;
+		margin-left: 6px;
+		background-color: $uni-bg-color-mask;
+		/* #ifndef APP-NVUE */
+		cursor: pointer;
+		/* #endif */
+		/* #ifdef H5 */
+		// border-width: 5px 0;
+		// border-style: solid;
+		// border-color: transparent;
+		// background-clip: padding-box;
+		/* #endif */
+		// transition: width 0.2s linear;  不要取消注释,不然会不能变色
+	}
+
+	.uni-swiper__dots-item:first-child {
+		margin: 0;
+	}
+
+	.uni-swiper__dots-default {
+		border-radius: 100px;
+	}
+
+	.uni-swiper__dots-long {
+		border-radius: 50px;
+	}
+
+	.uni-swiper__dots-bar {
+		border-radius: 50px;
+	}
+
+	.uni-swiper__dots-nav {
+		bottom: 0px;
+		height: 40px;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: flex-start;
+		align-items: center;
+		background-color: rgba(0, 0, 0, 0.2);
+	}
+
+	.uni-swiper__dots-nav-item {
+		/* overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap; */
+		font-size: $uni-font-size-base;
+		color: #fff;
+		margin: 0 15px;
+	}
+
+	.uni-swiper__dots-indexes {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		// flex: 1;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.uni-swiper__dots-indexes-text {
+		color: #fff;
+		font-size: $uni-font-size-sm;
+	}
+</style>

+ 4 - 4
main.js

@@ -1,10 +1,10 @@
 import Vue from 'vue'
-import store from './store/store.js'
+import store from './store'
 import App from './App'
 import ServiceApi from './services/index.js'
-import Api from './common/config/utilsTools.js'
-import Common from './common/config/common.js'
-import GlobalComponent from './common/config/global.component.js'
+import Api from './common/utilsTools.js'
+import Common from './common/common.js'
+import GlobalComponent from './common/global.component.js'
 import Util from './utils/util.js'
 
 //友盟+小程序统计

+ 2 - 1
pages.json

@@ -199,7 +199,8 @@
     "easycom": {
         "autoscan": true,
         "custom": {
-            "tui-(.*)": "@/components/thorui/tui-$1/tui-$1.vue"
+            "tui-(.*)": "@/components/thorui/tui-$1/tui-$1.vue",
+            "uni-(.*)": "@/components/uni-components/uni-$1/uni-$1.vue"
         }
     },
     "globalStyle": {

+ 2 - 2
pages/authorize/authorize.vue

@@ -26,7 +26,7 @@
 
 <script>
 import { mapGetters, mapMutations } from 'vuex'
-import authorize from '@/common/config/authorize.js'
+import authorize from '@/common/authorize.js'
 import wxLogin from '@/services/wxLogin.js'
 
 export default {
@@ -40,7 +40,7 @@ export default {
                 title: '微信授权', // 导航栏 中间的标题
                 haveBack: true,
                 haveHome: false,
-                textLeft: this.$store.state.isIphone
+                textLeft: this.$store.getters.isIphone
             },
             CustomBar: this.CustomBar, // 顶部导航栏高度
             authorizeType: ''

+ 7 - 14
pages/goods/cart.vue

@@ -1,11 +1,11 @@
 <template>
     <view class="container cart clearfix" v-if="hasLogin" :style="{ paddingTop: CustomBar + 'px' }">
-        <headerNavbar
+        <header-cart
             :systeminfo="systeminfo"
             :navbar-data="nvabarData"
             :headerBtnPosi="headerBtnPosi"
             :page="1"
-        ></headerNavbar>
+        ></header-cart>
         <tui-skeleton
             v-if="skeletonShow"
             backgroundColor="#fafafa"
@@ -202,23 +202,17 @@
     </view>
 </template>
 <script>
-import authorize from '@/common/config/authorize.js'
-import tuiSkeleton from '@/components/tui-skeleton/tui-skeleton'
-import tuiLoadmore from '@/components/tui-components/loadmore/loadmore'
-import tuiNomore from '@/components/tui-components/nomore/nomore'
-import headerNavbar from '@/components/cm-module/headerNavbar/headerNavbar.vue' //顶部自定义胶囊'
+import authorize from '@/common/authorize.js'
+import HeaderCart from '@/components/cm-module/headerNavbar/header-cart.vue' //顶部自定义胶囊'
 import activiPopup from '@/components/cm-module/productDetails/cm-activipopu'
-import modalLayer from '@/components/modal-layer'
+import modalLayer from '@/components/cm-module/modal-layer/modal-layer'
 import { mapGetters } from 'vuex'
 import { cartList } from '@/common/json/data.json.js' //本地数据
 
 export default {
     components: {
-        tuiSkeleton,
-        tuiLoadmore,
-        tuiNomore,
         modalLayer,
-        headerNavbar,
+        HeaderCart,
         activiPopup
     },
     data() {
@@ -233,7 +227,6 @@ export default {
             headerBtnPosi: this.setHeaderBtnPosi(), //获取设备顶部胶囊高度
             systeminfo: this.setSysteminfo(), //获取设备信息
             CustomBar: this.CustomBar, // 顶部导航栏高度
-            isIphoneX: this.$store.state.isIphoneX,
             userId: '',
             popupShow: false,
             handlerPros: {}, //监听单挑促销商品
@@ -270,7 +263,7 @@ export default {
         this.setScrollHeight()
     },
     computed: {
-        ...mapGetters(['hasLogin'])
+        ...mapGetters(['hasLogin', 'isIphoneX'])
     },
     filters: {
         NumFormat(value) {

+ 1 - 9
pages/goods/good-floorMore.vue

@@ -38,20 +38,12 @@
 </template>
 
 <script>
-import tuiSkeleton from '@/components/tui-skeleton/tui-skeleton'
-import tuiLoadmore from '@/components/tui-loadmore/tui-loadmore.vue'
-import tuiNomore from '@/components/tui-nomore/tui-nomore.vue'
-import authorize from '@/common/config/authorize.js'
-import btSearch from '@/components/uni-search/bt-search.vue'
+import authorize from '@/common/authorize.js'
 import banner from '@/components/cm-module/homeIndex/banner.vue'
 import { mapGetters } from 'vuex'
 export default {
     components: {
-        tuiSkeleton,
-        btSearch,
         banner,
-        tuiLoadmore,
-        tuiNomore
     },
     data() {
         return {

+ 7 - 10
pages/goods/product-activi.vue

@@ -6,7 +6,7 @@
             paddingTop: CustomBar + 'px'
         }"
     >
-        <custom-p
+        <header-product
             v-if="isHeaderPoduct"
             :systeminfo="systeminfo"
             :navbar-data="nvabarData"
@@ -15,7 +15,7 @@
             :type="isShareType"
             :page="backPage"
         >
-        </custom-p>
+        </header-product>
         <view class="product-topnav" v-if="isNavbarFiexd" :class="navbarFiexd" :style="{ top: CustomBar + 'px' }">
             <view class="navbar">
                 <view
@@ -286,21 +286,19 @@
 
 <script>
 import { mapGetters } from 'vuex'
-import customP from '@/components/cm-module/headerNavbar/header-poduct' //自定义导航
+import HeaderProduct from '@/components/cm-module/headerNavbar/header-poduct' //自定义导航
 import cmPrice from '@/components/cm-module/productDetails/cm-price-activity.vue' //价格显示
 import cmAttributes from '@/components/cm-module/productDetails/cm-attributes.vue' //规格信息
 import parser from '@/components/jyf-Parser/index' //富文本处理
-import tuiSkeleton from '@/components/tui-skeleton/tui-skeleton'
 import cmService from '@/components/cm-module/productDetails/cm-service' //服务项目
-import authorize from '@/common/config/authorize.js'
+import authorize from '@/common/authorize.js'
 import wxLogin from '@/services/wxLogin.js'
-import { debounce } from '@/common/config/common.js'
+import { debounce } from '@/common/common.js'
 var isPreviewImg
 export default {
     components: {
-        customP,
+        HeaderProduct,
         parser,
-        tuiSkeleton,
         cmPrice,
         cmAttributes,
         cmService
@@ -349,7 +347,6 @@ export default {
             goodListData: [],
             headerBtnPosi: this.setHeaderBtnPosi(), //获取设备顶部胶囊高度
             systeminfo: this.setSysteminfo(), //获取设备信息
-            isIphoneX: this.$store.state.isIphoneX,
             windowHeight: '',
             headerColor: false,
             backPage: 1,
@@ -380,7 +377,7 @@ export default {
         this.getWinHeight()
     },
     computed: {
-        ...mapGetters(['hasLogin'])
+        ...mapGetters(['hasLogin', 'isIphoneX'])
     },
     filters: {
         NumFormat(value) {

+ 9 - 12
pages/goods/product.vue

@@ -6,7 +6,7 @@
             paddingTop: CustomBar + 'px'
         }"
     >
-        <custom-p
+        <header-product
             v-if="isHeaderPoduct"
             :systeminfo="systeminfo"
             :navbar-data="nvabarData"
@@ -15,7 +15,7 @@
             :type="isShareType"
             :page="backPage"
         >
-        </custom-p>
+        </header-product>
         <view class="product-topnav" v-if="isNavbarFiexd" :class="navbarFiexd" :style="{ top: CustomBar + 'px' }">
             <view class="navbar">
                 <view
@@ -73,8 +73,8 @@
                                         size="32rpx"
                                         :scaleMultiple="0.82"
                                         originRight
-                                        >{{ current + 1 }}/{{ productImage.length }}</tui-tag
-                                    >
+                                        >{{ current + 1 }}/{{ productImage.length }}
+                                    </tui-tag>
                                 </view>
                             </uni-swiper-dot>
                         </view>
@@ -286,21 +286,19 @@
 
 <script>
 import { mapGetters } from 'vuex'
-import customP from '@/components/cm-module/headerNavbar/header-poduct' //自定义导航
+import HeaderProduct from '@/components/cm-module/headerNavbar/header-poduct' //自定义导航
 import cmPrice from '@/components/cm-module/productDetails/cm-price.vue' //价格显示
 import cmAttributes from '@/components/cm-module/productDetails/cm-attributes.vue' //规格信息
 import parser from '@/components/jyf-Parser/index' //富文本处理
-import tuiSkeleton from '@/components/tui-skeleton/tui-skeleton'
 import cmService from '@/components/cm-module/productDetails/cm-service' //服务项目
-import authorize from '@/common/config/authorize.js'
+import authorize from '@/common/authorize.js'
 import wxLogin from '@/services/wxLogin.js'
-import { debounce } from '@/common/config/common.js'
+import { debounce } from '@/common/common.js'
 var isPreviewImg
 export default {
     components: {
-        customP,
+        HeaderProduct,
         parser,
-        tuiSkeleton,
         cmPrice,
         cmAttributes,
         cmService
@@ -349,7 +347,6 @@ export default {
             goodListData: [],
             headerBtnPosi: this.setHeaderBtnPosi(), //获取设备顶部胶囊高度
             systeminfo: this.setSysteminfo(), //获取设备信息
-            isIphoneX: this.$store.state.isIphoneX,
             windowHeight: '',
             headerColor: false,
             backPage: 1,
@@ -378,7 +375,7 @@ export default {
         this.getWinHeight()
     },
     computed: {
-        ...mapGetters(['hasLogin'])
+        ...mapGetters(['hasLogin', 'isIphoneX'])
     },
     filters: {
         NumFormat(value) {

+ 2 - 4
pages/goods/search.vue

@@ -97,15 +97,13 @@
 
 <script>
 import { mapGetters } from 'vuex'
-import modalLayer from '@/components/modal-layer'
-import uniGrader from '@/components/uni-grade/uni-grade.vue'
-import authorize from '@/common/config/authorize.js'
+import modalLayer from '@/components/cm-module/modal-layer/modal-layer'
+import authorize from '@/common/authorize.js'
 import wxLogin from '@/services/wxLogin.js'
 
 export default {
     components: {
         modalLayer,
-        uniGrader
     },
     data() {
         return {

+ 1 - 1
pages/login/login.vue

@@ -48,7 +48,7 @@
 </template>
 
 <script>
-import authorize from '@/common/config/authorize.js'
+import authorize from '@/common/authorize.js'
 import wxLogin from '@/services/wxLogin.js'
 import { mapGetters, mapMutations } from 'vuex'
 export default {

+ 3 - 10
pages/tabBar/cart/index.vue

@@ -191,19 +191,13 @@
     </view>
 </template>
 <script>
-import authorize from '@/common/config/authorize.js'
-import tuiSkeleton from '@/components/tui-skeleton/tui-skeleton'
-import tuiLoadmore from '@/components/tui-components/loadmore/loadmore'
-import tuiNomore from '@/components/tui-components/nomore/nomore'
+import authorize from '@/common/authorize.js'
 import activiPopup from '@/components/cm-module/productDetails/cm-activipopu'
-import modalLayer from '@/components/modal-layer'
+import modalLayer from '@/components/cm-module/modal-layer/modal-layer'
 import { mapGetters } from 'vuex'
 
 export default {
     components: {
-        tuiSkeleton,
-        tuiLoadmore,
-        tuiNomore,
         activiPopup,
         modalLayer
     },
@@ -211,7 +205,6 @@ export default {
         return {
             StaticUrl: this.$Static,
             CustomBar: this.CustomBar, // 顶部导航栏高度
-            isIphoneX: this.$store.state.isIphoneX,
             userId: '',
             popupShow: false,
             handlerPros: {}, //监听单挑促销商品
@@ -248,7 +241,7 @@ export default {
         this.setScrollHeight()
     },
     computed: {
-        ...mapGetters(['hasLogin'])
+        ...mapGetters(['hasLogin', 'isIphoneX'])
     },
     filters: {
         NumFormat(value) {

+ 5 - 10
pages/tabBar/index/index.vue

@@ -77,20 +77,16 @@
             </view>
         </view>
         <!-- 侧边 -->
-        <scroll-top :isScrollTop="isScrollTop" :bottom="160"></scroll-top>
+        <scroll-top :isScrollTop="isScrollTop" :bottom="160"></scroll-top> 
     </view>
-</template>
+</template> 
 
 <script>
-import tuiSkeleton from '@/components/tui-skeleton/tui-skeleton'
-import authorize from '@/common/config/authorize.js'
-import btSearch from '@/components/uni-search/bt-search.vue'
+import authorize from '@/common/authorize.js'
 import banner from '@/components/cm-module/homeIndex/banner.vue'
-import { mapGetters, mapMutations } from 'vuex'
+import { mapGetters, mapMutations } from 'vuex' 
 export default {
     components: {
-        tuiSkeleton,
-        btSearch,
         banner
     },
     data() {
@@ -102,7 +98,7 @@ export default {
                 showSearch: 0,
                 title: '呵呵商城', // 导航栏 中间的标题
                 haveBack: false,
-                textLeft: this.$store.state.isIphone,
+                textLeft: this.$store.getters.isIphone,
                 textColor: '#FFFFFF'
             },
             inputActive: 'bgnone',
@@ -135,7 +131,6 @@ export default {
     onLoad() {
         this.modallayer = false
         this.InitAuthorize()
-        console.log(this.$api)
     },
     computed: {
         ...mapGetters(['hasLogin'])

+ 1 - 1
pages/tabBar/user/index.vue

@@ -102,7 +102,7 @@
 <script>
 import nutBadge from '@/components/thorui/tui-badge/tui-badge.vue'
 import { mapGetters, mapMutations } from 'vuex'
-import authorize from '@/common/config/authorize.js'
+import authorize from '@/common/authorize.js'
 import wxLogin from '@/services/wxLogin.js'
 
 export default {

+ 1 - 1
pages/user/activity/activity.vue

@@ -39,7 +39,7 @@
 <script>
 import wxLogin from '@/services/wxLogin.js'
 import { mapGetters } from 'vuex'
-import cmDrag from '@/components/cm-custom/cm-drag.vue'
+import cmDrag from '@/components/cm-module/cm-drag/cm-drag'
 
 export default {
     components: {

+ 6 - 2
pages/user/address/addressManage.vue

@@ -57,19 +57,23 @@
                 {{ buttonText }}
             </button>
         </view>
-        <city-Picker
+        <city-picker
             :themeColor="themeColor"
             ref="mpvueCityPicker"
             :pickerValueDefault="cityPickerValueDefault"
             @onCancel="onCancel"
             @onConfirm="onConfirm"
         >
-        </city-Picker>
+        </city-picker>
     </view>
 </template>
 
 <script>
+import CityPicker from '@/components/mpvue-citypicker/mpvueCityPicker.vue'
 export default {
+    components:{
+        CityPicker
+    },
     data() {
         return {
             buttonText: '保存',

+ 6 - 6
pages/user/order/create-order.vue

@@ -29,12 +29,12 @@
         </view>
     </view>
 </template>
-
+ 
 <script>
-import authorize from '@/common/config/authorize.js'
-import choiceAddress from '@/components/cm-module/creatOrder/address'
-import goodsList from '@/components/cm-module/creatOrder/goodsList'
-import sellerFreight from '@/components/cm-module/creatOrder/sellerFreight'
+import authorize from '@/common/authorize.js'
+import choiceAddress from '@/components/cm-module/createOrder/address'
+import goodsList from '@/components/cm-module/createOrder/goodsList'
+import sellerFreight from '@/components/cm-module/createOrder/sellerFreight'
 export default {
     components: {
         choiceAddress,
@@ -59,7 +59,7 @@ export default {
             addressData: {}, //初始化地址信息
             goodsData: [], //初始化商品信息
             freightData: {}, //邮费数据
-            isIphoneX: this.$store.state.isIphoneX,
+            isIphoneX: this.$store.getters.isIphoneX,
             productsList: [],
             params: {
                 userId: 0

+ 6 - 6
pages/user/order/order-details.vue

@@ -1,13 +1,13 @@
 <template>
     <view class="container details clearfix" :style="{ paddingBottom: isIphoneX ? 130 + 68 + 'rpx' : '130rpx' }">
         <!-- 自定义返回 -->
-        <header-back
+        <header-order
             :systeminfo="systeminfo"
             :navbar-data="nvabarData"
             :headerBtnPosi="headerBtnPosi"
             :isShare="isOrderShare"
         >
-        </header-back>
+        </header-order>
         <view class="container-details" :style="{ paddingTop: navbarHeight + 'px' }">
             <view class="status-text">
                 <view class="view-type">{{ information.status | TextFormat }}</view>
@@ -79,8 +79,8 @@
 </template>
 
 <script>
-import authorize from '@/common/config/authorize.js'
-import headerBack from '@/components/cm-module/headerNavbar/header-back' //自定义导航
+import authorize from '@/common/authorize.js'
+import HeaderOrder from '@/components/cm-module/headerNavbar/header-order' //自定义导航
 import orderAddress from '@/components/cm-module/orderDetails/orderAddress' //地址信息
 import goodsList from '@/components/cm-module/orderDetails/goodsList' //商品列表
 import orderInformation from '@/components/cm-module/orderDetails/orderInformation' //订单信息
@@ -91,7 +91,7 @@ import orderButton from '@/components/cm-module/orderDetails/orderButton' //底
 
 export default {
     components: {
-        headerBack,
+        HeaderOrder,
         orderInformation,
         orderAddress,
         goodsList,
@@ -127,7 +127,7 @@ export default {
             navbarHeight: '',
             headerBtnPosi: this.setHeaderBtnPosi(), //获取设备顶部胶囊高度
             systeminfo: this.setSysteminfo(), //获取设备信息
-            isIphoneX: this.$store.state.isIphoneX,
+            isIphoneX: this.$store.getters.isIphoneX,
             CustomBar: this.CustomBar, // 顶部导航栏高度
             popupShow: false,
             handlerPros: {},

+ 7 - 15
pages/user/order/order-list-retail.vue

@@ -1,7 +1,7 @@
 <template>
     <view class="container" :style="{ paddingTop: navbarHeight + 82 + 'px' }">
         <!-- 自定义返回 -->
-        <header-back
+        <header-order
             :systeminfo="systeminfo"
             :navbar-data="nvabarData"
             :headerBtnPosi="headerBtnPosi"
@@ -9,7 +9,7 @@
             :isUsertype="1"
             @goSearchPath="handlSearchPath"
         >
-        </header-back>
+        </header-order>
         <view class="order-section-top" :style="{ marginTop: navbarHeight + 'px' }">
             <scroll-view scroll-x scroll-with-animation class="tab-view" :scroll-left="scrollLeft">
                 <view
@@ -210,25 +210,17 @@
 </template>
 
 <script>
-import authorize from '@/common/config/authorize.js'
-import headerBack from '@/components/cm-module/headerNavbar/header-back' //自定义导航
-import btSearch from '@/components/uni-search/bt-search.vue' //搜索
-import tuiSkeleton from '@/components/tui-skeleton/tui-skeleton'
-import tuiLoadmore from '@/components/tui-components/loadmore/loadmore'
-import tuiNomore from '@/components/tui-components/nomore/nomore'
+import authorize from '@/common/authorize.js'
+import HeaderOrder from '@/components/cm-module/headerNavbar/header-order' //自定义导航
 import orderButton from '@/components/cm-module/orderDetails/orderListButton' //按钮
-import modalLayer from '@/components/modal-layer'
-import empty from '@/components/empty'
+import modalLayer from '@/components/cm-module/modal-layer/modal-layer'
+import empty from '@/components/cm-module/empty/empty'
 
 export default {
     components: {
-        headerBack,
+        HeaderOrder,
         empty,
-        btSearch,
-        tuiLoadmore,
-        tuiNomore,
         orderButton,
-        tuiSkeleton,
         modalLayer
     },
     data() {

+ 7 - 15
pages/user/order/order-list.vue

@@ -1,13 +1,13 @@
 <template>
     <view class="container" :style="{ paddingTop: navbarHeight + 'px' }">
         <!-- 自定义返回 -->
-        <header-back
+        <header-order
             :systeminfo="systeminfo"
             :navbar-data="nvabarData"
             :headerBtnPosi="headerBtnPosi"
             :isDelete="isDelete"
             @goSearchPath="handlSearchPath"
-        ></header-back>
+        ></header-order>
         <view class="order-section-top" :style="{ marginTop: navbarHeight + 'px' }">
             <scroll-view scroll-x scroll-with-animation class="tab-view" :scroll-left="scrollLeft">
                 <view
@@ -188,25 +188,17 @@
 </template>
 
 <script>
-import authorize from '@/common/config/authorize.js'
-import headerBack from '@/components/cm-module/headerNavbar/header-back' //自定义导航
-import btSearch from '@/components/uni-search/bt-search.vue' //搜索
-import tuiSkeleton from '@/components/tui-skeleton/tui-skeleton'
-import tuiLoadmore from '@/components/tui-components/loadmore/loadmore'
-import tuiNomore from '@/components/tui-components/nomore/nomore'
+import authorize from '@/common/authorize.js'
+import HeaderOrder from '@/components/cm-module/headerNavbar/header-order' //自定义导航
 import orderButton from '@/components/cm-module/orderDetails/orderListButton' //按钮
-import modalLayer from '@/components/modal-layer'
-import empty from '@/components/empty'
+import modalLayer from '@/components/cm-module/modal-layer/modal-layer'
+import empty from '@/components/cm-module/empty/empty'
 
 export default {
     components: {
-        headerBack,
+        HeaderOrder,
         empty,
-        btSearch,
-        tuiLoadmore,
-        tuiNomore,
         orderButton,
-        tuiSkeleton,
         modalLayer
     },
     data() {

+ 1 - 1
pages/user/order/order-logistics.vue

@@ -91,7 +91,7 @@
 </template>
 
 <script>
-const thorui = require('@/components/clipboard/clipboard.thorui.js')
+import thorui from '@/components/clipboard/clipboard.thorui.js'
 export default {
     components: {
         // logisticsRecord,

+ 8 - 4
pages/user/order/order-payment.vue

@@ -1,12 +1,12 @@
 <template>
     <view class="container cashier" :style="{ paddingTop: CustomBar + 'px' }">
-        <ws-custom
+        <header-payment
             :systeminfo="systeminfo"
             :navbar-data="nvabarData"
             :headerBtnPosi="headerBtnPosi"
             :isBackType="true"
             :path="'/pages/user/cart/cart'"
-        ></ws-custom>
+        ></header-payment>
         <template v-if="isPaySwitch">
             <view class="container-cash clearfix">
                 <view class="pay-bring-title">线上支付功能正在维护中,请使用线下转账方式支付订单</view>
@@ -168,7 +168,11 @@
 
 <script>
 import thorui from '@/components/clipboard/clipboard.thorui.js'
+import HeaderPayment from '@/components/cm-module/headerNavbar/header-payment'
 export default {
+    components: {
+        HeaderPayment
+    },
     data() {
         return {
             orderID: '',
@@ -184,11 +188,11 @@ export default {
                 haveBack: true,
                 showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
                 title: '选择支付方式', // 导航栏 中间的标题
-                textLeft: this.$store.state.isIphone
+                textLeft: this.$store.getters.isIphone
             },
             headerBtnPosi: this.setHeaderBtnPosi(), //获取设备顶部胶囊高度
             systeminfo: this.setSysteminfo(), //获取设备信息
-            isIphoneX: this.$store.state.isIphoneX,
+            isIphoneX: this.$store.getters.isIphoneX,
             CustomBar: this.CustomBar, // 顶部导航栏高度
             tabCurrentIndex: 0,
             isShowTip: false,

+ 3 - 9
pages/user/order/search-order.vue

@@ -208,18 +208,12 @@
 </template>
 
 <script>
-import orSearch from '@/components/uni-search/or-search.vue'
-import tuiLoadmore from '@/components/tui-components/loadmore/loadmore'
-import tuiNomore from '@/components/tui-components/nomore/nomore'
 import orderButton from '@/components/cm-module/orderDetails/orderListButton' //按钮
-import modalLayer from '@/components/modal-layer'
-import empty from '@/components/empty'
-import authorize from '@/common/config/authorize.js'
+import modalLayer from '@/components/cm-module/modal-layer/modal-layer'
+import empty from '@/components/cm-module/empty/empty'
+import authorize from '@/common/authorize.js'
 export default {
     components: {
-        orSearch,
-        tuiLoadmore,
-        tuiNomore,
         orderButton,
         empty
     },

+ 7 - 7
pages/user/order/success.vue

@@ -1,13 +1,13 @@
 <template>
     <view class="container cashier">
-        <custom
+        <header-pay
             :systeminfo="systeminfo"
             :navbar-data="nvabarData"
             :headerBtnPosi="headerBtnPosi"
             :isBackType="true"
             :path="'/pages/user/cart/cart'"
         >
-        </custom>
+        </header-pay>
         <view class="container-cash clearfix" :style="{ marginTop: CustomBar + 'px' }">
             <view class="container-wrapper">
                 <view class="cash-icon"> <image :src="StaticUrl + 'icon-pay-fail.png'" mode=""></image> </view>
@@ -34,11 +34,11 @@
 </template>
 
 <script>
-import custom from '@/components/cm-custom/pay-custom' //自定义导航
-import authorize from '@/common/config/authorize.js'
+import HeaderPay from '@/components/cm-module/headerNavbar/header-pay'
+import authorize from '@/common/authorize.js'
 export default {
     components: {
-        custom
+        HeaderPay
     },
     data() {
         return {
@@ -50,11 +50,11 @@ export default {
                 showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
                 showSearch: 0,
                 title: '支付结果', // 导航栏 中间的标题
-                textLeft: this.$store.state.isIphone
+                textLeft: this.$store.getters.isIphone
             },
             headerBtnPosi: this.setHeaderBtnPosi(), //获取设备顶部胶囊高度
             systeminfo: this.setSysteminfo(), //获取设备信息
-            isIphoneX: this.$store.state.isIphoneX,
+            isIphoneX: this.$store.getters.isIphoneX,
             CustomBar: this.CustomBar, // 顶部导航栏高度
             successText: '订单支付失败',
             orderInfo: {}

+ 2 - 2
services/wxLogin.js

@@ -1,5 +1,5 @@
-import store from '@/store/store.js'
-import authorize from '@/common/config/authorize.js'
+import store from '@/store/index.js'
+import authorize from '@/common/authorize.js'
 import ajaxService from '@/services/ajax.service.js'
 import UserService from '@/services/user.service'
 

+ 1 - 5
store/getters.js

@@ -1,15 +1,11 @@
 const getters = {
-    sidebar: state => state.app.sidebar,
     isWxAuthorize: state => state.app.isWxAuthorize,
     hasLogin: state => state.app.hasLogin,
     userInfo: state => state.app.userInfo,
-    wechatUserInfo: state => state.app.wechatUserInfo,
     cartNumber: state => state.app.cartNumber,
     isIphoneX: state => state.app.isIphoneX,
+    isIphone: state => state.app.isIphone,
     isActivity: state => state.app.isActivity,
-    isLoginType: state => state.app.isLoginType,
-    isLoginProductId: state => state.app.isLoginProductId,
-    windowHeight: state => state.app.windowHeight,
 }
 
 export default getters

+ 16 - 114
store/index.js

@@ -1,123 +1,25 @@
 import Vue from 'vue'
 import Vuex from 'vuex'
-import authorize from '../common/config/authorize.js'
-import { formatDate } from '@/common/config/utilsTools.js'
+import getters from './getters'
 
 Vue.use(Vuex)
 
+// https://webpack.js.org/guides/dependency-management/#requirecontext
+const modulesFiles = require.context('./modules', true, /\.js$/)
+
+// you do not need `import app from './modules/app'`
+// it will auto require all vuex module from modules file
+const modules = modulesFiles.keys().reduce((modules, modulePath) => {
+    // set './app.js' => 'app'
+    const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')
+    const value = modulesFiles(modulePath)
+    modules[moduleName] = value.default
+    return modules
+}, {})
+
 const store = new Vuex.Store({
-    state: {
-        isWxAuthorize: false, //是否授权
-        hasLogin: false,
-        userInfo: {}, //登录用户信息
-        wechatUserInfo: {}, //用户微信相关信息
-        cartNumber: 0,
-        isIphoneX: false,
-        isActivity: false,
-        isLoginType: 0,
-        isLoginProductId: 0,
-        windowHeight: ''
-    },
-    mutations: {
-        login(state, provider) { //用户身份 1、协销 2、会员机构 3、供应商 4.普通机构
-            state.hasLogin = true
-            state.userInfo = provider
-            uni.setStorage({ //缓存用户登陆状态
-                key: 'userInfo',
-                data: provider
-            })
-        },
-        logout(state) {
-            state.hasLogin = false
-            state.userInfo = {}
-            uni.removeStorage({
-                key: 'userInfo'
-            })
-            uni.removeStorage({
-                key: 'token'
-            })
-        },
-        wxLogin(state, provider) {
-            state.isWxAuthorize = true
-            // console.log(state.isWxAuthorize)
-            state.wechatUserInfo = provider
-            uni.setStorageSync('_WX_State', true)
-            uni.setStorage({ //缓存用户微信授权信息
-                key: 'wechatUserInfo',
-                data: provider
-            })
-        },
-        updateStatus(state, provider) {
-            let TIME = formatDate()
-            console.log(`${TIME}`, provider)
-            state.userInfo = provider
-            uni.setStorage({ //缓存用户登陆状态
-                key: 'userInfo',
-                data: provider
-            })
-        },
-        updateAllNum(state, num) {
-            if (num >= 100) {
-                uni.setTabBarBadge({
-                    index: 1,
-                    text: '99+'
-                })
-            } else if (num > 0) {
-                uni.setTabBarBadge({
-                    index: 1,
-                    text: String(num)
-                })
-            } else {
-                uni.removeTabBarBadge({
-                    index: 1,
-                })
-            }
-        },
-        setActivity(state, variable) {
-            state.isActivity = variable
-        },
-        setChangeVar(state, variable) {
-            //获取设备信息是否为IphoneX
-            state.isIphoneX = variable
-        },
-        setIsIphone(state, variable) {
-            //获取设备信息是否为IphoneX
-            state.isIphone = variable
-        },
-        setLoginType(state, variable) {
-            //获取设备信息是否为IphoneX
-            state.isLoginType = variable
-            console.log(state.isLoginType)
-        },
-        setLoginProductId(state, variable) {
-            //获取设备信息是否为IphoneX
-            state.isLoginProductId = variable
-            console.log(state.isLoginProductId)
-        },
-        setLoginOrderId(state, variable) {
-            //获取设备信息是否为IphoneX
-            state.isLoginOrderId = variable
-            console.log(state.isLoginOrderId)
-        },
-        setWindowHeight(state, height) {
-            state.windowHeight = height
-            console.log(state.windowHeight)
-        }
-    },
-    actions: {
-        setVariableFun: function(context, vData) {
-            context.commit('setChangeVar', vData)
-        },
-        setIsIphoneFun: function(context, vData) {
-            context.commit('setIsIphone', vData)
-        },
-        setActivityFn: function(context, vData) {
-            context.commit('setActivity', vData)
-        },
-        // setLoginTypeFn:function(context,vData){
-        // 	context.commit('setLoginType',vData)
-        // }
-    }
+    modules,
+    getters
 })
 
 export default store

+ 5 - 11
store/modules/app.js

@@ -1,19 +1,16 @@
-import authorize from '@/common/config/authorize.js'
-import { formatDate } from '@/common/config/utilsTools.js'
+import authorize from '@/common/authorize.js'
+import { formatDate } from '@/common/utilsTools.js'
 
 const state = {
     isWxAuthorize: false, //是否授权
     hasLogin: false,
     userInfo: {}, //登录用户信息
-    wechatUserInfo: {}, //用户微信相关信息
     cartNumber: 0,
     isIphoneX: false,
-    isActivity: false,
-    isLoginType: 0,
-    isLoginProductId: 0,
-    windowHeight: ''
+    isIphone: false,
+    isActivity: false
 }
-const mutations = {
+const mutations = { 
     login(state, provider) { //用户身份 1、协销 2、会员机构 3、供应商 4.普通机构
         state.hasLogin = true
         state.userInfo = provider
@@ -109,9 +106,6 @@ const actions = {
     setActivityFn: function(context, vData) {
         context.commit('setActivity', vData)
     },
-    // setLoginTypeFn:function(context,vData){
-    // 	context.commit('setLoginType',vData)
-    // }
 }
 export default {
     namespaced: true,

+ 0 - 25
store/store.js

@@ -1,25 +0,0 @@
-import Vue from 'vue'
-import Vuex from 'vuex'
-import getters from './getters'
-
-Vue.use(Vuex)
-
-// https://webpack.js.org/guides/dependency-management/#requirecontext
-const modulesFiles = require.context('./modules', true, /\.js$/)
-
-// you do not need `import app from './modules/app'`
-// it will auto require all vuex module from modules file
-const modules = modulesFiles.keys().reduce((modules, modulePath) => {
-    // set './app.js' => 'app'
-    const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')
-    const value = modulesFiles(modulePath)
-    modules[moduleName] = value.default
-    return modules
-}, {})
-
-const store = new Vuex.Store({
-    modules,
-    getters
-})
-
-export default store