2 Revize 805b1afcd8 ... 516170f16f

Autor SHA1 Zpráva Datum
  huangzhe 516170f16f 页面跳转整理 před 3 roky
  一懒众山小 1329d3143c 订订单页 před 3 roky
100 změnil soubory, kde provedl 1597 přidání a 6899 odebrání
  1. 0 1
      src/App.vue
  2. 7 3
      src/components/page-component/app-user-center-top/app-user-center-top.vue
  3. 1 1
      src/components/page-component/index/app-nav-bar.vue
  4. 12 0
      src/core/apiUrl.js
  5. 0 3
      src/main.js
  6. 147 116
      src/pages.json
  7. 4 4
      src/pages/case/appointment/appointment-form.vue
  8. 11 11
      src/pages/case/appointment/appointment.vue
  9. 8 8
      src/pages/case/caseDetails.vue
  10. 129 0
      src/pages/case/components/scroll-list.vue
  11. 6 6
      src/pages/case/hot_sale_project.vue
  12. 16 16
      src/pages/case/projectInfo.vue
  13. 5 5
      src/pages/case/selectedCases.vue
  14. 4 4
      src/pages/case/themeArea.vue
  15. 6 6
      src/pages/index/components/scroll-list.vue
  16. 23 23
      src/pages/index/hxj_index_component.vue
  17. 0 463
      src/pages/index/index - 副本.vue
  18. 1 1
      src/pages/index/index.scss
  19. 12 4
      src/pages/sale/components/app-my-income.vue
  20. 164 0
      src/pages/sale/cusmter/addCustomer.vue
  21. 59 9
      src/pages/sale/cusmter/info.vue
  22. 13 6
      src/pages/sale/cusmter/list.vue
  23. 344 0
      src/pages/sale/mySaleOrder.vue
  24. 7 7
      src/pages/sale/properties/addProperties.vue
  25. 3 3
      src/pages/sale/properties/properties.vue
  26. 504 0
      src/pages/sale/sale-user-center.vue
  27. 16 5
      src/pages/sale/sale_login/sale_login.vue
  28. 50 0
      src/pages/user-center/about-mall/about-mall.vue
  29. 5 5
      src/pages/user-center/evaluate/evaluate.vue
  30. 14 13
      src/pages/user-center/evaluate/list.vue
  31. 13 13
      src/pages/user-center/news/news.vue
  32. 11 10
      src/pages/user-center/user-center.vue
  33. 2 2
      src/siteInfo.js
  34. binární
      src/static/image/index/addcustomerbg.png
  35. binární
      src/static/image/index/arrow-right-bgwrite.png
  36. binární
      src/static/image/index/arrow-right-ewrte.png
  37. binární
      src/static/image/index/camera.png
  38. binární
      src/static/image/index/certified.png
  39. binární
      src/static/image/index/headbg.png
  40. binární
      src/static/image/index/kehu.png
  41. binární
      src/static/image/index/kf.png
  42. binární
      src/static/image/index/lp.png
  43. binární
      src/static/image/index/m.png
  44. binární
      src/static/image/index/my_contract.png
  45. binární
      src/static/image/index/my_invoice.png
  46. binární
      src/static/image/index/no_certified.png
  47. binární
      src/static/image/index/order-icon.png
  48. binární
      src/static/image/index/sale_top_bg.png
  49. binární
      src/static/image/index/saler_bg.png
  50. binární
      src/static/image/index/xx.png
  51. 0 1
      src/uni.scss
  52. 0 21
      src/uni_modules/uview-ui/LICENSE
  53. 0 105
      src/uni_modules/uview-ui/README.md
  54. 0 35
      src/uni_modules/uview-ui/changelog.md
  55. 0 74
      src/uni_modules/uview-ui/components/u--form/u--form.vue
  56. 0 40
      src/uni_modules/uview-ui/components/u--image/u--image.vue
  57. 0 63
      src/uni_modules/uview-ui/components/u--input/u--input.vue
  58. 0 46
      src/uni_modules/uview-ui/components/u--text/u--text.vue
  59. 0 47
      src/uni_modules/uview-ui/components/u--textarea/u--textarea.vue
  60. 0 54
      src/uni_modules/uview-ui/components/u-action-sheet/props.js
  61. 0 275
      src/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue
  62. 0 59
      src/uni_modules/uview-ui/components/u-album/props.js
  63. 0 236
      src/uni_modules/uview-ui/components/u-album/u-album.vue
  64. 0 44
      src/uni_modules/uview-ui/components/u-alert/props.js
  65. 0 243
      src/uni_modules/uview-ui/components/u-alert/u-alert.vue
  66. 0 46
      src/uni_modules/uview-ui/components/u-avatar-group/props.js
  67. 0 103
      src/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue
  68. 0 78
      src/uni_modules/uview-ui/components/u-avatar/props.js
  69. 0 53
      src/uni_modules/uview-ui/components/u-avatar/u-avatar.vue
  70. 0 54
      src/uni_modules/uview-ui/components/u-back-top/props.js
  71. 0 137
      src/uni_modules/uview-ui/components/u-back-top/u-back-top.vue
  72. 0 72
      src/uni_modules/uview-ui/components/u-badge/props.js
  73. 0 171
      src/uni_modules/uview-ui/components/u-badge/u-badge.vue
  74. 0 46
      src/uni_modules/uview-ui/components/u-button/nvue.scss
  75. 0 156
      src/uni_modules/uview-ui/components/u-button/props.js
  76. 0 485
      src/uni_modules/uview-ui/components/u-button/u-button.vue
  77. 0 73
      src/uni_modules/uview-ui/components/u-button/vue.scss
  78. 0 99
      src/uni_modules/uview-ui/components/u-calendar/header.vue
  79. 0 570
      src/uni_modules/uview-ui/components/u-calendar/month.vue
  80. 0 134
      src/uni_modules/uview-ui/components/u-calendar/props.js
  81. 0 288
      src/uni_modules/uview-ui/components/u-calendar/u-calendar.vue
  82. 0 85
      src/uni_modules/uview-ui/components/u-calendar/util.js
  83. 0 14
      src/uni_modules/uview-ui/components/u-car-keyboard/props.js
  84. 0 311
      src/uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue
  85. 0 14
      src/uni_modules/uview-ui/components/u-cell-group/props.js
  86. 0 61
      src/uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue
  87. 0 109
      src/uni_modules/uview-ui/components/u-cell/props.js
  88. 0 224
      src/uni_modules/uview-ui/components/u-cell/u-cell.vue
  89. 0 82
      src/uni_modules/uview-ui/components/u-checkbox-group/props.js
  90. 0 103
      src/uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue
  91. 0 69
      src/uni_modules/uview-ui/components/u-checkbox/props.js
  92. 0 339
      src/uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue
  93. 0 8
      src/uni_modules/uview-ui/components/u-circle-progress/props.js
  94. 0 198
      src/uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue
  95. 0 69
      src/uni_modules/uview-ui/components/u-code-input/props.js
  96. 0 206
      src/uni_modules/uview-ui/components/u-code-input/u-code-input.vue
  97. 0 34
      src/uni_modules/uview-ui/components/u-code/props.js
  98. 0 129
      src/uni_modules/uview-ui/components/u-code/u-code.vue
  99. 0 29
      src/uni_modules/uview-ui/components/u-col/props.js
  100. 0 159
      src/uni_modules/uview-ui/components/u-col/u-col.vue

+ 0 - 1
src/App.vue

xqd
@@ -116,7 +116,6 @@
 </script>
 
 <style lang="scss">
-	@import "uview-ui/index.scss";
     /*每个页面公共css */
     @import "./static/css/flex.scss";
     @import "./static/css/themeColor.scss";

+ 7 - 3
src/components/page-component/app-user-center-top/app-user-center-top.vue

xqd xqd xqd xqd
@@ -207,7 +207,7 @@
 							{{userInfo.nickname}}
 						</view>
 						<!--#ifdef MP-WEIXIN -->
-							<image style="width: 96rpx;height: 31rpx;" src="../../../static/image/index/ysm.png" mode=""></image>
+							<image v-if="isRealname" style="width: 96rpx;height: 31rpx;margin-left: 14rpx;" src="https://t17.9026.com/web/statics/image/index/ysm.png" mode=""></image>
 						<button class="u-refresh dir-left-nowrap main-between cross-center member-margin"
 							open-type="getUserInfo" @getAuthorize="getUserInfo" @click="getUserInfo">
 							<icon class="u-icon" type></icon>
@@ -222,7 +222,7 @@
 						</button>
 						<!-- #endif-->
 					</view>
-					<view class="number">
+					<view class="number" :style="{'color':userNameColor}">
 						15100997644
 					</view>
 				</template>
@@ -233,7 +233,7 @@
 				</template>
 			</view>
 			<view class="box-grow-0 address-container">
-				<image style="width: 32rpx;height: 34rpx;" src="../../../static/image/index/arrow_right.png" mode=""></image>
+				<image style="width: 32rpx;height: 34rpx;" src="https://t17.9026.com/web/statics/image/index/arrow_right.png" mode=""></image>
 			</view>
 		</view>
 		<!-- style 4 end -->
@@ -260,6 +260,10 @@
 					return '0';
 				}
 			},
+			isRealname:{
+				type:Boolean,
+				default:true
+			}
 		},
 		computed: {
 			isLogin() {

+ 1 - 1
src/components/page-component/index/app-nav-bar.vue

xqd
@@ -14,7 +14,7 @@
                         <view v-if="showLeftIcon">
 							<template v-if="xStyle==5">
 								<view class="main-left cross-center hxj-area" @click="leftClick">
-									九林语<image src="../../../static/image/index/arrow-down.png" mode=""></image>
+									九林语<image src="https://t17.9026.com/web/statics/image/index/arrow-down.png" mode=""></image>
 								</view>
 							</template>
 							<template v-else>

+ 12 - 0
src/core/apiUrl.js

xqd
@@ -1,4 +1,16 @@
 const apiUrl = {
+	sale:{
+		sale_login:'api/sale/user/login',
+		binding_estate:'api/sale/user/binding-estate',
+		customer:{
+			list:'api/sale/customer/list',
+			detail:'api/sale/customer/detail',
+			save:'api/sale/customer/save'
+		},
+		estate:{
+			list:'api/sale/estate/list'
+		}
+	},
     index: {
         config: 'api/index/config',
         newIndex: 'api/index/new-index',

+ 0 - 3
src/main.js

xqd
@@ -37,9 +37,6 @@ import * as commonLoad from './core/commonLoad.js';
 import shareTimeline from './core/shareTimeline.js';
 // #endif
 
-// 引入全局uView
-import uView from '@/uni_modules/uview-ui'
-Vue.use(uView)
 
 import shareAppMessage from './core/shareAppMessage.js';
 

+ 147 - 116
src/pages.json

xqd xqd xqd xqd xqd
@@ -1,7 +1,4 @@
 {
-	"easycom": {
-		"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
-	},
 	"pages": [{
 			"path": "pages/index/index",
 			"style": {
@@ -66,109 +63,8 @@
 		//     }
 
 		// }
-		, {
-			"path": "pages/sale/sale_login/sale_login",
-			"style": {
-				"navigationBarTitleText": "登录",
-				"enablePullDownRefresh": false
-			}
-
-		}, {
-			"path": "pages/sale/properties/properties",
-			"style": {
-				"navigationBarTitleText": "我负责的楼盘",
-				"enablePullDownRefresh": false
-			}
-
-		},
-		{
-			"path": "pages/sale/properties/addProperties",
-			"style": {
-				"navigationBarTitleText": "绑定楼盘",
-				"enablePullDownRefresh": false
-			}
-
-		}, {
-			"path": "pages/sale/cusmter/list",
-			"style": {
-				"navigationBarTitleText": "已认证客户",
-				"enablePullDownRefresh": false
-			}
-
-		}, {
-			"path": "pages/sale/cusmter/info",
-			"style": {
-				"navigationBarTitleText": "客户信息",
-				"enablePullDownRefresh": false
-			}
 
-		}, {
-			"path": "pages/index/hot_sale_project",
-			"style": {
-				"navigationBarTitleText": "热销方案",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-
-		}, {
-			"path": "pages/index/projectInfo",
-			"style": {
-				"navigationBarTitleText": "方案详情",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-
-		}, {
-			"path": "pages/index/selectedCases",
-			"style": {
-				"navigationBarTitleText": "精选案例",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#ffffff"
-			}
-
-		}, {
-			"path": "pages/index/caseDetails",
-			"style": {
-				"navigationBarTitleText": "案例详情",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-
-		}, {
-			"path": "pages/index/appointment/appointment",
-			"style": {
-				"navigationBarTitleText": "预约",
-				"enablePullDownRefresh": false
-			}
-
-		}, {
-			"path": "pages/index/appointment/appointment-form",
-			"style": {
-				"navigationBarTitleText": "预约",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-
-		}
-	    ,{
-            "path" : "pages/index/themeArea",
-            "style" :                                                                                    
-            {
-                "navigationBarTitleText": "主题专区",
-                "enablePullDownRefresh": false
-            }
-            
-        }
-        ,{
-            "path" : "pages/sale/properties/bindBuild/bindBuild",
-            "style" :                                                                                    
-            {
-                "navigationBarTitleText": "",
-                "enablePullDownRefresh": false
-            }
-            
-        }
-    ],
+	],
 	"globalStyle": {
 		"navigationBarTextStyle": "black",
 		"navigationBarTitleText": "",
@@ -196,12 +92,142 @@
 			},
 			{
 				"name": "热销方案", //模式名称
-				"path": "pages/index/hot_sale_project", //启动页面
+				"path": "pages/case/hot_sale_project", //启动页面
 				"query": "" //启动参数
 			}
 		]
 	},
 	"subPackages": [
+		{
+			"root": "pages/case",
+			"pages": [
+				{
+					"path": "hot_sale_project",
+					"style": {
+						"navigationBarTitleText": "热销方案",
+						"enablePullDownRefresh": false,
+						"navigationStyle": "custom"
+					}
+				
+				}, {
+					"path": "projectInfo",
+					"style": {
+						"navigationBarTitleText": "方案详情",
+						"enablePullDownRefresh": false,
+						"navigationStyle": "custom"
+					}
+				
+				}, {
+					"path": "selectedCases",
+					"style": {
+						"navigationBarTitleText": "精选案例",
+						"enablePullDownRefresh": false,
+						"navigationBarBackgroundColor": "#ffffff"
+					}
+				
+				}, {
+					"path": "caseDetails",
+					"style": {
+						"navigationBarTitleText": "案例详情",
+						"enablePullDownRefresh": false,
+						"navigationStyle": "custom"
+					}
+				
+				}, {
+					"path": "appointment/appointment",
+					"style": {
+						"navigationBarTitleText": "预约",
+						"enablePullDownRefresh": false
+					}
+				
+				}, {
+					"path": "appointment/appointment-form",
+					"style": {
+						"navigationBarTitleText": "预约",
+						"enablePullDownRefresh": false,
+						"navigationStyle": "custom"
+					}
+				
+				}, {
+					"path": "themeArea",
+					"style": {
+						"navigationBarTitleText": "主题专区",
+						"enablePullDownRefresh": false
+					}
+				
+				}
+			]
+		},
+		{
+			"root": "pages/sale",
+			"pages": [{
+					"path": "sale_login/sale_login",
+					"style": {
+						"navigationBarTitleText": "登录",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "properties/properties",
+					"style": {
+						"navigationBarTitleText": "我负责的楼盘",
+						"enablePullDownRefresh": false
+					}
+
+				},
+				{
+					"path": "properties/addProperties",
+					"style": {
+						"navigationBarTitleText": "绑定楼盘",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "cusmter/list",
+					"style": {
+						"navigationBarTitleText": "已认证客户",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "cusmter/info",
+					"style": {
+						"navigationBarTitleText": "客户信息",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "properties/bindBuild/bindBuild",
+					"style": {
+						"navigationBarTitleText": "",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "mySaleOrder",
+					"style": {
+						"navigationBarTitleText": "我的订单",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "sale-user-center",
+					"style": {
+						"navigationBarTitleText": "销售个人中心",
+						"enablePullDownRefresh": false,
+						"navigationStyle": "custom"
+					}
+
+				}, {
+					"path": "cusmter/addCustomer",
+					"style": {
+						"navigationBarTitleText": "添加客户",
+						"enablePullDownRefresh": false
+					}
+
+				}
+			]
+		},
 		// {
 		// 	"root": "plugins/fission",
 		// 	"pages": [{
@@ -494,6 +520,13 @@
 						"enablePullDownRefresh": false
 					}
 
+				}, {
+					"path": "about-mall/about-mall",
+					"style": {
+						"navigationBarTitleText": "关于商城",
+						"enablePullDownRefresh": false
+					}
+
 				}
 			]
 		},
@@ -609,17 +642,15 @@
 					"style": {
 						"navigationBarTitleText": "结算"
 					}
+				}, {
+					"path": "invoice/invoice",
+					"style": {
+						"navigationBarTitleText": "填写发票",
+						"enablePullDownRefresh": false
+					}
+
 				}
-			    ,{
-                    "path" : "invoice/invoice",
-                    "style" :                                                                                    
-                {
-                    "navigationBarTitleText": "填写发票",
-                    "enablePullDownRefresh": false
-                }
-                
-                }
-            ]
+			]
 		},
 		{
 			"root": "pages/poster",

+ 4 - 4
src/pages/index/appointment/appointment-form.vue → src/pages/case/appointment/appointment-form.vue

xqd xqd xqd
@@ -17,14 +17,14 @@
 			<view class="item main-between cross-center">
 				<view class="hjx-ts-28 hjx-tw-600 hjx-tc-000">姓名</view>
 				<view>
-						<view class="cross-center hjx-ts-28 hjx-tc-999">请选择<image style="width: 12.8rpx;height: 22.8rpx;margin-left: 20rpx;" src="../../../static/image/index/arrow-right-gray.png" mode=""></image></view>
+						<view class="cross-center hjx-ts-28 hjx-tc-999">请选择<image style="width: 12.8rpx;height: 22.8rpx;margin-left: 20rpx;" src="https://t17.9026.com/web/statics/image/index/arrow-right-gray.png" mode=""></image></view>
 					
 				</view>
 			</view>
 			<view class="item main-between cross-center">
 				<view class="hjx-ts-28 hjx-tw-600 hjx-tc-000">电话</view>
 				<view>
-						<view class="cross-center hjx-ts-28 hjx-tc-999">请选择<image style="width: 12.8rpx;height: 22.8rpx;margin-left: 20rpx;" src="../../../static/image/index/arrow-right-gray.png" mode=""></image></view>
+						<view class="cross-center hjx-ts-28 hjx-tc-999">请选择<image style="width: 12.8rpx;height: 22.8rpx;margin-left: 20rpx;" src="https://t17.9026.com/web/statics/image/index/arrow-right-gray.png" mode=""></image></view>
 					
 				</view>
 			</view>
@@ -32,7 +32,7 @@
 				<view class="hjx-ts-28 hjx-tw-600 hjx-tc-000">看房日期</view>
 				<view>
 					<picker mode="date" :value="date" :start="startDate" :end="endDate" @change="bindDateChange">
-						<view class="cross-center hjx-ts-28 hjx-tc-999">{{date}}<image style="width: 12.8rpx;height: 22.8rpx;margin-left: 20rpx;" src="../../../static/image/index/arrow-right-gray.png" mode=""></image></view>
+						<view class="cross-center hjx-ts-28 hjx-tc-999">{{date}}<image style="width: 12.8rpx;height: 22.8rpx;margin-left: 20rpx;" src="https://t17.9026.com/web/statics/image/index/arrow-right-gray.png" mode=""></image></view>
 					</picker>
 				</view>
 			</view>
@@ -40,7 +40,7 @@
 				<view class="hjx-ts-28 hjx-tw-600 hjx-tc-000">看房时间</view>
 				<view>
 					<picker mode="time" :value="time" start="09:01" end="21:01" @change="bindTimeChange">
-						<view class="cross-center hjx-ts-28 hjx-tc-999">{{time}}<image style="width: 12.8rpx;height: 22.8rpx;margin-left: 20rpx;" src="../../../static/image/index/arrow-right-gray.png" mode=""></image></view>
+						<view class="cross-center hjx-ts-28 hjx-tc-999">{{time}}<image style="width: 12.8rpx;height: 22.8rpx;margin-left: 20rpx;" src="https://t17.9026.com/web/statics/image/index/arrow-right-gray.png" mode=""></image></view>
 					</picker>
 				</view>
 			</view>

+ 11 - 11
src/pages/index/appointment/appointment.vue → src/pages/case/appointment/appointment.vue

xqd xqd xqd xqd xqd
@@ -7,7 +7,7 @@
 				@change="swiperChange">
 				<swiper-item v-for="(item,index) in 3" :key="index" @click="gopage">
 					<view style="width: 100%;height: 534rpx;position: relative;">
-						<image src="../../../static/image/index/14.png" style="width: 100%;height: 534rpx;position: absolute;top: 0;left: 0;" mode=""></image>
+						<image src="https://t17.9026.com/web/statics/image/index/14.png" style="width: 100%;height: 534rpx;position: absolute;top: 0;left: 0;" mode=""></image>
 					</view>
 				</swiper-item>
 			</swiper>
@@ -19,31 +19,31 @@
 			<!-- <view class="summary" >
 				<view class="main-between title">
 					<view class="t-omit-two hxj-title text">北欧现代质感卧室,简洁清爽,卧室拥有大面积采光,让卧室明亮起来。</view>
-					<image src="../../static/image/index/share.png" style="width: 33rpx;height: 33rpx;margin-top: 5rpx;"
+					<image src="https://t17.9026.com/web/statics/image/index/share.png" style="width: 33rpx;height: 33rpx;margin-top: 5rpx;"
 						mode=""></image>
 				</view>
 				<view class="main-between gg">
 					<view class="main-between-y cross-center item">
 						<view class="cross-center hjx-tc-666 hjx-ts-24">
-							<image src="../../static/image/index/hx.png" mode=""></image>户型
+							<image src="https://t17.9026.com/web/statics/image/index/hx.png" mode=""></image>户型
 						</view>
 						<view class="hjx-tc-222 hjx-ts-24 hjx-tw-600">三室一厅两卫</view>
 					</view>
 					<view class="main-between-y cross-center item">
 						<view class="cross-center hjx-tc-666 hjx-ts-24">
-							<image src="../../static/image/index/mj.png" mode=""></image>面积
+							<image src="https://t17.9026.com/web/statics/image/index/mj.png" mode=""></image>面积
 						</view>
 						<view class="hjx-tc-222 hjx-ts-24 hjx-tw-600">40m²</view>
 					</view>
 					<view class="main-between-y cross-center item">
 						<view class="cross-center hjx-tc-666 hjx-ts-24">
-							<image src="../../static/image/index/dq.png" mode=""></image>地区
+							<image src="https://t17.9026.com/web/statics/image/index/dq.png" mode=""></image>地区
 						</view>
 						<view class="hjx-tc-222 hjx-ts-24 hjx-tw-600">成都</view>
 					</view>
 					<view class="main-between-y cross-center item">
 						<view class="cross-center hjx-tc-666 hjx-ts-24">
-							<image src="../../static/image/index/fg.png" mode=""></image>风格
+							<image src="https://t17.9026.com/web/statics/image/index/fg.png" mode=""></image>风格
 						</view>
 						<view class="hjx-tc-222 hjx-ts-24 hjx-tw-600">北欧</view>
 					</view>
@@ -57,11 +57,11 @@
 						简介:四季轮换,家已经奏响秋日之歌。让卧室从清凉过渡到温暖,在人居荟只需要几步,干净舒适的家居、收纳、陈设与柔美的色调相融合,打造魅力非凡的惬意居所。
 					</view>
 					<!-- <view class="content-image">
-						<image src="../../../static/image/index/15.png" mode=""></image>
+						<image src="https://t17.9026.com/web/statics/image/index/15.png" mode=""></image>
 					</view>
 					<view class="main-between content-goods">
 						<view class="main-left desc">
-							<image class="goods-img" src="../../static/image/user-center/1.png" mode=""></image>
+							<image class="goods-img" src="https://t17.9026.com/web/statics/image/user-center/1.png" mode=""></image>
 							<view>
 								<view class="title">兴城人居ins居家占位套餐</view>
 								<view class="col">
@@ -85,11 +85,11 @@
 						简介:四季轮换,家已经奏响秋日之歌。让卧室从清凉过渡到温暖,在人居荟只需要几步,干净舒适的家居、收纳、陈设与柔美的色调相融合,打造魅力非凡的惬意居所。
 					</view> -->
 					<view class="content-image">
-						<image src="../../../static/image/index/15.png" mode=""></image>
+						<image src="https://t17.9026.com/web/statics/image/index/15.png" mode=""></image>
 					</view>
 					<!-- <view class="main-between content-goods">
 						<view class="main-left desc">
-							<image class="goods-img" src="../../static/image/user-center/1.png" mode=""></image>
+							<image class="goods-img" src="https://t17.9026.com/web/statics/image/user-center/1.png" mode=""></image>
 							<view>
 								<view class="title">兴城人居ins居家占位套餐</view>
 								<view class="col">
@@ -130,7 +130,7 @@ swiperKey:0
 			},
 			goAppointment(){
 				uni.navigateTo({
-					url:'/pages/index/appointment/appointment-form'
+					url:'/pages/case/appointment/appointment-form'
 				})
 			}
 		}

+ 8 - 8
src/pages/index/caseDetails.vue → src/pages/case/caseDetails.vue

xqd xqd xqd
@@ -7,7 +7,7 @@
 				@change="swiperChange">
 				<swiper-item v-for="(item,index) in 3" :key="index" @click="gopage">
 					<view style="width: 100%;height: 534rpx;position: relative;">
-						<image src="../../static/image/index/14.png" style="width: 100%;height: 534rpx;position: absolute;top: 0;left: 0;" mode=""></image>
+						<image src="https://t17.9026.com/web/statics/image/index/14.png" style="width: 100%;height: 534rpx;position: absolute;top: 0;left: 0;" mode=""></image>
 					</view>
 				</swiper-item>
 			</swiper>
@@ -19,31 +19,31 @@
 			<view class="summary">
 				<view class="main-between title">
 					<view class="t-omit-two hxj-title text">北欧现代质感卧室,简洁清爽,卧室拥有大面积采光,让卧室明亮起来。</view>
-					<image src="../../static/image/index/share.png" style="width: 33rpx;height: 33rpx;margin-top: 5rpx;"
+					<image src="https://t17.9026.com/web/statics/image/index/share.png" style="width: 33rpx;height: 33rpx;margin-top: 5rpx;"
 						mode=""></image>
 				</view>
 				<view class="main-between gg">
 					<view class="main-between-y cross-center item">
 						<view class="cross-center hjx-tc-666 hjx-ts-24">
-							<image src="../../static/image/index/hx.png" mode=""></image>户型
+							<image src="https://t17.9026.com/web/statics/image/index/hx.png" mode=""></image>户型
 						</view>
 						<view class="hjx-tc-222 hjx-ts-24 hjx-tw-600">三室一厅两卫</view>
 					</view>
 					<view class="main-between-y cross-center item">
 						<view class="cross-center hjx-tc-666 hjx-ts-24">
-							<image src="../../static/image/index/mj.png" mode=""></image>面积
+							<image src="https://t17.9026.com/web/statics/image/index/mj.png" mode=""></image>面积
 						</view>
 						<view class="hjx-tc-222 hjx-ts-24 hjx-tw-600">40m²</view>
 					</view>
 					<view class="main-between-y cross-center item">
 						<view class="cross-center hjx-tc-666 hjx-ts-24">
-							<image src="../../static/image/index/dq.png" mode=""></image>地区
+							<image src="https://t17.9026.com/web/statics/image/index/dq.png" mode=""></image>地区
 						</view>
 						<view class="hjx-tc-222 hjx-ts-24 hjx-tw-600">成都</view>
 					</view>
 					<view class="main-between-y cross-center item">
 						<view class="cross-center hjx-tc-666 hjx-ts-24">
-							<image src="../../static/image/index/fg.png" mode=""></image>风格
+							<image src="https://t17.9026.com/web/statics/image/index/fg.png" mode=""></image>风格
 						</view>
 						<view class="hjx-tc-222 hjx-ts-24 hjx-tw-600">北欧</view>
 					</view>
@@ -56,11 +56,11 @@
 						四季轮换,家已经奏响秋日之歌。让卧室从清凉过渡到温暖,在人居荟只需要几步,干净舒适的家居、收纳、陈设与柔美的色调相融合,打造魅力非凡的惬意居所。
 					</view>
 					<view class="content-image">
-						<image src="../../static/image/index/15.png" mode=""></image>
+						<image src="https://t17.9026.com/web/statics/image/index/15.png" mode=""></image>
 					</view>
 					<view class="main-between content-goods">
 						<view class="main-left desc">
-							<image class="goods-img" src="../../static/image/user-center/1.png" mode=""></image>
+							<image class="goods-img" src="https://t17.9026.com/web/statics/image/user-center/1.png" mode=""></image>
 							<view>
 								<view class="title">兴城人居ins居家占位套餐</view>
 								<view class="col">

+ 129 - 0
src/pages/case/components/scroll-list.vue

xqd
@@ -0,0 +1,129 @@
+<template>
+	<view>
+		<scroll-view class="scroll_list" :style="{'background': background}" scroll-x="true">
+			<view class="main-left" style="padding-left: 40rpx;">
+				<view v-for="(item,index) in list" :key="index" @click="goPage(item.link)">
+					<view class="box" :style="{'width':itemWidth,'height':itemHeight}">
+						<image class="image-bg" :src="item.image"></image>
+						<view class="text t-omit">{{item.title}}</view>
+					</view>
+					<view class="tag_list" v-if="item.tag">
+						<text class="tag">{{item.tag}}</text>
+					</view>
+				</view>
+			</view>
+		</scroll-view>
+	</view>
+</template>
+
+<script>
+	let defaultList = [{
+			image: 'https://t17.9026.com/web/statics/image/index/2.png',
+			title: '定制产品',
+			tag: '定制',
+			link:''
+		},
+		{
+			image: 'https://t17.9026.com/web/statics/image/index/2.png',
+			title: '热销方案',
+			tag: '热销',
+			link:'/pages/case/hot_sale_project'
+		},
+		{
+			image: 'https://t17.9026.com/web/statics/image/index/2.png',
+			title: '主题专区',
+			tag: '主题',
+			link:'/pages/case/themeArea'
+		},
+		{
+			image: 'https://t17.9026.com/web/statics/image/index/2.png',
+			title: '定制产品',
+			tag: '定制'
+		}
+	];
+	export default {
+		name: "app-scroll-list",
+		props: {
+			list: {
+				type: Array,
+				default: () => {
+					return defaultList
+				}
+			},
+			background: {
+				type: String,
+				default: ''
+			},
+			itemWidth:{
+				type:[String,Number],
+				default:'207rpx'
+			},
+			itemHeight:{
+				type:[String,Number],
+				default:'250rpx'
+			}
+		},
+		data() {
+			return {
+
+			}
+		},
+		methods: {
+			goPage(link){
+				uni.navigateTo({
+					url:link
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.scroll_list {
+		padding: 15rpx 0 28rpx;
+
+		.box {
+			border-radius: 20rpx;
+			overflow: hidden;
+			position: relative;
+			z-index: 2;
+			margin-right: 20rpx;
+
+			.image-bg {
+				position: absolute;
+				z-index: -1;
+				left: 0;
+				right: 0;
+				bottom: 0;
+				right: 0;
+				width: 100%;
+				height: 100%;
+			}
+
+			.text {
+				width: 115rpx;
+				font-size: 28rpx;
+				font-weight: 600;
+				color: #FEFFFE;
+				text-shadow: 0px 0px 8px rgba(0, 0, 0, 0.17);
+				position: absolute;
+				top: 30rpx;
+				left: 50%;
+				transform: translateX(-50%);
+				z-index: 1;
+			}
+		}
+
+		.tag_list {
+			margin-top: 20rpx;
+
+			.tag {
+				background-color: rgba(238, 235, 222, 1);
+				color: rgb(167, 133, 79);
+				border-radius: 0 50% 50% 50%;
+				font-size: 24rpx;
+				padding: 10rpx 20rpx;
+			}
+		}
+	}
+</style>

+ 6 - 6
src/pages/index/hot_sale_project.vue → src/pages/case/hot_sale_project.vue

xqd xqd xqd xqd
@@ -1,6 +1,6 @@
 <template>
 	<view class="page">
-		<image class="tpbg" src="../../static/image/index/3.png" mode=""></image>
+		<image class="tpbg" src="https://t17.9026.com/web/statics/image/index/3.png" mode=""></image>
 		<app-nav-bar v-if="true"
 		             :fixed="true"
 		             :background-color="''"
@@ -19,11 +19,11 @@
 			<view class="item" v-for="(item,index) in 6" :key="index">
 				<view class="main-between img">
 					<view style="width: 419rpx;height: 281rpx;">
-						<image style="width: 419rpx;height: 281rpx;" src="../../static/image/index/2.png" mode=""></image>
+						<image style="width: 419rpx;height: 281rpx;" src="https://t17.9026.com/web/statics/image/index/2.png" mode=""></image>
 					</view>
 					<view style="width: 206rpx;">
-						<image style="width: 206rpx;height: 136rpx;" src="../../static/image/index/2.png" mode=""></image>
-						<image style="width: 206rpx;height: 136rpx;" src="../../static/image/index/2.png" mode=""></image>
+						<image style="width: 206rpx;height: 136rpx;" src="https://t17.9026.com/web/statics/image/index/2.png" mode=""></image>
+						<image style="width: 206rpx;height: 136rpx;" src="https://t17.9026.com/web/statics/image/index/2.png" mode=""></image>
 					</view>
 				</view>
 				<view class="main-between pl" @click="goPage">
@@ -33,7 +33,7 @@
 						<view class="price"><text>¥</text>299.00</view>
 					</view>
 					<view class="cross-bottom arrow-right">
-						<image src="../../static/image/index/arrow-right-gray.png" mode=""></image>
+						<image src="https://t17.9026.com/web/statics/image/index/arrow-right-gray.png" mode=""></image>
 					</view>
 				</view>
 			</view>
@@ -62,7 +62,7 @@
 			},
 			goPage(){
 				uni.navigateTo({
-					url:'/pages/index/projectInfo?id=10'
+					url:'/pages/case/projectInfo?id=10'
 				})
 			}
 		}

+ 16 - 16
src/pages/index/projectInfo.vue → src/pages/case/projectInfo.vue

xqd xqd xqd xqd xqd xqd xqd
@@ -22,7 +22,7 @@
             <view>
 				<view class="link ">
 					<view class="title1 main-left cross-center">套装内商品<image class="coupon_1"
-							src="../../static/image/index/coupon_1.png" mode=""></image><text
+							src="https://t17.9026.com/web/statics/image/index/coupon_1.png" mode=""></image><text
 							class="coupon_sub">IN SET GOODS</text></view>
 				
 				</view>
@@ -44,7 +44,7 @@
 					<view class="main-between-y">
 						<view class="lq" @click="isCouponShow=!isCouponShow">领券</view>
 						<view class="se">
-							<image src="../../static/image/index/share.png" mode=""></image>分享
+							<image src="https://t17.9026.com/web/statics/image/index/share.png" mode=""></image>分享
 						</view>
 					</view>
 				</view>
@@ -58,7 +58,7 @@
 							<view class="name t-omit">ins风高档皮质沙发</view>
 							<view class="num">x1</view>
 						</view>
-						<view class="zk cropss-center">展开<image src="../../static/image/user-center/arrow-bottom.png" mode=""></image></view>
+						<view class="zk cropss-center">展开<image src="https://t17.9026.com/web/statics/image/user-center/arrow-bottom.png" mode=""></image></view>
 					</view>
 				</view>
 			</view>
@@ -230,14 +230,14 @@
     import appGoodsRecommend from "../../components/page-component/app-goods-recommend/app-goods-recommend.vue";
     import appQuickNavigation from "../../components/page-component/app-quick-navigation/app-quick-navigation.vue";
     import appComposition from'../../components/basic-component/app-composition/app-composition.vue';
-    import uniSwiperDot from '../../components/basic-component/uni-swiper-dot/uni-swiper-dot';
+    // import uniSwiperDot from '../../components/basic-component/uni-swiper-dot/uni-swiper-dot';
     import uAttr from '../../components/page-component/goods/u-attr.vue';
 	import appGoodsFullReduce from '../../components/page-component/goods/app-goods-full-reduce.vue';
 	import bdInfo from '@/components/page-component/goods/bd-info';
     import bdCoupon from '@/components/page-component/goods/bd-coupon.vue';
-    import bdXbc from '@/components/page-component/goods/bd-xbc.vue';
-    import bdKb from '@/components/page-component/goods/bd-kb.vue';
-    import bdHc from '@/components/page-component/goods/bd-hc.vue';
+    // import bdXbc from '@/components/page-component/goods/bd-xbc.vue';
+    // import bdKb from '@/components/page-component/goods/bd-kb.vue';
+    // import bdHc from '@/components/page-component/goods/bd-hc.vue';
     import bdDetail from '@/components/page-component/goods/bd-detail.vue';
     import bdComments from '@/components/page-component/goods/bd-comments.vue';
     import appClose from '@/components/basic-component/app-close/app-close.vue';
@@ -257,14 +257,14 @@
             'app-quick-navigation': appQuickNavigation,
             'app-composition': appComposition,
             appClose,
-            uniSwiperDot,
+            // uniSwiperDot,
 			appGoodsFullReduce,
             uAttr,
             bdInfo,
             bdCoupon,
-            bdXbc,
-            bdKb,
-            bdHc,
+            // bdXbc,
+            // bdKb,
+            // bdHc,
             bdDetail,
             bdComments,
             bdService,
@@ -277,22 +277,22 @@
             return {
 				isCouponShow:false,
 				list:[{
-						image: '../../../static/image/index/2.png',
+						image: 'https://t17.9026.com/web/statics/image/index/2.png',
 						title: '',
 						tag: ''
 					},
 					{
-						image: '../../../static/image/index/2.png',
+						image: 'https://t17.9026.com/web/statics/image/index/2.png',
 						title: '',
 						tag: ''
 					},
 					{
-						image: '../../../static/image/index/2.png',
+						image: 'https://t17.9026.com/web/statics/image/index/2.png',
 						title: '',
 						tag: ''
 					},
 					{
-						image: '../../../static/image/index/2.png',
+						image: 'https://t17.9026.com/web/statics/image/index/2.png',
 						title: '',
 						tag: ''
 					}
@@ -771,7 +771,7 @@
 </script>
 
 <style scoped lang="scss">
-	@import './index.scss';
+	@import '../index/index.scss';
 	.hxj-goods-name{
 		width: 750rpx;
 		height: 261rpx;

+ 5 - 5
src/pages/index/selectedCases.vue → src/pages/case/selectedCases.vue

xqd xqd xqd
@@ -5,17 +5,17 @@
 				<block v-for="(item, index) in ['热门风格', '精选户型']" :key="index">
 					<view :class="{ item: true, active: activeIndex === index }" :id="'tab_' + index" @click="tabClick(index)">{{ item }}</view>
 				</block>
-				<view class="underline" :style="[tabBarStyle]"></view>
+				<!-- <view class="underline" :style="[tabBarStyle]"></view> -->
 			</scroll-view>
 		</view>
 		<app-scroll-list :background="'#fff'"></app-scroll-list>
 		<view class="link">
 			<view class="title1">热门案例</view>
-			<image class="tyx" src="../../static/image/index/tyx.png" mode=""></image>
+			<image class="tyx" src="https://t17.9026.com/web/statics/image/index/tyx.png" mode=""></image>
 		</view>
 		<view class="popcase">
 			<view class="item" v-for="(item,index) in 3" @tap="goPage">
-				<image src="../../static/image/index/3.png" mode=""></image>
+				<image src="https://t17.9026.com/web/statics/image/index/3.png" mode=""></image>
 				<view class="main-between bt">
 					<view class="main-between-y">
 						<view class="title">北欧质感现代风</view>
@@ -93,7 +93,7 @@ export default {
 	methods: {
 		goPage(){
 			uni.navigateTo({
-				url:'/pages/index/caseDetails'
+				url:'/pages/case/caseDetails'
 			})
 		},
 		// 设置一个init方法,方便多处调用
@@ -180,7 +180,7 @@ export default {
 </script>
 
 <style lang="scss" scoped>
-	@import './index.scss';
+	@import '../index/index.scss';
 .tabs {
 	box-shadow: 0 1px 5px rgba(0, 0, 0, 0.06);
 	background-color: #fff;

+ 4 - 4
src/pages/index/themeArea.vue → src/pages/case/themeArea.vue

xqd
@@ -1,14 +1,14 @@
 <template>
 	<view class="page">
 		<view class="item" v-for="(item,index) in 2" :key="index">
-			<image class="d" src="../../static/image/index/16.png" mode=""></image>
+			<image class="d" src="https://t17.9026.com/web/statics/image/index/16.png" mode=""></image>
 			<view class="main-around">
 				<view v-for="(item1,index1) in 3" :key="index1" class="f" @click="getTheme(index1)">
-					<image class="f" src="../../static/image/index/16.png" mode=""></image>
-					<image v-show="activeIndex===index1" class="l" src="../../static/image/index/k.png" mode=""></image>
+					<image class="f" src="https://t17.9026.com/web/statics/image/index/16.png" mode=""></image>
+					<image v-show="activeIndex===index1" class="l" src="https://t17.9026.com/web/statics/image/index/k.png" mode=""></image>
 				</view>
 				<view class="main-center cross-center g">
-					更多方案<image class="h" src="../../static/image/index/arrow-right-yellow.png" mode=""></image>
+					更多方案<image class="h" src="https://t17.9026.com/web/statics/image/index/arrow-right-yellow.png" mode=""></image>
 				</view>
 			</view>
 		</view>

+ 6 - 6
src/pages/index/components/scroll-list.vue

xqd
@@ -18,25 +18,25 @@
 
 <script>
 	let defaultList = [{
-			image: '../../../static/image/index/2.png',
+			image: 'https://t17.9026.com/web/statics/image/index/2.png',
 			title: '定制产品',
 			tag: '定制',
 			link:''
 		},
 		{
-			image: '../../../static/image/index/2.png',
+			image: 'https://t17.9026.com/web/statics/image/index/2.png',
 			title: '热销方案',
 			tag: '热销',
-			link:'/pages/index/hot_sale_project'
+			link:'/pages/case/hot_sale_project'
 		},
 		{
-			image: '../../../static/image/index/2.png',
+			image: 'https://t17.9026.com/web/statics/image/index/2.png',
 			title: '主题专区',
 			tag: '主题',
-			link:'/pages/index/themeArea'
+			link:'/pages/case/themeArea'
 		},
 		{
-			image: '../../../static/image/index/2.png',
+			image: 'https://t17.9026.com/web/statics/image/index/2.png',
 			title: '定制产品',
 			tag: '定制'
 		}

+ 23 - 23
src/pages/index/hxj_index_component.vue

xqd xqd xqd xqd xqd xqd xqd xqd xqd xqd xqd
@@ -4,7 +4,7 @@
 			<swiper style="height: 900rpx;" :indicator-dots="false" :autoplay="false" :interval="3000" :duration="1000"
 				@change="swiperChange" >
 				<swiper-item v-for="(item,index) in 3" :key="index" >
-					<image src="../../static/image/index/1.png" style="width: 100%;height: 900rpx;" mode=""></image>
+					<image src="https://t17.9026.com/web/statics/image/index/1.png" style="width: 100%;height: 900rpx;" mode=""></image>
 				</swiper-item>
 			</swiper>
 			<view class="swiper_zhishi">
@@ -14,7 +14,7 @@
 		</view>
 		<view class="link">
 			<view>
-				<view class="title">兴城 · 荟享家<image class="hxjImg" src="../../static/image/index/HUIXIANGJIA.png"
+				<view class="title">兴城 · 荟享家<image class="hxjImg" src="https://t17.9026.com/web/statics/image/index/HUIXIANGJIA.png"
 						mode=""></image>
 				</view>
 			</view>
@@ -23,13 +23,13 @@
 		<app-scroll-list></app-scroll-list>
 		<view class="link">
 			<view class="title1">本期家点灵感</view>
-			<image class="tyx" src="../../static/image/index/tyx.png" mode=""></image>
-			<image class="d6" src="../../static/image/index/6d.png" mode=""></image>
+			<image class="tyx" src="https://t17.9026.com/web/statics/image/index/tyx.png" mode=""></image>
+			<image class="d6" src="https://t17.9026.com/web/statics/image/index/6d.png" mode=""></image>
 			<view class="subtitle">臻选整装 · 安全无甲醛 · 7天入住</view>
 		</view>
 		<view class="lg_list">
 			<view class="item" v-for="(item,index) in 3" :key="index">
-				<image class="imgBox" src="../../static/image/index/3.png"></image>
+				<image class="imgBox" src="https://t17.9026.com/web/statics/image/index/3.png"></image>
 				<view class="b_card main-between">
 					<view class="left">
 						<view class="title">85m²MUJI风创造「最大坪效」</view>
@@ -43,13 +43,13 @@
 			<view class="more">
 				<view>VIEW MORE</view>
 				<view>
-					<image src="../../static/image/index/viewmore.png" mode=""></image>
+					<image src="https://t17.9026.com/web/statics/image/index/viewmore.png" mode=""></image>
 				</view>
 			</view>
 		</view>
 		<view class="link ">
 			<view class="title1 main-left cross-center">优惠券<image class="coupon_1"
-					src="../../static/image/index/coupon_1.png" mode=""></image><text
+					src="https://t17.9026.com/web/statics/image/index/coupon_1.png" mode=""></image><text
 					class="coupon_sub">RECOMMEND</text></view>
 
 		</view>
@@ -68,7 +68,7 @@
 			</view>
 		</view>
 		<view class="link mt_20">
-			<view class="title1">荟享定制<image class="coupon_1" src="../../static/image/index/coupon_1.png" mode="">
+			<view class="title1">荟享定制<image class="coupon_1" src="https://t17.9026.com/web/statics/image/index/coupon_1.png" mode="">
 				</image><text class="coupon_sub">HUIXIANG</text></view>
 
 		</view>
@@ -77,25 +77,25 @@
 				<view class="l">
 					<view class="title_2">明星套装</view>
 					<view class="desc_2">自然高端好家居</view>
-					<image src="../../static/image/index/4.png" mode=""></image>
+					<image src="https://t17.9026.com/web/statics/image/index/4.png" mode=""></image>
 				</view>
 				<view class="main-between-y">
-					<view class="r1" @click="goPage('/pages/index/selectedCases')">
+					<view class="r1" @click="goPage('/pages/case/selectedCases')">
 						<view class="title_2">优选</view>
 						<view class="desc_2">优选家居</view>
-						<image src="../../static/image/index/5.png" mode=""></image>
+						<image src="https://t17.9026.com/web/statics/image/index/5.png" mode=""></image>
 					</view>
 					<view class="r2">
 						<view class="title_2">专属</view>
 						<view class="desc_2">定制精品</view>
-						<image src="../../static/image/index/6.png" mode=""></image>
+						<image src="https://t17.9026.com/web/statics/image/index/6.png" mode=""></image>
 					</view>
 				</view>
 			</view>
 			<scroll-view scroll-x="true">
 				<view class="main-left w">
 					<view class="item" v-for="(item,index) in 3" :key="index">
-						<image class="borradu_20" src="../../static/image/index/7.png" mode=""></image>
+						<image class="borradu_20" src="https://t17.9026.com/web/statics/image/index/7.png" mode=""></image>
 						<view class="title_2">定制主题占位符</view>
 						<view class="desc_2">独到品味的代表备份</view>
 					</view>
@@ -105,12 +105,12 @@
 				<view class="viewmore1_color">查看更多</view>
 				<view class="viewmore1_color">VIEW MORE</view>
 				<view>
-					<image class="viewmore1" src="../../static/image/index/viewmore1.png" mode=""></image>
+					<image class="viewmore1" src="https://t17.9026.com/web/statics/image/index/viewmore1.png" mode=""></image>
 				</view>
 			</view>
 		</view>
 		<view class="link mt_20">
-			<view class="title1">限时团购<image class="coupon_1" src="../../static/image/index/coupon_1.png" mode="">
+			<view class="title1">限时团购<image class="coupon_1" src="https://t17.9026.com/web/statics/image/index/coupon_1.png" mode="">
 				</image><text class="coupon_sub">TUANGOU</text></view>
 
 		</view>
@@ -121,7 +121,7 @@
 				<swiper-item class="" v-for="(item,index) in 3" :key="index">
 					<view class="item">
 						<view class="imgBox">
-							<image class="img" src="../../static/image/index/3.png"></image>
+							<image class="img" src="https://t17.9026.com/web/statics/image/index/3.png"></image>
 						</view>
 						<view class="b_card main-between">
 							<view class="main-left cross-center left">
@@ -145,13 +145,13 @@
 			<view class="title1" style="margin-right: 61rpx;color: #A7A7A7;">精选类别</view>
 			<view class="title1" style="margin-right: 61rpx;color: #A7A7A7;">精选类别</view>
 			<view class="title1" style="margin-right: 61rpx;color: #A7A7A7;">精选类别</view>
-			<image class="tyx" src="../../static/image/index/tyx.png" mode=""></image>
+			<image class="tyx" src="https://t17.9026.com/web/statics/image/index/tyx.png" mode=""></image>
 		</view>
 		<view class="hxzy">
 			<view class="top">
 				<image
 					style="width: 560rpx;height: 270rpx;border-radius: 20rpx 0 0 0;position: absolute;top: 0;right: 0;"
-					src="../../static/image/index/9.png" mode=""></image>
+					src="https://t17.9026.com/web/statics/image/index/9.png" mode=""></image>
 				<view class="dbo main-between-y">
 					<view>
 						<view class="text">decoration荟享自营</view>
@@ -163,7 +163,7 @@
 			<view class="dir-left-wrap bottom">
 				<view class="item" v-for="(item,index) in 4" :key="index">
 					<view>
-						<image class="cover" :src="`../../static/image/index/${index+10}.png`" mode=""></image>
+						<image class="cover" :src="`https://t17.9026.com/web/statics/image/index/${index+10}.png`" mode=""></image>
 					</view>
 					<view class="title_2">马蒂斯系列 烟灰缸/首饰盘</view>
 					<view class="desc_2">细节控 · 创意</view>
@@ -173,23 +173,23 @@
 			</view>
 			<view class="more1">
 				<view class="viewmore1_color main-center cross-center">更多荟享<image class=""
-						src="../../static/image/index/viewmore1.png" mode=""></image>
+						src="https://t17.9026.com/web/statics/image/index/viewmore1.png" mode=""></image>
 				</view>
 			</view>
 		</view>
 
 		<view class="bottom_logo">
-			<image src="../../static/image/index/bottom_logo.png" mode=""></image>
+			<image src="https://t17.9026.com/web/statics/image/index/bottom_logo.png" mode=""></image>
 			<view class="text">home shopping mall</view>
 		</view>
 	</view>
 </template>
 
 <script>
-	import AppScrollList from './components/scroll-list.vue'
+	import appScrollList from './components/scroll-list.vue'
 	export default {
 		components:{
-			AppScrollList
+			appScrollList
 		},
 		data() {
 			return {

+ 0 - 463
src/pages/index/index - 副本.vue

xqd
@@ -1,463 +0,0 @@
-<template>
-    <app-layout :haveBackground="haveBackground">
-        <!-- #ifdef MP -->
-        <app-my-app v-if="config.is_add_app == 1"></app-my-app>
-        <!-- #endif -->
-        <template v-if="type === 'mall'">
-            <app-nav-bar v-if="navbarStatus" :fixed="true" :title="mall.name" :color="tabBarNavs.top_text_color"
-                         :background-color="tabBarNavs.top_background_color"></app-nav-bar>
-            <app-index :isShowAttention="isShowAttention" @buyProduct="buyProduct" v-if="destroy" :page-hide="pageHide" :home-pages="homePages" :is_storage="is_storage" :theme="getTheme" :page_id="page_id" :is_required="is_required" :coupon_req="coupon_req"></app-index>
-        </template>
-        <template v-else-if="type === 'diy'">
-            <app-nav-bar v-if="navbarStatus"
-                         :fixed="true"
-                         :background-color="diy__app_nav_bar.backgroundColor"
-                         :left-icon="diy__app_nav_bar.leftIcon"
-                         :link="diy__app_nav_bar.link"
-                         :title="homePages.title"
-                         :xStyle="diy__app_nav_bar.style"
-                         :hasMallSetting="diy__app_nav_bar.hasMallSetting"
-                         :color="diy__app_nav_bar.color"
-                         :position="diy__app_nav_bar.position"
-                         :placeholder="diy__app_nav_bar.placeholder"
-                         :placeholderColor="diy__app_nav_bar.placeholderColor"
-            ></app-nav-bar>
-            <app-diy-page @buyProduct="buyProduct" v-if="destroy" :page-hide="pageHide" :home-pages="homePages"
-                          :is_storage="is_storage" :theme="getTheme" :page_id="page_id" :is_required="is_required"
-                          :coupon_req="coupon_req"></app-diy-page>
-        </template>
-        <app-buy-prompt :isShowAttention="isShowAttention" v-if="config.is_purchase_frame === 1"></app-buy-prompt>
-        <app-attr :goods="attrGoods.goods" :attrGroupList="attrGoods.goods.attr_groups" :theme="getTheme" :show="attrGoods.attrShow"></app-attr>
-    </app-layout>
-</template>
-<script>
-    import { mapGetters, mapState } from 'vuex';
-
-    import appIndex from '@/components/page-component/index/app-index.vue';
-    import appDiyPage from '@/components/page-component/index/app-diy-page.vue';
-    import appBuyPrompt from '@/components/page-component/app-buy-prompt/app-buy-prompt.vue';
-    // #ifdef MP
-    import appMyApp from '@/components/page-component/app-my-app/app-my-app.vue';
-    // #endif
-    import appAttr from '@/components/page-component/app-attr/app-attr.vue';
-    import appNavBar from '@/components/page-component/index/app-nav-bar.vue';
-	// #ifdef H5
-	import Vue from "vue";
-	// #endif
-    export default {
-        name: 'index',
-
-        components: {
-            appIndex,
-            'app-diy-page': appDiyPage,
-            appBuyPrompt,
-            // #ifdef MP
-            appMyApp,
-            // #endif
-            appAttr,
-            appNavBar
-        },
-
-        data() {
-            return {
-                diy__app_nav_bar: {},
-                homePages: {},
-                type: '',
-                is_storage: false,
-                haveBackground: true,
-                destroy: true,
-                pageHide: false,
-                is_required: true,
-                coupon_req: false,
-                page_id: 0,
-				getUserInfo:false,
-                //
-                attrGoods: {
-                    goods: {},
-                    attrShow: 0
-                },
-                // #ifdef H5
-                pagePath: '',
-                // #endif
-                isShowAttention: false
-            }
-        },
-
-        onShow() {
-            // #ifdef MP-TOUTIAO || H5
-            this.destroy = true;
-            // #endif
-            this.pageHide = false;
-        },
-        onHide() {
-            // #ifdef MP-TOUTIAO || H5
-            this.destroy = false;
-            // #endif
-            this.pageHide = true;
-        },
-        onLoad(options) { this.$commonLoad.onload(options);
-            // #ifdef H5
-            this.$jwx.config();
-            // #endif
-            this.load(options);
-            // #ifdef MP-WEIXIN
-            wx.showShareMenu({
-                menus: ['shareAppMessage', 'shareTimeline']
-            });
-            const updateManager = wx.getUpdateManager();
-            if (updateManager) {
-                updateManager.onCheckForUpdate(function (res) {
-                    // 请求完新版本信息的回调
-                })
-
-                updateManager.onUpdateReady(function () {
-                    wx.showModal({
-                        title: '更新提示',
-                        content: '新版本已经准备好,是否重启应用?',
-                        success(res) {
-                            if (res.confirm) {
-                                // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
-                                updateManager.applyUpdate()
-                            }
-                        }
-                    })
-                })
-            }
-            // #endif
-        },
-
-        /* #ifdef MP_WEIXIN || MP_BAIDU */
-        onPageScroll(e) {
-            this.$store.dispatch('page/actionSetScrollTop', e.scrollTop);
-        },
-        /* #endif */
-
-        methods: {
-            async loadMall() {
-                const e = await this.$request({
-                    url: this.$api.index.tplIndex,
-                    data: {
-                        page_id: 0
-                    },
-                    method: 'get'
-                });
-
-                let { code, data } = e;
-                this.$hideLoading();
-                if (code === 0) {
-                    this.is_storage = false;
-                    this.$popupAd.show = null;
-                    this.type = data.type;
-                    let that = this;
-                    this.is_required = true;
-                    if (this.type === 'diy') {
-                        this.coupon_req = true;
-                        this.homePages = {};
-                    }
-                    this.$nextTick(() => {
-                        this.homePages = data.home_pages;
-                        if (this.homePages.navs && that.homePages.navs.length > 0) {
-                            this.homePages.navs.forEach(function(row, inedx) {
-                                row.template.data.forEach(function(v, idx) {
-                                    if (v.id === 'background') {
-                                        that.haveBackground = false;
-                                    }
-                                    if (v.id === 'app-nav-bar') {
-                                        that.diy__app_nav_bar = v.data;
-                                    }
-                                })
-                            })
-                        }
-                    });
-                    this.$storage.setStorageSync('INDEX_MALL', data);
-                }
-            },
-            async loadDiy() {
-                const e = await this.$request({
-                    url: this.$api.index.tplIndex,
-                    data: {
-                        page_id: this.page_id
-                    },
-                    method: 'get'
-                });
-                let { code, data } = e;
-                this.$hideLoading();
-                if (code === 0) {
-                    this.is_storage = false;
-                    this.$popupAd.show = null;
-                    this.homePages = data.home_pages;
-                    this.type = data.type;
-                    let that = this;
-                    if (this.homePages.navs && that.homePages.navs.length > 0) {
-                        this.homePages.navs.forEach(function(row, inedx) {
-                            row.template.data.forEach(function(v, idx) {
-                                if (v.id === 'background') {
-                                    that.haveBackground = false;
-                                }
-                                if (v.id === 'app-nav-bar') {
-                                    that.diy__app_nav_bar = v.data;
-                                }
-                            })
-                        })
-                    }
-                }
-            },
-            delHistory(){
-                // #ifdef H5
-                console.error('delete history');
-                let originUrl = window.location.href;
-                let parseUrl = new URL(window.location.href);
-                originUrl = originUrl.replace(parseUrl.origin, "")
-
-                let lastIndex = originUrl.lastIndexOf('?')
-                if (lastIndex !== -1) {
-                    let end = originUrl.slice(lastIndex + 1);
-                    let params = end.split('&');
-                    params = params.filter(function (item) {
-                        if (/^scene=\S/.test(item)) {
-                            return false;
-                        }
-                        if (/^params=\S/.test(item)) {
-                            return false;
-                        }
-                        return true;
-                    });
-                    params = params.join('&');
-                    originUrl = originUrl.slice(0, lastIndex + 1) + params;
-                    if (originUrl.charAt(originUrl.length - 1) === '?') {
-                        originUrl = originUrl.substr(0, originUrl.length - 1)
-                    }
-                }
-                window.history.replaceState(null, '', originUrl);
-                window.history.pushState(null, '', originUrl);
-                // #endif
-            },
-            share(options) {
-                if (typeof options.params !== 'undefined') {
-                    let params;
-                    // #ifdef MP
-                    params = JSON.parse(options.params);
-                    // #endif
-                    // #ifdef H5
-                    this.delHistory();
-                    params = JSON.parse(atob(options.params));
-                    // #endif
-                    this.$jump({
-                        url: params.path + '?' + this.$utils.objectToUrlParams(params),
-                        open_type: 'navigate'
-                    });
-                }
-            },
-            qrcode(options) {
-                this.$request({
-                    url: this.$api.default.qrcode_parameter,
-                    data: {
-                        token: options.scene
-                    }
-                }).then(response => {
-                    if (response.code === 0) {
-                        this.$store.dispatch('page/actionSetQeury', null);
-                        let { data, path } = response.data.detail;
-                        let url = path == 'plugin-private://wx2b03c6e691cd7370/pages/live-player-plugin' ? `${path}` : `/${path}`;
-                        if (data) {
-                            url += '?' + this.$utils.objectToUrlParams(data);
-                            if (typeof data.user_id !== 'undefined') {
-                                this.$store.dispatch('user/setTempParentId', data.user_id)
-                            }
-                        }
-                        if (`/${path}` != '/pages/index/index' || (typeof data.page_id !== 'undefined' && data.page_id !== this.homePages.id !== 0)) {
-                            this.delHistory();
-                            this.$jump({
-                                url: url,
-                                open_type: 'navigate'
-                            });
-                        }
-                    }
-                }).catch(() => {});
-            },
-            buyProduct(data) {
-                this.attrGoods.goods = data.goods;
-                this.attrGoods.attrShow = data.attrShow;
-            },
-            load(options) {
-                // 测试下分支
-                if (typeof options.scene !== 'undefined') {
-                    if (options.scene === 'share') {
-                        this.share(options);
-                    } else {
-                        this.qrcode(options);
-                    }
-                } else {
-                    // this.$showLoading();
-                }
-
-                // #ifdef MP-ALIPAY
-                let query = this.$store.state.page.query;
-                if (query && typeof query.scene !== 'undefined') this.qrcode(query);
-                // #endif
-
-
-                if (typeof options.user_id !== 'undefined') {
-                    this.$store.dispatch('user/setTempParentId', options.user_id);
-                }
-                this.page_id = typeof options.page_id !== 'undefined' ? Number(options.page_id) : 0;
-                // mall
-                if (this.page_id === 0) {
-                    // #ifdef H5
-                    this.$request({
-                        url: this.$api.index.indexWechat
-                    });
-                    // #endif
-                    let storage = this.$storage.getStorageSync('INDEX_MALL');
-                    if (storage && storage.time) {
-                        let old = new Date(storage.time.replace(/-/g, '/'));
-                        old.setMinutes(old.getMinutes() + 10);
-                        let now = new Date();
-                        let time = now.getTime() - old.getTime();
-                        if (time >= 0) {
-                            this.type = storage.type;
-                            this.homePages = storage.home_pages;
-                            this.loadMall();
-                        } else {
-                            this.type = storage.type;
-                            if (this.type === 'diy') {
-                                this.coupon_req = true;
-                                this.homePages = {}
-                            }
-                            this.$nextTick(() => {
-                                this.homePages = storage.home_pages;
-                                let that = this;
-                                if(this.homePages.navs && this.homePages.navs.length > 0) {
-                                    this.homePages.navs.forEach(function(row,inedx){
-                                        row.template.data.forEach(function(v,idx) {
-                                            if (v.id === 'background') {
-                                                that.haveBackground = false;
-                                            }
-                                            if (v.id === 'app-nav-bar') {
-                                                that.diy__app_nav_bar = v.data;
-                                            }
-                                        })
-                                    })
-                                }
-                            });
-                            this.is_required = false;
-                        }
-                    } else {
-                        this.loadMall();
-                    }
-                    //  DIY
-                } else {
-                    this.coupon_req = true;
-                    this.loadDiy();
-                }
-                // #ifdef H5
-                if (this.userInfo && this.userInfo.other_config && this.$jwx.isWechat()) {
-                    this.isShowAttention = this.userInfo.subscribe == 0;
-                }
-                let args = {
-                    path: '/pages/index/index',
-                    params: {}
-                };
-                if (this.page_id == 0) {
-                    args.title = this.mall.setting.share_title ? this.mall.setting.share_title : this.mall.name;
-                    args.imageUrl = this.mall.setting.share_pic ? this.mall.setting.share_pic : '';
-                    args.desc = this.mall.name;
-                } else {
-                    args.title = this.homePages.title;
-                    args.params.page_id = this.page_id;
-                    args.imageUrl = this.mall.setting.share_pic ? this.mall.setting.share_pic : '';
-                    args.desc = this.mall.name;
-                }
-                this.$shareAppMessage(args);
-                // #endif
-            },
-        },
-        // #ifdef MP
-        onShareAppMessage() {
-            let args = {
-                path: '/pages/index/index',
-                params: {}
-            };
-            if (this.page_id == 0) {
-                args.title = this.mall.setting.share_title ? this.mall.setting.share_title : this.mall.name;
-                args.imageUrl = this.mall.setting.share_pic
-            } else {
-                args.title = this.homePages.title;
-                args.params.page_id = this.page_id;
-            }
-            return this.$shareAppMessage(args);
-        },
-        // #endif
-        computed: {
-            navbarStatus: function () {
-                // #ifdef MP-WEIXIN || MP-BAIDU || MP-TOUTIAO
-                return ['windows', 'mac'].indexOf(this.systemInfo.platform) === -1;
-                // #endif
-                // #ifdef H5
-                return !this.$jwx.isWechat();
-                // #endif
-                // #ifdef MP-ALIPAY
-                return false;
-                // #endif
-            },
-
-            ...mapGetters('mallConfig', {
-                tabBarNavs: 'getNavBar',
-                getTheme: 'getTheme',
-            }),
-            ...mapGetters({
-                userInfo: 'user/info',
-            }),
-            ...mapState({
-                systemInfo: state => state.gConfig.systemInfo
-            }),
-            ...mapState('mallConfig', {
-                config: state => state.mall.setting,
-                mall: state => state.mall,
-            }),
-            isSign: function () {
-                return this.$storage.getStorageSync('isSign');
-            },
-        },
-        // #ifdef MP-WEIXIN
-        onShareTimeline() {
-            // 分享朋友圈beta
-            let query = {};
-            let title = '';
-            if (this.page_id == 0) {
-                title = this.mall.setting.share_title ? this.mall.setting.share_title : this.mall.name;
-            } else {
-                title = this.homePages.title;
-                query.page_id = this.page_id;
-            }
-            return this.$shareTimeline({
-                title: title,
-                query: query
-            });
-        },
-        // #endif
-        // #ifdef H5
-        watch: {
-            $route: {
-                handler: function(to) {
-                    this.pagePath = to.meta.pagePath;
-                    if (to.meta.pagePath === 'pages/index/index') {
-                        this.homePages = {};
-                        this.load(to.query);
-                    }
-                }
-            },
-            userInfo: {
-                handler: function(newVal) {
-                    if (newVal && newVal.other_config && this.pagePath === 'pages/index/index' && this.$jwx.isWechat()) {
-                        this.isShowAttention = this.userInfo.other_config.includes('index') && this.userInfo.subscribe == 0;
-                    }
-                }
-            }
-        }
-        // #endif
-    };
-</script>
-
-<style lang="scss">
-</style>

+ 1 - 1
src/pages/index/index.scss

xqd
@@ -241,7 +241,7 @@
 		border-radius: 20rpx;
 		margin-right: 25rpx;
 		position: relative;
-		background-image: url(../../static/image/index/coupon_masking.png);
+		background-image: url(https://t17.9026.com/web/statics/image/index/coupon_masking.png);
 		background-size: 320rpx 200rpx;
 		.Wb {
 			display: flex;

+ 12 - 4
src/pages/sale/components/app-my-income.vue

xqd xqd xqd
@@ -1,10 +1,10 @@
 <template>
 	<view class="main-between income">
-		<view class="item">
+		<view class="item" @click="goPage('/pages/share/order/order')">
 			<view class="title">订单总额(万)</view>
 			<view class="main-between cross-center">
 				<view class="num">76</view>
-				<image style="width: 12rpx;height: 21rpx;" src="../../../static/image/index/arrow-right-gray.png"
+				<image style="width: 12rpx;height: 21rpx;" src="https://t17.9026.com/web/statics/image/index/arrow-right-gray.png"
 					mode=""></image>
 			</view>
 		</view>
@@ -13,7 +13,7 @@
 			<view class="title">我的提成(万)</view>
 			<view class="main-between cross-center">
 				<view class="num">655.00</view>
-				<image style="width: 12rpx;height: 21rpx;" src="../../../static/image/index/arrow-right-gray.png"
+				<image style="width: 12rpx;height: 21rpx;" src="https://t17.9026.com/web/statics/image/index/arrow-right-gray.png"
 					mode=""></image>
 			</view>
 		</view>
@@ -21,7 +21,15 @@
 </template>
 
 <script>
-
+	export default{
+		methods:{
+			goPage(url){
+				uni.navigateTo({
+					url:url
+				})
+			}
+		}
+	}
 </script>
 
 <style lang="scss" scoped>

+ 164 - 0
src/pages/sale/cusmter/addCustomer.vue

xqd
@@ -0,0 +1,164 @@
+<template>
+	<view>
+		<view class="tbg">
+			<view class="ti">
+				请完善客户信息
+			</view>
+			<image class="bg" src="https://t17.9026.com/web/statics/image/index/addcustomerbg.png" mode=""></image>
+			<view class="customerInfo">
+				<view class="top">基本信息</view>
+				<view class="head">
+					<image class="bg" src="https://t17.9026.com/web/statics/image/index/headbg.png" mode=""></image>
+					<image class="camera" src="https://t17.9026.com/web/statics/image/index/camera.png" mode=""></image>
+				</view>
+				<view class="main-left cross-center linp border_bottom">
+					<view class="field">姓名</view>
+					<input type="text" value="" placeholder="请输入姓名" />
+				</view>
+				<view class="main-left cross-center linp border_bottom">
+					<view class="field">手机号</view>
+					<input type="text" value="" placeholder="请输入手机号" />
+				</view>
+			</view>
+		</view>
+		<view class="oinfo">
+			<view class="main-left cross-center linp border_bottom">
+				<view class="field" style="font-weight: bold;">楼盘信息</view>
+			</view>
+			<view class="main-left cross-center linp border_bottom">
+				<view class="field">楼盘名称</view>
+				<input type="text" value="" placeholder="请选择楼盘名称" />
+			</view>
+			<view class="main-left cross-center linp border_bottom">
+				<view class="field">区域信息</view>
+				<input type="text" value="" placeholder="请选择区域信息" />
+			</view>
+			<view class="main-left cross-center linp border_bottom">
+				<view class="field">楼盘性质</view>
+				<input type="text" value="" placeholder="请选择楼盘性质" />
+			</view>
+			<view class="main-left cross-center linp border_bottom">
+				<view class="field">楼盘户号</view>
+				<input type="text" value="" placeholder="请输入楼盘户号" />
+			</view>
+			<button type="default" class="complete">完成</button>
+		</view>
+		<button type="default" class="addlp">添加楼盘</button>
+		<view style="height: 200rpx;"></view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			};
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.addlp{
+		width: 606rpx;
+		height: 90rpx;
+		border: 1rpx solid #A18353;
+		border-radius: 10rpx;
+		font-size: 32rpx;
+		font-weight: bold;
+		color: #A18353;
+		margin-top: 39rpx;
+	}
+	.complete{
+		width: 606rpx;
+		height: 90rpx;
+		background: #A18353;
+		border-radius: 10rpx;
+		font-size: 32rpx;
+		font-weight: bold;
+		color: #FFFFFF;
+		margin-top: 36rpx;
+	}
+	.oinfo{
+		width: 678rpx;
+		height: auto;
+		background: #FEFEFE;
+		border-radius: 10rpx;
+		margin: 20rpx auto 39rpx;
+	}
+	.linp{
+		height: 104rpx;
+		padding: 0 35rpx;
+		.field{
+			width: 120rpx;
+			font-size: 28rpx;
+			font-weight: 500;
+			color: #222222;
+			margin-right: 30rpx;
+		}
+		.val{
+			
+		}
+	}
+	.border_bottom{
+		
+border-bottom: 1px solid #EAEAEA;
+	}
+	.tbg{
+		width: 100%;
+		height: 660rpx;
+		position: relative;
+		padding-top: 176rpx;
+		.ti{
+			font-size: 36rpx;
+			font-weight: bold;
+			color: #FFFFFF;
+			position: absolute;
+			top: 75rpx;
+			left: 36rpx;
+		}
+		.bg{
+			width: 100%;
+			height: 400rpx;
+			position: absolute;
+			top: 0;
+			left: 0;
+			z-index: -1;
+		}
+		.customerInfo{
+			width: 678rpx;
+			height: auto;
+			background: #fff;
+			border-radius: 10rpx;
+			overflow: hidden;
+			margin: 0 auto 20rpx;
+			.top{
+				height: 98rpx;
+				background: #FCF7EA;
+				font-size: 28rpx;
+				font-weight: bold;
+				color: #D0C9C1;
+				padding: 36rpx 30rpx;
+			}
+			.head{
+				width: 127rpx;
+				height: 127rpx;
+				position: relative;
+				margin: 32rpx auto;
+				background-color: #fefefe;
+				z-index: 2;
+				.bg{
+					width: 127rpx;
+					height: 127rpx;
+				}
+				.camera{
+					width: 41rpx;
+					height: 32rpx;
+					position: absolute;
+					bottom: 5rpx;
+					right: -6rpx;
+				}
+			}
+		}
+	}
+</style>

+ 59 - 9
src/pages/sale/cusmter/info.vue

xqd xqd
@@ -1,11 +1,11 @@
 <template>
 	<view class="">
 		<view class="main-left info_card">
-			<image style="width: 91rpx;height: 91rpx;border-radius: 50%;margin-right: 25rpx;" src="../../../static/image/sale/1.png" mode=""></image>
+			<image style="width: 91rpx;height: 91rpx;border-radius: 50%;margin-right: 25rpx;" src="https://t17.9026.com/web/statics/image/sale/1.png" mode=""></image>
 			<view class="main-between-y">
-				<view class="main-left name cross-center">周佳佳<image style="width: 21rpx;height: 29rpx;margin: 0 28rpx 0 7rpx;" src="../../../static/image/sale/sex0.png" mode=""></image>
-				<!-- <image style="width: 21rpx;height: 29rpx;margin: 0 28rpx 0 7rpx;" src="../../../static/image/sale/sex1.png" mode=""></image> -->
-					<image style="width: 96rpx;height: 31rpx;" src="../../../static/image/index/ysm.png" mode=""></image>
+				<view class="main-left name cross-center">周佳佳<image style="width: 21rpx;height: 29rpx;margin: 0 28rpx 0 7rpx;" src="https://t17.9026.com/web/statics/image/sale/sex0.png" mode=""></image>
+				<!-- <image style="width: 21rpx;height: 29rpx;margin: 0 28rpx 0 7rpx;" src="https://t17.9026.com/web/statics/image/sale/sex1.png" mode=""></image> -->
+					<image style="width: 96rpx;height: 31rpx;" src="https://t17.9026.com/web/statics/image/index/ysm.png" mode=""></image>
 				</view>
 				<view>15999999999</view>
 			</view>
@@ -29,24 +29,74 @@
 				<view class="right">22号楼-2201</view>
 			</view>
 		</view>
-		<uni-popup ref="popup" type="center"></uni-popup>
-		<navigator url="/pages/sale/properties/addProperties" hover-class="navigator-hover">
-			<button class="addPro" type="default">客户楼盘信息认证</button>
-		</navigator>
+		<u-popup v-model="show" mode="center" border-radius="14" @close="show = false">
+			<view class="model">
+				<view class="tei">是否确认并认证该用户楼盘信息?</view>
+				<view class="main-between">
+					<view class=" btn left">认证成功</view>
+					<view class=" btn right">信息有误</view>
+				</view>
+				<view class="qx">取消认证</view>
+			</view>
+		</u-popup>
+		<!-- <navigator url="" hover-class="navigator-hover"> -->
+			<button class="addPro" type="default" @click="show=true">客户楼盘信息认证</button>
+		<!-- </navigator> -->
 	</view>
 </template>
 
 <script>
+	import uPopup from '../../../components/basic-component/u-popup/u-popup.vue';
 	export default {
+		components:{
+			uPopup
+		},
 		data() {
 			return {
-
+				show:true
 			};
 		}
 	}
 </script>
 
 <style lang="scss" scoped>
+	.model{
+		width: 631rpx;
+		height: 371rpx;
+		background: #FFFFFF;
+		border-radius: 10rpx;
+		padding: 60rpx 40rpx 30rpx;
+		.tei{
+			font-size: 32rpx;
+			font-weight: bold;
+			color: #222222;
+			text-align: center;
+		}
+		.btn{
+			width: 256rpx;
+			height: 80rpx;
+			border-radius: 40rpx;
+			font-size: 28rpx;
+			font-weight: bold;
+			text-align: center;
+			line-height: 80rpx;
+			margin: 45rpx 0 75rpx;
+		}
+		.left{
+			background: #A18353;
+			color: #FFFFFF;
+		}
+		.right{
+			border: 2px solid #A18353;
+			color: #A18353;
+		}
+		.qx{
+			font-size: 32rpx;
+			font-weight: bold;
+			color: #999999;
+			text-align: center;
+		}
+	}
 	.addPro {
 		position: fixed;
 		bottom: 0;

+ 13 - 6
src/pages/sale/cusmter/list.vue

xqd xqd
@@ -1,23 +1,23 @@
 <template>
 	<view>
 		<view class="search main-left cross-center">
-			<image style="margin-right: 15rpx;" src="../../../static/image/sale/search_icon.png" mode=""></image><input type="text" placeholder-class="search_plh_class" placeholder="客户名、楼盘名">
+			<image style="margin-right: 15rpx;" src="https://t17.9026.com/web/statics/image/sale/search_icon.png" mode=""></image><input type="text" placeholder-class="search_plh_class" placeholder="客户名、楼盘名">
 		</view>
 		<view class="list">
-			<view class="main-between cross-center item" v-for="(item,index) in 5" @click="">
+			<view class="main-between cross-center item" v-for="(item,index) in 5" @click="navCusmterInfo">
 				<view class="main-left">
 					<view>
-						<image style="width: 94rpx;height: 94rpx;border-radius: 50%;margin-right: 26rpx;" src="../../../static/image/sale/1.png" mode=""></image>
+						<image style="width: 94rpx;height: 94rpx;border-radius: 50%;margin-right: 26rpx;" src="https://t17.9026.com/web/statics/image/sale/1.png" mode=""></image>
 					</view>
 					<view class="main-between-y">
-						<view class="name">周先生<image style="width: 96rpx; height: 32rpx;" src="../../../static/image/index/ysm.png" mode=""></image></view>
+						<view class="name">周先生<image style="width: 96rpx; height: 32rpx;" src="https://t17.9026.com/web/statics/image/index/ysm.png" mode=""></image></view>
 						<view class="addr">世龙广场 2号楼-2202</view>
 					</view>
 				</view>
-				<image style="width: 13rpx;height: 21rpx;" src="../../../static/image/sale/arrow_right.png" mode=""></image>
+				<image style="width: 13rpx;height: 21rpx;" src="https://t17.9026.com/web/statics/image/sale/arrow_right.png" mode=""></image>
 			</view>
 		</view>
-		<navigator url="/pages/sale/properties/addProperties" hover-class="navigator-hover">
+		<navigator url="/pages/sale/cusmter/addCustomer" hover-class="navigator-hover">
 			<button class="addPro" type="default">添加客户</button>
 		</navigator>
 	</view>
@@ -29,6 +29,13 @@
 			return {
 				
 			};
+		},
+		methods:{
+			navCusmterInfo(){
+				uni.navigateTo({
+					url:'/pages/sale/cusmter/info'
+				})
+			}
 		}
 	}
 </script>

+ 344 - 0
src/pages/sale/mySaleOrder.vue

xqd
@@ -0,0 +1,344 @@
+<template>
+	<view>
+		<view class="main-around top-menu">
+			<view class="main-center-y cross-center item" :style="item.bgc" v-for="(item,index) in topMenuData" :key="index">
+				<view class="title">{{item.title}}</view>
+				<image :src="item.icon" mode=""></image>
+			</view>
+		</view>
+		<view class="main-left cross-center search">
+			<image src="https://t17.9026.com/web/statics/image/index/search.png" mode=""></image>
+			<input style="width: 560rpx;" type="text" value="" placeholder="搜索客户、商品、时间、订单号" placeholder-style="font-size:28rpx;color:#999;" />
+		</view>
+		<view class="list">
+			<view class="box" v-for="(item,index) in 2" :key="index">
+				<view class="main-between cross-center header">
+					<view class="cross-center head" :class="{'border_bottom':true}">
+						<image src="https://t17.9026.com/web/statics/image/sale/1.png" mode=""></image>
+						周先生-世龙广场22号楼2202
+					</view>
+					<!-- <view class="cross-center head1">
+						<image src="https://t17.9026.com/web/statics/image/sale/1.png" mode=""></image>
+						客户楼盘绑定通知
+					</view> -->
+					<view class="main-between cross-center">
+						<view class="date">交易成功</view>
+						<image class="del" src="https://t17.9026.com/web/statics/image/user-center/del.png" mode=""></image>
+					</view>
+				</view>
+				<view class="center">
+					<!-- <view class="main-between cross-center">
+						<view class="title">整体评价</view>
+						<view class="isopen cross-center">
+							展开
+							<image src="https://t17.9026.com/web/statics/image/user-center/arrow-bottom.png" mode=""></image>
+						</view>
+					</view> -->
+					<!-- <view class="center-text">客户xxxx向您发起了楼盘xxxx的认证通知,请前往我的-我的客户查看并处理</view> -->
+					<!-- <view class="center-img">
+						<image v-for="(item, index) in 5" :key="index" src="https://t17.9026.com/web/statics/image/user-center/1.png" mode=""></image>
+					</view> -->
+					<view class="main-between goods">
+						<view class="main-left desc">
+							<image class="goods-img" src="https://t17.9026.com/web/statics/image/user-center/1.png" mode=""></image>
+							<view>
+								<view class="title t-omit-two">兴城人居ins居家占位套餐居家占位套餐居家占位套餐居家占位套餐居家占位套餐</view>
+								<view class="main-between price">
+									<view>
+										<text class="company">¥</text>
+										<text>2466.00</text>
+									</view>
+									<view>
+										x1
+									</view>
+								</view>
+							</view>
+						</view>
+					<!-- 	<view class="isopen cross-center">
+							收起
+							<image src="https://t17.9026.com/web/statics/image/user-center/arrow-top.png" mode=""></image>
+						</view> -->
+					</view>
+					<view class="main-right cross-bottom total_pay"><text>应付总</text><text>¥</text><text>2388.00</text></view>
+				</view>
+				<view class="main-between footer cross-center border_top">
+					<template>
+						<view class="date">2021-12-11</view>
+						<view class="main-around">
+							<view class="kbtn">上传发票</view>
+							<view class="kbtn">再次购买</view>
+							<view class="kbtn">查看物流</view>
+						</view>
+					</template>
+					<template v-if="false">
+						<view class="left">查看详情</view>
+						<image style="width: 12rpx;height: 22rpx;" src="https://t17.9026.com/web/statics/image/index/arrow-right-gray.png"
+							mode=""></image>
+					</template>
+				</view>
+			</view>
+			<view class="no-more">没有更多了...</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				topMenuData:[
+					{
+						title:'已认证客户',
+						icon:'https://t17.9026.com/web/statics/image/index/certified.png',
+						bgc:'background: linear-gradient(179deg, #266CF3, #5B91FB)'
+					},
+					{
+						title:'未认证客户',
+						icon:'https://t17.9026.com/web/statics/image/index/no_certified.png',
+						bgc:'background: linear-gradient(179deg, #34BAB3, #87E5E2)'
+					},
+					{
+						title:'我的发票',
+						icon:'https://t17.9026.com/web/statics/image/index/my_invoice.png',
+						bgc:'background: linear-gradient(179deg, #6994C9, #A2BBED)'
+					},
+					{
+						title:'我的合同',
+						icon:'https://t17.9026.com/web/statics/image/index/my_contract.png',
+						bgc:'background: linear-gradient(179deg, #8469C9, #C7A3F0)'
+					}
+				]
+			};
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.top-menu{
+		padding: 20rpx 30rpx;
+		.item{
+			width: 158rpx;
+			height: 130rpx;
+			background: linear-gradient(179deg, #8469C9, #C7A3F0);
+			border-radius: 8rpx;
+			.title{
+				font-size: 24rpx;
+				font-weight: bold;
+				color: #FFFFFF;
+				line-height: 34rpx;
+			}
+			image{
+				width: 60rpx;
+				height: 60rpx;
+			}
+		}
+	}
+	.search{
+		width: 680rpx;
+		height: 82rpx;
+		// background: #FFFFFF;
+		border: 1rpx solid #EEEEEE;
+		border-radius: 4rpx;
+		margin: 0 auto;
+		padding-left: 22rpx;
+		image{
+			width: 22rpx;
+			height: 22rpx;
+			margin-right: 18rpx;
+		}
+	}
+	.list{
+		margin-top: 20rpx;
+	}
+	.box {
+		width: 678rpx;
+		height: auto;
+		background: #ffffff;
+		border-radius: 6rpx;
+		padding: 26rpx 31rpx;
+		margin: 0 auto 20rpx;
+	
+		.border_bottom {
+			border-bottom: 1px solid #eaeaea;
+		}
+	
+		.border_top {
+			border-top: 1px solid #eaeaea;
+		}
+	
+		.header {
+			padding-bottom: 21rpx;
+	
+			.head {
+				max-width: 500rpx;
+				height: 48rpx;
+				background: #f6f6f6;
+				border-radius: 24rpx;
+				padding: 0 17rpx;
+				overflow: hidden;
+				image {
+					width: 32rpx;
+					height: 32rpx;
+					margin-right: 14rpx;
+					border-radius: 50%;
+				}
+	
+				font-size: 24rpx;
+				font-weight: 500;
+				color: #666666;
+			}
+	
+			.head1 {
+				max-width: 500rpx;
+				height: 48rpx;
+	overflow: hidden;
+				image {
+					width: 45rpx;
+					height: 45rpx;
+					margin-right: 14rpx;
+					border-radius: 50%;
+				}
+	
+				font-size: 30rpx;
+				font-weight: bold;
+				color: #222222;
+			}
+	
+			.date {
+				font-size: 22rpx;
+				font-weight: 500;
+				color: #222222;
+				margin-right: 30rpx;
+			}
+	
+			.del {
+				width: 36rpx;
+				height: 36rpx;
+			}
+		}
+	
+		.center {
+			padding: 0 0 10rpx;
+	
+			.title {
+				font-size: 30rpx;
+				font-weight: bold;
+				color: #222222;
+			}
+	
+			.isopen {
+				font-size: 24rpx;
+				font-weight: bold;
+				color: #a18353;
+	
+				image {
+					width: 19rpx;
+					height: 12rpx;
+					margin-left: 8rpx;
+				}
+			}
+	
+			.center-text {
+				margin-top: 20rpx;
+				font-size: 24rpx;
+				font-weight: 500;
+				color: #999999;
+				line-height: 34rpx;
+			}
+	
+			.center-img {
+				margin-top: 28rpx;
+	
+				image {
+					width: 146rpx;
+					height: 96rpx;
+					border-radius: 12rpx;
+					margin-right: 15rpx;
+				}
+			}
+	
+			.goods {
+				// padding-top: 42rpx;
+				// border-top: 1rpx solid #EAEAEA;
+	
+				.desc {
+					width: 100%;
+					height: 141rpx;
+					// background: #F8F8F8;
+					border-radius: 6rpx;
+					padding: 18rpx 0 18rpx 24rpx;
+	
+					.goods-img {
+						width: 101rpx;
+						height: 99rpx;
+						border-radius: 8rpx;
+						margin-right: 21rpx;
+					}
+	
+					.title {
+						width: 438rpx;
+						font-size: 26rpx;
+						font-weight: 500;
+						color: #222222;
+						line-height: 34rpx;
+					}
+	
+					.price {
+						width: 470rpx;
+						font-size: 24rpx;
+						font-weight: 500;
+						color: #222222;
+						line-height: 36rpx;
+	
+						.company {}
+					}
+				}
+	
+			}
+			.total_pay{
+				font-size: 24rpx;
+				color: #222222;
+				line-height: 34px;
+				&>text:nth-child(1) { font-weight: 500;margin-right: 8rpx;} 
+				&>text:nth-child(2) { font-weight: 500;font-size: 20rpx;}
+				&>text:nth-child(3) { font-weight: 600;} 
+			}
+		}
+	
+		.footer {
+			padding: 28rpx 0 0;
+	
+			.left {
+				font-size: 28rpx;
+				font-weight: 500;
+				color: #666666;
+			}
+			.date{
+				font-size: 22rpx;
+				font-weight: 500;
+				color: #838584;
+				line-height: 34rpx;
+			}
+			.kbtn{
+				width: 138rpx;
+				height: 52rpx;
+				border: 1rpx solid #999999;
+				border-radius: 4rpx;
+				font-size: 20rpx;
+				font-weight: 500;
+				color: #222222;
+				text-align: center;
+				line-height: 52rpx;
+				margin-left: 20rpx;
+			}
+		}
+	}
+	
+	.no-more {
+		font-size: 24rpx;
+		font-weight: 500;
+		color: #666666;
+		margin-top: 37rpx;
+		text-align: center;
+	}
+</style>

+ 7 - 7
src/pages/sale/properties/addProperties.vue

xqd xqd xqd
@@ -1,20 +1,20 @@
 <template>
 	<view>
 		<view class="main-left cross-center search">
-			<image src="../../../static/image/index/search.png" mode=""></image>
+			<image src="https://t17.9026.com/web/statics/image/index/search.png" mode=""></image>
 			<input style="width: 560rpx;" type="text" value="" placeholder="搜索楼盘" placeholder-style="font-size:28rpx;color:#999;" />
 		</view>
 		<view class="properties_list">
 			<view class="item main-left" v-for="(item,index) in 14" @click="show=true">
 				<view class="left">
-					<image src="../../../static/image/sale/1.png" mode=""></image>
+					<image src="https://t17.9026.com/web/statics/image/sale/1.png" mode=""></image>
 				</view>
 				<view class="main-between-y right ">
 					<view class="title">建业·凯旋广场</view>
 					<view class="addr">成都市武侯区天府一街5号</view>
 					<view class="content">洛阳建业·凯旋广场由建业(住宅)集团投资,洛阳建业凯旋置地有限公司开发...</view>
 				</view>
-				<image class="bg" src="../../../static/image/sale/properties_gradual.png" mode=""></image>
+				<image class="bg" src="https://t17.9026.com/web/statics/image/sale/properties_gradual.png" mode=""></image>
 			</view>
 			<!-- <view style="100rpx"></view>
 			<navigator url="/pages/sale/properties/addProperties" hover-class="navigator-hover">
@@ -24,12 +24,12 @@
 		</view>
 		<u-popup v-model="show" mode="center" border-radius="14" @close="show = false">
 			<view class="model">
-				<viwe class="main-right"><image src="../../../static/image/index/close.png" mode="" style="width: 25rpx;height: 24rpx;" @click="show=false"></image></viwe>
+				<viwe class="main-right"><image src="https://t17.9026.com/web/statics/image/index/close.png" mode="" style="width: 25rpx;height: 24rpx;" @click="show=false"></image></viwe>
 				<viwe class="title">建业·凯旋广场</viwe>
-				<viwe class="main-left cross-center addr"><image src="../../../static/image/index/location.png" mode="" style="width: 18rpx;height: 20rpx;margin-right: 8rpx;"></image>
+				<viwe class="main-left cross-center addr"><image src="https://t17.9026.com/web/statics/image/index/location.png" mode="" style="width: 18rpx;height: 20rpx;margin-right: 8rpx;"></image>
 				成都市武侯区天府一街5号
 				</viwe>
-				<viwe class="img"><image class="img" src="../../../static/image/index/11.png" mode=""></image></viwe>
+				<viwe class="img"><image class="img" src="https://t17.9026.com/web/statics/image/index/11.png" mode=""></image></viwe>
 				<viwe class="desc t-omit-three">建业南湖壹号,建业集团第19年首部旅游度假社区,也将是河南省第一个真正意义上的度假地产项目。</viwe>
 				<button type="default" class="btn">确认选择</button>
 			</view>
@@ -122,7 +122,7 @@
 			height: 206rpx;
 			background: #FFFFFF;
 			border-radius: 10rpx;
-			// background-image: url(../../../static/image/sale/properties_gradual.png);
+			// background-image: url(https://t17.9026.com/web/statics/image/sale/properties_gradual.png);
 			padding: 25rpx;
 			position: relative;
 

+ 3 - 3
src/pages/sale/properties/properties.vue

xqd xqd
@@ -2,14 +2,14 @@
 	<view class="properties_list">
 		<view class="item main-left" v-for="(item,index) in 4">
 			<view class="left">
-				<image src="../../../static/image/sale/1.png" mode=""></image>
+				<image src="https://t17.9026.com/web/statics/image/sale/1.png" mode=""></image>
 			</view>
 			<view class="main-between-y right ">
 				<view class="title">建业·凯旋广场</view>
 				<view class="addr">成都市武侯区天府一街5号</view>
 				<view class="content">洛阳建业·凯旋广场由建业(住宅)集团投资,洛阳建业凯旋置地有限公司开发...</view>
 			</view>
-			<image class="bg" src="../../../static/image/sale/properties_gradual.png" mode=""></image>
+			<image class="bg" src="https://t17.9026.com/web/statics/image/sale/properties_gradual.png" mode=""></image>
 		</view>
 		<view style="100rpx"></view>
 		<navigator url="/pages/sale/properties/addProperties" hover-class="navigator-hover">
@@ -40,7 +40,7 @@
 			height: 206rpx;
 			background: #FFFFFF;
 			border-radius: 10rpx;
-			// background-image: url(../../../static/image/sale/properties_gradual.png);
+			// background-image: url(https://t17.9026.com/web/statics/image/sale/properties_gradual.png);
 			padding: 25rpx;
 			position: relative;
 

+ 504 - 0
src/pages/sale/sale-user-center.vue

xqd
@@ -0,0 +1,504 @@
+<template>
+    <app-layout :haveBackground="false">
+		<image style="height: 396rpx;width: 100%;position: absolute;top: 0;left: 0;" src="https://t17.9026.com/web/statics/image/index/sale_top_bg.png" mode=""></image>
+		<app-nav-bar v-if="true" :fixed="true" :title="mall.name" color="#000" :hasMallSetting="2"
+			background-color=""></app-nav-bar>
+        <app-user-center-top
+            :top-style="4"
+            :top-pic-url="userCenter.top_pic_url"
+            :member-pic-url="userCenter.member_pic_url"
+            :is_icon_super_vip="is_icon_super_vip"
+            user-name-color="#ffffff"
+			:isRealname="false"
+        ></app-user-center-top>
+		
+		<app-my-income></app-my-income>
+
+        <view class="app-my-service" v-if="userCenter.is_menu_status == 1">
+            <!-- <view class="title" v-if="userCenter.menu_title">{{userCenter.menu_title}}</view> -->
+            <view class="list" :class="[listStyle]">
+                <!--  #ifdef MP -->
+               <!-- <view class="item" v-for="(item, index) in userCenter.menus" :key="index" >
+                    <app-jump-button form
+                                     :url="item.link_url"
+                                     :open_type="item.open_type"
+                                     :item="item"
+                                     :arrangement="'row'">
+                        <view style="width: 100%"
+                              class="item-container dir-left-nowrap cross-center"
+                              >
+                            <view class="box-grow-0">
+                                <image :src="item.icon_url" class="icon"></image>
+                            </view>
+                            <view class="box-grow-1" style="max-width: 100%">
+                                <view class="name">{{item.name}}</view>
+                            </view>
+                            <view class="box-grow-0" >
+                                <image src="https://shop.9026.com/web/statics/image/mall/static/icon/arrow-right.png" class="arrow"></image>
+                            </view>
+                        </view>
+                    </app-jump-button>
+                </view> -->
+				<view class="item" v-for="(item, index) in temporaryMenu" :key="index" >
+				    <app-jump-button form
+				                     :url="item.link_url"
+				                     :open_type="item.open_type"
+				                     :item="item"
+				                     :arrangement="'row'">
+				        <view style="width: 100%"
+				              class="item-container dir-left-nowrap cross-center"
+				              >
+				            <view class="box-grow-0">
+				                <image :src="item.icon_url" class="icon"></image>
+				            </view>
+				            <view class="box-grow-1" style="max-width: 100%">
+				                <view class="name">{{item.name}}</view>
+				            </view>
+				            <view class="box-grow-0" >
+				                <image src="https://shop.9026.com/web/statics/image/mall/static/icon/arrow-right.png" class="arrow"></image>
+								<!-- <image src="https://t17.9026.com/web/statics/image/index/arrow-right-bgwrite.png" class="arrow"></image> -->
+				            </view>
+				        </view>
+				    </app-jump-button>
+				</view>
+                <!--  #endif -->
+                <!--  #ifdef H5 -->
+                <block v-for="(item, index) in menus" :key="index">
+                    <view class="item" v-if="item.open_type !== 'app'">
+                        <app-jump-button form
+                                         :url="item.link_url"
+                                         :open_type="item.open_type"
+                                         :item="item"
+                                         :arrangement="`${userCenter.menu_style === '1' ? 'row' : userCenter.menu_style === '2' ? 'column' : ''}`">
+                            <view style="width: 100%"
+                                  class="item-container"
+                                  :class="[
+                                  userCenter.menu_style=='1'?'dir-left-nowrap cross-center':'',
+                                  userCenter.menu_style=='2'?'dir-top-nowrap cross-center':'',
+                              ]">
+                                <view class="box-grow-0">
+                                    <image :src="item.icon_url" class="icon"></image>
+                                </view>
+                                <view class="box-grow-1" style="max-width: 100%">
+                                    <view class="name">{{item.name}}</view>
+                                </view>
+                                <view class="box-grow-0" v-if="userCenter.menu_style=='1'">
+                                    <image src="https://shop.9026.com/web/statics/image/mall/static/icon/arrow-right.png" class="arrow"></image>
+                                </view>
+                            </view>
+                        </app-jump-button>
+                    </view>
+                    <view  v-else :id="item.id" class="item"></view>
+                </block>
+
+                <!--  #endif -->
+            </view>
+        </view>
+        <!-- #ifdef H5 -->
+        <view v-if="userInfo && isShowSetting" class="bd-setting dir-left-nowrap main-between cross-center" @click="routerGo">
+            <view>设置</view>
+            <image src="https://shop.9026.com/web/statics/image/mall/static/icon/arrow-right.png" class="bd-arrow"></image>
+        </view>
+        <!-- #endif -->
+
+        <app-copyright
+            v-if="copyright && copyright.status == '1'"
+            background-color="transparent"
+            :link="copyrightLink"
+            :pic-url="copyright.pic_url"
+            :text="copyright.description"
+        ></app-copyright>
+    </app-layout>
+</template>
+
+<script>
+    import {mapGetters, mapState} from 'vuex';
+    import AppUserCenterTop from '../../components/page-component/app-user-center-top/app-user-center-top.vue';
+    import AppCopyright from '../../components/page-component/app-copyright/app-copyright.vue';
+	import AppNavBar from '@/components/page-component/index/app-nav-bar.vue';
+	
+	import AppMyIncome from '../sale/components/app-my-income.vue';
+	
+
+    export default {
+        name: 'user-center',
+        components: {
+            AppCopyright,
+            AppUserCenterTop,
+			AppNavBar,
+			AppMyIncome,
+        },
+		data(){ 
+			return {
+				temporaryMenu:[
+					{
+						icon_url: "https://t17.9026.com/web/statics/image/index/order-icon.png",
+						key: "pintuan",
+						link_url: "/pages/sale/mySaleOrder",
+						name: "我的订单",
+						open_type: "navigate",
+					},
+					{
+						icon_url: "https://t17.9026.com/web/statics/image/index/kehu.png",
+						key: "pintuan",
+						link_url: "/pages/sale/cusmter/list",
+						name: "我的客户",
+						open_type: "navigate",
+					},
+					{
+						icon_url: "https://t17.9026.com/web/statics/image/index/lp.png",
+						key: "pintuan",
+						link_url: "/pages/sale/properties/properties",
+						name: "我负责的楼盘",
+						open_type: "navigate",
+					},
+					{
+						icon_url: "https://t17.9026.com/web/statics/image/index/xx.png",
+						key: "pintuan",
+						link_url: "/pages/user-center/news/news",
+						name: "我的消息",
+						open_type: "navigate",
+					},
+					{
+						icon_url: "https://t17.9026.com/web/statics/image/index/m.png",
+						key: "pintuan",
+						link_url: "",
+						name: "我的身份码",
+						open_type: "navigate",
+					},
+					{
+						icon_url: "https://t17.9026.com/web/statics/image/index/kf.png",
+						key: "pintuan",
+						link_url: "",
+						name: "联系客服",
+						open_type: "navigate",
+					}
+				]
+			}
+		},
+        computed: {
+            ...mapState({
+                copyright: state => state.mallConfig.copyright,
+                userInfo: state => state.user.info,
+                is_icon_super_vip: function (state) {
+                    return state.mallConfig.mall.setting.is_icon_super_vip;
+                },
+                foot_bar: function(state) {
+					let val=this.$utils.deepClone(state.userCenter.data.foot_bar)
+					if(val){
+						val.splice(1, 0, {icon_url:'',name:'我的优惠券'})
+						return val;
+					}else{
+						return state.userCenter.data.foot_bar
+					}
+                },
+                account_bar_status: function() {
+                    return this.userCenter.account_bar ? this.userCenter.account_bar.status : 0;
+                },
+                // #ifdef H5
+                isWechat: function() {
+                    return this.$jwx.isWechat();
+                },
+                menus: function() {
+                    let menus = this.userCenter.menus;
+                    menus.forEach(item => {
+                        if(item.open_type === 'app') {
+                            item.id = this.$utils.guid('user-center');
+                            let username = this.$utils.getUrlParamApp(item.link_url, 'username');
+                            let path = this.$utils.getUrlParamApp(item.link_url, 'path');
+                            let strImg = ``;
+                            let size = uni.upx2px(50) + 'px';
+                            let style = `
+                                <style>
+                                .app-button-row {
+                                    height: 100%;
+                                    width: 100%;
+                                    display: flex;
+                                    flex-direction: row;
+                                    justify-content: center;
+                                    align-items: center;
+                                }
+
+                                .app-button-column {
+                                    height: 100%;
+                                    width: 100%;
+                                    display: flex;
+                                    flex-direction: column;
+                                    justify-content: center;
+                                    align-items: center;
+                                }
+                                .box-grow-0 {
+                                  min-width: 0;
+                                  -webkit-box-flex: 0;
+                                  -webkit-flex-grow: 0;
+                                  -ms-flex-positive: 0;
+                                  flex-grow: 0;
+                                  -webkit-flex-shrink: 0;
+                                  -ms-flex-negative: 0;
+                                  flex-shrink: 0;
+                                }
+
+                                .box-grow-1 {
+                                  min-width: 0;
+                                  -webkit-box-flex: 1;
+                                  -webkit-flex-grow: 1;
+                                  -ms-flex-positive: 1;
+                                  flex-grow: 1;
+                                  -webkit-flex-shrink: 1;
+                                  -ms-flex-negative: 1;
+                                  flex-shrink: 1;
+                                }
+
+                                    .name {
+                                        color: #666666;
+                                        white-space: nowrap;
+                                        overflow: hidden;
+                                        text-overflow: ellipsis;
+                                    }
+                                    .dir-left-nowrap {
+                                      display: -webkit-box;
+                                      display: -webkit-flex;
+                                      display: flex;
+                                      -webkit-flex-direction: row;
+                                      flex-direction: row;
+                                      flex-wrap: nowrap;
+                                    }
+
+                                .dir-top-nowrap {
+                                  display: -webkit-box;
+                                  display: -webkit-flex;
+                                  display: flex;
+                                  -webkit-box-orient: vertical;
+                                  -webkit-flex-direction: column;
+                                  flex-direction: column;
+                                  flex-wrap: nowrap;
+                                }
+
+                                .cross-center {
+                                  display: -webkit-box;
+                                  display: -webkit-flex;
+                                  display: flex;
+                                  -webkit-align-items: center;
+                                  align-items: center;
+                                }
+							</style>`;
+                            let classStr = '';
+                            let font = '';
+                            let padding = '';
+                            let arrow = require("https://shop.9026.com/web/statics/image/mall/static/icon/arrow-right.png");
+                            if (true) {
+                                let margin = uni.upx2px(16);
+                                strImg = `<img src="${item.icon_url}" width="${size}" height="${size}" style="margin-right: ${margin}px"/>`;
+                                font = '17px';
+                                padding = 0;
+                            } else if (this.userCenter.menu_style == 2) {
+                                let margin = uni.upx2px(28);
+                                strImg = `<img src="${item.icon_url}" width="${size}" height="${size}" style="margin-bottom: ${margin}px"/>`;
+                                classStr = 'name';
+                                font = uni.upx2px(24) + 'px';
+                                padding = `0px` + ' ' +uni.upx2px(12) +'px';
+                            }
+
+                            let str = `<div class="box-grow-0">${strImg}</div>
+                                        <div class="box-grow-1" style="max-width: 100%;"><div style="padding:${padding};font-size: ${font}" class="${classStr}">${item.name}</div></div>`;
+                            if (true) {
+                                let width = uni.upx2px(12);
+                                let height = uni.upx2px(22);
+                                str+= ` <div class="box-grow-0">
+                                    <img src="${arrow}" width="${width}px" height="${height}px"/>
+                                </div>`
+                            }
+                            let div = ``;
+                            let div1 = '';
+                            if (true) {
+                                let padding1 = uni.upx2px(20) + 'px';
+                                let padding2 = uni.upx2px(32) + 'px';
+                                div1 = `<div style="width: 100%;padding: ${padding1} ${padding2}" class="dir-left-nowrap cross-center">${str}</div>`
+                            } else {
+                                let padding = uni.upx2px(24) + 'px';
+                                div1 = `<div style="width: 100%;padding: ${padding} 0" class="dir-top-nowrap cross-center">${str}</div>`
+                            }
+                            if (true) {
+                                div = `<div class="app-button-row">${div1}</div>`
+                            } else {
+                                div = `<div class="app-button-column">${div1}</div>`
+                            }
+                            style += div;
+                            this.$utils.createWxOpenLaunchWeapp(item.id, username, path, style);
+                        }
+                    });
+                    return menus;
+                }
+                // #endif
+            }),
+            copyrightLink() {
+                if (!this.copyright) return {};
+                let { open_type, new_link_url, params } = this.copyright.link;
+                return {
+                    openType: open_type,
+                    url: new_link_url,
+                    params: params ? params : []
+                };
+            },
+            ...mapGetters('mallConfig', {
+                getTheme: 'getTheme'
+            }),
+            ...mapGetters('userCenter',{
+                userCenter: 'userCenter'
+            }),
+            listStyle() {
+                // if (this.userCenter.menu_style == 1) return 'row';
+                // if (this.userCenter.menu_style == 2) return 'grid dir-left-wrap';
+                return 'row';
+            },
+            // #ifdef H5
+            isShowSetting: function () {
+                return this.$storage.getStorageSync('platform') !== 'wechat';
+            }
+            // #endif
+        },
+        onLoad() { 
+			this.$commonLoad.onload();
+            // #ifdef H5
+            this.$jwx.config();
+            // #endif
+			console.log('查看',this)
+        },
+        onShow() {
+            this.$event.on(this.$const.EVENT_USER_LOGIN).then(() => {
+                uni.redirectTo({
+                    url: `/pages/user-center/user-center`
+                });
+            });
+            // if (this.$user.isLogin()) {
+            //     this.$store.dispatch('user/refresh');
+            // }
+            this.$nextTick().then(() => {
+                this.$store.dispatch('userCenter/data');
+            });
+        },
+        methods: {
+            
+            // #ifdef H5
+            routerGo() {
+                uni.navigateTo({
+                    url: '/pages/registered/setting'
+                });
+            },
+            // #endif
+
+        },
+    }
+</script>
+
+<style scoped lang="scss">
+.app-my-service {
+    width: #{702rpx};
+    border-radius: #{16rpx};
+    margin: #{24rpx} auto;
+    box-shadow: 0 0 #{8rpx} rgba(0, 0, 0, .05);
+    background: #fff;
+
+    .title {
+        padding: #{32rpx} #{32rpx} #{16rpx};
+    }
+
+    .list {
+        .item {
+            .icon {
+                width: #{50rpx};
+                height: #{50rpx};
+                display: block;
+            }
+
+            .arrow {
+                width: #{12rpx};
+                height: #{22rpx};
+            }
+        }
+    }
+
+    .list.row {
+        .item-container {
+            padding: #{20rpx} #{32rpx};
+        }
+
+        .icon {
+            margin-right: #{16rpx};
+        }
+    }
+
+    .list.grid {
+        .item {
+            width: 25%;
+
+            .icon {
+                margin-bottom: #{28rpx};
+            }
+
+            .name {
+                padding: 0 #{12rpx};
+                font-size: $uni-font-size-weak-one;
+                color: $uni-general-color-one;
+                white-space: nowrap;
+                overflow: hidden;
+                text-overflow: ellipsis;
+            }
+        }
+
+        .item-container {
+            padding: #{24rpx} 0;
+        }
+    }
+}
+.u-foot-box {
+    position: relative;
+    height: 104upx;
+}
+.u-icon {
+    margin-top: 44upx;
+    width: 40upx;
+    height: 40upx;
+    margin-right: 17upx;
+}
+.u-foot-item {
+    font-size: #{26rpx};
+    color: #666666;
+    padding-top: #{14rpx};
+    width: 50%;
+}
+.u-foot-info {
+    text-align: center;
+}
+.u-foot-num {
+    font-size: 32upx;
+    margin-bottom: 10upx;
+}
+.u-line {
+    height: 40upx;
+    width: 2upx;
+    background-color: #666666;
+    position: absolute;
+    top: 45upx;
+    left: 50%;
+    margin-left: -2upx;
+}
+// #ifdef H5
+.bd-setting {
+    width: 702upx;
+    height: 100upx;
+    line-height: 100upx;
+    border-radius: 16upx;
+    padding: 0 33upx;
+    background: #ffffff;
+    margin: 24upx auto;
+    box-shadow: 0 0 #{8rpx} rgba(0, 0, 0, .05);
+    font-size:32upx;
+    color: #353535;
+}
+.bd-arrow {
+    width: #{12rpx};
+    height: #{22rpx};
+}
+// #endif
+</style>

+ 16 - 5
src/pages/sale/sale_login/sale_login.vue

xqd xqd
@@ -1,19 +1,19 @@
 <template>
 	<view>
 		<view class="main-center autoCenter">
-			<image style="width: 229rpx; height: 58rpx;" src="../../../static/image/sale/xcrj_login.png" mode="">
+			<image style="width: 229rpx; height: 58rpx;" src="https://t17.9026.com/web/statics/image/sale/xcrj_login.png" mode="">
 			</image>
 			<view class="title">销售端</view>
 		</view>
 		<view class="login_form">
 			<view class="item">
 				<view class="title">手机号</view>
-				<input class="input" name="input" placeholder-class="plh_class" placeholder="请输入您的手机号" />
+				<input class="input" v-model="account" type="number" placeholder-class="plh_class" placeholder="请输入您的手机号" />
 				<view class="b_line"></view>
 			</view>
 			<view class="item">
 				<view class="title">密码</view>
-				<input class="input" name="input" placeholder-class="plh_class" placeholder="请输入请输入密码" />
+				<input class="input" v-model="password" type="password" placeholder-class="plh_class" placeholder="请输入请输入密码" />
 				<view class="b_line"></view>
 			</view>
 			<view class="forget">忘记密码</view>
@@ -26,13 +26,24 @@
 	export default {
 		data() {
 			return {
-
+				account:'wangwu',
+				password:'qweqweqwe',
 			};
 		},
 		methods:{
 			login(){
+				// this.$request({
+				//     url: this.$api.sale.sale_login,
+				//     data: {
+				//         account:this.account,
+				// 		password:this.password
+				//     },
+				//     method:'post'
+				// }).then(res=>{
+				// 	console.log(res)
+				// })
 				uni.redirectTo({
-					url:'/pages/sale/my/my'
+					url:'/pages/sale/sale-user-center'
 				})
 			}
 		}

+ 50 - 0
src/pages/user-center/about-mall/about-mall.vue

xqd
@@ -0,0 +1,50 @@
+<template>
+	<view class="main-center-y cross-center page">
+		<view class="i">
+			商城协议<image src="../../../static/index/arrow-right-ewrte.png" mode=""></image>
+		</view>
+		<view class="i">
+			投诉建议<image src="../../../static/index/arrow-right-ewrte.png" mode=""></image>
+		</view>
+		<view class="i">
+			联系客服<image src="../../../static/index/arrow-right-ewrte.png" mode=""></image>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			};
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.page{
+		height: 100vh;
+		background-color: #fff;
+	}
+	.i{
+		width: 600rpx;
+		height: 92rpx;
+		background: #F9F9F9;
+		border-radius: 46rpx;
+		font-size: 32rpx;
+		font-weight: 500;
+		color: #000000;
+		text-align: center;
+		line-height: 92rpx;
+		margin: 22rpx auto;
+		position: relative;
+		image{
+			width: 29rpx;
+			height: 7rpx;
+			position: absolute;
+			top: 46rpx;
+			right: 44rpx;
+		}
+	}
+</style>

+ 5 - 5
src/pages/user-center/evaluate/evaluate.vue

xqd xqd
@@ -1,7 +1,7 @@
 <template>
 	<view >
 		<view class="main-left evaObj">
-			<image src="../../../static/image/sale/1.png" mode=""></image>
+			<image src="https://t17.9026.com/web/statics/image/sale/1.png" mode=""></image>
 			<view class="main-between-y">
 				<view class="title">几度米黄色真皮沙发组合,可调节桦木皮艺转角沙发</view>
 				<view class="main-between cross-center">
@@ -13,25 +13,25 @@
 		<view class="evalContent">
 			<view class="item">
 				<view class="main-left cross-center title">
-					<image class="icon" src="../../../static/image/user-center/evaluate1.png" mode=""></image>整体评价
+					<image class="icon" src="https://t17.9026.com/web/statics/image/user-center/evaluate1.png" mode=""></image>整体评价
 				</view>
 				<textarea class="evalClass"  placeholder-class="evalphlVal" value="" maxlength="30" placeholder="为了我们更好的反馈,请您填写整体评价" />
 			</view>
 			<view class="item">
 				<view class="main-left cross-center title">
-					<image class="icon" src="../../../static/image/user-center/evaluate2.png" mode=""></image>材质质量
+					<image class="icon" src="https://t17.9026.com/web/statics/image/user-center/evaluate2.png" mode=""></image>材质质量
 				</view>
 				<textarea class="evalClass"  placeholder-class="evalphlVal" value="" maxlength="30" placeholder="为了我们更好的反馈,请您填写材质质量" />
 			</view>
 			<view class="item">
 				<view class="main-left cross-center title">
-					<image class="icon" src="../../../static/image/user-center/evaluate3.png" mode=""></image>商品风格
+					<image class="icon" src="https://t17.9026.com/web/statics/image/user-center/evaluate3.png" mode=""></image>商品风格
 				</view>
 				<textarea class="evalClass"  placeholder-class="evalphlVal" value="" maxlength="30" placeholder="为了我们更好的反馈,请您填写材质质量" />
 			</view>
 		</view>
 		<view class="uploddimg" >
-			<image src="../../../static/image/user-center/takePicture.png" mode=""></image>
+			<image src="https://t17.9026.com/web/statics/image/user-center/takePicture.png" mode=""></image>
 			<view class="text">上传图片</view>
 		</view>
 		

+ 14 - 13
src/pages/user-center/evaluate/list.vue

xqd xqd xqd xqd xqd xqd xqd
@@ -3,12 +3,12 @@
 		<view class="box">
 			<view class="main-between cross-center header">
 				<view class="cross-center head">
-					<image src="../../../static/image/sale/1.png" mode=""></image>
+					<image src="https://t17.9026.com/web/statics/image/sale/1.png" mode=""></image>
 					周先生
 				</view>
 				<view class="main-between cross-center">
 					<view class="date">2021-11-17</view>
-					<image class="del" src="../../../static/image/user-center/del.png" mode=""></image>
+					<image class="del" src="https://t17.9026.com/web/statics/image/user-center/del.png" mode=""></image>
 				</view>
 			</view>
 			<view class="center">
@@ -16,14 +16,14 @@
 					<view class="title">整体评价</view>
 					<view class="isopen cross-center">
 						展开
-						<image src="../../../static/image/user-center/arrow-bottom.png" mode=""></image>
+						<image src="https://t17.9026.com/web/statics/image/user-center/arrow-bottom.png" mode=""></image>
 					</view>
 				</view>
 				<view class="center-text">基本上任何一件服装都包含了来自可能多达数十位供应商的零部件和服务</view>
-				<view class="center-img" v-if="false"><image v-for="(item, index) in 5" :key="index" src="../../../static/image/user-center/1.png" mode=""></image></view>
+				<view class="center-img" v-if="false"><image v-for="(item, index) in 5" :key="index" src="https://t17.9026.com/web/statics/image/user-center/1.png" mode=""></image></view>
 				<view class="main-between goods" v-if="false">
 					<view class="main-left desc">
-						<image class="goods-img" src="../../../static/image/user-center/1.png" mode=""></image>
+						<image class="goods-img" src="https://t17.9026.com/web/statics/image/user-center/1.png" mode=""></image>
 						<view>
 							<view class="title">兴城人居ins居家占位套餐</view>
 							<view class="price">
@@ -34,7 +34,7 @@
 					</view>
 					<view class="isopen cross-center">
 						收起
-						<image src="../../../static/image/user-center/arrow-top.png" mode=""></image>
+						<image src="https://t17.9026.com/web/statics/image/user-center/arrow-top.png" mode=""></image>
 					</view>
 				</view>
 			</view>
@@ -42,12 +42,12 @@
 		<view class="box">
 			<view class="main-between cross-center header">
 				<view class="cross-center head">
-					<image src="../../../static/image/sale/1.png" mode=""></image>
+					<image src="https://t17.9026.com/web/statics/image/sale/1.png" mode=""></image>
 					周先生
 				</view>
 				<view class="main-between cross-center">
 					<view class="date">2021-11-17</view>
-					<image class="del" src="../../../static/image/user-center/del.png" mode=""></image>
+					<image class="del" src="https://t17.9026.com/web/statics/image/user-center/del.png" mode=""></image>
 				</view>
 			</view>
 			<view class="center">
@@ -55,14 +55,14 @@
 					<view class="title">整体评价</view>
 					<view class="isopen cross-center">
 						展开
-						<image src="../../../static/image/user-center/arrow-bottom.png" mode=""></image>
+						<image src="https://t17.9026.com/web/statics/image/user-center/arrow-bottom.png" mode=""></image>
 					</view>
 				</view>
 				<view class="center-text">基本上任何一件服装都包含了来自可能多达数十位供应商的零部件和服务</view>
-				<view class="center-img"><image v-for="(item, index) in 5" :key="index" src="../../../static/image/user-center/1.png" mode=""></image></view>
+				<view class="center-img"><image v-for="(item, index) in 5" :key="index" src="https://t17.9026.com/web/statics/image/user-center/1.png" mode=""></image></view>
 				<view class="main-between goods">
 					<view class="main-left desc">
-						<image class="goods-img" src="../../../static/image/user-center/1.png" mode=""></image>
+						<image class="goods-img" src="https://t17.9026.com/web/statics/image/user-center/1.png" mode=""></image>
 						<view>
 							<view class="title">兴城人居ins居家占位套餐</view>
 							<view class="price">
@@ -73,7 +73,7 @@
 					</view>
 					<view class="isopen cross-center">
 						收起
-						<image src="../../../static/image/user-center/arrow-top.png" mode=""></image>
+						<image src="https://t17.9026.com/web/statics/image/user-center/arrow-top.png" mode=""></image>
 					</view>
 				</view>
 			</view>
@@ -107,11 +107,12 @@ export default {
 		padding-bottom: 21rpx;
 		border-bottom: 1px solid #eaeaea;
 		.head {
-			width: auto;
+			max-width: 500rpx;
 			height: 48rpx;
 			background: #f6f6f6;
 			border-radius: 24rpx;
 			padding: 0 17rpx;
+			overflow: hidden;
 			image {
 				width: 32rpx;
 				height: 32rpx;

+ 13 - 13
src/pages/user-center/news/news.vue

xqd xqd xqd xqd xqd
@@ -2,17 +2,17 @@
 	<view class="page">
 		<view class="box" v-for="(item,index) in 3" :key="index">
 			<view class="main-between cross-center header">
-				<!-- <view class="cross-center head" :class="{'border_bottom':true}">
-					<image src="../../../static/image/sale/1.png" mode=""></image>
+				<!-- <view class="cross-center head t-omit" :class="{'border_bottom':true}">
+					<image src="https://t17.9026.com/web/statics/image/sale/1.png" mode=""></image>
 					周先生
 				</view> -->
 				<view class="cross-center head1">
-					<image src="../../../static/image/sale/1.png" mode=""></image>
+					<image src="https://t17.9026.com/web/statics/image/sale/1.png" mode=""></image>
 					客户楼盘绑定通知
 				</view>
 				<view class="main-between cross-center">
 					<!-- <view class="date">2021-11-17</view> -->
-					<image class="del" src="../../../static/image/user-center/del.png" mode=""></image>
+					<image class="del" src="https://t17.9026.com/web/statics/image/user-center/del.png" mode=""></image>
 				</view>
 			</view>
 			<view class="center">
@@ -20,16 +20,16 @@
 					<view class="title">整体评价</view>
 					<view class="isopen cross-center">
 						展开
-						<image src="../../../static/image/user-center/arrow-bottom.png" mode=""></image>
+						<image src="https://t17.9026.com/web/statics/image/user-center/arrow-bottom.png" mode=""></image>
 					</view>
 				</view> -->
 				<view class="center-text">客户xxxx向您发起了楼盘xxxx的认证通知,请前往我的-我的客户查看并处理</view>
 				<!-- <view class="center-img">
-					<image v-for="(item, index) in 5" :key="index" src="../../../static/image/user-center/1.png" mode=""></image>
+					<image v-for="(item, index) in 5" :key="index" src="https://t17.9026.com/web/statics/image/user-center/1.png" mode=""></image>
 				</view>
 				<view class="main-between goods">
 					<view class="main-left desc">
-						<image class="goods-img" src="../../../static/image/user-center/1.png" mode=""></image>
+						<image class="goods-img" src="https://t17.9026.com/web/statics/image/user-center/1.png" mode=""></image>
 						<view>
 							<view class="title">兴城人居ins居家占位套餐</view>
 							<view class="price">
@@ -40,13 +40,13 @@
 					</view>
 					<view class="isopen cross-center">
 						收起
-						<image src="../../../static/image/user-center/arrow-top.png" mode=""></image>
+						<image src="https://t17.9026.com/web/statics/image/user-center/arrow-top.png" mode=""></image>
 					</view>
 				</view> -->
 			</view>
 			<view class="main-between footer cross-center border_top">
 				<view class="left">查看详情</view>
-				<image style="width: 12rpx;height: 22rpx;" src="../../../static/image/index/arrow-right-gray.png"
+				<image style="width: 12rpx;height: 22rpx;" src="https://t17.9026.com/web/statics/image/index/arrow-right-gray.png"
 					mode=""></image>
 			</view>
 		</view>
@@ -88,12 +88,12 @@
 			padding-bottom: 21rpx;
 
 			.head {
-				width: auto;
+				max-width: 500rpx;
 				height: 48rpx;
 				background: #f6f6f6;
 				border-radius: 24rpx;
 				padding: 0 17rpx;
-
+overflow: hidden;
 				image {
 					width: 32rpx;
 					height: 32rpx;
@@ -107,9 +107,9 @@
 			}
 
 			.head1 {
-				width: auto;
+				max-width: 500rpx;
 				height: 48rpx;
-
+overflow: hidden;
 				image {
 					width: 45rpx;
 					height: 45rpx;

+ 11 - 10
src/pages/user-center/user-center.vue

xqd xqd xqd xqd
@@ -1,10 +1,11 @@
 <template>
     <app-layout :haveBackground="true">
-		<app-nav-bar v-if="true" :fixed="true" :title="mall.name" color="#000"
-			background-color="#eae2dd"></app-nav-bar>
+		<image style="height: 396rpx;width: 100%;position: absolute;top: 0;left: 0;" :src="userCenter.top_pic_url" mode=""></image>
+		<app-nav-bar v-if="true" :fixed="true" :title="mall.name" color="#000" :hasMallSetting="2"
+			background-color=""></app-nav-bar>
         <app-user-center-top
             :top-style="4"
-            :top-pic-url="userCenter.top_pic_url"
+            
             :member-pic-url="userCenter.member_pic_url"
             :is_icon_super_vip="is_icon_super_vip"
             user-name-color="#262626"
@@ -21,9 +22,9 @@
             <!-- <view class="u-line"></view> -->
         </view>
 
-        <view style="padding: 0 24rpx">
+        <!-- <view style="padding: 0 24rpx">
             <app-vip-card></app-vip-card>
-        </view>
+        </view> -->
 
         <!-- <app-account-balance
             v-if="account_bar_status == 1"
@@ -31,7 +32,7 @@
             :round="true"
             :input-user-center="userCenter"
         ></app-account-balance> -->
-		<app-my-income></app-my-income>
+		<!-- <app-my-income></app-my-income> -->
         <app-my-order
             v-if="userCenter.is_order_bar_status == 1"
             :margin="true"
@@ -171,28 +172,28 @@
 					{
 						icon_url: "https://t1.9026.com/plugins/pintuan/assets/img/pick-link/icon-pintuan.png",
 						key: "pintuan",
-						link_url: "/plugins/pt/order/order",
+						link_url: "/pages/user-center/evaluate/list",
 						name: "我的评价",
 						open_type: "navigate",
 					},
 					{
 						icon_url: "https://t1.9026.com/plugins/pintuan/assets/img/pick-link/icon-pintuan.png",
 						key: "pintuan",
-						link_url: "/plugins/pt/order/order",
+						link_url: "",
 						name: "我的楼盘",
 						open_type: "navigate",
 					},
 					{
 						icon_url: "https://t1.9026.com/plugins/pintuan/assets/img/pick-link/icon-pintuan.png",
 						key: "pintuan",
-						link_url: "/plugins/pt/order/order",
+						link_url: "/pages/user-center/about-mall/about-mall",
 						name: "关于商城",
 						open_type: "navigate",
 					},
 					{
 						icon_url: "https://t1.9026.com/plugins/pintuan/assets/img/pick-link/icon-pintuan.png",
 						key: "pintuan",
-						link_url: "/plugins/pt/order/order",
+						link_url: "/pages/sale/sale_login/sale_login",
 						name: "切换销售端",
 						open_type: "navigate",
 					}

+ 2 - 2
src/siteInfo.js

xqd
@@ -7,8 +7,8 @@
 module.exports = {
 	acid: -1,
 	version: "1.0.0",
-	siteroot: "https://t1.9026.com",
-	apiroot: "https://t1.9026.com//web/index.php?_mall_id=10000"
+	siteroot: "https://t17.9026.com",
+	apiroot: "https://t17.9026.com//web/index.php?_mall_id=10000"
 	
 	// siteroot: "https://shop.9026.com",
 	// apiroot: "https://shop.9026.com/web/index.php?_mall_id=21999"

binární
src/static/image/index/addcustomerbg.png


binární
src/static/image/index/arrow-right-bgwrite.png


binární
src/static/image/index/arrow-right-ewrte.png


binární
src/static/image/index/camera.png


binární
src/static/image/index/certified.png


binární
src/static/image/index/headbg.png


binární
src/static/image/index/kehu.png


binární
src/static/image/index/kf.png


binární
src/static/image/index/lp.png


binární
src/static/image/index/m.png


binární
src/static/image/index/my_contract.png


binární
src/static/image/index/my_invoice.png


binární
src/static/image/index/no_certified.png


binární
src/static/image/index/order-icon.png


binární
src/static/image/index/sale_top_bg.png


binární
src/static/image/index/saler_bg.png


binární
src/static/image/index/xx.png


+ 0 - 1
src/uni.scss

xqd
@@ -1,4 +1,3 @@
-@import 'uview-ui/theme.scss';
 
 .text-center {
   text-align: center;

+ 0 - 21
src/uni_modules/uview-ui/LICENSE

xqd
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2020 www.uviewui.com
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.

+ 0 - 105
src/uni_modules/uview-ui/README.md

xqd
@@ -1,105 +0,0 @@
-<p align="center">
-    <img alt="logo" src="https://uviewui.com/common/logo.png" width="120" height="120" style="margin-bottom: 10px;">
-</p>
-<h3 align="center" style="margin: 30px 0 30px;font-weight: bold;font-size:40px;">uView</h3>
-<h3 align="center">多平台快速开发的UI框架</h3>
-
-
-## 说明
-
-uView UI,是[uni-app](https://uniapp.dcloud.io/)生态优秀的UI框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水
-
-## 特性
-
-- 兼容安卓,iOS,微信小程序,H5,QQ小程序,百度小程序,支付宝小程序,头条小程序
-- 60+精选组件,功能丰富,多端兼容,让您快速集成,开箱即用
-- 众多贴心的JS利器,让您飞镖在手,召之即来,百步穿杨
-- 众多的常用页面和布局,让您专注逻辑,事半功倍
-- 详尽的文档支持,现代化的演示效果
-- 按需引入,精简打包体积
-
-
-## 安装
-
-```bash
-# npm方式安装
-npm i uview-ui
-```
-
-## 快速上手
-
-1. `main.js`引入uView库
-```js
-// main.js
-import uView from 'uview-ui';
-Vue.use(uView);
-```
-
-2. `App.vue`引入基础样式(注意style标签需声明scss属性支持)
-```css
-/* App.vue */
-<style lang="scss">
-@import "uview-ui/index.scss";
-</style>
-```
-
-3. `uni.scss`引入全局scss变量文件
-```css
-/* uni.scss */
-@import "uview-ui/theme.scss";
-```
-
-4. `pages.json`配置easycom规则(按需引入)
-
-```js
-// pages.json
-{
-	"easycom": {
-		// npm安装的方式不需要前面的"@/",下载安装的方式需要"@/"
-		// npm安装方式
-		"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
-		// 下载安装方式
-		// "^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
-	},
-	// 此为本身已有的内容
-	"pages": [
-		// ......
-	]
-}
-```
-
-请通过[快速上手](https://www.uviewui.com/components/quickstart.html)了解更详细的内容 
-
-## 使用方法
-配置easycom规则后,自动按需引入,无需`import`组件,直接引用即可。
-
-```html
-<template>
-	<u-button>按钮</u-button>
-</template>
-```
-
-请通过[快速上手](https://www.uviewui.com/components/quickstart.html)了解更详细的内容 
-
-## 链接
-
-- [官方文档](https://www.uviewui.com/)
-- [更新日志](https://www.www.uviewui.com/components/changelog.html)
-- [升级指南](https://www.uviewui.com/components/changelog.html)
-- [关于我们](https://www.uviewui.com/cooperation/about.html)
-
-## 预览
-
-您可以通过**微信**扫码,查看最佳的演示效果。
-<br>
-<br>
-<img src="https://uviewui.com/common/weixin_mini_qrcode.png" width="220" height="220" >
-
-## 捐赠uView的研发
-
-uView文档和源码全部开源免费,如果您认为uView帮到了您的开发工作,您可以捐赠uView的研发工作,捐赠无门槛,哪怕是一杯可乐也好(相信这比打赏主播更有意义)。
-
-<img src="https://uviewui.com/common/alipay.png" width="220" ><img style="margin-left: 100px;" src="https://uviewui.com/common/wechat.png" width="220" >
-
-## 版权信息
-uView遵循[MIT](https://en.wikipedia.org/wiki/MIT_License)开源协议,意味着您无需支付任何费用,也无需授权,即可将uView应用到您的产品中。

+ 0 - 35
src/uni_modules/uview-ui/changelog.md

xqd
@@ -1,35 +0,0 @@
-## 2.0.3(2021-11-16)
-## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
-
-# uView2.0重磅发布,利剑出鞘,一统江湖
-
-1. uView2.0已实现全面兼容nvue
-2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升
-3. 目前uView2.0为公测阶段,相关细节可能会有变动
-4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html)
-5. 处理modal的confirm回调事件拼写错误问题
-6. 处理input组件@input事件参数错误问题
-7. 其他一些修复
-## 2.0.2(2021-11-16)
-## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
-
-# uView2.0重磅发布,利剑出鞘,一统江湖
-
-1. uView2.0已实现全面兼容nvue
-2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升
-3. 目前uView2.0为公测阶段,相关细节可能会有变动
-4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html)
-5. 修复input组件formatter参数缺失问题
-6. 优化loading-icon组件的scss写法问题,防止不兼容新版本scss
-## 2.0.0(2020-11-15)
-## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
-
-# uView2.0重磅发布,利剑出鞘,一统江湖
-
-1. uView2.0已实现全面兼容nvue
-2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升
-3. 目前uView2.0为公测阶段,相关细节可能会有变动
-4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html)
-5. 修复input组件formatter参数缺失问题
-
-

+ 0 - 74
src/uni_modules/uview-ui/components/u--form/u--form.vue

xqd
@@ -1,74 +0,0 @@
-<template>
-	<uvForm
-		ref="uForm"
-		:model="model"
-		:rules="rules"
-		:errorType="errorType"
-		:borderBottom="borderBottom"
-		:labelPosition="labelPosition"
-		:labelWidth="labelWidth"
-		:labelAlign="labelAlign"
-		:labelStyle="labelStyle"
-		:customStyle="customStyle"
-	>
-		<slot />
-	</uvForm>
-</template>
-
-<script>
-	/**
-	 * 此组件存在的理由是,在nvue下,u-form被uni-app官方占用了,u-form在nvue中相当于form组件
-	 * 所以在nvue下,取名为u--form,内部其实还是u-form.vue,只不过做一层中转
-	 */
-	import uvForm from '../u-form/u-form.vue';
-	import props from '../u-form/props.js'
-	export default {
-		// #ifdef MP-WEIXIN
-		name: 'u-form',
-		// #endif
-		// #ifndef MP-WEIXIN
-		name: 'u--form',
-		// #endif
-		mixins: [uni.$u.mpMixin, props, uni.$u.mixin],
-		components: {
-			uvForm
-		},
-		created() {
-			this.children = []
-		},
-		methods: {
-			validate() {
-				/**
-				 * 在微信小程序中,通过this.$parent拿到的父组件是u--form,而不是其内嵌的u-form
-				 * 导致在u-form组件中,拿不到对应的children数组,从而校验无效,所以这里每次调用u-form组件中的
-				 * 对应方法的时候,在小程序中都先将u--form的children赋值给u-form中的children
-				 */
-				// #ifdef MP-WEIXIN
-				this.setMpData()
-				// #endif
-				return this.$refs.uForm.validate()
-			},
-			validateField(value, callback) {
-				// #ifdef MP-WEIXIN
-				this.setMpData()
-				// #endif
-				return this.$refs.uForm.validateField(value, callback)
-			},
-			resetFields() {
-				// #ifdef MP-WEIXIN
-				this.setMpData()
-				// #endif
-				return this.$refs.uForm.resetFields()
-			},
-			clearValidate(props) {
-				// #ifdef MP-WEIXIN
-				this.setMpData()
-				// #endif
-				return this.$refs.uForm.clearValidate(props)
-			},
-			setMpData() {
-				this.$refs.uForm.children = this.children
-			}
-		},
-	}
-</script>

+ 0 - 40
src/uni_modules/uview-ui/components/u--image/u--image.vue

xqd
@@ -1,40 +0,0 @@
-<template>
-	<uvImage 
-		:src="src"
-		:mode="mode"
-		:width="width"
-		:height="height"
-		:shape="shape"
-		:radius="radius"
-		:lazyLoad="lazyLoad"
-		:showMenuByLongpress="showMenuByLongpress"
-		:loadingIcon="loadingIcon"
-		:errorIcon="errorIcon"
-		:showLoading="showLoading"
-		:showError="showError"
-		:fade="fade"
-		:webp="webp"
-		:duration="duration"
-		:bgColor="bgColor"
-		:customStyle="customStyle"
-		@click="$emit('click')"
-		@error="$emit('error')"
-		@load="$emit('load')"
-	></uvImage>
-</template>
-
-<script>
-	/**
-	 * 此组件存在的理由是,在nvue下,u-image被uni-app官方占用了,u-image在nvue中相当于image组件
-	 * 所以在nvue下,取名为u--image,内部其实还是u-iamge.vue,只不过做一层中转
-	 */
-	import uvImage from '../u-image/u-image.vue';
-	import props from '../u-image/props.js';
-	export default {
-		name: 'u--image',
-		mixins: [uni.$u.mpMixin, props, uni.$u.mixin],
-		components: {
-			uvImage
-		},
-	}
-</script>

+ 0 - 63
src/uni_modules/uview-ui/components/u--input/u--input.vue

xqd
@@ -1,63 +0,0 @@
-<template>
-	<uvInput 
-		:value="value"
-		:type="type"
-		:fixed="fixed"
-		:disabled="disabled"
-		:disabledColor="disabledColor"
-		:clearable="clearable"
-		:password="password"
-		:maxlength="maxlength"
-		:placeholder="placeholder"
-		:placeholderClass="placeholderClass"
-		:placeholderStyle="placeholderStyle"
-		:showWordLimit="showWordLimit"
-		:confirmType="confirmType"
-		:confirmHold="confirmHold"
-		:holdKeyboard="holdKeyboard"
-		:focus="focus"
-		:autoBlur="autoBlur"
-		:disableDefaultPadding="disableDefaultPadding"
-		:cursor="cursor"
-		:cursorSpacing="cursorSpacing"
-		:selectionStart="selectionStart"
-		:selectionEnd="selectionEnd"
-		:adjustPosition="adjustPosition"
-		:inputAlign="inputAlign"
-		:autosize="autosize"
-		:fontSize="fontSize"
-		:color="color"
-		:prefixIcon="prefixIcon"
-		:suffixIcon="suffixIcon"
-		:suffixIconStyle="suffixIconStyle"
-		:prefixIconStyle="prefixIconStyle"
-		:border="border"
-		:readonly="readonly"
-		:shape="shape"
-		:customStyle="customStyle"
-		:formatter="formatter"
-		@focus="$emit('focus')"
-		@blur="$emit('blur')"
-		@keyboardheightchange="$emit('keyboardheightchange')"
-		@change="e => $emit('change', e)"
-		@input="e => $emit('input', e)"
-		@clear="$emit('clear')"
-		@click="$emit('click')"
-	></uvInput>
-</template>
-
-<script>
-	/**
-	 * 此组件存在的理由是,在nvue下,u-input被uni-app官方占用了,u-input在nvue中相当于input组件
-	 * 所以在nvue下,取名为u--input,内部其实还是u-input.vue,只不过做一层中转
-	 */
-	import uvInput from '../u-input/u-input.vue';
-	import props from '../u-input/props.js'
-	export default {
-		name: 'u--input',
-		mixins: [uni.$u.mpMixin, props, uni.$u.mixin],
-		components: {
-			uvInput
-		},
-	}
-</script>

+ 0 - 46
src/uni_modules/uview-ui/components/u--text/u--text.vue

xqd
@@ -1,46 +0,0 @@
-<template>
-	<uvText
-		:type="type"
-		:show="show"
-		:text="text"
-		:prefixIcon="prefixIcon"
-		:suffixIcon="suffixIcon"
-		:mode="mode"
-		:href="href"
-		:format="format"
-		:call="call"
-		:encrypt="encrypt"
-		:openType="openType"
-		:bold="bold"
-		:block="block"
-		:lines="lines"
-		:color="color"
-		:size="size"
-		:iconStyle="iconStyle"
-		:precision="precision"
-		:decoration="decoration"
-		:margin="margin"
-		:lineHeight="lineHeight"
-		:align="align"
-		:wordWrap="wordWrap"
-		:customStyle="customStyle"
-		@click="$emit('click')"
-	></uvText>
-</template>
-
-<script>
-	/**
-	 * 此组件存在的理由是,在nvue下,u-text被uni-app官方占用了,u-text在nvue中相当于input组件
-	 * 所以在nvue下,取名为u--input,内部其实还是u-text.vue,只不过做一层中转
-	 * 不使用v-bind="$attrs",而是分开独立写传参,是因为微信小程序不支持此写法
-	 */
-	import uvText from '../u-text/u-text.vue'
-	import props from '../u-text/props.js'
-	export default {
-		name: 'u--text',
-		mixins: [uni.$u.mpMixin, props, uni.$u.mixin],
-		components: {
-			uvText
-		},
-	}
-</script>

+ 0 - 47
src/uni_modules/uview-ui/components/u--textarea/u--textarea.vue

xqd
@@ -1,47 +0,0 @@
-<template>
-	<uvTextarea
-		:value="value"
-		:placeholder="placeholder"
-		:height="height"
-		:confirmType="confirmType"
-		:disabled="disabled"
-		:count="count"
-		:focus="focus"
-		:autoHeight="autoHeight"
-		:fixed="fixed"
-		:cursorSpacing="cursorSpacing"
-		:cursor="cursor"
-		:showConfirmBar="showConfirmBar"
-		:selectionStart="selectionStart"
-		:selectionEnd="selectionEnd"
-		:adjustPosition="adjustPosition"
-		:disableDefaultPadding="disableDefaultPadding"
-		:holdKeyboard="holdKeyboard"
-		:maxlength="maxlength"
-		:border="border"
-		:customStyle="customStyle"
-		:formatter="formatter"
-		@focus="$emit('focus')"
-		@blur="$emit('blur')"
-		@linechange="$emit('linechange')"
-		@confirm="$emit('confirm')"
-		@input="e => $emit('input', e)"
-		@keyboardheightchange="$emit('keyboardheightchange')"
-	></uvTextarea>
-</template>
-
-<script>
-	/**
-	 * 此组件存在的理由是,在nvue下,u--textarea被uni-app官方占用了,u-textarea在nvue中相当于textarea组件
-	 * 所以在nvue下,取名为u--textarea,内部其实还是u-textarea.vue,只不过做一层中转
-	 */
-	import uvTextarea from '../u-textarea/u-textarea.vue';
-	import props from '../u-textarea/props.js'
-	export default {
-		name: 'u--textarea',
-		mixins: [uni.$u.mpMixin, props, uni.$u.mixin],
-		components: {
-			uvTextarea
-		},
-	}
-</script>

+ 0 - 54
src/uni_modules/uview-ui/components/u-action-sheet/props.js

xqd
@@ -1,54 +0,0 @@
-export default {
-    props: {
-        // 操作菜单是否展示 (默认false)
-        show: {
-            type: Boolean,
-            default: uni.$u.props.actionSheet.show
-        },
-        // 标题
-        title: {
-            type: String,
-            default: uni.$u.props.actionSheet.title
-        },
-        // 选项上方的描述信息
-        description: {
-            type: String,
-            default: uni.$u.props.actionSheet.description
-        },
-        // 数据
-        actions: {
-            type: Array,
-            default: uni.$u.props.actionSheet.actions
-        },
-        // 取消按钮的文字,不为空时显示按钮
-        cancelText: {
-            type: String,
-            default: uni.$u.props.actionSheet.cancelText
-        },
-        // 点击某个菜单项时是否关闭弹窗
-        closeOnClickAction: {
-            type: Boolean,
-            default: uni.$u.props.actionSheet.closeOnClickAction
-        },
-        // 处理底部安全区(默认true)
-        safeAreaInsetBottom: {
-            type: Boolean,
-            default: uni.$u.props.actionSheet.safeAreaInsetBottom
-        },
-        // 小程序的打开方式
-        openType: {
-            type: String,
-            default: uni.$u.props.actionSheet.openType
-        },
-        // 点击遮罩是否允许关闭 (默认true)
-        closeOnClickOverlay: {
-            type: Boolean,
-            default: uni.$u.props.actionSheet.closeOnClickOverlay
-        },
-        // 是否显示圆角 (默认false)
-        round: {
-            type: Boolean,
-            default: uni.$u.props.actionSheet.round
-        }
-    }
-}

+ 0 - 275
src/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue

xqd
@@ -1,275 +0,0 @@
-
-<template>
-	<u-popup
-	    :show="show"
-	    mode="bottom"
-	    @close="close"
-	    :closeOnClickOverlay="closeOnClickOverlay"
-	    :safeAreaInsetBottom="safeAreaInsetBottom"
-	    :round="round"
-	>
-		<view class="u-action-sheet">
-			<view
-			    class="u-action-sheet__header"
-			    v-if="title"
-			>
-				<text class="u-action-sheet__header__title u-line-1">{{title}}</text>
-				<view
-				    class="u-action-sheet__header__icon-wrap"
-				    @tap.stop="close"
-				>
-					<u-icon
-					    name="close"
-					    size="17"
-					    color="#c8c9cc"
-					    bold
-					></u-icon>
-				</view>
-			</view>
-			<text
-			    class="u-action-sheet__description"
-				:style="[{
-					marginTop: `${title && description ? 0 : '18px'}`
-				}]"
-			    v-if="description"
-			>{{description}}</text>
-			<slot>
-				<u-line v-if="description"></u-line>
-				<view class="u-action-sheet__item-wrap">
-					<template v-for="(item, index) in actions">
-						<!-- #ifdef MP -->
-						<button
-						    :key="index"
-						    class="u-reset-button"
-						    :openType="item.openType"
-						    @getuserinfo="onGetUserInfo"
-						    @contact="onContact"
-						    @getphonenumber="onGetPhoneNumber"
-						    @error="onError"
-						    @launchapp="onLaunchApp"
-						    @opensetting="onOpenSetting"
-						    :lang="lang"
-						    :session-from="sessionFrom"
-						    :send-message-title="sendMessageTitle"
-						    :send-message-path="sendMessagePath"
-						    :send-message-img="sendMessageImg"
-						    :show-message-card="showMessageCard"
-						    :app-parameter="appParameter"
-						    @tap="selectHandler(index)"
-						    :hover-class="!item.disabled && !item.loading ? 'u-action-sheet--hover' : ''"
-						>
-							<!-- #endif -->
-							<view
-							    class="u-action-sheet__item-wrap__item"
-							    @tap.stop="selectHandler(index)"
-							    :hover-class="!item.disabled && !item.loading ? 'u-action-sheet--hover' : ''"
-							    :hover-stay-time="150"
-							>
-								<template v-if="!item.loading">
-									<text
-									    class="u-action-sheet__item-wrap__item__name"
-									    :style="[itemStyle(index)]"
-									>{{ item.name }}</text>
-									<text
-									    v-if="item.subname"
-									    class="u-action-sheet__item-wrap__item__subname"
-									>{{ item.subname }}</text>
-								</template>
-								<u-loading-icon
-								    v-else
-								    custom-class="van-action-sheet__loading"
-								    size="18"
-								    mode="circle"
-								/>
-							</view>
-							<!-- #ifdef MP -->
-						</button>
-						<!-- #endif -->
-						<u-line v-if="index !== actions.length - 1"></u-line>
-					</template>
-				</view>
-			</slot>
-			<u-gap
-			    bgColor="#eaeaec"
-			    height="6"
-			    v-if="cancelText"
-			></u-gap>
-			<view hover-class="u-action-sheet--hover">
-				<text
-				    @touchmove.stop.prevent
-				    :hover-stay-time="150"
-				    v-if="cancelText"
-				    class="u-action-sheet__cancel-text"
-				    @tap="close"
-				>{{cancelText}}</text>
-			</view>
-		</view>
-	</u-popup>
-</template>
-
-<script>
-	import openType from '../../libs/mixin/openType'
-	import button from '../../libs/mixin/button'
-	import props from './props.js';
-	/**
-	 * ActionSheet 操作菜单
-	 * @description 本组件用于从底部弹出一个操作菜单,供用户选择并返回结果。本组件功能类似于uni的uni.showActionSheetAPI,配置更加灵活,所有平台都表现一致。
-	 * @tutorial https://www.uviewui.com/components/actionSheet.html
-	 * 
-	 * @property {Boolean}			show				操作菜单是否展示 (默认 false )
-	 * @property {String}			title				操作菜单标题
-	 * @property {String}			description			选项上方的描述信息
-	 * @property {Array<Object>}	actions				按钮的文字数组,见官方文档示例
-	 * @property {String}			cancelText			取消按钮的提示文字,不为空时显示按钮
-	 * @property {Boolean}			closeOnClickAction	点击某个菜单项时是否关闭弹窗 (默认 true )
-	 * @property {Boolean}			safeAreaInsetBottom	处理底部安全区 (默认 true )
-	 * @property {String}			openType			小程序的打开方式 (contact | launchApp | getUserInfo | openSetting |getPhoneNumber |error )
-	 * @property {Boolean}			closeOnClickOverlay	点击遮罩是否允许关闭  (默认 true )
-	 * @property {Boolean}			round				是否显示圆角  (默认 false )
-	 * @property {String}			lang				指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,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}			appParameter		打开 APP 时,向 APP 传递的参数,openType=launchApp 时有效
-	 * 
-	 * @event {Function} select			点击ActionSheet列表项时触发 
-	 * @event {Function} close			点击取消按钮时触发
-	 * @event {Function} getuserinfo	用户点击该按钮时,会返回获取到的用户信息,回调的 detail 数据与 wx.getUserInfo 返回的一致,openType="getUserInfo"时有效
-	 * @event {Function} contact		客服消息回调,openType="contact"时有效
-	 * @event {Function} getphonenumber	获取用户手机号回调,openType="getPhoneNumber"时有效
-	 * @event {Function} error			当使用开放能力时,发生错误的回调,openType="error"时有效
-	 * @event {Function} launchapp		打开 APP 成功的回调,openType="launchApp"时有效
-	 * @event {Function} opensetting	在打开授权设置页后回调,openType="openSetting"时有效
-	 * @example <u-action-sheet :actions="list" :title="title" :show="show"></u-action-sheet>
-	 */
-	export default {
-		name: "u-action-sheet",
-		// 一些props参数和methods方法,通过mixin混入,因为其他文件也会用到
-		mixins: [openType, button, uni.$u.mixin, props],
-		data() {
-			return {
-
-			}
-		},
-		computed: {
-			// 操作项目的样式
-			itemStyle() {
-				return (index) => {
-					let style = {};
-					if (this.actions[index].color) style.color = this.actions[index].color
-					if (this.actions[index].fontSize) style.fontSize = uni.$u.addUnit(this.actions[index].fontSize)
-					// 选项被禁用的样式
-					if (this.actions[index].disabled) style.color = '#c0c4cc'
-					return style;
-				}
-			},
-		},
-		methods: {
-			close() {
-				// 允许点击遮罩关闭时,才发出close事件
-				if(this.closeOnClickOverlay) {
-					this.$emit('close')
-				}
-			},
-			selectHandler(index) {
-				const item = this.actions[index]
-				if (item && !item.disabled && !item.loading) {
-					this.$emit('select', item)
-					if (this.closeOnClickAction) {
-						this.$emit('close')
-					}
-				}
-			},
-		}
-	}
-</script>
-
-<style lang="scss">
-	@import "../../libs/css/components.scss";
-	$u-action-sheet-reset-button-width:100% !default;
-	$u-action-sheet-title-font-size: 16px !default;
-	$u-action-sheet-title-padding: 12px 30px !default;
-	$u-action-sheet-title-color: $u-main-color !default;
-	$u-action-sheet-header-icon-wrap-right:15px !default;
-	$u-action-sheet-header-icon-wrap-top:15px !default;
-	$u-action-sheet-description-font-size:13px !default;
-	$u-action-sheet-description-color:14px !default;
-	$u-action-sheet-description-margin: 18px 15px !default;
-	$u-action-sheet-item-wrap-item-padding:15px !default;
-	$u-action-sheet-item-wrap-name-font-size:16px !default;
-	$u-action-sheet-item-wrap-subname-font-size:13px !default;
-	$u-action-sheet-item-wrap-subname-color: #c0c4cc !default;
-	$u-action-sheet-item-wrap-subname-margin-top:10px !default;
-	$u-action-sheet-cancel-text-font-size:16px !default;
-	$u-action-sheet-cancel-text-color:$u-content-color !default;
-	$u-action-sheet-cancel-text-font-size:15px !default;
-	$u-action-sheet-cancel-text-hover-background-color:rgb(242, 243, 245) !default;
-
-	.u-reset-button {
-		width: $u-action-sheet-reset-button-width;
-	}
-
-	.u-action-sheet {
-		text-align: center;
-		&__header {
-			position: relative;
-			padding: $u-action-sheet-title-padding;
-			&__title {
-				font-size: $u-action-sheet-title-font-size;
-				color: $u-action-sheet-title-color;
-				font-weight: bold;
-				text-align: center;
-			}
-
-			&__icon-wrap {
-				position: absolute;
-				right: $u-action-sheet-header-icon-wrap-right;
-				top: $u-action-sheet-header-icon-wrap-top;
-			}
-		}
-
-		&__description {
-			font-size: $u-action-sheet-description-font-size;
-			color: $u-tips-color;
-			margin: $u-action-sheet-description-margin;
-			text-align: center;
-		}
-
-		&__item-wrap {
-
-			&__item {
-				padding: $u-action-sheet-item-wrap-item-padding;
-				@include flex;
-				align-items: center;
-				justify-content: center;
-				flex-direction: column;
-
-				&__name {
-					font-size: $u-action-sheet-item-wrap-name-font-size;
-					color: $u-main-color;
-					text-align: center;
-				}
-
-				&__subname {
-					font-size: $u-action-sheet-item-wrap-subname-font-size;
-					color: $u-action-sheet-item-wrap-subname-color;
-					margin-top: $u-action-sheet-item-wrap-subname-margin-top;
-					text-align: center;
-				}
-			}
-		}
-
-		&__cancel-text {
-			font-size: $u-action-sheet-cancel-text-font-size;
-			color: $u-action-sheet-cancel-text-color;
-			text-align: center;
-			padding: $u-action-sheet-cancel-text-font-size;
-		}
-
-		&--hover {
-			background-color: $u-action-sheet-cancel-text-hover-background-color;
-		}
-	}
-</style>

+ 0 - 59
src/uni_modules/uview-ui/components/u-album/props.js

xqd
@@ -1,59 +0,0 @@
-export default {
-    props: {
-        // 图片地址,Array<String>|Array<Object>形式
-        urls: {
-            type: Array,
-            default: uni.$u.props.album.urls
-        },
-        // 指定从数组的对象元素中读取哪个属性作为图片地址
-        keyName: {
-            type: String,
-            default: uni.$u.props.album.keyName
-        },
-        // 单图时,图片长边的长度
-        singleSize: {
-            type: [String, Number],
-            default: uni.$u.props.album.singleSize
-        },
-        // 多图时,图片边长
-        multipleSize: {
-            type: [String, Number],
-            default: uni.$u.props.album.multipleSize
-        },
-        // 多图时,图片水平和垂直之间的间隔
-        space: {
-            type: [String, Number],
-            default: uni.$u.props.album.space
-        },
-        // 单图时,图片缩放裁剪的模式
-        singleMode: {
-            type: String,
-            default: uni.$u.props.album.singleMode
-        },
-        // 多图时,图片缩放裁剪的模式
-        multipleMode: {
-            type: String,
-            default: uni.$u.props.album.multipleMode
-        },
-        // 最多展示的图片数量,超出时最后一个位置将会显示剩余图片数量
-        maxCount: {
-            type: [String, Number],
-            default: uni.$u.props.album.maxCount
-        },
-        // 是否可以预览图片
-        previewFullImage: {
-            type: Boolean,
-            default: uni.$u.props.album.previewFullImage
-        },
-        // 每行展示图片数量,如设置,singleSize和multipleSize将会无效
-        rowCount: {
-            type: [String, Number],
-            default: uni.$u.props.album.rowCount
-        },
-        // 超出maxCount时是否显示查看更多的提示
-        showMore: {
-            type: Boolean,
-            default: uni.$u.props.album.showMore
-        }
-    }
-}

+ 0 - 236
src/uni_modules/uview-ui/components/u-album/u-album.vue

xqd
@@ -1,236 +0,0 @@
-<template>
-	<view class="u-album">
-		<view
-		    class="u-album__row"
-		    ref="u-album__row"
-		    v-for="(arr, index) in showUrls"
-			:forComputedUse="albumWidth"
-			:key="index"
-		>
-			<view
-			    class="u-album__row__wrapper"
-			    v-for="(item, index1) in arr"
-			    :key="index1"
-			    :style="[imageStyle(index + 1, index1 + 1)]"
-				@tap="onPreviewTap(getSrc(item))"
-			>
-				<image
-				    :src="getSrc(item)"
-				    :mode="urls.length === 1 ? (imageHeight > 0 ? singleMode : 'widthFix') : multipleMode"
-				    :style="[{
-						width: $u.addUnit(imageWidth),
-						height: $u.addUnit(imageHeight)
-					}]"
-				></image>
-				<view
-				    v-if="showMore && urls.length > rowCount * showUrls.length && index === showUrls.length - 1 && index1 === showUrls[showUrls.length - 1].length - 1"
-				    class="u-album__row__wrapper__text"
-				>
-					<u--text
-					    :text="`+${urls.length - maxCount}`" 
-					    color="#fff"
-					    :size="multipleSize * 0.3"
-						align="center"
-						customStyle="justify-content: center"
-					></u--text>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	import props from './props.js';
-	// #ifdef APP-NVUE
-	// 由于weex为阿里的KPI业绩考核的产物,所以不支持百分比单位,这里需要通过dom查询组件的宽度
-	const dom = uni.requireNativePlugin('dom')
-	// #endif
-	
-	/**
-	 * Album 相册
-	 * @description 本组件提供一个类似相册的功能,让开发者开发起来更加得心应手。减少重复的模板代码
-	 * @tutorial https://www.uviewui.com/components/album.html
-	 * 
-	 * @property {Array}           urls             图片地址列表 Array<String>|Array<Object>形式
-	 * @property {String}          keyName          指定从数组的对象元素中读取哪个属性作为图片地址 
-	 * @property {String | Number} singleSize       单图时,图片长边的长度  (默认 180 )
-	 * @property {String | Number} multipleSize     多图时,图片边长 (默认 70 )
-	 * @property {String | Number} space            多图时,图片水平和垂直之间的间隔 (默认 6 )
-	 * @property {String}          singleMode       单图时,图片缩放裁剪的模式 (默认 'scaleToFill' )
-	 * @property {String}          multipleMode     多图时,图片缩放裁剪的模式 (默认 'aspectFill' )
-	 * @property {String | Number} maxCount         取消按钮的提示文字 (默认 9 )
-	 * @property {Boolean}         previewFullImage 是否可以预览图片 (默认 true )
-	 * @property {String | Number} rowCount         每行展示图片数量,如设置,singleSize和multipleSize将会无效	(默认 3 )
-	 * @property {Boolean}         showMore         超出maxCount时是否显示查看更多的提示 (默认 true )
-	 * 
-	 * @event    {Function}        albumWidth       某些特殊的情况下,需要让文字与相册的宽度相等,这里事件的形式对外发送  (回调参数 width )
-	 * @example <u-album :urls="urls2" @albumWidth="width => albumWidth = width" multipleSize="68" ></u-album>
-	 */
-	export default {
-		name: 'u-album',
-		mixins: [uni.$u.mpMixin, uni.$u.mixin, props],
-		data() {
-			return {
-				// 单图的宽度
-				singleWidth: 0,
-				// 单图的高度
-				singleHeight: 0,
-				// 单图时,如果无法获取图片的尺寸信息,让图片宽度默认为容器的一定百分比
-				singlePercent: 0.6,
-			}
-		},
-		watch: {
-			urls: {
-				immediate: true,
-				handler(newVal) {
-					if (newVal.length === 1) {
-						this.getImageRect()
-					}
-				}
-			}
-		},
-		computed: {
-			imageStyle() {
-				return (index1, index2) => {
-					const {
-						space,
-						rowCount,
-						multipleSize,
-						urls
-					} = this, {
-						addUnit,
-						addStyle
-					} = uni.$u,
-						rowLen = this.showUrls.length,
-						allLen = this.urls.length
-					const style = {
-						marginRight: addUnit(space),
-						marginBottom: addUnit(space)
-					}
-					// 如果为最后一行,则每个图片都无需下边框
-					if (index1 === rowLen) style.marginBottom = 0
-					// 每行的最右边一张和总长度的最后一张无需右边框
-					if (index2 === rowCount || index1 === rowLen && index2 === this.showUrls[index1 - 1].length) style.marginRight =
-						0
-					return style
-				}
-			},
-			// 将数组划分为二维数组
-			showUrls() {
-				const arr = []
-				this.urls.map((item, index) => {
-					// 限制最大展示数量
-					if(index + 1 <= this.maxCount) {
-						// 计算该元素为第几个素组内
-						const itemIndex = Math.floor(index / this.rowCount)
-						// 判断对应的索引是否存在
-						if (!arr[itemIndex]) { 
-							arr[itemIndex] = []
-						}
-						arr[itemIndex].push(item)
-					}
-				})
-				return arr
-			},
-			imageWidth() {
-				return this.urls.length === 1 ? this.singleWidth : this.multipleSize
-			},
-			imageHeight() {
-				return this.urls.length === 1 ? this.singleHeight : this.multipleSize
-			},
-			// 此变量无实际用途,仅仅是为了利用computed特性,让其在urls长度等变化时,重新计算图片的宽度
-			// 因为用户在某些特殊的情况下,需要让文字与相册的宽度相等,所以这里事件的形式对外发送
-			albumWidth() {
-				let width = 0
-				if(this.urls.length === 1) {
-					width = this.singleWidth
-				} else {
-					width = this.showUrls[0].length * this.multipleSize + this.space * (this.showUrls[0].length - 1)
-				}
-				this.$emit('albumWidth', width)
-				return width
-			}
-		},
-		methods: {
-			// 预览图片
-			onPreviewTap(url) {
-				const urls = this.urls.map(item => {
-					return this.getSrc(item)
-				})
-				uni.previewImage({
-					current: url,
-					urls
-				});
-			},
-			// 获取图片的路径
-			getSrc(item) {
-				return uni.$u.test.object(item) ? this.keyName && item[this.keyName] || item.src : item
-			},
-			// 单图时,获取图片的尺寸
-			// 在小程序中,需要将网络图片的的域名添加到小程序的download域名才可能获取尺寸
-			// 在没有添加的情况下,让单图宽度默认为盒子的一定宽度(singlePercent)
-			getImageRect() {
-				const src = this.getSrc(this.urls[0])
-				uni.getImageInfo({
-					src,
-					success: (res) => {
-						// 判断图片横向还是竖向展示方式
-						const isHorizotal = res.width >= res.height
-						this.singleWidth = isHorizotal ? this.singleSize : res.width / res.height * this.singleSize
-						this.singleHeight = !isHorizotal ? this.singleSize : res.height / res.width * this.singleWidth
-					},
-					fail: () => {
-						this.getComponentWidth()
-					}
-				})
-			},
-			// 获取组件的宽度
-			async getComponentWidth() {
-				// 延时一定时间,以获取dom尺寸
-				await uni.$u.sleep(30)
-				// #ifndef APP-NVUE
-				this.$uGetRect('.u-album__row').then(size => {
-					this.singleWidth = size.width * this.singlePercent
-				})
-				// #endif
-
-				// #ifdef APP-NVUE
-				// 这里ref="u-album__row"所在的标签为通过for循环出来,导致this.$refs['u-album__row']是一个数组
-				const ref = this.$refs['u-album__row'][0]
-				ref && dom.getComponentRect(ref, (res) => {
-					this.singleWidth = res.size.width * this.singlePercent
-				})
-				// #endif
-			},
-		}
-	}
-</script>
-
-<style lang="scss">
-	@import "../../libs/css/components.scss";
-
-	.u-album {
-		@include flex(column);
-
-		&__row {
-			@include flex(row);
-			flex-wrap: wrap;
-			
-			&__wrapper {
-				position: relative;
-				
-				&__text {
-					position: absolute;
-					top: 0;
-					left: 0;
-					right: 0;
-					bottom: 0;
-					background-color: rgba(0, 0, 0, 0.3);
-					@include flex(row);
-					justify-content: center;
-					align-items: center;
-				}
-			}
-		}
-	}
-</style>

+ 0 - 44
src/uni_modules/uview-ui/components/u-alert/props.js

xqd
@@ -1,44 +0,0 @@
-export default {
-    props: {
-        // 显示文字
-        title: {
-            type: String,
-            default: uni.$u.props.alert.title
-        },
-        // 主题,success/warning/info/error
-        type: {
-            type: String,
-            default: uni.$u.props.alert.type
-        },
-        // 辅助性文字
-        description: {
-            type: String,
-            default: uni.$u.props.alert.description
-        },
-        // 是否可关闭
-        closable: {
-            type: Boolean,
-            default: uni.$u.props.alert.closable
-        },
-        // 是否显示图标
-        showIcon: {
-            type: Boolean,
-            default: uni.$u.props.alert.showIcon
-        },
-        // 浅或深色调,light-浅色,dark-深色
-        effect: {
-            type: String,
-            default: uni.$u.props.alert.effect
-        },
-        // 文字是否居中
-        center: {
-            type: Boolean,
-            default: uni.$u.props.alert.center
-        },
-        // 字体大小
-        fontSize: {
-            type: [String, Number],
-            default: uni.$u.props.alert.fontSize
-        }
-    }
-}

+ 0 - 243
src/uni_modules/uview-ui/components/u-alert/u-alert.vue

xqd
@@ -1,243 +0,0 @@
-<template>
-	<u-transition
-	    mode="fade"
-	    :show="show"
-	>
-		<view
-		    class="u-alert"
-		    :class="[`u-alert--${type}--${effect}`]"
-		    @tap.stop="clickHandler"
-		    :style="[$u.addStyle(customStyle)]"
-		>
-			<view
-			    class="u-alert__icon"
-			    v-if="showIcon"
-			>
-				<u-icon
-				    :name="iconName"
-				    size="18"
-				    :color="iconColor"
-				></u-icon>
-			</view>
-			<view
-			    class="u-alert__content"
-			    :style="[{
-					paddingRight: closable ? '20px' : 0
-				}]"
-			>
-				<text
-				    class="u-alert__content__title"
-				    v-if="title"
-					:style="[{
-						fontSize: $u.addUnit(fontSize),
-						textAlign: center ? 'center' : 'left'
-					}]"
-				    :class="[effect === 'dark' ? 'u-alert__text--dark' : `u-alert__text--${type}--light`]"
-				>{{ title }}</text>
-				<text
-				    class="u-alert__content__desc"
-					v-if="description"
-					:style="[{
-						fontSize: $u.addUnit(fontSize),
-						textAlign: center ? 'center' : 'left'
-					}]"
-				    :class="[effect === 'dark' ? 'u-alert__text--dark' : `u-alert__text--${type}--light`]"
-				>{{ description }}</text>
-			</view>
-			<view
-			    class="u-alert__close"
-			    v-if="closable"
-			    @tap.stop="closeHandler"
-			>
-				<u-icon
-				    name="close"
-				    :color="iconColor"
-				    size="15"
-				></u-icon>
-			</view>
-		</view>
-	</u-transition>
-</template>
-
-<script>
-	import props from './props.js';
-	/**
-	 * Alert  警告提示
-	 * @description 警告提示,展现需要关注的信息。
-	 * @tutorial https://www.uviewui.com/components/alertTips.html
-	 * 
-	 * @property {String}			title       显示的文字 
-	 * @property {String}			type        使用预设的颜色  (默认 'warning' )
-	 * @property {String}			description 辅助性文字,颜色比title浅一点,字号也小一点,可选  
-	 * @property {Boolean}			closable    关闭按钮(默认为叉号icon图标)  (默认 false )
-	 * @property {Boolean}			showIcon    是否显示左边的辅助图标   ( 默认 false )
-	 * @property {String}			effect      多图时,图片缩放裁剪的模式  (默认 'light' )
-	 * @property {Boolean}			center		文字是否居中  (默认 false )
-	 * @property {String | Number}	fontSize    字体大小  (默认 14 )
-	 * @property {Object}			customStyle	定义需要用到的外部样式
-	 * @event    {Function}        click       点击组件时触发
-	 * @example  <u-alert :title="title"  type = "warning" :closable="closable" :description = "description"></u-alert>
-	 */
-	export default {
-		name: 'u-alert',
-		mixins: [uni.$u.mpMixin, uni.$u.mixin, props],
-		data() {
-			return {
-				show: true
-			}
-		},
-		computed: {
-			iconColor() {
-				return this.effect === 'light' ? this.type : '#fff'
-			},
-			// 不同主题对应不同的图标
-			iconName() {
-				switch (this.type) {
-					case 'success':
-						return 'checkmark-circle-fill';
-						break;
-					case 'error':
-						return 'close-circle-fill';
-						break;
-					case 'warning':
-						return 'error-circle-fill';
-						break;
-					case 'info':
-						return 'info-circle-fill';
-						break;
-					case 'primary':
-						return 'more-circle-fill';
-						break;
-					default: 
-						return 'error-circle-fill';
-				}
-			}
-		},
-		methods: {
-			// 点击内容
-			clickHandler() {
-				this.$emit('click')
-			},
-			// 点击关闭按钮
-			closeHandler() {
-				this.show = false
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	@import "../../libs/css/components.scss";
-
-	.u-alert {
-		position: relative;
-		background-color: $u-primary;
-		padding: 8px 10px;
-		@include flex(row);
-		align-items: center;
-		border-top-left-radius: 4px;
-		border-top-right-radius: 4px;
-		border-bottom-left-radius: 4px;
-		border-bottom-right-radius: 4px;
-
-		&--primary--dark {
-			background-color: $u-primary;
-		}
-
-		&--primary--light {
-			background-color: #ecf5ff;
-		}
-
-		&--error--dark {
-			background-color: $u-error;
-		}
-
-		&--error--light {
-			background-color: #FEF0F0;
-		}
-
-		&--success--dark {
-			background-color: $u-success;
-		}
-
-		&--success--light {
-			background-color: #f5fff0;
-		}
-
-		&--warning--dark {
-			background-color: $u-warning;
-		}
-
-		&--warning--light {
-			background-color: #FDF6EC;
-		}
-
-		&--info--dark {
-			background-color: $u-info;
-		}
-
-		&--info--light {
-			background-color: #f4f4f5;
-		}
-
-		&__icon {
-			margin-right: 5px;
-		}
-
-		&__content {
-			@include flex(column);
-			flex: 1;
-
-			&__title {
-				color: $u-main-color;
-				font-size: 14px;
-				font-weight: bold;
-				color: #fff;
-				margin-bottom: 2px;
-			}
-
-			&__desc {
-				color: $u-main-color;
-				font-size: 14px;
-				flex-wrap: wrap;
-				color: #fff;
-			}
-		}
-
-		&__title--dark,
-		&__desc--dark {
-			color: #FFFFFF;
-		}
-
-		&__text--primary--light,
-		&__text--primary--light {
-			color: $u-primary;
-		}
-
-		&__text--success--light,
-		&__text--success--light {
-			color: $u-success;
-		}
-
-		&__text--warning--light,
-		&__text--warning--light {
-			color: $u-warning;
-		}
-
-		&__text--error--light,
-		&__text--error--light {
-			color: $u-error;
-		}
-
-		&__text--info--light,
-		&__text--info--light {
-			color: $u-info;
-		}
-
-		&__close {
-			position: absolute;
-			top: 11px;
-			right: 10px;
-		}
-	}
-</style>

+ 0 - 46
src/uni_modules/uview-ui/components/u-avatar-group/props.js

xqd
@@ -1,46 +0,0 @@
-export default {
-    props: {
-        // 头像图片组
-        urls: {
-            type: Array,
-            default: uni.$u.props.avatarGroup.urls
-        },
-        // 最多展示的头像数量
-        maxCount: {
-            type: [String, Number],
-            default: uni.$u.props.avatarGroup.maxCount
-        },
-        // 头像形状
-        shape: {
-            type: String,
-            default: uni.$u.props.avatarGroup.shape
-        },
-        // 图片裁剪模式
-        mode: {
-            type: String,
-            default: uni.$u.props.avatarGroup.mode
-        },
-        // 超出maxCount时是否显示查看更多的提示
-        showMore: {
-            type: Boolean,
-            default: uni.$u.props.avatarGroup.showMore
-        },
-        // 头像大小
-        size: {
-            type: [String, Number],
-            default: uni.$u.props.avatarGroup.size
-        },
-        // 指定从数组的对象元素中读取哪个属性作为图片地址
-        keyName: {
-            type: String,
-            default: uni.$u.props.avatarGroup.keyName
-        },
-        gap: {
-            type: [String, Number],
-            validator(value) {
-                return value >= 0 && value <= 1
-            },
-            default: uni.$u.props.avatarGroup.gap
-        }
-    }
-}

+ 0 - 103
src/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue

xqd
@@ -1,103 +0,0 @@
-<template>
-	<view class="u-avatar-group">
-		<view
-		    class="u-avatar-group__item"
-		    v-for="(item, index) in showUrl"
-		    :key="index"
-		    :style="{
-				marginLeft: index === 0 ? 0 : $u.addUnit(-size * gap)
-			}"
-		>
-			<u-avatar
-			    :size="size"
-			    :shape="shape"
-			    :mode="mode"
-			    :src="$u.test.object(item) ? keyName && item[keyName] || item.url : item"
-			></u-avatar>
-			<view
-			    class="u-avatar-group__item__show-more"
-			    v-if="showMore && index === showUrl.length - 1 && urls.length > maxCount"
-				@tap="clickHandler"
-			>
-				<u--text
-				    color="#ffffff"
-				    :size="size * 0.4"
-				    :text="`+${urls.length - showUrl.length}`"
-					align="center"
-					customStyle="justify-content: center"
-				></u--text>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	import props from './props.js';
-	/**
-	 * AvatarGroup  头像组
-	 * @description 本组件一般用于展示头像的地方,如个人中心,或者评论列表页的用户头像展示等场所。
-	 * @tutorial https://www.uviewui.com/components/avatar.html
-	 * 
-	 * @property {Array}           urls     头像图片组 (默认 [] )
-	 * @property {String | Number} maxCount 最多展示的头像数量 ( 默认 5 )
-	 * @property {String}          shape    头像形状( 'circle' (默认) | 'square' )
-	 * @property {String}          mode     图片裁剪模式(默认 'scaleToFill' )
-	 * @property {Boolean}         showMore 超出maxCount时是否显示查看更多的提示 (默认 true )
-	 * @property {String | Number} size      头像大小 (默认 40 )
-	 * @property {String}          keyName  指定从数组的对象元素中读取哪个属性作为图片地址 
-	 * @property {String | Number} gap      头像之间的遮挡比例(0.4代表遮挡40%)  (默认 0.5 )
-	 * 
-	 * @event    {Function}        showMore 头像组更多点击
-	 * @example  <u-avatar-group:urls="urls" size="35" gap="0.4" ></u-avatar-group:urls=>
-	 */
-	export default {
-		name: 'u-avatar-group',
-		mixins: [uni.$u.mpMixin, uni.$u.mixin, props],
-		data() {
-			return {
-
-			}
-		},
-		computed: {
-			showUrl() {
-				return this.urls.slice(0, this.maxCount)
-			}
-		},
-		methods: {
-			clickHandler() {
-				this.$emit('showMore')
-			}
-		},
-	}
-</script>
-
-<style lang="scss">
-	@import "../../libs/css/components.scss";
-
-	.u-avatar-group {
-		@include flex;
-
-		&__item {
-			margin-left: -10px;
-			position: relative;
-
-			&--no-indent {
-				// 如果你想质疑作者不会使用:first-child,说明你太年轻,因为nvue不支持
-				margin-left: 0;
-			}
-
-			&__show-more {
-				position: absolute;
-				top: 0;
-				bottom: 0;
-				left: 0;
-				right: 0;
-				background-color: rgba(0, 0, 0, 0.3);
-				@include flex;
-				align-items: center;
-				justify-content: center;
-				border-radius: 100px;
-			}
-		}
-	}
-</style>

+ 0 - 78
src/uni_modules/uview-ui/components/u-avatar/props.js

xqd
@@ -1,78 +0,0 @@
-export default {
-    props: {
-        // 头像图片路径(不能为相对路径)
-        src: {
-            type: String,
-            default: uni.$u.props.avatar.src
-        },
-        // 头像形状,circle-圆形,square-方形
-        shape: {
-            type: String,
-            default: uni.$u.props.avatar.shape
-        },
-        // 头像尺寸
-        size: {
-            type: [String, Number],
-            default: uni.$u.props.avatar.size
-        },
-        // 裁剪模式
-        mode: {
-            type: String,
-            default: uni.$u.props.avatar.mode
-        },
-        // 显示的文字
-        text: {
-            type: String,
-            default: uni.$u.props.avatar.text
-        },
-        // 背景色
-        bgColor: {
-            type: String,
-            default: uni.$u.props.avatar.bgColor
-        },
-        // 文字颜色
-        color: {
-            type: String,
-            default: uni.$u.props.avatar.color
-        },
-        // 文字大小
-        fontSize: {
-            type: [String, Number],
-            default: uni.$u.props.avatar.fontSize
-        },
-        // 显示的图标
-        icon: {
-            type: String,
-            default: uni.$u.props.avatar.icon
-        },
-        // 显示小程序头像,只对百度,微信,QQ小程序有效
-        mpAvatar: {
-            type: Boolean,
-            default: uni.$u.props.avatar.mpAvatar
-        },
-        // 是否使用随机背景色
-        randomBgColor: {
-            type: Boolean,
-            default: uni.$u.props.avatar.randomBgColor
-        },
-        // 加载失败的默认头像(组件有内置默认图片)
-        defaultUrl: {
-            type: String,
-            default: uni.$u.props.avatar.defaultUrl
-        },
-        // 如果配置了randomBgColor为true,且配置了此值,则从默认的背景色数组中取出对应索引的颜色值,取值0-19之间
-        colorIndex: {
-            type: [String, Number],
-            // 校验参数规则,索引在0-19之间
-            validator(n) {
-                return uni.$u.test.range(n, [0, 19]) || n === ''
-            },
-            default: uni.$u.props.avatar.colorIndex
-        },
-        // 组件标识符
-        name: {
-            type: String,
-            default: uni.$u.props.avatar.name
-        }
-    }
-}

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 53
src/uni_modules/uview-ui/components/u-avatar/u-avatar.vue


+ 0 - 54
src/uni_modules/uview-ui/components/u-back-top/props.js

xqd
@@ -1,54 +0,0 @@
-export default {
-    props: {
-        // 返回顶部的形状,circle-圆形,square-方形
-        mode: {
-            type: String,
-            default: uni.$u.props.backtop.mode
-        },
-        // 自定义图标
-        icon: {
-            type: String,
-            default: uni.$u.props.backtop.icon
-        },
-        // 提示文字
-        text: {
-            type: String,
-            default: uni.$u.props.backtop.text
-        },
-        // 返回顶部滚动时间
-        duration: {
-            type: [String, Number],
-            default: uni.$u.props.backtop.duration
-        },
-        // 滚动距离
-        scrollTop: {
-            type: [String, Number],
-            default: uni.$u.props.backtop.scrollTop
-        },
-        // 距离顶部多少距离显示,单位px
-        top: {
-            type: [String, Number],
-            default: uni.$u.props.backtop.top
-        },
-        // 返回顶部按钮到底部的距离,单位px
-        bottom: {
-            type: [String, Number],
-            default: uni.$u.props.backtop.bottom
-        },
-        // 返回顶部按钮到右边的距离,单位px
-        right: {
-            type: [String, Number],
-            default: uni.$u.props.backtop.right
-        },
-        // 层级
-        zIndex: {
-            type: [String, Number],
-            default: uni.$u.props.backtop.zIndex
-        },
-        // 图标的样式,对象形式
-        iconStyle: {
-            type: Object,
-            default: uni.$u.props.backtop.iconStyle
-        }
-    }
-}

+ 0 - 137
src/uni_modules/uview-ui/components/u-back-top/u-back-top.vue

xqd
@@ -1,137 +0,0 @@
-<template>
-	<u-transition
-	    mode="fade"
-	    :customStyle="backTopStyle"
-	    :show="show"
-	>
-		<view
-		    class="u-back-top"
-			:style="contentStyle"
-		    v-if="!$slots.default && !$slots.$default"
-			@click="backToTop"
-		>
-			<u-icon
-			    :name="icon"
-			    :custom-style="iconStyle"
-			></u-icon>
-			<text
-			    v-if="text"
-			    class="u-back-top__text"
-			>{{text}}</text>
-		</view>
-		<slot v-else />
-	</u-transition>
-</template>
-
-<script>
-	import props from './props.js';
-	// #ifdef APP-NVUE
-	const dom = weex.requireModule('dom')
-	// #endif
-	/**
-	 * backTop 返回顶部
-	 * @description 本组件一个用于长页面,滑动一定距离后,出现返回顶部按钮,方便快速返回顶部的场景。
-	 * @tutorial https://uviewui.com/components/backTop.html
-	 * 
-	 * @property {String}			mode  		返回顶部的形状,circle-圆形,square-方形 (默认 'circle' )
-	 * @property {String} 			icon 		自定义图标 (默认 'arrow-upward' ) 见官方文档示例
-	 * @property {String} 			text 		提示文字 
-	 * @property {String | Number}  duration	返回顶部滚动时间 (默认 100)
-	 * @property {String | Number}  scrollTop	滚动距离 (默认 0 )
-	 * @property {String | Number}  top  		距离顶部多少距离显示,单位px (默认 400 )
-	 * @property {String | Number}  bottom  	返回顶部按钮到底部的距离,单位px (默认 100 )
-	 * @property {String | Number}  right  		返回顶部按钮到右边的距离,单位px (默认 20 )
-	 * @property {String | Number}  zIndex 		层级   (默认 9 )
-	 * @property {Object<Object>}  	iconStyle 	图标的样式,对象形式   (默认 {color: '#909399',fontSize: '19px'})
-	 * @property {Object}			customStyle	定义需要用到的外部样式
-	 * 
-	 * @example <u-back-top :scrollTop="scrollTop"></u-back-top>
-	 */
-	export default {
-		name: 'u-back-top',
-		mixins: [uni.$u.mpMixin, uni.$u.mixin,props],
-		computed: {
-			backTopStyle() {
-				// 动画组件样式
-				const style = {
-					bottom: uni.$u.addUnit(this.bottom),
-					right: uni.$u.addUnit(this.right),
-					width: '40px',
-					height: '40px',
-					position: 'fixed',
-					zIndex: 10,
-				}
-				return style
-			},
-			show() {
-				let top
-				// 如果是rpx,转为px
-				if (/rpx$/.test(this.top)) {
-					top = uni.rpx2px(parseInt(this.top))
-				} else {
-					// 如果px,通过parseInt获取其数值部分
-					top = parseInt(this.top)
-				}
-				return this.scrollTop > top
-			},
-			contentStyle() {
-				const style = {}
-				let radius = 0
-				// 是否圆形
-				if(this.mode === 'circle') {
-					radius = '100px'
-				} else {
-					radius = '4px'
-				}
-				// 为了兼容安卓nvue,只能这么分开写
-				style.borderTopLeftRadius = radius
-				style.borderTopRightRadius = radius
-				style.borderBottomLeftRadius = radius
-				style.borderBottomRightRadius = radius
-				return uni.$u.deepMerge(style, uni.$u.addStyle(this.customStyle))
-			}
-		},
-		methods: {
-			backToTop() {
-				// #ifdef APP-NVUE
-				if (!this.$parent.$refs['u-back-top']) {
-					uni.$u.error(`nvue页面需要给页面最外层元素设置"ref='u-back-top'`)
-				}
-				dom.scrollToElement(this.$parent.$refs['u-back-top'], {
-					offset: 0
-				})
-				// #endif
-				
-				// #ifndef APP-NVUE
-				uni.pageScrollTo({
-					scrollTop: 0,
-					duration: this.duration
-				});
-				// #endif
-				this.$emit('click')
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	@import '../../libs/css/components.scss';
-     $u-back-top-flex:1 !default;
-     $u-back-top-height:100% !default;
-     $u-back-top-background-color:#E1E1E1 !default;
-     $u-back-top-tips-font-size:12px !default;
-	.u-back-top {
-		@include flex;
-		flex-direction: column;
-		align-items: center;
-		flex:$u-back-top-flex;
-		height: $u-back-top-height;
-		justify-content: center;
-		background-color: $u-back-top-background-color;
-
-		&__tips {
-			font-size:$u-back-top-tips-font-size;
-			transform: scale(0.8);
-		}
-	}
-</style>

+ 0 - 72
src/uni_modules/uview-ui/components/u-badge/props.js

xqd
@@ -1,72 +0,0 @@
-export default {
-    props: {
-        // 是否显示圆点
-        isDot: {
-            type: Boolean,
-            default: uni.$u.props.badge.isDot
-        },
-        // 显示的内容
-        value: {
-            type: [Number, String],
-            default: uni.$u.props.badge.value
-        },
-        // 是否显示
-        show: {
-            type: Boolean,
-            default: uni.$u.props.badge.show
-        },
-        // 最大值,超过最大值会显示 '{max}+'
-        max: {
-            type: [Number, String],
-            default: uni.$u.props.badge.max
-        },
-        // 主题类型,error|warning|success|primary
-        type: {
-            type: String,
-            default: uni.$u.props.badge.type
-        },
-        // 当数值为 0 时,是否展示 Badge
-        showZero: {
-            type: Boolean,
-            default: uni.$u.props.badge.showZero
-        },
-        // 背景颜色,优先级比type高,如设置,type参数会失效
-        bgColor: {
-            type: [String, null],
-            default: uni.$u.props.badge.bgColor
-        },
-        // 字体颜色
-        color: {
-            type: [String, null],
-            default: uni.$u.props.badge.color
-        },
-        // 徽标形状,circle-四角均为圆角,horn-左下角为直角
-        shape: {
-            type: String,
-            default: uni.$u.props.badge.shape
-        },
-        // 设置数字的显示方式,overflow|ellipsis|limit
-        // overflow会根据max字段判断,超出显示`${max}+`
-        // ellipsis会根据max判断,超出显示`${max}...`
-        // limit会依据1000作为判断条件,超出1000,显示`${value/1000}K`,比如2.2k、3.34w,最多保留2位小数
-        numberType: {
-            type: String,
-            default: uni.$u.props.badge.numberType
-        },
-        // 设置badge的位置偏移,格式为 [x, y],也即设置的为top和right的值,absolute为true时有效
-        offset: {
-            type: Array,
-            default: uni.$u.props.badge.offset
-        },
-        // 是否反转背景和字体颜色
-        inverted: {
-            type: Boolean,
-            default: uni.$u.props.badge.inverted
-        },
-        // 是否绝对定位
-        absolute: {
-            type: Boolean,
-            default: uni.$u.props.badge.absolute
-        }
-    }
-}

+ 0 - 171
src/uni_modules/uview-ui/components/u-badge/u-badge.vue

xqd
@@ -1,171 +0,0 @@
-<template>
-	<text
-		v-if="show && ((Number(value) === 0 ? showZero : true) || isDot)"
-		:class="[isDot ? 'u-badge--dot' : 'u-badge--not-dot', inverted && 'u-badge--inverted', shape === 'horn' && 'u-badge--horn', `u-badge--${type}${inverted ? '--inverted' : ''}`]"
-		:style="[$u.addStyle(customStyle), badgeStyle]"
-		class="u-badge"
-	>{{ isDot ? '' :showValue }}</text>
-</template>
-
-<script>
-	import props from './props.js';
-	/**
-	 * badge 徽标数
-	 * @description 该组件一般用于图标右上角显示未读的消息数量,提示用户点击,有圆点和圆包含文字两种形式。
-	 * @tutorial https://uviewui.com/components/badge.html
-	 * 
-	 * @property {Boolean} 			isDot 		是否显示圆点 (默认 false )
-	 * @property {String | Number} 	value 		显示的内容
-	 * @property {Boolean} 			show 		是否显示 (默认 true )
-	 * @property {String | Number} 	max 		最大值,超过最大值会显示 '{max}+'  (默认999)
-	 * @property {String} 			type 		主题类型,error|warning|success|primary (默认 'error' )
-	 * @property {Boolean} 			showZero	当数值为 0 时,是否展示 Badge (默认 false )
-	 * @property {String} 			bgColor 	背景颜色,优先级比type高,如设置,type参数会失效
-	 * @property {String} 			color 		字体颜色 (默认 '#ffffff' )
-	 * @property {String} 			shape 		徽标形状,circle-四角均为圆角,horn-左下角为直角 (默认 'circle' )
-	 * @property {String} 			numberType	设置数字的显示方式,overflow|ellipsis|limit  (默认 'overflow' )
-	 * @property {Array}} 			offset		设置badge的位置偏移,格式为 [x, y],也即设置的为top和right的值,absolute为true时有效
-	 * @property {Boolean} 			inverted	是否反转背景和字体颜色(默认 false )
-	 * @property {Boolean} 			absolute	是否绝对定位(默认 false )
-	 * @property {Object}			customStyle	定义需要用到的外部样式
-	 * @example <u-badge :type="type" :count="count"></u-badge>
-	 */
-	export default {
-		name: 'u-badge',
-		mixins: [uni.$u.mpMixin, props, uni.$u.mixin],
-		computed: {
-			// 是否将badge中心与父组件右上角重合
-			boxStyle() {
-				let style = {};
-				return style;
-			},
-			// 整个组件的样式
-			badgeStyle() {
-				const style = {}
-				if(this.color) {
-					style.color = this.color
-				}
-				if (this.bgColor && !this.inverted) {
-					style.backgroundColor = this.bgColor
-				}
-				if (this.absolute) {
-					style.position = 'absolute'
-					// 如果有设置offset参数
-					if(this.offset.length) {
-						// top和right分为为offset的第一个和第二个值,如果没有第二个值,则right等于top
-						const top = this.offset[0]
-						const right = this.offset[1] || top
-						style.top = uni.$u.addUnit(top)
-						style.right = uni.$u.addUnit(right)
-					}
-				}
-				return style
-			},
-			showValue() {
-				switch (this.numberType) {
-					case "overflow":
-						return Number(this.value) > Number(this.max) ? this.max + "+" : this.value
-						break;
-					case "ellipsis":
-						return Number(this.value) > Number(this.max) ? "..." : this.value
-						break;
-					case "limit":
-						return Number(this.value) > 999 ? Number(this.value) >= 9999 ?
-							Math.floor(this.value / 1e4 * 100) / 100 + "w" : Math.floor(this.value /
-								1e3 * 100) / 100 + "k" : this.value
-						break;
-					default:
-						return Number(this.value)
-				}
-			},
-		}
-	}
-</script>
-
-<style lang="scss">
-	@import "../../libs/css/components.scss";
-
-	$u-badge-primary: $u-primary !default;
-	$u-badge-error: $u-error !default;
-	$u-badge-success: $u-success !default;
-	$u-badge-info: $u-info !default;
-	$u-badge-warning: $u-warning !default;
-	$u-badge-dot-radius: 100px !default;
-	$u-badge-dot-size: 8px !default;
-	$u-badge-dot-right: 4px !default;
-	$u-badge-dot-top: 0 !default;
-	$u-badge-text-font-size: 11px !default;
-	$u-badge-text-right: 10px !default;
-	$u-badge-text-padding: 2px 5px !default;
-	$u-badge-text-align: center !default;
-	$u-badge-text-color: #FFFFFF !default;
-
-	.u-badge {
-		border-top-right-radius: $u-badge-dot-radius;
-		border-top-left-radius: $u-badge-dot-radius;
-		border-bottom-left-radius: $u-badge-dot-radius;
-		border-bottom-right-radius: $u-badge-dot-radius;
-		@include flex;
-		line-height: $u-badge-text-font-size;
-		text-align: $u-badge-text-align;
-		font-size: $u-badge-text-font-size;
-		color: $u-badge-text-color;
-
-		&--dot {
-			height: $u-badge-dot-size;
-			width: $u-badge-dot-size;
-		}
-		
-		&--inverted {
-			font-size: 13px;
-		}
-		
-		&--not-dot {
-			padding: $u-badge-text-padding;
-		}
-
-		&--horn {
-			border-bottom-left-radius: 0;
-		}
-
-		&--primary {
-			background-color: $u-badge-primary;
-		}
-		
-		&--primary--inverted {
-			color: $u-badge-primary;
-		}
-
-		&--error {
-			background-color: $u-badge-error;
-		}
-		
-		&--error--inverted {
-			color: $u-badge-error;
-		}
-
-		&--success {
-			background-color: $u-badge-success;
-		}
-		
-		&--success--inverted {
-			color: $u-badge-success;
-		}
-
-		&--info {
-			background-color: $u-badge-info;
-		}
-		
-		&--info--inverted {
-			color: $u-badge-info;
-		}
-
-		&--warning {
-			background-color: $u-badge-warning;
-		}
-		
-		&--warning--inverted {
-			color: $u-badge-warning;
-		}
-	}
-</style>

+ 0 - 46
src/uni_modules/uview-ui/components/u-button/nvue.scss

xqd
@@ -1,46 +0,0 @@
-$u-button-active-opacity:0.75 !default;
-$u-button-loading-text-margin-left:4px !default;
-$u-button-text-color: #FFFFFF !default;
-$u-button-text-plain-error-color:$u-error !default;
-$u-button-text-plain-warning-color:$u-warning !default;
-$u-button-text-plain-success-color:$u-success !default;
-$u-button-text-plain-info-color:$u-info !default;
-$u-button-text-plain-primary-color:$u-primary !default;
-.u-button {
-	&--active {
-		opacity: $u-button-active-opacity;
-	}
-	
-	&--active--plain {
-		background-color: rgb(217, 217, 217);
-	}
-	
-	&__loading-text {
-		margin-left:$u-button-loading-text-margin-left;
-	}
-	
-	&__text,
-	&__loading-text {
-		color:$u-button-text-color;
-	}
-	
-	&__text--plain--error {
-		color:$u-button-text-plain-error-color;
-	}
-	
-	&__text--plain--warning {
-		color:$u-button-text-plain-warning-color;
-	}
-	
-	&__text--plain--success{
-		color:$u-button-text-plain-success-color;
-	}
-	
-	&__text--plain--info {
-		color:$u-button-text-plain-info-color;
-	}
-	
-	&__text--plain--primary {
-		color:$u-button-text-plain-primary-color;
-	}
-}

+ 0 - 156
src/uni_modules/uview-ui/components/u-button/props.js

xqd
@@ -1,156 +0,0 @@
-/*
- * @Author       : LQ
- * @Description  :
- * @version      : 1.0
- * @Date         : 2021-08-16 10:04:04
- * @LastAuthor   : LQ
- * @lastTime     : 2021-08-16 10:04:24
- * @FilePath     : /u-view2.0/uview-ui/components/u-button/props.js
- */
-export default {
-    props: {
-        // 是否细边框
-        hairline: {
-            type: Boolean,
-            default: uni.$u.props.button.hairline
-        },
-        // 按钮的预置样式,info,primary,error,warning,success
-        type: {
-            type: String,
-            default: uni.$u.props.button.type
-        },
-        // 按钮尺寸,large,normal,small,mini
-        size: {
-            type: String,
-            default: uni.$u.props.button.size
-        },
-        // 按钮形状,circle(两边为半圆),square(带圆角)
-        shape: {
-            type: String,
-            default: uni.$u.props.button.shape
-        },
-        // 按钮是否镂空
-        plain: {
-            type: Boolean,
-            default: uni.$u.props.button.plain
-        },
-        // 是否禁止状态
-        disabled: {
-            type: Boolean,
-            default: uni.$u.props.button.disabled
-        },
-        // 是否加载中
-        loading: {
-            type: Boolean,
-            default: uni.$u.props.button.loading
-        },
-        // 加载中提示文字
-        loadingText: {
-            type: [String, Number],
-            default: uni.$u.props.button.loadingText
-        },
-        // 加载状态图标类型
-        loadingMode: {
-            type: String,
-            default: uni.$u.props.button.loadingMode
-        },
-        // 加载图标大小
-        loadingSize: {
-            type: [String, Number],
-            default: uni.$u.props.button.loadingSize
-        },
-        // 开放能力,具体请看uniapp稳定关于button组件部分说明
-        // https://uniapp.dcloud.io/component/button
-        openType: {
-            type: String,
-            default: uni.$u.props.button.openType
-        },
-        // 用于 <form> 组件,点击分别会触发 <form> 组件的 submit/reset 事件
-        // 取值为submit(提交表单),reset(重置表单)
-        formType: {
-            type: String,
-            default: uni.$u.props.button.formType
-        },
-        // 打开 APP 时,向 APP 传递的参数,open-type=launchApp时有效
-        // 只微信小程序、QQ小程序有效
-        appParameter: {
-            type: String,
-            default: uni.$u.props.button.appParameter
-        },
-        // 指定是否阻止本节点的祖先节点出现点击态,微信小程序有效
-        hoverStopPropagation: {
-            type: Boolean,
-            default: uni.$u.props.button.hoverStopPropagation
-        },
-        // 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。只微信小程序有效
-        lang: {
-            type: String,
-            default: uni.$u.props.button.lang
-        },
-        // 会话来源,open-type="contact"时有效。只微信小程序有效
-        sessionFrom: {
-            type: String,
-            default: uni.$u.props.button.sessionFrom
-        },
-        // 会话内消息卡片标题,open-type="contact"时有效
-        // 默认当前标题,只微信小程序有效
-        sendMessageTitle: {
-            type: String,
-            default: uni.$u.props.button.sendMessageTitle
-        },
-        // 会话内消息卡片点击跳转小程序路径,open-type="contact"时有效
-        // 默认当前分享路径,只微信小程序有效
-        sendMessagePath: {
-            type: String,
-            default: uni.$u.props.button.sendMessagePath
-        },
-        // 会话内消息卡片图片,open-type="contact"时有效
-        // 默认当前页面截图,只微信小程序有效
-        sendMessageImg: {
-            type: String,
-            default: uni.$u.props.button.sendMessageImg
-        },
-        // 是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示,
-        // 用户点击后可以快速发送小程序消息,open-type="contact"时有效
-        showMessageCard: {
-            type: Boolean,
-            default: uni.$u.props.button.showMessageCard
-        },
-        // 额外传参参数,用于小程序的data-xxx属性,通过target.dataset.name获取
-        dataName: {
-            type: String,
-            default: uni.$u.props.button.dataName
-        },
-        // 节流,一定时间内只能触发一次
-        throttleTime: {
-            type: [String, Number],
-            default: uni.$u.props.button.throttleTime
-        },
-        // 按住后多久出现点击态,单位毫秒
-        hoverStartTime: {
-            type: [String, Number],
-            default: uni.$u.props.button.hoverStartTime
-        },
-        // 手指松开后点击态保留时间,单位毫秒
-        hoverStayTime: {
-            type: [String, Number],
-            default: uni.$u.props.button.hoverStayTime
-        },
-        // 按钮文字,之所以通过props传入,是因为slot传入的话
-        // nvue中无法控制文字的样式
-        text: {
-            type: [String, Number],
-            default: uni.$u.props.button.text
-        },
-        // 按钮图标
-        icon: {
-            type: String,
-            default: uni.$u.props.button.icon
-        },
-        // 按钮颜色,支持传入linear-gradient渐变色
-        color: {
-            type: String,
-            default: uni.$u.props.button.color
-        }
-    }
-}

+ 0 - 485
src/uni_modules/uview-ui/components/u-button/u-button.vue

xqd
@@ -1,485 +0,0 @@
-<template>
-    <!-- #ifndef APP-NVUE -->
-    <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="getphonenumber"
-        @getuserinfo="getuserinfo"
-        @error="error"
-        @opensetting="opensetting"
-        @launchapp="launchapp"
-        :hover-class="!disabled && !loading ? 'u-button--active' : ''"
-        class="u-button u-reset-button"
-        :style="[baseColor, $u.addStyle(customStyle)]"
-        @tap="clickHandler"
-        :class="bemClass"
-    >
-        <template v-if="loading">
-            <u-loading-icon
-                :mode="loadingMode"
-                :size="textSize * 1.15"
-                :color="loadingColor"
-            ></u-loading-icon>
-            <text
-                class="u-button__loading-text"
-                :style="[{ fontSize: textSize + 'px' }]"
-                >{{ loadingText || text }}</text
-            >
-        </template>
-        <template v-else>
-            <u-icon
-                v-if="icon"
-                :name="icon"
-                :color="iconColor"
-                :size="textSize * 1.35"
-                :customStyle="{ marginRight: '2px' }"
-            ></u-icon>
-            <slot>
-                <text
-                    class="u-button__text"
-                    :style="[{ fontSize: textSize + 'px' }]"
-                    >{{ text }}</text
-                >
-            </slot>
-        </template>
-    </button>
-    <!-- #endif -->
-
-    <!-- #ifdef APP-NVUE -->
-    <view
-        :hover-start-time="Number(hoverStartTime)"
-        :hover-stay-time="Number(hoverStayTime)"
-        class="u-button"
-        :hover-class="
-            !disabled && !loading && !color && (plain || type === 'info')
-                ? 'u-button--active--plain'
-                : !disabled && !loading && !plain
-                ? 'u-button--active'
-                : ''
-        "
-        @tap="clickHandler"
-        :class="bemClass"
-        :style="[baseColor, $u.addStyle(customStyle)]"
-    >
-        <template v-if="loading">
-            <u-loading-icon
-                :mode="loadingMode"
-                :size="textSize * 1.15"
-                :color="loadingColor"
-            ></u-loading-icon>
-            <text
-                class="u-button__loading-text"
-                :style="[nvueTextStyle]"
-                :class="[plain && `u-button__text--plain--${type}`]"
-                >{{ loadingText || text }}</text
-            >
-        </template>
-        <template v-else>
-            <u-icon
-                v-if="icon"
-                :name="icon"
-                :color="iconColor"
-                :size="textSize * 1.35"
-            ></u-icon>
-            <text
-                class="u-button__text"
-                :style="[
-                    {
-                        marginLeft: icon ? '2px' : 0,
-                    },
-                    nvueTextStyle,
-                ]"
-                :class="[plain && `u-button__text--plain--${type}`]"
-                >{{ text }}</text
-            >
-        </template>
-    </view>
-    <!-- #endif -->
-</template>
-
-<script>
-import button from "../../libs/mixin/button.js";
-import openType from "../../libs/mixin/openType.js";
-import props from "./props.js";
-/**
- * button 按钮
- * @description Button 按钮
- * @tutorial https://www.uviewui.com/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}			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 <u-button>月落</u-button>
- */
-export default {
-    name: "u-button",
-    // #ifdef MP
-    mixins: [uni.$u.mpMixin, uni.$u.mixin, button, openType, props],
-    // #endif
-    // #ifndef MP
-    mixins: [uni.$u.mpMixin, uni.$u.mixin, props],
-    // #endif
-    data() {
-        return {};
-    },
-    computed: {
-        // 生成bem风格的类名
-        bemClass() {
-            // this.bem为一个computed变量,在mixin中
-            if (!this.color) {
-                return this.bem(
-                    "button",
-                    ["type", "shape", "size"],
-                    ["disabled", "plain", "hairline"]
-                );
-            } else {
-                // 由于nvue的原因,在有color参数时,不需要传入type,否则会生成type相关的类型,影响最终的样式
-                return this.bem(
-                    "button",
-                    ["shape", "size"],
-                    ["disabled", "plain", "hairline"]
-                );
-            }
-        },
-        loadingColor() {
-            if (this.plain) {
-                // 如果有设置color值,则用color值,否则使用type主题颜色
-                return this.color
-                    ? this.color
-                    : this.$u.config.color[`u-${this.type}`];
-            }
-            if (this.type === "info") {
-                return "#c9c9c9";
-            }
-            return "rgb(200, 200, 200)";
-        },
-        iconColor() {
-            // 如果是镂空状态,设置了color就用color值,否则使用主题颜色,
-            // u-icon的color能接受一个主题颜色的值
-            if (this.plain) {
-                return this.color ? this.color : this.type;
-            } else {
-                return "#ffffff";
-            }
-        },
-        baseColor() {
-            let style = {};
-            if (this.color) {
-                // 针对自定义了color颜色的情况,镂空状态下,就是用自定义的颜色
-                style.color = this.plain ? this.color : "white";
-                if (!this.plain) {
-                    // 非镂空,背景色使用自定义的颜色
-                    style["background-color"] = this.color;
-                }
-                if (this.color.indexOf("gradient") !== -1) {
-                    // 如果自定义的颜色为渐变色,不显示边框,以及通过backgroundImage设置渐变色
-                    // weex文档说明可以写borderWidth的形式,为什么这里需要分开写?
-                    // 因为weex是阿里巴巴为了部门业绩考核而做的你懂的东西,所以需要这么写才有效
-                    style.borderTopWidth = 0;
-                    style.borderRightWidth = 0;
-                    style.borderBottomWidth = 0;
-                    style.borderLeftWidth = 0;
-                    if (!this.plain) {
-                        style.backgroundImage = this.color;
-                    }
-                } else {
-                    // 非渐变色,则设置边框相关的属性
-                    style.borderColor = this.color;
-                    style.borderWidth = "1px";
-                    style.borderStyle = "solid";
-                }
-            }
-            return style;
-        },
-        // nvue版本按钮的字体不会继承父组件的颜色,需要对每一个text组件进行单独的设置
-        nvueTextStyle() {
-            let style = {};
-            // 针对自定义了color颜色的情况,镂空状态下,就是用自定义的颜色
-            if (this.type === "info") {
-                style.color = "#323233";
-            }
-            if (this.color) {
-                style.color = this.plain ? this.color : "white";
-            }
-            style.fontSize = this.textSize + "px";
-            return style;
-        },
-        // 字体大小
-        textSize() {
-            let fontSize = 14,
-                { size } = this;
-            if (size === "large") fontSize = 16;
-            if (size === "normal") fontSize = 14;
-            if (size === "small") fontSize = 12;
-            if (size === "mini") fontSize = 10;
-            return fontSize;
-        },
-    },
-    methods: {
-        clickHandler() {
-            // 非禁止并且非加载中,才能点击
-            if (!this.disabled && !this.loading) {
-                this.$emit("click");
-            }
-        },
-        // 下面为对接uniapp官方按钮开放能力事件回调的对接
-        getphonenumber(res) {
-            this.$emit("getphonenumber", res);
-        },
-        getuserinfo(res) {
-            this.$emit("getuserinfo", res);
-        },
-        error(res) {
-            this.$emit("error", res);
-        },
-        opensetting(res) {
-            this.$emit("opensetting", res);
-        },
-        launchapp(res) {
-            this.$emit("launchapp", res);
-        },
-    },
-};
-</script>
-
-<style lang="scss">
-@import "../../libs/css/components.scss";
-
-/* #ifndef APP-NVUE */
-@import "./vue.scss";
-/* #endif */
-
-/* #ifdef APP-NVUE */
-@import "./nvue.scss";
-/* #endif */
-
-$u-button-u-button-height: 40px !default;
-$u-button-text-font-size: 15px !default;
-$u-button-loading-text-font-size: 15px !default;
-$u-button-loading-text-margin-left: 4px !default;
-$u-button-large-width: 100% !default;
-$u-button-large-height: 50px !default;
-$u-button-normal-padding: 0 12px !default;
-$u-button-large-padding: 0 15px !default;
-$u-button-normal-font-size: 14px !default;
-$u-button-small-min-width: 60px !default;
-$u-button-small-height: 30px !default;
-$u-button-small-padding: 0px 8px !default;
-$u-button-mini-padding: 0px 8px !default;
-$u-button-small-font-size: 12px !default;
-$u-button-mini-height: 22px !default;
-$u-button-mini-font-size: 10px !default;
-$u-button-mini-min-width: 50px !default;
-$u-button-disabled-opacity: 0.5 !default;
-$u-button-info-color: #323233 !default;
-$u-button-info-background-color: #fff !default;
-$u-button-info-border-color: #ebedf0 !default;
-$u-button-info-border-width: 1px !default;
-$u-button-info-border-style: solid !default;
-$u-button-success-color: #fff !default;
-$u-button-success-background-color: $u-success !default;
-$u-button-success-border-color: $u-button-success-background-color !default;
-$u-button-success-border-width: 1px !default;
-$u-button-success-border-style: solid !default;
-$u-button-primary-color: #fff !default;
-$u-button-primary-background-color: $u-primary !default;
-$u-button-primary-border-color: $u-button-primary-background-color !default;
-$u-button-primary-border-width: 1px !default;
-$u-button-primary-border-style: solid !default;
-$u-button-error-color: #fff !default;
-$u-button-error-background-color: $u-error !default;
-$u-button-error-border-color: $u-button-error-background-color !default;
-$u-button-error-border-width: 1px !default;
-$u-button-error-border-style: solid !default;
-$u-button-warning-color: #fff !default;
-$u-button-warning-background-color: $u-warning !default;
-$u-button-warning-border-color: $u-button-warning-background-color !default;
-$u-button-warning-border-width: 1px !default;
-$u-button-warning-border-style: solid !default;
-$u-button-block-width: 100% !default;
-$u-button-circle-border-top-right-radius: 100px !default;
-$u-button-circle-border-top-left-radius: 100px !default;
-$u-button-circle-border-bottom-left-radius: 100px !default;
-$u-button-circle-border-bottom-right-radius: 100px !default;
-$u-button-square-border-top-right-radius: 3px !default;
-$u-button-square-border-top-left-radius: 3px !default;
-$u-button-square-border-bottom-left-radius: 3px !default;
-$u-button-square-border-bottom-right-radius: 3px !default;
-$u-button-icon-min-width: 1em !default;
-$u-button-plain-background-color: #fff !default;
-$u-button-hairline-border-width: 0.5px !default;
-
-.u-button {
-    height: $u-button-u-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: $u-button-text-font-size;
-    }
-
-    &__loading-text {
-        font-size: $u-button-loading-text-font-size;
-        margin-left: $u-button-loading-text-margin-left;
-    }
-
-    &--large {
-        /* #ifndef APP-NVUE */
-        width: $u-button-large-width;
-        /* #endif */
-        height: $u-button-large-height;
-        padding: $u-button-large-padding;
-    }
-
-    &--normal {
-        padding: $u-button-normal-padding;
-        font-size: $u-button-normal-font-size;
-    }
-
-    &--small {
-        /* #ifndef APP-NVUE */
-        min-width: $u-button-small-min-width;
-        /* #endif */
-        height: $u-button-small-height;
-        padding: $u-button-small-padding;
-        font-size: $u-button-small-font-size;
-    }
-
-    &--mini {
-        height: $u-button-mini-height;
-        font-size: $u-button-mini-font-size;
-        /* #ifndef APP-NVUE */
-        min-width: $u-button-mini-min-width;
-        /* #endif */
-        padding: $u-button-mini-padding;
-    }
-
-    &--disabled {
-        opacity: $u-button-disabled-opacity;
-    }
-
-    &--info {
-        color: $u-button-info-color;
-        background-color: $u-button-info-background-color;
-        border-color: $u-button-info-border-color;
-        border-width: $u-button-info-border-width;
-        border-style: $u-button-info-border-style;
-    }
-
-    &--success {
-        color: $u-button-success-color;
-        background-color: $u-button-success-background-color;
-        border-color: $u-button-success-border-color;
-        border-width: $u-button-success-border-width;
-        border-style: $u-button-success-border-style;
-    }
-
-    &--primary {
-        color: $u-button-primary-color;
-        background-color: $u-button-primary-background-color;
-        border-color: $u-button-primary-border-color;
-        border-width: $u-button-primary-border-width;
-        border-style: $u-button-primary-border-style;
-    }
-
-    &--error {
-        color: $u-button-error-color;
-        background-color: $u-button-error-background-color;
-        border-color: $u-button-error-border-color;
-        border-width: $u-button-error-border-width;
-        border-style: $u-button-error-border-style;
-    }
-
-    &--warning {
-        color: $u-button-warning-color;
-        background-color: $u-button-warning-background-color;
-        border-color: $u-button-warning-border-color;
-        border-width: $u-button-warning-border-width;
-        border-style: $u-button-warning-border-style;
-    }
-
-    &--block {
-        @include flex;
-        width: $u-button-block-width;
-    }
-
-    &--circle {
-        border-top-right-radius: $u-button-circle-border-top-right-radius;
-        border-top-left-radius: $u-button-circle-border-top-left-radius;
-        border-bottom-left-radius: $u-button-circle-border-bottom-left-radius;
-        border-bottom-right-radius: $u-button-circle-border-bottom-right-radius;
-    }
-
-    &--square {
-        border-bottom-left-radius: $u-button-square-border-top-right-radius;
-        border-bottom-right-radius: $u-button-square-border-top-left-radius;
-        border-top-left-radius: $u-button-square-border-bottom-left-radius;
-        border-top-right-radius: $u-button-square-border-bottom-right-radius;
-    }
-
-    &__icon {
-        /* #ifndef APP-NVUE */
-        min-width: $u-button-icon-min-width;
-        line-height: inherit !important;
-        vertical-align: top;
-        /* #endif */
-    }
-
-    &--plain {
-        background-color: $u-button-plain-background-color;
-    }
-
-    &--hairline {
-        border-width: $u-button-hairline-border-width !important;
-    }
-}
-</style>

+ 0 - 73
src/uni_modules/uview-ui/components/u-button/vue.scss

xqd
@@ -1,73 +0,0 @@
-// nvue下hover-class无效
-$u-button-before-top:50% !default;
-$u-button-before-left:50% !default;
-$u-button-before-width:100% !default;
-$u-button-before-height:100% !default;
-$u-button-before-transform:translate(-50%, -50%) !default;
-$u-button-before-opacity:0 !default;
-$u-button-before-background-color:#000 !default;
-$u-button-before-border-color:#000 !default;
-$u-button-active-before-opacity:.15 !default;
-$u-button-icon-margin-left:4px !default;
-$u-button-plain-u-button-info-color:$u-info;
-$u-button-plain-u-button-success-color:$u-success;
-$u-button-plain-u-button-error-color:$u-error;
-$u-button-plain-u-button-warning-color:$u-error;
-
-.u-button {
-	&:before {
-		position: absolute;
-		top:$u-button-before-top;
-		left:$u-button-before-left;
-		width:$u-button-before-width;
-		height:$u-button-before-height;
-		border: inherit;
-		border-radius: inherit;
-		transform:$u-button-before-transform;
-		opacity:$u-button-before-opacity;
-		content: " ";
-		background-color:$u-button-before-background-color;
-		border-color:$u-button-before-border-color;
-	}
-	
-	&--active {
-		&:before {
-			opacity: .15
-		}
-	}
-	
-	&__icon+&__text:not(:empty),
-	&__loading-text {
-		margin-left:$u-button-icon-margin-left;
-	}
-	
-	&--plain {
-		&.u-button--primary {
-			color: $u-primary;
-		}
-	}
-	
-	&--plain {
-		&.u-button--info {
-			color:$u-button-plain-u-button-info-color;
-		}
-	}
-	
-	&--plain {
-		&.u-button--success {
-			color:$u-button-plain-u-button-success-color;
-		}
-	}
-	
-	&--plain {
-		&.u-button--error {
-			color:$u-button-plain-u-button-error-color;
-		}
-	}
-	
-	&--plain {
-		&.u-button--warning {
-			color:$u-button-plain-u-button-warning-color;
-		}
-	}
-}

+ 0 - 99
src/uni_modules/uview-ui/components/u-calendar/header.vue

xqd
@@ -1,99 +0,0 @@
-<template>
-	<view class="u-calendar-header u-border-bottom">
-		<text
-			class="u-calendar-header__title"
-			v-if="showTitle"
-		>{{ title }}</text>
-		<text
-			class="u-calendar-header__subtitle"
-			v-if="showSubtitle"
-		>{{ subtitle }}</text>
-		<view class="u-calendar-header__weekdays">
-			<text class="u-calendar-header__weekdays__weekday">一</text>
-			<text class="u-calendar-header__weekdays__weekday">二</text>
-			<text class="u-calendar-header__weekdays__weekday">三</text>
-			<text class="u-calendar-header__weekdays__weekday">四</text>
-			<text class="u-calendar-header__weekdays__weekday">五</text>
-			<text class="u-calendar-header__weekdays__weekday">六</text>
-			<text class="u-calendar-header__weekdays__weekday">日</text>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: 'u-calendar-header',
-		mixins: [uni.$u.mpMixin, uni.$u.mixin],
-		props: {
-			// 标题
-			title: {
-				type: String,
-				default: ''
-			},
-			// 副标题
-			subtitle: {
-				type: String,
-				default: ''
-			},
-			// 是否显示标题
-			showTitle: {
-				type: Boolean,
-				default: true
-			},
-			// 是否显示副标题
-			showSubtitle: {
-				type: Boolean,
-				default: true
-			},
-		},
-		data() {
-			return {
-
-			}
-		},
-		methods: {
-			name() {
-
-			}
-		},
-	}
-</script>
-
-<style lang="scss">
-	@import "../../libs/css/components.scss";
-
-	.u-calendar-header {
-		padding-bottom: 4px;
-
-		&__title {
-			font-size: 16px;
-			color: $u-main-color;
-			text-align: center;
-			height: 42px;
-			line-height: 42px;
-			font-weight: bold;
-		}
-
-		&__subtitle {
-			font-size: 14px;
-			color: $u-main-color;
-			height: 40px;
-			text-align: center;
-			line-height: 40px;
-			font-weight: bold;
-		}
-
-		&__weekdays {
-			@include flex;
-			justify-content: space-between;
-
-			&__weekday {
-				font-size: 13px;
-				color: $u-main-color;
-				line-height: 30px;
-				flex: 1;
-				text-align: center;
-			}
-		}
-	}
-</style>

+ 0 - 570
src/uni_modules/uview-ui/components/u-calendar/month.vue

xqd
@@ -1,570 +0,0 @@
-<template>
-	<view class="u-calendar-month-wrapper" ref="u-calendar-month-wrapper">
-		<view v-for="(item, index) in months" :key="index" :class="[`u-calendar-month-${index}`]"
-			:ref="`u-calendar-month-${index}`" :id="`month-${item.month}`">
-			<text v-if="index !== 0" class="u-calendar-month__title">{{ item.year }}年{{ item.month }}月</text>
-			<view class="u-calendar-month__days">
-				<view v-if="showMark" class="u-calendar-month__days__month-mark-wrapper">
-					<text class="u-calendar-month__days__month-mark-wrapper__text">{{ item.month }}</text>
-				</view>
-				<view class="u-calendar-month__days__day" v-for="(item1, index1) in item.date" :key="index1"
-					:style="[dayStyle(index, index1, item1)]" @tap="clickHandler(index, index1, item1)"
-					:class="[item1.selected && 'u-calendar-month__days__day__select--selected']">
-					<view class="u-calendar-month__days__day__select" :style="[daySelectStyle(index, index1, item1)]">
-						<text class="u-calendar-month__days__day__select__info"
-							:class="[item1.disabled && 'u-calendar-month__days__day__select__info--disabled']"
-							:style="[textStyle(item1)]">{{ item1.day }}</text>
-						<text v-if="getBottomInfo(index, index1, item1)"
-							class="u-calendar-month__days__day__select__buttom-info"
-							:class="[item1.disabled && 'u-calendar-month__days__day__select__buttom-info--disabled']"
-							:style="[textStyle(item1)]">{{ getBottomInfo(index, index1, item1) }}</text>
-						<text v-if="item1.dot" class="u-calendar-month__days__day__select__dot"></text>
-					</view>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	// #ifdef APP-NVUE
-	// 由于nvue不支持百分比单位,需要查询宽度来计算每个日期的宽度
-	const dom = uni.requireNativePlugin('dom')
-	// #endif
-	import dayjs from '../../libs/util/dayjs.js';
-	export default {
-		name: 'u-calendar-month',
-		mixins: [uni.$u.mpMixin, uni.$u.mixin],
-		props: {
-			// 是否显示月份背景色
-			showMark: {
-				type: Boolean,
-				default: true
-			},
-			// 主题色,对底部按钮和选中日期有效
-			color: {
-				type: String,
-				default: '#3c9cff'
-			},
-			// 月份数据
-			months: {
-				type: Array,
-				default: () => []
-			},
-			// 日期选择类型
-			mode: {
-				type: String,
-				default: 'single'
-			},
-			// 日期行高
-			rowHeight: {
-				type: [String, Number],
-				default: 58
-			},
-			// mode=multiple时,最多可选多少个日期
-			maxCount: {
-				type: [String, Number],
-				default: Infinity
-			},
-			// mode=range时,第一个日期底部的提示文字
-			startText: {
-				type: String,
-				default: '开始'
-			},
-			// mode=range时,最后一个日期底部的提示文字
-			endText: {
-				type: String,
-				default: '结束'
-			},
-			// 默认选中的日期,mode为multiple或range是必须为数组格式
-			defaultDate: {
-				type: [Array, String, Date],
-				default: null
-			},
-			// 最小的可选日期
-			minDate: {
-				type: [String, Number],
-				default: 0
-			},
-			// 最大可选日期
-			maxDate: {
-				type: [String, Number],
-				default: 0
-			},
-			// 如果没有设置maxDate,则往后推多少个月
-			maxMonth: {
-				type: [String, Number],
-				default: 2
-			},
-			// 是否为只读状态,只读状态下禁止选择日期
-			readonly: {
-				type: Boolean,
-				default: uni.$u.props.calendar.readonly
-			},
-			// 日期区间最多可选天数,默认无限制,mode = range时有效
-			maxRange: {
-				type: [Number, String],
-				default: Infinity
-			},
-			// 范围选择超过最多可选天数时的提示文案,mode = range时有效
-			rangePrompt: {
-				type: String,
-				default: ''
-			},
-			// 范围选择超过最多可选天数时,是否展示提示文案,mode = range时有效
-			showRangePrompt: {
-				type: Boolean,
-				default: true
-			},
-			// 是否允许日期范围的起止时间为同一天,mode = range时有效
-			allowSameDay: {
-				type: Boolean,
-				default: false
-			}
-		},
-		data() {
-			return {
-				// 每个日期的宽度
-				width: 0,
-				// 当前选中的日期item
-				item: {},
-				selected: []
-			}
-		},
-		watch: {
-			selectedChange: {
-				immediate: true,
-				handler(n) {
-					this.setDefaultDate()
-				}
-			}
-		},
-		computed: {
-			// 多个条件的变化,会引起选中日期的变化,这里统一管理监听
-			selectedChange() {
-				return [this.minDate, this.maxDate, this.defaultDate]
-			},
-			dayStyle(index1, index2, item) {
-				return (index1, index2, item) => {
-					const style = {}
-					let week = item.week
-					// 不进行四舍五入的形式保留2位小数
-					const dayWidth = Number(parseFloat(this.width / 7).toFixed(3).slice(0, -1))
-					// 得出每个日期的宽度
-					style.width = uni.$u.addUnit(dayWidth)
-					style.height = uni.$u.addUnit(this.rowHeight)
-					if (index2 === 0) {
-						// 获取当前为星期几,如果为0,则为星期天,减一为每月第一天时,需要向左偏移的item个数
-						week = (week === 0 ? 7 : week) - 1
-						style.marginLeft = uni.$u.addUnit(week * dayWidth)
-					}
-					if (this.mode === 'range') {
-						// 之所以需要这么写,是因为DCloud公司的iOS客户端的开发者能力有限导致的bug
-						style.paddingLeft = 0
-						style.paddingRight = 0
-						style.paddingBottom = 0
-						style.paddingTop = 0
-					}
-					return style
-				}
-			},
-			daySelectStyle() {
-				return (index1, index2, item) => {
-					let date = dayjs(item.date).format("YYYY-MM-DD"),
-						style = {}
-					// 判断date是否在selected数组中,因为月份可能会需要补0,所以使用dateSame判断,而不用数组的includes判断
-					if (this.selected.some(item => this.dateSame(item, date))) {
-						style.backgroundColor = this.color
-					}
-					if (this.mode === 'single') {
-						if (date === this.selected[0]) {
-							// 因为需要对nvue的兼容,只能这么写,无法缩写,也无法通过类名控制等等
-							style.borderTopLeftRadius = '3px'
-							style.borderBottomLeftRadius = '3px'
-							style.borderTopRightRadius = '3px'
-							style.borderBottomRightRadius = '3px'
-						}
-					} else if (this.mode === 'range') {
-						if (this.selected.length >= 2) {
-							const len = this.selected.length - 1
-							// 第一个日期设置左上角和左下角的圆角
-							if (this.dateSame(date, this.selected[0])) {
-								style.borderTopLeftRadius = '3px'
-								style.borderBottomLeftRadius = '3px'
-							}
-							// 最后一个日期设置右上角和右下角的圆角
-							if (this.dateSame(date, this.selected[len])) {
-								style.borderTopRightRadius = '3px'
-								style.borderBottomRightRadius = '3px'
-							}
-							// 处于第一和最后一个之间的日期,背景色设置为浅色,通过将对应颜色进行等分,再取其尾部的颜色值
-							if (dayjs(date).isAfter(dayjs(this.selected[0])) && dayjs(date).isBefore(dayjs(this
-									.selected[len]))) {
-								style.backgroundColor = uni.$u.colorGradient(this.color, '#ffffff', 100)[90]
-								// 增加一个透明度,让范围区间的背景色也能看到底部的mark水印字符
-								style.opacity = 0.7
-							}
-						} else if (this.selected.length === 1) {
-							// 之所以需要这么写,是因为DCloud公司的iOS客户端的开发者能力有限导致的bug
-							// 进行还原操作,否则在nvue的iOS,uni-app有bug,会导致诡异的表现
-							style.borderTopLeftRadius = '3px'
-							style.borderBottomLeftRadius = '3px'
-						}
-					} else {
-						if (this.selected.some(item => this.dateSame(item, date))) {
-							style.borderTopLeftRadius = '3px'
-							style.borderBottomLeftRadius = '3px'
-							style.borderTopRightRadius = '3px'
-							style.borderBottomRightRadius = '3px'
-						}
-					}
-					return style
-				}
-			},
-			// 某个日期是否被选中
-			textStyle() {
-				return (item) => {
-					const date = dayjs(item.date).format("YYYY-MM-DD"),
-						style = {}
-					// 选中的日期,提示文字设置白色
-					if (this.selected.some(item => this.dateSame(item, date))) {
-						style.color = '#ffffff'
-					}
-					if (this.mode === 'range') {
-						const len = this.selected.length - 1
-						// 如果是范围选择模式,第一个和最后一个之间的日期,文字颜色设置为高亮的主题色
-						if (dayjs(date).isAfter(dayjs(this.selected[0])) && dayjs(date).isBefore(dayjs(this
-								.selected[len]))) {
-							style.color = this.color
-						}
-					}
-					return style
-				}
-			},
-			// 获取底部的提示文字
-			getBottomInfo() {
-				return (index1, index2, item) => {
-					const date = dayjs(item.date).format("YYYY-MM-DD")
-					const bottomInfo = item.bottomInfo
-					// 当为日期范围模式时,且选择的日期个数大于0时
-					if (this.mode === 'range' && this.selected.length > 0) {
-						if (this.selected.length === 1) {
-							// 选择了一个日期时,如果当前日期为数组中的第一个日期,则显示底部文字为“开始”
-							if (this.dateSame(date, this.selected[0])) return this.startText
-							else return bottomInfo
-						} else {
-							const len = this.selected.length - 1
-							// 如果数组中的日期大于2个时,第一个和最后一个显示为开始和结束日期
-							if (this.dateSame(date, this.selected[0]) && this.dateSame(date, this.selected[1]) &&
-								len === 1) {
-								// 如果长度为2,且第一个等于第二个日期,则提示语放在同一个item中
-								return `${this.startText}/${this.endText}`
-							} else if (this.dateSame(date, this.selected[0])) {
-								return this.startText
-							} else if (this.dateSame(date, this.selected[len])) {
-								return this.endText
-							} else {
-								return bottomInfo
-							}
-						}
-					} else {
-						return bottomInfo
-					}
-				}
-			}
-		},
-		mounted() {
-			this.init()
-		},
-		methods: {
-			init() {
-				this.$nextTick(() => {
-					// 这里需要另一个延时,因为获取宽度后,会进行月份数据渲染,只有渲染完成之后,才有真正的高度
-					// 因为nvue下,$nextTick并不是100%可靠的
-					uni.$u.sleep(10).then(() => {
-						this.getWrapperWidth()
-						this.getMonthRect()
-					})
-				})
-			},
-			// 判断两个日期是否相等
-			dateSame(date1, date2) {
-				return dayjs(date1).isSame(dayjs(date2))
-			},
-			// 获取月份数据区域的宽度,因为nvue不支持百分比,所以无法通过css设置每个日期item的宽度
-			getWrapperWidth() {
-				// #ifdef APP-NVUE
-				dom.getComponentRect(this.$refs['u-calendar-month-wrapper'], res => {
-					this.width = res.size.width
-				})
-				// #endif
-				// #ifndef APP-NVUE
-				this.$uGetRect('.u-calendar-month-wrapper').then(size => {
-					this.width = size.width
-				})
-				// #endif
-			},
-			getMonthRect() {
-				// 获取每个月份数据的尺寸,用于父组件在scroll-view滚动事件中,监听当前滚动到了第几个月份
-				const promiseAllArr = this.months.map((item, index) => this.getMonthRectByPromise(
-					`u-calendar-month-${index}`))
-				// 一次性返回
-				Promise.all(promiseAllArr).then(
-					sizes => {
-						let height = 1
-						const topArr = []
-						for (let i = 0; i < this.months.length; i++) {
-							// 添加到months数组中,供scroll-view滚动事件中,判断当前滚动到哪个月份
-							topArr[i] = height
-							height += sizes[i].height
-						}
-						// 由于微信下,无法通过this.months[i].top的形式(引用类型)去修改父组件的month的top值,所以使用事件形式对外发出
-						this.$emit('updateMonthTop', topArr)
-					})
-			},
-			// 获取每个月份区域的尺寸
-			getMonthRectByPromise(el) {
-				// #ifndef APP-NVUE
-				// $uGetRect为uView自带的节点查询简化方法,详见文档介绍:https://www.uviewui.com/js/getRect.html
-				// 组件内部一般用this.$uGetRect,对外的为this.$u.getRect,二者功能一致,名称不同
-				return new Promise(resolve => {
-					this.$uGetRect(`.${el}`).then(size => {
-						resolve(size)
-					})
-				})
-				// #endif
-
-				// #ifdef APP-NVUE 
-				// nvue下,使用dom模块查询元素高度
-				// 返回一个promise,让调用此方法的主体能使用then回调
-				return new Promise(resolve => {
-					dom.getComponentRect(this.$refs[el][0], res => {
-						resolve(res.size)
-					})
-				})
-				// #endif
-			},
-			// 点击某一个日期
-			clickHandler(index1, index2, item) {
-				if (this.readonly) {
-					return;
-				}
-				this.item = item
-				const date = dayjs(item.date).format("YYYY-MM-DD")
-				if (item.disabled) return
-				// 对上一次选择的日期数组进行深度克隆
-				let selected = uni.$u.deepClone(this.selected)
-				if (this.mode === 'single') {
-					// 单选情况下,让数组中的元素为当前点击的日期
-					selected = [date]
-				} else if (this.mode === 'multiple') {
-					if (selected.some(item => this.dateSame(item, date))) {
-						// 如果点击的日期已在数组中,则进行移除操作,也就是达到反选的效果
-						const itemIndex = selected.findIndex(item => item === date)
-						selected.splice(itemIndex, 1)
-					} else {
-						// 如果点击的日期不在数组中,且已有的长度小于总可选长度时,则添加到数组中去
-						if (selected.length < this.maxCount) selected.push(date)
-					}
-				} else {
-					// 选择区间形式
-					if (selected.length === 0 || selected.length >= 2) {
-						// 如果原来就为0或者大于2的长度,则当前点击的日期,就是开始日期
-						selected = [date]
-					} else if (selected.length === 1) {
-						// 如果已经选择了开始日期
-						const existsDate = selected[0]
-						// 如果当前选择的日期小于上一次选择的日期,则当前的日期定为开始日期
-						if (dayjs(date).isBefore(existsDate)) {
-							selected = [date]
-						} else if (dayjs(date).isAfter(existsDate)) {
-							// 当前日期减去最大可选的日期天数,如果大于起始时间,则进行提示
-							if(dayjs(dayjs(date).subtract(this.maxRange, 'day')).isAfter(dayjs(selected[0])) && this.showRangePrompt) {
-								if(this.rangePrompt) {
-									uni.$u.toast(this.rangePrompt)
-								} else {
-									uni.$u.toast(`选择天数不能超过 ${this.maxRange} 天`)
-								}
-								return 
-							}
-							// 如果当前日期大于已有日期,将当前的添加到数组尾部
-							selected.push(date)
-							const startDate = selected[0]
-							const endDate = selected[1]
-							const arr = []
-							let i = 0
-							do {
-								// 将开始和结束日期之间的日期添加到数组中
-								arr.push(dayjs(startDate).add(i, 'day').format("YYYY-MM-DD"))
-								i++
-								// 累加的日期小于结束日期时,继续下一次的循环
-							} while (dayjs(startDate).add(i, 'day').isBefore(dayjs(endDate)))
-							// 为了一次性修改数组,避免computed中多次触发,这里才用arr变量一次性赋值的方式,同时将最后一个日期添加近来
-							arr.push(endDate)
-							selected = arr
-						} else {
-							// 选择区间时,只有一个日期的情况下,且不允许选择起止为同一天的话,不允许选择自己
-							if (selected[0] === date && !this.allowSameDay) return
-							selected.push(date)
-						}
-					}
-				}
-				this.setSelected(selected)
-			},
-			// 设置默认日期
-			setDefaultDate() {
-				if (!this.defaultDate) {
-					// 如果没有设置默认日期,则将当天日期设置为默认选中的日期
-					const selected = [dayjs().format("YYYY-MM-DD")]
-					return this.setSelected(selected, false)
-				}
-				let defaultDate = []
-				const minDate = this.minDate || dayjs().format("YYYY-MM-DD")
-				const maxDate = this.maxDate || dayjs(minDate).add(this.maxMonth - 1, 'month').format("YYYY-MM-DD")
-				if (this.mode === 'single') {
-					// 单选模式,可以是字符串或数组,Date对象等
-					if (!uni.$u.test.array(this.defaultDate)) {
-						defaultDate = [dayjs(this.defaultDate).format("YYYY-MM-DD")]
-					} else {
-						defaultDate = [this.defaultDate[0]]
-					}
-				} else {
-					// 如果为非数组,则不执行
-					if (!uni.$u.test.array(this.defaultDate)) return
-					defaultDate = this.defaultDate
-				}
-				// 过滤用户传递的默认数组,取出只在可允许最大值与最小值之间的元素
-				defaultDate = defaultDate.filter(item => {
-					return dayjs(item).isAfter(dayjs(minDate).subtract(1, 'day')) && dayjs(item).isBefore(dayjs(
-						maxDate).add(1, 'day'))
-				})
-				this.setSelected(defaultDate, false)
-			},
-			setSelected(selected, event = true) {
-				this.selected = selected
-				event && this.$emit('monthSelected', this.selected)
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	@import "../../libs/css/components.scss";
-
-	.u-calendar-month-wrapper {
-		margin-top: 4px;
-	}
-
-	.u-calendar-month {
-
-		&__title {
-			font-size: 14px;
-			line-height: 42px;
-			height: 42px;
-			color: $u-main-color;
-			text-align: center;
-			font-weight: bold;
-		}
-
-		&__days {
-			position: relative;
-			@include flex;
-			flex-wrap: wrap;
-
-			&__month-mark-wrapper {
-				position: absolute;
-				top: 0;
-				bottom: 0;
-				left: 0;
-				right: 0;
-				@include flex;
-				justify-content: center;
-				align-items: center;
-
-				&__text {
-					font-size: 155px;
-					color: rgba(231, 232, 234, 0.83);
-				}
-			}
-
-			&__day {
-				@include flex;
-				padding: 2px;
-
-				&__select {
-					flex: 1;
-					@include flex;
-					align-items: center;
-					justify-content: center;
-					position: relative;
-
-					&__dot {
-						width: 7px;
-						height: 7px;
-						border-radius: 100px;
-						background-color: $u-error;
-						position: absolute;
-						top: 12px;
-						right: 7px;
-					}
-
-					&__buttom-info {
-						color: $u-content-color;
-						text-align: center;
-						position: absolute;
-						bottom: 5px;
-						font-size: 10px;
-						text-align: center;
-						left: 0;
-						right: 0;
-
-						&--selected {
-							color: #ffffff;
-						}
-
-						&--disabled {
-							color: #cacbcd;
-						}
-					}
-
-					&__info {
-						text-align: center;
-						font-size: 16px;
-
-						&--selected {
-							color: #ffffff;
-						}
-
-						&--disabled {
-							color: #cacbcd;
-						}
-					}
-
-					&--selected {
-						background-color: $u-primary;
-						@include flex;
-						justify-content: center;
-						align-items: center;
-						flex: 1;
-						border-radius: 3px;
-					}
-
-					&--range-selected {
-						opacity: 0.3;
-						border-radius: 0;
-					}
-
-					&--range-start-selected {
-						border-top-right-radius: 0;
-						border-bottom-right-radius: 0;
-					}
-
-					&--range-end-selected {
-						border-top-left-radius: 0;
-						border-bottom-left-radius: 0;
-					}
-				}
-			}
-		}
-	}
-</style>

+ 0 - 134
src/uni_modules/uview-ui/components/u-calendar/props.js

xqd
@@ -1,134 +0,0 @@
-export default {
-    props: {
-        // 日历顶部标题
-        title: {
-            type: String,
-            default: uni.$u.props.calendar.title
-        },
-        // 是否显示标题
-        showTitle: {
-            type: Boolean,
-            default: uni.$u.props.calendar.showTitle
-        },
-        // 是否显示副标题
-        showSubtitle: {
-            type: Boolean,
-            default: uni.$u.props.calendar.showSubtitle
-        },
-        // 日期类型选择,single-选择单个日期,multiple-可以选择多个日期,range-选择日期范围
-        mode: {
-            type: String,
-            default: uni.$u.props.calendar.mode
-        },
-        // mode=range时,第一个日期底部的提示文字
-        startText: {
-            type: String,
-            default: uni.$u.props.calendar.startText
-        },
-        // mode=range时,最后一个日期底部的提示文字
-        endText: {
-            type: String,
-            default: uni.$u.props.calendar.endText
-        },
-        // 自定义列表
-        customList: {
-            type: Array,
-            default: uni.$u.props.calendar.customList
-        },
-        // 主题色,对底部按钮和选中日期有效
-        color: {
-            type: String,
-            default: uni.$u.props.calendar.color
-        },
-        // 最小的可选日期
-        minDate: {
-            type: [String, Number],
-            default: uni.$u.props.calendar.minDate
-        },
-        // 最大可选日期
-        maxDate: {
-            type: [String, Number],
-            default: uni.$u.props.calendar.maxDate
-        },
-        // 默认选中的日期,mode为multiple或range是必须为数组格式
-        defaultDate: {
-            type: [Array, String, Date, null],
-            default: uni.$u.props.calendar.defaultDate
-        },
-        // mode=multiple时,最多可选多少个日期
-        maxCount: {
-            type: [String, Number],
-            default: uni.$u.props.calendar.maxCount
-        },
-        // 日期行高
-        rowHeight: {
-            type: [String, Number],
-            default: uni.$u.props.calendar.rowHeight
-        },
-        // 日期格式化函数
-        formatter: {
-            type: [Function, null],
-            default: uni.$u.props.calendar.formatter
-        },
-        // 是否显示农历
-        showLunar: {
-            type: Boolean,
-            default: uni.$u.props.calendar.showLunar
-        },
-        // 是否显示月份背景色
-        showMark: {
-            type: Boolean,
-            default: uni.$u.props.calendar.showMark
-        },
-        // 确定按钮的文字
-        confirmText: {
-            type: String,
-            default: uni.$u.props.calendar.confirmText
-        },
-        // 确认按钮处于禁用状态时的文字
-        confirmDisabledText: {
-            type: String,
-            default: uni.$u.props.calendar.confirmDisabledText
-        },
-        // 是否显示日历弹窗
-        show: {
-            type: Boolean,
-            default: uni.$u.props.calendar.show
-        },
-        // 是否允许点击遮罩关闭日历
-        closeOnClickOverlay: {
-            type: Boolean,
-            default: uni.$u.props.calendar.closeOnClickOverlay
-        },
-        // 是否为只读状态,只读状态下禁止选择日期
-        readonly: {
-            type: Boolean,
-            default: uni.$u.props.calendar.readonly
-        },
-        // 	是否展示确认按钮
-        showConfirm: {
-            type: Boolean,
-            default: uni.$u.props.calendar.showConfirm
-        },
-        // 日期区间最多可选天数,默认无限制,mode = range时有效
-        maxRange: {
-            type: [Number, String],
-            default: uni.$u.props.calendar.maxRange
-        },
-        // 范围选择超过最多可选天数时的提示文案,mode = range时有效
-        rangePrompt: {
-            type: String,
-            default: uni.$u.props.calendar.rangePrompt
-        },
-        // 范围选择超过最多可选天数时,是否展示提示文案,mode = range时有效
-        showRangePrompt: {
-            type: Boolean,
-            default: uni.$u.props.calendar.showRangePrompt
-        },
-        // 是否允许日期范围的起止时间为同一天,mode = range时有效
-        allowSameDay: {
-            type: Boolean,
-            default: uni.$u.props.calendar.allowSameDay
-        }
-    }
-}

+ 0 - 288
src/uni_modules/uview-ui/components/u-calendar/u-calendar.vue

xqd
@@ -1,288 +0,0 @@
-<template>
-	<u-popup
-		:show="show"
-		mode="bottom"
-		closeable
-		@close="close"
-		round
-		:closeOnClickOverlay="closeOnClickOverlay"
-	>
-		<view class="u-calendar">
-			<uHeader
-				:title="title"
-				:subtitle="subtitle"
-				:showSubtitle="showSubtitle"
-				:showTitle="showTitle"
-			></uHeader>
-			<scroll-view
-				:style="{
-					height: $u.addUnit(listHeight)
-				}"
-				scroll-y
-				@scroll="onScroll"
-				:scrollIntoView="scrollIntoView"
-			>
-				<uMonth
-					:color="color"
-					:rowHeight="rowHeight"
-					:showMark="showMark"
-					:months="months"
-					:mode="mode"
-					:maxCount="maxCount"
-					:startText="startText"
-					:endText="endText"
-					:defaultDate="defaultDate"
-					:minDate="minDate"
-					:maxDate="maxDate"
-					:maxMonth="maxMonth"
-					:readonly="readonly"
-					:maxRange="maxRange"
-					:rangePrompt="rangePrompt"
-					:showRangePrompt="showRangePrompt"
-					:allowSameDay="allowSameDay"
-					ref="month"
-					@monthSelected="monthSelected"
-					@updateMonthTop="updateMonthTop"
-				></uMonth>
-			</scroll-view>
-			<slot name="footer" v-if="showConfirm">
-				<view class="u-calendar__confirm">
-					<u-button
-						shape="circle"
-						:text="buttonDisabled ? confirmDisabledText : confirmText"
-						:color="color"
-						@click="confirm"
-						:disabled="buttonDisabled"
-					></u-button>
-				</view>
-			</slot>
-		</view>
-	</u-popup>
-</template>
-
-<script>
-	import uHeader from './header.vue';
-	import uMonth from './month.vue';
-	import props from './props.js';
-	import util from './util.js';
-	import dayjs from '../../libs/util/dayjs.js';
-	import Calendar from '../../libs/util/calendar.js';
-	/**
-	 * Calendar 日历
-	 * @description  此组件用于单个选择日期,范围选择日期等,日历被包裹在底部弹起的容器中.
-	 * @tutorial https://www.uviewui.com/components/calendar.html
-	 * 
-	 * @property {String}				title				标题内容 (默认 日期选择 )
-	 * @property {Boolean}				showTitle			是否显示标题  (默认 true )
-	 * @property {Boolean}				showSubtitle		是否显示副标题	(默认 true )
-	 * @property {String}				mode				日期类型选择  single-选择单个日期,multiple-可以选择多个日期,range-选择日期范围 ( 默认 'single' )
-	 * @property {String}				startText			mode=range时,第一个日期底部的提示文字  (默认 '开始' )
-	 * @property {String}				endText				mode=range时,最后一个日期底部的提示文字 (默认 '结束' )
-	 * @property {Array}				customList			自定义列表 
-	 * @property {String}				color				主题色,对底部按钮和选中日期有效  (默认 ‘#3c9cff' )
-	 * @property {String | Number}		minDate				最小的可选日期	 (默认 0 )
-	 * @property {String | Number}		maxDate				最大可选日期  (默认 0 )
-	 * @property {Array | String| Date}	defaultDate			默认选中的日期,mode为multiple或range是必须为数组格式 
-	 * @property {String | Number}		maxCount			mode=multiple时,最多可选多少个日期  (默认 	Number.MAX_SAFE_INTEGER  )
-	 * @property {String | Number}		rowHeight			日期行高 (默认 56 )
-	 * @property {Function}				formatter			日期格式化函数
-	 * @property {Boolean}				showLunar			是否显示农历  (默认 false )
-	 * @property {Boolean}				showMark			是否显示月份背景色 (默认 true )
-	 * @property {String}				confirmText			确定按钮的文字 (默认 '确定' )
-	 * @property {String}				confirmDisabledText	确认按钮处于禁用状态时的文字 (默认 '确定' )
-	 * @property {Boolean}				show				是否显示日历弹窗 (默认 false )
-	 * @property {Boolean}				closeOnClickOverlay	是否允许点击遮罩关闭日历 (默认 false )
-	 * @property {Boolean}				readonly	        是否为只读状态,只读状态下禁止选择日期 (默认 false )
-	 * @property {String | Number}		maxRange	        日期区间最多可选天数,默认无限制,mode = range时有效
-	 * @property {String}				rangePrompt	        范围选择超过最多可选天数时的提示文案,mode = range时有效
-	 * @property {Boolean}				showRangePrompt	    范围选择超过最多可选天数时,是否展示提示文案,mode = range时有效 (默认 true )
-	 * @property {Boolean}				allowSameDay	    是否允许日期范围的起止时间为同一天,mode = range时有效 (默认 false )
-	 * 
-	 * @event {Function()} confirm 		点击确定按钮时触发		选择日期相关的返回参数
-	 * @event {Function()} close 		日历关闭时触发			可定义页面关闭时的回调事件
-	 * @example <u-calendar  :defaultDate="defaultDateMultiple" :show="show" mode="multiple" @confirm="confirm">
-	</u-calendar>
-	 * */ 
-	export default {
-		name: 'u-calendar',
-		mixins: [uni.$u.mpMixin, uni.$u.mixin, props],
-		components: {
-			uHeader,
-			uMonth
-		},
-		data() {
-			return {
-				// 需要显示的月份的数组
-				months: [],
-				// 在月份滚动区域中,当前视图中月份的index索引
-				monthIndex: 0,
-				// 月份滚动区域的高度
-				listHeight: 0,
-				// month组件中选择的日期数组
-				selected: [],
-				// 如果没有设置最大可选日期,默认为往后推3个月
-				maxMonth: 3,
-				scrollIntoView: '',
-				// 过滤处理方法
-				innerFormatter: value => value
-			}
-		},
-		watch: {
-			selectedChange: {
-				immediate: true,
-				handler(n) {
-					this.setMonth()
-				}
-			},
-			// 打开弹窗时,设置月份数据
-			show: {
-				immediate: true,
-				handler(n) {
-					this.setMonth()
-				}
-			},
-		},
-		computed: {
-			// 多个条件的变化,会引起选中日期的变化,这里统一管理监听
-			selectedChange() {
-				return [this.minDate, this.maxDate, this.defaultDate]
-			},
-			subtitle() {
-				// 初始化时,this.months为空数组,所以需要特别判断处理
-				if (this.months.length) {
-					return `${this.months[this.monthIndex].year}年${this.months[this.monthIndex].month}月`
-				} else {
-					return ''
-				}
-			},
-			buttonDisabled() {
-				// 如果为range类型,且选择的日期个数不足1个时,让底部的按钮出于disabled状态
-				if (this.mode === 'range') {
-					if (this.selected.length <= 1) {
-						return true
-					} else {
-						return false
-					}
-				} else {
-					return false
-				}
-			}
-		},
-		mounted() {
-			this.start = Date.now()
-			this.init()
-		},
-		methods: {
-			// 在微信小程序中,不支持将函数当做props参数,故只能通过ref形式调用
-			setFormatter(e) {
-				this.innerFormatter = e
-			},
-			// month组件内部选择日期后,通过事件通知给父组件
-			monthSelected(e) {
-				this.selected = e
-				if(!this.showConfirm) {
-					// 在不需要确认按钮的情况下,如果为单选,或者范围多选且已选长度大于2,则直接进行返还
-					if (this.mode === 'multiple' || this.mode === 'single' || this.mode === 'range' && this.selected.length >= 2) {
-						this.$emit('confirm', this.selected)
-					}
-				}
-			},
-			init() {
-				// 滚动区域的高度
-				this.listHeight = this.rowHeight * 5 + 30
-				this.setMonth()
-			},
-			close() {
-				this.$emit('close')
-			},
-			// 点击确定按钮
-			confirm() {
-				if (!this.buttonDisabled) {
-					this.$emit('confirm', this.selected)
-				}
-			},
-			// 设置月份数据
-			setMonth() {
-				// 最小日期的毫秒数
-				const minDate = this.minDate || dayjs().valueOf()
-				// 如果没有指定最大日期,则往后推3个月
-				const maxDate = this.maxDate || dayjs(minDate).add(this.maxMonth - 1, 'month').valueOf()
-				// 最小与最大月份
-				let minMonth = dayjs(minDate).month() + 1
-				let maxMonth = dayjs(maxDate).month() + 1
-				// 如果maxMonth小于minMonth,则意味着maxMonth为下一年的月份,需要加上12,为的是计算出两个月份之间间隔着多少月份
-				maxMonth = minMonth > maxMonth ? maxMonth + 12 : maxMonth
-				// 最大最小月份之间的共有多少个月份
-				const months = Math.abs(minMonth - maxMonth)
-				// 先清空数组
-				this.months = []
-				for (let i = 0; i <= months; i++) {
-					this.months.push({
-						date: new Array(dayjs(minDate).add(i, 'month').daysInMonth()).fill(1).map((item,
-							index) => {
-							// 日期,取值1-31
-							let day = index + 1
-							// 星期,0-6,0为周日
-							const week = dayjs(minDate).add(i, "month").date(day).day()
-							const date = dayjs(minDate).add(i, "month").date(day).format("YYYY-MM-DD")
-							let bottomInfo = ''
-							if (this.showLunar) {
-								// 将日期转为农历格式
-								const lunar = Calendar.solar2lunar(dayjs(date).year(), dayjs(date)
-									.month() + 1, dayjs(date).date())
-								bottomInfo = lunar.IDayCn
-							}
-							let config = {
-								day,
-								week,
-								// 小于最小允许的日期,或者大于最大的日期,则设置为disabled状态
-								disabled: dayjs(date).isBefore(dayjs(minDate).format("YYYY-MM-DD")) ||
-									dayjs(date).isAfter(dayjs(maxDate).format("YYYY-MM-DD")),
-								// 返回一个日期对象,供外部的formatter获取当前日期的年月日等信息,进行加工处理
-								date: new Date(date),
-								bottomInfo,
-								dot: false,
-								month: dayjs(minDate).add(i, "month").month() + 1
-							}
-							const formatter = this.formatter || this.innerFormatter
-							return formatter(config)
-						}),
-						// 当前所属的月份
-						month: dayjs(minDate).add(i, "month").month() + 1,
-						// 当前年份
-						year: dayjs(minDate).add(i, "month").year()
-					});
-				}
-			},
-			// scroll-view滚动监听
-			onScroll(event) {
-				// 不允许小于0的滚动值,如果scroll-view到顶了,继续下拉,会出现负数值
-				const scrollTop = Math.max(0, event.detail.scrollTop)
-				// 将当前滚动条数值,除以滚动区域的高度,可以得出当前滚动到了哪一个月份的索引
-				for (let i = 0; i < this.months.length; i++) {
-					if (scrollTop >= (this.months[i].top || this.listHeight)) {
-						this.monthIndex = i
-					}
-				}
-			},
-			// 更新月份的top值
-			updateMonthTop(topArr = []) {
-				// 设置对应月份的top值,用于onScroll方法更新月份
-				topArr.map((item, index) => {
-					this.months[index].top = item
-				}) 
-			}
-		},
-	}
-</script>
-
-<style lang="scss">
-	@import "../../libs/css/components.scss";
-
-	.u-calendar {
-
-		&__confirm {
-			padding: 7px 18px;
-		}
-	}
-</style>

+ 0 - 85
src/uni_modules/uview-ui/components/u-calendar/util.js

xqd
@@ -1,85 +0,0 @@
-export default {
-    methods: {
-        // 设置月份数据
-        setMonth() {
-            // 月初是周几
-            const day = dayjs(this.date).date(1).day()
-            const start = day == 0 ? 6 : day - 1
-
-            // 本月天数
-            const days = dayjs(this.date).endOf('month').format('D')
-
-            // 上个月天数
-            const prevDays = dayjs(this.date).endOf('month').subtract(1, 'month').format('D')
-
-            // 日期数据
-            const arr = []
-            // 清空表格
-            this.month = []
-
-            // 添加上月数据
-            arr.push(
-                ...new Array(start).fill(1).map((e, i) => {
-                    const day = prevDays - start + i + 1
-
-                    return {
-                        value: day,
-                        disabled: true,
-                        date: dayjs(this.date).subtract(1, 'month').date(day).format('YYYY-MM-DD')
-                    }
-                })
-            )
-
-            // 添加本月数据
-            arr.push(
-                ...new Array(days - 0).fill(1).map((e, i) => {
-                    const day = i + 1
-
-                    return {
-                        value: day,
-                        date: dayjs(this.date).date(day).format('YYYY-MM-DD')
-                    }
-                })
-            )
-
-            // 添加下个月
-            arr.push(
-                ...new Array(42 - days - start).fill(1).map((e, i) => {
-                    const day = i + 1
-
-                    return {
-                        value: day,
-                        disabled: true,
-                        date: dayjs(this.date).add(1, 'month').date(day).format('YYYY-MM-DD')
-                    }
-                })
-            )
-
-            // 分割数组
-            for (let n = 0; n < arr.length; n += 7) {
-                this.month.push(
-                    arr.slice(n, n + 7).map((e, i) => {
-                        e.index = i + n
-
-                        // 自定义信息
-                        const custom = this.customList.find((c) => c.date == e.date)
-
-                        // 农历
-                        if (this.lunar) {
-                            const {
-                                IDayCn,
-                                IMonthCn
-                            } = this.getLunar(e.date)
-                            e.lunar = IDayCn == '初一' ? IMonthCn : IDayCn
-                        }
-
-                        return {
-                            ...e,
-                            ...custom
-                        }
-                    })
-                )
-            }
-        }
-    }
-}

+ 0 - 14
src/uni_modules/uview-ui/components/u-car-keyboard/props.js

xqd
@@ -1,14 +0,0 @@
-export default {
-    props: {
-        // 是否打乱键盘按键的顺序
-        random: {
-            type: Boolean,
-            default: false
-        },
-        // 输入一个中文后,是否自动切换到英文
-        autoChange: {
-            type: Boolean,
-            default: false
-        }
-    }
-}

+ 0 - 311
src/uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue

xqd
@@ -1,311 +0,0 @@
-<template>
-	<view
-		class="u-keyboard"
-		@touchmove.stop.prevent="noop"
-	>
-		<view
-			v-for="(group, i) in abc ? engKeyBoardList : areaList"
-			:key="i"
-			class="u-keyboard__button"
-			:index="i"
-			:class="[i + 1 === 4 && 'u-keyboard__button--center']"
-		>
-			<view
-				v-if="i === 3"
-				class="u-keyboard__button__inner-wrapper"
-			>
-				<view
-					class="u-keyboard__button__inner-wrapper__left"
-					hover-class="u-hover-class"
-					:hover-stay-time="200"
-					@tap="changeCarInputMode"
-				>
-					<text
-						class="u-keyboard__button__inner-wrapper__left__lang"
-						:class="[!abc && 'u-keyboard__button__inner-wrapper__left__lang--active']"
-					>中</text>
-					<text class="u-keyboard__button__inner-wrapper__left__line">/</text>
-					<text
-						class="u-keyboard__button__inner-wrapper__left__lang"
-						:class="[abc && 'u-keyboard__button__inner-wrapper__left__lang--active']"
-					>英</text>
-				</view>
-			</view>
-			<view
-				class="u-keyboard__button__inner-wrapper"
-				v-for="(item, j) in group"
-				:key="j"
-			>
-				<view
-					class="u-keyboard__button__inner-wrapper__inner"
-					:hover-stay-time="200"
-					@tap="carInputClick(i, j)"
-					hover-class="u-hover-class"
-				>
-					<text class="u-keyboard__button__inner-wrapper__inner__text">{{ item }}</text>
-				</view>
-			</view>
-			<view
-				v-if="i === 3"
-				@touchstart="backspaceClick"
-				@touchend="clearTimer"
-				class="u-keyboard__button__inner-wrapper"
-			>
-				<view
-					class="u-keyboard__button__inner-wrapper__right"
-					hover-class="u-hover-class"
-					:hover-stay-time="200"
-				>
-					<u-icon
-						size="28"
-						name="backspace"
-						color="#303133"
-					></u-icon>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	import props from './props.js';
-	/**
-	 * keyboard 键盘组件
-	 * @description 此为uView自定义的键盘面板,内含了数字键盘,车牌号键,身份证号键盘3种模式,都有可以打乱按键顺序的选项。
-	 * @tutorial https://uviewui.com/components/keyboard.html
-	 * @property {Boolean} random 是否打乱键盘的顺序
-	 * @event {Function} change 点击键盘触发
-	 * @event {Function} backspace 点击退格键触发
-	 * @example <u-keyboard ref="uKeyboard" mode="car" v-model="show"></u-keyboard>
-	 */
-	export default {
-		name: "u-keyboard",
-		mixins: [uni.$u.mpMixin, uni.$u.mixin, props],
-		data() {
-			return {
-				// 车牌输入时,abc=true为输入车牌号码,bac=false为输入省份中文简称
-				abc: false
-			};
-		},
-		computed: {
-			areaList() {
-				let data = [
-					'京',
-					'沪',
-					'粤',
-					'津',
-					'冀',
-					'豫',
-					'云',
-					'辽',
-					'黑',
-					'湘',
-					'皖',
-					'鲁',
-					'苏',
-					'浙',
-					'赣',
-					'鄂',
-					'桂',
-					'甘',
-					'晋',
-					'陕',
-					'蒙',
-					'吉',
-					'闽',
-					'贵',
-					'渝',
-					'川',
-					'青',
-					'琼',
-					'宁',
-					'挂',
-					'藏',
-					'港',
-					'澳',
-					'新',
-					'使',
-					'学'
-				];
-				let tmp = [];
-				// 打乱顺序
-				if (this.random) data = this.$u.randomArray(data);
-				// 切割成二维数组
-				tmp[0] = data.slice(0, 10);
-				tmp[1] = data.slice(10, 20);
-				tmp[2] = data.slice(20, 30);
-				tmp[3] = data.slice(30, 36);
-				return tmp;
-			},
-			engKeyBoardList() {
-				let data = [
-					1,
-					2,
-					3,
-					4,
-					5,
-					6,
-					7,
-					8,
-					9,
-					0,
-					'Q',
-					'W',
-					'E',
-					'R',
-					'T',
-					'Y',
-					'U',
-					'I',
-					'O',
-					'P',
-					'A',
-					'S',
-					'D',
-					'F',
-					'G',
-					'H',
-					'J',
-					'K',
-					'L',
-					'Z',
-					'X',
-					'C',
-					'V',
-					'B',
-					'N',
-					'M'
-				];
-				let tmp = [];
-				if (this.random) data = this.$u.randomArray(data);
-				tmp[0] = data.slice(0, 10);
-				tmp[1] = data.slice(10, 20);
-				tmp[2] = data.slice(20, 30);
-				tmp[3] = data.slice(30, 36);
-				return tmp;
-			}
-		},
-		methods: {
-			// 点击键盘按钮
-			carInputClick(i, j) {
-				let value = '';
-				// 不同模式,获取不同数组的值
-				if (this.abc) value = this.engKeyBoardList[i][j];
-				else value = this.areaList[i][j];
-				// 如果允许自动切换,则将中文状态切换为英文
-				if (!this.abc && this.autoChange) uni.$u.sleep(200).then(() => this.abc = true)
-				this.$emit('change', value);
-			},
-			// 修改汽车牌键盘的输入模式,中文|英文
-			changeCarInputMode() {
-				this.abc = !this.abc;
-			},
-			// 点击退格键
-			backspaceClick() {
-				this.$emit('backspace');
-				clearInterval(this.timer); //再次清空定时器,防止重复注册定时器
-				this.timer = null;
-				this.timer = setInterval(() => {
-					this.$emit('backspace');
-				}, 250);
-			},
-			clearTimer() {
-				clearInterval(this.timer);
-				this.timer = null;
-			},
-		}
-	};
-</script>
-
-<style lang="scss">
-	@import "../../libs/css/components.scss";
-	$u-car-keyboard-background-color: rgb(224, 228, 230) !default;
-	$u-car-keyboard-padding:6px 0 6px !default;
-	$u-car-keyboard-button-inner-width:64rpx !default;
-	$u-car-keyboard-button-inner-background-color:#FFFFFF !default;
-	$u-car-keyboard-button-height:80rpx !default;
-	$u-car-keyboard-button-inner-box-shadow:0 1px 0px #999992 !default;
-	$u-car-keyboard-button-border-radius:4px !default;
-	$u-car-keyboard-button-inner-margin:8rpx 5rpx !default;
-	$u-car-keyboard-button-text-font-size:16px !default;
-	$u-car-keyboard-button-text-color:$u-main-color !default;
-	$u-car-keyboard-center-inner-margin: 0 4rpx !default;
-	$u-car-keyboard-special-button-width:134rpx !default;
-	$u-car-keyboard-lang-font-size:16px !default;
-	$u-car-keyboard-lang-color:$u-main-color !default;
-	$u-car-keyboard-active-color:$u-primary !default;
-	$u-car-keyboard-line-font-size:15px !default;
-	$u-car-keyboard-line-color:$u-main-color !default;
-	$u-car-keyboard-line-margin:0 1px !default;
-	$u-car-keyboard-u-hover-class-background-color:#BBBCC6 !default;
-
-	.u-keyboard {
-		@include flex(column);
-		justify-content: space-around;
-		background-color: $u-car-keyboard-background-color;
-		align-items: stretch;
-		padding: $u-car-keyboard-padding;
-
-		&__button {
-			@include flex;
-			justify-content: center;
-			flex: 1;
-			/* #ifndef APP-NVUE */
-			/* #endif */
-
-			&__inner-wrapper {
-				box-shadow: $u-car-keyboard-button-inner-box-shadow;
-				margin: $u-car-keyboard-button-inner-margin;
-				border-radius: $u-car-keyboard-button-border-radius;
-
-				&__inner {
-					@include flex;
-					justify-content: center;
-					align-items: center;
-					width: $u-car-keyboard-button-inner-width;
-					background-color: $u-car-keyboard-button-inner-background-color;
-					height: $u-car-keyboard-button-height;
-					border-radius: $u-car-keyboard-button-border-radius;
-
-					&__text {
-						font-size: $u-car-keyboard-button-text-font-size;
-						color: $u-car-keyboard-button-text-color;
-					}
-				}
-
-				&__left,
-				&__right {
-					border-radius: $u-car-keyboard-button-border-radius;
-					width: $u-car-keyboard-special-button-width;
-					height: $u-car-keyboard-button-height;
-					background-color: $u-car-keyboard-u-hover-class-background-color;
-					@include flex;
-					justify-content: center;
-					align-items: center;
-					box-shadow: $u-car-keyboard-button-inner-box-shadow;
-				}
-
-				&__left {
-					&__line {
-						font-size: $u-car-keyboard-line-font-size;
-						color: $u-car-keyboard-line-color;
-						margin: $u-car-keyboard-line-margin;
-					}
-
-					&__lang {
-						font-size: $u-car-keyboard-lang-font-size;
-						color: $u-car-keyboard-lang-color;
-
-						&--active {
-							color: $u-car-keyboard-active-color;
-						}
-					}
-				}
-			}
-		}
-	}
-
-	.u-hover-class {
-		background-color: $u-car-keyboard-u-hover-class-background-color;
-	}
-</style>

+ 0 - 14
src/uni_modules/uview-ui/components/u-cell-group/props.js

xqd
@@ -1,14 +0,0 @@
-export default {
-    props: {
-        // 分组标题
-        title: {
-            type: String,
-            default: uni.$u.props.cellGroup.title
-        },
-        // 是否显示外边框
-        border: {
-            type: Boolean,
-            default: uni.$u.props.cellGroup.border
-        }
-    }
-}

+ 0 - 61
src/uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue

xqd
@@ -1,61 +0,0 @@
-<template>
-    <view :style="[$u.addStyle(customStyle)]" :class="[customClass]" class="u-cell-group">
-        <view v-if="title" class="u-cell-group__title">
-            <slot name="title">
-				<text class="u-cell-group__title__text">{{ title }}</text>
-			</slot>
-        </view>
-        <view class="u-cell-group__wrapper">
-			<u-line v-if="border"></u-line>
-            <slot />
-        </view>
-    </view>
-</template>
-
-<script>
-	import props from './props.js';
-	/**
-	 * cellGroup  单元格
-	 * @description cell单元格一般用于一组列表的情况,比如个人中心页,设置页等。
-	 * @tutorial https://uviewui.com/components/cell.html
-	 * 
-	 * @property {String}	title		分组标题
-	 * @property {Boolean}	border		是否显示外边框 (默认 true )
-	 * @property {Object}	customStyle	定义需要用到的外部样式
-	 * 
-	 * @event {Function} click 	点击cell列表时触发
-	 * @example <u-cell-group title="设置喜好">
-	 */
-	export default {
-		name: 'u-cell-group',
-		mixins: [uni.$u.mpMixin, uni.$u.mixin,props],
-	}
-</script>
-
-<style lang="scss">
-	@import "../../libs/css/components.scss";
-	
-	$u-cell-group-title-padding: 16px 16px 8px !default;
-	$u-cell-group-title-font-size: 15px !default;
-	$u-cell-group-title-line-height: 16px !default;
-	$u-cell-group-title-color: $u-main-color !default;
-
-    .u-cell-group {
-		flex: 1;
-		
-        &__title {
-            padding: $u-cell-group-title-padding;
-
-            &__text {
-                font-size: $u-cell-group-title-font-size;
-                line-height: $u-cell-group-title-line-height;
-                color: $u-cell-group-title-color;
-            }
-        }
-		
-		&__wrapper {
-			position: relative;
-		}
-    }
-</style>
-

+ 0 - 109
src/uni_modules/uview-ui/components/u-cell/props.js

xqd
@@ -1,109 +0,0 @@
-export default {
-    props: {
-        // 标题
-        title: {
-            type: [String, Number],
-            default: uni.$u.props.cell.title
-        },
-        // 标题下方的描述信息
-        label: {
-            type: [String, Number],
-            default: uni.$u.props.cell.label
-        },
-        // 右侧的内容
-        value: {
-            type: [String, Number],
-            default: uni.$u.props.cell.value
-        },
-        // 左侧图标名称,或者图片链接(本地文件建议使用绝对地址)
-        icon: {
-            type: String,
-            default: uni.$u.props.cell.icon
-        },
-        // 标题的宽度,单位任意,数值默认为px单位
-        titleWidth: {
-            type: [String, Number],
-            default: uni.$u.props.cell.titleWidth
-        },
-        // 是否禁用cell
-        disabled: {
-            type: Boolean,
-            default: uni.$u.props.cell.disabled
-        },
-        // 是否显示下边框
-        border: {
-            type: Boolean,
-            default: uni.$u.props.cell.border
-        },
-        // 内容是否垂直居中(主要是针对右侧的value部分)
-        center: {
-            type: Boolean,
-            default: uni.$u.props.cell.center
-        },
-        // 点击后跳转的URL地址
-        url: {
-            type: String,
-            default: uni.$u.props.cell.url
-        },
-        // 链接跳转的方式,内部使用的是uView封装的route方法,可能会进行拦截操作
-        linkType: {
-            type: String,
-            default: uni.$u.props.cell.linkType
-        },
-        // 是否开启点击反馈(表现为点击时加上灰色背景)
-        clickable: {
-            type: Boolean,
-            default: uni.$u.props.cell.clickable
-        },
-        // 是否展示右侧箭头并开启点击反馈
-        isLink: {
-            type: Boolean,
-            default: uni.$u.props.cell.isLink
-        },
-        // 是否显示表单状态下的必填星号(此组件可能会内嵌入input组件)
-        required: {
-            type: Boolean,
-            default: uni.$u.props.cell.required
-        },
-        // 右侧的图标箭头
-        rightIcon: {
-            type: String,
-            default: uni.$u.props.cell.rightIcon
-        },
-        // 右侧箭头的方向,可选值为:left,up,down
-        arrowDirection: {
-            type: String,
-            default: uni.$u.props.cell.arrowDirection
-        },
-        // 左侧图标样式
-        iconStyle: {
-            type: Object,
-            default: () => {}
-        },
-        // 右侧箭头图标的样式
-        rightIconStyle: {
-            type: Object,
-            default: () => uni.$u.props.cell.rightIconStyle
-        },
-        // 标题的样式
-        titleStyle: {
-            type: Object,
-            default: () => uni.$u.props.cell.titleStyle
-        },
-        // 单位元的大小,可选值为large
-        size: {
-            type: String,
-            default: uni.$u.props.cell.size
-        },
-        // 点击cell是否阻止事件传播
-        stop: {
-            type: Boolean,
-            default: uni.$u.props.cell.stop
-        },
-        // 标识符,cell被点击时返回
-        name: {
-            type: [Number, String],
-            default: uni.$u.props.cell.name
-        }
-    }
-}

+ 0 - 224
src/uni_modules/uview-ui/components/u-cell/u-cell.vue

xqd
@@ -1,224 +0,0 @@
-<template>
-	<view class="u-cell" :class="[customClass]" :style="[$u.addStyle(customStyle)]"
-		:hover-class="(!disabled && (clickable || isLink)) ? 'u-cell--clickable' : ''" :hover-stay-time="250"
-		@tap="clickHandler">
-		<view class="u-cell__body" :class="[ center && 'u-cell--center', size === 'large' && 'u-cell__body--large']">
-			<view class="u-cell__body__content">
-				<view class="u-cell__left-icon-wrap" v-if="$slots.icon || icon">
-					<slot name="icon" v-if="$slots.icon">
-					</slot>
-					<u-icon v-else :name="icon" :custom-style="iconStyle" :size="size === 'large' ? 22 : 18"></u-icon>
-				</view>
-				<view class="u-cell__title">
-					<slot name="title">
-						<text v-if="title" class="u-cell__title-text"
-							:class="[disabled && 'u-cell--disabled', size === 'large' && 'u-cell__title-text--large']">{{ title }}</text>
-					</slot>
-					<slot name="label">
-						<text class="u-cell__label" v-if="label"
-							:class="[disabled && 'u-cell--disabled', size === 'large' && 'u-cell__label--large']">{{ label }}</text>
-					</slot>
-				</view>
-			</view>
-			<slot name="value">
-				<text class="u-cell__value"
-					:class="[disabled && 'u-cell--disabled', size === 'large' && 'u-cell__value--large']"
-					v-if="!$u.test.empty(value)">{{ value }}</text>
-			</slot>
-			<view class="u-cell__right-icon-wrap" v-if="$slots['right-icon'] || isLink"
-				:class="[`u-cell__right-icon-wrap--${arrowDirection}`]">
-				<slot name="right-icon" v-if="$slots['right-icon']">
-				</slot>
-				<u-icon v-else :name="rightIcon" :custom-style="rightIconStyle" :color="disabled ? '#c8c9cc' : 'info'"
-					:size="size === 'large' ? 18 : 16"></u-icon>
-			</view>
-		</view>
-		<u-line v-if="border"></u-line>
-	</view>
-</template>
-
-<script>
-	import props from './props.js';
-	/**
-	 * cell  单元格
-	 * @description cell单元格一般用于一组列表的情况,比如个人中心页,设置页等。
-	 * @tutorial https://uviewui.com/components/cell.html
-	 * @property {String | Number}	title			标题
-	 * @property {String | Number}	label			标题下方的描述信息
-	 * @property {String | Number}	value			右侧的内容
-	 * @property {String}			icon			左侧图标名称,或者图片链接(本地文件建议使用绝对地址)
-	 * @property {String | Number}	titleWidth		标题的宽度,单位任意,数值默认为px单位
-	 * @property {Boolean}			disabled		是否禁用cell	
-	 * @property {Boolean}			border			是否显示下边框 (默认 true )
-	 * @property {Boolean}			center			内容是否垂直居中(主要是针对右侧的value部分) (默认 false )
-	 * @property {String}			url				点击后跳转的URL地址
-	 * @property {String}			linkType		链接跳转的方式,内部使用的是uView封装的route方法,可能会进行拦截操作 (默认 'navigateTo' )
-	 * @property {Boolean}			clickable		是否开启点击反馈(表现为点击时加上灰色背景) (默认 false ) 
-	 * @property {Boolean}			isLink			是否展示右侧箭头并开启点击反馈 (默认 false )
-	 * @property {Boolean}			required		是否显示表单状态下的必填星号(此组件可能会内嵌入input组件) (默认 false )
-	 * @property {String}			rightIcon		右侧的图标箭头 (默认 'arrow-right')
-	 * @property {String}			arrowDirection	右侧箭头的方向,可选值为:left,up,down
-	 * @property {Object}			rightIconStyle	右侧箭头图标的样式
-	 * @property {Object}			titleStyle		标题的样式
-	 * @property {String}			size			单位元的大小,可选值为 large,normal,mini 
-	 * @property {Boolean}			stop			点击cell是否阻止事件传播 (默认 true )
-	 * @property {Object}			customStyle		定义需要用到的外部样式
-	 * 
-	 * @event {Function}			click			点击cell列表时触发
-	 * @example 该组件需要搭配cell-group组件使用,见官方文档示例
-	 */
-	export default {
-		name: 'u-cell',
-		data() {
-			return {
-
-			}
-		},
-		mixins: [uni.$u.mpMixin, uni.$u.mixin, props],
-		methods: {
-			// 点击cell
-			clickHandler(e) {
-				if (this.disabled) return
-				this.$emit('click', {
-					name: this.name
-				})
-				// 如果配置了url(此props参数通过mixin引入)参数,跳转页面
-				this.openPage()
-				// 是否阻止事件传播
-				this.stop && this.preventEvent(e)
-			},
-		}
-	}
-</script>
-
-<style lang="scss">
-	@import "../../libs/css/components.scss";
-
-	$u-cell-padding: 10px 15px !default;
-	$u-cell-font-size: 15px !default;
-	$u-cell-line-height: 24px !default;
-	$u-cell-color: $u-main-color !default;
-	$u-cell-icon-size: 16px !default;
-	$u-cell-title-font-size: 15px !default;
-	$u-cell-title-line-height: 22px !default;
-	$u-cell-title-color: $u-main-color !default;
-	$u-cell-label-font-size: 12px !default;
-	$u-cell-label-color: $u-tips-color !default;
-	$u-cell-label-line-height: 18px !default;
-	$u-cell-value-font-size: 14px !default;
-	$u-cell-value-color: $u-content-color !default;
-	$u-cell-clickable-color: $u-bg-color !default;
-	$u-cell-disabled-color: #c8c9cc !default;
-	$u-cell-padding-top-large: 13px !default;
-	$u-cell-padding-bottom-large: 13px !default;
-	$u-cell-value-font-size-large: 15px !default;
-	$u-cell-label-font-size-large: 14px !default;
-	$u-cell-title-font-size-large: 16px !default;
-	$u-cell-left-icon-wrap-margin-right: 4px !default;
-	$u-cell-right-icon-wrap-margin-left: 4px !default;
-	$u-cell-title-flex:1 !default;
-	$u-cell-label-margin-top:5px !default;
-
-
-	.u-cell {
-		&__body {
-			@include flex();
-			/* #ifndef APP-NVUE */
-			box-sizing: border-box;
-			/* #endif */
-			padding: $u-cell-padding;
-			font-size: $u-cell-font-size;
-			color: $u-cell-color;
-			// line-height: $u-cell-line-height;
-			align-items: center;
-
-			&__content {
-				@include flex(row);
-				align-items: center;
-				flex: 1;
-			}
-
-			&--large {
-				padding-top: $u-cell-padding-top-large;
-				padding-bottom: $u-cell-padding-bottom-large;
-			}
-		}
-
-		&__left-icon-wrap,
-		&__right-icon-wrap {
-			@include flex();
-			align-items: center;
-			// height: $u-cell-line-height;
-			font-size: $u-cell-icon-size;
-		}
-
-		&__left-icon-wrap {
-			margin-right: $u-cell-left-icon-wrap-margin-right;
-		}
-
-		&__right-icon-wrap {
-			margin-left: $u-cell-right-icon-wrap-margin-left;
-			transition: transform 0.3s;
-
-			&--up {
-				transform: rotate(-90deg);
-			}
-
-			&--down {
-				transform: rotate(90deg);
-			}
-		}
-
-		&__title {
-			flex: $u-cell-title-flex;
-
-			&-text {
-				font-size: $u-cell-title-font-size;
-				line-height: $u-cell-title-line-height;
-				color: $u-cell-title-color;
-
-				&--large {
-					font-size: $u-cell-title-font-size-large;
-				}
-			}
-
-		}
-
-		&__label {
-			margin-top: $u-cell-label-margin-top;
-			font-size: $u-cell-label-font-size;
-			color: $u-cell-label-color;
-			line-height: $u-cell-label-line-height;
-
-			&--large {
-				font-size: $u-cell-label-font-size-large;
-			}
-		}
-
-		&__value {
-			text-align: right;
-			font-size: $u-cell-value-font-size;
-			line-height: $u-cell-line-height;
-			color: $u-cell-value-color;
-
-			&--large {
-				font-size: $u-cell-value-font-size-large;
-			}
-		}
-
-		&--clickable {
-			background-color: $u-cell-clickable-color;
-		}
-
-		&--disabled {
-			color: $u-cell-disabled-color;
-			/* #ifndef APP-NVUE */
-			cursor: not-allowed;
-			/* #endif */
-		}
-
-		&--center {
-			align-items: center;
-		}
-	}
-</style>

+ 0 - 82
src/uni_modules/uview-ui/components/u-checkbox-group/props.js

xqd
@@ -1,82 +0,0 @@
-export default {
-    props: {
-        // 标识符
-        name: {
-            type: String,
-            default: uni.$u.props.checkboxGroup.name
-        },
-        // 绑定的值
-        value: {
-            type: Array,
-            default: uni.$u.props.checkboxGroup.value
-        },
-        // 形状,circle-圆形,square-方形
-        shape: {
-            type: String,
-            default: uni.$u.props.checkboxGroup.shape
-        },
-        // 是否禁用全部checkbox
-        disabled: {
-            type: Boolean,
-            default: uni.$u.props.checkboxGroup.disabled
-        },
-
-        // 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值
-        activeColor: {
-            type: String,
-            default: uni.$u.props.checkboxGroup.activeColor
-        },
-        // 未选中的颜色
-        inactiveColor: {
-            type: String,
-            default: uni.$u.props.checkboxGroup.inactiveColor
-        },
-
-        // 整个组件的尺寸,默认px
-        size: {
-            type: [String, Number],
-            default: uni.$u.props.checkboxGroup.size
-        },
-        // 布局方式,row-横向,column-纵向
-        placement: {
-            type: String,
-            default: uni.$u.props.checkboxGroup.placement
-        },
-        // label的字体大小,px单位
-        labelSize: {
-            type: [String, Number],
-            default: uni.$u.props.checkboxGroup.labelSize
-        },
-        // label的字体颜色
-        labelColor: {
-            type: [String],
-            default: uni.$u.props.checkboxGroup.labelColor
-        },
-        // 是否禁止点击文本操作
-        labelDisabled: {
-            type: Boolean,
-            default: uni.$u.props.checkboxGroup.labelDisabled
-        },
-        // 图标颜色
-        iconColor: {
-            type: String,
-            default: uni.$u.props.checkboxGroup.iconColor
-        },
-        // 图标的大小,单位px
-        iconSize: {
-            type: [String, Number],
-            default: uni.$u.props.checkboxGroup.iconSize
-        },
-        // 勾选图标的对齐方式,left-左边,right-右边
-        iconPlacement: {
-            type: String,
-            default: uni.$u.props.checkboxGroup.iconPlacement
-        },
-        // 竖向配列时,是否显示下划线
-        borderBottom: {
-            type: Boolean,
-            default: uni.$u.props.checkboxGroup.borderBottom
-        }
-
-    }
-}

+ 0 - 103
src/uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue

xqd
@@ -1,103 +0,0 @@
-<template>
-	<view
-	    class="u-checkbox-group"
-	    :class="bemClass"
-	>
-		<slot></slot>
-	</view>
-</template>
-
-<script>
-	import props from './props.js';
-	/**
-	 * checkboxGroup 复选框组
-	 * @description 复选框组件一般用于需要多个选择的场景,该组件功能完整,使用方便
-	 * @tutorial https://www.uviewui.com/components/checkbox.html
-	 * @property {String}			name			标识符 
-	 * @property {Array}			value			绑定的值
-	 * @property {String}			shape			形状,circle-圆形,square-方形 (默认 'square' )
-	 * @property {Boolean}			disabled		是否禁用全部checkbox (默认 false )
-	 * @property {String}			activeColor		选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值 (默认 '#2979ff' )
-	 * @property {String}			inactiveColor	未选中的颜色 (默认 '#c8c9cc' )
-	 * @property {String | Number}	size			整个组件的尺寸 单位px (默认 18 )
-	 * @property {String}			placement		布局方式,row-横向,column-纵向 (默认 'row' )
-	 * @property {String | Number}	labelSize		label的字体大小,px单位  (默认 14 )
-	 * @property {String}			labelColor		label的字体颜色 (默认 '#303133' )
-	 * @property {Boolean}			labelDisabled	是否禁止点击文本操作 (默认 false )
-	 * @property {String}			iconColor		图标颜色 (默认 '#ffffff' )
-	 * @property {String | Number}	iconSize		图标的大小,单位px (默认 12 )
-	 * @property {String}			iconPlacement	勾选图标的对齐方式,left-左边,right-右边  (默认 'left' )
-	 * @property {Boolean}			borderBottom	placement为row时,是否显示下边框 (默认 false )
-	 * @event {Function}	change	任一个checkbox状态发生变化时触发,回调为一个对象
-	 * @event {Function}	input	修改通过v-model绑定的值时触发,回调为一个对象
-	 * @example <u-checkbox-group></u-checkbox-group>
-	 */
-	export default {
-		name: 'u-checkbox-group',
-		mixins: [uni.$u.mpMixin, uni.$u.mixin,props],
-		computed: {
-			// 这里computed的变量,都是子组件u-checkbox需要用到的,由于头条小程序的兼容性差异,子组件无法实时监听父组件参数的变化
-			// 所以需要手动通知子组件,这里返回一个parentData变量,供watch监听,在其中去通知每一个子组件重新从父组件(u-checkbox-group)
-			// 拉取父组件新的变化后的参数
-			parentData() {
-				return [this.value, this.disabled, this.inactiveColor, this.activeColor, this.size, this.labelDisabled, this.shape,
-					this.iconSize, this.borderBottom, this.placement
-				]
-			},
-			bemClass() {
-				// this.bem为一个computed变量,在mixin中
-				return this.bem('checkbox-group', ['placement'])
-			},
-		},
-		watch: {
-			// 当父组件需要子组件需要共享的参数发生了变化,手动通知子组件
-			parentData() {
-				if (this.children.length) {
-					this.children.map(child => {
-						// 判断子组件(u-checkbox)如果有updateParentData方法的话,就就执行(执行的结果是子组件重新从父组件拉取了最新的值)
-						typeof(child.updateParentData) === 'function' && child.updateParentData()
-					})
-				}
-			},
-		},
-		data() {
-			return {
-
-			}
-		},
-		created() {
-			this.children = []
-		},
-		methods: {
-			// 将其他的checkbox设置为未选中的状态
-			unCheckedOther(childInstance) {
-				const values = []
-				this.children.map(child => {
-					// 将被选中的checkbox,放到数组中返回
-					if (child.isChecked) {
-						values.push(child.name)
-					}
-				})
-				// 发出事件
-				this.$emit('change', values)
-				// 修改通过v-model绑定的值
-				this.$emit('input', values)
-			},
-		}
-	}
-</script>
-
-<style lang="scss">
-	@import "../../libs/css/components.scss";
-
-	.u-checkbox-group {
-
-		&--row {
-			@include flex;
-		}
-
-		&--column {
-			@include flex(column);
-		}
-	}
-</style>

+ 0 - 69
src/uni_modules/uview-ui/components/u-checkbox/props.js

xqd
@@ -1,69 +0,0 @@
-export default {
-    props: {
-        // checkbox的名称
-        name: {
-            type: [String, Number, Boolean],
-            default: uni.$u.props.checkbox.name
-        },
-        // 形状,square为方形,circle为圆型
-        shape: {
-            type: String,
-            default: uni.$u.props.checkbox.shape
-        },
-        // 整体的大小
-        size: {
-            type: [String, Number],
-            default: uni.$u.props.checkbox.size
-        },
-        // 是否默认选中
-        checked: {
-            type: Boolean,
-            default: uni.$u.props.checkbox.checked
-        },
-        // 是否禁用
-        disabled: {
-            type: [String, Boolean],
-            default: uni.$u.props.checkbox.disabled
-        },
-        // 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值
-        activeColor: {
-            type: String,
-            default: uni.$u.props.checkbox.activeColor
-        },
-        // 未选中的颜色
-        inactiveColor: {
-            type: String,
-            default: uni.$u.props.checkbox.inactiveColor
-        },
-        // 图标的大小,单位px
-        iconSize: {
-            type: [String, Number],
-            default: uni.$u.props.checkbox.iconSize
-        },
-        // 图标颜色
-        iconColor: {
-            type: String,
-            default: uni.$u.props.checkbox.iconColor
-        },
-        // label提示文字,因为nvue下,直接slot进来的文字,由于特殊的结构,无法修改样式
-        label: {
-            type: [String, Number],
-            default: uni.$u.props.checkbox.label
-        },
-        // label的字体大小,px单位
-        labelSize: {
-            type: [String, Number],
-            default: uni.$u.props.checkbox.labelSize
-        },
-        // label的颜色
-        labelColor: {
-            type: String,
-            default: uni.$u.props.checkbox.labelColor
-        },
-        // 是否禁止点击提示语选中复选框
-        labelDisabled: {
-            type: [String, Boolean],
-            default: uni.$u.props.checkbox.labelDisabled
-        }
-    }
-}

+ 0 - 339
src/uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue

xqd
@@ -1,339 +0,0 @@
-<template>
-	<view
-	    class="u-checkbox"
-	    :style="[checkboxStyle]"
-	    @tap.stop="wrapperClickHandler"
-	    :class="[`u-checkbox-label--${parentData.iconPlacement}`, parentData.borderBottom && parentData.placement === 'column' && 'u-border-bottom']"
-	>
-		<view
-		    class="u-checkbox__icon-wrap"
-		    @tap.stop="iconClickHandler"
-		    :class="iconClasses"
-		    :style="[iconWrapStyle]"
-		>
-			<slot name="icon">
-				<u-icon
-				    class="u-checkbox__icon-wrap__icon"
-				    name="checkbox-mark"
-				    :size="elIconSize"
-				    :color="elIconColor"
-				/>
-			</slot>
-		</view>
-		<text
-		    @tap.stop="labelClickHandler"
-		    :style="{
-				color: elDisabled ? elInactiveColor : elLabelColor,
-				fontSize: elLabelSize,
-				lineHeight: elLabelSize
-			}"
-		>{{label}}</text>
-	</view>
-</template>
-
-<script>
-	import props from './props.js';
-	/**
-	 * checkbox  复选框
-	 * @description 复选框组件一般用于需要多个选择的场景,该组件功能完整,使用方便
-	 * @tutorial https://uviewui.com/components/checkbox.html
-	 * @property {String | Number | Boolean}	name			checkbox组件的标示符
-	 * @property {String}						shape			形状,square为方形,circle为圆型
-	 * @property {String | Number}				size			整体的大小
-	 * @property {Boolean}						checked			是否默认选中
-	 * @property {String | Boolean}				disabled		是否禁用
-	 * @property {String}						activeColor		选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值
-	 * @property {String}						inactiveColor	未选中的颜色
-	 * @property {String | Number}				iconSize		图标的大小,单位px
-	 * @property {String}						iconColor		图标颜色
-	 * @property {String | Number}				label			label提示文字,因为nvue下,直接slot进来的文字,由于特殊的结构,无法修改样式
-	 * @property {String}						labelColor 		label的颜色
-	 * @property {String | Number}				labelSize		label的字体大小,px单位
-	 * @property {String | Boolean}				labelDisabled	是否禁止点击提示语选中复选框
-	 * @property {Object}						customStyle		定义需要用到的外部样式
-	 * 
-	 * @event {Function}	change	任一个checkbox状态发生变化时触发,回调为一个对象
-	 * @example <u-checkbox v-model="checked" :disabled="false">天涯</u-checkbox>
-	 */
-	export default {
-		name: "u-checkbox",
-		mixins: [uni.$u.mpMixin, uni.$u.mixin,props],
-		data() {
-			return {
-				isChecked: false,
-				// 父组件的默认值,因为头条小程序不支持在computed中使用this.parent.shape的形式
-				// 故只能使用如此方法
-				parentData: {
-					iconSize: 12,
-					labelDisabled: null,
-					disabled: null,
-					shape: 'square',
-					activeColor: null,
-					inactiveColor: null,
-					size: 18,
-					value: null,
-					iconColor: null,
-					placement: 'row',
-					borderBottom: false,
-					iconPlacement: 'left'
-				}
-			}
-		},
-		computed: {
-			// 是否禁用,如果父组件u-raios-group禁用的话,将会忽略子组件的配置
-			elDisabled() {
-				return this.disabled !== '' ? this.disabled : this.parentData.disabled !== null ? this.parentData.disabled : false;
-			},
-			// 是否禁用label点击
-			elLabelDisabled() {
-				return this.labelDisabled !== '' ? this.labelDisabled : this.parentData.labelDisabled !== null ? this.parentData.labelDisabled :
-					false;
-			},
-			// 组件尺寸,对应size的值,默认值为21px
-			elSize() {
-				return this.size ? this.size : (this.parentData.size ? this.parentData.size : 21);
-			},
-			// 组件的勾选图标的尺寸,默认12px
-			elIconSize() {
-				return this.iconSize ? this.iconSize : (this.parentData.iconSize ? this.parentData.iconSize : 12);
-			},
-			// 组件选中激活时的颜色
-			elActiveColor() {
-				return this.activeColor ? this.activeColor : (this.parentData.activeColor ? this.parentData.activeColor : '#2979ff');
-			},
-			// 组件选未中激活时的颜色
-			elInactiveColor() {
-				return this.inactiveColor ? this.inactiveColor : (this.parentData.inactiveColor ? this.parentData.inactiveColor :
-					'#c8c9cc');
-			},
-			// label的颜色
-			elLabelColor() {
-				return this.labelColor ? this.labelColor : (this.parentData.labelColor ? this.parentData.labelColor : '#606266')
-			},
-			// 组件的形状
-			elShape() {
-				return this.shape ? this.shape : (this.parentData.shape ? this.parentData.shape : 'circle');
-			},
-			// label大小
-			elLabelSize() {
-				return uni.$u.addUnit(this.labelSize ? this.labelSize : (this.parentData.labelSize ? this.parentData.labelSize :
-					'15'))
-			},
-			elIconColor() {
-				const iconColor = this.iconColor ? this.iconColor : (this.parentData.iconColor ? this.parentData.iconColor :
-					'#ffffff');
-				// 图标的颜色
-				if (this.elDisabled) {
-					// disabled状态下,已勾选的checkbox图标改为elInactiveColor
-					return this.isChecked ? this.elInactiveColor : 'transparent'
-				} else {
-					return this.isChecked ? iconColor : 'transparent'
-				}
-			},
-			iconClasses() {
-				let classes = []
-				// 组件的形状
-				classes.push('u-checkbox__icon-wrap--' + this.elShape)
-				if (this.elDisabled) {
-					classes.push('u-checkbox__icon-wrap--disabled')
-				}
-				if (this.isChecked && this.elDisabled) {
-					classes.push('u-checkbox__icon-wrap--disabled--checked')
-				}
-				// 支付宝,头条小程序无法动态绑定一个数组类名,否则解析出来的结果会带有",",而导致失效
-				// #ifdef MP-ALIPAY || MP-TOUTIAO
-				classes = classes.join(' ')
-				// #endif
-				return classes
-			},
-			iconWrapStyle() {
-				// checkbox的整体样式
-				const style = {}
-				style.backgroundColor = this.isChecked && !this.elDisabled ? this.elActiveColor : '#ffffff'
-				style.borderColor = this.isChecked && !this.elDisabled ? this.elActiveColor : this.elInactiveColor
-				style.width = uni.$u.addUnit(this.elSize)
-				style.height = uni.$u.addUnit(this.elSize)
-				// 如果是图标在右边的话,移除它的右边距
-				if (this.parentData.iconPlacement === 'right') {
-					style.marginRight = 0
-				}
-				return style
-			},
-			checkboxStyle() {
-				const style = {}
-				if (this.parentData.borderBottom && this.parentData.placement === 'row') {
-					uni.$u.error('检测到您将borderBottom设置为true,需要同时将u-checkbox-group的placement设置为column才有效')
-				}
-				// 当父组件设置了显示下边框并且排列形式为纵向时,给内容和边框之间加上一定间隔
-				if (this.parentData.borderBottom && this.parentData.placement === 'column') {
-					style.paddingBottom = '8px'
-				}
-				return uni.$u.deepMerge(style, uni.$u.addStyle(this.customStyle))
-			}
-		},
-		mounted() {
-			this.init()
-		},
-		methods: {
-			init() {
-				// 支付宝小程序不支持provide/inject,所以使用这个方法获取整个父组件,在created定义,避免循环引用
-				this.updateParentData()
-				if (!this.parent) {
-					uni.$u.error('u-checkbox必须搭配u-checkbox-group组件使用')
-				}
-				// 设置初始化时,是否默认选中的状态,父组件u-checkbox-group的value可能是array,所以额外判断
-				if (this.checked) {
-					this.isChecked = true
-				} else if (uni.$u.test.array(this.parentData.value)) {
-					// 查找数组是是否存在this.name元素值
-					this.isChecked = this.parentData.value.some(item => {
-						return item === this.name
-					})
-				}
-			},
-			updateParentData() {
-				this.getParentData('u-checkbox-group')
-			},
-			// 横向两端排列时,点击组件即可触发选中事件
-			wrapperClickHandler(e) {
-				this.parentData.iconPlacement === 'right' && this.iconClickHandler(e)
-			},
-			// 点击图标
-			iconClickHandler(e) {
-				this.preventEvent(e)
-				// 如果整体被禁用,不允许被点击
-				if (!this.elDisabled) {
-					this.setRadioCheckedStatus()
-				}
-			},
-			// 点击label
-			labelClickHandler(e) {
-				this.preventEvent(e)
-				// 如果按钮整体被禁用或者label被禁用,则不允许点击文字修改状态
-				if (!this.elLabelDisabled && !this.elDisabled) {
-					this.setRadioCheckedStatus()
-				}
-			},
-			emitEvent() {
-				this.$emit('change', this.isChecked)
-				// 尝试调用u-form的验证方法,进行一定延迟,否则微信小程序更新可能会不及时
-				this.$nextTick(() => {
-					uni.$u.formValidate(this, 'change')
-				})
-			},
-			// 改变组件选中状态
-			// 这里的改变的依据是,更改本组件的checked值为true,同时通过父组件遍历所有u-checkbox实例
-			// 将本组件外的其他u-checkbox的checked都设置为false(都被取消选中状态),因而只剩下一个为选中状态
-			setRadioCheckedStatus() {
-				// 将本组件标记为与原来相反的状态
-				this.isChecked = !this.isChecked
-				this.emitEvent()
-				typeof this.parent.unCheckedOther === 'function' && this.parent.unCheckedOther(this)
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	@import "../../libs/css/components.scss";
-	$u-checkbox-icon-wrap-margin-right:6px !default;
-	$u-checkbox-icon-wrap-font-size:6px !default;
-	$u-checkbox-icon-wrap-border-width:1px !default;
-	$u-checkbox-icon-wrap-border-color:#c8c9cc !default;
-	$u-checkbox-icon-wrap-icon-line-height:0 !default;
-	$u-checkbox-icon-wrap-circle-border-radius:100% !default;
-	$u-checkbox-icon-wrap-square-border-radius:3px !default;
-	$u-checkbox-icon-wrap-checked-color:#fff !default;
-	$u-checkbox-icon-wrap-checked-background-color:red !default;
-	$u-checkbox-icon-wrap-checked-border-color:#2979ff !default;
-	$u-checkbox-icon-wrap-disabled-background-color:#ebedf0 !default;
-	$u-checkbox-icon-wrap-disabled-checked-color:#c8c9cc !default;
-	$u-checkbox-label-margin-left:5px !default;
-	$u-checkbox-label-margin-right:12px !default;
-	$u-checkbox-label-color:$u-content-color !default;
-	$u-checkbox-label-font-size:15px !default;
-	$u-checkbox-label-disabled-color:#c8c9cc !default;
-
-	.u-checkbox {
-		/* #ifndef APP-NVUE */
-		@include flex(row);
-		/* #endif */
-		overflow: hidden;
-		flex-direction: row;
-		align-items: center;
-
-		&-label--left {
-			flex-direction: row
-		}
-
-		&-label--right {
-			flex-direction: row-reverse;
-			justify-content: space-between
-		}
-
-		&__icon-wrap {
-			/* #ifndef APP-NVUE */
-			box-sizing: border-box;
-			// nvue下,border-color过渡有问题
-			transition-property: border-color, background-color, color;
-			transition-duration: 0.2s;
-			/* #endif */
-			color: $u-content-color;
-			@include flex;
-			align-items: center;
-			justify-content: center;
-			color: transparent;
-			text-align: center;
-			margin-right: $u-checkbox-icon-wrap-margin-right;
-
-			font-size: $u-checkbox-icon-wrap-font-size;
-			border-width: $u-checkbox-icon-wrap-border-width;
-			border-color: $u-checkbox-icon-wrap-border-color;
-			border-style: solid;
-
-			/* #ifdef MP-TOUTIAO */
-			// 头条小程序兼容性问题,需要设置行高为0,否则图标偏下
-			&__icon {
-				line-height: $u-checkbox-icon-wrap-icon-line-height;
-			}
-
-			/* #endif */
-
-			&--circle {
-				border-radius: $u-checkbox-icon-wrap-circle-border-radius;
-			}
-
-			&--square {
-				border-radius: $u-checkbox-icon-wrap-square-border-radius;
-			}
-
-			&--checked {
-				color: $u-checkbox-icon-wrap-checked-color;
-				background-color: $u-checkbox-icon-wrap-checked-background-color;
-				border-color: $u-checkbox-icon-wrap-checked-border-color;
-			}
-
-			&--disabled {
-				background-color: $u-checkbox-icon-wrap-disabled-background-color !important;
-			}
-
-			&--disabled--checked {
-				color: $u-checkbox-icon-wrap-disabled-checked-color !important;
-			}
-		}
-
-		&__label {
-			/* #ifndef APP-NVUE */
-			word-wrap: break-word;
-			/* #endif */
-			margin-left: $u-checkbox-label-margin-left;
-			margin-right: $u-checkbox-label-margin-right;
-			color: $u-checkbox-label-color;
-			font-size: $u-checkbox-label-font-size;
-
-			&--disabled {
-				color: $u-checkbox-label-disabled-color;
-			}
-		}
-	}
-</style>

+ 0 - 8
src/uni_modules/uview-ui/components/u-circle-progress/props.js

xqd
@@ -1,8 +0,0 @@
-export default {
-    props: {
-        percentage: {
-            type: [String, Number],
-            default: uni.$u.props.circleProgress.percentage
-        }
-    }
-}

+ 0 - 198
src/uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue

xqd
@@ -1,198 +0,0 @@
-<template>
-	<view class="u-circle-progress">
-		<view class="u-circle-progress__left">
-			<view
-			    class="u-circle-progress__left__circle"
-			    :style="[leftSyle]"
-			    ref="left-circle"
-			>
-
-			</view>
-		</view>
-		<view
-		    class="u-circle-progress__right"
-		>
-			<view
-			    class="u-circle-progress__right__circle"
-			    ref="right-circle"
-				:style="[rightSyle]"
-			>
-
-			</view>
-		</view>
-		<view class="u-circle-progress__circle">
-
-		</view>
-	</view>
-</template>
-
-<script>
-	import props from './props.js';
-	// #ifdef APP-NVUE
-	const animation = uni.requireNativePlugin('animation')
-	// #endif
-	/**
-	 * CircleProgress 圆形进度条 TODO: 待完善 
-	 * @description 展示操作或任务的当前进度,比如上传文件,是一个圆形的进度环。
-	 * @tutorial https://www.uviewui.com/components/circleProgress.html
-	 * @property {String | Number}	percentage	圆环进度百分比值,为数值类型,0-100 (默认 30 )
-	 * @example
-	 */
-	export default {
-		name: 'u-circle-progress',
-		mixins: [uni.$u.mpMixin, uni.$u.mixin,props],
-		data() {
-			return {
-				leftBorderColor: 'rgb(200, 200, 200)',
-				rightBorderColor: 'rgb(200, 200, 200)',
-			}
-		},
-		computed: {
-			leftSyle() {
-				const style = {}
-				style.borderTopColor = this.leftBorderColor
-				style.borderRightColor = this.leftBorderColor
-				return style
-			},
-			rightSyle() {
-				const style = {}
-				style.borderLeftColor = this.rightBorderColor
-				style.borderBottomColor = this.rightBorderColor
-				return style
-			}
-		},
-		mounted() {
-			uni.$u.sleep().then(() => {
-				this.rightBorderColor = 'rgb(66, 185, 131)'
-				// this.init()
-			})
-		},
-		methods: {
-			init() {
-				animation.transition(this.$refs['right-circle'].ref, {
-					styles: {
-						transform: 'rotate(45deg)',
-						transformOrigin: 'center center'
-					},
-				}, () => {
-					this.rightBorderColor = 'rgb(66, 185, 131)'
-					// animation.transition(this.$refs['right-circle'].ref, {
-					// 	styles: {
-					// 		transform: 'rotate(225deg)',
-					// 		transformOrigin: 'center center'
-					// 	},
-					// 	duration: 3000,
-					// }, () => {
-					// 	animation.transition(this.$refs['left-circle'].ref, {
-					// 		styles: {
-					// 			transform: 'rotate(45deg)',
-					// 			transformOrigin: 'center center'
-					// 		},
-					// 	}, () => {
-					// 		this.leftBorderColor = 'rgb(66, 185, 131)'
-					// 		animation.transition(this.$refs['left-circle'].ref, {
-					// 			styles: {
-					// 				transform: 'rotate(225deg)',
-					// 				transformOrigin: 'center center'
-					// 			},
-					// 			duration: 1500,
-					// 		}, () => {
-
-					// 		})
-					// 	})
-					// })
-				})
-
-			}
-		},
-	}
-</script>
-
-<style lang="scss">
-	@import "../../libs/css/components.scss";
-
-	.u-circle-progress {
-		@include flex(row);
-		position: relative;
-		border-radius: 100px;
-		height: 100px;
-		width: 100px;
-		// transform: rotate(0deg);
-		// background-color: rgb(66, 185, 131);
-		background-color: rgb(200, 200, 200);
-		overflow: hidden;
-		justify-content: space-between;
-
-		&__circle {
-			border-radius: 100px;
-			height: 90px;
-			width: 90px;
-			transform: translate(-50%, -50%);
-			background-color: rgb(255, 255, 255);
-			left: 50px;
-			top: 50px;
-			position: absolute;
-		}
-
-		&__left {
-			position: absolute;
-			left: 0;
-			width: 50px;
-			height: 100px;
-			overflow: hidden;
-			box-sizing: border-box;
-			// background-color: rgb(66, 185, 131);
-			// background-color: rgb(200, 200, 200);
-			// transform-origin: left center;
-
-			&__circle {
-				box-sizing: border-box;
-				// background-color: red;
-				border-left-color: transparent;
-				border-bottom-color: transparent;
-				border-top-left-radius: 50px;
-				border-top-right-radius: 50px;
-				border-bottom-right-radius: 50px;
-				// border-left-color: rgb(66, 185, 131);
-				// border-bottom-color: rgb(66, 185, 131);
-				border-top-color: rgb(66, 185, 131);
-				border-right-color: rgb(66, 185, 131);
-				border-width: 5px;
-				width: 100px;
-				height: 100px;
-				transform: rotate(225deg);
-				// border-radius: 100px;
-			}
-		}
-
-		&__right {
-			position: absolute;
-			right: 0;
-			width: 50px;
-			height: 100px;
-			overflow: hidden;
-
-			&__circle {
-				position: absolute;
-				right: 0;
-				box-sizing: border-box;
-				// background-color: red;
-				border-top-color: transparent;
-				border-right-color: transparent;
-				border-top-left-radius: 50px;
-				border-bottom-left-radius: 50px;
-				border-bottom-right-radius: 50px;
-				// border-left-color: rgb(66, 185, 131);
-				// border-bottom-color: rgb(66, 185, 131);
-				border-left-color: rgb(200, 200, 200);
-				border-bottom-color: rgb(200, 200, 200);
-				border-width: 5px;
-				width: 100px;
-				height: 100px;
-				transform: rotate(45deg);
-				transform-origin: center center;
-				// border-radius: 100px;
-			}
-		}
-	}
-</style>

+ 0 - 69
src/uni_modules/uview-ui/components/u-code-input/props.js

xqd
@@ -1,69 +0,0 @@
-export default {
-    props: {
-        // 最大输入长度
-        maxlength: {
-            type: [String, Number],
-            default: uni.$u.props.codeInput.maxlength
-        },
-        // 是否用圆点填充
-        dot: {
-            type: Boolean,
-            default: uni.$u.props.codeInput.dot
-        },
-        // 显示模式,box-盒子模式,line-底部横线模式
-        mode: {
-            type: String,
-            default: uni.$u.props.codeInput.mode
-        },
-        // 是否细边框
-        hairline: {
-            type: Boolean,
-            default: uni.$u.props.codeInput.hairline
-        },
-        // 字符间的距离
-        space: {
-            type: [String, Number],
-            default: uni.$u.props.codeInput.space
-        },
-        // 预置值
-        value: {
-            type: [String, Number],
-            default: uni.$u.props.codeInput.value
-        },
-        // 是否自动获取焦点
-        focus: {
-            type: Boolean,
-            default: uni.$u.props.codeInput.focus
-        },
-        // 字体是否加粗
-        bold: {
-            type: Boolean,
-            default: uni.$u.props.codeInput.bold
-        },
-        // 字体颜色
-        color: {
-            type: String,
-            default: uni.$u.props.codeInput.color
-        },
-        // 字体大小
-        fontSize: {
-            type: [String, Number],
-            default: uni.$u.props.codeInput.fontSize
-        },
-        // 输入框的大小,宽等于高
-        size: {
-            type: [String, Number],
-            default: uni.$u.props.codeInput.size
-        },
-        // 是否隐藏原生键盘,如果想用自定义键盘的话,需设置此参数为true
-        disabledKeyboard: {
-            type: Boolean,
-            default: uni.$u.props.codeInput.disabledKeyboard
-        },
-        // 边框和线条颜色
-        borderColor: {
-            type: String,
-            default: uni.$u.props.codeInput.borderColor
-        }
-    }
-}

+ 0 - 206
src/uni_modules/uview-ui/components/u-code-input/u-code-input.vue

xqd
@@ -1,206 +0,0 @@
-<template>
-	<view class="u-code-input">
-		<view
-			class="u-code-input__item"
-			:style="[itemStyle(index)]"
-			v-for="(item, index) in codeLength"
-			:key="index"
-		>
-			<view
-				class="u-code-input__item__dot"
-				v-if="dot && codeArray.length > index"
-			></view>
-			<text
-				v-else
-				:style="{
-					fontSize: $u.addUnit(fontSize),
-					fontWeight: bold ? 'bold' : 'normal',
-					color: color
-				}"
-			>{{codeArray[index]}}</text>
-			<view
-				class="u-code-input__item__line"
-				v-if="mode === 'line'"
-				:style="[lineStyle]"
-			></view>
-		</view>
-		<input
-			:disabled="disabledKeyboard"
-			type="number"
-			:focus="focus"
-			:value="inputValue"
-			:maxlength="maxlength"
-			class="u-code-input__input"
-			@input="inputHandler"
-			:style="{
-				height: $u.addUnit(size) 
-			}"
-		/>
-	</view>
-</template>
-
-<script>
-	import props from './props.js';
-	/**
-	 * CodeInput 验证码输入
-	 * @description 该组件一般用于验证用户短信验证码的场景,也可以结合uView的键盘组件使用
-	 * @tutorial https://www.uviewui.com/components/codeInput.html
-	 * @property {String | Number}	maxlength			最大输入长度 (默认 6 )
-	 * @property {Boolean}			dot					是否用圆点填充 (默认 false )
-	 * @property {String}			mode				显示模式,box-盒子模式,line-底部横线模式 (默认 'box' )
-	 * @property {Boolean}			hairline			是否细边框 (默认 false )
-	 * @property {String | Number}	space				字符间的距离 (默认 10 )
-	 * @property {String | Number}	value				预置值
-	 * @property {Boolean}			focus				是否自动获取焦点 (默认 false )
-	 * @property {Boolean}			bold				字体和输入横线是否加粗 (默认 false )
-	 * @property {String}			color				字体颜色 (默认 '#606266' )
-	 * @property {String | Number}	fontSize			字体大小,单位px (默认 18 )
-	 * @property {String | Number}	size				输入框的大小,宽等于高 (默认 35 )
-	 * @property {Boolean}			disabledKeyboard	是否隐藏原生键盘,如果想用自定义键盘的话,需设置此参数为true (默认 false )
-	 * @property {String}			borderColor			边框和线条颜色 (默认 '#c9cacc' )
-	 * 
-	 * @event {Function}	change	输入内容发生改变时触发,具体见上方说明			value:当前输入的值
-	 * @event {Function}	finish	输入字符个数达maxlength值时触发,见上方说明	value:当前输入的值
-	 * @example	<u-code-input v-model="value4" :focus="true"></u-code-input>
-	 */
-	export default {
-		name: 'u-code-input',
-		mixins: [uni.$u.mpMixin, uni.$u.mixin, props],
-		data() {
-			return {
-				inputValue: ''
-			}
-		},
-		watch: {
-			value: {
-				immediate: true,
-				handler(val) {
-					// 转为字符串,超出部分截掉
-					this.inputValue = String(val).substring(0, this.maxlength)
-				}
-			},
-		},
-		computed: {
-			// 根据长度,循环输入框的个数,因为头条小程序数值不能用于v-for
-			codeLength() {
-				return new Array(this.maxlength)
-			},
-			// 循环item的样式
-			itemStyle() {
-				return index => {
-					const addUnit = uni.$u.addUnit
-					const style = {
-						width: addUnit(this.size),
-						height: addUnit(this.size)
-					}
-					// 盒子模式下,需要额外进行处理
-					if (this.mode === 'box') {
-						// 设置盒子的边框,如果是细边框,则设置为0.5px宽度
-						style.border = `${this.hairline ? 0.5 : 1}px solid ${this.borderColor}`
-						// 如果盒子间距为0的话
-						if (uni.$u.getPx(this.space) === 0) {
-							// 给第一和最后一个盒子设置圆角
-							if (index === 0) {
-								style.borderTopLeftRadius = '3px'
-								style.borderBottomLeftRadius = '3px'
-							}
-							if (index === this.codeLength.length - 1) {
-								style.borderTopRightRadius = '3px'
-								style.borderBottomRightRadius = '3px'
-							}
-							// 最后一个盒子的右边框需要保留
-							if (index !== this.codeLength.length - 1) {
-								style.borderRight = 'none'
-							}
-						}
-					}
-					if (index !== this.codeLength.length - 1) {
-						// 设置验证码字符之间的距离,通过margin-right设置,最后一个字符,无需右边框
-						style.marginRight = addUnit(this.space)
-					} else {
-						// 最后一个盒子的有边框需要保留
-						style.marginRight = 0
-					}
-
-					return style
-				}
-			},
-			// 将输入的值,转为数组,给item历遍时,根据当前的索引显示数组的元素
-			codeArray() {
-				return String(this.inputValue).split('')
-			},
-			// 下划线模式下,横线的样式
-			lineStyle() {
-				const style = {}
-				style.height = this.hairline ? '2px' : '4px'
-				style.width = uni.$u.addUnit(this.size)
-				// 线条模式下,背景色即为边框颜色
-				style.backgroundColor = this.borderColor
-				return style
-			}
-		},
-		methods: {
-			// 监听输入框的值发生变化
-			inputHandler(e) {
-				const value = e.detail.value
-				this.inputValue = value
-				// 未达到maxlength之前,发送change事件,达到后发送finish事件
-				this.$emit('change', value)
-				// 修改通过v-model双向绑定的值
-				this.$emit('input', value)
-				// 达到用户指定输入长度时,发出完成事件
-				if (String(value).length >= Number(this.maxlength)) {
-					this.$emit('finish', value)
-				}
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	@import "../../libs/css/components.scss";
-
-	.u-code-input {
-		@include flex;
-		position: relative;
-		overflow: hidden;
-
-		&__item {
-			@include flex;
-			justify-content: center;
-			align-items: center;
-
-			&__text {
-				font-size: 15px;
-				color: $u-content-color;
-			}
-
-			&__dot {
-				width: 7px;
-				height: 7px;
-				border-radius: 100px;
-				background-color: $u-content-color;
-			}
-
-			&__line {
-				position: absolute;
-				bottom: 0;
-				height: 4px;
-				border-radius: 100px;
-				width: 40px;
-				background-color: $u-content-color;
-			}
-		}
-
-		&__input {
-			// 之所以需要input输入框,是因为有它才能唤起键盘
-			// 这里将它设置为两倍的屏幕宽度,再将左边的一半移出屏幕,为了不让用户看到输入的内容
-			position: absolute;
-			left: -150rpx;
-			width: 1500rpx;
-			top: 0;
-			background-color: transparent;
-			text-align: left;
-		}
-	}
-</style>

+ 0 - 34
src/uni_modules/uview-ui/components/u-code/props.js

xqd
@@ -1,34 +0,0 @@
-export default {
-    props: {
-        // 倒计时总秒数
-        seconds: {
-            type: [String, Number],
-            default: uni.$u.props.code.seconds
-        },
-        // 尚未开始时提示
-        startText: {
-            type: String,
-            default: uni.$u.props.code.startText
-        },
-        // 正在倒计时中的提示
-        changeText: {
-            type: String,
-            default: uni.$u.props.code.changeText
-        },
-        // 倒计时结束时的提示
-        endText: {
-            type: String,
-            default: uni.$u.props.code.endText
-        },
-        // 是否在H5刷新或各端返回再进入时继续倒计时
-        keepRunning: {
-            type: Boolean,
-            default: uni.$u.props.code.keepRunning
-        },
-        // 为了区分多个页面,或者一个页面多个倒计时组件本地存储的继续倒计时变了
-        uniqueKey: {
-            type: String,
-            default: uni.$u.props.code.uniqueKey
-        }
-    }
-}

+ 0 - 129
src/uni_modules/uview-ui/components/u-code/u-code.vue

xqd
@@ -1,129 +0,0 @@
-<template>
-	<view class="u-code">
-		<!-- 此组件功能由js完成,无需写html逻辑 -->
-	</view>
-</template>
-
-<script>
-	import props from './props.js';
-	/**
-	 * Code 验证码输入框
-	 * @description 考虑到用户实际发送验证码的场景,可能是一个按钮,也可能是一段文字,提示语各有不同,所以本组件 不提供界面显示,只提供提示语,由用户将提示语嵌入到具体的场景
-	 * @tutorial https://www.uviewui.com/components/code.html
-	 * @property {String | Number}	seconds			倒计时所需的秒数(默认 60 )
-	 * @property {String}			startText		开始前的提示语,见官网说明(默认 '获取验证码' )
-	 * @property {String}			changeText		倒计时期间的提示语,必须带有字母"x",见官网说明(默认 'X秒重新获取' )
-	 * @property {String}			endText			倒计结束的提示语,见官网说明(默认 '重新获取' )
-	 * @property {Boolean}			keepRunning		是否在H5刷新或各端返回再进入时继续倒计时( 默认false )
-	 * @property {String}			uniqueKey		为了区分多个页面,或者一个页面多个倒计时组件本地存储的继续倒计时变了
-	 * 
-	 * @event {Function}	change	倒计时期间,每秒触发一次
-	 * @event {Function}	start	开始倒计时触发
-	 * @event {Function}	end		结束倒计时触发
-	 * @example <u-code ref="uCode" @change="codeChange" seconds="20"></u-code> 
-	 */
-	export default {
-		name: "u-code",
-		mixins: [uni.$u.mpMixin, uni.$u.mixin,props],
-		data() {
-			return {
-				secNum: this.seconds,
-				timer: null,
-				canGetCode: true, // 是否可以执行验证码操作
-			}
-		},
-		mounted() {
-			this.checkKeepRunning()
-		},
-		watch: {
-			seconds: {
-				immediate: true,
-				handler(n) {
-					this.secNum = n
-				}
-			}
-		},
-		methods: {
-			checkKeepRunning() {
-				// 获取上一次退出页面(H5还包括刷新)时的时间戳,如果没有上次的保存,此值可能为空
-				let lastTimestamp = Number(uni.getStorageSync(this.uniqueKey + '_$uCountDownTimestamp'))
-				if(!lastTimestamp) return this.changeEvent(this.startText)
-				// 当前秒的时间戳
-				let nowTimestamp = Math.floor((+ new Date()) / 1000)
-				// 判断当前的时间戳,是否小于上一次的本该按设定结束,却提前结束的时间戳
-				if(this.keepRunning && lastTimestamp && lastTimestamp > nowTimestamp) {
-					// 剩余尚未执行完的倒计秒数
-					this.secNum = lastTimestamp - nowTimestamp
-					// 清除本地保存的变量
-					uni.removeStorageSync(this.uniqueKey + '_$uCountDownTimestamp')
-					// 开始倒计时
-					this.start()
-				} else {
-					// 如果不存在需要继续上一次的倒计时,执行正常的逻辑
-					this.changeEvent(this.startText)
-				}
-			},
-			// 开始倒计时
-			start() {
-				// 防止快速点击获取验证码的按钮而导致内部产生多个定时器导致混乱
-				if(this.timer) {
-					clearInterval(this.timer)
-					this.timer = null
-				}
-				this.$emit('start')
-				this.canGetCode = false
-				// 这里放这句,是为了一开始时就提示,否则要等setInterval的1秒后才会有提示
-				this.changeEvent(this.changeText.replace(/x|X/, this.secNum))
-				this.setTimeToStorage()
-				this.timer = setInterval(() => {
-					if (--this.secNum) {
-						// 用当前倒计时的秒数替换提示字符串中的"x"字母
-						this.changeEvent(this.changeText.replace(/x|X/, this.secNum))
-					} else {
-						clearInterval(this.timer)
-						this.timer = null
-						this.changeEvent(this.endText)
-						this.secNum = this.seconds
-						this.$emit('end')
-						this.canGetCode = true
-					}
-				}, 1000)
-			},
-			// 重置,可以让用户再次获取验证码
-			reset() {
-				this.canGetCode = true
-				clearInterval(this.timer)
-				this.secNum = this.seconds
-				this.changeEvent(this.endText)
-			},
-			changeEvent(text) {
-				this.$emit('change', text)
-			},
-			// 保存时间戳,为了防止倒计时尚未结束,H5刷新或者各端的右上角返回上一页再进来
-			setTimeToStorage() {
-				if(!this.keepRunning || !this.timer) return
-				// 记录当前的时间戳,为了下次进入页面,如果还在倒计时内的话,继续倒计时
-				// 倒计时尚未结束,结果大于0;倒计时已经开始,就会小于初始值,如果等于初始值,说明没有开始倒计时,无需处理
-				if(this.secNum > 0 && this.secNum <= this.seconds) {
-					// 获取当前时间戳(+ new Date()为特殊写法),除以1000变成秒,再去除小数部分
-					let nowTimestamp = Math.floor((+ new Date()) / 1000)
-					// 将本该结束时候的时间戳保存起来 => 当前时间戳 + 剩余的秒数
-					uni.setStorage({
-						key: this.uniqueKey + '_$uCountDownTimestamp',
-						data: nowTimestamp + Number(this.secNum)
-					})
-				}
-			}
-		},
-		// 组件销毁的时候,清除定时器,否则定时器会继续存在,系统不会自动清除
-		beforeDestroy() {
-			this.setTimeToStorage()
-			clearTimeout(this.timer)
-			this.timer = null
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/components.scss";
-</style>

+ 0 - 29
src/uni_modules/uview-ui/components/u-col/props.js

xqd
@@ -1,29 +0,0 @@
-export default {
-    props: {
-        // 占父容器宽度的多少等分,总分为12份
-        span: {
-            type: [String, Number],
-            default: uni.$u.props.col.span
-        },
-        // 指定栅格左侧的间隔数(总12栏)
-        offset: {
-            type: [String, Number],
-            default: uni.$u.props.col.offset
-        },
-        // 水平排列方式,可选值为`start`(或`flex-start`)、`end`(或`flex-end`)、`center`、`around`(或`space-around`)、`between`(或`space-between`)
-        justify: {
-            type: String,
-            default: uni.$u.props.col.justify
-        },
-        // 垂直对齐方式,可选值为top、center、bottom、stretch
-        align: {
-            type: String,
-            default: uni.$u.props.col.align
-        },
-        // 文字对齐方式
-        textAlign: {
-            type: String,
-            default: uni.$u.props.col.textAlign
-        }
-    }
-}

+ 0 - 159
src/uni_modules/uview-ui/components/u-col/u-col.vue

xqd
@@ -1,159 +0,0 @@
-<template>
-	<view
-	    class="u-col"
-		ref="u-col"
-	    :class="[
-			'u-col-' + span
-		]"
-	    :style="[colStyle]"
-	    @tap="clickHandler"
-	>
-		<slot></slot>
-	</view>
-</template>
-
-<script>
-	import props from './props.js';
-	/**
-	 * CodeInput 栅格系统的列 
-	 * @description 该组件一般用于Layout 布局 通过基础的 12 分栏,迅速简便地创建布局
-	 * @tutorial https://www.uviewui.com/components/Layout.html
-	 * @property {String | Number}	span		栅格占据的列数,总12等份 (默认 12 ) 
-	 * @property {String | Number}	offset		分栏左边偏移,计算方式与span相同 (默认 0 ) 
-	 * @property {String}			justify		水平排列方式,可选值为`start`(或`flex-start`)、`end`(或`flex-end`)、`center`、`around`(或`space-around`)、`between`(或`space-between`)  (默认 'start' ) 
-	 * @property {String}			align		垂直对齐方式,可选值为top、center、bottom、stretch (默认 'stretch' ) 
-	 * @property {String}			textAlign	文字水平对齐方式 (默认 'left' ) 
-	 * @property {Object}			customStyle	定义需要用到的外部样式
-	 * @event {Function}	click	col被点击,会阻止事件冒泡到row
-	 * @example	 <u-col  span="3" offset="3" > <view class="demo-layout bg-purple"></view> </u-col>
-	 */
-	export default {
-		name: 'u-col',
-		mixins: [uni.$u.mpMixin, uni.$u.mixin, props],
-		data() {
-			return {
-				width: 0,
-				parentData: {
-					gutter: 0
-				},
-				gridNum: 12
-			}
-		},
-		computed: {
-			uJustify() {
-				if (this.justify == 'end' || this.justify == 'start') return 'flex-' + this.justify
-				else if (this.justify == 'around' || this.justify == 'between') return 'space-' + this.justify
-				else return this.justify
-			},
-			uAlignItem() {
-				if (this.align == 'top') return 'flex-start'
-				if (this.align == 'bottom') return 'flex-end'
-				else return this.align
-			},
-			colStyle() {
-				const style = {
-					// 这里写成"padding: 0 10px"的形式是因为nvue的需要
-					paddingLeft: uni.$u.addUnit(Number(this.parentData.gutter)/2),
-					paddingRight: uni.$u.addUnit(Number(this.parentData.gutter)/2),
-					alignItems: this.uAlignItem,
-					justifyContent: this.uJustify,
-					textAlign: this.textAlign,
-					// #ifndef APP-NVUE
-					// 在非nvue上,使用百分比形式
-					flex: `0 0 ${100 / this.gridNum * this.span}%`,
-					marginLeft: 100 / 12 * this.offset + '%',
-					// #endif
-					// #ifdef APP-NVUE
-					// 在nvue上,由于无法使用百分比单位,这里需要获取父组件的宽度,再计算得出该有对应的百分比尺寸
-					width: uni.$u.addUnit(Math.floor(this.width / this.gridNum * Number(this.span))),
-					marginLeft: uni.$u.addUnit(Math.floor(this.width / this.gridNum * Number(this.offset))),
-					// #endif
-				}
-				return uni.$u.deepMerge(style, uni.$u.addStyle(this.customStyle))
-			}
-		},
-		mounted() {
-			this.init()
-		},
-		methods: {
-			async init() {
-				// 支付宝小程序不支持provide/inject,所以使用这个方法获取整个父组件,在created定义,避免循环引用
-				this.updateParentData()
-				this.width = await this.parent.getComponentWidth()
-			},
-			updateParentData() {
-				this.getParentData('u-row')
-			},
-			clickHandler(e) {
-				this.$emit('click');
-			}
-		},
-	}
-</script>
-
-<style lang="scss">
-	@import "../../libs/css/components.scss";
-
-	.u-col {
-		padding: 0;
-		/* #ifdef MP */
-		display: block;
-		/* #endif */
-	}
-
-	// nvue下百分比无效
-	/* #ifndef APP-NVUE */
-	.u-col-0 {
-		width: 0;
-	}
-
-	.u-col-1 {
-		width: calc(100%/12);
-	}
-
-	.u-col-2 {
-		width: calc(100%/12 * 2);
-	}
-
-	.u-col-3 {
-		width: calc(100%/12 * 3);
-	}
-
-	.u-col-4 {
-		width: calc(100%/12 * 4);
-	}
-
-	.u-col-5 {
-		width: calc(100%/12 * 5);
-	}
-
-	.u-col-6 {
-		width: calc(100%/12 * 6);
-	}
-
-	.u-col-7 {
-		width: calc(100%/12 * 7);
-	}
-
-	.u-col-8 {
-		width: calc(100%/12 * 8);
-	}
-
-	.u-col-9 {
-		width: calc(100%/12 * 9);
-	}
-
-	.u-col-10 {
-		width: calc(100%/12 * 10);
-	}
-
-	.u-col-11 {
-		width: calc(100%/12 * 11);
-	}
-
-	.u-col-12 {
-		width: calc(100%/12 * 12);
-	}
-
-	/* #endif */
-</style>

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů