Explorar el Código

20220623 大部分完成了

邪性 hace 3 años
padre
commit
109caec5b8
Se han modificado 100 ficheros con 3430 adiciones y 273 borrados
  1. 5 1
      README.md
  2. 8 144
      colorui/Readme.md
  3. 50 0
      colorui/components/cu-bar.vue
  4. 8 1
      colorui/components/cu-custom.vue
  5. 48 0
      colorui/components/cu-evaluate.vue
  6. 68 0
      colorui/components/cu-evaluateA.vue
  7. 47 0
      colorui/components/cu-evaluateB.vue
  8. 179 43
      colorui/components/cu-good.vue
  9. 1 1
      colorui/components/cu-loading-page.vue
  10. 1 1
      colorui/components/cu-price.vue
  11. 16 0
      colorui/components/cu-rate.vue
  12. 33 0
      colorui/components/cu-scrollView.vue
  13. 66 0
      colorui/components/cu-stepper.vue
  14. 32 0
      colorui/components/cu-swiper.vue
  15. 127 0
      colorui/components/cu-tab.vue
  16. 69 0
      colorui/components/cu-treeSelectA.vue
  17. 86 0
      colorui/components/cu-treeSelectB.vue
  18. 39 0
      colorui/config.js
  19. 41 11
      colorui/cu-goods.js
  20. 40 0
      common/device/index.js
  21. 0 0
      common/format/index.js
  22. 2 2
      common/request/index.js
  23. 81 0
      detailPages/evaluate/index.vue
  24. 160 0
      loginPages/addEvalute/index.vue
  25. 106 0
      loginPages/addaddress/index.vue
  26. 97 0
      loginPages/addressList/index.vue
  27. 117 0
      loginPages/evaluate/index.vue
  28. 11 2
      manifest.json
  29. 84 1
      pages.json
  30. 5 0
      pages/commodity/api.js
  31. 81 0
      pages/commodity/index.vue
  32. 196 0
      pages/detail/index.vue
  33. 1 1
      pages/index/api.js
  34. 40 36
      pages/index/index.vue
  35. 5 0
      pages/login/api.js
  36. 182 0
      pages/login/index.vue
  37. 36 0
      pages/order/index.vue
  38. 5 0
      pages/shoppingCart/api.js
  39. 168 0
      pages/shoppingCart/index.vue
  40. BIN
      static/login/dfh.png
  41. BIN
      static/login/dpj.png
  42. BIN
      static/login/dzf.png
  43. BIN
      static/login/ysz.png
  44. BIN
      static/login/ywc.png
  45. 2 2
      store/index.js
  46. 0 17
      store/login.js
  47. 71 0
      store/requestList.js
  48. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-bar.js.map
  49. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-custom.js.map
  50. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-evaluate.js.map
  51. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-evaluateA.js.map
  52. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-evaluateB.js.map
  53. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-good.js.map
  54. 1 0
      unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-list.js.map
  55. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-modalA.js.map
  56. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-modalB.js.map
  57. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-modalC.js.map
  58. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-price.js.map
  59. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-rate.js.map
  60. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-stepper.js.map
  61. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-swiper.js.map
  62. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-tab.js.map
  63. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-treeSelectB.js.map
  64. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map
  65. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map
  66. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
  67. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/detailPages/evaluate/index.js.map
  68. 1 0
      unpackage/dist/dev/.sourcemap/mp-weixin/loginPages/addEvaluate/index.js.map
  69. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/loginPages/addEvalute/index.js.map
  70. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/loginPages/addaddress/index.js.map
  71. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/loginPages/addressList/index.js.map
  72. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/loginPages/common/vendor.js.map
  73. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/loginPages/evaluate/index.js.map
  74. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/commodity/index.js.map
  75. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/detail/index.js.map
  76. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map
  77. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/index.js.map
  78. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/order/index.js.map
  79. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/shoppingCart/index.js.map
  80. 70 3
      unpackage/dist/dev/mp-weixin/app.json
  81. 161 0
      unpackage/dist/dev/mp-weixin/colorui/components/cu-bar.js
  82. 0 0
      unpackage/dist/dev/mp-weixin/colorui/components/cu-bar.json
  83. 1 0
      unpackage/dist/dev/mp-weixin/colorui/components/cu-bar.wxml
  84. 13 0
      unpackage/dist/dev/mp-weixin/colorui/components/cu-bar.wxss
  85. 194 0
      unpackage/dist/dev/mp-weixin/colorui/components/cu-custom.js
  86. 4 0
      unpackage/dist/dev/mp-weixin/colorui/components/cu-custom.json
  87. 1 0
      unpackage/dist/dev/mp-weixin/colorui/components/cu-custom.wxml
  88. 194 0
      unpackage/dist/dev/mp-weixin/colorui/components/cu-evaluate.js
  89. 6 0
      unpackage/dist/dev/mp-weixin/colorui/components/cu-evaluate.json
  90. 1 0
      unpackage/dist/dev/mp-weixin/colorui/components/cu-evaluate.wxml
  91. 171 0
      unpackage/dist/dev/mp-weixin/colorui/components/cu-evaluateA.js
  92. 4 0
      unpackage/dist/dev/mp-weixin/colorui/components/cu-evaluateA.json
  93. 1 0
      unpackage/dist/dev/mp-weixin/colorui/components/cu-evaluateA.wxml
  94. 21 0
      unpackage/dist/dev/mp-weixin/colorui/components/cu-evaluateA.wxss
  95. 159 0
      unpackage/dist/dev/mp-weixin/colorui/components/cu-evaluateB.js
  96. 4 0
      unpackage/dist/dev/mp-weixin/colorui/components/cu-evaluateB.json
  97. 1 0
      unpackage/dist/dev/mp-weixin/colorui/components/cu-evaluateB.wxml
  98. 8 0
      unpackage/dist/dev/mp-weixin/colorui/components/cu-evaluateB.wxss
  99. 0 7
      unpackage/dist/dev/mp-weixin/colorui/components/cu-good.json
  100. 0 0
      unpackage/dist/dev/mp-weixin/colorui/components/cu-good.wxml

+ 5 - 1
README.md

@@ -1,2 +1,6 @@
 
-# 20220617 封装商品规格组件
+# 20220617 封装商品规格组件
+# 20220621 封装商品规格组件
+# 20220621 封装地址页面及组件 我的 购物车
+# 20220622 购物车 商品 首页 详情 评价
+# 20220623 评价 我的订单  提交评价

+ 8 - 144
colorui/Readme.md

@@ -1,144 +1,8 @@
-<p style="text-align: center;"><img src="https://image.weilanwl.com/uni/UniAppReadme.jpg" alt="ColorUI简介"></img></p>
-
-## 前言
-ColorUI是一个css库!!!在你引入样式后可以根据class来调用组件,一些含有交互的操作我也有简单写,可以为你开发提供一些思路。插件市场版本如果和更新日志不一样,请移步Github下载。有组件需求或者Bug提交也可以移步到issues。
-
-## 交流
-微信群:加入微信群请先添加开发者微信,备注UniApp插件市场。QQ群:240787041 或扫描二维码。
-<p style="text-align: center;"><img src="https://image.weilanwl.com/colorui/githubQrcode.jpg" alt="" style="max-width:100%;" width="748"></p>				  
-
-## 素材
-ColorUI在语雀有个群友共同在维护的知识库,里面有一些群友改的模板和UI素材供开发使用哦!
-[语雀-ColorUI群资源](https://www.yuque.com/colorui)
- 
-## 开始使用
-下载源码解压,复制根目录的 `/colorui` 文件夹到你的根目录
-
-`App.vue` 引入关键Css `main.css` `icon.css`
-```
-<style>
-    @import "colorui/main.css";
-	@import "colorui/icon.css";
-	@import "app.css"; /* 你的项目css */
-	....
-</style>
-```
-
-------
-
-## 使用自定义导航栏
-导航栏作为常用组件有做简单封装,当然你也可以直接复制代码结构自己修改,达到个性化目的。
-
-`App.vue` 获得系统信息
-```
-onLaunch: function() {
-	uni.getSystemInfo({
-		success: function(e) {
-			// #ifndef MP
-			Vue.prototype.StatusBar = e.statusBarHeight;
-			if (e.platform == 'android') {
-				Vue.prototype.CustomBar = e.statusBarHeight + 50;
-			} else {
-				Vue.prototype.CustomBar = e.statusBarHeight + 45;
-			};
-			// #endif
-			// #ifdef MP-WEIXIN
-			Vue.prototype.StatusBar = e.statusBarHeight;
-			let custom = wx.getMenuButtonBoundingClientRect();
-			Vue.prototype.Custom = custom;
-			Vue.prototype.CustomBar = custom.bottom + custom.top - e.statusBarHeight;
-			// #endif		
-			// #ifdef MP-ALIPAY
-			Vue.prototype.StatusBar = e.statusBarHeight;
-			Vue.prototype.CustomBar = e.statusBarHeight + e.titleBarHeight;
-			// #endif
-		}
-	})
-},
-```
-
-`pages.json` 配置取消系统导航栏
-```
-"globalStyle": {
-	"navigationStyle": "custom"
-},
-```
-复制代码结构可以直接使用,注意全局变量的获取。
-
-使用封装,在`main.js` 引入 `cu-custom` 组件。
-```
-import cuCustom from './colorui/components/cu-custom.vue'
-Vue.component('cu-custom',cuCustom)
-```
-
-`page.vue` 页面可以直接调用了
-```
-<cu-custom bgColor="bg-gradual-blue" :isBack="true">
-	<block slot="backText">返回</block>
-	<block slot="content">导航栏</block>
-</cu-custom>
-```
-| 参数       | 作用   |类型    |  默认值 |
-| --------   | -----:  |-----:  | :----:  |
-| bgColor    | 背景颜色类名 |String  |   ''    |
-| isBack     | 是否开启返回 | Boolean |   false |
-| bgImage    | 背景图片路径 | String  |  ''     |
-
-| slot块       | 作用   |
-| --------   | -----:  |
-| backText    | 返回时的文字 | 
-| content     | 中间区域 | 
-| right    | 右侧区域(小程序端可使用范围很窄!)  | 
-
-
-------
-
-
-## 使用自定义Tabbar
-这部分暂时没有封装,思路可以参考下我的源码,原理是一个主页面引入多个页面,在主页面进行切换显示。这样可以解决切换时闪烁的问题。
-
-
-------
-
-
-## 更新日志
-
- * 2019年4月25日 v2.1.6
-    *  删除var变量 向下兼容安卓APP
-	*  优化单选等表单控件
-
- * 2019年4月25日 v2.1.5
-    *  优化图片上传
-    *  优化一些点击区域过小
-    *  优化图标旋转
-    *  优化demo显示
-    *  优化阴影
-    *  修复支付宝小程序编译出错
-
- * 2019年4月14日 v2.1.4
-    *  新增多种阴影
-	*  修复一些var属性的错误
-	*  修复轮播图控制点隐藏不了
-	*  修改图标类名
-	*  修复表单组件里上传图片 ios没有图片显示问题
-
- 
- * 2019年4月01日 v2.1.3
-    *  优化代码,支持支付宝小程序
-	*  textarea 样式还原
-
- * 2019年3月28日 v2.1.2
-	*  修复列表组件样式
-	*  优化主样式代码
-
- * 2019年3月27日 v2.1.1
-    *  新增多种扩展
-    *  优化堆叠轮播图
-    *  优化消息列表
-	*  优化导航栏的封装
-	*  修复卡片评论错位(3月27日16:32:17)
-
-* 2019年3月25日 v2.1.0
-    *  完成元素,组件移植
-	*  icon文件更改名称,避免图标冲突
-	*  针对不同端口做了优化
+# 商品规格
+show 显示/隐藏 option 参考cu-goods.js  按钮事件
+```html
+	<!-- 工具 -->
+		<cu-good :show.sync="modalCShow" :options="goods" @addcart='hanler' @buyclicked='handler'>
+		
+		</cu-good>
+```

+ 50 - 0
colorui/components/cu-bar.vue

@@ -0,0 +1,50 @@
+<template>
+	<view class="cu-bar-box">
+		<view class="cu-bar tabbar bg-black text-gray">
+			<view @click="handler(index)" v-for="(item, index) in value" :key="index" class="action" :class="{ 'text-orange': active == index }">
+				<view v-if="item.image" class="cuIcon-cu-image"><image :src="item.image"></image></view>
+				<view v-else :class="[item.icon]"></view>
+				<view>{{ item.label }}</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+// pages.json
+// tabBle :{ "custom":true,list:[]}
+import { barList } from '../config.js';
+export default {
+	props: {
+		active: { type: String / Number, default: 0 }
+	},
+	data() {
+		return {
+			value: barList
+		};
+	},
+	methods: {
+		handler(index) {
+			if (index == this.active) return false;
+			uni.switchTab({
+				url: '/' + this.value[index]['page']
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+.cu-bar-box {
+	min-height: 100upx;
+	height: calc(100rpx + env(safe-area-inset-bottom) / 2);
+	padding-bottom: calc(env(safe-area-inset-bottom) / 2);
+	.cu-bar {
+		position: fixed;
+		left: 0;
+		bottom: 0;
+		width: 100vw;
+		z-index: 99999;
+	}
+}
+</style>

+ 8 - 1
colorui/components/cu-custom.vue

@@ -5,6 +5,9 @@
 					<text class="cuIcon-back"></text>
 					<slot name="backText"></slot>
 				</view>
+				<view v-if="custom" class="action">
+					<slot name="custom" />
+				</view>
 				<view class="content" :style="[{top:StatusBar + 'px'}]">
 					<slot name="content"></slot>
 				</view>
@@ -15,7 +18,7 @@
 
 <script>
 	import {statusBarHeight,
-	CustomBarHeight} from "@/common/utils.js"
+	CustomBarHeight} from "@/colorui/config.js";
 	export default {
 		data() {
 			return {
@@ -49,6 +52,10 @@
 				type: String,
 				default: ''
 			},
+			custom:{
+				type: [Boolean, String],
+				default: false
+			}
 		},
 		methods: {
 			BackPage() {

+ 48 - 0
colorui/components/cu-evaluate.vue

@@ -0,0 +1,48 @@
+<template>
+	<view class="cu-evaluate padding-top bg-white">
+		<view class="flex align-center justify-between">
+		  <view class="flex align-center">
+			  <image lazy-load="true" style="width: 50upx;height: 50upx;border-radius: 50%;" :src="value.avator"></image>
+			  <text class="text-black text-bold margin-left-sm">{{value.nickname}}</text>
+			  <view class="margin-left-sm">
+			  	<cu-rate :value="value.rate" />
+			  </view>
+		  </view>
+		  <view class="text-grey">{{value.createTime}}</view>
+		</view>
+		<view class="text-grey padding-tb">
+			{{value.detail}}
+		</view>
+		<scroll-view v-if="value.imgs" class="flex" enable-flex style="height: 200upx;width: 100%;" scroll-x>
+			<view @click="preview(index)" v-for="(item,index) in value.imgs" :key="index" class="margin-right" >
+				<image style="width: 200upx;min-width: 200upx;height: 200upx;" :src="item.url" mode="aspectFill" v-if="item.type=='image'"></image>
+				<video style="width: 300upx;min-width: 300upx;height: 200upx;"  :src="item.url" autoplay loop muted show-play-btn="false" controls="false" objectFit="cover" v-if="item.type=='video'"></video>
+			</view>
+		</scroll-view>
+	</view>
+</template>
+
+<script>
+	import cuRate from "./cu-rate.vue";
+	export default{
+		components:{
+			cuRate
+		},
+		props:{
+			value:{
+				type:Object,default:()=>({})
+			}
+		},
+		methods:{
+			preview(index){
+				uni.previewMedia({
+					sources:this.value.imgs,
+					current:index
+				})
+			}
+		}
+	}
+</script>
+
+<style>
+</style>

+ 68 - 0
colorui/components/cu-evaluateA.vue

@@ -0,0 +1,68 @@
+<template>
+	<!-- 衍生物  已评价-->
+	<view class="cu-evaluateA  bg-white margin radius padding">
+		<view class="flex">
+			 <image class="radius margin-right-sm" style="width: 160upx;height: 160upx;min-width: 160upx;" lazy-load="true" :src="value.img" mode="aspectFit"></image>
+			 <view style="flex: auto;" class="padding-tb text-black cut">
+			 	{{value.name}}
+			 </view>
+		</view>
+		<view class="padding-top border">
+			<view class="flex justify-between align-center">
+				<view class="text-gray">{{value.create_time}}</view>
+				<button  @click="$emit('click',value)" class="cu-btn bg-red round">删除评价</button>
+			</view>
+			<view class="text-gray padding-tb">
+				{{value.detail}}
+			</view>
+			<scroll-view v-if="value.imgs" class="flex" enable-flex style="height: 200upx;width: 100%;" scroll-x>
+				<view @click="preview(index)" v-for="(item,index) in value.imgs" :key="index" class="margin-right" >
+					<image style="width: 200upx;min-width: 200upx;height: 200upx;" :src="item.url" mode="aspectFill" v-if="item.type=='image'"></image>
+					<video style="width: 300upx;min-width: 300upx;height: 200upx;"  :src="item.url" autoplay loop muted show-play-btn="false" controls="false" objectFit="cover" v-if="item.type=='video'"></video>
+				</view>
+			</scroll-view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props:{
+			value:{
+				type:Object,
+				default:()=>({})
+			}
+		},
+		methods:{
+			preview(index){
+				uni.previewMedia({
+					sources:this.value.imgs,
+					current:index
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.cu-evaluateA{
+		.cut{
+			overflow: hidden;
+			text-overflow: ellipsis;
+			display:-webkit-box;
+			-webkit-box-orient: vertical;
+			-webkit-line-clamp: 3;
+		}
+		.border{
+			position: relative;
+			&:before{
+				content: "";
+				position: absolute;
+				width: 100%;
+				left: 0;top: 0;
+				border-top: 1upx solid #bbb;
+				transform: scale(1,0.5);
+			}
+		}
+	}
+</style>

+ 47 - 0
colorui/components/cu-evaluateB.vue

@@ -0,0 +1,47 @@
+<template>
+	<!-- 衍生物 待评价 -->
+	<view class="cu-evaluateB bg-white margin radius padding">
+		<view class="flex">
+		  <image class="radius margin-right-sm" style="width: 160upx;height: 160upx;min-width: 160upx;" lazy-load="true" :src="value.img" mode="aspectFit"></image>
+		  <view style="flex:auto" class="content margin-right-sm">
+		  	<view class="text-black cut">{{value.name}}</view>
+			<view class="text-grey margin-top-xs">{{value.parameter}}</view>
+			<view v-if="value.custom" class="text-red margin-top-xs">{{value.custom}}</view>
+		  </view>
+		  <view style="min-width: 160upx;">
+		  	<button @click="$emit('click',value)" class="cu-btn bg-red round">评价有礼</button>
+		  </view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		props:{
+			value:{
+				type:Object,
+				default:()=>({})
+			}
+		},
+		data(){
+			return {
+				
+			}
+		},
+		methods:{
+			
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.cu-evaluateB{
+		.cut{
+			overflow: hidden;
+			text-overflow: ellipsis;
+			display:-webkit-box;
+			-webkit-box-orient: vertical;
+			-webkit-line-clamp: 2;
+		}
+	}
+</style>

+ 179 - 43
colorui/components/cu-good.vue

@@ -3,7 +3,7 @@
 		<cu-modalC :show.sync="value" custom="2">
 			<view style="height: 80vh;padding: 20upx;">
 				<!-- 详情 -->
-				<view class="cu-header padding-bottom">
+				<view style="min-height: 240upx;" class="cu-header padding-bottom">
 					<!-- 图片 -->
 					<view @click="previewImage(goods.index)" v-if="goods.main" class="shop-img" :style="{ backgroundImage: 'url(' + goods.main + ')' }"></view>
 					<!-- 商品数据 -->
@@ -11,7 +11,7 @@
 						<!-- 价格 -->
 						<view class="price text-price text-red"><cu-price :value="goods.price" size="64" /></view>
 						<!-- 剩余 -->
-						<view v-if="!goods.hide_stock" class="surplus text-gray margin-tb-xs">剩余{{ goods.stock_num }}件</view>
+						<view v-if="goods.hide_stock" class="surplus text-gray margin-tb-xs">剩余{{ goods.stock_num }}件</view>
 						<!-- 参数 -->
 						<view v-if="parameter.tip" class="parameter text-gray">{{ parameter.tip }}</view>
 					</view>
@@ -19,7 +19,7 @@
 				<!-- 参数  80vh-40upx-30upx-200upx-30upx-80upx -->
 				<scroll-view style="height:calc(80vh - 380upx)" scroll-y="true" class="cu-section">
 					<!-- 商品参数 -->
-					<view v-for="(item, index) in options.tree" :key="index" class="parameter-item padding-tb">
+					<view v-for="(item, index) in options.tree" :key="index" class="parameter-item padding-tb border">
 						<view class="parameter-label text-xl">{{ item.k }}</view>
 						<view class="parameter-content flex flex-wrap align-center">
 							<!-- 放大版 -->
@@ -29,7 +29,11 @@
 									v-for="(v, vi) in item.v"
 									:key="vi"
 									class="parameter-content-item-one text-center margin-top-sm margin-right padding-sm  light radius"
-									:class="{'bg-grey':!collection_keys[item.k_s],'bg-red':v.id==collection_keys[item.k_s],}"
+									:class="{
+										'bg-blue': collection_tree[item.k_s][v.id] && v.id != collection_keys[item.k_s],
+										'bg-red': collection_tree[item.k_s][v.id] && v.id == collection_keys[item.k_s],
+										'bg-gray': !collection_tree[item.k_s][v.id]
+									}"
 								>
 									<view class="parameter-content-item-img-one" v-if="item.largeImageMode" :style="{ backgroundImage: 'url(' + v.imgUrl + ')' }"></view>
 									<view class="margin-sm">{{ v.name }}</view>
@@ -38,11 +42,16 @@
 							</scroll-view>
 							<!-- 缩小版 -->
 							<view
-							@click="handler(item, v)"
+								@click="handler(item, v)"
 								v-else
 								v-for="(v, vi) in item.v"
 								:key="vi"
-								class="parameter-content-item flex align-center margin-tb-sm margin-right padding-sm bg-grey light radius"
+								class="parameter-content-item flex align-center margin-tb-sm margin-right padding-sm  light radius"
+								:class="{
+									'bg-blue': collection_tree[item.k_s][v.id] && v.id != collection_keys[item.k_s],
+									'bg-red': collection_tree[item.k_s][v.id] && v.id == collection_keys[item.k_s],
+									'bg-gray': !collection_tree[item.k_s][v.id]
+								}"
 							>
 								<view
 									class="parameter-content-item-img-two margin-right-sm"
@@ -53,15 +62,22 @@
 							</view>
 						</view>
 					</view>
+					<!-- 计步器 -->
+					<view class="flex justify-between align-center padding-tb border">
+						<view class="text-xl">购买数量</view>
+						<cu-stepper @change="val=>num=val" :value="num"  min="1" :max="goods.stock_num"/>
+					</view>
 					<!-- 添加操作 -->
 					<view style="position: relative;"><slot /></view>
 				</scroll-view>
 				<!-- 按钮 -->
 				<view class="cu-footer padding-top flex">
-					<view @click="$emit('addcart')" style="flex: 1;background:linear-gradient(to right, #ffd01e, #ff8917) ;" class="btns-left text-center text-white">
+					<view @click="addcart" style="flex: 1;background:linear-gradient(to right, #ffd01e, #ff8917) ;" class=" btns-left text-center text-white">
+						<text v-if="addcartLock" class="cuIcon-loading2 cuIconfont-spin "></text>
 						加入购物车
 					</view>
-					<view @click="$emit('buyclicked')" style="flex: 1;background: linear-gradient(to right, #ff6034, #ee0a24);" class="btns-right text-center text-white">
+					<view @click="buyclicked" style="flex: 1;background: linear-gradient(to right, #ff6034, #ee0a24);" class="btns-right text-center text-white">
+						<text v-if="buyclickedLock" class="cuIcon-loading2 cuIconfont-spin "></text>
 						立即购买
 					</view>
 				</view>
@@ -73,10 +89,12 @@
 <script>
 import cuModalC from './cu-modalC.vue';
 import cuPrice from './cu-price.vue';
+import cuStepper from "./cu-stepper.vue";
 export default {
 	components: {
 		cuPrice,
-		cuModalC
+		cuModalC,
+		cuStepper
 	},
 	props: {
 		show: { type: Boolean, default: true },
@@ -91,7 +109,6 @@ export default {
 		goods() {
 			var options = this.options,
 				_options = {};
-			console.log(options);
 			// 默认使用的商品id  this.collection_id > options.collection_id > options.list[0].id
 			var collection_id = this.collection_id
 				? this.collection_id
@@ -104,20 +121,30 @@ export default {
 			if (collection_id && options.list && options.list.length > 0 && options.tree && options.tree.length > 0) {
 				// 查找默认id库存位置
 				let listItem = options.list.find(item => item.id == collection_id);
-				if (!listItem) return _options;
-				let { id, price = 0, stock_num = 0, ...arg } = listItem;
-				_options = { price, stock_num };
-				// 查找图片所在位置
-				let treeItem = options.tree.find(item => item.largeImageMode);
-				if (!treeItem) return _options;
-				let { k_s, v } = treeItem; //显示图片的key 以及 位置
-				if (!(k_s && v && v.length > 0)) return _options;
-				_options['main'] = treeItem.v[arg[k_s]].imgUrl;
-				_options['index'] = arg[k_s]; //预览图片的坐标
-				// 获取预览图片
-				if (this.previewImgArray.length == 0) {
-					var previewImgArray = treeItem.v.map(item => item.previewImgUrl || item.imgUrl);
-					this.previewImgArray = previewImgArray;
+				if (Object.keys(listItem).length > 0) {
+					let { id, price = 0, stock_num = 0, ...arg } = listItem;
+					_options = { price, stock_num };
+					// 查找图片所在位置
+					let treeItem = options.tree.find(item => item.largeImageMode);
+					if (Object.keys(treeItem).length) {
+						let { k_s, v } = treeItem; //显示图片的key 以及 位置
+						if (k_s && v && v.length > 0) {
+							treeItem.v.some((item, index) => {
+								if (item.id == arg[k_s]) {
+									_options['main'] = item.previewImgUrl || item.imgUrl;
+									_options['index'] = index; //预览图片的坐标
+									return true;
+								} else {
+									return false;
+								}
+							});
+							// 获取预览图片
+							if (this.previewImgArray.length == 0) {
+								var previewImgArray = treeItem.v.map(item => item.previewImgUrl || item.imgUrl);
+								this.previewImgArray = previewImgArray;
+							}
+						}
+					}
 				}
 			} else {
 				// 给的默认
@@ -130,29 +157,28 @@ export default {
 				// 获取预览图片
 				if (this.previewImgArray.length == 0 && options.main) {
 					var previewImgArray = [options.main];
-					is.previewImgArray = previewImgArray;
+					this.previewImgArray = previewImgArray;
 				}
 			}
 			_options['hide_stock'] = options.hide_stock || false;
-			if(options.tree && options.tree.length>0){
-				let collection_tree={};
-				options.tree.forEach(treeItem=>treeItem.v.forEach(vItem=>collection_tree[treeItem.k_s]={id:vItem.id,lock:false}));
-				this.collection_tree=collection_tree;
-			}
+			if (Object.keys(this.collection_tree).length == 0) this.collection_tree = this.filterTree();
 			return _options;
 		},
 		// 参数
 		parameter() {
 			var options = this.options,
-				_options = {},collection_id=this.collection_id;
+				_options = {},
+				collection_id = this.collection_id,
+				collection_keys = this.collection_keys,
+				collection_keys_len = Object.keys(collection_keys).length;
 			// 当用户没有选 不允许默认的情况下
-			if (!collection_id && !options.root && options.tree && options.tree.length > 0) {
+			if (collection_keys_len == 0 && !collection_id && !options.root && options.tree && options.tree.length > 0) {
 				let tip = '请选择 ';
 				options.tree.forEach(item => (tip += item.k + ' '));
 				_options['tip'] = tip;
 			}
 			// 当用户没有选 允许默认的情况下
-			if (!collection_id && options.root && options.list && options.list.length > 0 && options.tree && options.tree.length > 0) {
+			if (collection_keys_len == 0 && !collection_id && options.root && options.list && options.list.length > 0 && options.tree && options.tree.length > 0) {
 				let tip = '';
 				// 默认选中的
 				let listItem = options.list.find(item => item.id == options.collection_id);
@@ -163,32 +189,97 @@ export default {
 				});
 				_options['tip'] = tip;
 			}
+			// 当用户尚在选取的情况下;
+			if (collection_keys_len > 0 && !collection_id && options.list && options.list.length > 0 && options.tree && options.tree.length > 0) {
+				let tip = '请选择 ';
+				options.tree.forEach(item => {
+					var treeItem = item['v'].find(v => v.id == collection_keys[item.k_s]);
+					if (!treeItem) tip += item['k'] + ' ';
+				});
+				_options['tip'] = tip;
+			}
+			if (collection_id && options.list && options.list.length > 0 && options.tree && options.tree.length > 0) {
+				let listItem = options.list.find(item => item.id == collection_id);
+				let tip = '';
+				let { id, price, stock_num, ...arg } = listItem;
+				options.tree.forEach(item => {
+					item['v'].find(v => v.id == arg[item.k_s]).name;
+					tip += item['v'].find(v => v.id == arg[item.k_s]).name + ' ';
+				});
+				_options['tip'] = tip;
+			}
 			return _options;
-		},
+		}
 	},
 	data() {
 		return {
 			value: true, //显示隐藏
 			// 商品
 			collection_id: '', //选中id
-			collection_keys:{},//选中参数
+			num:1,//购买数量
+			collection_keys: {}, //选中参数
 			// 商品参数集
-			collection_tree:{},
+			collection_tree: {},
 			// 预览数据
-			previewImgArray: []
+			previewImgArray: [],
+			// 按钮执行
+			addcartLock: false,
+			buyclickedLock: false
 		};
 	},
 	methods: {
+		// 添加购物车
+		addcart() {
+			if (this.addcartLock) return false;
+			this.addcartLock = true;
+			var collection_id = this.collection_id;
+			if (this.options.root && collection_id === '') collection_id = this.options.collection_id;
+			this.$emit('addcart', {collection_id,number:this.num}, () => (this.addcartLock = false));
+		},
+		// 立即购买
+		buyclicked() {
+			if (this.buyclickedLock) return false;
+			this.buyclickedLock = true;
+			var collection_id = this.collection_id;
+			if (this.options.root && collection_id === '') collection_id = this.options.collection_id;
+			this.$emit('buyclicked', {collection_id,number:this.num}, () => (this.buyclickedLock = false));
+		},
+		// 去除没有库存的参数
+		filterTree() {
+			let options = this.options;
+			let collection_tree = {};
+			if (options.tree && options.tree.length > 0) {
+				// 全部转化 默认true // 去除仓库没有的商品参数
+				options.tree.forEach(treeItem => {
+					collection_tree[treeItem.k_s] = {};
+					treeItem.v.forEach(vItem => {
+						let status = options.list.some(listItem => listItem[treeItem.k_s] == vItem.id);
+						collection_tree[treeItem.k_s][vItem.id] = status;
+					});
+				});
+			}
+			return collection_tree;
+		},
 		// 挑选参数
 		handler(item, v) {
-			let collection_keys=JSON.parse(JSON.stringify(this.collection_keys));
+			let collection_tree = this.collection_tree;
+			if (!collection_tree[item.k_s][v.id]) return false;
+			let collection_keys = JSON.parse(JSON.stringify(this.collection_keys));
 			// 双击取消
-			if(collection_keys[item.k_s] && collection_keys[item.k_s]==v.id){
-				collection_keys[item.k_s]=''
-			}else{
-				collection_keys[item.k_s]=v.id;
+			if (collection_keys[item.k_s] && collection_keys[item.k_s] == v.id) {
+				collection_keys[item.k_s] = '';
+			} else {
+				collection_keys[item.k_s] = v.id;
+			}
+			var _collection_keys = Object.keys(collection_keys);
+			this.collection_keys = collection_keys;
+			// 针对已选中的参数选中对应类别的id;
+			var listItem = this.options.list.find(it => _collection_keys.every(key => collection_keys[key] == it[key]));
+			if (_collection_keys.length == this.options.tree.length && listItem) {
+				this.collection_id = listItem.id;
+			} else {
+				this.collection_id = '';
 			}
-			this.collection_keys=collection_keys;
 		},
 		// 图片预览
 		previewImage(index) {
@@ -199,6 +290,39 @@ export default {
 				indicator: 'number'
 			});
 		}
+	},
+	watch: {
+		collection_keys: {
+			// 针对已选参数进行过滤筛选
+			handler(newVal, oldVal) {
+				if (newVal != oldVal) {
+					let collection_tree = this.filterTree();
+					let collection_tree_keys = [];
+					let newValArr = Object.entries(newVal);
+					let includeArr = [];
+					newValArr.forEach(items => (includeArr = includeArr.concat(this.options.list.filter(item => item[items[0]] == items[1]))));
+					// 去重
+					includeArr = includeArr.filter((item, index) => includeArr.findIndex(it => JSON.stringify(it) == JSON.stringify(item)) === index);
+					// 二重
+					if (includeArr.length != 0) {
+						collection_tree = Object.fromEntries(
+							Object.entries(collection_tree).map(it => {
+								it[1] = Object.fromEntries(
+									Object.entries(it[1]).map(em => {
+										let status = includeArr.some(item => item[it[0]] == em[0]);
+										em[1] = status;
+										return em;
+									})
+								);
+								return it;
+							})
+						);
+					}
+					this.collection_tree = collection_tree;
+				}
+			},
+			deep: true
+		}
 	}
 };
 </script>
@@ -261,6 +385,18 @@ export default {
 			background-size: cover;
 		}
 	}
+	.border {
+		position: relative;
+		&::after {
+			content: '';
+			border-bottom: 1upx solid #ccc;
+			position: absolute;
+			width: 100%;
+			bottom: 0;
+			left: 0;
+			transform: scaleY(0.5);
+		}
+	}
 	.cu-footer {
 		.btns-left,
 		.btns-right {

+ 1 - 1
colorui/components/cu-loading-page.vue

@@ -11,7 +11,7 @@
 
 <script>
 import logo from '@/static/logo.png';
-import { statusBarHeight, CustomBarHeight } from '@/common/utils.js';
+import { statusBarHeight, CustomBarHeight } from '../../config.js';
 export default {
 	props: {
 		show: { type: Boolean, default: true }

+ 1 - 1
colorui/components/cu-price.vue

@@ -8,7 +8,7 @@
 <script>
 	export  default{
 		props:{
-		value:{type:String/Number,default:()=>''},
+		value:{type:String/Number,default:()=>0},
 		size:{tpe:String/Number,default:()=>32}
 		},
 		filters:{

+ 16 - 0
colorui/components/cu-rate.vue

@@ -0,0 +1,16 @@
+<template>
+	<view class="cu-rate flex">
+		<text @click="$emit('change',index+1)" v-for="(item,index) in 5" :class="{'cuIcon-favor lg text-gray' : index >= value ,'cuIcon-favorfill lg text-red' :index<value }"></text>
+	</view>
+</template>
+
+<script>
+	export default {
+	  props:{
+		  value:{type:String/Number,default:0}
+	  }
+	}
+</script>
+
+<style>
+</style>

+ 33 - 0
colorui/components/cu-scrollView.vue

@@ -0,0 +1,33 @@
+<template>
+	<scroll-view @scrolltolower="$emit('scrolltolower')" refresher-enabled @refresherpulling="refresherpulling" @scroll="scrollFunc"  :refresher-triggered="triggered" scroll-with-animation :style="{height}" scroll-y="true" >
+		<slot />
+	</scroll-view>
+</template>
+
+<script>
+	export default {
+		props:{
+			height:{type:String,default:'100vh'}
+		},
+		data(){
+			return {
+				triggered:false
+			}
+		},
+		methods:{
+			async refresherpulling(){
+				this.triggered=true;
+				await this.$emit(refresherpulling);
+				this.triggered=false;
+			},
+			scrollFunc(e){
+				
+			}
+		}
+	}
+
+	
+</script>
+
+<style>
+</style>

+ 66 - 0
colorui/components/cu-stepper.vue

@@ -0,0 +1,66 @@
+<template>
+	<view class="cu-stepper flex align-center">
+		<button :disabled="mindis" @click="handler(-1)" class="cu-btn text-xxl">
+			<text style="transform: translateY(-5upx);">-</text>
+		</button>
+		<input @input="input" :value="vr" type="number" />
+		<button :disabled="maxdis" @click="handler(1)" class="cu-btn text-xxl">+</button>
+	</view>
+</template>
+
+<script>
+export default {
+	props: {
+		value: { type: Number/String, value: 1 },
+		max: { type: Number / String, value: 1000000 },
+		min: { type: Number / String, value: 1}
+	},
+	computed:{
+		mindis(){
+			let min =this.min || 1;
+			return this.vr==min
+		},
+		maxdis(){
+			let max=this.max || 1000000;
+			return this.vr==max
+		}
+	},
+	data() {
+		return {
+			vr:this.value || 1
+		};
+	},
+	methods: {
+		input(e) {
+			let value= e.detail.value * 1;
+			if (this.max ) value = value > this.max * 1 ? this.max * 1 : value;
+			if (this.min) value = value < this.min * 1 ? this.min * 1 : value;
+			this.vr=value;
+			this.$emit('change', value);
+		},
+		handler(val) {
+			let value=  this.vr*1 || 1;
+			value += val*1;
+			if (this.max) value = value > this.max * 1 ? this.max * 1 : value;
+			if (this.min) value = value < this.min * 1 ? this.min * 1 : value;
+			this.vr=value;
+			this.$emit('change', value);
+		}
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+.cu-stepper {
+	input {
+		background-color: #f0f0f0;
+		width: 100upx;
+		margin: 0 5upx;
+		padding-left: 10upx;
+		padding-right: 10upx;
+		text-align: center;
+		height: 65upx !important;
+		border-radius: 5upx;
+	}
+}
+</style>

+ 32 - 0
colorui/components/cu-swiper.vue

@@ -0,0 +1,32 @@
+<template>
+	<swiper class="screen-swiper square-dot" indicator-dots="true" circular="true" autoplay="true" interval="5000" duration="500">
+	  <swiper-item @click="handler(index)" v-for="(item,index) in value" :key="index">
+	    <image  :src="item.url" mode="aspectFill" v-if="item.type=='image'"></image>
+	    <video  :src="item.url" autoplay loop muted show-play-btn="false" controls="false" objectFit="cover" v-if="item.type=='video'"></video>
+	  </swiper-item>
+	</swiper>
+</template>
+
+<script>
+	export default {
+		props:{
+			value:{type:Array,default:()=>([])}
+		},
+		data(){
+			return {
+				
+			}
+		},
+		methods:{
+			handler(index){
+				uni.previewMedia({
+					sources:this.value,
+					current:index
+				})
+			}
+		}
+	}
+</script>
+
+<style>
+</style>

+ 127 - 0
colorui/components/cu-tab.vue

@@ -0,0 +1,127 @@
+<template>
+	<view class="cu-list">
+		<scroll-view
+			id="cu-list"
+			style="width: 100%;"
+			@scroll="scrollFunc"
+			:scroll-left="scrollLeft"
+			scroll-with-animation
+			enable-flex
+			class="cu-list-content flex bg-white"
+			:class="{'fixed':fixed}"
+			:style="{top:top}"
+			scroll-x="true"
+		>
+			<view
+				class="item text-center padding-lr"
+				v-for="(item, index) in list"
+				@click="change(index)"
+				:id="'cu-list-' + index"
+				style="line-height: 60upx;box-sizing: border-box;"
+			>
+				{{ item.label }}
+			</view>
+			<!-- 下标 -->
+			<view :style="{ left: barLeft + 'px', width: barWidth + 'px' }" class="bar"></view>
+		</scroll-view>
+	</view>
+</template>
+
+<script>
+export default {
+	props: {
+		value: { type: String / Number, default: '0' },
+		list: { type: Array, default: () => [] },
+		fixed:{tryp:Boolean,default:false},
+		top:{type:String,default:'0px'}
+	},
+	data() {
+		return {
+			scrollLeft: 0,
+			moveTo: 0, //滚动轴的left
+			// 下标
+			barLeft: 0,
+			barWidth: 0
+		};
+	},
+	onPageShow() {
+		this.getRect(this.value);
+	},
+	methods: {
+		scrollFunc(e) {
+			if (e) this.moveTo = e.detail.scrollLeft;
+		},
+		async getRect(key) {
+			// scrollview的宽度
+			let scrollDom = await this.dom('#cu-list');
+			let scrollWidth = scrollDom.width;
+			// 计算下标的位置
+			let widthList = [],
+				barLeft = 0;
+			this.list.some((item, index) => {
+				widthList.push(this.dom(`#cu-list-${index}`));
+				if (index == key) return true;
+				return false;
+			});
+			widthList = await Promise.all(widthList);
+			let subLeft = 0,
+				subWidth = 0;
+			widthList.forEach((item, index, arr) => {
+				if (index < arr.length - 1) barLeft += item.width;
+				if (index == arr.length - 1) {
+					this.barWidth = item.width / 2;
+					barLeft += item.width / 4;
+					subLeft = item.left;
+					subWidth = item.width / 2;
+				}
+			});
+			// 计算滚动
+			this.barLeft = barLeft;
+			this.scrollLeft = subLeft - scrollWidth / 2 + this.moveTo + subWidth;
+		},
+
+		dom(ele) {
+			return new Promise((resolve, reject) => {
+				this.createSelectorQuery()
+					.select(ele)
+					.boundingClientRect(rect => {
+						resolve(rect);
+					})
+					.exec();
+			});
+		},
+		change(index) {
+			if (index == this.value) return false;
+			this.$emit('change', index, this.value[index]);
+			this.getRect(index);
+		}
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+.cu-list {
+	height: 60upx;
+	.cu-list-content {
+		position: relative;
+		height: 60upx;
+		width: 100vw;
+		flex-wrap: nowrap;
+		.item {
+			white-space: nowrap;
+		}
+		.bar {
+			transition: left 0.3s linear;
+			border-bottom: 6upx solid #f03;
+			position: absolute;
+			top: 54upx;
+			z-index: 100;
+		}
+	}
+	.fixed{
+		position: fixed !important;
+		z-index: 9999;
+		left: 0;
+	}
+}
+</style>

+ 69 - 0
colorui/components/cu-treeSelectA.vue

@@ -0,0 +1,69 @@
+<template>
+	<view class="cu-treeSelectA VerticalBox">
+		<scroll-view class="VerticalNav nav" scroll-y scroll-with-animation :scroll-top="VerticalNavTop" :style="{ height }">
+			<view class="cu-item" :class="{ 'text-green cur': index == TabCur }" v-for="(item, index) in 10" :key="index" @click="tabSelect(index)" >Tab-{{ item }}</view>
+		</scroll-view>
+	</view>
+</template>
+
+<script>
+export default {
+	props: {
+		type: String,
+		default: '100vh'
+	},
+	data() {
+		return {
+			VerticalNavTop: 0,
+			TabCur: 0,
+			MainCur:0,
+		};
+	},
+	methods: {
+		tabSelect(index) {
+			this.TabCur=index;
+			this.MainCur=index;
+			this.VerticalNavTop=(index-1)*50
+		}
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+	.VerticalBox{
+		display: flex;
+		.VerticalNav {
+			.nav {
+				width: 200rpx;
+				white-space: initial;
+				.cu-item {
+					width: 100%;
+					text-align: center;
+					background-color: #fff;
+					margin: 0;
+					border: none;
+					height: 50px;
+					position: relative;
+					.cur {
+						background-color: #f1f1f1;
+						&::after {
+							content: '';
+							width: 8rpx;
+							height: 30rpx;
+							border-radius: 10rpx 0 0 10rpx;
+							position: absolute;
+							background-color: currentColor;
+							top: 0;
+							right: 0rpx;
+							bottom: 0;
+							margin: auto;
+						}
+					}
+				}
+			}
+		}
+		.VerticalMain{
+		  background-color: #f1f1f1;
+		}
+	}
+</style>

+ 86 - 0
colorui/components/cu-treeSelectB.vue

@@ -0,0 +1,86 @@
+<template>
+	<view class="cu-treeSelectB flex">
+		<scroll-view scroll-with-animation :scroll-top="VerticalNavTop" class="bg-white margin-right" scroll-y="true" :style="{ height, width: labelWidth, minWidth: labelWidth }">
+			<view @click="handler(index)" :style="{ height: labelHeight + 'px' }" class="label text-cut flex align-center justify-center" :class="{'cur':key==index}" v-for="(item, index) in labelCom" :key="index">{{ item.label }}</view>
+		</scroll-view>
+		<scroll-view  lower-threshold="300" scroll-with-animation :scroll-top='VerticalNavTopB' @scrolltolower="$emit('scrolltolower')" :style="{ height}" scroll-y="true" >
+			<slot />
+		</scroll-view>
+	</view>
+</template>
+
+<script>
+export default {
+	props: {
+		value: {
+			type: Array,
+			default: () => []
+		},
+		height: {
+			type: String,
+			default: '100vh'
+		},
+		labelWidth: {
+			type: String,
+			default: '200rpx'
+		}
+	},
+	computed: {
+		labelCom() {
+			let value = this.value;
+			return value;
+		},
+		VerticalNavTop(){
+			var key=this.key;
+			var labelHeight=this.labelHeight;
+			return key * 50
+		},
+		VerticalNavTopB(){
+			var key=this.key;
+			return 0
+		}
+	},
+	data() {
+		return {
+			labelHeight: 50,
+			key:0,
+		};
+	},
+	methods:{
+		handler(key){
+			this.key=key;
+			let item=this.value[key];
+			this.$emit("change",item)
+		}
+	}
+	
+};
+</script>
+
+<style lang="scss" scoped>
+.cu-treeSelectB {
+	white-space: initial;
+	.label {
+		width: 100%;
+		background-color: #fff;
+		margin: 0;
+		border: none;
+		position: relative;
+	}
+	.cur {
+		background-color: #f1f1f1;
+		&::after {
+			content: '';
+			width: 8rpx;
+			height: 30rpx;
+			border-radius: 10rpx 0 0 10rpx;
+			position: absolute;
+			background-color: #f03;
+			top: 0;
+			right: 0rpx;
+			bottom: 0;
+			margin: auto;
+		}
+	}
+}
+</style>

+ 39 - 0
colorui/config.js

@@ -0,0 +1,39 @@
+//获取系统信息 
+export const getSystemInfoSync = uni.getSystemInfoSync();
+//获取系统状态栏的高度
+export const statusBarHeight = getSystemInfoSync.statusBarHeight;
+// 小程序的胶囊
+export const getMenuButtonBoundingClientRect = (uni.getMenuButtonBoundingClientRect && uni
+	.getMenuButtonBoundingClientRect()) || null;
+//获取系统导航栏高度
+export const CustomBarHeight = getMenuButtonBoundingClientRect ? getMenuButtonBoundingClientRect.bottom +
+	getMenuButtonBoundingClientRect.top - statusBarHeight : statusBarHeight + 50;
+
+
+// 主包导航栏
+export  const barList= [
+				{
+					label: '首页',
+					page: 'pages/index/index',
+					icon: 'cuIcon-home',
+					image: ''
+				},
+				{
+					label: '商品',
+					page: 'pages/commodity/index',
+					icon: 'cuIcon-similar',
+					image: ''
+				},
+				{
+					label: '购物车',
+					page: 'pages/shoppingCart/index',
+					icon: 'cuIcon-cart',
+					image: ''
+				},
+				{
+					label: '我的',
+					page: 'pages/login/index',
+					icon: 'cuIcon-people',
+					image: ''
+				}
+			]

+ 41 - 11
colorui/cu-goods.js

@@ -1,7 +1,7 @@
 export default {
 	// 所有sku规格类目与其值的从属关系,比如商品有颜色和尺码两大类规格,颜色下面又有红色和蓝色两个规格值。
 	// 可以理解为一个商品可以有多个规格类目,一个规格类目下可以有多个规格值。
-	root:true,//允许默认立即购买  collection_id存在   true 默认
+	root:false,//允许默认立即购买、无规格商品  collection_id存在   true 默认
 	tree: [
 		{
 			k: '颜色', // 规格类目名称
@@ -27,10 +27,19 @@ export default {
 			k_s: "s2",
 			v: [{
 				id: '1',
-				name: ""
+				name: "38"
 			}, {
 				id: "2",
-				name: '小'
+				name: '39'
+			},{
+				id: "3",
+				name: '40'
+			},{
+				id: "4",
+				name: '41'
+			},{
+				id: "5",
+				name: '42'
 			}]
 		}
 	],
@@ -41,17 +50,38 @@ export default {
 		s2: '1',
 		price: 100, // 价格(单位分)
 		stock_num: 110 // 当前 sku 组合对应的库存
-	}, {
-		id: 2260,
-		s1: '1',
-        s2:'2',
-		price: 200, // 价格(单位分)
+	}, 
+	{
+		id: 2260, // skuId
+		s1: '1', // tree k_s:s1 v的id:1
+		s2: '2',
+		price: 110, // 价格(单位分)
+		stock_num: 110 // 当前 sku 组合对应的库存
+	}, 
+	{
+		id: 2261, // skuId
+		s1: '1', // tree k_s:s1 v的id:1
+		s2: '3',
+		price: 110, // 价格(单位分)
+		stock_num: 110 // 当前 sku 组合对应的库存
+	},
+	{
+		id: 2262,
+		s1: '2',
+	    s2:'2',
+		price: 210, // 价格(单位分)
+		stock_num: 10 // 当前 sku 组合对应的库存
+	},
+	{
+		id: 2263,
+		s1: '2',
+        s2:'4',
+		price: 250, // 价格(单位分)
 		stock_num: 10 // 当前 sku 组合对应的库存
 	}],
 	main:'https://b.yzcdn.cn/vant/sku/shoes-3.png',//默认图片
 	price: '1.00', // 默认价格(单位元)
 	stock_num: 227, // 商品总库存
-	collection_id: 2260, // 默认使用的商品id
-	none_sku: false, // 是否无规格商品
-	hide_stock: false // 是否隐藏剩余库存
+	collection_id: 2259, // 默认使用的商品id
+	hide_stock: true // 是否隐藏剩余库存
 }

+ 40 - 0
common/device/index.js

@@ -0,0 +1,40 @@
+//获取系统信息 
+export const getSystemInfoSync = uni.getSystemInfoSync();
+//获取系统状态栏的高度
+export const statusBarHeight = getSystemInfoSync.statusBarHeight;
+// 小程序的胶囊
+export const getMenuButtonBoundingClientRect = (uni.getMenuButtonBoundingClientRect && uni
+	.getMenuButtonBoundingClientRect()) || null;
+//获取系统导航栏高度
+export const CustomBarHeight = getMenuButtonBoundingClientRect ? getMenuButtonBoundingClientRect.bottom +
+	getMenuButtonBoundingClientRect.top - statusBarHeight : statusBarHeight + 50;
+// 定位
+// 查看权限
+export const getSetting=()=>{
+	return new Promise((resolve,reject)=>{
+		uni.getSetting({
+			success:res=>resolve(res),
+			fail:err=>reject(err)
+		})
+	})
+}
+// 授权
+export const openSetting=()=>{
+	return new Promise((resolve,reject)=>{
+		uni.openSetting({
+			success:res=>resolve(res),
+			fail:err=>reject(err)
+		})
+	})
+}
+
+// 获取地址
+export const chooseLocation=()=>{
+	return new Promise((resolve,reject)=>{
+		uni.chooseLocation({
+			success:res=>resolve(res),
+			fail:err=>reject(err)
+		})
+	})
+}
+

+ 0 - 0
utils/format/index.js → common/format/index.js


+ 2 - 2
utils/request/index.js → common/request/index.js

@@ -22,7 +22,7 @@ const RESPONSEINTERCPTOR = function(response) {
 const ERRINTERCPTOR = function(err) {
 	uni.showModal({
 		title:"警告",
-		content:`请求失败:`,
+		content:`请求失败:${err.message || JSON.stringify(err)}`,
 		confirmText:"关闭",
 		showCancel:false,
 		confirmColor:"#fbbd08"
@@ -42,7 +42,7 @@ export default function(options) {
 	return new Promise((resolve, reject) => {
 		uni.request({
 			...REQUESTINTERCPTOR(options),
-			success: res => resolve(RESPONSEINTERCPTOR(res)),
+			success: res => resolve(RESPONSEINTERCPTOR(res)),
 			fail: err => reject(ERRINTERCPTOR(err))
 		})
 	})

+ 81 - 0
detailPages/evaluate/index.vue

@@ -0,0 +1,81 @@
+<template>
+	<view class="evaluate bg-white">
+		<!-- header -->
+		<cu-custom isBack bgColor="bg-gradual-blue"><view slot="content">评价(999+)</view></cu-custom>
+		<!-- section -->
+		<view class="section padding-lr">
+			<view v-for="(item,index) in value" :key="index" class="item padding-bottom border">
+				<cu-evaluate  :value="item"/>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		data(){
+			return {
+				value:[
+					{
+						avator:"https://gd-hbimg.huaban.com/1f50f2135ba51e4b9aa20caef41860b15005c9386f0b-LxqWsh_fw658/format/webp",
+						nickname:"用户昵称",
+						rate:3,
+						createTime:"20220622 17:05:30",
+						detail:"项目 'demo' 编译成功。前端运行日志,请另行在小程序开发工具的控制台查看。",
+						imgs:[
+							{
+								id: 0,
+								type: 'video',
+								url: 'https://st0.dancf.com/gaoding/gaoding/229e7928-fb34-4a0c-b12b-b26fc0aba91453332268.mp4'
+							},
+							{
+								id: 1,
+								type: 'image',
+								url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big84001.jpg'
+							},
+							{
+								id: 2,
+								type: 'image',
+								url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big39000.jpg'
+							},
+							{
+								id: 3,
+								type: 'image',
+								url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big10001.jpg'
+							},
+							{
+								id: 4,
+								type: 'image',
+								url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big25011.jpg'
+							},
+							{
+								id: 5,
+								type: 'image',
+								url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big21016.jpg'
+							},
+							{
+								id: 6,
+								type: 'image',
+								url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big99008.jpg'
+							}]
+					}
+				]
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.evaluate{
+		.border{
+			position: relative;
+			&::after{
+				content:"";
+				width: 100%;
+				position: absolute;left: 0;bottom: 0;
+				border-bottom: 1upx solid #aaa;
+				transform: scale(1,0.5);
+			}
+		}
+	}
+</style>

+ 160 - 0
loginPages/addEvalute/index.vue

@@ -0,0 +1,160 @@
+<template>
+	<view class="addEvalute">
+		<!-- header -->
+		<cu-custom isBack bgColor="bg-gradual-blue"><view slot="content">评价</view></cu-custom>
+		<!-- section -->
+		<view class="margin-bottom padding flex bg-white">
+			<image class="radius margin-right-sm" style="width: 160upx;height: 160upx;min-width: 160upx;" lazy-load="true" src="https://gd-hbimg.huaban.com/1f50f2135ba51e4b9aa20caef41860b15005c9386f0b-LxqWsh_fw658/format/webp" mode="aspectFit"></image>
+			<view style="flex: auto;" class="padding-tb text-black cut">商品名称</view>
+		</view>
+		<view class="flex bg-white padding-lr padding-top  align-center">
+			<view class="text-bold text-black margin-right">商品评价</view>
+			<cu-rate value="3" />
+		</view>
+		<view class="cu-form-group">
+			<textarea
+				:value="content"
+				style="min-height: 250rpx;"
+				auto-focus
+				auto-height
+				maxlength="300"
+				@input="textareaAInput"
+				placeholder="产品性价比 / 版型风格 / 尺码大小"
+			></textarea>
+		</view>
+		<view class="bg-white text-right padding">{{ content.length }}/300</view>
+		<view class="bg-white padding-lr padding-bottom flex justify-between">
+			<view class="text-black">添加图片 / 视频</view>
+			<view class="">{{ imgList.length }}/5</view>
+		</view>
+		<view class="cu-form-group">
+			<view class="grid col-4 grid-square flex-sub">
+				<view class="bg-img" v-for="(item, index) in imgList" :key="index" @click="ViewImage(item)">
+					<image :src="item" mode="aspectFill"></image>
+					<view class="cu-tag bg-red" @click.stop="DelImg(index)"><text class="cuIcon-close"></text></view>
+				</view>
+				<view class="solids" @click="ChooseImage" v-if="imgList.length < 5"><text class="cuIcon-cameraadd"></text></view>
+			</view>
+		</view>
+		<!-- <view class="cu-form-group">
+			<view class="title">同意遵守平台约定</view>
+			<checkbox-group @change="checboxFunc"><checkbox value="root" class="round blue" :checked="'root' | checkboxFilter(checkbox)"></checkbox></checkbox-group>
+		</view> -->
+		<button @click="submitFunc" style="height: 100rpx;" class="margin cu-btn bg-blue block " :loading="loading">提交评论</button>
+		<!-- 工具 -->
+		<cu-modalA title="提示" :show.sync="err_show" content="帖子描述不能为空,并且必须遵守平台约定." />
+	</view>
+</template>
+
+<script>
+export default {
+	filters: {
+		checkboxFilter(value, checkbox) {
+			var itemOptions = checkbox.filter(item => item.name == value);
+			if (itemOptions.length == 0) return false;
+			return itemOptions[0].value;
+		}
+	},
+	computed: {},
+	data() {
+		return {
+			loading: false,
+			root: false,
+			// 表单
+			checkbox: [
+				{
+					name: 'root',
+					value: false
+				}
+			],
+			content: '',
+			imgList: [],
+			err_show: false
+		};
+	},
+	methods: {
+		// 多行文本框输入
+		textareaAInput(e) {
+			this.content = e.detail.value;
+		},
+
+		// 挑选图片
+		ChooseImage() {
+			uni.chooseMedia({
+				count: 5,
+				mediaType: ['image', 'video'],
+				sourceType: ['album', 'camera'],
+				success: res => {
+					let len = res.tempFiles.length + this.imgList.length;
+					if (len <= 5) this.imgList = this.imgList.concat(res.tempFiles);
+				}
+			});
+		},
+		// 预览
+		ViewImage(value) {
+			uni.previewImage({
+				urls: this.imgList,
+				current: value
+			});
+		},
+		// 删除指定图片
+		DelImg(value) {
+			var imgList = JSON.parse(JSON.stringify(this.imgList));
+			imgList.splice(value, 1);
+			this.imgList = imgList;
+		},
+		// 提交
+		async submitFunc() {
+			this.loading = true;
+			try {
+				if (!this.content || !this.checkbox[0].value) {
+					this.err_show = true;
+					return false;
+				}
+				// 上传图片
+				var imgList = this.imgList.map(item => {
+					// 文件名称
+					let fileName = item.lastIndexOf('/');
+					fileName = item.substring(fileName + 1, item.length);
+					fileName = new Date().getDate() + '_' + fileName;
+					return uniCloud.uploadFile({
+						filePath: item,
+						cloudPath: fileName,
+						fileType: 'image'
+					});
+				});
+				var result = await Promise.all(imgList);
+				// 处理远程图片路径
+				// https://vkceyugu.cdn.bspapp.com/VKCEYUGU-1ae627f1-d0fe-43cf-a7a6-6f30c5e8aadc/XXX.png
+				result = result.map(item => item.fileID.substring(item.fileID.lastIndexOf('/') + 1, item.fileID.length));
+				var inviation = this.$store.state.inviation || [];
+				// var res=await api.uploadItem({imgList:result,content:this.content,_id:this.$store.state._id,inviation});
+				if (res.result.code == 1) throw res.result.msg;
+				if (res.result.inviation_id) {
+					inviation.unshift(res.result.inviation_id);
+					this.$store.dispatch('userInfo', { inviation });
+				}
+				uni.navigateBack({
+					delta: 1
+				});
+			} catch (err) {
+				console.log(err);
+			} finally {
+				this.loading = false;
+			}
+		}
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+	.addEvalute{
+		.cut{
+			overflow: hidden;
+			text-overflow: ellipsis;
+			display:-webkit-box;
+			-webkit-box-orient: vertical;
+			-webkit-line-clamp: 2;
+		}
+	}
+</style>

+ 106 - 0
loginPages/addaddress/index.vue

@@ -0,0 +1,106 @@
+<template>
+	<view class="addaddress">
+		<!-- header -->
+		<cu-custom isBack bgColor="bg-gradual-blue"><view slot="content">{{status ? "修改地址" : '新增地址'}}</view></cu-custom>
+		<!-- section -->
+		<view class="section">
+			<form>
+				<view class="cu-form-group">
+					<view class="title">姓名</view>
+					<input :value="name" @input="e=>name=e.detail.value" placeholder="收货人姓名" />
+				</view>
+				<view class="cu-form-group">
+					<view class="title">电话</view>
+					<input @input="e=>tel=e.detail.value" placeholder="收货人电话" />
+					<view class="cu-capsule radius">
+						<view class="cu-tag bg-blue">+86</view>
+						<view class="cu-tag line-blue">中国大陆</view>
+					</view>
+				</view>
+				<view class="cu-form-group">
+					<view class="title">收货地址</view>
+					<picker mode="region" @change="e=>region=e.detail.value" :value="region">
+						<view v-if="region.length>0"  class="picker">{{ region[0] }},{{ region[1] }},{{ region[2] }}</view>
+					    <view v-else class="text-grey picker">
+					     选择省 / 市 / 区
+					    </view>
+					</picker>
+				</view>
+				<view class="cu-form-group align-start">
+					<view class="title">详细地址</view>
+					<textarea maxlength="-1" :value="textarea" @input="e=>textarea=e.detail.value" placeholder="街道门牌/楼层房间号等信息"></textarea>
+					<text @click="addSelect" class="margin-left margin-top cuIcon-locationfill text-orange"></text>
+				</view>
+				<view class="cu-form-group">
+					<view class="title">设置为默认收货地址</view>
+					<switch @change="e=>checked=e.detail.value" :checked="checked"></switch>
+				</view>
+			</form>
+		</view>
+		<!-- footer -->
+		<view class="footer">
+			<view class="footer-content padding bg-white"><button class="cu-btn  block">保存</button></view>
+		</view>
+	</view>
+</template>
+
+<script>
+import {getSetting,openSetting,chooseLocation} from "@/common/device/index.js"
+export default {
+	data() {
+		return {
+			status:false,//false 新增 true 修改
+			// 参数
+			name:"",
+			tel:"",
+			checked: true,
+			region: [],
+			textarea: ''
+		};
+	},
+	methods: {
+		async addSelect(){
+			try{
+				var address;
+				var res=await getSetting();
+				if(res.authSetting['scope.userLocation']===false){
+					let result=await openSetting();
+					if(result.authSetting['scope.userLocation']===true) address=await chooseLocation();
+				}
+				if(res.authSetting['scope.userLocation.userLocation'] === undefined || result.authSetting['scope.userLocation.userLocation'] === true){
+					address=await chooseLocation();
+				}
+				this.textarea=address.address;
+			}catch(err){
+				console.log(err.message)
+			}
+		},
+	},
+	onLoad(options) {
+		let  {status}=options;
+		this.status = status || false;
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+.addaddress {
+	.footer {
+		height: 140upx;
+		height: calc(140rpx + env(safe-area-inset-bottom) / 2);
+		padding-bottom: calc(env(safe-area-inset-bottom) / 2);
+		.footer-content {
+			position: fixed;
+			bottom: 0;
+			left: 0;
+			width: 100%;
+			button {
+				background-color: #ee0a24;
+				color: #fff;
+				height: 80upx;
+				border-radius: 80upx;
+			}
+		}
+	}
+}
+</style>

+ 97 - 0
loginPages/addressList/index.vue

@@ -0,0 +1,97 @@
+<template>
+	<view class="addressList">
+		<!-- header -->
+		<cu-custom isBack bgColor="bg-gradual-blue"><view slot="content">地址列表</view></cu-custom>
+		<!-- section -->
+		<view class="section">
+			<radio-group @change="radioChange">
+				<view v-for="(item, index) in value" :key="index" class="item bg-white margin padding radius flex align-center">
+					<view class="margin-right-sm"><radio style="transform: scale(0.6);" class="radio" :value="item.id" :checked="item.isDefault" /></view>
+					<view style="flex: auto;">
+						<view class="flex align-center text-xl">
+							<text class="margin-right-sm text-black">{{ item.name }}</text>
+							<text class="margin-right-sm text-black">{{ item.tel }}</text>
+							<text v-if="item.isDefault" class="cu-tag text-white round sm" style="background-color:#ee0a24;">默认</text>
+						</view>
+						<view class="a">{{ item.address }}</view>
+					</view>
+					<view class="margin-left-sm"><text class="cuIcon-writefill text-xxl text-gray"></text></view>
+				</view>
+			</radio-group>
+		</view>
+		<!-- footer -->
+		<view class="footer">
+			<view class="footer-content padding bg-white"><button @click="handler" class="cu-btn  block">新增地址</button></view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			value: [
+				{
+					id: '1',
+					name: '张三',
+					tel: '13000000000',
+					address: '浙江省杭州市西湖区文三路 138 号东方通信大厦 7 楼 501 室',
+					isDefault: true
+				},
+				{
+					id: '2',
+					name: '李四',
+					tel: '1310000000',
+					address: '浙江省杭州市拱墅区莫干山路 50 号'
+				}
+			]
+		};
+	},
+	methods: {
+		handler() {
+			uni.navigateTo({
+				url: '/loginPages/addaddress/index'
+			});
+		},
+		
+		radioChange(e){
+			var {value}=e.detail,list=JSON.parse(JSON.stringify(this.value));
+			// 取消默认
+			var isDefaultIndex=list.findIndex(item=>item.isDefault);
+			list[isDefaultIndex]['isDefault']=false;
+			// 默认赋值
+			isDefaultIndex=list.findIndex(item=>item.id==value);
+			list[isDefaultIndex]['isDefault']=true;
+			this.value=list;
+		}
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+.addressList {
+	.section {
+		.item {
+			width: calc(100vw - 60upx);
+			box-sizing: border-box;
+		}
+	}
+	.footer {
+		height: 140upx;
+		height: calc(140rpx + env(safe-area-inset-bottom) / 2);
+		padding-bottom: calc(env(safe-area-inset-bottom) / 2);
+		.footer-content {
+			position: fixed;
+			bottom: 0;
+			left: 0;
+			width: 100%;
+			button {
+				background-color: #ee0a24;
+				color: #fff;
+				height: 80upx;
+				border-radius: 80upx;
+			}
+		}
+	}
+}
+</style>

+ 117 - 0
loginPages/evaluate/index.vue

@@ -0,0 +1,117 @@
+<template>
+	<view class="evaluate">
+		<!-- header -->
+		<cu-custom isBack custom bgColor="bg-gradual-blue"><view slot="content">评价中心</view></cu-custom>
+		<view class="tab">
+			<view :style="{top:CustomBarHeight+'px' }" class="tab-content flex bg-white">
+				<view @click="handler" class="item text-center">待评价(99+)</view>
+				<view @click="handler" class="item text-center">已评价(99+)</view>
+				<view :style="{left:active ? '50vw' : '0px'}" class="bar"></view>
+			</view>
+		</view>
+		<!-- section -->
+		<view class="section">
+			<cu-evaluateB @click="addEvaluteFunc" :value="value"/>
+			<cu-evaluateA @click="removeFunc" :value="value"/>
+		</view>
+		<!-- 工具 -->
+		<cu-modalB :show.sync="show" content="确认删除此评论吗?"></cu-modalB>
+	</view>
+</template>
+
+<script>
+import { CustomBarHeight } from '@/common/device/index.js';
+export default {
+	data() {
+		return {
+			show:false,
+			active: false,
+			CustomBarHeight ,
+			value:{
+				img:"https://img0.baidu.com/it/u=1377501607,485661019&fm=253&app=138&size=w931&n=0&f=PNG&fmt=auto?sec=1656090000&t=e347398442d0de93d1fd11fe6df2b6f8",
+				name:"博客园用户登录 代码改变世界 密码登录 短信登录 忘记登录用户名 忘记密码 登录",
+				parameter:"商品参数",
+				custom:"评价立得35积分",
+				detail:"极简Node.js 入门系列教程:https://www.yuque.com/sunluyong/node本文更佳阅读体验:https://www.yuque.com/sunluyong/node/static-server在创建 HTTP 服务器实现了一个最简单的静...",
+				create_time:"20220623 17:15",
+				imgs:[
+					{
+						id: 0,
+						type: 'video',
+						url: 'https://st0.dancf.com/gaoding/gaoding/229e7928-fb34-4a0c-b12b-b26fc0aba91453332268.mp4'
+					},
+					{
+						id: 1,
+						type: 'image',
+						url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big84001.jpg'
+					},
+					{
+						id: 2,
+						type: 'image',
+						url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big39000.jpg'
+					},
+					{
+						id: 3,
+						type: 'image',
+						url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big10001.jpg'
+					},
+					{
+						id: 4,
+						type: 'image',
+						url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big25011.jpg'
+					},
+					{
+						id: 5,
+						type: 'image',
+						url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big21016.jpg'
+					},
+					{
+						id: 6,
+						type: 'image',
+						url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big99008.jpg'
+					}
+				]
+			}
+		};
+	},
+	methods:{
+		handler(){
+			this.active=!this.active;
+		},
+		removeFunc(){
+			this.show=true;
+		},
+		addEvaluteFunc(){
+			uni.navigateTo({
+				url:"/loginPages/addEvalute/index"
+			})
+		}
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+.evaluate {
+	.tab {
+		height: 60upx;
+		.tab-content {
+			position: fixed;
+			width: 100vw;
+			left: 0;
+			.item {
+				flex: 1;
+				line-height: 60upx;
+				position: relative;
+			}
+			.bar {
+				position: absolute;
+				top: 59upx;
+				width: 50vw;
+				height: 2upx;
+				background-color: #f03;
+				transition: left .3s linear;
+			}
+		}
+	}
+}
+</style>

+ 11 - 2
manifest.json

@@ -53,9 +53,18 @@
         "appid" : "wx8677e8f4aefd7e12",
         "setting" : {
             "urlCheck" : false,
-            "postcss" : true
+            "postcss" : true,
+            "es6" : true
         },
-        "usingComponents" : true
+        "usingComponents" : true,
+        "optimization" : {
+            "subPackages" : true
+        },
+        "permission" : {
+            "scope.userLocation" : {
+                "desc" : "收货地址使用"
+            }
+        }
     },
     "mp-alipay" : {
         "usingComponents" : true

+ 84 - 1
pages.json

@@ -10,10 +10,93 @@
 			"path": "pages/index/index",
 			"style": {
 			}
+		},
+		{
+			"path": "pages/login/index",
+			"style": {
+			}
+		},
+		{
+			"path": "pages/commodity/index",
+			"style": {
+			}
+		},
+		{
+			"path": "pages/shoppingCart/index",
+			"style": {
+			}
+		},
+		{
+			"path": "pages/detail/index"
+		},
+		{
+			"path": "pages/order/index"
 		}
 	],
+	"tabBar": {
+		"custom":true,
+		"list": [{
+				"pagePath": "pages/index/index",
+				"text": "首页"
+			},
+			{
+				"pagePath": "pages/commodity/index",
+				"text": "商品"
+			},
+			{
+				"pagePath": "pages/shoppingCart/index",
+				"text": "购物车"
+			},
+			{
+				"pagePath": "pages/login/index",
+				"text": "我的"
+			}
+		]
+	},
+	"subPackages": [
+		{
+			"root": "loginPages",
+			"pages": [
+				{
+					"path":"addressList/index"
+				},
+				{
+					"path": "addaddress/index"
+				},
+				{
+					"path": "evaluate/index"
+				},
+				{
+					"path":"addEvalute/index"
+				}
+			]
+		},
+		{
+			"root": "detailPages",
+			"pages": [
+				{
+					"path":"evaluate/index"
+				}
+			]
+		}
+	],
+	"preloadRule":{
+		"pages/index/index": {
+			"network": "all",
+			"packages": ["__APP__"]
+		},
+		"pages/login/index":{
+			"network": "all","packages": [
+				"loginPages"
+			]
+		},
+		"pages/detail/index":{
+			"network": "all",
+			"packages": ["detailPages"]
+		}
+	},
 	"globalStyle": {
-		"navigationBarTextStyle": "black",
+		"navigationBarTextStyle": "white",
 		"navigationBarTitleText": "uni-app",
 		"navigationStyle": "custom",
 		"navigationBarBackgroundColor": "#F8F8F8",

+ 5 - 0
pages/commodity/api.js

@@ -0,0 +1,5 @@
+import request from "@/common/request/index.js";
+
+export default {
+	index:options=>request({url:"",method:"",data:{}})
+}

+ 81 - 0
pages/commodity/index.vue

@@ -0,0 +1,81 @@
+<template>
+	<view class="commodity">
+		<!-- header -->
+		<cu-custom custom bgColor="bg-gradual-blue"><view slot="content">商品列表</view></cu-custom>
+		<!-- section -->
+		<cu-treeSelectB @change="changeSelect" :value="label" :height="height">
+			<view class="section-right">
+				<view class="item bg-white radius padding flex margin-tb-sm">
+					<!-- 图片 -->
+					<image lazy-load="true" class="image radius margin-right-sm" src="https://gd-hbimg.huaban.com/d478a9c4bd0167adae79806c6ccaa2d7f59ded5dd101-WmmTdI_fw658/format/webp" mode="aspectFit"></image>
+					<view class="content">
+						<view class="text-xl">商品名称</view>
+						<view class="text-gray">
+							销量:1000
+						</view>
+						<view class="text-red">¥<cu-price value="100" size="32" /></view>
+						<view class="cart">
+							<text class="cuIcon-cart text-xl"></text>
+						</view>
+					</view>
+				</view>
+			</view>
+		</cu-treeSelectB>
+		<!-- footer -->
+		<cu-bar active="1" />
+	</view>
+</template>
+
+<script>
+import { CustomBarHeight } from '@/common/device/index.js';
+export default {
+	data() {
+		return {
+			label: []
+		};
+	},
+	computed: {
+		height() {
+			return `calc(100vh - 100rpx - ${CustomBarHeight}px)`;
+		}
+	},
+	onLoad() {
+		let label = [];
+		for (var i = 0; i < 20; i++) {
+			label.push({ label: 'Tab-' + i, id: i });
+		}
+		this.label = label;
+	},
+	methods: {
+		changeSelect(item) {
+			console.log(item);
+		}
+	},
+	onShareAppMessage() {
+		return {};
+	},
+	onShareTimeline() {
+		return {};
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+.section-right {
+	.item {
+		.image {
+			width: 160upx;
+			min-width: 160upx;
+			height: 160upx;
+			background-size: cover;
+			background-position: center;
+		}
+		.content{
+			flex: auto;
+			.cart{
+				float: right;
+			}
+		}
+	}
+}
+</style>

+ 196 - 0
pages/detail/index.vue

@@ -0,0 +1,196 @@
+<template>
+	<view class="detail">
+		<!-- header -->
+		<cu-custom isBack custom bgColor="bg-gradual-blue"><view slot="content">商品详情</view></cu-custom>
+		<!-- section -->
+		<view class="section">
+			<cu-swiper :value="swiperList" />
+			<view class="bg-white padding">
+				<view class="flex align-center">
+					<view style="flex: auto;" class="text-xl text-bold">商品名称</view>
+					<view @click="favoriteFunc" style="min-width: 100upx;" class="text-center">
+						<text v-if="dynamic.favorite" class="cuIcon-likefill text-red  text-xxl"></text>
+						<text v-else class="cuIcon-like text-xxl"></text>
+					</view>
+				</view>
+				<view class="flex justify-between align-end margin-top-sm">
+					<view class="text-price text-red"><cu-price value="100" size="64" /></view>
+					<view class="text-grey">销量:1000</view>
+				</view>
+				<view class="margin-top-sm text-grey">商品详情</view>
+			</view>
+			<view class="margin-tb-sm  padding	bg-white flex">
+				<view  style="min-width: 100upx;" class="text-black text-bold">
+					配送至
+				</view>
+				<view style="flex: auto;">
+					<view class="text-grey">
+						河南省郑州市中原区是否真<text class="cuIcon-location lg margin-left-sm"></text>
+					</view>
+					<view class="">
+						张三 18864585256
+					</view>
+				</view>
+			</view>
+			<view class="padding margin-tb-sm  bg-white">
+				<view class="flex justify-between">
+					<view class="text-bold text-black text-bold">评价(265)</view>
+					<view @click="evaluateFunc">查看全部 <text class="cuIcon-right"></text></view>
+				</view>
+			  <cu-evaluate :value="evaluate"/>
+			</view>
+			<view class="bg-white padding-tb">
+				<view class="text-black text-bold margin-bottom-sm padding-lr">图文介绍</view>
+				<image v-for="(item,index) in 5" :key="index" lazy-load="true" style="width: 100%;vertical-align: top;display: block;" src="https://ossweb-img.qq.com/images/lol/web201310/skin/big84001.jpg" mode="widthFix"></image>
+			</view>
+		</view>
+		<!-- footer -->
+		<view class="footer">
+			<view class=" cu-bar bg-white tabbar border shop">
+					<view @click="favoriteFunc" v-if="dynamic.favorite" class="action text-orange">
+						<view class="cuIcon-favorfill"></view>
+						已收藏
+					</view>
+					<view @click="favoriteFunc" v-else class="action ">
+						<view class="cuIcon-favor"></view>
+						收藏
+					</view>
+					<view @click="shoppingCart" class="action">
+						<view class="cuIcon-cart"><view class="cu-tag badge">99</view></view>
+						购物车
+					</view>
+					<view class="btn-group">
+						<button class="cu-btn bg-orange round shadow-blur">加入购物车</button>
+						<button class="cu-btn bg-red round shadow-blur">立即订购</button>
+					</view>
+				</view>
+			
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			dynamic: { favorite: true },
+			swiperList: [
+				{
+					id: 0,
+					type: 'video',
+					url: 'https://st0.dancf.com/gaoding/gaoding/229e7928-fb34-4a0c-b12b-b26fc0aba91453332268.mp4'
+				},
+				{
+					id: 1,
+					type: 'image',
+					url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big84001.jpg'
+				},
+				{
+					id: 2,
+					type: 'image',
+					url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big39000.jpg'
+				},
+				{
+					id: 3,
+					type: 'image',
+					url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big10001.jpg'
+				},
+				{
+					id: 4,
+					type: 'image',
+					url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big25011.jpg'
+				},
+				{
+					id: 5,
+					type: 'image',
+					url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big21016.jpg'
+				},
+				{
+					id: 6,
+					type: 'image',
+					url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big99008.jpg'
+				}
+			],
+			evaluate:{
+				avator:"https://gd-hbimg.huaban.com/1f50f2135ba51e4b9aa20caef41860b15005c9386f0b-LxqWsh_fw658/format/webp",
+				nickname:"用户昵称",
+				rate:3,
+				createTime:"20220622 17:05:30",
+				detail:"项目 'demo' 编译成功。前端运行日志,请另行在小程序开发工具的控制台查看。",
+				imgs:[
+				{
+					id: 0,
+					type: 'video',
+					url: 'https://st0.dancf.com/gaoding/gaoding/229e7928-fb34-4a0c-b12b-b26fc0aba91453332268.mp4'
+				},
+				{
+					id: 1,
+					type: 'image',
+					url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big84001.jpg'
+				},
+				{
+					id: 2,
+					type: 'image',
+					url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big39000.jpg'
+				},
+				{
+					id: 3,
+					type: 'image',
+					url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big10001.jpg'
+				},
+				{
+					id: 4,
+					type: 'image',
+					url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big25011.jpg'
+				},
+				{
+					id: 5,
+					type: 'image',
+					url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big21016.jpg'
+				},
+				{
+					id: 6,
+					type: 'image',
+					url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big99008.jpg'
+				}
+				]
+			}
+		};
+	},
+	methods: {
+		favoriteFunc() {
+			let dynamic = JSON.parse(JSON.stringify(this.dynamic));
+			dynamic['favorite'] = !dynamic.favorite;
+			this.dynamic = dynamic;
+		},
+		shoppingCart(){
+			uni.switchTab({
+				url:"/pages/shoppingCart/index"
+			})
+		},
+		evaluateFunc(){
+			uni.navigateTo({
+				url:"/detailPages/evaluate/index"
+			})
+		}
+	},
+	onShareAppMessage() {
+		return {};
+	},
+	onShareTimeline() {
+		return {};
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+	.detail{
+		.footer{
+			height: calc(100rpx + env(safe-area-inset-bottom) / 2);
+			padding-bottom: calc(env(safe-area-inset-bottom) / 2);
+			.cu-bar{
+				position: fixed;bottom: 0;left: 0;width: 100vw;
+			}
+		}
+	}
+</style>

+ 1 - 1
pages/index/api.js

@@ -1,4 +1,4 @@
-import request from "@/utils/request/index.js";
+import request from "@/common/request/index.js";
 
 export default {
 	index:options=>request({url:"",method:"",data:{}})

+ 40 - 36
pages/index/index.vue

@@ -1,25 +1,35 @@
 <template>
 	<view class="index">
-		<!-- 工具 -->
-		<cu-good :show.sync="modalCShow" :options="goods">
-		
-		</cu-good>
+		<!-- section -->
+		<view class="section flex justify-center flex-wrap">
+			<view @click="handler" v-for="(item, index) in 10" :key="index" class="item bg-white radius padding">
+				<image lazy-load="true" src="https://gd-hbimg.huaban.com/d478a9c4bd0167adae79806c6ccaa2d7f59ded5dd101-WmmTdI_fw658/format/webp" mode="aspectFit"></image>
+				<view class="text-xl">商品名称</view>
+				<view class="text-gray">销量:1000</view>
+				<view class="flex justify-between">
+					<view class="text-red text-price">
+						<cu-price value="100" size="32" />
+					</view>
+					<text class="cuIcon-cart text-xl"></text>
+				</view>
+			</view>
+		</view>
+		<!-- footer -->
+		<cu-bar active="0" />
 	</view>
 </template>
 
 <script>
-import goods from '@/colorui/cu-goods.js';
 export default {
 	data() {
-		return {
-			modalCShow: true,
-			goods
-		};
+		return {};
 	},
 	onLoad() {},
 	methods: {
-		confirm() {
-			console.log(this.modalCShow);
+		handler(){
+			uni.navigateTo({
+				url:"/pages/detail/index"
+			})
 		}
 	},
 	onShareAppMessage() {
@@ -31,30 +41,24 @@ export default {
 };
 </script>
 
-<style>
-.content {
-	display: flex;
-	flex-direction: column;
-	align-items: center;
-	justify-content: center;
-}
-
-.logo {
-	height: 200rpx;
-	width: 200rpx;
-	margin-top: 200rpx;
-	margin-left: auto;
-	margin-right: auto;
-	margin-bottom: 50rpx;
-}
-
-.text-area {
-	display: flex;
-	justify-content: center;
-}
-
-.title {
-	font-size: 36rpx;
-	color: #8f8f94;
+<style lang="scss" scoped>
+.index {
+	.section {
+		.item {
+			width: calc(50vw - 60upx);
+			box-sizing: border-box;
+			margin: 15upx 30upx;
+			image{
+				width: calc(50vw - 60upx);
+				height:  calc(50vw - 60upx);
+			}
+		}
+		.item:nth-child(2n + 1) {
+			margin-left: 15upx;
+		}
+		.item:nth-child(2n + 1) {
+			margin-right: 15upx;
+		}
+	}
 }
 </style>

+ 5 - 0
pages/login/api.js

@@ -0,0 +1,5 @@
+import request from "@/common/request/index.js";
+
+export default {
+	index:options=>request({url:"",method:"",data:{}})
+}

+ 182 - 0
pages/login/index.vue

@@ -0,0 +1,182 @@
+<template>
+	<view class="login">
+		<!-- header -->
+		<view class="header bg-gradual-blue flex align-center justify-center" :style="{paddingTop:statusBarHeight+'px'}">
+			<view class="userInfo text-center">
+				<view class="userInfo-image flex align-center justify-center" :style="{backgroundImage: 'url(' + userInfo.avator + ')' }">
+					<text v-if="!userInfo.avator" class="cuIcon-picfill text-xxl text-gray"></text>
+				</view>
+				<view class="userInfo-nickname padding-top-sm text-lg">{{userInfo.nickname}}</view>
+			</view>
+		</view>
+		<!-- section -->
+		<view class="section">
+			<!-- 我的订单 -->
+			<view class="order bg-white radius">
+				<view class="order-header flex align-center justify-between  padding-tb-sm">
+					<view class="text-black">
+						我的订单
+					</view>
+					<view @click="orderFunc(1)" class="text-grey">
+						全部订单
+						<text  class="cuIcon-right lg text-gray"></text>
+					</view>
+				</view>
+				<view class="cu-list grid col-5 no-border">
+				   <view @click="orderFunc(index+2)" class="cu-item text-center" v-for="(item,index) in  order" :key="index" >
+				     <view class="list-icon" :style="{backgroundImage:'url('+item.icon+')'}">
+				       <view class="cu-tag badge" v-if="item.badge">
+				         {{item.badge>99?"99+":item.badge}}
+				       </view>
+				     </view>
+				     <text class="text-black margin-top-sm">{{item.label}}</text>
+				   </view>
+				 </view>
+			</view>
+		    <!-- 功能列表 -->
+			<view class="cu-list menu">
+				<!-- 我的收藏 -->
+				<view class="cu-item arrow">
+					<view class="content">
+						<text class="cuIcon-likefill  text-red"></text>
+						<text class="text-grey">我的收藏</text>
+					</view>
+					<view class="text-grey">999+</view>
+				</view>
+				<!-- 评价中心 -->
+				<view @click="handler('/loginPages/evaluate/index')" class="cu-item arrow">
+					<view class="content">
+						<text class="cuIcon-evaluate_fill  text-red"></text>
+						<text class="text-grey">评价中心</text>
+					</view>
+				</view>
+				<!-- 收货地址 -->
+				<view @click="handler('/loginPages/addressList/index')" class="cu-item arrow">
+					<view class="content">
+						<text class="cuIcon-locationfill  text-green"></text>
+						<text class="text-grey ">收货地址</text>
+					</view>
+				</view>
+				<!-- 余额-->
+				<view class="cu-item arrow">
+					<view class="content">
+						<text class="cuIcon-moneybag  text-yellow"></text>
+						<text class="text-grey">余额</text>
+					</view>
+					<view class="text-price text-red">999</view>
+				</view>
+				<!-- 积分-->
+				<view class="cu-item arrow">
+					<view class="content">
+						<text class="cuIcon-coin  text-yellow"></text>
+						<text class="text-grey">积分</text>
+					</view>
+					<view class="text-yellow">999+</view>
+				</view>
+			</view>
+		</view>
+		<!-- footer -->
+		<cu-bar active="3" />
+	</view>
+</template>
+
+<script>
+	import {statusBarHeight,
+	CustomBarHeight} from "@/common/device/index.js"
+	import dzf from "@/static/login/dzf.png";
+	import dfh from "@/static/login/dfh.png";
+	import ysz from "@/static/login/ysz.png";
+	import ywc from "@/static/login/ywc.png";
+	import dpj from "@/static/login/dpj.png";
+export default {
+	data() {
+		return {
+			statusBarHeight,CustomBarHeight,
+			userInfo:{
+				avator:"https://gd-hbimg.huaban.com/1f50f2135ba51e4b9aa20caef41860b15005c9386f0b-LxqWsh_fw658/format/webp",
+				nickname:"用户昵称"
+			},
+			order:[
+				{
+					id:2,
+					icon:dzf,
+					badge:99,
+					label:'待支付',
+		
+				},
+				{
+					id:3,
+					icon:dfh,
+					label:'待发货'
+				},
+				{
+					id:4,
+					icon:ysz,
+					label:'运输中'
+				},
+				{
+					id:5,
+					icon:ywc,
+					label:'已完成'
+				},
+				{
+					id:6,
+					icon:dpj,
+					label:'待评价'
+				}
+			]
+		};
+	},
+	onLoad() {},
+	methods: {
+		orderFunc(val){
+			uni.navigateTo({
+				url:`/pages/order/index?key=${val}`
+			})
+		},
+		handler(path){
+			uni.navigateTo({
+				url:path
+			})
+		}
+	},
+	onShareAppMessage() {
+		return {};
+	},
+	onShareTimeline() {
+		return {};
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+.login{
+	.header{
+		min-height: 500upx;
+		box-sizing: border-box;
+		.userInfo{
+			.userInfo-image{
+				width: 120upx;
+				height: 120upx;
+				background-color: #fff;
+				border-radius: 50%;
+				background-position: center;
+				background-size: cover;
+			}
+		}
+	}
+    .section{
+		.order{
+			padding: 20upx 30upx;
+			.list-icon{
+				position: relative;
+				width: 80upx;height: 80upx;
+				margin: 0 auto;
+				margin-top: 20upx;
+				background-position: center;
+				background-size: cover;
+			}
+		}
+	}
+}
+</style>

+ 36 - 0
pages/order/index.vue

@@ -0,0 +1,36 @@
+<template>
+	<view class="order">
+		<!-- header -->
+		<cu-custom isBack custom bgColor="bg-gradual-blue"><view slot="content">我的订单</view></cu-custom>
+		<!-- section -->
+		<view class="section">
+			<cu-tab :value="defaultKey" @change="change" :list="list" />
+		</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		data(){
+			return {
+				defaultKey:0,
+				list:[
+					{id:1,label:"全部"},
+					{id:2,label:"待支付"},
+					{id:3,label:"待发货"},
+					{id:4,label:"运输中"},
+					{id:5,label:"已完成"},
+					{id:6,label:"待评价"}
+				],
+			}
+		},
+		methods:{
+			change(index,item){
+				this.defaultKey=index;
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+</style>

+ 5 - 0
pages/shoppingCart/api.js

@@ -0,0 +1,5 @@
+import request from "@/common/request/index.js";
+
+export default {
+	index:options=>request({url:"",method:"",data:{}})
+}

+ 168 - 0
pages/shoppingCart/index.vue

@@ -0,0 +1,168 @@
+<template>
+	<view class="requestList">
+		<!-- header -->
+		<cu-custom custom bgColor="bg-gradual-blue"><view slot="content">购物车</view></cu-custom>
+		<view class="setting">
+			<view class="setting-content flex align-center justify-center padding-sm bg-white">
+				<view class="left text-cut text-grey">配送至河南省郑州市高新区大学科技园配送至河南省郑州市高新区大学科技园</view>
+				<view @click="status = !status" class="right margin-left">{{ status ? '完成' : '管理' }}</view>
+			</view>
+		</view>
+		<!-- section -->
+		<view class="section">
+			<checkbox-group @change="chooseShop" >
+				<view v-for="(item, index) in 20" :key="index" class="item flex align-center bg-white radius  padding">
+					<checkbox :value="item" style="transform: scale(0.6);"  />
+				    <view class="right flex margin-left">
+						<view :style="{backgroundImage:'url('+'https://gd-hbimg.huaban.com/d478a9c4bd0167adae79806c6ccaa2d7f59ded5dd101-WmmTdI_fw658/format/webp'+')'}" class="image radius margin-right-sm"></view>
+						<view class="right-right">
+							<view class="text-xl">{{item}}</view>
+							<view style="float: right;"><cu-stepper :value.sync="item"  /></view>
+						</view>
+					</view>
+				</view>
+			</checkbox-group>
+		</view>
+		<!-- footer -->
+		<view class="tool">
+			<!-- 结算 -->
+			<view v-if="!status" class="bg-white tool-contentA flex align-center justify-center padding-lr padding-tb-sm">
+				<view class="left flex ">
+					<checkbox-group @change="e => (total_lockA = !total_lockA)" class="margin-right flex align-center">
+						<checkbox style="transform: scale(0.6);"  />
+						<text class="text-lg margin-left-sm">全选</text>
+					</checkbox-group>
+					<view class="text-red margin-left">
+						合计:
+						<cu-price :value="price" size="52" />
+						元
+					</view>
+				</view>
+				<view class="right"><button class="cu-btn bg-red round shadow-blur">结算</button></view>
+			</view>
+			<!-- 管理 -->
+			<view v-else class="bg-white tool-contentA flex align-center justify-center padding-lr padding-tb-sm">
+				<view class="left flex ">
+					<checkbox-group @change="e => (total_lockB = !total_lockB)" class="margin-right flex align-center">
+						<checkbox style="transform: scale(0.6);"  />
+						<text class="text-lg margin-left-sm">全选</text>
+					</checkbox-group>
+				</view>
+				<view class="right">
+					<button class="cu-btn bg-red round shadow-blur margin-right">删除</button>
+					<button class="cu-btn bg-green round shadow-blur">移入收藏</button>
+				</view>
+			</view>
+		</view>
+		<cu-bar active="2" />
+	</view>
+</template>
+
+<script>
+import { mapState, mapMutations, mapActions } from 'vuex';
+export default {
+	data() {
+		return {
+			status: false, // false 管理 true 完成
+			total_lockA: false, //全选
+			total_lcokB: false, //全选
+			price: 0 //合计
+		};
+	},
+	computed: {
+		...mapState('requestList', ['value'])
+	},
+	onLoad() {
+		// this.requestFunc({
+		// 	axios:{},
+		// 	reset:true
+		// });
+	},
+	methods: {
+		...mapActions('requestList', ['requestFunc']),
+		chooseShop(e){
+			console.log(e)
+		}
+	},
+	onShareAppMessage() {
+		return {};
+	},
+	onShareTimeline() {
+		return {};
+	},
+	// 下拉刷新
+	async onPullDownRefresh() {
+		// await this.$store.requestList.dispatch('requestFunc',true);
+		uni.stopPullDownRefresh({});
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+.requestList {
+	.section{
+		.item{
+			position: relative;
+			.image{
+				width: 160upx;
+				min-width: 160upx;
+				height: 160upx;
+				background-size: cover;
+				background-position: center;
+			}
+			.right{
+				flex: auto;
+				.right-right{
+					flex: auto;
+				}
+			}
+			&::after {
+				content: '';
+				border-bottom: 1upx solid #eee;
+				position: absolute;
+				left: 0;
+				bottom: 0;
+				transform: scale(1, 0.5);
+				width: 100%;
+			}
+		}
+	}
+	.setting {
+		height: 80upx;
+		.setting-content {
+			position: fixed;
+			left: 0;
+			z-index: 9998;
+			width: 100%;
+			.left {
+				flex: auto;
+			}
+			.right {
+				min-width: 60upx;
+			}
+		}
+	}
+	.tool {
+		height: 130upx;
+		.tool-contentA {
+			position: fixed;
+			bottom: calc(100rpx + env(safe-area-inset-bottom));
+			left: 0;
+			z-index: 9998;
+			width: 100%;
+			.left {
+				flex: auto;
+			}
+			&::before {
+				content: '';
+				border-top: 1upx solid #aaa;
+				position: absolute;
+				left: 0;
+				top: 0;
+				transform: scale(1, 0.5);
+				width: 100%;
+			}
+		}
+	}
+}
+</style>

BIN
static/login/dfh.png


BIN
static/login/dpj.png


BIN
static/login/dzf.png


BIN
static/login/ysz.png


BIN
static/login/ywc.png


+ 2 - 2
store/index.js

@@ -1,7 +1,7 @@
 import Vue from 'vue'
 import Vuex from 'vuex'
-
 Vue.use(Vuex) // vue的插件机制
+import requestList from "./requestList.js";
 const store = new Vuex.Store({
 	state: {
 	},
@@ -12,7 +12,7 @@ const store = new Vuex.Store({
 	
 	},
 	modules: {
-		
+		requestList
 	},
 })
 

+ 0 - 17
store/login.js

@@ -1,17 +0,0 @@
-import Vue from 'vue'
-import Vuex from 'vuex'
-
-Vue.use(Vuex) // vue的插件机制
-const store = new Vuex.Store({
-	state: {
-	},
-	mutations: {
-		
-	},
-	actions: {
-	
-	}
-	
-})
-
-export default store

+ 71 - 0
store/requestList.js

@@ -0,0 +1,71 @@
+import request from "@/common/request/index.js";
+
+// 请求前拦截
+const BEFOREINTERCEPT = (axios,currentPage, totalPage) => {
+     return {}
+}
+
+//参数处理
+ const AFTERINTERCEPT=(result,currentPage, totalPage)=>{
+	 return {}
+ }
+ 
+// 报错拦截
+const ERRINTERCPTOR = function(err) {
+	uni.showModal({
+		title:"警告",
+		content:err.message || JSON.stringify(err),
+		confirmText:"关闭",
+		showCancel:false,
+		confirmColor:"#fbbd08"
+	})
+	return err
+}
+
+export default {
+	namespaced: true,
+	state: {
+		value: [], //数据
+		currentPage: 1, // 当前页
+		totalPage: 1, //总页数
+	},
+	mutations: {
+		increment(state, options) {
+			state = {
+				...state,
+				...options
+			}
+		}
+	},
+	actions: {
+		async requestFunc({
+			commit,
+			state
+		}, options) {
+			try{
+				let {
+					axios = {}, reset = false
+				} = options;
+				let {
+					value,
+					currentPage,
+					totalPage
+				} = state;
+				// true 重置数据
+				if (reset) {
+					value = [];
+					currentPage = 1;
+					totalPage = 1;
+				}
+				if (currentPage > totalPage) return false;
+				axios = BEFOREINTERCEPT(axios, currentPage, totalPage);
+				var result =await request(axios);
+				result==AFTERINTERCEPT(result);
+				commit('increment',result,currentPage, totalPage)
+			}catch(err){
+				ERRINTERCPTOR(err)
+			}
+		}
+	}
+
+}

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-bar.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-custom.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-evaluate.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-evaluateA.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-evaluateB.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-good.js.map


+ 1 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-list.js.map

@@ -0,0 +1 @@
+{"version":3,"sources":[],"names":[],"mappings":"","file":"colorui/components/cu-list.js","sourceRoot":""}

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-modalA.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-modalB.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-modalC.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-price.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-rate.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-stepper.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-swiper.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-tab.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/colorui/components/cu-treeSelectB.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/detailPages/evaluate/index.js.map


+ 1 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/loginPages/addEvaluate/index.js.map

@@ -0,0 +1 @@
+{"version":3,"sources":["uni-app:///main.js"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","createPage","Page"],"mappings":";;;;;;;;;;kDAAA;AACA;AACA,uN,6FAFmBA,EAAE,CAACC,iCAAH,GAAuCC,mBAAvC;AAGnBC,UAAU,CAACC,cAAD,CAAV,C","file":"loginPages/addEvaluate/index.js","sourcesContent":["import 'uni-pages';wx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;\nimport Vue from 'vue'\nimport Page from './loginPages/addEvaluate/index.vue'\ncreatePage(Page)"],"sourceRoot":""}

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/loginPages/addEvalute/index.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/loginPages/addaddress/index.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/loginPages/addressList/index.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/loginPages/common/vendor.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/loginPages/evaluate/index.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/commodity/index.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/detail/index.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/index.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/order/index.js.map


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/shoppingCart/index.js.map


+ 70 - 3
unpackage/dist/dev/mp-weixin/app.json

@@ -1,14 +1,81 @@
 {
   "pages": [
-    "pages/index/index"
+    "pages/index/index",
+    "pages/login/index",
+    "pages/commodity/index",
+    "pages/shoppingCart/index",
+    "pages/detail/index",
+    "pages/order/index"
+  ],
+  "subPackages": [
+    {
+      "root": "loginPages",
+      "pages": [
+        "addressList/index",
+        "addaddress/index",
+        "evaluate/index",
+        "addEvalute/index"
+      ]
+    },
+    {
+      "root": "detailPages",
+      "pages": [
+        "evaluate/index"
+      ]
+    }
   ],
-  "subPackages": [],
   "window": {
-    "navigationBarTextStyle": "black",
+    "navigationBarTextStyle": "white",
     "navigationBarTitleText": "uni-app",
     "navigationStyle": "custom",
     "navigationBarBackgroundColor": "#F8F8F8",
     "backgroundColor": "#F8F8F8"
   },
+  "tabBar": {
+    "custom": true,
+    "list": [
+      {
+        "pagePath": "pages/index/index",
+        "text": "首页"
+      },
+      {
+        "pagePath": "pages/commodity/index",
+        "text": "商品"
+      },
+      {
+        "pagePath": "pages/shoppingCart/index",
+        "text": "购物车"
+      },
+      {
+        "pagePath": "pages/login/index",
+        "text": "我的"
+      }
+    ]
+  },
+  "preloadRule": {
+    "pages/index/index": {
+      "network": "all",
+      "packages": [
+        "__APP__"
+      ]
+    },
+    "pages/login/index": {
+      "network": "all",
+      "packages": [
+        "loginPages"
+      ]
+    },
+    "pages/detail/index": {
+      "network": "all",
+      "packages": [
+        "detailPages"
+      ]
+    }
+  },
+  "permission": {
+    "scope.userLocation": {
+      "desc": "收货地址使用"
+    }
+  },
   "usingComponents": {}
 }

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 161 - 0
unpackage/dist/dev/mp-weixin/colorui/components/cu-bar.js


+ 0 - 0
unpackage/dist/dev/mp-weixin/colorui/components/cu-modalC.json → unpackage/dist/dev/mp-weixin/colorui/components/cu-bar.json


+ 1 - 0
unpackage/dist/dev/mp-weixin/colorui/components/cu-bar.wxml

@@ -0,0 +1 @@
+<view class="cu-bar-box data-v-20c2df4a"><view class="cu-bar tabbar bg-black text-gray data-v-20c2df4a"><block wx:for="{{value}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['handler',[index]]]]]}}" class="{{['action','data-v-20c2df4a',(active==index)?'text-orange':'']}}" bindtap="__e"><block wx:if="{{item.image}}"><view class="cuIcon-cu-image data-v-20c2df4a"><image src="{{item.image}}" class="data-v-20c2df4a"></image></view></block><block wx:else><view class="{{['data-v-20c2df4a',item.icon]}}"></view></block><view class="data-v-20c2df4a">{{item.label}}</view></view></block></view></view>

+ 13 - 0
unpackage/dist/dev/mp-weixin/colorui/components/cu-bar.wxss

@@ -0,0 +1,13 @@
+.cu-bar-box.data-v-20c2df4a {
+  min-height: 100rpx;
+  height: calc(100rpx + env(safe-area-inset-bottom) / 2);
+  padding-bottom: calc(env(safe-area-inset-bottom) / 2);
+}
+.cu-bar-box .cu-bar.data-v-20c2df4a {
+  position: fixed;
+  left: 0;
+  bottom: 0;
+  width: 100vw;
+  z-index: 99999;
+}
+

+ 194 - 0
unpackage/dist/dev/mp-weixin/colorui/components/cu-custom.js

@@ -0,0 +1,194 @@
+(global["webpackJsonp"] = global["webpackJsonp"] || []).push([["colorui/components/cu-custom"],{
+
+/***/ 128:
+/*!*************************************************************************************************!*\
+  !*** D:/Lxd_worker/Reacts/LXD/Work/work/20220617_fenxiao/demo/colorui/components/cu-custom.vue ***!
+  \*************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _cu_custom_vue_vue_type_template_id_213e6c59___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cu-custom.vue?vue&type=template&id=213e6c59& */ 129);
+/* harmony import */ var _cu_custom_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cu-custom.vue?vue&type=script&lang=js& */ 131);
+/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _cu_custom_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _cu_custom_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
+/* harmony import */ var _360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../../../360Downloads/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 11);
+
+var renderjs
+
+
+
+
+/* normalize component */
+
+var component = Object(_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
+  _cu_custom_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
+  _cu_custom_vue_vue_type_template_id_213e6c59___WEBPACK_IMPORTED_MODULE_0__["render"],
+  _cu_custom_vue_vue_type_template_id_213e6c59___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
+  false,
+  null,
+  null,
+  null,
+  false,
+  _cu_custom_vue_vue_type_template_id_213e6c59___WEBPACK_IMPORTED_MODULE_0__["components"],
+  renderjs
+)
+
+component.options.__file = "colorui/components/cu-custom.vue"
+/* harmony default export */ __webpack_exports__["default"] = (component.exports);
+
+/***/ }),
+
+/***/ 129:
+/*!********************************************************************************************************************************!*\
+  !*** D:/Lxd_worker/Reacts/LXD/Work/work/20220617_fenxiao/demo/colorui/components/cu-custom.vue?vue&type=template&id=213e6c59& ***!
+  \********************************************************************************************************************************/
+/*! exports provided: render, staticRenderFns, recyclableRender, components */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_cu_custom_vue_vue_type_template_id_213e6c59___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../../360Downloads/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../../../360Downloads/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!../../../../../../../../../360Downloads/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../../../../../360Downloads/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../../../360Downloads/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../../../../../360Downloads/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./cu-custom.vue?vue&type=template&id=213e6c59& */ 130);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_cu_custom_vue_vue_type_template_id_213e6c59___WEBPACK_IMPORTED_MODULE_0__["render"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_cu_custom_vue_vue_type_template_id_213e6c59___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_cu_custom_vue_vue_type_template_id_213e6c59___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_cu_custom_vue_vue_type_template_id_213e6c59___WEBPACK_IMPORTED_MODULE_0__["components"]; });
+
+
+
+/***/ }),
+
+/***/ 130:
+/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/Lxd_worker/Reacts/LXD/Work/work/20220617_fenxiao/demo/colorui/components/cu-custom.vue?vue&type=template&id=213e6c59& ***!
+  \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*! exports provided: render, staticRenderFns, recyclableRender, components */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
+var components
+var render = function() {
+  var _vm = this
+  var _h = _vm.$createElement
+  var _c = _vm._self._c || _h
+}
+var recyclableRender = false
+var staticRenderFns = []
+render._withStripped = true
+
+
+
+/***/ }),
+
+/***/ 131:
+/*!**************************************************************************************************************************!*\
+  !*** D:/Lxd_worker/Reacts/LXD/Work/work/20220617_fenxiao/demo/colorui/components/cu-custom.vue?vue&type=script&lang=js& ***!
+  \**************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_cu_custom_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../../360Downloads/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../../../360Downloads/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!../../../../../../../../../360Downloads/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../../../../../360Downloads/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../../../../../360Downloads/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./cu-custom.vue?vue&type=script&lang=js& */ 132);
+/* harmony import */ var _360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_cu_custom_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_cu_custom_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
+/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_cu_custom_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_cu_custom_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
+ /* harmony default export */ __webpack_exports__["default"] = (_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_cu_custom_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); 
+
+/***/ }),
+
+/***/ 132:
+/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/Lxd_worker/Reacts/LXD/Work/work/20220617_fenxiao/demo/colorui/components/cu-custom.vue?vue&type=script&lang=js& ***!
+  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+var _config = __webpack_require__(/*! @/colorui/config.js */ 125); //
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+var _default = { data: function data() {return { StatusBar: _config.statusBarHeight, CustomBar: _config.CustomBarHeight };}, name: 'cu-custom', computed: { style: function style() {var StatusBar = this.StatusBar;var CustomBar = this.CustomBar;var bgImage = this.bgImage;var style = "height:".concat(CustomBar, "px;padding-top:").concat(StatusBar, "px;");if (this.bgImage) {style = "".concat(style, "background-image:url(").concat(bgImage, ");");}
+      return style;
+    } },
+
+  props: {
+    bgColor: {
+      type: String,
+      default: '' },
+
+    isBack: {
+      type: [Boolean, String],
+      default: false },
+
+    bgImage: {
+      type: String,
+      default: '' },
+
+    custom: {
+      type: [Boolean, String],
+      default: false } },
+
+
+  methods: {
+    BackPage: function BackPage() {
+      uni.navigateBack({
+        delta: 1 });
+
+    } } };exports.default = _default;
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"]))
+
+/***/ })
+
+}]);
+//# sourceMappingURL=../../../.sourcemap/mp-weixin/colorui/components/cu-custom.js.map
+;(global["webpackJsonp"] = global["webpackJsonp"] || []).push([
+    'colorui/components/cu-custom-create-component',
+    {
+        'colorui/components/cu-custom-create-component':(function(module, exports, __webpack_require__){
+            __webpack_require__('1')['createComponent'](__webpack_require__(128))
+        })
+    },
+    [['colorui/components/cu-custom-create-component']]
+]);

+ 4 - 0
unpackage/dist/dev/mp-weixin/colorui/components/cu-custom.json

@@ -0,0 +1,4 @@
+{
+  "usingComponents": {},
+  "component": true
+}

+ 1 - 0
unpackage/dist/dev/mp-weixin/colorui/components/cu-custom.wxml

@@ -0,0 +1 @@
+<view class="cu-custom" style="{{'z-index:99999;'+('height:'+(CustomBar+'px')+';')}}"><view class="{{['cu-bar','fixed',bgImage!=''?'none-bg text-white bg-img':'',bgColor]}}" style="{{(style)}}"><block wx:if="{{isBack}}"><view data-event-opts="{{[['tap',[['BackPage',['$event']]]]]}}" class="action" bindtap="__e"><text class="cuIcon-back"></text><slot name="backText"></slot></view></block><block wx:if="{{custom}}"><view class="action"><slot name="custom"></slot></view></block><view class="content" style="{{'top:'+(StatusBar+'px')+';'}}"><slot name="content"></slot></view><slot name="right"></slot></view></view>

+ 194 - 0
unpackage/dist/dev/mp-weixin/colorui/components/cu-evaluate.js

@@ -0,0 +1,194 @@
+(global["webpackJsonp"] = global["webpackJsonp"] || []).push([["colorui/components/cu-evaluate"],{
+
+/***/ 152:
+/*!***************************************************************************************************!*\
+  !*** D:/Lxd_worker/Reacts/LXD/Work/work/20220617_fenxiao/demo/colorui/components/cu-evaluate.vue ***!
+  \***************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _cu_evaluate_vue_vue_type_template_id_0b2f4581___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cu-evaluate.vue?vue&type=template&id=0b2f4581& */ 153);
+/* harmony import */ var _cu_evaluate_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cu-evaluate.vue?vue&type=script&lang=js& */ 155);
+/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _cu_evaluate_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _cu_evaluate_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
+/* harmony import */ var _360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../../../360Downloads/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 11);
+
+var renderjs
+
+
+
+
+/* normalize component */
+
+var component = Object(_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
+  _cu_evaluate_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
+  _cu_evaluate_vue_vue_type_template_id_0b2f4581___WEBPACK_IMPORTED_MODULE_0__["render"],
+  _cu_evaluate_vue_vue_type_template_id_0b2f4581___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
+  false,
+  null,
+  null,
+  null,
+  false,
+  _cu_evaluate_vue_vue_type_template_id_0b2f4581___WEBPACK_IMPORTED_MODULE_0__["components"],
+  renderjs
+)
+
+component.options.__file = "colorui/components/cu-evaluate.vue"
+/* harmony default export */ __webpack_exports__["default"] = (component.exports);
+
+/***/ }),
+
+/***/ 153:
+/*!**********************************************************************************************************************************!*\
+  !*** D:/Lxd_worker/Reacts/LXD/Work/work/20220617_fenxiao/demo/colorui/components/cu-evaluate.vue?vue&type=template&id=0b2f4581& ***!
+  \**********************************************************************************************************************************/
+/*! exports provided: render, staticRenderFns, recyclableRender, components */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_cu_evaluate_vue_vue_type_template_id_0b2f4581___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../../360Downloads/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../../../360Downloads/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!../../../../../../../../../360Downloads/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../../../../../../360Downloads/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../../../360Downloads/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../../../../../360Downloads/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./cu-evaluate.vue?vue&type=template&id=0b2f4581& */ 154);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_cu_evaluate_vue_vue_type_template_id_0b2f4581___WEBPACK_IMPORTED_MODULE_0__["render"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_cu_evaluate_vue_vue_type_template_id_0b2f4581___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_cu_evaluate_vue_vue_type_template_id_0b2f4581___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_cu_evaluate_vue_vue_type_template_id_0b2f4581___WEBPACK_IMPORTED_MODULE_0__["components"]; });
+
+
+
+/***/ }),
+
+/***/ 154:
+/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/Lxd_worker/Reacts/LXD/Work/work/20220617_fenxiao/demo/colorui/components/cu-evaluate.vue?vue&type=template&id=0b2f4581& ***!
+  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*! exports provided: render, staticRenderFns, recyclableRender, components */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
+var components
+try {
+  components = {
+    cuRate: function() {
+      return __webpack_require__.e(/*! import() | colorui/components/cu-rate */ "colorui/components/cu-rate").then(__webpack_require__.bind(null, /*! @/colorui/components/cu-rate.vue */ 183))
+    }
+  }
+} catch (e) {
+  if (
+    e.message.indexOf("Cannot find module") !== -1 &&
+    e.message.indexOf(".vue") !== -1
+  ) {
+    console.error(e.message)
+    console.error("1. 排查组件名称拼写是否正确")
+    console.error(
+      "2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom"
+    )
+    console.error(
+      "3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件"
+    )
+  } else {
+    throw e
+  }
+}
+var render = function() {
+  var _vm = this
+  var _h = _vm.$createElement
+  var _c = _vm._self._c || _h
+}
+var recyclableRender = false
+var staticRenderFns = []
+render._withStripped = true
+
+
+
+/***/ }),
+
+/***/ 155:
+/*!****************************************************************************************************************************!*\
+  !*** D:/Lxd_worker/Reacts/LXD/Work/work/20220617_fenxiao/demo/colorui/components/cu-evaluate.vue?vue&type=script&lang=js& ***!
+  \****************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_cu_evaluate_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../../../360Downloads/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../../../360Downloads/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!../../../../../../../../../360Downloads/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../../../../../../360Downloads/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../../../../../../360Downloads/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./cu-evaluate.vue?vue&type=script&lang=js& */ 156);
+/* harmony import */ var _360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_cu_evaluate_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_cu_evaluate_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
+/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_cu_evaluate_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_cu_evaluate_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
+ /* harmony default export */ __webpack_exports__["default"] = (_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_360Downloads_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_cu_evaluate_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); 
+
+/***/ }),
+
+/***/ 156:
+/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/Lxd_worker/Reacts/LXD/Work/work/20220617_fenxiao/demo/colorui/components/cu-evaluate.vue?vue&type=script&lang=js& ***!
+  \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var cuRate = function cuRate() {__webpack_require__.e(/*! require.ensure | colorui/components/cu-rate */ "colorui/components/cu-rate").then((function () {return resolve(__webpack_require__(/*! ./cu-rate.vue */ 183));}).bind(null, __webpack_require__)).catch(__webpack_require__.oe);};var _default2 =
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{
+  components: {
+    cuRate: cuRate },
+
+  props: {
+    value: {
+      type: Object, default: function _default() {return {};} } },
+
+
+  methods: {
+    preview: function preview(index) {
+      uni.previewMedia({
+        sources: this.value.imgs,
+        current: index });
+
+    } } };exports.default = _default2;
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["default"]))
+
+/***/ })
+
+}]);
+//# sourceMappingURL=../../../.sourcemap/mp-weixin/colorui/components/cu-evaluate.js.map
+;(global["webpackJsonp"] = global["webpackJsonp"] || []).push([
+    'colorui/components/cu-evaluate-create-component',
+    {
+        'colorui/components/cu-evaluate-create-component':(function(module, exports, __webpack_require__){
+            __webpack_require__('1')['createComponent'](__webpack_require__(152))
+        })
+    },
+    [['colorui/components/cu-evaluate-create-component']]
+]);

+ 6 - 0
unpackage/dist/dev/mp-weixin/colorui/components/cu-evaluate.json

@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+    "cu-rate": "/colorui/components/cu-rate"
+  }
+}

+ 1 - 0
unpackage/dist/dev/mp-weixin/colorui/components/cu-evaluate.wxml

@@ -0,0 +1 @@
+<view class="cu-evaluate padding-top bg-white"><view class="flex align-center justify-between"><view class="flex align-center"><image style="width:50rpx;height:50rpx;border-radius:50%;" lazy-load="true" src="{{value.avator}}"></image><text class="text-black text-bold margin-left-sm">{{value.nickname}}</text><view class="margin-left-sm"><cu-rate vue-id="5ab9eba5-1" value="{{value.rate}}" bind:__l="__l"></cu-rate></view></view><view class="text-grey">{{value.createTime}}</view></view><view class="text-grey padding-tb">{{''+value.detail+''}}</view><block wx:if="{{value.imgs}}"><scroll-view class="flex" style="height:200rpx;width:100%;" enable-flex="{{true}}" scroll-x="{{true}}"><block wx:for="{{value.imgs}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['preview',[index]]]]]}}" class="margin-right" bindtap="__e"><block wx:if="{{item.type=='image'}}"><image style="width:200rpx;min-width:200rpx;height:200rpx;" src="{{item.url}}" mode="aspectFill"></image></block><block wx:if="{{item.type=='video'}}"><video style="width:300rpx;min-width:300rpx;height:200rpx;" src="{{item.url}}" autoplay="{{true}}" loop="{{true}}" show-play-btn="false" controls="false" objectFit="cover" muted="{{true}}"></video></block></view></block></scroll-view></block></view>

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 171 - 0
unpackage/dist/dev/mp-weixin/colorui/components/cu-evaluateA.js


+ 4 - 0
unpackage/dist/dev/mp-weixin/colorui/components/cu-evaluateA.json

@@ -0,0 +1,4 @@
+{
+  "usingComponents": {},
+  "component": true
+}

+ 1 - 0
unpackage/dist/dev/mp-weixin/colorui/components/cu-evaluateA.wxml

@@ -0,0 +1 @@
+<view class="cu-evaluateA  bg-white margin radius padding data-v-5ba47490"><view class="flex data-v-5ba47490"><image class="radius margin-right-sm data-v-5ba47490" style="width:160rpx;height:160rpx;min-width:160rpx;" lazy-load="true" src="{{value.img}}" mode="aspectFit"></image><view class="padding-tb text-black cut data-v-5ba47490" style="flex:auto;">{{''+value.name+''}}</view></view><view class="padding-top border data-v-5ba47490"><view class="flex justify-between align-center data-v-5ba47490"><view class="text-gray data-v-5ba47490">{{value.create_time}}</view><button data-event-opts="{{[['tap',[['$emit',['click','$0'],['value']]]]]}}" class="cu-btn bg-red round data-v-5ba47490" bindtap="__e">删除评价</button></view><view class="text-gray padding-tb data-v-5ba47490">{{''+value.detail+''}}</view><block wx:if="{{value.imgs}}"><scroll-view class="flex data-v-5ba47490" style="height:200rpx;width:100%;" enable-flex="{{true}}" scroll-x="{{true}}"><block wx:for="{{value.imgs}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['preview',[index]]]]]}}" class="margin-right data-v-5ba47490" bindtap="__e"><block wx:if="{{item.type=='image'}}"><image style="width:200rpx;min-width:200rpx;height:200rpx;" src="{{item.url}}" mode="aspectFill" class="data-v-5ba47490"></image></block><block wx:if="{{item.type=='video'}}"><video style="width:300rpx;min-width:300rpx;height:200rpx;" src="{{item.url}}" autoplay="{{true}}" loop="{{true}}" show-play-btn="false" controls="false" objectFit="cover" muted="{{true}}" class="data-v-5ba47490"></video></block></view></block></scroll-view></block></view></view>

+ 21 - 0
unpackage/dist/dev/mp-weixin/colorui/components/cu-evaluateA.wxss

@@ -0,0 +1,21 @@
+.cu-evaluateA .cut.data-v-5ba47490 {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  display: -webkit-box;
+  -webkit-box-orient: vertical;
+  -webkit-line-clamp: 3;
+}
+.cu-evaluateA .border.data-v-5ba47490 {
+  position: relative;
+}
+.cu-evaluateA .border.data-v-5ba47490:before {
+  content: "";
+  position: absolute;
+  width: 100%;
+  left: 0;
+  top: 0;
+  border-top: 1rpx solid #bbb;
+  -webkit-transform: scale(1, 0.5);
+          transform: scale(1, 0.5);
+}
+

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 159 - 0
unpackage/dist/dev/mp-weixin/colorui/components/cu-evaluateB.js


+ 4 - 0
unpackage/dist/dev/mp-weixin/colorui/components/cu-evaluateB.json

@@ -0,0 +1,4 @@
+{
+  "usingComponents": {},
+  "component": true
+}

+ 1 - 0
unpackage/dist/dev/mp-weixin/colorui/components/cu-evaluateB.wxml

@@ -0,0 +1 @@
+<view class="cu-evaluateB bg-white margin radius padding data-v-5bb28c11"><view class="flex data-v-5bb28c11"><image class="radius margin-right-sm data-v-5bb28c11" style="width:160rpx;height:160rpx;min-width:160rpx;" lazy-load="true" src="{{value.img}}" mode="aspectFit"></image><view class="content margin-right-sm data-v-5bb28c11" style="flex:auto;"><view class="text-black cut data-v-5bb28c11">{{value.name}}</view><view class="text-grey margin-top-xs data-v-5bb28c11">{{value.parameter}}</view><block wx:if="{{value.custom}}"><view class="text-red margin-top-xs data-v-5bb28c11">{{value.custom}}</view></block></view><view style="min-width:160rpx;" class="data-v-5bb28c11"><button data-event-opts="{{[['tap',[['$emit',['click','$0'],['value']]]]]}}" class="cu-btn bg-red round data-v-5bb28c11" bindtap="__e">评价有礼</button></view></view></view>

+ 8 - 0
unpackage/dist/dev/mp-weixin/colorui/components/cu-evaluateB.wxss

@@ -0,0 +1,8 @@
+.cu-evaluateB .cut.data-v-5bb28c11 {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  display: -webkit-box;
+  -webkit-box-orient: vertical;
+  -webkit-line-clamp: 2;
+}
+

+ 0 - 7
unpackage/dist/dev/mp-weixin/colorui/components/cu-good.json

@@ -1,7 +0,0 @@
-{
-  "component": true,
-  "usingComponents": {
-    "cu-modal-c": "/colorui/components/cu-modalC",
-    "cu-price": "/colorui/components/cu-price"
-  }
-}

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
unpackage/dist/dev/mp-weixin/colorui/components/cu-good.wxml


Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio