whx 2 týždňov pred
rodič
commit
5c11fba7a7
100 zmenil súbory, kde vykonal 1469 pridanie a 588 odobranie
  1. 13 3
      virgo.wzfrontend/shop/shop-mobile/src/App.vue
  2. 62 55
      virgo.wzfrontend/shop/shop-mobile/src/store/modules/app.js
  3. 30 30
      virgo.wzfrontend/shop/shop-mobile/src/utils/storage.js
  4. 0 1
      virgo.wzfrontend/shop/shop-mobile/src/view/goods/goods.js
  5. 0 4
      virgo.wzfrontend/shop/shop-mobile/src/view/goods/index.vue
  6. 6 6
      virgo.wzfrontend/shop/shop-mobile/src/view/index/index.vue
  7. 7 1
      virgo.wzfrontend/shop/shop-mobile/src/view/index/welcome.js
  8. 1 1
      virgo.wzfrontend/shop/shop-uniapp/common/http.interceptor.js
  9. 6 6
      virgo.wzfrontend/shop/shop-uniapp/pages/shop/index.vue
  10. 1 1
      virgo.wzfrontend/workark_wx/components/common/upload.vue
  11. 1 1
      virgo.wzfrontend/workark_wx/config/index.js
  12. 8 8
      virgo.wzfrontend/workark_wx/main.js
  13. 14 0
      virgo.wzfrontend/workark_wx/pages.json
  14. 1 1
      virgo.wzfrontend/workark_wx/pages/index/index.vue
  15. 1 1
      virgo.wzfrontend/workark_wx/pages/message/message.vue
  16. 7 7
      virgo.wzfrontend/workark_wx/pages/my/my.vue
  17. 2 2
      virgo.wzfrontend/workark_wx/pages/workark/workark.vue
  18. 122 0
      virgo.wzfrontend/workark_wx/request/api/shop.js
  19. 1 1
      virgo.wzfrontend/workark_wx/subPages/indexPage/contractList/contractList.vue
  20. 1 1
      virgo.wzfrontend/workark_wx/subPages/indexPage/invoiceList/invoiceList.vue
  21. 1 1
      virgo.wzfrontend/workark_wx/subPages/indexPage/noPermission/noPermission.vue
  22. 2 2
      virgo.wzfrontend/workark_wx/subPages/indexPage/orderDetail/orderDetail.vue
  23. 4 3
      virgo.wzfrontend/workark_wx/subPages/indexPage/orderList/orderList.vue
  24. 1 1
      virgo.wzfrontend/workark_wx/subPages/myPage/chatList/chatList.vue
  25. 311 0
      virgo.wzfrontend/workark_wx/subPages/shopPage/cart/cart.vue
  26. 468 0
      virgo.wzfrontend/workark_wx/subPages/shopPage/good/good.vue
  27. 15 4
      virgo.wzfrontend/workark_wx/subPages/shopPage/webview/webview.vue
  28. 13 13
      virgo.wzfrontend/workark_wx/subPages/workarkPage/components/sureOrder.vue
  29. 4 4
      virgo.wzfrontend/workark_wx/subPages/workarkPage/coupon/coupon.vue
  30. 11 10
      virgo.wzfrontend/workark_wx/subPages/workarkPage/workarkDetail/workarkDetail.vue
  31. 286 361
      virgo.wzfrontend/workark_wx/uni_modules/uv-button/components/uv-button/uv-button.vue
  32. 2 2
      virgo.wzfrontend/workark_wx/uni_modules/uv-upload/components/uv-upload/uv-upload.vue
  33. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map
  34. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
  35. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/components/login/imageCode.js.map
  36. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map
  37. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/login.js.map
  38. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/message/message.js.map
  39. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/my/my.js.map
  40. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/shop/shop.js.map
  41. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/workark/workark.js.map
  42. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/chatPage/chat/chat.js.map
  43. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/indexPage/noPermission/noPermission.js.map
  44. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/indexPage/orderDetail/orderDetail.js.map
  45. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/indexPage/orderList/orderList.js.map
  46. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/myPage/changeOrganization/changeOrganization.js.map
  47. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/myPage/chatList/chatList.js.map
  48. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/myPage/components/uni-mall-head/uni-mall-head.js.map
  49. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/myPage/components/uni-mall-list/uni-mall-list.js.map
  50. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/myPage/download/download.js.map
  51. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/myPage/myDetail/myDetail.js.map
  52. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/myPage/serveChat/serveChat.js.map
  53. 1 0
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/shopPage/cart/cart.js.map
  54. 1 0
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/shopPage/good/good.js.map
  55. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/shopPage/payment/payment.js.map
  56. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/shopPage/webview/webview.js.map
  57. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/workarkPage/components/sureOrder.js.map
  58. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/workarkPage/coupon/coupon.js.map
  59. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/workarkPage/paymentStatus/paymentStatus.js.map
  60. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/workarkPage/workarkDetail/workarkDetail.js.map
  61. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/kevy-result-page/components/kevy-result-page/kevy-result-page.js.map
  62. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-badge/components/uv-badge/uv-badge.js.map
  63. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-button/components/uv-button/uv-button.js.map
  64. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-cell/components/uv-cell-group/uv-cell-group.js.map
  65. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-cell/components/uv-cell/uv-cell.js.map
  66. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-checkbox/components/uv-checkbox-group/uv-checkbox-group.js.map
  67. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-checkbox/components/uv-checkbox/uv-checkbox.js.map
  68. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-count-down/components/uv-count-down/uv-count-down.js.map
  69. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-divider/components/uv-divider/uv-divider.js.map
  70. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-empty/components/uv-empty/uv-empty.js.map
  71. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-icon/components/uv-icon/uv-icon.js.map
  72. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-image/components/uv-image/uv-image.js.map
  73. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-line/components/uv-line/uv-line.js.map
  74. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-link/components/uv-link/uv-link.js.map
  75. 1 0
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-list/components/uv-list-item/uv-list-item.js.map
  76. 1 0
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-list/components/uv-list/uv-list.js.map
  77. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-loading-icon/components/uv-loading-icon/uv-loading-icon.js.map
  78. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-modal/components/uv-modal/uv-modal.js.map
  79. 1 0
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-navbar/components/uv-navbar/uv-navbar.js.map
  80. 1 0
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-number-box/components/uv-number-box/uv-number-box.js.map
  81. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-overlay/components/uv-overlay/uv-overlay.js.map
  82. 1 0
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-parse/components/uv-parse/node/node.js.map
  83. 1 0
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-parse/components/uv-parse/uv-parse.js.map
  84. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-popup/components/uv-popup/uv-popup.js.map
  85. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-radio/components/uv-radio-group/uv-radio-group.js.map
  86. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-radio/components/uv-radio/uv-radio.js.map
  87. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-row/components/uv-col/uv-col.js.map
  88. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-row/components/uv-row/uv-row.js.map
  89. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-safe-bottom/components/uv-safe-bottom/uv-safe-bottom.js.map
  90. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-status-bar/components/uv-status-bar/uv-status-bar.js.map
  91. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-steps/components/uv-steps-item/uv-steps-item.js.map
  92. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-steps/components/uv-steps/uv-steps.js.map
  93. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-sticky/components/uv-sticky/uv-sticky.js.map
  94. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-swiper/components/uv-swiper-indicator/uv-swiper-indicator.js.map
  95. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-swiper/components/uv-swiper/uv-swiper.js.map
  96. 1 0
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-switch/components/uv-switch/uv-switch.js.map
  97. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-tabs/components/uv-tabs/uv-tabs.js.map
  98. 1 0
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-tags/components/uv-tags/uv-tags.js.map
  99. 1 1
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-text/components/uv-text/uv-text.js.map
  100. 0 0
      virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-upload/components/uv-preview-video/uv-preview-video.js.map

+ 13 - 3
virgo.wzfrontend/shop/shop-mobile/src/App.vue

@@ -1,6 +1,6 @@
 <template>
 	<div id="app">
-		<router-view />
+		<router-view v-if="isShow" ref="routerView" />
 	</div>
 </template>
 <script>
@@ -8,19 +8,29 @@
 	import userApi from '@/api/user'
 	import wechatApi from '@/api/wechat'
 	export default {
+		data() {
+			return {
+				isShow: false
+			}
+		},
 		watch: {
-			$route(newValue, oldValue) {
+			$route() {
 				this.$wxEnv(() => {
 					let token = this.$route.query.token;
-					let code = this.$route.query.code;
+					let time = this.$route.query.time;
 					store.dispatch('app/toggleToken', token);
 					if (token) {
+						if (store.state.app.user.mobile) return;
 						userApi.getUserInfo().then(response => {
 							store.dispatch('app/toggleUser', response.data);
 						})
 					} else {
 						store.dispatch('app/toggleUser', {})
 					}
+					if (this.$refs.routerView) alert(this.$refs.routerView.init)
+					this.isShow = true;
+				}, () => {
+					this.isShow = true;
 				})
 			}
 		},

+ 62 - 55
virgo.wzfrontend/shop/shop-mobile/src/store/modules/app.js

@@ -1,55 +1,62 @@
-import Cookies from 'js-cookie'
-import storage from '@/utils/storage'
-
-const state = {
-    device: 'desktop',
-    language: Cookies.get('language') || 'zh',
-    size: Cookies.get('size') || 'medium',
-    category:[],
-    user:{},
-    token:''
-}
-
-
-const mutations = {
-    TOGGLE_DEVICE: (state, device) => {
-        state.device = device
-    },
-    TOGGLE_CATEGORY: (state, category) => {
-        state.category = category
-    },
-    TOGGLE_USER: (state, user) => {
-        state.user = user
-        storage.setUser(user)
-
-    },
-    TOGGLE_TOKEN: (state, token) => {
-        state.token = token
-        storage.setToken(token)
-
-    }
-}
-
-
-const actions = {
-    toggleDevice({ commit }, device) {
-        commit('TOGGLE_DEVICE', device)
-    },
-    toggleCategory({ commit }, category) {
-        commit('TOGGLE_CATEGORY', category)
-    },
-    toggleUser({ commit }, user) {
-        user.genderStr = user.gender?('male' === user.gender?'男':'女'):'请选择'
-        commit('TOGGLE_USER', user)
-    },
-    toggleToken({ commit }, token) {
-        commit('TOGGLE_TOKEN', token)
-    },
-}
-
-export default {
-    namespaced: true,
-    state,
-    mutations,
-    actions
-}
+import Cookies from 'js-cookie'
+import storage from '@/utils/storage'
+
+const state = {
+	device: 'desktop',
+	language: Cookies.get('language') || 'zh',
+	size: Cookies.get('size') || 'medium',
+	category: [],
+	user: {},
+	token: ''
+}
+
+
+const mutations = {
+	TOGGLE_DEVICE: (state, device) => {
+		state.device = device
+	},
+	TOGGLE_CATEGORY: (state, category) => {
+		state.category = category
+	},
+	TOGGLE_USER: (state, user) => {
+		state.user = user
+		storage.setUser(user)
+
+	},
+	TOGGLE_TOKEN: (state, token) => {
+		state.token = token
+		storage.setToken(token)
+	}
+}
+
+
+const actions = {
+	toggleDevice({
+		commit
+	}, device) {
+		commit('TOGGLE_DEVICE', device)
+	},
+	toggleCategory({
+		commit
+	}, category) {
+		commit('TOGGLE_CATEGORY', category)
+	},
+	toggleUser({
+		commit
+	}, user) {
+		user.genderStr = user.gender ? ('male' === user.gender ? '男' : '女') : '请选择'
+		commit('TOGGLE_USER', user)
+	},
+	toggleToken({
+		commit
+	}, token) {
+		commit('TOGGLE_TOKEN', token)
+	},
+}
+
+export default {
+	namespaced: true,
+	state,
+	mutations,
+	actions
+}

+ 30 - 30
virgo.wzfrontend/shop/shop-mobile/src/utils/storage.js

@@ -1,30 +1,30 @@
-// import Cookies from 'js-cookie'
-
-const COOKIE_KEY_PRE="lite-shop-mobile-"
-const tokenKey = COOKIE_KEY_PRE+"token"
-export default {
-  getToken:function(){
-    return localStorage.getItem(tokenKey)
-  },
-  setToken:function(token){
-    localStorage.setItem(tokenKey,token)
-  },
-  setUser:function(user){
-    this.set('user',JSON.stringify(user))
-
-  },
-  getUser:function(){
-    const user  = JSON.parse(this.get('user'))
-    return user
-  },
-  removeToken:function(){
-    localStorage.removeItem(tokenKey)
-  },
-  set:function(key,value){
-    localStorage.setItem(COOKIE_KEY_PRE+key,value)
-  },
-  get:function(key){
-    return localStorage.getItem(COOKIE_KEY_PRE+key)
-  }
-
-}
+// import Cookies from 'js-cookie'
+
+const COOKIE_KEY_PRE = "lite-shop-mobile-"
+const tokenKey = COOKIE_KEY_PRE + "token"
+export default {
+	getToken: function() {
+		return localStorage.getItem(tokenKey)
+	},
+	setToken: function(token) {
+		localStorage.setItem(tokenKey, token)
+	},
+	setUser: function(user) {
+		this.set('user', JSON.stringify(user))
+
+	},
+	getUser: function() {
+		const user = JSON.parse(this.get('user'))
+		return user
+	},
+	removeToken: function() {
+		localStorage.removeItem(tokenKey)
+	},
+	set: function(key, value) {
+		localStorage.setItem(COOKIE_KEY_PRE + key, value)
+	},
+	get: function(key) {
+		return localStorage.getItem(COOKIE_KEY_PRE + key)
+	}
+
+}

+ 0 - 1
virgo.wzfrontend/shop/shop-mobile/src/view/goods/goods.js

@@ -170,7 +170,6 @@ export default {
 				this.showSku = false
 				this.cartCount += response.data
 			})
-
 		}
 	}
 };

+ 0 - 4
virgo.wzfrontend/shop/shop-mobile/src/view/goods/index.vue

@@ -5,7 +5,6 @@
 				<img :src="thumb">
 			</van-swipe-item>
 		</van-swipe>
-
 		<van-cell-group>
 			<van-cell>
 				<div class="goods-title">{{ goods.name }}</div>
@@ -17,7 +16,6 @@
 				<van-col span="14">剩余:{{ goods.stock }}</van-col>
 			</van-cell>
 		</van-cell-group>
-
 		<!--<van-cell-group class="goods-cell-group">-->
 		<!--<van-cell value="进入店铺" icon="shop-o" is-link @click="sorry">-->
 		<!--<template slot="title">-->
@@ -27,7 +25,6 @@
 		<!--</van-cell>-->
 		<!--s-->
 		<!--</van-cell-group>-->
-
 		<van-cell-group class="goods-cell-group">
 			<van-cell title="查看商品评论" is-link @click="sorry" />
 		</van-cell-group>
@@ -42,7 +39,6 @@
 		<van-sku v-model="showSku" :sku="sku" :goods="goods" :goods-id="goods.id" :hide-stock="sku.hide_stock"
 			@buy-clicked="onBuyClicked" @add-cart="onAddCartClicked" />
 	</div>
-
 	<div class="offline" v-else>
 		<p style="text-align: center;color:lightgray">
 			<van-icon name="warning-o" style="text-align: center" size="3rem" /><br>

+ 6 - 6
virgo.wzfrontend/shop/shop-mobile/src/view/index/index.vue

@@ -1,9 +1,9 @@
 <template>
-	<div class="index">
-		<van-swipe :autoplay="3000" style="height: 200px;">
-		    <van-swipe-item v-for="(topic, index) in topicList" :key="index">
-		       <van-image height="100%" @click="toTopic(topic.id)" :src="topic.img"></van-image>
-		    </van-swipe-item>
+	<div class="index">
+		<van-swipe :autoplay="3000" style="height: 200px;">
+			<van-swipe-item v-for="(topic, index) in topicList" :key="index">
+				<van-image height="100%" @click="toTopic(topic.id)" :src="topic.img"></van-image>
+			</van-swipe-item>
 		</van-swipe>
 		<van-panel title="热门推荐">
 			<van-card v-for="(goods,index) in hotList" :key="index" :price="formatPrice(goods.price)"
@@ -18,7 +18,7 @@
 	</div>
 </template>
 
-<script src="./welcome.js"></script>
+<script src="./welcome.js"></script>
 
 <style lang="less">
 	.index {

+ 7 - 1
virgo.wzfrontend/shop/shop-mobile/src/view/index/welcome.js

@@ -196,6 +196,12 @@ export default {
 
 			})
 		}
-
+	},
+	watch: {
+		$route() {
+			this.$wxEnv(() => {
+				this.init();
+			})
+		}
 	}
 };

+ 1 - 1
virgo.wzfrontend/shop/shop-uniapp/common/http.interceptor.js

@@ -40,7 +40,7 @@ const install = (Vue, vm) => {
 	Vue.prototype.$u.http.interceptor.response = (res) => {
 		// 如果把originalData设置为了true,这里得到将会是服务器返回的所有的原始数据
 		// 判断可能变成了res.statueCode,或者res.data.code之类的,请打印查看结果
-		if (res.code == 20000) {
+		if (res.code == 200) {
 			// 如果把originalData设置为了true,这里return回什么,this.$u.post的then回调中就会得到什么
 			return res.data;
 		} else {

+ 6 - 6
virgo.wzfrontend/shop/shop-uniapp/pages/shop/index.vue

@@ -131,12 +131,12 @@
 				// uni.navigateTo({
 				// 	url: '/pages/goods/goods?id='+id,
 				// })
-				// this.$u.route({
-				// 	url: '/pages/goods/goods',
-				// 	params: {
-				// 		id: id
-				// 	}
-				// })
+				this.$u.route({
+					url: '/pages/goods/goods',
+					params: {
+						id: id
+					}
+				})
 			},
 			formatPrice(price) {
 				return (price / 100).toFixed(2);

+ 1 - 1
virgo.wzfrontend/workark_wx/components/common/upload.vue

@@ -2,7 +2,7 @@
 	<view class="upload-index">
 		<uv-upload ref="update" :accept="accept" :fileList="fileList" name="1" multiple
 			:maxCount="type === 'insert' ? 5 : list.length" :deletable="type === 'insert'" @afterRead="afterRead"
-			@delete="deletePic" @clickPreview="clickFile" width="160" height="160">
+			@delete="deletePic" @clickPreview="clickFile" width="80" height="80">
 		</uv-upload>
 	</view>
 </template>

+ 1 - 1
virgo.wzfrontend/workark_wx/config/index.js

@@ -1,5 +1,5 @@
 export default {
 	baseUrl: 'https://www.workark.com',
 	socketURL: 'wss://www.workark.com/im/im',
-	webviewUrl: 'http://localhost:8080/#'
+	webviewUrl: 'http://192.168.0.17:8080/#'
 }

+ 8 - 8
virgo.wzfrontend/workark_wx/main.js

@@ -3,13 +3,7 @@ import Vue from 'vue'
 import store from './store'
 import uvUI from '@/uni_modules/uv-ui-tools'
 Vue.use(uvUI);
-uni.$uv.setConfig({
-	// 修改$uv.config对象的属性
-	config: {
-		// 修改默认单位为rpx,相当于执行 uni.$uv.config.unit = 'rpx'
-		unit: 'rpx'
-	}
-})
+
 Vue.prototype.$store = store;
 
 import chat from './uitls/chat.js'
@@ -27,6 +21,7 @@ Vue.prototype.$toast = msg => {
 		icon: "none"
 	})
 };
+
 Vue.prototype.$navigateTo = (url) => {
 	if (!uni.getStorageSync('token') && url != '/pages/login/login') {
 		url = '/pages/login/login';
@@ -34,7 +29,8 @@ Vue.prototype.$navigateTo = (url) => {
 	uni.navigateTo({
 		url: url
 	})
-}
+};
+
 Vue.prototype.initBadge = () => {
 	if (uni.getStorageSync('chatBadge')) {
 		let badge = uni.getStorageSync('chatBadge');
@@ -49,6 +45,10 @@ Vue.prototype.initBadge = () => {
 			})
 		}
 	}
+};
+import config from "@/config";
+Vue.prototype.shopImage = (img) => {
+	return config.baseUrl + '/prod-api/mobile-api/file/getImgStream?idFile=' + img;
 }
 Vue.config.productionTip = false;
 App.mpType = 'app'

+ 14 - 0
virgo.wzfrontend/workark_wx/pages.json

@@ -78,6 +78,20 @@
 			"style": {
 				"navigationBarTitleText": "收银台"
 			}
+		},
+		{
+			"path" : "good/good",
+			"style" : 
+			{
+				"navigationBarTitleText" : "商品详情"
+			}
+		},
+		{
+			"path" : "cart/cart",
+			"style" : 
+			{
+				"navigationBarTitleText" : "购物车"
+			}
 		}]
 	}, {
 		"root": "subPages/indexPage",

+ 1 - 1
virgo.wzfrontend/workark_wx/pages/index/index.vue

@@ -17,7 +17,7 @@
 						<view class="content-item" v-for="(serve,i) in item.children" :key="serve.id"
 							@tap="clickItem(serve)">
 							<view class="content-icon" :style="'background: '+serve.iconColor+';'">
-								<uv-icon :name="serve.iconName" custom-prefix="custom-icon" color="#fff" size="60">
+								<uv-icon :name="serve.iconName" custom-prefix="custom-icon" color="#fff" size="30">
 								</uv-icon>
 							</view>
 							<view class="content-label">{{serve.name}}</view>

+ 1 - 1
virgo.wzfrontend/workark_wx/pages/message/message.vue

@@ -2,7 +2,7 @@
 	<view class="message">
 		<view class="message-empty" v-if="chatList.length === 0">
 			<uv-empty icon="https://file-node.oss-cn-shanghai.aliyuncs.com/youji/fa57e25b38c442ebb0ba023cace796bb"
-				:isImg="true" textSize="28" width="360" :text="option.tip">
+				:isImg="true" textSize="14" width="180" :text="option.tip">
 				<view class="message-button-box">
 					<uv-button type="primary" :text="option.btnText" size="small" v-if="option.btnText"
 						@tap="$navigateTo('/pages/login/login')">

+ 7 - 7
virgo.wzfrontend/workark_wx/pages/my/my.vue

@@ -14,35 +14,35 @@
 				<view class="my-list-box">
 					<view class="my-item" @tap="$navigateTo('/subPages/shopPage/webview/webview?url=/order')">
 						<view class="my-icon bg3">
-							<uv-icon name="home-fill" color="#fff" size="56"></uv-icon>
+							<uv-icon name="home-fill" color="#fff" size="28"></uv-icon>
 						</view>
 						<view class="item-content">
 							商城订单
 						</view>
 						<view class="my-forward">
-							<uv-icon name="arrow-right" color="#c1c0c8" size="32"></uv-icon>
+							<uv-icon name="arrow-right" color="#c1c0c8" size="16"></uv-icon>
 						</view>
 					</view>
 					<view class="my-item" @tap="$navigateTo('/subPages/myPage/organization/organization')">
 						<view class="my-icon bg3">
-							<uv-icon name="home-fill" color="#fff" size="56"></uv-icon>
+							<uv-icon name="home-fill" color="#fff" size="28"></uv-icon>
 						</view>
 						<view class="item-content">
 							我的公司
 						</view>
 						<view class="my-forward">
-							<uv-icon name="arrow-right" color="#c1c0c8" size="32"></uv-icon>
+							<uv-icon name="arrow-right" color="#c1c0c8" size="16"></uv-icon>
 						</view>
 					</view>
 					<view class="my-item" @tap="$navigateTo('/subPages/myPage/download/download')">
 						<view class="my-icon bg5">
-							<uv-icon name="grid-fill" color="#fff" size="56"></uv-icon>
+							<uv-icon name="grid-fill" color="#fff" size="28"></uv-icon>
 						</view>
 						<view class="item-content">
 							我的下载
 						</view>
 						<view class="my-forward">
-							<uv-icon name="arrow-right" color="#c1c0c8" size="32"></uv-icon>
+							<uv-icon name="arrow-right" color="#c1c0c8" size="16"></uv-icon>
 						</view>
 					</view>
 				</view>
@@ -55,7 +55,7 @@
 						zIndex:99
 					}">
 				</uv-badge>
-				<uv-icon name="server-fill" color="#fff" size="60" labelPos="bottom" labelSize="20">
+				<uv-icon name="server-fill" color="#fff" size="30" labelPos="bottom" labelSize="10">
 				</uv-icon>
 			</view>
 		</view>

+ 2 - 2
virgo.wzfrontend/workark_wx/pages/workark/workark.vue

@@ -13,11 +13,11 @@
 								</uv-image>
 							</view>
 							<view class="product-content">
-								<uv-text :lines="2" :text="serve.name" size="32" :customStyle="{
+								<uv-text :lines="2" :text="serve.name" size="16" :customStyle="{
 									fontWeight: 600,
 									marginBottom: '10rpx'
 								}"></uv-text>
