YZM 2 years ago
parent
commit
e8d23dad89
43 changed files with 1442 additions and 129 deletions
  1. 9 1
      api/request.js
  2. 7 13
      pages/changan/index.vue
  3. 3 3
      pages/dizhi/index.vue
  4. 8 5
      pages/shouhuodi/index.vue
  5. 12 2
      pages/shouye/index.vue
  6. 3 3
      pages/shouyedetail/index.vue
  7. 4 5
      pages/user/index.vue
  8. 43 18
      pages/wardrobe/index.vue
  9. 25 0
      uni_modules/css-float-ball/changelog.md
  10. 65 0
      uni_modules/css-float-ball/components/css-float-ball/css-float-ball.vue
  11. 37 0
      uni_modules/css-float-ball/components/css-float-ball/index.scss
  12. 21 0
      uni_modules/css-float-ball/components/css-float-ball/mixin.js
  13. 64 0
      uni_modules/css-float-ball/components/css-float-ball/util.js
  14. 84 0
      uni_modules/css-float-ball/package.json
  15. 77 0
      uni_modules/css-float-ball/readme.md
  16. 6 0
      uni_modules/uni-scss/changelog.md
  17. 1 0
      uni_modules/uni-scss/index.scss
  18. 95 0
      uni_modules/uni-scss/manifest.json
  19. 82 0
      uni_modules/uni-scss/package.json
  20. 4 0
      uni_modules/uni-scss/readme.md
  21. 7 0
      uni_modules/uni-scss/styles/index.scss
  22. 3 0
      uni_modules/uni-scss/styles/setting/_border.scss
  23. 66 0
      uni_modules/uni-scss/styles/setting/_color.scss
  24. 55 0
      uni_modules/uni-scss/styles/setting/_radius.scss
  25. 56 0
      uni_modules/uni-scss/styles/setting/_space.scss
  26. 167 0
      uni_modules/uni-scss/styles/setting/_styles.scss
  27. 24 0
      uni_modules/uni-scss/styles/setting/_text.scss
  28. 146 0
      uni_modules/uni-scss/styles/setting/_variables.scss
  29. 19 0
      uni_modules/uni-scss/styles/tools/functions.scss
  30. 31 0
      uni_modules/uni-scss/theme.scss
  31. 62 0
      uni_modules/uni-scss/variables.scss
  32. 0 1
      unpackage/dist/build/app-plus/app-config-service.js
  33. 0 0
      unpackage/dist/build/app-plus/app-service.js
  34. 0 0
      unpackage/dist/build/app-plus/app-view.js
  35. BIN
      unpackage/dist/build/app-plus/static/img/103.png
  36. BIN
      unpackage/dist/build/app-plus/static/img/104.png
  37. BIN
      unpackage/dist/build/app-plus/static/img/105.png
  38. BIN
      unpackage/dist/build/app-plus/static/img/106.png
  39. BIN
      unpackage/dist/build/app-plus/static/img/107.png
  40. BIN
      unpackage/dist/build/app-plus/static/img/108.png
  41. BIN
      unpackage/dist/build/app-plus/static/img/109.png
  42. 0 0
      unpackage/dist/dev/app-plus/app-service.js
  43. 156 78
      unpackage/dist/dev/app-plus/app-view.js

+ 9 - 1
api/request.js