-								<uv-text :lines="2" :text="serve.remark" type="tips" size="26"></uv-text>
+								<uv-text :lines="2" :text="serve.remark" type="tips" size="13"></uv-text>
 							</view>
 						</view>
 					</view>

+ 122 - 0
virgo.wzfrontend/workark_wx/request/api/shop.js

@@ -2,6 +2,128 @@ import {
 	request
 } from '@/request/request.js';
 const baseUrl = '/prod-api/mobile-api';
+/* 
+ * 获取tab List
+ * 
+ * 
+ */
+export function getCategoryList() {
+	return request({
+		url: `${baseUrl}/category/list`,
+		method: 'get'
+	})
+}
+/* 
+ * 获取banner
+ * 
+ * 
+ */
+export function getTopicList() {
+	return request({
+		url: `${baseUrl}/topic/list`,
+		method: 'get'
+	})
+}
+/* 
+ * 获取热门
+ * 
+ * 
+ */
+export function getSearchHot() {
+	return request({
+		url: `${baseUrl}/goods/searchHot`,
+		method: 'get'
+	})
+}
+/* 
+ * 获取推荐
+ * 
+ * 
+ */
+export function getSearchNew() {
+	return request({
+		url: `${baseUrl}/goods/searchNew`,
+		method: 'get'
+	})
+}
+/* 
+ * 获取商品详情
+ * 
+ * 
+ */
+export function getGoods(id) {
+	return request({
+		url: `${baseUrl}/goods/${id}`,
+		method: 'get'
+	})
+}
+/* 
+ * 喜欢
+ * 
+ * 
+ */
+export function like(id) {
+	return request({
+		url: `${baseUrl}/user/favorite/add/${id}`,
+		method: 'post'
+	})
+}
+/* 
+ * 取消喜欢
+ * 
+ * 
+ */
+export function noLisk(id) {
+	return request({
+		url: `${baseUrl}/user/favorite/dislike/${id}`,
+		method: 'post'
+	})
+}
+/* 
+ * 加入购物车
+ * 
+ * 
+ */
+export function addCart(data) {
+	return request({
+		url: `${baseUrl}/user/cart/add/`,
+		method: 'post',
+		data: data
+	})
+}
+/* 
+ * 获取购物车数量
+ * 
+ * 
+ */
+export function getCartCount() {
+	return request({
+		url: `${baseUrl}/user/cart/count`,
+		method: 'get'
+	})
+}
+/* 
+ * 获取购物车数据
+ * 
+ * 
+ */
+export function getCartData() {
+	return request({
+		url: `${baseUrl}/user/cart/queryByUser`,
+		method: 'get'
+	})
+}
+/* 
+ * 追加数量
+ * 
+ * 
+ */
+export function addGoodCount(id, count) {
+	return request({
+		url: `${baseUrl}/user/cart/update/${id}/${count}`,
+		method: 'post'
+	})
+}
 /* 
  * 获取订单状态
  * 

+ 1 - 1
virgo.wzfrontend/workark_wx/subPages/indexPage/contractList/contractList.vue

@@ -30,7 +30,7 @@
 						</view>
 					</view>
 					<view class="icon">
-						<uni-icons custom-prefix="iconfont" :type="menu.iconClass" color="#08979c" size="30">
+						<uni-icons custom-prefix="iconfont" :type="menu.iconClass" color="#08979c" size="15">
 						</uni-icons>
 					</view>
 				</view>

+ 1 - 1
virgo.wzfrontend/workark_wx/subPages/indexPage/invoiceList/invoiceList.vue

@@ -29,7 +29,7 @@
 						</view>
 					</view>
 					<view class="icon">
-						<uni-icons custom-prefix="iconfont" :type="menu.iconClass" color="#08979c" size="30">
+						<uni-icons custom-prefix="iconfont" :type="menu.iconClass" color="#08979c" size="15">
 						</uni-icons>
 					</view>
 				</view>

+ 1 - 1
virgo.wzfrontend/workark_wx/subPages/indexPage/noPermission/noPermission.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="no-permission">
 		<uv-empty icon="https://file-node.oss-cn-shanghai.aliyuncs.com/youji/fa57e25b38c442ebb0ba023cace796bb"
-			:isImg="true" textSize="28" width="360" text="暂无权限访问">
+			:isImg="true" textSize="14" width="180" text="暂无权限访问">
 		</uv-empty>
 	</view>
 </template>

+ 2 - 2
virgo.wzfrontend/workark_wx/subPages/indexPage/orderDetail/orderDetail.vue

@@ -35,7 +35,7 @@
 			</view>
 			<view class="detail-box" v-if="orderData.contractId">
 				<view class="sub-title file-box">
-					<uni-icons type="map-filled" class="inherit-icons" size="24" color="#08979c"></uni-icons>
+					<uni-icons type="map-filled" class="inherit-icons" size="12" color="#08979c"></uni-icons>
 					<text class="sub-label">订单合同</text>
 				</view>
 				<view class="other">
@@ -65,7 +65,7 @@
 			</view>
 			<view class="detail-box" v-if="contractProcessList.length > 0">
 				<view class="sub-title file-box">
-					<uni-icons type="map-filled" class="inherit-icons" size="24" color="#08979c"></uni-icons>
+					<uni-icons type="map-filled" class="inherit-icons" size="12" color="#08979c"></uni-icons>
 					<text class="sub-label">订单过程</text>
 				</view>
 				<view class="other process-box">

+ 4 - 3
virgo.wzfrontend/workark_wx/subPages/indexPage/orderList/orderList.vue

@@ -2,9 +2,10 @@
 	<view class="order-list">
 		<z-paging ref="paging" v-model="dataList" @query="queryList">
 			<template #top>
-				<uv-tabs :list="list" @change="changeTab" lineWidth="40" lineHeight="6" :customStyle="{
+				<uv-tabs :list="list" @change="changeTab" :customStyle="{
 					background:'#fff'
-				}" :scrollable="false" v-if="list.length === 2"></uv-tabs>
+				}" :scrollable="false" v-if="list.length === 2">
+				</uv-tabs>
 			</template>
 			<view class="common-list">
 				<view class="common-item" v-for="(item,index) in dataList" :key="item.id"
@@ -34,7 +35,7 @@
 						</view>
 					</view>
 					<view class="icon" :style="'background: '+iconColor+';'">
-						<uv-icon :name="iconName" custom-prefix="custom-icon" color="#fff" size="40">
+						<uv-icon :name="iconName" custom-prefix="custom-icon" color="#fff" size="20">
 						</uv-icon>
 					</view>
 				</view>

+ 1 - 1
virgo.wzfrontend/workark_wx/subPages/myPage/chatList/chatList.vue

@@ -2,7 +2,7 @@
 	<view class="message">
 		<view class="message-empty" v-if="chatList.length === 0">
 			<uv-empty icon="https://file-node.oss-cn-shanghai.aliyuncs.com/youji/fa57e25b38c442ebb0ba023cace796bb"
-				:isImg="true" textSize="28" width="360" :text="option.tip">
+				:isImg="true" textSize="14" width="180" :text="option.tip">
 				<view class="message-button-box">
 					<uv-button type="primary" :text="option.btnText" size="small" v-if="option.btnText"
 						@tap="$navigateTo('/pages/login/login')">

+ 311 - 0
virgo.wzfrontend/workark_wx/subPages/shopPage/cart/cart.vue

@@ -0,0 +1,311 @@
+<template>
+	<view class="wrap">
+		<view class="no-data" v-if="cartList.length ===0 ">
+			<uv-empty icon="https://file-node.oss-cn-shanghai.aliyuncs.com/youji/fa57e25b38c442ebb0ba023cace796bb"
+				:isImg="true" textSize="14" width="180" text="购物车还是空的">
+			</uv-empty>
+		</view>
+		<uv-list :customStyle="{'margin-top':'30rpx'}" v-else>
+			<uv-list-item v-for="(item,index) in cartList" :key="item.id" border>
+				<template #body>
+					<view class="gl-item">
+						<view class="checkbox" :class="{
+							checked:item.checked
+						}" @tap="changeCheckBox(item)">
+							<uv-icon name="checkmark" color="#fff"></uv-icon>
+						</view>
+						<view class="gl-img">
+							<uv-image width="170rpx" height="170rpx" :src="item.thumb">
+							</uv-image>
+						</view>
+						<view class="gl-content">
+							<view class="gl-name">{{item.title}}</view>
+							<view class="gl-descript">{{item.goods.descript}}</view>
+							<view class="gl-price">
+								<uv-row>
+									<uv-col :span="6">
+										¥{{formatPrice(item.goods.price)}}
+									</uv-col>
+									<uv-col :span="6" v-if="rightText=='编辑'">
+										<uv-number-box v-model="item.count" :min="1" :max="item.goods.stock"
+											@change="val=>countChange(item,val)">
+										</uv-number-box>
+									</uv-col>
+								</uv-row>
+							</view>
+						</view>
+					</view>
+				</template>
+			</uv-list-item>
+		</uv-list>
+		<view class="navigation" v-if="cartList.length>0">
+			<view class="left">
+				<view class="item">
+					<view class="checkbox" :class="{
+						checked:checkedAll
+					}" @click="checkAll">
+						<uv-icon name="checkmark" color="#fff"></uv-icon>
+					</view>
+				</view>
+				<view class="item total-price" v-if="rightText=='编辑'">
+					合计: ¥{{formatPrice(totalPrice)}}
+				</view>
+			</view>
+			<view class="right">
+				<view class="link-text" @click="onClickRight">
+					{{rightText}}
+				</view>
+				<uv-button type="warning" v-if="rightText =='完成'" @click="addFav" :customStyle="{
+					'margin-right':'10rpx'
+				}">
+					移入收藏
+				</uv-button>
+				<uv-button type="error" @click="submit">{{rightText=='编辑'?'结算':'删除'}}</uv-button>
+			</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	import {
+		getCartData,
+		addGoodCount,
+		like
+	} from '@/request/api/shop.js'
+	export default {
+		data() {
+			return {
+				activeFooter: 2,
+				checkedCartItem: [], //当前选中的购物车项目id
+				allCartItem: [], // 用户所有的购物车项目id列表
+				cartList: [],
+				checkedAll: true,
+				showEdit: false,
+				rightText: '编辑'
+			}
+		},
+		computed: {
+			totalPrice() {
+				return this.cartList.reduce((total, item) => total + (item.checked == true ? (parseFloat(item.goods
+						.price) * item.count) :
+					0), 0);
+			}
+		},
+		onShow() {
+			this.init();
+			this.rightText = '编辑';
+		},
+		methods: {
+			async init() {
+				let cartData = await getCartData();
+				if (cartData.state) {
+					this.cartList = cartData.data.map(node => {
+						node['checked'] = true;
+						node['thumb'] = this.shopImage(node.goods.pic);
+						this.checkedCartItem.push(node.id);
+						return node;
+					})
+					this.allCartItem = this.checkedCartItem;
+				}
+			},
+			onClickRight() {
+				this.showEdit = !this.showEdit
+				this.rightText = this.rightText === '编辑' ? '完成' : '编辑'
+			},
+			formatPrice(price) {
+				return (price / 100).toFixed(2);
+			},
+			toGoods(id) {
+				this.$u.route({
+					url: '/pages/goods/goods',
+					params: {
+						id: id
+					}
+				})
+			},
+			changeCheckBox(e) {
+				e.checked = !e.checked;
+				this.checkedAll = this.cartList.filter(node => !node.checked).length === 0;
+			},
+			countChange(item, val) {
+				addGoodCount(item.id, val.value);
+			},
+			checkAll() {
+				if (this.checkedAll) {
+					for (var i in this.cartList) {
+						this.cartList[i].checked = false;
+					}
+				} else {
+					for (var i in this.cartList) {
+						this.cartList[i].checked = true;
+					}
+				}
+				this.checkedAll = !this.checkedAll;
+			},
+
+			addFav() {
+				let idArr = new Array();
+				let idGoods = new Array();
+				for (const i in this.cartList) {
+					if (this.cartList[i].checked) {
+						idGoods.push(this.cartList[i].goods.id);
+						idArr.push(this.cartList[i].id);
+					}
+				}
+				if (idArr.length == 0) {
+					this.$toast('请选择收藏的商品');
+					return;
+				}
+				let count = 0;
+				for (var index in idGoods) {
+					like(idGoods[index]).then(res => {
+						if (res.state) {
+							count++;
+							if (count == idGoods.length) {
+								this.$u.delete('user/cart', idArr).then(res2 => {
+									this.$toast('收藏成功');
+									this.init();
+								});
+							}
+						}
+					});
+				}
+
+			},
+			submit() {
+				let idArr = new Array();
+				for (const i in this.cartList) {
+					if (this.cartList[i].checked) {
+						idArr.push(this.cartList[i].id);
+					}
+				}
+				if (idArr.length == 0) {
+					this.$toast('请选择要处理的商品');
+					return;
+				}
+				if (this.rightText == '编辑') {
+					//结算
+					this.$u.route({
+						url: '/pages/checkout/checkout',
+						params: {
+							ids: idArr.join(',')
+						}
+					})
+
+				}
+				if (this.rightText == '完成') {
+					//将商品移出购物车
+					this.$u.delete('user/cart', idArr).then(res => {
+						this.$toast('成功移出商品');
+						this.init();
+					});
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.wrap {
+		.navbar-right {
+			margin-right: 24rpx;
+			display: flex;
+		}
+
+		.checkbox {
+			width: 40rpx;
+			height: 40rpx;
+			border: 1px solid $uv-border-color;
+			border-radius: 50%;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+
+			&.checked {
+				background: $uv-primary;
+				border-color: $uv-primary;
+			}
+		}
+
+		.gl-content {
+			flex: 1;
+			width: 0;
+		}
+
+		.gl-item {
+			display: flex;
+			align-items: center;
+			width: 100%;
+		}
+
+		.gl-name {
+			font-size: 26rpx;
+		}
+
+		.gl-img {
+			margin: 0 20rpx;
+		}
+
+		.gl-descript {
+			margin-top: 14rpx;
+			font-size: 20rpx;
+		}
+
+		.gl-price {
+			margin-top: 26rpx;
+			font-size: 24rpx;
+			color: #FA3534;
+		}
+
+		.no-data {
+			padding-top: 80rpx;
+		}
+
+		.navigation {
+			background-color: #ffffff;
+			box-shadow: 0px 2px 10px rgba(3, 3, 3, 0.1);
+			position: fixed;
+			bottom: 0;
+			left: 0;
+			right: 0;
+			height: 100rpx;
+			display: flex;
+			align-items: center;
+			justify-content: flex-end;
+			padding-bottom: 0;
+			padding-bottom: constant(safe-area-inset-bottom);
+			padding-bottom: env(safe-area-inset-bottom);
+			padding-right: 40rpx;
+			padding-left: 40rpx;
+			justify-content: space-between;
+
+			.left {
+				display: flex;
+				font-size: 20rpx;
+				align-items: center;
+
+				.item {
+					margin: 0 8rpx;
+				}
+
+				.total-price {
+					font-size: 30rpx;
+					color: red;
+				}
+			}
+
+			.right {
+				display: flex;
+				font-size: 28rpx;
+				align-items: center;
+
+			}
+
+			.link-text {
+				margin-right: 20rpx;
+				color: $uv-primary;
+			}
+		}
+	}
+</style>

+ 468 - 0
virgo.wzfrontend/workark_wx/subPages/shopPage/good/good.vue

@@ -0,0 +1,468 @@
+<template>
+	<view class="goods-detail-wrapper">
+		<uv-swiper :list="goods.thumb" height="400"></uv-swiper>
+		<view class="content">
+			<view class="title">{{ goods.name }}</view>
+			<view class="desc">{{ goods.descript }}</view>
+			<view class="price">{{ formatPrice(goods.price) }}</view>
+			<uv-row gutter="16" class="express">
+				<uv-col :span="6">运费:免运费</uv-col>
+				<uv-col :span="6">剩余:{{goods.stock}}</uv-col>
+			</uv-row>
+		</view>
+		<view class="detail">
+			<uv-parse :content="goods.detail"></uv-parse>
+		</view>
+		<view class="navigation">
+			<view class="left">
+				<view class="item" @click="like">
+					<uv-icon name="heart" size="25" :color="likeColor"></uv-icon>
+					<view class="text uv-line-1">收藏</view>
+				</view>
+				<view class="item car" @click="toCart">
+					<uv-badge :value="cartCount" type="error" :offset="[0,0]" max="99" numberType="overflow" absolute
+						:customStyle="{
+							zIndex:99
+						}"></uv-badge>
+					<uv-icon name="shopping-cart" size="30" color="content"></uv-icon>
+					<view class="text uv-line-1">购物车</view>
+				</view>
+			</view>
+			<view class="right">
+				<view class="cart btn uv-line-1" @click="showSkuPop('cart')">加入购物车</view>
+				<view class="buy btn uv-line-1" @click="showSkuPop('buy')">立即购买</view>
+			</view>
+		</view>
+		<uv-popup ref="popup" mode="bottom" :closeable="true">
+			<view class="sku">
+				<view class="goods">
+					<uv-row>
+						<uv-col :span="4" class="left">
+							<uv-image width="170rpx" height="170rpx" :src="goods.picture"></uv-image>
+						</uv-col>
+						<uv-col :span="8" class="right">
+							<view class="price">{{formatPrice(price)}}</view>
+							<view class="stock">剩余<text class="stock_num">{{stock}}</text>件</view>
+							<template v-if="!sku.none_sku">
+								<view class="tips">{{hasSel?'已选择':'请选择'}}
+									<text v-for="(item,index) in sku.tree" :key="index" style="padding-left:10rpx;">
+										{{item.sel?item.v[parseInt(item.sel)].name:item.k}}
+									</text>
+								</view>
+							</template>
+						</uv-col>
+					</uv-row>
+				</view>
+				<template v-if="!sku.none_sku">
+					<view class="skuv-list">
+						<block v-for="(category,index) in sku.tree" :key="index">
+							<view class="tree">
+								<view class="title">{{category.k}}</view>
+							</view>
+							<view class="node-list">
+								<uv-tags class="node" :type="node.mode=='disable'?'info':'warning'"
+									v-for="(node,index2) in category.v" :key="index2" :text="node.name"
+									:plain="node.mode=='default'?true:(node.mode=='select'?false:true)"
+									@click="selSku(category,node)">
+								</uv-tags>
+							</view>
+						</block>
+					</view>
+				</template>
+
+				<view class="count uv-flex uv-row-between">
+					<view>购买数量</view>
+					<view>
+						<uv-number-box v-model="count" :max="stock"></uv-number-box>
+					</view>
+				</view>
+				<view class="action">
+					<uv-button type="error" shape="circle" @click="buy">确定</uv-button>
+				</view>
+			</view>
+		</uv-popup>
+	</view>
+</template>
+
+<script>
+	import {
+		getGoods,
+		like,
+		noLisk,
+		addCart,
+		getCartCount
+	} from '@/request/api/shop.js'
+	export default {
+		data() {
+			return {
+				ifLike: false,
+				likeColor: 'content',
+				cartCount: '',
+				showSku: false,
+				stock: '',
+				price: '',
+				hasSel: false,
+				sku: {
+					tree: [],
+					list: [],
+					price: '0', // 默认价格(单位元)
+					stock_num: 0, // 商品总库存
+					collection_id: 0, // 无规格商品 skuId 取 collection_id,否则取所选 sku 组合对应的 id
+					none_sku: false, // 是否无规格商品
+					hide_stock: false, // 是否隐藏剩余库存					
+					sel: {}
+				},
+				count: 1,
+				offline: false,
+				goods: {
+					id: '',
+					name: '',
+					price: 0,
+					express: '免运费',
+					remain: 0,
+					thumb: [],
+					stock: ''
+				},
+				actionType: 'buy'
+			}
+		},
+		onLoad(option) {
+			this.goods.id = option.id
+			this.init()
+		},
+		methods: {
+			async init() {
+				this.getCartCount();
+				let goodData = await getGoods(this.goods.id);
+				if (goodData.state) {
+					let res = goodData.data;
+					let goods = res.goods
+					this.offline = !goods.isOnSale
+					let sku = res.sku
+					sku.price = (sku.price / 100).toFixed(2)
+
+					if (!sku.none_sku) {
+						for (var i in sku.tree) {
+							for (var m in sku.tree[i].v) {
+								sku.tree[i].v[m].mode = 'default';
+
+							}
+						}
+					}
+					this.sku = sku;
+					this.stock = goods.stock;
+					this.price = goods.price;
+					goods.thumb = new Array()
+					goods.picture = this.shopImage(goods.pic);
+					const gallery = goods.gallery.split(',')
+					for (var index in gallery) {
+						goods.thumb.push(this.shopImage(gallery[index]));
+					}
+					this.goods = goods;
+					if (res.favorite === true) {
+						this.likeColor = 'error'
+						this.ifLike = true
+					}
+				}
+			},
+			toCart() {
+				this.$navigateTo('/subPages/shopPage/cart/cart');
+			},
+			formatPrice(price) {
+				return '¥' + (price / 100).toFixed(2)
+			},
+			like() {
+				if (this.ifLike === false) {
+					like(this.goods.id).then(res => {
+						this.$toast('收藏成功')
+						this.ifLike = true
+						this.likeColor = 'error'
+					})
+				} else {
+					noLisk(this.goods.id).then(res => {
+						this.$toast('取消收藏成功')
+						this.ifLike = false
+						this.likeColor = 'content'
+					})
+
+				}
+			},
+			showSkuPop(type) {
+				this.actionType = type;
+				this.$refs.popup.open();
+			},
+			async buy() {
+				let idSku = '';
+				if (!this.sku.none_sku) {
+					idSku = this.sku.sel.id;
+					if (!idSku) {
+						this.$u.toast('请选择商品规格')
+						return;
+					}
+				}
+				const params = {
+					idGoods: this.goods.id,
+					count: this.count,
+					idSku: idSku
+				}
+				let cartData = await addCart(params);
+				if (cartData.state) {
+					this.$refs.popup.close();
+					if ('cart' == this.actionType) {
+						this.$toast('成功加入购物车');
+						this.init();
+					} else {
+						this.toCart()
+					}
+				}
+			},
+			//todo 商品规格选择算法待优化
+			selSku(category, node) {
+				if (node.mode == 'disable') {
+					return;
+				}
+				this.hasSel = true;
+				let selItem = {};
+				const skuDataId = node.id;
+				const categoryks = category.k_s;
+				let sku = this.sku;
+				let skuTree = sku.tree;
+				let list = sku.list;
+				let anotherArr = new Array();
+				//提取当前选择的所有组合选项。
+				for (const i in list) {
+					const item = list[i];
+					if (item[categoryks] == skuDataId) {
+						anotherArr.push(item);
+					}
+				}
+				for (const i in skuTree) {
+					const ks = skuTree[i].k_s;
+					for (const j in skuTree[i].v) {
+						const id = skuTree[i].v[j].id;
+						if (categoryks == ks) {
+							//统一类规格中,设置当前选项为select,其他选项为default
+							if (skuDataId == id) {
+								skuTree[i].v[j].mode = 'select';
+								skuTree[i].sel = j
+								selItem[ks] = skuTree[i].v[j].id;
+							} else {
+								skuTree[i].v[j].mode = 'default';
+							}
+						} else {
+							let disable = true;
+							for (const m in anotherArr) {
+								if (anotherArr[m][ks] == id) {
+									disable = false;
+								}
+							}
+							if (disable) {
+								skuTree[i].v[j].mode = 'disable';
+							} else {
+								if (skuTree[i].v[j].mode !== 'select') {
+									skuTree[i].v[j].mode = 'default';
+								} else {
+									skuTree[i].sel = j
+									selItem[ks] = skuTree[i].v[j].id;
+								}
+							}
+						}
+					}
+				}
+				this.sku = {};
+				sku.tree = skuTree;
+				this.sku = sku;
+
+				let skuSelItem;
+				for (const i in list) {
+					const item = list[i];
+					let sel = true;
+					for (const j in skuTree) {
+						const key = skuTree[j].k_s;
+						if (selItem[key] !== item[key]) {
+							sel = false;
+							break;
+						}
+					}
+					if (sel) {
+						skuSelItem = item;
+						break;
+					}
+				}
+
+				if (skuSelItem) {
+					this.stock = skuSelItem.stock_num;
+					this.price = skuSelItem.price;
+					this.sku.sel = skuSelItem;
+				} else {
+					this.sku.sel = {};
+				}
+			},
+			async getCartCount() {
+				let countData = await getCartCount();
+				if (countData.state) this.cartCount = countData.data;
+			}
+		}
+	}
+</script>
+
+
+<style lang="scss" scoped>
+	.goods-detail-wrapper {
+		padding-bottom: 140rpx;
+	}
+
+	.content {
+		padding: 30rpx;
+		background: #fff;
+
+		.title {
+			font-size: 32rpx;
+		}
+
+		.desc {
+			font-size: 12px;
+			color: #999999;
+			letter-spacing: 0;
+			line-height: 18px;
+			margin: 6px 0;
+		}
+
+		.price {
+			color: #FA3534;
+			font-size: 40rpx;
+		}
+
+		.express {
+			color: #999;
+			font-size: 24rpx;
+			padding: 10rpx 0rpx;
+		}
+	}
+
+	.navigation {
+		background-color: #ffffff;
+		box-shadow: 0px 2px 10px rgba(3, 3, 3, 0.1);
+		position: fixed;
+		bottom: 0;
+		left: 0;
+		right: 0;
+		height: 100rpx;
+		display: flex;
+		align-items: center;
+		justify-content: flex-end;
+		padding-bottom: 0;
+		padding-bottom: constant(safe-area-inset-bottom);
+		padding-bottom: env(safe-area-inset-bottom);
+		padding-right: 40rpx;
+		padding-left: 40rpx;
+
+		.left {
+			display: flex;
+			align-items: center;
+			font-size: 20rpx;
+			flex: 1;
+			width: 0;
+
+			.item {
+				margin: 0 30rpx;
+
+				&.car {
+					text-align: center;
+					position: relative;
+
+					.text {
+						position: relative;
+						top: -4rpx;
+					}
+				}
+
+			}
+		}
+
+		.right {
+			display: flex;
+			font-size: 28rpx;
+			align-items: center;
+
+			.btn {
+				line-height: 66rpx;
+				padding: 0 40rpx;
+				border-radius: 36rpx;
+				color: #ffffff;
+			}
+
+			.cart {
+				background-color: #ed3f14;
+				margin-right: 30rpx;
+			}
+
+			.buy {
+				background-color: #ff7900;
+			}
+		}
+	}
+
+	.sku {
+		padding: 24rpx 32rpx;
+
+		.goods {
+			.right {
+				padding-left: 20rpx;
+
+				.price {
+					color: #FA3534;
+					font-size: 34rpx;
+				}
+
+				.stock {
+					margin-top: 8px;
+					color: #969799;
+					font-size: 12px;
+
+					.stock_num {
+						margin-right: 16rpx;
+						margin-left: 16rpx;
+					}
+				}
+
+				.tips {
+					margin-top: 8px;
+					color: #969799;
+					font-size: 12px;
+					line-height: 16px;
+				}
+			}
+		}
+
+		.skuv-list {
+			.tree {
+				margin-top: 30rpx;
+
+				.title {
+					padding-bottom: 12px;
+				}
+			}
+
+			.node-list {
+				display: flex;
+
+				.node {
+					justify-content: center;
+					min-width: 80rpx;
+					margin: 0 24rpx 24rpx 0;
+					line-height: 24rpx;
+					vertical-align: middle;
+				}
+			}
+		}
+
+		.count {
+			padding: 24rpx 0rpx;
+			overflow: hidden;
+			line-height: 60rpx;
+			padding-bottom: 60rpx;
+
+		}
+	}
+</style>

+ 15 - 4
virgo.wzfrontend/workark_wx/subPages/shopPage/webview/webview.vue

@@ -1,6 +1,8 @@
 <template>
 	<view>
-		<web-view v-if="webviewUrl" :src="webviewUrl" @message="message"></web-view>
+		<web-view :webview-styles="{
+			progress:false
+		}" v-if="webviewUrl" :src="webviewUrl" @message="message"></web-view>
 	</view>
 </template>
 
@@ -12,12 +14,21 @@
 				webviewUrl: ''
 			}
 		},
+		onShow() {
+			// this.initUrl();
+		},
 		onLoad(body) {
-			let path = decodeURIComponent(body.url);
-			let link = path.indexOf('?') === -1 ? '?' : '&';
-			this.webviewUrl = config.webviewUrl + path + link + 'token=' + uni.getStorageSync('shopMobileToken');
+			this.params = body;
+			this.initUrl();
 		},
 		methods: {
+			initUrl() {
+				if (!this.params.url) return;
+				let path = decodeURIComponent(this.params.url);
+				let link = path.indexOf('?') === -1 ? '?' : '&';
+				this.webviewUrl = config.webviewUrl + path + link + 'token=' + uni.getStorageSync('shopMobileToken') +
+					'&time=' + new Date().getTime();
+			},
 			message(e) {
 				console.log(e.detail);
 			}

+ 13 - 13
virgo.wzfrontend/workark_wx/subPages/workarkPage/components/sureOrder.vue

@@ -4,44 +4,44 @@
 			<view class="order-title">
 				<uv-text text="订单详情" :customStyle="{
 					fontWeight:'bold'
-				}" size="32"></uv-text>
+				}" size="16"></uv-text>
 			</view>
 			<view class="order-content">
-				<uv-image :src="imageUrl(orderData.rotatingImages) || ''" width="180" height="180" radius="16">
+				<uv-image :src="imageUrl(orderData.rotatingImages) || ''" width="90" height="90" radius="0">
 				</uv-image>
 				<view class="order-content-detail">
-					<uv-text :text="orderData.name" :lines="2" size="28"></uv-text>
-					<uv-text text="x1" type="content" size="28" :customStyle="{
+					<uv-text :text="orderData.name" :lines="2" size="14"></uv-text>
+					<uv-text text="x1" type="content" size="14" :customStyle="{
 						background:'#eee',
 						padding:'2rpx 16rpx',
 						borderRadius:'4rpx',
 						margin:'10rpx 0'
 					}"></uv-text>
-					<uv-text :text="orderData.price" type="error" size="32" mode="price"></uv-text>
+					<uv-text :text="orderData.price" type="error" size="16" mode="price"></uv-text>
 				</view>
 			</view>
 			<view class="order-item">
-				<uv-text text="优惠券" size="28"></uv-text>
+				<uv-text text="优惠券" size="14"></uv-text>
 				<view class="text-flex"
 					@tap="$navigateTo('/subPages/workarkPage/coupon/coupon?productLevelId=' + orderData.productLevelId + '&price=' + orderData.price)">
 					<text class="order-item-icon">-</text>
-					<uv-text :text="minus" type="error" size="28" mode="price"></uv-text>
-					<uv-icon name="arrow-right" size="32"></uv-icon>
+					<uv-text :text="minus" type="error" size="14" mode="price"></uv-text>
+					<uv-icon name="arrow-right" size="16"></uv-icon>
 				</view>
 			</view>
 			<view class="order-count">
 				<view class="text-flex">
-					<uv-text text="合计:" size="28"></uv-text>
-					<uv-text :text="countPriceData.totalFee" type="error" size="28" mode="price"></uv-text>
+					<uv-text text="合计:" size="14"></uv-text>
+					<uv-text :text="countPriceData.totalFee" type="error" size="14" mode="price"></uv-text>
 				</view>
 			</view>
 		</view>
 		<view class="hui-button-box">
 			<view class="button-flex">
-				<uv-text :text="countPriceData.totalFee" type="error" size="28" mode="price"></uv-text>
+				<uv-text :text="countPriceData.totalFee" type="error" size="14" mode="price"></uv-text>
 				<view class="text-flex">
-					<uv-text text="-" type="error" size="24"></uv-text>
-					<uv-text :text="minus" type="error" size="24" mode="price"></uv-text>
+					<uv-text text="-" type="error" size="12"></uv-text>
+					<uv-text :text="minus" type="error" size="12" mode="price"></uv-text>
 				</view>
 			</view>
 			<uv-button type="primary" text="立即支付" @tap="payment" :disabled="isCount"></uv-button>

+ 4 - 4
virgo.wzfrontend/workark_wx/subPages/workarkPage/coupon/coupon.vue

@@ -2,7 +2,7 @@
 	<view class="coupon-list">
 		<view class="coupon-empty" v-if="coupon.length === 0">
 			<uv-empty icon="https://file-node.oss-cn-shanghai.aliyuncs.com/youji/7f79138c39aa49a29edd2204ffcbad60"
-				textSize="28" width="360" :isImg="true" text="暂无优惠券">
+				textSize="14" width="180" :isImg="true" text="暂无优惠券">
 			</uv-empty>
 		</view>
 		<view v-else>
@@ -21,14 +21,14 @@
 						</view>
 					</view>
 					<view class="center-describe">
-						<uv-text :text="item.title" :lines="1" size="30"></uv-text>
+						<uv-text :text="item.title" :lines="1" size="15"></uv-text>
 						<uv-text
 							:text="item.type === 1?`满${item.threshold}减${item.couponAmount}`:`满${item.threshold}可用,最高抵扣${item.mostConstraint}`"
-							type="content" :lines="1" size="26">
+							type="content" :lines="1" size="13">
 						</uv-text>
 					</view>
 					<view class="icon-check">
-						<uv-icon name="checkmark" color="#fff" size="28"></uv-icon>
+						<uv-icon name="checkmark" color="#fff" size="14"></uv-icon>
 					</view>
 				</view>
 			</view>

+ 11 - 10
virgo.wzfrontend/workark_wx/subPages/workarkPage/workarkDetail/workarkDetail.vue

@@ -2,7 +2,7 @@
 	<view>
 		<view class="workark-empty" v-if="productList.length === 0">
 			<uv-empty icon="https://file-node.oss-cn-shanghai.aliyuncs.com/youji/fa57e25b38c442ebb0ba023cace796bb"
-				:isImg="true" textSize="28" width="360" text="暂无产品">
+				:isImg="true" textSize="14" width="180" text="暂无产品">
 			</uv-empty>
 		</view>
 		<view class="workark-detail" v-else>
@@ -10,24 +10,24 @@
 			<view class="workark-title">
 				<view class="workark-price">
 					<text class="price-unit">¥</text>
-					<uv-text type="error" :text="detail.price" size="60" :customStyle="{
+					<uv-text type="error" :text="detail.price" size="30" :customStyle="{
 						fontWeight:'bold'
 					}"></uv-text>
 				</view>
-				<uv-text :text="detail.name" size="40" :customStyle="{
+				<uv-text :text="detail.name" size="20" :customStyle="{
 					fontWeight:'bold',
 					marginBottom:'10rpx'
 				}" :lines="2">
 				</uv-text>
-				<uv-text :lines="2" :text="detail.subtitle" type="tips" size="26"></uv-text>
+				<uv-text :lines="2" :text="detail.subtitle" type="tips" size="14"></uv-text>
 				<view class="workark-specifications">
-					<uv-text text="规格" type="tips" size="28"></uv-text>
+					<uv-text text="规格" type="tips" size="14"></uv-text>
 					<view class="specifications-list">
 						<view class="coupon-card" v-for="(item,index) in productList" :key="index"
 							@tap="initDetail(index)">
 							<view class="coupon-card-box" :class="{active:detail.id === item.id}">
 								<uv-text :text="item.name" :type="detail.id === item.id?'primary':''"
-									size="28"></uv-text>
+									size="14"></uv-text>
 								<view class="icon-check">
 									<uv-icon name="checkmark" color="#fff" size="24rpx"></uv-icon>
 								</view>
@@ -36,7 +36,7 @@
 					</view>
 				</view>
 			</view>
-			<uv-divider text="产品详情" :hairline="true" textSize="28"></uv-divider>
+			<uv-divider text="产品详情" :hairline="true" textSize="14"></uv-divider>
 			<view class="workark-detail-list">
 				<view class="home-detail-img" v-for="(item,index) in detailedImage" :key="item.id">
 					<uv-image :src="item.url || ''" width="100%" mode="widthFix"></uv-image>
@@ -44,11 +44,11 @@
 			</view>
 			<view class="hui-button-box">
 				<view class="icon-kefu" @tap="lookContract" v-if="detail.contract">
-					<uv-icon name="order" color="primary" size="50" label="合同" labelPos="bottom" labelSize="20">
+					<uv-icon name="order" color="primary" size="25" label="合同" labelPos="bottom" labelSize="10">
 					</uv-icon>
 				</view>
 				<view class="icon-kefu" @tap="openChat">
-					<uv-icon name="server-man" color="primary" size="50" label="客服" labelPos="bottom" labelSize="20">
+					<uv-icon name="server-man" color="primary" size="25" label="客服" labelPos="bottom" labelSize="10">
 					</uv-icon>
 				</view>
 				<uv-button type="primary" text="立即购买" @tap="$refs.popup.open()">
@@ -90,7 +90,8 @@
 		},
 		onLoad(body) {
 			this.productLevelId = body.productLevelId;
-			this.popupHeight = this.$uv.addUnit((uni.$windowHeight - 200) * 2);
+			this.popupHeight = (uni.$windowHeight - 200)+'px';
+			console.log(this.popupHeight);
 			if (this.productLevelId) this.init();
 		},
 		methods: {

+ 286 - 361
virgo.wzfrontend/workark_wx/uni_modules/uv-button/components/uv-button/uv-button.vue

@@ -1,205 +1,130 @@
 <template>
-	<view 
-		class="uv-button-wrapper"
-		:style="[btnWrapperStyle]"
-	>
-    <!-- #ifndef APP-NVUE -->
+	<view class="uv-button-wrapper" :style="[btnWrapperStyle]">
+		<!-- #ifndef APP-NVUE -->
 		<!-- #ifdef MP -->
 		<!-- 为了解决微信小程序动态设置hover-class点击态不消失的BUG -->
 		<view class="uv-button-wrapper--dis" v-if="disabled || loading"></view>
-		<button
-		  :hover-start-time="Number(hoverStartTime)"
-		  :hover-stay-time="Number(hoverStayTime)"
-		  :form-type="formType"
-		  :open-type="openType"
-		  :app-parameter="appParameter"
-		  :hover-stop-propagation="hoverStopPropagation"
-		  :send-message-title="sendMessageTitle"
-		  :send-message-path="sendMessagePath"
-		  :lang="lang"
-		  :data-name="dataName"
-		  :session-from="sessionFrom"
-		  :send-message-img="sendMessageImg"
-		  :show-message-card="showMessageCard"
-		  @getphonenumber="onGetPhoneNumber"
-		  @getuserinfo="onGetUserInfo"
-		  @error="onError"
-		  @opensetting="onOpenSetting"
-		  @launchapp="onLaunchApp"
-			@contact="onContact"
-			@chooseavatar="onChooseavatar"
-			@agreeprivacyauthorization="onAgreeprivacyauthorization"
-			@addgroupapp="onAddgroupapp"
-			@chooseaddress="onChooseaddress"
-			@subscribe="onSubscribe"
-			@login="onLogin"
-			@im="onIm"
-		  hover-class="uv-button--active"
-		  class="uv-button uv-reset-button"
-		  :style="[baseColor, $uv.addStyle(customStyle)]"
-		  @tap="clickHandler"
-		  :class="bemClass"
-		>
+		<button :hover-start-time="Number(hoverStartTime)" :hover-stay-time="Number(hoverStayTime)"
+			:form-type="formType" :open-type="openType" :app-parameter="appParameter"
+			:hover-stop-propagation="hoverStopPropagation" :send-message-title="sendMessageTitle"
+			:send-message-path="sendMessagePath" :lang="lang" :data-name="dataName" :session-from="sessionFrom"
+			:send-message-img="sendMessageImg" :show-message-card="showMessageCard" @getphonenumber="onGetPhoneNumber"
+			@getuserinfo="onGetUserInfo" @error="onError" @opensetting="onOpenSetting" @launchapp="onLaunchApp"
+			@contact="onContact" @chooseavatar="onChooseavatar" @agreeprivacyauthorization="onAgreeprivacyauthorization"
+			@addgroupapp="onAddgroupapp" @chooseaddress="onChooseaddress" @subscribe="onSubscribe" @login="onLogin"
+			@im="onIm" hover-class="uv-button--active" class="uv-button uv-reset-button"
+			:style="[baseColor, $uv.addStyle(customStyle)]" @tap="clickHandler" :class="bemClass">
 		<!-- #endif -->
-    <!-- #ifndef MP -->
-    <button
-      :hover-start-time="Number(hoverStartTime)"
-      :hover-stay-time="Number(hoverStayTime)"
-      :form-type="formType"
-      :open-type="openType"
-      :app-parameter="appParameter"
-      :hover-stop-propagation="hoverStopPropagation"
-      :send-message-title="sendMessageTitle"
-      :send-message-path="sendMessagePath"
-      :lang="lang"
-      :data-name="dataName"
-      :session-from="sessionFrom"
-      :send-message-img="sendMessageImg"
-      :show-message-card="showMessageCard"
-      :hover-class="!disabled && !loading ? 'uv-button--active' : ''"
-      class="uv-button uv-reset-button"
-      :style="[baseColor, $uv.addStyle(customStyle)]"
-      @tap="clickHandler"
-      :class="bemClass"
-    >
-    <!-- #endif -->
-      <template v-if="loading">
-        <uv-loading-icon
-          :mode="loadingMode"
-          :size="loadingSize * 1.15"
-          :color="loadingColor"
-        ></uv-loading-icon>
-          <text
-            class="uv-button__loading-text"
-            :style="[
+			<!-- #ifndef MP -->
+			<button :hover-start-time="Number(hoverStartTime)" :hover-stay-time="Number(hoverStayTime)"
+				:form-type="formType" :open-type="openType" :app-parameter="appParameter"
+				:hover-stop-propagation="hoverStopPropagation" :send-message-title="sendMessageTitle"
+				:send-message-path="sendMessagePath" :lang="lang" :data-name="dataName" :session-from="sessionFrom"
+				:send-message-img="sendMessageImg" :show-message-card="showMessageCard"
+				:hover-class="!disabled && !loading ? 'uv-button--active' : ''" class="uv-button uv-reset-button"
+				:style="[baseColor, $uv.addStyle(customStyle)]" @tap="clickHandler" :class="bemClass">
+			<!-- #endif -->
+				<template v-if="loading">
+					<uv-loading-icon :mode="loadingMode" :size="loadingSize * 1.15"
+						:color="loadingColor"></uv-loading-icon>
+					<text class="uv-button__loading-text" :style="[
 							{ fontSize: textSize + 'px' },
 							$uv.addStyle(customTextStyle)
-						]"
-          >{{ loadingText || text }}</text>
-      </template>
-      <template v-else>
-        <uv-icon
-          v-if="icon"
-          :name="icon"
-          :color="iconColorCom"
-          :size="getIconSize"
-          :customStyle="{ marginRight: '2px' }"
-        ></uv-icon>
-        <slot>
-          <text
-            class="uv-button__text"
-            :style="[
+						]">{{ loadingText || text }}</text>
+				</template>
+				<template v-else>
+					<uv-icon v-if="icon" :name="icon" :color="iconColorCom" :size="getIconSize"
+						:customStyle="{ marginRight: '2px' }"></uv-icon>
+					<slot>
+						<text class="uv-button__text" :style="[
 							{ fontSize: textSize + 'px' },
 							$uv.addStyle(customTextStyle)
-						]"
-            >{{ text }}</text>
-        </slot>
-				<slot name="suffix"></slot>
-      </template>
-    </button>
-    <!-- #endif -->
-    <!-- #ifdef APP-NVUE -->
-    <view
-      :hover-start-time="Number(hoverStartTime)"
-      :hover-stay-time="Number(hoverStayTime)"
-      class="uv-button"
-      :hover-class="
+						]">{{ text }}</text>
+					</slot>
+					<slot name="suffix"></slot>
+				</template>
+			</button>
+			<!-- #endif -->
+			<!-- #ifdef APP-NVUE -->
+			<view :hover-start-time="Number(hoverStartTime)" :hover-stay-time="Number(hoverStayTime)" class="uv-button"
+				:hover-class="
         !disabled && !loading && !color && (plain || type === 'info')
           ? 'uv-button--active--plain'
           : !disabled && !loading && !plain
           ? 'uv-button--active'
           : ''
-      "
-      @tap="clickHandler"
-      :class="bemClass"
-      :style="[baseColor, $uv.addStyle(customStyle)]"
-    >
-      <template v-if="loading">
-        <uv-loading-icon
-          :mode="loadingMode"
-          :size="loadingSize * 1.15"
-          :color="loadingColor"
-        ></uv-loading-icon>
-        <text
-          class="uv-button__loading-text"
-          :style="[nvueTextStyle,$uv.addStyle(customTextStyle)]"
-          :class="[plain && `uv-button__text--plain--${type}`]"
-          >{{ loadingText || text }}</text>
-      </template>
-      <template v-else>
-        <uv-icon
-          v-if="icon"
-          :name="icon"
-          :color="iconColorCom"
-          :size="getIconSize"
-        ></uv-icon>
-        <text
-          class="uv-button__text"
-          :style="[
+      " @tap="clickHandler" :class="bemClass" :style="[baseColor, $uv.addStyle(customStyle)]">
+				<template v-if="loading">
+					<uv-loading-icon :mode="loadingMode" :size="loadingSize * 1.15"
+						:color="loadingColor"></uv-loading-icon>
+					<text class="uv-button__loading-text" :style="[nvueTextStyle,$uv.addStyle(customTextStyle)]"
+						:class="[plain && `uv-button__text--plain--${type}`]">{{ loadingText || text }}</text>
+				</template>
+				<template v-else>
+					<uv-icon v-if="icon" :name="icon" :color="iconColorCom" :size="getIconSize"></uv-icon>
+					<text class="uv-button__text" :style="[
             {
               marginLeft: icon ? '2px' : 0,
             },
             nvueTextStyle,
 						$uv.addStyle(customTextStyle)
-          ]"
-          :class="[plain && `uv-button__text--plain--${type}`]"
-          >{{ text }}</text>
-				<slot name="suffix"></slot>
-      </template>
-    </view>
-    <!-- #endif -->
+          ]" :class="[plain && `uv-button__text--plain--${type}`]">{{ text }}</text>
+					<slot name="suffix"></slot>
+				</template>
+			</view>
+			<!-- #endif -->
 	</view>
 </template>
 
 <script>
-import throttle from '@/uni_modules/uv-ui-tools/libs/function/throttle.js';
-import mpMixin from '@/uni_modules/uv-ui-tools/libs/mixin/mpMixin.js'
-import mixin from '@/uni_modules/uv-ui-tools/libs/mixin/mixin.js'
-import button from '@/uni_modules/uv-ui-tools/libs/mixin/button.js'
-import openType from '@/uni_modules/uv-ui-tools/libs/mixin/openType.js'
-import props from "./props.js";
-/**
- * button 按钮
- * @description Button 按钮
- * @tutorial https://www.uvui.cn/components/button.html
- * @property {Boolean}			hairline				是否显示按钮的细边框 (默认 true )
- * @property {String}			type					按钮的预置样式,info,primary,error,warning,success (默认 'info' )
- * @property {String}			size					按钮尺寸,large,normal,mini (默认 normal)
- * @property {String}			shape					按钮形状,circle(两边为半圆),square(带圆角) (默认 'square' )
- * @property {Boolean}			plain					按钮是否镂空,背景色透明 (默认 false)
- * @property {Boolean}			disabled				是否禁用 (默认 false)
- * @property {Boolean}			loading					按钮名称前是否带 loading 图标(App-nvue 平台,在 ios 上为雪花,Android上为圆圈) (默认 false)
- * @property {String | Number}	loadingText				加载中提示文字
- * @property {String}			loadingMode				加载状态图标类型 (默认 'spinner' )
- * @property {String | Number}	loadingSize				加载图标大小 (默认 15 )
- * @property {String}			openType				开放能力,具体请看uniapp稳定关于button组件部分说明
- * @property {String}			formType				用于 <form> 组件,点击分别会触发 <form> 组件的 submit/reset 事件
- * @property {String}			appParameter			打开 APP 时,向 APP 传递的参数,open-type=launchApp时有效 (注:只微信小程序、QQ小程序有效)
- * @property {Boolean}			hoverStopPropagation	指定是否阻止本节点的祖先节点出现点击态,微信小程序有效(默认 true )
- * @property {String}			lang					指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文(默认 en )
- * @property {String}			sessionFrom				会话来源,openType="contact"时有效
- * @property {String}			sendMessageTitle		会话内消息卡片标题,openType="contact"时有效
- * @property {String}			sendMessagePath			会话内消息卡片点击跳转小程序路径,openType="contact"时有效
- * @property {String}			sendMessageImg			会话内消息卡片图片,openType="contact"时有效
- * @property {Boolean}			showMessageCard			是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示,用户点击后可以快速发送小程序消息,openType="contact"时有效(默认false)
- * @property {String}			dataName				额外传参参数,用于小程序的data-xxx属性,通过target.dataset.name获取
- * @property {String | Number}	throttleTime			节流,一定时间内只能触发一次 (默认 0 )
- * @property {String | Number}	hoverStartTime			按住后多久出现点击态,单位毫秒 (默认 0 )
- * @property {String | Number}	hoverStayTime			手指松开后点击态保留时间,单位毫秒 (默认 200 )
- * @property {String | Number}	text					按钮文字,之所以通过props传入,是因为slot传入的话(注:nvue中无法控制文字的样式)
- * @property {String}			icon					按钮图标
- * @property {String}			iconColor				按钮图标颜色
- * @property {String}			color					按钮颜色,支持传入linear-gradient渐变色
- * @property {Object}			customStyle				定义需要用到的外部样式
- * @event {Function}	click			非禁止并且非加载中,才能点击
- * @event {Function}	getphonenumber	open-type="getPhoneNumber"时有效
- * @event {Function}	getuserinfo		用户点击该按钮时,会返回获取到的用户信息,从返回参数的detail中获取到的值同uni.getUserInfo
- * @event {Function}	error			当使用开放能力时,发生错误的回调
- * @event {Function}	opensetting		在打开授权设置页并关闭后回调
- * @event {Function}	launchapp		打开 APP 成功的回调
- * @example <uv-button>月落</uv-button>
- */
-export default {
+	import throttle from '@/uni_modules/uv-ui-tools/libs/function/throttle.js';
+	import mpMixin from '@/uni_modules/uv-ui-tools/libs/mixin/mpMixin.js'
+	import mixin from '@/uni_modules/uv-ui-tools/libs/mixin/mixin.js'
+	import button from '@/uni_modules/uv-ui-tools/libs/mixin/button.js'
+	import openType from '@/uni_modules/uv-ui-tools/libs/mixin/openType.js'
+	import props from "./props.js";
+	/**
+	 * button 按钮
+	 * @description Button 按钮
+	 * @tutorial https://www.uvui.cn/components/button.html
+	 * @property {Boolean}			hairline				是否显示按钮的细边框 (默认 true )
+	 * @property {String}			type					按钮的预置样式,info,primary,error,warning,success (默认 'info' )
+	 * @property {String}			size					按钮尺寸,large,normal,mini (默认 normal)
+	 * @property {String}			shape					按钮形状,circle(两边为半圆),square(带圆角) (默认 'square' )
+	 * @property {Boolean}			plain					按钮是否镂空,背景色透明 (默认 false)
+	 * @property {Boolean}			disabled				是否禁用 (默认 false)
+	 * @property {Boolean}			loading					按钮名称前是否带 loading 图标(App-nvue 平台,在 ios 上为雪花,Android上为圆圈) (默认 false)
+	 * @property {String | Number}	loadingText				加载中提示文字
+	 * @property {String}			loadingMode				加载状态图标类型 (默认 'spinner' )
+	 * @property {String | Number}	loadingSize				加载图标大小 (默认 15 )
+	 * @property {String}			openType				开放能力,具体请看uniapp稳定关于button组件部分说明
+	 * @property {String}			formType				用于 <form> 组件,点击分别会触发 <form> 组件的 submit/reset 事件
+	 * @property {String}			appParameter			打开 APP 时,向 APP 传递的参数,open-type=launchApp时有效 (注:只微信小程序、QQ小程序有效)
+	 * @property {Boolean}			hoverStopPropagation	指定是否阻止本节点的祖先节点出现点击态,微信小程序有效(默认 true )
+	 * @property {String}			lang					指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文(默认 en )
+	 * @property {String}			sessionFrom				会话来源,openType="contact"时有效
+	 * @property {String}			sendMessageTitle		会话内消息卡片标题,openType="contact"时有效
+	 * @property {String}			sendMessagePath			会话内消息卡片点击跳转小程序路径,openType="contact"时有效
+	 * @property {String}			sendMessageImg			会话内消息卡片图片,openType="contact"时有效
+	 * @property {Boolean}			showMessageCard			是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示,用户点击后可以快速发送小程序消息,openType="contact"时有效(默认false)
+	 * @property {String}			dataName				额外传参参数,用于小程序的data-xxx属性,通过target.dataset.name获取
+	 * @property {String | Number}	throttleTime			节流,一定时间内只能触发一次 (默认 0 )
+	 * @property {String | Number}	hoverStartTime			按住后多久出现点击态,单位毫秒 (默认 0 )
+	 * @property {String | Number}	hoverStayTime			手指松开后点击态保留时间,单位毫秒 (默认 200 )
+	 * @property {String | Number}	text					按钮文字,之所以通过props传入,是因为slot传入的话(注:nvue中无法控制文字的样式)
+	 * @property {String}			icon					按钮图标
+	 * @property {String}			iconColor				按钮图标颜色
+	 * @property {String}			color					按钮颜色,支持传入linear-gradient渐变色
+	 * @property {Object}			customStyle				定义需要用到的外部样式
+	 * @event {Function}	click			非禁止并且非加载中,才能点击
+	 * @event {Function}	getphonenumber	open-type="getPhoneNumber"时有效
+	 * @event {Function}	getuserinfo		用户点击该按钮时,会返回获取到的用户信息,从返回参数的detail中获取到的值同uni.getUserInfo
+	 * @event {Function}	error			当使用开放能力时,发生错误的回调
+	 * @event {Function}	opensetting		在打开授权设置页并关闭后回调
+	 * @event {Function}	launchapp		打开 APP 成功的回调
+	 * @example <uv-button>月落</uv-button>
+	 */
+	export default {
 		name: "uv-button",
 		// #ifdef MP
 		mixins: [mpMixin, mixin, button, openType, props],
@@ -291,7 +216,9 @@ export default {
 			// 字体大小
 			textSize() {
 				let fontSize = 14,
-					{ size } = this;
+					{
+						size
+					} = this;
 				if (size === "large") fontSize = 16;
 				if (size === "normal") fontSize = 14;
 				if (size === "small") fontSize = 12;
@@ -305,9 +232,7 @@ export default {
 			},
 			// 设置外层盒子的宽度,其他样式不需要
 			btnWrapperStyle() {
-				const style = {};
-				const customStyle = this.$uv.addStyle(this.customStyle);
-				if(customStyle.width) style.width = customStyle.width;
+				const style = this.$uv.addStyle(this.customStyle);
 				return style;
 			}
 		},
@@ -326,203 +251,203 @@ export default {
 </script>
 
 <style lang="scss" scoped>
-$show-reset-button: 1;
-@import '@/uni_modules/uv-ui-tools/libs/css/variable.scss';
-@import '@/uni_modules/uv-ui-tools/libs/css/components.scss';
-@import '@/uni_modules/uv-ui-tools/libs/css/color.scss';
+	$show-reset-button: 1;
+	@import '@/uni_modules/uv-ui-tools/libs/css/variable.scss';
+	@import '@/uni_modules/uv-ui-tools/libs/css/components.scss';
+	@import '@/uni_modules/uv-ui-tools/libs/css/color.scss';
 
-/* #ifndef APP-NVUE */
-@import "./vue.scss";
-/* #endif */
+	/* #ifndef APP-NVUE */
+	@import "./vue.scss";
+	/* #endif */
 
-/* #ifdef APP-NVUE */
-@import "./nvue.scss";
-/* #endif */
+	/* #ifdef APP-NVUE */
+	@import "./nvue.scss";
+	/* #endif */
 
-$uv-button-uv-button-height: 40px !default;
-$uv-button-text-font-size: 15px !default;
-$uv-button-loading-text-font-size: 15px !default;
-$uv-button-loading-text-margin-left: 4px !default;
-$uv-button-large-width: 100% !default;
-$uv-button-large-height: 50px !default;
-$uv-button-normal-padding: 0 12px !default;
-$uv-button-large-padding: 0 15px !default;
-$uv-button-normal-font-size: 14px !default;
-$uv-button-small-min-width: 60px !default;
-$uv-button-small-height: 30px !default;
-$uv-button-small-padding: 0px 8px !default;
-$uv-button-mini-padding: 0px 8px !default;
-$uv-button-small-font-size: 12px !default;
-$uv-button-mini-height: 22px !default;
-$uv-button-mini-font-size: 10px !default;
-$uv-button-mini-min-width: 50px !default;
-$uv-button-disabled-opacity: 0.5 !default;
-$uv-button-info-color: #323233 !default;
-$uv-button-info-background-color: #fff !default;
-$uv-button-info-border-color: #ebedf0 !default;
-$uv-button-info-border-width: 1px !default;
-$uv-button-info-border-style: solid !default;
-$uv-button-success-color: #fff !default;
-$uv-button-success-background-color: $uv-success !default;
-$uv-button-success-border-color: $uv-button-success-background-color !default;
-$uv-button-success-border-width: 1px !default;
-$uv-button-success-border-style: solid !default;
-$uv-button-primary-color: #fff !default;
-$uv-button-primary-background-color: $uv-primary !default;
-$uv-button-primary-border-color: $uv-button-primary-background-color !default;
-$uv-button-primary-border-width: 1px !default;
-$uv-button-primary-border-style: solid !default;
-$uv-button-error-color: #fff !default;
-$uv-button-error-background-color: $uv-error !default;
-$uv-button-error-border-color: $uv-button-error-background-color !default;
-$uv-button-error-border-width: 1px !default;
-$uv-button-error-border-style: solid !default;
-$uv-button-warning-color: #fff !default;
-$uv-button-warning-background-color: $uv-warning !default;
-$uv-button-warning-border-color: $uv-button-warning-background-color !default;
-$uv-button-warning-border-width: 1px !default;
-$uv-button-warning-border-style: solid !default;
-$uv-button-block-width: 100% !default;
-$uv-button-circle-border-top-right-radius: 100px !default;
-$uv-button-circle-border-top-left-radius: 100px !default;
-$uv-button-circle-border-bottom-left-radius: 100px !default;
-$uv-button-circle-border-bottom-right-radius: 100px !default;
-$uv-button-square-border-top-right-radius: 3px !default;
-$uv-button-square-border-top-left-radius: 3px !default;
-$uv-button-square-border-bottom-left-radius: 3px !default;
-$uv-button-square-border-bottom-right-radius: 3px !default;
-$uv-button-icon-min-width: 1em !default;
-$uv-button-plain-background-color: #fff !default;
-$uv-button-hairline-border-width: 0.5px !default;
+	$uv-button-uv-button-height: 40px !default;
+	$uv-button-text-font-size: 15px !default;
+	$uv-button-loading-text-font-size: 15px !default;
+	$uv-button-loading-text-margin-left: 4px !default;
+	$uv-button-large-width: 100% !default;
+	$uv-button-large-height: 50px !default;
+	$uv-button-normal-padding: 0 12px !default;
+	$uv-button-large-padding: 0 15px !default;
+	$uv-button-normal-font-size: 14px !default;
+	$uv-button-small-min-width: 60px !default;
+	$uv-button-small-height: 30px !default;
+	$uv-button-small-padding: 0px 8px !default;
+	$uv-button-mini-padding: 0px 8px !default;
+	$uv-button-small-font-size: 12px !default;
+	$uv-button-mini-height: 22px !default;
+	$uv-button-mini-font-size: 10px !default;
+	$uv-button-mini-min-width: 50px !default;
+	$uv-button-disabled-opacity: 0.5 !default;
+	$uv-button-info-color: #323233 !default;
+	$uv-button-info-background-color: #fff !default;
+	$uv-button-info-border-color: #ebedf0 !default;
+	$uv-button-info-border-width: 1px !default;
+	$uv-button-info-border-style: solid !default;
+	$uv-button-success-color: #fff !default;
+	$uv-button-success-background-color: $uv-success !default;
+	$uv-button-success-border-color: $uv-button-success-background-color !default;
+	$uv-button-success-border-width: 1px !default;
+	$uv-button-success-border-style: solid !default;
+	$uv-button-primary-color: #fff !default;
+	$uv-button-primary-background-color: $uv-primary !default;
+	$uv-button-primary-border-color: $uv-button-primary-background-color !default;
+	$uv-button-primary-border-width: 1px !default;
+	$uv-button-primary-border-style: solid !default;
+	$uv-button-error-color: #fff !default;
+	$uv-button-error-background-color: $uv-error !default;
+	$uv-button-error-border-color: $uv-button-error-background-color !default;
+	$uv-button-error-border-width: 1px !default;
+	$uv-button-error-border-style: solid !default;
+	$uv-button-warning-color: #fff !default;
+	$uv-button-warning-background-color: $uv-warning !default;
+	$uv-button-warning-border-color: $uv-button-warning-background-color !default;
+	$uv-button-warning-border-width: 1px !default;
+	$uv-button-warning-border-style: solid !default;
+	$uv-button-block-width: 100% !default;
+	$uv-button-circle-border-top-right-radius: 100px !default;
+	$uv-button-circle-border-top-left-radius: 100px !default;
+	$uv-button-circle-border-bottom-left-radius: 100px !default;
+	$uv-button-circle-border-bottom-right-radius: 100px !default;
+	$uv-button-square-border-top-right-radius: 3px !default;
+	$uv-button-square-border-top-left-radius: 3px !default;
+	$uv-button-square-border-bottom-left-radius: 3px !default;
+	$uv-button-square-border-bottom-right-radius: 3px !default;
+	$uv-button-icon-min-width: 1em !default;
+	$uv-button-plain-background-color: #fff !default;
+	$uv-button-hairline-border-width: 0.5px !default;
 
-.uv-button {
-    height: $uv-button-uv-button-height;
-    position: relative;
-    align-items: center;
-    justify-content: center;
-    @include flex;
-    /* #ifndef APP-NVUE */
-    box-sizing: border-box;
-    /* #endif */
-    flex-direction: row;
+	.uv-button {
+		height: $uv-button-uv-button-height;
+		position: relative;
+		align-items: center;
+		justify-content: center;
+		@include flex;
+		/* #ifndef APP-NVUE */
+		box-sizing: border-box;
+		/* #endif */
+		flex-direction: row;
 
-    &__text {
-        font-size: $uv-button-text-font-size;
-    }
+		&__text {
+			font-size: $uv-button-text-font-size;
+		}
 
-    &__loading-text {
-        font-size: $uv-button-loading-text-font-size;
-        margin-left: $uv-button-loading-text-margin-left;
-    }
+		&__loading-text {
+			font-size: $uv-button-loading-text-font-size;
+			margin-left: $uv-button-loading-text-margin-left;
+		}
 
-    &--large {
-        /* #ifndef APP-NVUE */
-        width: $uv-button-large-width;
-        /* #endif */
-        height: $uv-button-large-height;
-        padding: $uv-button-large-padding;
-    }
+		&--large {
+			/* #ifndef APP-NVUE */
+			width: $uv-button-large-width;
+			/* #endif */
+			height: $uv-button-large-height;
+			padding: $uv-button-large-padding;
+		}
 
-    &--normal {
-        padding: $uv-button-normal-padding;
-        font-size: $uv-button-normal-font-size;
-    }
+		&--normal {
+			padding: $uv-button-normal-padding;
+			font-size: $uv-button-normal-font-size;
+		}
 
-    &--small {
-        /* #ifndef APP-NVUE */
-        min-width: $uv-button-small-min-width;
-        /* #endif */
-        height: $uv-button-small-height;
-        padding: $uv-button-small-padding;
-        font-size: $uv-button-small-font-size;
-    }
+		&--small {
+			/* #ifndef APP-NVUE */
+			min-width: $uv-button-small-min-width;
+			/* #endif */
+			height: $uv-button-small-height;
+			padding: $uv-button-small-padding;
+			font-size: $uv-button-small-font-size;
+		}
 
-    &--mini {
-        height: $uv-button-mini-height;
-        font-size: $uv-button-mini-font-size;
-        /* #ifndef APP-NVUE */
-        min-width: $uv-button-mini-min-width;
-        /* #endif */
-        padding: $uv-button-mini-padding;
-    }
+		&--mini {
+			height: $uv-button-mini-height;
+			font-size: $uv-button-mini-font-size;
+			/* #ifndef APP-NVUE */
+			min-width: $uv-button-mini-min-width;
+			/* #endif */
+			padding: $uv-button-mini-padding;
+		}
 
-    &--disabled {
-        opacity: $uv-button-disabled-opacity;
-    }
+		&--disabled {
+			opacity: $uv-button-disabled-opacity;
+		}
 
-    &--info {
-        color: $uv-button-info-color;
-        background-color: $uv-button-info-background-color;
-        border-color: $uv-button-info-border-color;
-        border-width: $uv-button-info-border-width;
-        border-style: $uv-button-info-border-style;
-    }
+		&--info {
+			color: $uv-button-info-color;
+			background-color: $uv-button-info-background-color;
+			border-color: $uv-button-info-border-color;
+			border-width: $uv-button-info-border-width;
+			border-style: $uv-button-info-border-style;
+		}
 
-    &--success {
-        color: $uv-button-success-color;
-        background-color: $uv-button-success-background-color;
-        border-color: $uv-button-success-border-color;
-        border-width: $uv-button-success-border-width;
-        border-style: $uv-button-success-border-style;
-    }
+		&--success {
+			color: $uv-button-success-color;
+			background-color: $uv-button-success-background-color;
+			border-color: $uv-button-success-border-color;
+			border-width: $uv-button-success-border-width;
+			border-style: $uv-button-success-border-style;
+		}
 
-    &--primary {
-        color: $uv-button-primary-color;
-        background-color: $uv-button-primary-background-color;
-        border-color: $uv-button-primary-border-color;
-        border-width: $uv-button-primary-border-width;
-        border-style: $uv-button-primary-border-style;
-    }
+		&--primary {
+			color: $uv-button-primary-color;
+			background-color: $uv-button-primary-background-color;
+			border-color: $uv-button-primary-border-color;
+			border-width: $uv-button-primary-border-width;
+			border-style: $uv-button-primary-border-style;
+		}
 
-    &--error {
-        color: $uv-button-error-color;
-        background-color: $uv-button-error-background-color;
-        border-color: $uv-button-error-border-color;
-        border-width: $uv-button-error-border-width;
-        border-style: $uv-button-error-border-style;
-    }
+		&--error {
+			color: $uv-button-error-color;
+			background-color: $uv-button-error-background-color;
+			border-color: $uv-button-error-border-color;
+			border-width: $uv-button-error-border-width;
+			border-style: $uv-button-error-border-style;
+		}
 
-    &--warning {
-        color: $uv-button-warning-color;
-        background-color: $uv-button-warning-background-color;
-        border-color: $uv-button-warning-border-color;
-        border-width: $uv-button-warning-border-width;
-        border-style: $uv-button-warning-border-style;
-    }
+		&--warning {
+			color: $uv-button-warning-color;
+			background-color: $uv-button-warning-background-color;
+			border-color: $uv-button-warning-border-color;
+			border-width: $uv-button-warning-border-width;
+			border-style: $uv-button-warning-border-style;
+		}
 
-    &--block {
-        @include flex;
-        width: $uv-button-block-width;
-    }
+		&--block {
+			@include flex;
+			width: $uv-button-block-width;
+		}
 
-    &--circle {
-        border-top-right-radius: $uv-button-circle-border-top-right-radius;
-        border-top-left-radius: $uv-button-circle-border-top-left-radius;
-        border-bottom-left-radius: $uv-button-circle-border-bottom-left-radius;
-        border-bottom-right-radius: $uv-button-circle-border-bottom-right-radius;
-    }
+		&--circle {
+			border-top-right-radius: $uv-button-circle-border-top-right-radius;
+			border-top-left-radius: $uv-button-circle-border-top-left-radius;
+			border-bottom-left-radius: $uv-button-circle-border-bottom-left-radius;
+			border-bottom-right-radius: $uv-button-circle-border-bottom-right-radius;
+		}
 
-    &--square {
-        border-bottom-left-radius: $uv-button-square-border-top-right-radius;
-        border-bottom-right-radius: $uv-button-square-border-top-left-radius;
-        border-top-left-radius: $uv-button-square-border-bottom-left-radius;
-        border-top-right-radius: $uv-button-square-border-bottom-right-radius;
-    }
+		&--square {
+			border-bottom-left-radius: $uv-button-square-border-top-right-radius;
+			border-bottom-right-radius: $uv-button-square-border-top-left-radius;
+			border-top-left-radius: $uv-button-square-border-bottom-left-radius;
+			border-top-right-radius: $uv-button-square-border-bottom-right-radius;
+		}
 
-    &__icon {
-        /* #ifndef APP-NVUE */
-        min-width: $uv-button-icon-min-width;
-        line-height: inherit !important;
-        vertical-align: top;
-        /* #endif */
-    }
+		&__icon {
+			/* #ifndef APP-NVUE */
+			min-width: $uv-button-icon-min-width;
+			line-height: inherit !important;
+			vertical-align: top;
+			/* #endif */
+		}
 
-    &--plain {
-        background-color: $uv-button-plain-background-color;
-    }
+		&--plain {
+			background-color: $uv-button-plain-background-color;
+		}
 
-    &--hairline {
-        border-width: $uv-button-hairline-border-width !important;
-    }
-}
-</style>
+		&--hairline {
+			border-width: $uv-button-hairline-border-width !important;
+		}
+	}
+</style>

+ 2 - 2
virgo.wzfrontend/workark_wx/uni_modules/uv-upload/components/uv-upload/uv-upload.vue

@@ -13,14 +13,14 @@
 							width: $uv.addUnit(width),
 							height: $uv.addUnit(height)
 						}]">
-						<uv-icon color="#80CBF9" size="52"
+						<uv-icon color="#80CBF9" size="26"
 							:name="item.isVideo || (item.type && item.type === 'video') ? 'movie' : 'folder'"></uv-icon>
 						<text
 							class="uv-upload__wrap__preview__other__text">{{item.isVideo || (item.type && item.type === 'video') ? '视频' : '文件'}}</text>
 					</view>
 					<view class="uv-upload__status" v-if="item.status === 'uploading' || item.status === 'failed'">
 						<view class="uv-upload__status__icon">
-							<uv-icon v-if="item.status === 'failed'" name="close-circle" color="#ffffff" size="50" />
+							<uv-icon v-if="item.status === 'failed'" name="close-circle" color="#ffffff" size="25" />
 							<uv-loading-icon size="44" mode="circle" v-else />
 						</view>
 						<text v-if="item.message" class="uv-upload__status__message">{{ item.message }}</text>

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/components/login/imageCode.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/login.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/message/message.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/my/my.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/shop/shop.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/workark/workark.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/chatPage/chat/chat.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/indexPage/noPermission/noPermission.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/indexPage/orderDetail/orderDetail.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/indexPage/orderList/orderList.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/myPage/changeOrganization/changeOrganization.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/myPage/chatList/chatList.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/myPage/components/uni-mall-head/uni-mall-head.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/myPage/components/uni-mall-list/uni-mall-list.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/myPage/download/download.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/myPage/myDetail/myDetail.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/myPage/serveChat/serveChat.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/shopPage/cart/cart.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/shopPage/good/good.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/shopPage/payment/payment.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/shopPage/webview/webview.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/workarkPage/components/sureOrder.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/workarkPage/coupon/coupon.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/workarkPage/paymentStatus/paymentStatus.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/subPages/workarkPage/workarkDetail/workarkDetail.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/kevy-result-page/components/kevy-result-page/kevy-result-page.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-badge/components/uv-badge/uv-badge.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-button/components/uv-button/uv-button.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-cell/components/uv-cell-group/uv-cell-group.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-cell/components/uv-cell/uv-cell.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-checkbox/components/uv-checkbox-group/uv-checkbox-group.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-checkbox/components/uv-checkbox/uv-checkbox.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-count-down/components/uv-count-down/uv-count-down.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-divider/components/uv-divider/uv-divider.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-empty/components/uv-empty/uv-empty.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-icon/components/uv-icon/uv-icon.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-image/components/uv-image/uv-image.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-line/components/uv-line/uv-line.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-link/components/uv-link/uv-link.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-list/components/uv-list-item/uv-list-item.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-list/components/uv-list/uv-list.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-loading-icon/components/uv-loading-icon/uv-loading-icon.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-modal/components/uv-modal/uv-modal.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-navbar/components/uv-navbar/uv-navbar.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-number-box/components/uv-number-box/uv-number-box.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-overlay/components/uv-overlay/uv-overlay.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-parse/components/uv-parse/node/node.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-parse/components/uv-parse/uv-parse.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-popup/components/uv-popup/uv-popup.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-radio/components/uv-radio-group/uv-radio-group.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-radio/components/uv-radio/uv-radio.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-row/components/uv-col/uv-col.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-row/components/uv-row/uv-row.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-safe-bottom/components/uv-safe-bottom/uv-safe-bottom.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-status-bar/components/uv-status-bar/uv-status-bar.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-steps/components/uv-steps-item/uv-steps-item.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-steps/components/uv-steps/uv-steps.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-sticky/components/uv-sticky/uv-sticky.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-swiper/components/uv-swiper-indicator/uv-swiper-indicator.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-swiper/components/uv-swiper/uv-swiper.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-switch/components/uv-switch/uv-switch.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-tabs/components/uv-tabs/uv-tabs.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 0
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-tags/components/uv-tags/uv-tags.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1 - 1
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-text/components/uv-text/uv-text.js.map


+ 0 - 0
virgo.wzfrontend/workark_wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uv-upload/components/uv-preview-video/uv-preview-video.js.map


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