@@ -24,7 +24,15 @@ export const myRequest = (options) => {
 			},
 			data: obj_data,
 			success: (res) => {
-				resolve(res)
+				console.log(res)
+				if(res.data.msg=="登入已过期"){
+					uni.redirectTo({
+						url:"/pages/login/index"
+					})
+				}else{
+					resolve(res)
+				}
+				
 			},
 			fail: (err) => {
 				uni.showToast({

+ 7 - 13
pages/changan/index.vue

@@ -18,7 +18,7 @@
 			<!-- 衣橱 -->
 			<tm-sheet class="yichu" style="margin-bottom: 70px !important;">
 				<tm-tabs class="C1b1b1b qiehuan" @change="fenleichange" color="white"  align="left"  v-model="activeIndex" :list="list" range-key="title"></tm-tabs>
-				<view class="yiguicla black pa-6 ma-4 fl" :class="item.aa?'C0178FD':''" v-for="(item,index) in quanbuList" @click="yifu(index,item)">
+				<view class="yiguicla black pa-6 ma-4 fl" v-for="(item,index) in quanbuList" @click="yifu(index,item)">
 					<image :src="item.src" mode="widthFix"></image>
 					<view class="text-align-center text-size-m mt-8">{{item.text}}</view>
 					<view class="text-align-center text-size-m mt-6 mb-6">{{item.type}}</view>
@@ -52,33 +52,27 @@ export default {
 			quanbuList:[{
 				src:'/static/img/45.png',
 				text:'NEO CITY 涂鸦',
-				type:'手提包',
-				aa:false
+				type:'手提包'
 			},{
 				src:'/static/img/46.png',
 				text:'满印迷你标识',
-				type:'围巾',
-				aa:false
+				type:'围巾'
 			},{
 				src:'/static/img/47.png',
 				text:'大号版型夹克',
-				type:'新品',
-				aa:false
+				type:'新品'
 			},{
 				src:'/static/img/45.png',
 				text:'NEO CITY 涂鸦',
-				type:'手提包',
-				aa:false
+				type:'手提包'
 			},{
 				src:'/static/img/46.png',
 				text:'满印迷你标识',
-				type:'围巾',
-				aa:false
+				type:'围巾'
 			},{
 				src:'/static/img/47.png',
 				text:'大号版型夹克',
-				type:'新品',
-				aa:false
+				type:'新品'
 			}],
 			chooseindex:-1
 		};

+ 3 - 3
pages/dizhi/index.vue

@@ -62,9 +62,9 @@ export default {
 	},
 	methods: {
 		xinjian(){
-			uni.navigateTo({
-				url: "/pages/shouhuodi/index",
-			})
+			// uni.navigateTo({
+			// 	url: "/pages/shouhuodi/index",
+			// })
 		}
 	},
 }

+ 8 - 5
pages/shouhuodi/index.vue

@@ -11,7 +11,7 @@
 					<tm-input title="详细地址" placeholder="街道、楼牌号等"></tm-input>
 				</view>
 			</tm-sheet>
-			<tm-sheet class="kuang" style="padding-bottom: 40px !important;">
+			<tm-sheet class="kuang" style="padding-bottom: 20px !important;">
 				<view style="width: 94%;margin:0 auto;padding-top:15px;">
 					<view class="fl text-white mt-10" style="width: 15%;">标签</view>
 					<view class="fl" style="width: 80%;">
@@ -22,6 +22,11 @@
 						<tm-button class="ml-20" :round="10" theme="gray" size="s">+</tm-button>
 					</view>
 					<view style="clear: both;"></view>
+					<tm-listitem title="设置为默认地址">
+						<template v-slot:rightIcon="">
+							<tm-switch offBgcolor="yellow text-black" :text="['','']" color="primary" v-model="on"></tm-switch>
+						</template>
+					</tm-listitem>
 				</view>
 			</tm-sheet>
 			<tm-button :round="24" class="sao mb-40 mt-40" block>保存</tm-button>
@@ -35,10 +40,7 @@ import{myRequest} from '@/api/request.js'
 export default {
 	data() {
 		return {
-			checked1:false,
-			checked2:false,
-			checked3:false,
-			beizu:''
+			on:false,
 		};
 	},
 	onLoad() {
@@ -61,4 +63,5 @@ export default {
 	/deep/ .border-grey-darken-4-b-1{border-bottom:solid 1px #303030;}
 	.sao{width: 88%;margin:0 auto;margin-top: 30px;}
 	/deep/ .tm-button-label{color: white;}
+	/deep/ .tm-listitem{border-top: 1px solid #303030;margin-top: 15px;}
 </style>

+ 12 - 2
pages/shouye/index.vue

@@ -71,7 +71,7 @@
 						<image @click="jihuashang()" class="anniu mr-10" src="/static/img/18.png" mode="widthFix"></image>
 					</tm-translate>
 					<view class="bbb">
-						<tm-swiper class="aaa" :previmage="false" :noSwiping="true" :current="current1" :autoplay="false" :list="list1"></tm-swiper>
+						<tm-swiper @click="tiao" class="aaa" :previmage="false" :noSwiping="true" :current="current1" :autoplay="false" :list="list1"></tm-swiper>
 					</view>
 					<tm-translate class="a_1" ref="a_4" :auto="true" :duration="80"  animation-name="zoomIn" style="right: 0px;">
 						<image @click="jihuaxia()" class="anniu mr-10" src="/static/img/19.png" mode="widthFix"></image>
@@ -87,7 +87,7 @@
 				</view>
 				<view class="text-size-g jihua remen">
 					<view style="width: 48%;" class="fl">
-						<view v-for="(item,index) in listdata" v-if="index%2==0" class="round-3 shadow-2 overflow pa-10 mt-20" :class="[$tm.vx.state().tmVuetify.black ? 'black' : 'white']">
+						<view @click="tiaodapei()" v-for="(item,index) in listdata" v-if="index%2==0" class="round-3 shadow-2 overflow pa-10 mt-20" :class="[$tm.vx.state().tmVuetify.black ? 'black' : 'white']">
 							<image class="logo" :src="item.image" mode="widthFix"></image>
 							<view class="pa-10 text-size-s">
 								<view class="text-overflow-2">
@@ -234,6 +234,16 @@
 			this.randouh()
 		},
 		methods: {
+			tiaodapei(){
+				uni.navigateTo({
+					url: "/pages/zidingyi/index",
+				})
+			},
+			tiao(){
+				uni.navigateTo({
+					url: "/pages/dapeizidingyi/index",
+				})
+			},
 			tiaoclick(e){
 				console.log(e)
 				uni.navigateTo({

+ 3 - 3
pages/shouyedetail/index.vue

@@ -97,9 +97,9 @@ export default {
 	},
 	methods: {
 		jiarufuFun(data){
-			// uni.navigateTo({
-			// 	url: "/pages/gouwuche/index",
-			// })
+			uni.navigateTo({
+				url: "/pages/shopdetail/index",
+			})
 			console.log(data)
 			// this.gouwuche.push(data)
 		},

+ 4 - 5
pages/user/index.vue

@@ -77,18 +77,17 @@ export default {
 		};
 	},
 	onLoad() {
-		console.log(this.$store.state)
+		
 	},
 	created() {
 		this.sys = uni.getSystemInfoSync();
-		console.log(this.$store.state)
 	},
 	methods: {
 		tiaozhuan(type){
 			if(type==1){
-				uni.navigateTo({
-					url: "/pages/qianbao/index",
-				})
+				// uni.navigateTo({
+				// 	url: "/pages/qianbao/index",
+				// })
 			}else if(type==2){
 				uni.navigateTo({
 					url: "/pages/pingjia/index",

+ 43 - 18
pages/wardrobe/index.vue

@@ -57,8 +57,8 @@
 			</div>
 			<!-- 衣橱 -->
 			<tm-sheet class="yichu" style="margin-bottom: 70px !important;">
-				<tm-tabs class="C1b1b1b qiehuan" @change="fenleichange" color="white"  align="left"  v-model="activeIndex" :list="list" range-key="title"></tm-tabs>
-				<view class="yiguicla black pa-6 ma-4 fl" :class="index==chooseindex?'C0178FD':''" v-for="(item,index) in quanbuList" @longpress="longpress(item)">
+				<tm-tabs class="C1b1b1b qiehuan" @change="fenleichangeFun" color="white"  align="left"  v-model="activeIndex" :list="list" range-key="title"></tm-tabs>
+				<view class="yiguicla black pa-6 ma-4 fl" :class="index==chooseindex?'C0178FD':''" v-for="(item,index) in quanbuList" @longtap="longtap">
 					<image :src="item.src" mode="widthFix"></image>
 					<view class="text-align-center text-size-m mt-8">{{item.text}}</view>
 					<view class="text-align-center text-size-m mt-6 mb-6">{{item.type}}</view>
@@ -70,14 +70,18 @@
 			</tm-sheet>
 		</view>
 		<!-- 待取衣服 -->
-		<tm-translate ref="a_1" :auto="true" animation-name="fadeLeft">
-			<view class="fudong" @click="chuku">
-				<image src="/static/img/96.png" class="fudimg fl"></image>
-				<view class="pt-20">待取衣物</view>
-				<view>(<text style="color: #FFCC00;">3</text>件)</view>
-			</view>
-		</tm-translate>
 		
+		<css-float-ball v-model="floatBallPosition">
+		  <view class="float-ball-icon" hover-class="default-icon-hover">
+		    <tm-translate ref="a_1" :auto="true" animation-name="fadeLeft">
+		    	<view class="fudong" @click="chuku">
+		    		<image src="/static/img/96.png" class="fudimg fl"></image>
+		    		<view class="pt-20">待取衣物</view>
+		    		<view>(<text style="color: #FFCC00;">3</text>件)</view>
+		    	</view>
+		    </tm-translate>
+		  </view>
+		</css-float-ball>
 	</view>
 </template>	
 <script>
@@ -85,6 +89,7 @@ import{myRequest} from '@/api/request.js'
 export default {
 	data() {
 		return {
+			floatBallPosition:{x: 400, y: 750},
 			itemuser:0,
 			soso:'',
 			activeIndex:0,
@@ -130,18 +135,39 @@ export default {
 	},
 	created() {
 		this.sys = uni.getSystemInfoSync();
-		
 		console.log("222")
-		// this.getfenltext()
+		this.getfenltext()
 		this.fenleichange();
 	},
 	methods: {
-		longpress(){
-			console.log("111")
-			uni.navigateTo({
-				url: "/pages/changan/index",
+		fenleichangeFun(){
+			var that=this;
+			// role_id:,id:
+			myRequest({
+				url: "/api/Goods/classificationData",
+				method:'post',
+				data:{role_id:that.itemuser.id,id:that.activeIndex}
+			}).then(res => {
+				// if (res.data.code == 200) {
+				// 	if(res.data.data.length != 0){
+				// 		that.list=['全部'];
+				// 		for(let i=0;i<res.data.data.length;i++){
+				// 			that.list.push(res.data.data[i].category_name)
+				// 		}
+				// 		that.listlx=res.data.data;
+				// 	}
+				// }else{
+				// 	that.list=[];
+				// 	that.listlx=[];
+				// }
 			})
 		},
+		longtap(){
+			console.log("111")
+			// uni.navigateTo({
+			// 	url: "/pages/changan/index",
+			// })
+		},
 		chuku(){
 			uni.navigateTo({
 				url: "/pages/quchu/index",
@@ -152,14 +178,13 @@ export default {
 				url: "/pages/shopsoso/index",
 			})
 		},
-		fenleichange(e){
+		fenleichange(){
 			var that=this;
 			myRequest({
 				url: "/api/MemberInfo/getFamilyMember",
 				method:'post',
 				data:{family_id:uni.getStorageSync("family_id")}
 			}).then(res => {
-				console.log(res.data)
 				if (res.data.code == 200) {
 					if(res.data.data.length != 0){
 						var wu=0;
@@ -172,6 +197,7 @@ export default {
 						if(wu==0){
 							that.itemuser=res.data.data[0];
 						}
+						this.fenleichangeFun()
 					}else{
 						that.itemuser=0;
 					}
@@ -187,7 +213,6 @@ export default {
 				method:'post',
 				data:{}
 			}).then(res => {
-				console.log(res.data)
 				if (res.data.code == 200) {
 					if(res.data.data.length != 0){
 						that.list=['全部'];

+ 25 - 0
uni_modules/css-float-ball/changelog.md

@@ -0,0 +1,25 @@
+## 1.1.1(2022-05-20)
+修复已知问题
+## 1.0.9(2022-04-11)
+补充组件API说明
+## 1.0.8(2022-04-11)
+补充注释与使用说明
+## 1.0.7(2022-02-11)
+解决app上悬浮球变形问题
+## 1.0.6(2022-02-11)
+悬浮球全部交由外部实现
+## 1.0.5(2022-02-11)
+加入插槽,将内部交由外部实现
+减少防抖时间间隔
+增加内部插槽示例
+## 1.0.4(2022-02-11)
+修复页面滚动时,悬浮球位移问题
+## 1.0.3(2022-02-11)
+修复单独使用组件缺少样式问题
+## 1.0.2(2022-02-11)
+修复已知问题
+## 1.0.1(2022-02-11)
+悬浮球可超出边缘,修复已知问题
+## 1.0.0 (2022-02-10)
+
+基于uni-app的通用组件(支持App,微信小程序); 可拖拽的悬浮球,保持不同页面位置一致

+ 65 - 0
uni_modules/css-float-ball/components/css-float-ball/css-float-ball.vue

@@ -0,0 +1,65 @@
+<template>
+  <view class="float-ball-wrap" :style="{zIndex}">
+    <movable-area class="float-ball-movable-area">
+      <!--悬浮球主体-->
+      <movable-view :x="value.x" :y="value.y" class="float-ball" direction="all" inertia :animation="false"
+                    @change="drag" out-of-bounds>
+        <!--悬浮球外部插槽-->
+		<slot></slot>
+      </movable-view>
+    </movable-area>
+  </view>
+</template>
+
+<script>
+import {debounce} from './util'
+
+export default {
+  name: 'css-float-ball',
+  props: {
+    zIndex: {
+      type: [String, Number],
+      default: 999,
+    },
+    autoBox: {
+      type: [Boolean],
+      default: true,
+    },
+    value: {
+      type: Object,
+      required: true,
+      default() {
+        return {x: 360, y: 256}
+      }
+    },
+    //防抖时长
+    debounce:{
+      type: Number,
+      default:128,
+    },
+  },
+  computed: {},
+  data() {
+    return {}
+  },
+  methods: {
+    /**
+     * 拖动时,更新globalData,也可以用vuex替代
+     * @param e
+     */
+    drag(e) {
+      const _this = this;
+      debounce(function () {
+        getApp().globalData.globalFloatBallPosition = e.detail;
+      }, _this.debounce)
+    },
+  },
+}
+</script>
+<style lang="scss" scoped>
+@import "index";
+
+.default-icon-hover {
+  opacity: 0.6;
+}
+</style>

+ 37 - 0
uni_modules/css-float-ball/components/css-float-ball/index.scss

@@ -0,0 +1,37 @@
+.defaultFlex{
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.float-ball-wrap {
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: 9999;
+  width: 100vw;
+  height: 100vh;
+  pointer-events: none;
+  overflow: hidden;
+
+}
+.float-ball-movable-area {
+  @extend .defaultFlex;
+  position: relative;
+  top: -2.5%;
+  left: -5%;
+  z-index: 16;
+  width: 110%;
+  height: 105%;
+
+
+}
+.float-ball {
+  flex: 1;
+  pointer-events: auto;
+  width: auto;
+  height: auto;
+  @extend .defaultFlex;
+  z-index: 16;
+  background-color: white;
+  border-radius: 50%;
+}

+ 21 - 0
uni_modules/css-float-ball/components/css-float-ball/mixin.js

@@ -0,0 +1,21 @@
+export default {
+    data() {
+        return {
+            floatBallPosition: {x: 360, y: 256}
+        }
+    },
+    methods: {
+        /**
+         * 调用getApp()获取globalData中的悬浮球最新位置
+         */
+        floatBallPositionChange(){
+            this.floatBallPosition = getApp().globalData.globalFloatBallPosition
+        },
+    },
+    /**
+     * 页面显示时
+     */
+    onShow() {
+        this.floatBallPositionChange();
+    },
+}

+ 64 - 0
uni_modules/css-float-ball/components/css-float-ball/util.js

@@ -0,0 +1,64 @@
+let timeout = null;
+
+/**
+ * 最好用lodash的debounce!!!
+ * 防抖原理:一定时间内,只有最后一次操作,再过wait毫秒后才执行函数
+ * @param {Function} func 要执行的回调函数
+ * @param {Number} wait 延时的时间
+ * @param {Boolean} immediate 是否立即执行
+ * @return null
+ */
+function debounce(func, wait = 500, immediate = false) {
+  // 清除定时器
+  if (timeout !== null) clearTimeout(timeout);
+  // 立即执行,此类情况一般用不到
+  if (immediate) {
+    var callNow = !timeout;
+    timeout = setTimeout(function () {
+      timeout = null;
+    }, wait);
+    if (callNow) typeof func === 'function' && func();
+  } else {
+    // 设置定时器,当最后一次操作后,timeout不会再被清除,所以在延时wait毫秒后执行func回调方法
+    timeout = setTimeout(function () {
+      typeof func === 'function' && func();
+    }, wait);
+  }
+}
+
+let timer, flag;
+
+/**
+ * 最好用lodash的throttle!!!
+ * 节流原理:在一定时间内,只能触发一次
+ * @param {Function} func 要执行的回调函数
+ * @param {Number} wait 延时的时间
+ * @param {Boolean} immediate 是否立即执行
+ * @return null
+ */
+function throttle(func, wait = 500, immediate = true) {
+  if (immediate) {
+    if (!flag) {
+      flag = true;
+      // 如果是立即执行,则在wait毫秒内开始时执行
+      typeof func === 'function' && func();
+      timer = setTimeout(() => {
+        flag = false;
+      }, wait);
+    }
+  } else {
+    if (!flag) {
+      flag = true
+      // 如果是非立即执行,则在wait毫秒内的结束处执行
+      timer = setTimeout(() => {
+        flag = false
+        typeof func === 'function' && func();
+      }, wait);
+    }
+    
+  }
+}
+export {
+  throttle,
+  debounce
+}

+ 84 - 0
uni_modules/css-float-ball/package.json

@@ -0,0 +1,84 @@
+{
+  "id": "css-float-ball",
+  "displayName": "uniapp-movable 可拖动悬浮球",
+  "version": "1.1.1",
+  "description": "导入组件并将统一方法mixin至页面当中,保证引用悬浮球的页面,悬浮位置一致。",
+  "keywords": [
+    "悬浮球",
+    "可拖动悬浮球",
+    "uniapp",
+    "movable-view",
+    "movable-area"
+],
+  "repository": "",
+  "engines": {
+    "HBuilderX": "^3.3.10"
+  },
+  "dcloudext": {
+    "category": [
+        "前端组件",
+        "通用组件"
+    ],
+    "sale": {
+      "regular": {
+        "price": "0.00"
+      },
+      "sourcecode": {
+        "price": "0.00"
+      }
+    },
+    "contact": {
+      "qq": ""
+    },
+    "declaration": {
+      "ads": "无",
+      "data": "插件不采集任何数据",
+      "permissions": "无"
+    },
+    "npmurl": ""
+  },
+  "uni_modules": {
+    "dependencies": [],
+    "encrypt": [],
+    "platforms": {
+      "cloud": {
+        "tcb": "y",
+        "aliyun": "y"
+      },
+      "client": {
+        "Vue": {
+          "vue2": "y",
+          "vue3": "u"
+        },
+        "App": {
+          "app-vue": "y",
+          "app-nvue": "n"
+        },
+        "H5-mobile": {
+          "Safari": "u",
+          "Android Browser": "u",
+          "微信浏览器(Android)": "u",
+          "QQ浏览器(Android)": "u"
+        },
+        "H5-pc": {
+          "Chrome": "u",
+          "IE": "u",
+          "Edge": "u",
+          "Firefox": "u",
+          "Safari": "u"
+        },
+        "小程序": {
+          "微信": "y",
+          "阿里": "u",
+          "百度": "u",
+          "字节跳动": "u",
+          "QQ": "u"
+        },
+        "快应用": {
+          "华为": "u",
+          "联盟": "u"
+        }
+      }
+    }
+  }
+}

+ 77 - 0
uni_modules/css-float-ball/readme.md

@@ -0,0 +1,77 @@
+## Attributes
+
+------
+|   参数	           |  说明        |  类型       |  可选值    | 默认值|
+| ----             |    ----    |    ----    |   ----    | ---- |
+|  value / v-model |    悬浮球位置 |    Object  | — | — |
+| zIndex |    叠加顺序    |    String/Number    | — | 999 |
+| debounce |    防抖时长    |    Number    | — | 128 |
+## 组件引用
+
+------
+### App.vue
+```vue
+<script>
+export default {
+  globalData: {
+    //定义全局变量以供各个页面使用
+    globalFloatBallPosition: {x: 360, y: 256},
+  },
+}
+</script>
+```
+### 需引用页面
+```vue
+<template>
+  <view class="workbench-wrap">
+    <!-- floatBallPosition已在插件的mixin文件中定义 -->
+    <css-float-ball v-model="floatBallPosition">
+      <!-- <ball/> 为自己实现的球本体。如示例内的<ball/>组件 -->
+      <!-- <ball/> -->
+      <view class="float-ball-icon" hover-class="default-icon-hover" @click="()=>{}">
+        <icon type="success" :size="48"/>
+      </view>
+    </css-float-ball>
+    <view class="workbench-main-wrap">
+    </view>
+  </view>
+</template>
+
+<script>
+// pages.json 中 easycom 为自动读取uni_modules内插件时,可省略
+// import CssFloatBall from  '@/uni_modules/css-float-ball/components/css-float-ball/css-float-ball'
+// import Ball from  '@/components/ball/ball'
+import FloatBallMixin from '../../uni_modules/css-float-ball/components/css-float-ball/mixin'
+
+export default {
+  name: 'WorkBench',
+  // pages.json 中 easycom 为自动读取uni_modules内插件时,可省略
+  // components:{
+  //   CssFloatBall,
+  //   Ball,
+  // },
+  mixins:[FloatBallMixin],
+}
+</script>
+<style lang="scss" scoped>
+@import "index";
+.float-ball-icon {
+  background-color: #FFF;
+  width: 128rpx;
+  height: 128rpx;
+  border-radius: 50%;
+  @extend .defaultFlex;
+  -webkit-box-shadow: 0rpx 8rpx 20rpx 8rpx rgba(204, 204, 204, 0.47);
+  -moz-box-shadow: 0rpx 8rpx 20rpx 8rpx rgba(204, 204, 204, 0.47);
+  box-shadow: 0rpx 8rpx 20rpx 8rpx rgba(204, 204, 204, 0.47);
+}
+</style>
+```
+## PS:
+在安卓、微信小程序流畅度还可以,其他平台暂未测试
+
+pages.json 中 easycom 为自动读取uni_modules内插件时,可省略引入组件
+
+防抖可以用lodash的debounce
+
+欢迎斧正

+ 6 - 0
uni_modules/uni-scss/changelog.md

@@ -0,0 +1,6 @@
+## 1.0.2(2021-11-22)
+- 修复 / 符号在 vue 不同版本兼容问题引起的报错问题
+## 1.0.1(2021-11-22)
+- 修复 vue3中scss语法兼容问题
+## 1.0.0(2021-11-18)
+- init

+ 1 - 0
uni_modules/uni-scss/index.scss

@@ -0,0 +1 @@
+@import './styles/index.scss';

+ 95 - 0
uni_modules/uni-scss/manifest.json

@@ -0,0 +1,95 @@
+{
+	"name" : "",
+	"appid" : "",
+	"description": "应用描述",
+	"versionName": "1.0.0",
+	"versionCode": "100",
+	"transformPx": false,
+	/* 5+App特有相关 */
+	"app-plus": {
+		"usingComponents": true,
+		"splashscreen": {
+			"alwaysShowBeforeRender": true,
+			"waiting": true,
+			"autoclose": true,
+			"delay": 0
+		},
+		"modules": {
+			"OAuth": {},
+			"Payment": {},
+			"Push": {},
+			"Share": {},
+			"Speech": {},
+			"VideoPlayer": {}
+		},
+		/* 应用发布信息 */
+		"distribute": {
+			/* android打包配置 */
+			"android": {
+				"permissions": [
+					"<uses-feature android:name=\"android.hardware.camera\"/>",
+					"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
+					"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_MOCK_LOCATION\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
+					"<uses-permission android:name=\"android.permission.CAMERA\"/>",
+					"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+					"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+					"<uses-permission android:name=\"android.permission.GET_TASKS\"/>",
+					"<uses-permission android:name=\"android.permission.INTERNET\"/>",
+					"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
+					"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+					"<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
+					"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+					"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+					"<uses-permission android:name=\"android.permission.READ_SMS\"/>",
+					"<uses-permission android:name=\"android.permission.RECEIVE_BOOT_COMPLETED\"/>",
+					"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
+					"<uses-permission android:name=\"android.permission.SEND_SMS\"/>",
+					"<uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\"/>",
+					"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+					"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+					"<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
+					"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
+					"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
+					"<uses-permission android:name=\"android.permission.WRITE_SMS\"/>",
+					"<uses-permission android:name=\"android.permission.RECEIVE_USER_PRESENT\"/>"
+				]
+			},
+			/* ios打包配置 */
+			"ios": {
+				"UIBackgroundModes": ["audio"]
+			},
+			/* SDK配置 */
+			"sdkConfigs": {
+				"speech": {
+					"ifly": {}
+				}
+			},
+			"orientation": ["portrait-primary"]
+		}
+	},
+	/* 快应用特有相关 */
+	"quickapp": {},
+	/* 小程序特有相关 */
+	"mp-weixin": {
+		"appid": "",
+		"setting": {
+			"urlCheck": false
+		},
+		"usingComponents": true
+	},
+	"h5": {
+		"template": "template.h5.html",
+		"router": {
+			"mode": "history",
+			"base": "/h5/"
+		}
+	}
+}

+ 82 - 0
uni_modules/uni-scss/package.json

@@ -0,0 +1,82 @@
+{
+  "id": "uni-scss",
+  "displayName": "uni-scss 辅助样式",
+  "version": "1.0.2",
+  "description": "uni-sass是uni-ui提供的一套全局样式 ,通过一些简单的类名和sass变量,实现简单的页面布局操作,比如颜色、边距、圆角等。",
+  "keywords": [
+    "uni-scss",
+    "uni-ui",
+    "辅助样式"
+],
+  "repository": "https://github.com/dcloudio/uni-ui",
+  "engines": {
+    "HBuilderX": "^3.1.0"
+  },
+  "dcloudext": {
+    "category": [
+        "uni-app前端模板",
+        "前端页面模板"
+    ],
+    "sale": {
+      "regular": {
+        "price": "0.00"
+      },
+      "sourcecode": {
+        "price": "0.00"
+      }
+    },
+    "contact": {
+      "qq": ""
+    },
+    "declaration": {
+      "ads": "无",
+      "data": "无",
+      "permissions": "无"
+    },
+    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+  },
+  "uni_modules": {
+    "dependencies": [],
+    "encrypt": [],
+    "platforms": {
+      "cloud": {
+        "tcb": "y",
+        "aliyun": "y"
+      },
+      "client": {
+        "App": {
+          "app-vue": "y",
+          "app-nvue": "u"
+        },
+        "H5-mobile": {
+          "Safari": "y",
+          "Android Browser": "y",
+          "微信浏览器(Android)": "y",
+          "QQ浏览器(Android)": "y"
+        },
+        "H5-pc": {
+          "Chrome": "y",
+          "IE": "y",
+          "Edge": "y",
+          "Firefox": "y",
+          "Safari": "y"
+        },
+        "小程序": {
+          "微信": "y",
+          "阿里": "y",
+          "百度": "y",
+          "字节跳动": "y",
+          "QQ": "y"
+        },
+        "快应用": {
+          "华为": "n",
+          "联盟": "n"
+        },
+        "Vue": {
+            "vue2": "y",
+            "vue3": "y"
+        }
+      }
+    }
+  }
+}

+ 4 - 0
uni_modules/uni-scss/readme.md

@@ -0,0 +1,4 @@
+`uni-sass` 是 `uni-ui`提供的一套全局样式 ,通过一些简单的类名和`sass`变量,实现简单的页面布局操作,比如颜色、边距、圆角等。
+
+### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-sass)
+#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 

+ 7 - 0
uni_modules/uni-scss/styles/index.scss

@@ -0,0 +1,7 @@
+@import './setting/_variables.scss';
+@import './setting/_border.scss';
+@import './setting/_color.scss';
+@import './setting/_space.scss';
+@import './setting/_radius.scss';
+@import './setting/_text.scss';
+@import './setting/_styles.scss';

+ 3 - 0
uni_modules/uni-scss/styles/setting/_border.scss

@@ -0,0 +1,3 @@
+.uni-border {
+	border: 1px $uni-border-1 solid;
+}

+ 66 - 0
uni_modules/uni-scss/styles/setting/_color.scss

@@ -0,0 +1,66 @@
+
+// TODO 暂时不需要 class ,需要用户使用变量实现 ,如果使用类名其实并不推荐
+// @mixin get-styles($k,$c) {
+// 	@if $k == size or $k == weight{
+// 		font-#{$k}:#{$c}
+// 	}@else{
+// 		#{$k}:#{$c}
+// 	}
+// }
+$uni-ui-color:(
+	// 主色
+	primary: $uni-primary,
+	primary-disable: $uni-primary-disable,
+	primary-light: $uni-primary-light,
+	// 辅助色
+	success: $uni-success,
+	success-disable: $uni-success-disable,
+	success-light: $uni-success-light,
+	warning: $uni-warning,
+	warning-disable: $uni-warning-disable,
+	warning-light: $uni-warning-light,
+	error: $uni-error,
+	error-disable: $uni-error-disable,
+	error-light: $uni-error-light,
+	info: $uni-info,
+	info-disable: $uni-info-disable,
+	info-light: $uni-info-light,
+	// 中性色
+	main-color: $uni-main-color,
+	base-color: $uni-base-color,
+	secondary-color: $uni-secondary-color,
+	extra-color: $uni-extra-color,
+	// 背景色
+	bg-color: $uni-bg-color,
+	// 边框颜色
+	border-1: $uni-border-1,
+	border-2: $uni-border-2,
+	border-3: $uni-border-3,
+	border-4: $uni-border-4,
+	// 黑色
+	black:$uni-black,
+	// 白色
+	white:$uni-white,
+	// 透明
+	transparent:$uni-transparent
+) !default;
+@each $key, $child in $uni-ui-color {
+	.uni-#{"" + $key} {
+		color: $child;
+	}
+	.uni-#{"" + $key}-bg {
+		background-color: $child;
+	}
+}
+.uni-shadow-sm {
+	box-shadow: $uni-shadow-sm;
+}
+.uni-shadow-base {
+	box-shadow: $uni-shadow-base;
+}
+.uni-shadow-lg {
+	box-shadow: $uni-shadow-lg;
+}
+.uni-mask {
+	background-color:$uni-mask;
+}

+ 55 - 0
uni_modules/uni-scss/styles/setting/_radius.scss

@@ -0,0 +1,55 @@
+@mixin radius($r,$d:null ,$important: false){
+  $radius-value:map-get($uni-radius, $r) if($important, !important, null);
+  // Key exists within the $uni-radius variable
+  @if (map-has-key($uni-radius, $r) and  $d){
+		@if $d == t {
+				border-top-left-radius:$radius-value;
+				border-top-right-radius:$radius-value;
+		}@else if $d == r {
+				border-top-right-radius:$radius-value;
+				border-bottom-right-radius:$radius-value;
+		}@else if $d == b {
+				border-bottom-left-radius:$radius-value;
+				border-bottom-right-radius:$radius-value;
+		}@else if $d == l {
+				border-top-left-radius:$radius-value;
+				border-bottom-left-radius:$radius-value;
+		}@else if $d == tl {
+				border-top-left-radius:$radius-value;
+		}@else if $d == tr {
+				border-top-right-radius:$radius-value;
+		}@else if $d == br {
+				border-bottom-right-radius:$radius-value;
+		}@else if $d == bl {
+				border-bottom-left-radius:$radius-value;
+		}
+  }@else{
+		border-radius:$radius-value;
+  }
+}
+
+@each $key, $child in $uni-radius {
+	@if($key){
+		.uni-radius-#{"" + $key} {
+				@include radius($key)
+		}
+	}@else{
+		.uni-radius {
+				@include radius($key)
+		}
+	}
+}
+
+@each $direction in t, r, b, l,tl, tr, br, bl {
+	@each $key, $child in $uni-radius {
+		@if($key){
+			.uni-radius-#{"" + $direction}-#{"" + $key} {
+				@include radius($key,$direction,false)
+			}
+		}@else{
+			.uni-radius-#{$direction} {
+				@include radius($key,$direction,false)
+			}
+		}
+	}
+}

+ 56 - 0
uni_modules/uni-scss/styles/setting/_space.scss

@@ -0,0 +1,56 @@
+
+@mixin fn($space,$direction,$size,$n) {
+	@if $n {
+		#{$space}-#{$direction}: #{$size*$uni-space-root}px
+	} @else {
+		 #{$space}-#{$direction}: #{-$size*$uni-space-root}px
+	}
+}
+@mixin get-styles($direction,$i,$space,$n){
+	@if $direction == t {
+		@include fn($space, top,$i,$n);
+	} 
+	@if $direction == r {
+		@include fn($space, right,$i,$n);
+	} 
+	@if $direction == b {
+		@include fn($space, bottom,$i,$n);
+	} 
+	@if $direction == l {
+	 @include fn($space, left,$i,$n);
+	} 
+	@if $direction == x {
+		@include fn($space, left,$i,$n);
+		@include fn($space, right,$i,$n);
+	} 
+	@if $direction == y {
+		@include fn($space, top,$i,$n);
+		@include fn($space, bottom,$i,$n);
+	} 
+	@if $direction == a {
+		@if $n {
+			#{$space}:#{$i*$uni-space-root}px;
+		} @else {
+			#{$space}:#{-$i*$uni-space-root}px;
+		}
+	} 
+}
+
+@each $orientation in m,p {
+	$space: margin;
+	@if $orientation == m {
+		$space: margin;
+	} @else {
+		$space: padding;
+	}
+	@for $i from 0 through 16 {
+		@each $direction in t, r, b, l, x, y, a {
+			.uni-#{$orientation}#{$direction}-#{$i} { 
+				@include  get-styles($direction,$i,$space,true);
+			} 
+			.uni-#{$orientation}#{$direction}-n#{$i} { 
+				@include  get-styles($direction,$i,$space,false);
+			}
+		}
+	}
+}

+ 167 - 0
uni_modules/uni-scss/styles/setting/_styles.scss

@@ -0,0 +1,167 @@
+/* #ifndef APP-NVUE */
+
+$-color-white:#fff;
+$-color-black:#000;
+@mixin base-style($color) {
+	color: #fff;
+	background-color: $color;
+	border-color: mix($-color-black, $color, 8%);
+	&:not([hover-class]):active {
+		background: mix($-color-black, $color, 10%);
+		border-color: mix($-color-black, $color, 20%);
+		color: $-color-white;
+		outline: none;
+	}
+}
+@mixin is-color($color) {
+	@include base-style($color);
+	&[loading] {
+		@include base-style($color);
+		&::before {
+			margin-right:5px;
+		}
+	}
+	&[disabled] {
+	  &,
+		&[loading],
+	  &:not([hover-class]):active {
+	    color: $-color-white;
+			border-color: mix(darken($color,10%), $-color-white);
+	    background-color: mix($color, $-color-white);
+	  }
+	}
+
+}
+@mixin base-plain-style($color) {
+	color:$color;
+	background-color: mix($-color-white, $color, 90%);
+	border-color: mix($-color-white, $color, 70%);
+	&:not([hover-class]):active {
+	  background: mix($-color-white, $color, 80%);
+	  color: $color;
+	  outline: none;
+		border-color: mix($-color-white, $color, 50%);
+	}
+}
+@mixin is-plain($color){
+	&[plain] {
+		@include base-plain-style($color);
+		&[loading] {
+			@include base-plain-style($color);
+			&::before {
+				margin-right:5px;
+			}
+		}
+		&[disabled] {
+		  &,
+		  &:active {
+		    color: mix($-color-white, $color, 40%);
+		    background-color: mix($-color-white, $color, 90%);
+				border-color: mix($-color-white, $color, 80%);
+		  }
+		}
+	}
+}
+
+
+.uni-btn {
+	margin: 5px;
+	color: #393939;
+	border:1px solid #ccc;
+	font-size: 16px;
+	font-weight: 200;
+	background-color: #F9F9F9;
+	// TODO 暂时处理边框隐藏一边的问题
+	overflow: visible;
+	&::after{
+		border: none;
+	}
+
+	&:not([type]),&[type=default] {
+		color: #999;
+		&[loading] {
+			background: none;
+			&::before {
+				margin-right:5px;
+			}
+		}
+
+
+
+		&[disabled]{
+			color: mix($-color-white, #999, 60%);
+		  &,
+			&[loading],
+		  &:active {
+				color: mix($-color-white, #999, 60%);
+		    background-color: mix($-color-white,$-color-black , 98%);
+				border-color: mix($-color-white,  #999, 85%);
+		  }
+		}
+
+		&[plain] {
+			color: #999;
+			background: none;
+			border-color: $uni-border-1;
+			&:not([hover-class]):active {
+				background: none;
+			  color: mix($-color-white, $-color-black, 80%);
+				border-color: mix($-color-white, $-color-black, 90%);
+			  outline: none;
+			}
+			&[disabled]{
+			  &,
+				&[loading],
+			  &:active {
+			    background: none;
+					color: mix($-color-white, #999, 60%);
+					border-color: mix($-color-white,  #999, 85%);
+			  }
+			}
+		}
+	}
+
+	&:not([hover-class]):active {
+	  color: mix($-color-white, $-color-black, 50%);
+	}
+
+	&[size=mini] {
+		font-size: 16px;
+		font-weight: 200;
+		border-radius: 8px;
+	}
+
+
+
+	&.uni-btn-small {
+		font-size: 14px;
+	}
+	&.uni-btn-mini {
+		font-size: 12px;
+	}
+
+	&.uni-btn-radius {
+		border-radius: 999px;
+	}
+	&[type=primary] {
+		@include is-color($uni-primary);
+		@include is-plain($uni-primary)
+	}
+	&[type=success] {
+		@include is-color($uni-success);
+		@include is-plain($uni-success)
+	}
+	&[type=error] {
+		@include is-color($uni-error);
+		@include is-plain($uni-error)
+	}
+	&[type=warning] {
+		@include is-color($uni-warning);
+		@include is-plain($uni-warning)
+	}
+	&[type=info] {
+		@include is-color($uni-info);
+		@include is-plain($uni-info)
+	}
+}
+/* #endif */

+ 24 - 0
uni_modules/uni-scss/styles/setting/_text.scss

@@ -0,0 +1,24 @@
+@mixin get-styles($k,$c) {
+	@if $k == size or $k == weight{
+		font-#{$k}:#{$c}
+	}@else{
+		#{$k}:#{$c}
+	}
+}
+
+@each $key, $child in $uni-headings {
+	/* #ifndef APP-NVUE */
+	.uni-#{$key} {
+		@each $k, $c in $child {
+			@include get-styles($k,$c)
+		}
+	}
+	/* #endif */
+	/* #ifdef APP-NVUE */
+	.container .uni-#{$key} {
+		@each $k, $c in $child {
+			@include get-styles($k,$c)
+		}
+	}
+	/* #endif */
+}

+ 146 - 0
uni_modules/uni-scss/styles/setting/_variables.scss

@@ -0,0 +1,146 @@
+// @use "sass:math";
+@import  '../tools/functions.scss';
+// 间距基础倍数
+$uni-space-root: 2 !default;
+// 边框半径默认值
+$uni-radius-root:5px !default;
+$uni-radius: () !default;
+// 边框半径断点
+$uni-radius: map-deep-merge(
+  (
+    0: 0,
+		// TODO 当前版本暂时不支持 sm 属性
+    // 'sm': math.div($uni-radius-root, 2),
+    null: $uni-radius-root,
+    'lg': $uni-radius-root * 2,
+    'xl': $uni-radius-root * 6,
+    'pill': 9999px,
+    'circle': 50%
+  ),
+  $uni-radius
+);
+// 字体家族
+$body-font-family: 'Roboto', sans-serif !default;
+// 文本
+$heading-font-family: $body-font-family !default;
+$uni-headings: () !default;
+$letterSpacing: -0.01562em;
+$uni-headings: map-deep-merge(
+  (
+    'h1': (
+      size: 32px,
+			weight: 300,
+			line-height: 50px,
+			// letter-spacing:-0.01562em
+    ),
+    'h2': (
+      size: 28px,
+      weight: 300,
+      line-height: 40px,
+      // letter-spacing: -0.00833em
+    ),
+    'h3': (
+      size: 24px,
+      weight: 400,
+      line-height: 32px,
+      // letter-spacing: normal
+    ),
+    'h4': (
+      size: 20px,
+      weight: 400,
+      line-height: 30px,
+      // letter-spacing: 0.00735em
+    ),
+    'h5': (
+      size: 16px,
+      weight: 400,
+      line-height: 24px,
+      // letter-spacing: normal
+    ),
+    'h6': (
+      size: 14px,
+      weight: 500,
+      line-height: 18px,
+      // letter-spacing: 0.0125em
+    ),
+    'subtitle': (
+      size: 12px,
+      weight: 400,
+      line-height: 20px,
+      // letter-spacing: 0.00937em
+    ),
+    'body': (
+      font-size: 14px,
+			font-weight: 400,
+			line-height: 22px,
+			// letter-spacing: 0.03125em
+    ),
+    'caption': (
+      'size': 12px,
+      'weight': 400,
+      'line-height': 20px,
+      // 'letter-spacing': 0.03333em,
+      // 'text-transform': false
+    )
+  ),
+  $uni-headings
+);
+
+
+
+// 主色
+$uni-primary: #2979ff !default;
+$uni-primary-disable:lighten($uni-primary,20%) !default;
+$uni-primary-light: lighten($uni-primary,25%) !default;
+
+// 辅助色
+// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。
+$uni-success: #18bc37 !default;
+$uni-success-disable:lighten($uni-success,20%) !default;
+$uni-success-light: lighten($uni-success,25%) !default;
+
+$uni-warning: #f3a73f !default;
+$uni-warning-disable:lighten($uni-warning,20%) !default;
+$uni-warning-light: lighten($uni-warning,25%) !default;
+
+$uni-error: #e43d33 !default;
+$uni-error-disable:lighten($uni-error,20%) !default;
+$uni-error-light: lighten($uni-error,25%) !default;
+
+$uni-info: #8f939c !default;
+$uni-info-disable:lighten($uni-info,20%) !default;
+$uni-info-light: lighten($uni-info,25%) !default;
+
+// 中性色
+// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。
+$uni-main-color: #3a3a3a !default; 			// 主要文字
+$uni-base-color: #6a6a6a !default;			// 常规文字
+$uni-secondary-color: #909399 !default;	// 次要文字
+$uni-extra-color: #c7c7c7 !default;			// 辅助说明
+
+// 边框颜色
+$uni-border-1: #F0F0F0 !default;
+$uni-border-2: #EDEDED !default;
+$uni-border-3: #DCDCDC !default;
+$uni-border-4: #B9B9B9 !default;
+
+// 常规色
+$uni-black: #000000 !default;
+$uni-white: #ffffff !default;
+$uni-transparent: rgba($color: #000000, $alpha: 0) !default;
+
+// 背景色
+$uni-bg-color: #f7f7f7 !default;
+
+/* 水平间距 */
+$uni-spacing-sm: 8px !default;
+$uni-spacing-base: 15px !default;
+$uni-spacing-lg: 30px !default;
+
+// 阴影
+$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5) !default;
+$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2) !default;
+$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5) !default;
+
+// 蒙版
+$uni-mask: rgba($color: #000000, $alpha: 0.4) !default;

+ 19 - 0
uni_modules/uni-scss/styles/tools/functions.scss

@@ -0,0 +1,19 @@
+// 合并 map
+@function map-deep-merge($parent-map, $child-map){
+	$result: $parent-map;
+	@each $key, $child in $child-map {
+		$parent-has-key: map-has-key($result, $key);
+		$parent-value: map-get($result, $key);
+		$parent-type: type-of($parent-value);
+		$child-type: type-of($child);
+		$parent-is-map: $parent-type == map;
+		$child-is-map: $child-type == map;
+			
+		@if (not $parent-has-key) or ($parent-type != $child-type) or (not ($parent-is-map and $child-is-map)){
+			$result: map-merge($result, ( $key: $child ));
+		}@else {
+			$result: map-merge($result, ( $key: map-deep-merge($parent-value, $child) ));
+		}
+	}
+	@return $result;
+};

+ 31 - 0
uni_modules/uni-scss/theme.scss

@@ -0,0 +1,31 @@
+// 间距基础倍数
+$uni-space-root: 2;
+// 边框半径默认值
+$uni-radius-root:5px;
+// 主色
+$uni-primary: #2979ff;
+// 辅助色
+$uni-success: #4cd964;
+// 警告色
+$uni-warning: #f0ad4e;
+// 错误色
+$uni-error: #dd524d;
+// 描述色
+$uni-info: #909399;
+// 中性色
+$uni-main-color: #303133;
+$uni-base-color: #606266;
+$uni-secondary-color: #909399;
+$uni-extra-color: #C0C4CC;
+// 背景色
+$uni-bg-color: #f5f5f5;
+// 边框颜色
+$uni-border-1: #DCDFE6;
+$uni-border-2: #E4E7ED;
+$uni-border-3: #EBEEF5;
+$uni-border-4: #F2F6FC;
+
+// 常规色
+$uni-black: #000000;
+$uni-white: #ffffff;
+$uni-transparent: rgba($color: #000000, $alpha: 0);

+ 62 - 0
uni_modules/uni-scss/variables.scss

@@ -0,0 +1,62 @@
+@import './styles/setting/_variables.scss';
+// 间距基础倍数
+$uni-space-root: 2;
+// 边框半径默认值
+$uni-radius-root:5px;
+
+// 主色
+$uni-primary: #2979ff;
+$uni-primary-disable:mix(#fff,$uni-primary,50%);
+$uni-primary-light: mix(#fff,$uni-primary,80%);
+
+// 辅助色
+// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。
+$uni-success: #18bc37;
+$uni-success-disable:mix(#fff,$uni-success,50%);
+$uni-success-light: mix(#fff,$uni-success,80%);
+
+$uni-warning: #f3a73f;
+$uni-warning-disable:mix(#fff,$uni-warning,50%);
+$uni-warning-light: mix(#fff,$uni-warning,80%);
+
+$uni-error: #e43d33;
+$uni-error-disable:mix(#fff,$uni-error,50%);
+$uni-error-light: mix(#fff,$uni-error,80%);
+
+$uni-info: #8f939c;
+$uni-info-disable:mix(#fff,$uni-info,50%);
+$uni-info-light: mix(#fff,$uni-info,80%);
+
+// 中性色
+// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。
+$uni-main-color: #3a3a3a; 			// 主要文字
+$uni-base-color: #6a6a6a;			// 常规文字
+$uni-secondary-color: #909399;	// 次要文字
+$uni-extra-color: #c7c7c7;			// 辅助说明
+
+// 边框颜色
+$uni-border-1: #F0F0F0;
+$uni-border-2: #EDEDED;
+$uni-border-3: #DCDCDC;
+$uni-border-4: #B9B9B9;
+
+// 常规色
+$uni-black: #000000;
+$uni-white: #ffffff;
+$uni-transparent: rgba($color: #000000, $alpha: 0);
+
+// 背景色
+$uni-bg-color: #f7f7f7;
+
+/* 水平间距 */
+$uni-spacing-sm: 8px;
+$uni-spacing-base: 15px;
+$uni-spacing-lg: 30px;
+
+// 阴影
+$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5);
+$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2);
+$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5);
+
+// 蒙版
+$uni-mask: rgba($color: #000000, $alpha: 0.4);

File diff suppressed because it is too large
+ 0 - 1
unpackage/dist/build/app-plus/app-config-service.js


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/build/app-plus/app-service.js


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/build/app-plus/app-view.js


BIN
unpackage/dist/build/app-plus/static/img/103.png


BIN
unpackage/dist/build/app-plus/static/img/104.png


BIN
unpackage/dist/build/app-plus/static/img/105.png


BIN
unpackage/dist/build/app-plus/static/img/106.png


BIN
unpackage/dist/build/app-plus/static/img/107.png


BIN
unpackage/dist/build/app-plus/static/img/108.png


BIN
unpackage/dist/build/app-plus/static/img/109.png


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/app-plus/app-service.js


File diff suppressed because it is too large
+ 156 - 78
unpackage/dist/dev/app-plus/app-view.js


Some files were not shown because too many files changed in this diff