hjr 4 ay önce
ebeveyn
işleme
0c3a4e3685
43 değiştirilmiş dosya ile 4982 ekleme ve 0 silme
  1. 24 0
      .gitignore
  2. 16 0
      .hbuilderx/launch.json
  3. 20 0
      App.vue
  4. 20 0
      index.html
  5. 24 0
      main.js
  6. 72 0
      manifest.json
  7. 76 0
      package.json
  8. 85 0
      pages.json
  9. 117 0
      pages/index/index.vue
  10. 14 0
      pages/tools/jingXuanBiZhi.vue
  11. 14 0
      pages/tools/quWeiCePing.vue
  12. 14 0
      pages/tools/shengBoChuChen.vue
  13. 14 0
      pages/tools/shouJiCeJu.vue
  14. 14 0
      pages/tools/shouJiQingLi.vue
  15. 14 0
      pages/tools/wangLuoXinXi.vue
  16. 14 0
      pages/tools/wifiGuanLi.vue
  17. 14 0
      pages/tools/yangShengKeTang.vue
  18. 80 0
      pages/tools/yiJianShengDian.vue
  19. 14 0
      pages/tools/yunDongJiBu.vue
  20. 14 0
      pages/tools/ziTiDaXiao.vue
  21. 674 0
      static/css/flex.css
  22. 2776 0
      static/css/fui.css
  23. 201 0
      static/css/uflex.css
  24. BIN
      static/image/index_banner.jpg
  25. BIN
      static/logo.png
  26. 10 0
      uni.promisify.adaptor.js
  27. 76 0
      uni.scss
  28. 16 0
      uni_modules/uni-getbatteryinfo/changelog.md
  29. 94 0
      uni_modules/uni-getbatteryinfo/package.json
  30. 38 0
      uni_modules/uni-getbatteryinfo/readme.md
  31. 3 0
      uni_modules/uni-getbatteryinfo/utssdk/app-android/config.json
  32. 84 0
      uni_modules/uni-getbatteryinfo/utssdk/app-android/index.uts
  33. 27 0
      uni_modules/uni-getbatteryinfo/utssdk/app-harmony/index.uts
  34. 3 0
      uni_modules/uni-getbatteryinfo/utssdk/app-ios/config.json
  35. 34 0
      uni_modules/uni-getbatteryinfo/utssdk/app-ios/index.uts
  36. 43 0
      uni_modules/uni-getbatteryinfo/utssdk/index.d.ts
  37. 147 0
      uni_modules/uni-getbatteryinfo/utssdk/interface.uts
  38. 6 0
      uni_modules/uni-getbatteryinfo/utssdk/mp-alipay/index.js
  39. 6 0
      uni_modules/uni-getbatteryinfo/utssdk/mp-baidu/index.js
  40. 6 0
      uni_modules/uni-getbatteryinfo/utssdk/mp-qq/index.js
  41. 6 0
      uni_modules/uni-getbatteryinfo/utssdk/mp-weixin/index.js
  42. 35 0
      uni_modules/uni-getbatteryinfo/utssdk/unierror.uts
  43. 23 0
      uni_modules/uni-getbatteryinfo/utssdk/web/index.js

+ 24 - 0
.gitignore

@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+.DS_Store
+dist
+*.local
+
+
+# Editor directories and files
+.idea
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+
+package-lock.json

+ 16 - 0
.hbuilderx/launch.json

@@ -0,0 +1,16 @@
+{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
+  // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
+    "version": "0.0",
+    "configurations": [{
+     	"app-plus" : 
+     	{
+     		"launchtype" : "local"
+     	},
+     	"default" : 
+     	{
+     		"launchtype" : "local"
+     	},
+     	"type" : "uniCloud"
+     }
+    ]
+}

+ 20 - 0
App.vue

@@ -0,0 +1,20 @@
+<script>
+	export default {
+		onLaunch: function() {
+			console.log('App Launch')
+		},
+		onShow: function() {
+			console.log('App Show')
+		},
+		onHide: function() {
+			console.log('App Hide')
+		}
+	}
+</script>
+
+<style>
+	/*每个页面公共css */
+	@import url("static/css/fui.css");
+	@import url("static/css/flex.css");
+	@import url("static/css/uflex.css");
+</style>

+ 20 - 0
index.html

@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <script>
+      var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
+        CSS.supports('top: constant(a)'))
+      document.write(
+        '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
+        (coverSupport ? ', viewport-fit=cover' : '') + '" />')
+    </script>
+    <title></title>
+    <!--preload-links-->
+    <!--app-context-->
+  </head>
+  <body>
+    <div id="app"><!--app-html--></div>
+    <script type="module" src="/main.js"></script>
+  </body>
+</html>

+ 24 - 0
main.js

@@ -0,0 +1,24 @@
+import App from './App'
+
+// #ifndef VUE3
+import Vue from 'vue'
+import './uni.promisify.adaptor'
+Vue.config.productionTip = false
+App.mpType = 'app'
+const app = new Vue({
+  ...App
+})
+app.$mount()
+// #endif
+import Vconsole from 'vconsole'
+const vconsole = new Vconsole()
+// #ifdef VUE3
+import { createSSRApp } from 'vue'
+export function createApp() {
+  const app = createSSRApp(App)
+  app.use(vconsole);
+  return {
+    app
+  }
+}
+// #endif

+ 72 - 0
manifest.json

@@ -0,0 +1,72 @@
+{
+    "name" : "quickAppH5",
+    "appid" : "__UNI__C8F8B24",
+    "description" : "",
+    "versionName" : "1.0.0",
+    "versionCode" : "100",
+    "transformPx" : false,
+    /* 5+App特有相关 */
+    "app-plus" : {
+        "usingComponents" : true,
+        "nvueStyleCompiler" : "uni-app",
+        "compilerVersion" : 3,
+        "splashscreen" : {
+            "alwaysShowBeforeRender" : true,
+            "waiting" : true,
+            "autoclose" : true,
+            "delay" : 0
+        },
+        /* 模块配置 */
+        "modules" : {},
+        /* 应用发布信息 */
+        "distribute" : {
+            /* android打包配置 */
+            "android" : {
+                "permissions" : [
+                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+                ]
+            },
+            /* ios打包配置 */
+            "ios" : {},
+            /* SDK配置 */
+            "sdkConfigs" : {}
+        }
+    },
+    /* 快应用特有相关 */
+    "quickapp" : {},
+    /* 小程序特有相关 */
+    "mp-weixin" : {
+        "appid" : "",
+        "setting" : {
+            "urlCheck" : false
+        },
+        "usingComponents" : true
+    },
+    "mp-alipay" : {
+        "usingComponents" : true
+    },
+    "mp-baidu" : {
+        "usingComponents" : true
+    },
+    "mp-toutiao" : {
+        "usingComponents" : true
+    },
+    "uniStatistics" : {
+        "enable" : false
+    },
+    "vueVersion" : "3"
+}

+ 76 - 0
package.json

@@ -0,0 +1,76 @@
+{
+  "name": "uni-preset-vue",
+  "version": "0.0.0",
+  "scripts": {
+    "dev:app": "uni -p app",
+    "dev:app-android": "uni -p app-android",
+    "dev:app-ios": "uni -p app-ios",
+    "dev:app-harmony": "uni -p app-harmony",
+    "dev:custom": "uni -p",
+    "dev:h5": "uni",
+    "dev:h5:ssr": "uni --ssr",
+    "dev:mp-alipay": "uni -p mp-alipay",
+    "dev:mp-baidu": "uni -p mp-baidu",
+    "dev:mp-jd": "uni -p mp-jd",
+    "dev:mp-kuaishou": "uni -p mp-kuaishou",
+    "dev:mp-lark": "uni -p mp-lark",
+    "dev:mp-qq": "uni -p mp-qq",
+    "dev:mp-toutiao": "uni -p mp-toutiao",
+    "dev:mp-weixin": "uni -p mp-weixin",
+    "dev:mp-xhs": "uni -p mp-xhs",
+    "dev:quickapp-webview": "uni -p quickapp-webview",
+    "dev:quickapp-webview-huawei": "uni -p quickapp-webview-huawei",
+    "dev:quickapp-webview-union": "uni -p quickapp-webview-union",
+    "build:app": "uni build -p app",
+    "build:app-android": "uni build -p app-android",
+    "build:app-ios": "uni build -p app-ios",
+    "build:app-harmony": "uni build -p app-harmony",
+    "build:custom": "uni build -p",
+    "build:h5": "uni build",
+    "build:h5:ssr": "uni build --ssr",
+    "build:mp-alipay": "uni build -p mp-alipay",
+    "build:mp-baidu": "uni build -p mp-baidu",
+    "build:mp-jd": "uni build -p mp-jd",
+    "build:mp-kuaishou": "uni build -p mp-kuaishou",
+    "build:mp-lark": "uni build -p mp-lark",
+    "build:mp-qq": "uni build -p mp-qq",
+    "build:mp-toutiao": "uni build -p mp-toutiao",
+    "build:mp-weixin": "uni build -p mp-weixin",
+    "build:mp-xhs": "uni build -p mp-xhs",
+    "build:quickapp-webview": "uni build -p quickapp-webview",
+    "build:quickapp-webview-huawei": "uni build -p quickapp-webview-huawei",
+    "build:quickapp-webview-union": "uni build -p quickapp-webview-union"
+  },
+  "dependencies": {
+    "@dcloudio/uni-app": "3.0.0-4030620241128001",
+    "@dcloudio/uni-app-harmony": "3.0.0-4030620241128001",
+    "@dcloudio/uni-app-plus": "3.0.0-4030620241128001",
+    "@dcloudio/uni-components": "3.0.0-4030620241128001",
+    "@dcloudio/uni-h5": "3.0.0-4030620241128001",
+    "@dcloudio/uni-mp-alipay": "3.0.0-4030620241128001",
+    "@dcloudio/uni-mp-baidu": "3.0.0-4030620241128001",
+    "@dcloudio/uni-mp-jd": "3.0.0-4030620241128001",
+    "@dcloudio/uni-mp-kuaishou": "3.0.0-4030620241128001",
+    "@dcloudio/uni-mp-lark": "3.0.0-4030620241128001",
+    "@dcloudio/uni-mp-qq": "3.0.0-4030620241128001",
+    "@dcloudio/uni-mp-toutiao": "3.0.0-4030620241128001",
+    "@dcloudio/uni-mp-weixin": "3.0.0-4030620241128001",
+    "@dcloudio/uni-mp-xhs": "3.0.0-4030620241128001",
+    "@dcloudio/uni-quickapp-webview": "3.0.0-4030620241128001",
+    "@dcloudio/uni-ui": "^1.4.28",
+	"vconsole": "^3.15.1",
+    "ali-oss": "^6.21.0",
+    "vue": "3.4.21",
+    "vue-i18n": "9.14.2"
+  },
+  "devDependencies": {
+    "@dcloudio/types": "3.4.14",
+    "@dcloudio/uni-automator": "3.0.0-4030620241128001",
+    "@dcloudio/uni-cli-shared": "3.0.0-4030620241128001",
+    "@dcloudio/uni-stacktracey": "3.0.0-4030620241128001",
+    "@dcloudio/vite-plugin-uni": "3.0.0-4030620241128001",
+    "@vue/runtime-core": "3.5.13",
+    "sass": "^1.69.7",
+    "unplugin-vue-components": "^0.27.4"
+  }
+}

+ 85 - 0
pages.json

@@ -0,0 +1,85 @@
+{
+	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+		{
+			"path": "pages/index/index",
+			"style": {
+				"navigationBarTitleText": "工具广场",
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/tools/yiJianShengDian",
+			"style": {
+				"navigationBarTitleText": "一键省电",
+				"navigationStyle": "custom"
+			}
+		},{
+			"path": "pages/tools/shengBoChuChen",
+			"style": {
+				"navigationBarTitleText": "声波除尘",
+				"navigationStyle": "custom"
+			}
+		},{
+			"path": "pages/tools/wangLuoXinXi",
+			"style": {
+				"navigationBarTitleText": "网络信息",
+				"navigationStyle": "custom"
+			}
+		},{
+			"path": "pages/tools/shouJiCeJu",
+			"style": {
+				"navigationBarTitleText": "手机测距",
+				"navigationStyle": "custom"
+			}
+		},{
+			"path": "pages/tools/wifiGuanLi",
+			"style": {
+				"navigationBarTitleText": "WiFi管理",
+				"navigationStyle": "custom"
+			}
+		},{
+			"path": "pages/tools/shouJiQingLi",
+			"style": {
+				"navigationBarTitleText": "手机清理",
+				"navigationStyle": "custom"
+			}
+		},{
+			"path": "pages/tools/jingXuanBiZhi",
+			"style": {
+				"navigationBarTitleText": "精选壁纸",
+				"navigationStyle": "custom"
+			}
+		},{
+			"path": "pages/tools/quWeiCePing",
+			"style": {
+				"navigationBarTitleText": "趣味测评",
+				"navigationStyle": "custom"
+			}
+		},{
+			"path": "pages/tools/yangShengKeTang",
+			"style": {
+				"navigationBarTitleText": "养生课堂",
+				"navigationStyle": "custom"
+			}
+		},{
+			"path": "pages/tools/yunDongJiBu",
+			"style": {
+				"navigationBarTitleText": "运动计步",
+				"navigationStyle": "custom"
+			}
+		},{
+			"path": "pages/tools/ziTiDaXiao",
+			"style": {
+				"navigationBarTitleText": "字体大小",
+				"navigationStyle": "custom"
+			}
+		}
+	],
+	"globalStyle": {
+		"navigationBarTextStyle": "black",
+		"navigationBarTitleText": "uni-app",
+		"navigationBarBackgroundColor": "#F8F8F8",
+		"backgroundColor": "#F8F8F8"
+	},
+	"uniIdRouter": {}
+}

+ 117 - 0
pages/index/index.vue

@@ -0,0 +1,117 @@
+<template>
+	<view class="content">
+		<view class="p-rel">
+			<image class="h-350 bg-999 mgb-20 w" mode="scaleToFill"
+			src="/static/image/index_banner.jpg"></image>
+			<view class="p-abs left-40 bottom-100 text-52 text-b text-2283ee">发现无限可能</view>
+			<view class="p-abs left-40 bottom-60 text-20">尽在功能广场 享受更多可能性</view>
+		</view>
+		<view class="fnBox" v-for="(item,index) in funtions">
+			<view class="title">
+				{{ item.title }}
+			</view>
+			<view class="itemBox">
+				<view class="item" 
+				:style="{ background:`linear-gradient(to bottom, ${items.bg}, #fff)`, }"
+				v-for="(items,indexs) in item.list">
+					<view class="icon">
+						
+					</view>
+					<view class="name"
+					:style="{ color:`${items.color}`, }">
+						{{ items.name }}
+					</view>
+					<view class="btn flex" @click="goPage(items.path)"
+					:style="{ background:`${items.color}`, }"
+					>
+						立即使用<text style="transform: scale(0.6);">▶</text>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script setup>
+	import { ref, reactive, onMounted } from "vue";
+	const title = ref('Hello33')
+	const funtions = reactive([
+		{
+			title:'基础功能',
+			list:[
+				{name:'一键省电',icon:'',bg:'#cfffcd',color:'#60b956',path:'yiJianShengDian'},
+				{name:'声波除尘',icon:'',bg:'#ffd8db',color:'#fb5e53',path:'shengBoChuChen'},
+				{name:'网络信息',icon:'',bg:'#ccccfe',color:'#8370ee',path:'wangLuoXinXi'},
+				{name:'手机测距',icon:'',bg:'#80fafb',color:'#02cfdf',path:'shouJiCeJu'},
+				{name:'WiFi管理',icon:'',bg:'#9ed1fe',color:'#3d9aee',path:'wifiGuanLi'},
+				{name:'手机清理',icon:'',bg:'#fad2ec',color:'#ff4bb9',path:'shouJiQingLi'},
+				{name:'精选壁纸',icon:'',bg:'#fec2f8',color:'#c95884',path:'jingXuanBiZhi'},
+			],
+		},
+		{
+			title:'趣味测评',
+			list:[
+				{name:'趣味测评',icon:'',bg:'#e8ffc4',color:'#98ec05',path:'quWeiCePing'},
+			],
+		},
+		{
+			title:'知识课堂',
+			list:[
+				{name:'养生课堂',icon:'',bg:'#fdd1c0',color:'#fc7f43',path:'yangShengKeTang'},
+				{name:'运动计步',icon:'',bg:'#9ce4fd',color:'#3d9afb',path:'yunDongJiBu'},
+				{name:'字体大小',icon:'',bg:'#edcbfd',color:'#d617d1',path:'ziTiDaXiao'},
+			],
+		}
+	])
+	const goPage = ((url)=>{
+		uni.navigateTo({
+			url:'/pages/tools/' + url
+		})
+	})
+</script>
+
+<style lang="scss" scoped>
+	.fnBox{
+		padding: 20rpx;
+		.title{
+			font-size: 32rpx;
+			margin: 0rpx 0 30rpx 0;
+			font-weight: 500;
+		}
+		.itemBox{
+			display: flex;
+			white-space: pre-wrap;
+			flex-wrap: wrap;
+			gap: 20rpx 40rpx;
+			.item{
+				width: 330rpx;
+				height: 200rpx;
+				border: 1rpx solid #eee;
+				border-radius: 20rpx;
+				position: relative;
+				.icon{
+					
+				}
+				.name{
+					position: absolute;
+					font-size: 30rpx;
+					font-weight: 600;
+					letter-spacing: 2rpx;
+					right: 50rpx;
+					top: 40rpx;
+				}
+				.btn{
+					position: absolute;
+					background-color: skyblue;
+					cursor: pointer;
+					padding: 8rpx 10rpx;
+					border-radius: 30rpx;
+					color: #fff;
+					font-size: 24rpx;
+					right: 40rpx;
+					bottom: 30rpx;
+				}
+			}
+		}
+	}
+</style>

+ 14 - 0
pages/tools/jingXuanBiZhi.vue

@@ -0,0 +1,14 @@
+<template>
+	<view class="content">
+		
+	</view>
+</template>
+
+<script setup>
+import { ref, onMounted } from "vue";
+import { onShow } from "@dcloudio/uni-app";
+</script>
+
+<style lang="scss" scoped>
+	
+</style>

+ 14 - 0
pages/tools/quWeiCePing.vue

@@ -0,0 +1,14 @@
+<template>
+	<view class="content">
+		
+	</view>
+</template>
+
+<script setup>
+import { ref, onMounted } from "vue";
+import { onShow } from "@dcloudio/uni-app";
+</script>
+
+<style lang="scss" scoped>
+	
+</style>

+ 14 - 0
pages/tools/shengBoChuChen.vue

@@ -0,0 +1,14 @@
+<template>
+	<view class="content">
+		
+	</view>
+</template>
+
+<script setup>
+import { ref, onMounted } from "vue";
+import { onShow } from "@dcloudio/uni-app";
+</script>
+
+<style lang="scss" scoped>
+	
+</style>

+ 14 - 0
pages/tools/shouJiCeJu.vue

@@ -0,0 +1,14 @@
+<template>
+	<view class="content">
+		
+	</view>
+</template>
+
+<script setup>
+import { ref, onMounted } from "vue";
+import { onShow } from "@dcloudio/uni-app";
+</script>
+
+<style lang="scss" scoped>
+	
+</style>

+ 14 - 0
pages/tools/shouJiQingLi.vue

@@ -0,0 +1,14 @@
+<template>
+	<view class="content">
+		
+	</view>
+</template>
+
+<script setup>
+import { ref, onMounted } from "vue";
+import { onShow } from "@dcloudio/uni-app";
+</script>
+
+<style lang="scss" scoped>
+	
+</style>

+ 14 - 0
pages/tools/wangLuoXinXi.vue

@@ -0,0 +1,14 @@
+<template>
+	<view class="content">
+		
+	</view>
+</template>
+
+<script setup>
+import { ref, onMounted } from "vue";
+import { onShow } from "@dcloudio/uni-app";
+</script>
+
+<style lang="scss" scoped>
+	
+</style>

+ 14 - 0
pages/tools/wifiGuanLi.vue

@@ -0,0 +1,14 @@
+<template>
+	<view class="content">
+		
+	</view>
+</template>
+
+<script setup>
+import { ref, onMounted } from "vue";
+import { onShow } from "@dcloudio/uni-app";
+</script>
+
+<style lang="scss" scoped>
+	
+</style>

+ 14 - 0
pages/tools/yangShengKeTang.vue

@@ -0,0 +1,14 @@
+<template>
+	<view class="content">
+		
+	</view>
+</template>
+
+<script setup>
+import { ref, onMounted } from "vue";
+import { onShow } from "@dcloudio/uni-app";
+</script>
+
+<style lang="scss" scoped>
+	
+</style>

+ 80 - 0
pages/tools/yiJianShengDian.vue

@@ -0,0 +1,80 @@
+<template>
+	<view class="content">
+		<view class="box1">
+			<view class="text-24 mgb-20">
+				剩余电量
+			</view>
+			<view class="text-52 text-2283ee">
+				{{ powerNum }}%
+			</view>
+			<view class="mgt-16 text-20 text-666">
+				预计可用3小时0分钟
+			</view>
+			<view class="btn cursor" @click="savePower">
+				立即省电 ▶
+			</view>
+		</view>
+		<view class="box2">
+			<view class="title">能耗分析</view>
+			<view class="statistics">
+				
+			</view>
+		</view>
+	</view>
+</template>
+
+<script setup>
+import { ref, onMounted } from "vue";
+import { onShow } from "@dcloudio/uni-app";
+const powerNum = ref(90)
+uni.getBatteryInfo({
+  success: (res) => {
+	  powerNum.value = res.level
+  },
+  fail:(err)=>{
+  	console.log('err',err)
+  }
+})
+// 立即省电
+const savePower = ()=>{
+	
+}
+// onShow(()=>{
+	
+// })
+</script>
+
+<style lang="scss" scoped>
+	.content{
+		height: 100vh;
+		background: linear-gradient(to bottom, #a9d4ff, #cce6ff);
+		padding: 28rpx;
+		.box1{
+			width: 100%;
+			height: 300rpx;
+			padding: 40rpx 30rpx 10rpx;
+			border-radius: 30rpx;
+			background: url('/static/image/index_banner.jpg') no-repeat;
+			background-size: cover;
+			position: relative;
+			.btn{
+				position: absolute;
+				transform: translate(30%,0%);
+				bottom: 10rpx;
+				width: 400rpx;
+				height: 68rpx;
+				line-height: 68rpx;
+				border-radius: 60rpx;
+				text-align: center;
+				color: #fff;
+				background: linear-gradient(90deg, #03fedf, #2ed9fb);
+			}
+		}
+		.box2{
+			background-color: rgba(255,255,255,.6);
+			margin-top: 40rpx;
+			height: 500rpx;
+			border-radius: 30rpx;
+		}
+	}
+</style>

+ 14 - 0
pages/tools/yunDongJiBu.vue

@@ -0,0 +1,14 @@
+<template>
+	<view class="content">
+		
+	</view>
+</template>
+
+<script setup>
+import { ref, onMounted } from "vue";
+import { onShow } from "@dcloudio/uni-app";
+</script>
+
+<style lang="scss" scoped>
+	
+</style>

+ 14 - 0
pages/tools/ziTiDaXiao.vue

@@ -0,0 +1,14 @@
+<template>
+	<view class="content">
+		
+	</view>
+</template>
+
+<script setup>
+import { ref, onMounted } from "vue";
+import { onShow } from "@dcloudio/uni-app";
+</script>
+
+<style lang="scss" scoped>
+	
+</style>

+ 674 - 0
static/css/flex.css

@@ -0,0 +1,674 @@
+
+/**/
+:root {
+    position: relative;
+    font-size: 1px;
+}
+
+header,
+footer,
+div,
+p,
+ul,
+li,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+    display: block;
+}
+
+div,
+p,
+ul,
+li,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+label {
+    padding: 0;
+    margin: 0;
+}
+.scrollbar-hidden ::-webkit-scrollbar {
+    display: none;
+}
+.scrollbar-hidden ::-moz-scrollbar {
+    display: none;
+}
+.scrollbar-hidden ::-ms-scrollbar {
+    display: none;
+}
+.scrollbar-hidden ::-o-scrollbar {
+    display: none;
+}
+
+* {
+    padding: 0;
+    margin: 0;
+    -webkit-box-sizing: border-box;
+    -moz-box-sizing: border-box;
+    -ms-box-sizing: border-box;
+    -o-box-sizing: border-box;
+    box-sizing: border-box;
+    border: 0;
+    outline: 0;
+    font-size: 100%;
+    vertical-align: baseline;
+    background: transparent;
+    outline-style: none;
+}
+
+*::before {
+    box-sizing: border-box;
+}
+
+html {
+    width: 100%;
+}
+
+body {
+    font-size: 14px;
+    color: #333;
+    position: relative;
+    line-height: 1;
+    font-family: Verdana, Arial, Helvetica, sans-serif;
+}
+
+ol,
+ul,
+li {
+    list-style: none;
+}
+
+a,
+a:hover,
+a:focus {
+    color: inherit;
+    text-decoration: none;
+    outline-style: none;
+    /*FF*/
+}
+
+/*css为clearfix,清除浮动*/
+.clearfix {
+    /* zoom: 1; */
+    /*IE/7/6*/
+    zoom: 1;
+    /*IE/7/6*/
+}
+
+.clearfix::before,
+.clearfix::after {
+    content: "";
+    height: 0;
+    line-height: 0;
+    display: block;
+    visibility: hidden;
+    clear: both;
+}
+
+.clearfix:after {
+    content: "";
+    height: 0;
+    line-height: 0;
+    display: block;
+    visibility: hidden;
+    clear: both;
+}
+
+.clearfix:after {
+    clear: both;
+}
+
+img {
+    z-index: 0;
+}
+
+/*文本对齐*/
+.ta_right {
+    text-align: right;
+}
+
+.ta_center {
+    text-align: center;
+}
+
+.ta_justify {
+    text-align: justify;
+}
+
+/*隐藏*/
+.hide {
+    display: none !important;
+}
+
+/*字颜色*/
+.icon {
+    font-size: inherit;
+}
+
+.fc_3 {
+    color: #333;
+}
+
+.fc_6 {
+    color: #666;
+}
+
+.fc_9 {
+    color: #999;
+}
+
+/*背景*/
+.bg_fff {
+    background-color: #fff;
+}
+
+/*移动*/
+.late_xy {
+    -webkit-transform: translate(-50%, -50%);
+    -moz-transform: translate(-50%, -50%);
+    -o-transform: translate(-50%, -50%);
+    -ms-transform: translate(-50%, -50%);
+    transform: translate(-50%, -50%);
+}
+
+.late_x {
+    -webkit-transform: translateX(-50%);
+    -moz-transform: translateX(-50%);
+    -o-transform: translateX(-50%);
+    -ms-transform: translateX(-50%);
+    transform: translateX(-50%);
+}
+
+.late_y {
+    -webkit-transform: translateY(-50%);
+    -moz-transform: translateY(-50%);
+    -o-transform: translateY(-50%);
+    -ms-transform: translateY(-50%);
+    transform: translateY(-50%);
+}
+
+/*定位*/
+.abs {
+    position: absolute;
+}
+
+.rel {
+    position: relative;
+}
+
+.fixed {
+    position: fixed;
+}
+
+/*垂直居中*/
+.abs_xy {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    -webkit-transform: translate(-50%, -50%);
+    -moz-transform: translate(-50%, -50%);
+    -o-transform: translate(-50%, -50%);
+    -ms-transform: translate(-50%, -50%);
+    transform: translate(-50%, -50%);
+}
+
+.fiexd_xy {
+    position: fixed;
+    top: 50%;
+    left: 50%;
+    -webkit-transform: translate(-50%, -50%);
+    -moz-transform: translate(-50%, -50%);
+    -o-transform: translate(-50%, -50%);
+    -ms-transform: translate(-50%, -50%);
+    transform: translate(-50%, -50%);
+}
+
+.abs_x {
+    position: absolute;
+    left: 50%;
+    -webkit-transform: translate(-50%, 0%);
+    -moz-transform: translate(-50%, 0%);
+    -o-transform: translate(-50%, 0%);
+    -ms-transform: translate(-50%, 0%);
+    transform: translate(-50%, 0%);
+}
+
+.abs_y {
+    position: absolute;
+    top: 50%;
+    -webkit-transform: translate(0%, -50%);
+    -moz-transform: translate(0%, -50%);
+    -o-transform: translate(0%, -50%);
+    -ms-transform: translate(0%, -50%);
+    transform: translate(0%, -50%);
+}
+
+.fixed_x {
+    position: fixed;
+    left: 50%;
+    -webkit-transform: translate(-50%, 0%);
+    -moz-transform: translate(-50%, 0%);
+    -o-transform: translate(-50%, 0%);
+    -ms-transform: translate(-50%, 0%);
+    transform: translate(-50%, 0%);
+}
+
+.fixed_y {
+    position: fixed;
+    top: 50%;
+    -webkit-transform: translate(0%, -50%);
+    -moz-transform: translate(0%, -50%);
+    -o-transform: translate(0%, -50%);
+    -ms-transform: translate(0%, -50%);
+    transform: translate(0%, -50%);
+}
+
+.abs_center {
+    position: absolute;
+    left: 0;
+    right: 0;
+    top: 0;
+    bottom: 0;
+    margin: auto;
+}
+
+.fixed_center {
+    position: fixed;
+    left: 0;
+    right: 0;
+    top: 0;
+    bottom: 0;
+    margin: auto;
+}
+
+/*行省略*/
+/*-webkit-,-moz-,-o-,-ms-*/
+.line_one {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+}
+
+.line_1 {
+    display: -webkit-box;
+    display: -moz-box;
+    display: -ms-box;
+    display: -o-box;
+    -webkit-box-orient: vertical;
+    -moz-box-orient: vertical;
+    -ms-box-orient: vertical;
+    -o-box-orient: vertical;
+    box-orient: vertical;
+    -webkit-line-clamp: 1;
+    -moz-line-clamp: 1;
+    -ms-line-clamp: 1;
+    -o-line-clamp: 1;
+    line-clamp: 1;
+    overflow: hidden;
+}
+
+.line_2 {
+    display: -webkit-box;
+    display: -moz-box;
+    display: -ms-box;
+    display: -o-box;
+    -webkit-box-orient: vertical;
+    -moz-box-orient: vertical;
+    -ms-box-orient: vertical;
+    -o-box-orient: vertical;
+    box-orient: vertical;
+    -webkit-line-clamp: 2;
+    -moz-line-clamp: 2;
+    -ms-line-clamp: 2;
+    -o-line-clamp: 2;
+    line-clamp: 2;
+    overflow: hidden;
+}
+
+.line_3 {
+    display: -webkit-box;
+    display: -moz-box;
+    display: -ms-box;
+    display: -o-box;
+    -webkit-box-orient: vertical;
+    -moz-box-orient: vertical;
+    -ms-box-orient: vertical;
+    -o-box-orient: vertical;
+    box-orient: vertical;
+    -webkit-line-clamp: 3;
+    -moz-line-clamp: 3;
+    -ms-line-clamp: 3;
+    -o-line-clamp: 3;
+    line-clamp: 3;
+    overflow: hidden;
+}
+
+.line_4 {
+    display: -webkit-box;
+    display: -moz-box;
+    display: -ms-box;
+    display: -o-box;
+    -webkit-box-orient: vertical;
+    -moz-box-orient: vertical;
+    -ms-box-orient: vertical;
+    -o-box-orient: vertical;
+    box-orient: vertical;
+    -webkit-line-clamp: 4;
+    -moz-line-clamp: 4;
+    -ms-line-clamp: 4;
+    -o-line-clamp: 4;
+    line-clamp: 4;
+    overflow: hidden;
+}
+
+.line_5 {
+    display: -webkit-box;
+    display: -moz-box;
+    display: -ms-box;
+    display: -o-box;
+    -webkit-box-orient: vertical;
+    -moz-box-orient: vertical;
+    -ms-box-orient: vertical;
+    -o-box-orient: vertical;
+    box-orient: vertical;
+    -webkit-line-clamp: 5;
+    -moz-line-clamp: 5;
+    -ms-line-clamp: 5;
+    -o-line-clamp: 5;
+    line-clamp: 5;
+    overflow: hidden;
+}
+
+/*block*/
+.block {
+    display: block;
+}
+
+.inblock {
+    display: inline-block;
+}
+
+/*Flexible Box*/
+.flex {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: -moz-box;
+    display: -ms-flexbox;
+    display: flex;
+}
+
+.inflex {
+    display: inline-box !important;
+    display: -webkit-inline-box !important;
+    display: -webkit-inline-flex !important;
+    display: -moz-box !important;
+    display: -ms-inline-flexbox !important;
+    display: inline-flex !important;
+}
+
+/*单轴*/
+.ai_center {
+    -webkit-align-items: center;
+    -moz-align-items: center;
+    -ms-align-items: center;
+    -o-align-items: center;
+    align-items: center;
+}
+
+.ai_start {
+    /*默认*/
+    -webkit-align-items: flex-start;
+    -moz-align-items: flex-start;
+    -ms-align-items: flex-start;
+    -o-align-items: flex-start;
+    align-items: flex-start;
+}
+
+.ai_end {
+    -webkit-align-items: flex-end;
+    -moz-align-items: flex-end;
+    -ms-align-items: flex-end;
+    -o-align-items: flex-end;
+    align-items: flex-end;
+}
+
+.ai_base {
+    -webkit-align-items: baseline;
+    -moz-align-items: baseline;
+    -ms-align-items: baseline;
+    -o-align-items: baseline;
+    align-items: baseline;
+}
+
+.ai_stretch {
+    -webkit-align-items: stretch;
+    -moz-align-items: stretch;
+    -ms-align-items: stretch;
+    -o-align-items: stretch;
+    align-items: stretch;
+}
+
+/*左右对齐*/
+.jc_center {
+    -webkit-justify-content: center;
+    -moz-justify-content: center;
+    -ms-justify-content: center;
+    -o-justify-content: center;
+    justify-content: center;
+}
+
+.jc_between {
+    -webkit-justify-content: space-between;
+    -moz-justify-content: space-between;
+    -ms-justify-content: space-between;
+    -o-justify-content: space-between;
+    justify-content: space-between;
+}
+
+.jc_around {
+    -webkit-justify-content: space-around;
+    -moz-justify-content: space-around;
+    -ms-justify-content: space-around;
+    -o-justify-content: space-around;
+    justify-content: space-around;
+}
+
+.jc_end {
+    -webkit-justify-content: flex-end;
+    -moz-justify-content: flex-end;
+    -ms-justify-content: flex-end;
+    -o-justify-content: flex-end;
+    justify-content: flex-end;
+}
+
+/*换行方式*/
+.fw_no {
+    -webkit-flex-wrap: nowrap;
+    -moz-flex-wrap: nowrap;
+    -ms-flex-wrap: nowrap;
+    -o-flex-wrap: nowrap;
+    flex-wrap: nowrap;
+}
+
+.fw_wrap {
+    -webkit-flex-wrap: wrap;
+    -moz-flex-wrap: wrap;
+    -ms-flex-wrap: wrap;
+    -o-flex-wrap: wrap;
+    flex-wrap: wrap;
+}
+
+.fw_reverse {
+    -webkit-flex-wrap: wrap-reverse;
+    -moz-flex-wrap: wrap-reverse;
+    -ms-flex-wrap: wrap-reverse;
+    -o-flex-wrap: wrap-reverse;
+    flex-wrap: wrap-reverse;
+}
+
+/*多轴 上中下对齐方式*/
+.ac_center {
+    -webkit-align-content: center;
+    -moz-align-content: center;
+    -ms-align-content: center;
+    -o-align-content: center;
+    align-content: center;
+}
+
+.ac_start {
+    -webkit-align-content: flex-start;
+    -moz-align-content: flex-start;
+    -ms-align-content: flex-start;
+    -o-align-content: flex-start;
+    align-content: flex-start;
+}
+
+.ac_end {
+    -webkit-align-content: flex-end;
+    -moz-align-content: flex-end;
+    -ms-align-content: flex-end;
+    -o-align-content: flex-end;
+    align-content: flex-end;
+}
+
+.ac_between {
+    -webkit-align-content: space-between;
+    -moz-align-content: space-between;
+    -ms-align-content: space-between;
+    -o-align-content: space-between;
+    align-content: space-between;
+}
+
+.ac_around {
+    -webkit-align-content: space-around;
+    -moz-align-content: space-around;
+    -ms-align-content: space-around;
+    -o-align-content: space-around;
+    align-content: space-around;
+}
+
+.ac_stretch {
+    -webkit-align-content: stretch;
+    -moz-align-content: stretch;
+    -ms-align-content: stretch;
+    -o-align-content: stretch;
+    align-content: stretch;
+}
+
+/*主轴的方向*/
+.fd_r {
+    -webkit-flex-direction: row;
+    -moz-flex-direction: row;
+    -ms-flex-direction: row;
+    -o-flex-direction: row;
+    flex-direction: row;
+}
+
+.fd_rr {
+    -webkit-flex-direction: row-reverse;
+    -moz-flex-direction: row-reverse;
+    -ms-flex-direction: row-reverse;
+    -o-flex-direction: row-reverse;
+    flex-direction: row-reverse;
+}
+
+.fd_c {
+    -webkit-flex-direction: column;
+    -moz-flex-direction: column;
+    -ms-flex-direction: column;
+    -o-flex-direction: column;
+    flex-direction: column;
+}
+
+.fd_cr {
+    -webkit-flex-direction: column-reverse;
+    -moz-flex-direction: column-reverse;
+    -ms-flex-direction: column-reverse;
+    -o-flex-direction: column-reverse;
+    flex-direction: column-reverse;
+}
+
+/*项目属性*/
+.flex1 {
+    -prefix-box-flex: 1;
+    -webkit-box-flex: 1;
+    -webkit-flex: 1;
+    -moz-box-flex: 1;
+    -ms-flex: 1;
+    flex: 1;
+}
+.flex2 {
+    -prefix-box-flex: 2;
+    -webkit-box-flex: 2;
+    -webkit-flex: 2;
+    -moz-box-flex: 2;
+    -ms-flex: 2;
+    flex: 2;
+}
+
+.as_auto {
+    -webkit-align-self: auto;
+    -moz-align-self: auto;
+    -ms-align-self: auto;
+    -o-align-self: auto;
+    align-self: auto;
+}
+
+.as_center {
+    -webkit-align-self: center;
+    -moz-align-self: center;
+    -ms-align-self: center;
+    -o-align-self: center;
+    align-self: center;
+}
+
+.as_start {
+    -webkit-align-self: flex-start;
+    -moz-align-self: flex-start;
+    -ms-align-self: flex-start;
+    -o-align-self: flex-start;
+    align-self: flex-start;
+}
+
+.as_end {
+    -webkit-align-self: flex-end;
+    -moz-align-self: flex-end;
+    -ms-align-self: flex-end;
+    -o-align-self: flex-end;
+    align-self: flex-end;
+}
+
+.as_base {
+    -webkit-align-self: baseline;
+    -moz-align-self: baseline;
+    -ms-align-self: baseline;
+    -o-align-self: baseline;
+    align-self: baseline;
+}
+
+.as_stretch {
+    -webkit-align-self: stretch;
+    -moz-align-self: stretch;
+    -ms-align-self: stretch;
+    -o-align-self: stretch;
+    align-self: stretch;;
+}
+
+/* 是否允许子元素伸缩 */
+.flex-item {
+    flex-grow: 1;;
+}
+
+/* 子元素的显示次序 */
+.flex-order {
+    order: 1;;
+}
+
+/**/

+ 2776 - 0
static/css/fui.css

@@ -0,0 +1,2776 @@
+
+/* #ifndef APP-PLUS-NVUE*/
+/*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/
+::-webkit-scrollbar
+{
+	width: 0rpx!important;
+	height: 0rpx!important;
+	background-color: #F8F8F8;
+}
+  
+/*定义滚动条轨道 内阴影+圆角*/
+::-webkit-scrollbar-track
+{
+	/* // -webkit-box-shadow: inset 0 0 2rpx rgba(0,0,0,0.1); */
+	border-radius: 10px;
+	background-color: #fff;
+}
+  
+/*定义滑块 内阴影+圆角*/
+::-webkit-scrollbar-thumb
+{
+	border-radius: 10px;
+	-webkit-box-shadow: inset 0 0 2rpx rgba(0,0,0,.1);
+	background-color: #555;
+}
+page {
+	min-height: 100%;
+	font-size: 14px;
+	/* background-color: #FFFFFF; */
+	 --primary: #ffa74f;
+	 --primary_c:#EE8030;
+	  --status: #FF8C00;
+	   --color_1: #FFF0C9;
+		--required: rgba(218, 37, 28, 1);
+}
+.page-height {
+	height: calc(100vh - var(--window-top));
+}
+.container-height {
+	min-height: calc(100vh - var(--window-top));
+}
+.required {
+	color: var(--required);
+}
+view {
+	box-sizing: border-box;
+}
+/* 防止图片闪一下 */
+image {
+	width: 120rpx; height: 120rpx; will-change: transform;display: block;
+}
+.inline{
+	display: inline-block;
+}
+.box {
+	box-sizing: border-box;
+}
+/* 过度 */
+.transition {
+	transition: all 0.5s;
+}
+/* #endif */
+
+/* 图标 */
+.iconfont {
+	font-family: iconfont; 
+	/* #ifndef APP-PLUS-NVUE */
+	line-height: 1;
+	/* #endif */
+}
+/* cursor */
+.cursor {
+	cursor: pointer;
+}
+.cursor-none {
+	cursor: none;
+}
+.cursor-move {
+	cursor: move;
+}
+.cursor-default{
+	cursor: default;
+}
+
+/* 主色调 */
+
+
+.text-primary-color, .text-primary {
+	color: var(--primary);
+}
+.text-primary-hover {
+	color: var(--primary);
+}
+.text-label{
+	color: var(--primary_c);
+}
+.text-color-price {
+	color: var(--status);
+}
+.text-status {
+	color: var(--status);
+}
+.text-ff3c00 {
+	color: #FF3C00;
+}
+.text-EE8030{
+	color: #EE8030;
+}
+.text-fc2419{
+	color: #fc2419;
+}
+.text-FC3636{
+	color: #FC3636;
+}
+.text-white, .text-color-white {
+	color: #FFFFFF;
+}
+.text-black {
+	color: #333333;
+}
+.text-gray  {
+	color: #999999;
+}
+.text-000 {
+	color: #000000;
+}
+.text-000-05 {
+	color: rgba(0, 0, 0, 0.5);
+}
+.text-000-06 {
+	color: rgba(0, 0, 0, 0.6);
+}
+.text-000-07 {
+	color: rgba(0, 0, 0, 0.7);
+}
+.text-255-07 {
+	color: rgba(255, 255, 255, 0.7);
+}
+.text-111 {
+	color: #111111;
+}
+.text-222 {
+	color: #222222;
+}
+.text-333, .text-color-333 {
+	color: #333333;
+}
+.text-444 {
+	color: #444444;
+}
+.text-555 {
+	color: #555555;
+}
+.text-666, .text-color-666 {
+	color: #666666;
+}
+.text-777 {
+	color: #777777;
+}
+.text-888 {
+	color: #888888;
+}
+.text-999, .text-color-999 {
+	color: #999999;
+}
+.text-aaa {
+	color: #aaaaaa;
+}
+.text-bbb {
+	color: #bbbbbb;
+}
+.text-ccc {
+	color: #cccccc;
+}
+.text-ddd {
+	color: #dddddd;
+}
+.text-eee {
+	color: #eeeeee;
+}
+.text-ff782f {
+	color: #ff782f;
+}
+.text-ffa74f{
+	color: #ffa74f;
+}
+.text-fdb66f{
+	color: #fdb66f;
+}
+.text-808181{
+	color: #808181;
+}
+.text-da251c {
+	color: #DA251C;
+}
+.text-skyblue {
+	color: skyblue;
+}
+.text-856404{
+	color: #856404;
+}
+.text-2283ee{
+	color: #2283ee;
+}
+/* #ifndef APP-PLUS-NVUE */
+.text-color-initial {
+	color: initial;
+}
+.text-decoration-line{
+	text-decoration: line-through;
+}
+/* #endif */
+
+/* hover */
+.hover, .hover-o {
+	opacity: .8;
+}
+.hover-gray {
+	background-color: rgba(0, 0, 0, .06); opacity: .8;
+}
+.place {
+	color: #999999;
+}
+/* 背景色调 */
+.bg-primary, .bg-primary-color {
+	background-color: var(--primary);
+}
+.bg-primary-hover-color {
+	background-color:  var(--primary);
+}
+.bg-primary-01 {
+	background-color: rgba(218, 37, 28, .1);
+}
+.bg-border {
+	background-color: #F7F8F9;
+}
+.bg-white {
+	background-color: #FFFFFF;
+}
+.bg-dark, .bg-000 {
+	background-color: #000000;
+}
+.bg-000-04{
+	background-color: rgba(0,0,0,0.4);
+}
+.bg-000-05{
+	background-color: rgba(0,0,0,0.5);
+}
+.bg-black, .bg-333 {
+	background-color: #333333;
+}
+.bg-fafafc{
+	background-color: #fafafc;
+}
+.bg-ffffff-fafafc{
+	background: linear-gradient(#ffffff 0%,#fafafc 20%,#fafafc);
+}
+.bg-FF382E{
+	background-color: #FF382E;
+}
+.bg-d9d9d9{
+	background-color: #d9d9d9;
+}
+.bg-ee803033{
+	background: #ee803033;
+}
+.bg-444 {
+	background-color: #444444;
+}
+.bg-555 {
+	background-color: #555555;
+}
+.bg-666 {
+	background-color: #666666;
+}
+.bg-777 {
+	background-color: #777777;
+}
+.bg-888 {
+	background-color: #888888;
+}
+.bg-999 {
+	background-color: #999999;
+}
+.bg-aaa {
+	background-color: #aaaaaa;
+}
+.bg-eee {
+	background-color: #eeeeee;
+}
+.bg-gray {
+	background-color: #F8F8F8;
+}
+.bg-light-gray {
+	background-color: #F7F8F9;
+}
+.bg-gray-hover-color {
+	background-color: rgba(0, 0, 0, .02);
+}
+.bg-mask {
+	background-color: rgba(0, 0, 0, .5);
+}
+.bg-tt {
+	background-color: transparent;
+}
+.bg-blue {
+	background-color: blue;
+}
+.bg-white-0_5 {
+	background-color: rgba(255, 255, 255, .5);
+}
+.bg-white-1a {
+	background-color: #ffffff1a;
+}
+.bg-fc9804 {
+	background-color: #fc9804;
+}
+.bg-fff3cd {
+	background-color: #fff3cd;
+}
+.bg-status {
+	background-color: var(--status);
+}
+.bg-ff3c00 {
+	background-color: #FF3C00;
+}
+.bg-da251c {
+	background-color: #da251c;
+}
+.bg-f8f8f8 {
+	background-color: #f8f8f8;
+}
+.bg-f9f9f9 {
+	background-color: #f9f9f9;
+}
+.bg-cd231a {
+	background-color: #cd231a;
+}
+.bg-fffae5 {
+	background-color: #fffae5;
+}
+.bg-ffed46 {
+	background-color: #FFED46;
+}
+.bg-8CA937{
+	background-color: #8CA937;
+}
+/* 阴影 */
+.box-shadow-0-4-20-04{
+	box-shadow: 0px 4rpx 20rpx 0px rgba(0, 0, 0, 0.04);
+}
+.box-shadow-0-4-30-02{
+	box-shadow: 0px 4rpx 20rpx 0px rgba(0, 0, 0, 0.02);
+}
+.bos-shadow-0-72-128-04 {
+	box-shadow: 0 72rpx 128rpx 0 rgba(0, 0, 0, 0.04);
+}
+
+/* 字号 */
+.text-b {
+	font-weight: bold;
+}
+.text-100 {
+	font-weight: 100;
+}
+.text-200 {
+	font-weight: 200;
+}
+.text-300 {
+	font-weight: 300;
+}
+.text-400 {
+	font-weight: 400;
+}
+.text-500 {
+	font-weight: 500;
+}
+.text-600 {
+	font-weight: 600;
+}
+.text-700 {
+	font-weight: 700;
+}
+.text-800 {
+	font-weight: 800;
+}
+.text-12 {
+	font-size: 12rpx;
+}
+.text-16 {
+	font-size: 16rpx;
+}
+.text-20 {
+	font-size: 20rpx;
+}
+.text-22 {
+	font-size: 22rpx;
+}
+.text-24 {
+	font-size: 24rpx;
+}
+.text-26 {
+	font-size: 26rpx;
+}
+.text-28 {
+	font-size: 28rpx;
+}
+.text-30 {
+	font-size: 30rpx;
+}
+.text-32 {
+	font-size: 32rpx;
+}
+.text-34 {
+	font-size: 34rpx;
+}
+.text-36 {
+	font-size: 36rpx;
+}
+.text-40 {
+	font-size: 40rpx;
+}
+.text-42 {
+	font-size: 42rpx;
+}
+.text-44 {
+	font-size: 44rpx;
+}
+.text-48 {
+	font-size: 48rpx;
+}
+.text-52 {
+	font-size: 52rpx;
+}
+.text-54 {
+	font-size: 54rpx;
+}
+.text-56 {
+	font-size: 56rpx;
+}
+.text-58 {
+	font-size: 58rpx;
+}
+.text-60 {
+	font-size: 60rpx;
+}
+.text-62 {
+	font-size: 62rpx;
+}
+.text-64 {
+	font-size: 64rpx;
+}
+.text-68 {
+	font-size: 68rpx;
+}
+.text-70 {
+	font-size: 70rpx;
+}
+
+.text-underline {
+	text-decoration: underline;
+}
+.text-through {
+	text-decoration: line-through;
+}
+/* 字体对齐 */
+.text-left {
+	text-align: left;
+}
+.text-center {
+	text-align: center;
+}
+.text-right {
+	text-align: right;
+}
+/* 字体缩进2个字符 */
+.text-indent {
+	text-indent: 2em;
+}
+/* #ifndef APP-PLUS-NVUE */
+.text-justify {
+	text-align: justify;
+}
+.va-center {
+	vertical-align: center;
+}
+.va-top {
+	vertical-align: top;
+}
+.va-bottom {
+	vertical-align: bottom;
+}
+/* #endif */
+
+/* 透明 */ 
+.op-0 {
+	opacity: 0;
+}
+.op-02 {
+	opacity: 0.2;
+}
+.op-04 {
+	opacity: 0.4;
+}
+.op-05 {
+	opacity: 0.5;
+}
+.op-08 {
+	opacity: 0.8;
+}
+.op-1 {
+	opacity: 1;
+}
+/* 隐藏 */
+.ov-hide {
+	overflow: hidden;
+}
+/* #ifndef APP-PLUS-NVUE */
+.vi-hide {
+	visibility: hidden;
+}
+/* #endif */
+
+
+/* 定位 */
+.p-abs, .abs {
+	position: absolute;
+}
+.abs_xy {
+	position: absolute; top: 50%; left: 50%; transform:  translate(-50%, -50%);
+}
+.abs_auto {
+	position: absolute; top: 0; left: 0; bottom: 0; right: 0; 
+	/* #ifndef APP-PLUS-NVUE */
+	margin: auto;
+	/* #endif */
+}
+.abs_top {
+	position: absolute; top: 0; left: 0; right: 0;
+	/* #ifndef APP-PLUS-NVUE */
+	margin: auto;
+	/* #endif */
+}
+.abs_left {
+	position: absolute; top: 0; left: 0; bottom: 0;
+	/* #ifndef APP-PLUS-NVUE */
+	margin: auto;
+	/* #endif */
+}
+.abs_right {
+	position: absolute; top: 0; bottom: 0; right: 0;
+	/* #ifndef APP-PLUS-NVUE */
+	margin: auto;
+	/* #endif */
+}
+.abs_bottom {
+	position: absolute; bottom: 0; left: 0; right: 0;
+	/* #ifndef APP-PLUS-NVUE */
+	margin: auto;
+	/* #endif */
+}
+.abs_center {
+	position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
+}
+.abs_x {
+	position: absolute; left: 50%; transform: translateX(-50%);
+}
+.abs_y {
+	position: absolute; top: 50%; transform: translateY(-50%);
+}
+.p-fixed, .fixed {
+	position: fixed;
+}
+.fixed_auto {
+	position: fixed; top: 0; left: 0; bottom: 0; right: 0; 
+	/* #ifndef APP-PLUS-NVUE */
+	margin: auto;
+	/* #endif */
+}
+.fixed_center, .fixed_xy {
+	position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%);
+}
+.fixed_x {
+	position: fixed; left: 50%; transform: translateX(-50%);
+}
+.fixed_y {
+	position: fixed; top: 50%; transform: translateY(-50%);
+}
+.fixed_bottom {
+	position: fixed; 
+	bottom: var(--window-bottom);
+	bottom: calc(constant(safe-area-inset-bottom));
+	bottom: calc(env(safe-area-inset-bottom));
+}
+.fixed_top {
+	position: fixed; top: var(--window-top);
+}
+.fixed_left {
+	position: fixed; left: 0;
+}
+.fixed_right {
+	position: fixed; right: 0;
+}
+.fixed_low {
+	position: fixed; bottom: 0; left: 0; right: 0; 
+	/* #ifndef APP-PLUS-NVUE */
+	margin: auto;
+	/* #endif */
+}
+.fixed_up {
+	position: fixed; top: 0; left: 0; right: 0; 
+	/* #ifndef APP-PLUS-NVUE */
+	margin: auto;
+	/* #endif */
+}
+.p-rel, .rel {
+	position: relative;
+}
+.p-sticky, .sticky {
+	position: sticky;
+}
+.bottom, .bottom-0 {
+	bottom: 0;
+}
+.bottom-w {
+	bottom: var(--window-bottom);
+}
+.bottom-10 {
+	bottom: 10rpx;
+}
+.bottom-20 {
+	bottom: 20rpx;
+}
+.bottom-30 {
+	bottom: 30rpx;
+}
+.bottom-40 {
+	bottom: 40rpx;
+}
+.bottom-50 {
+	bottom: 50rpx;
+}
+.bottom-60 {
+	bottom: 60rpx;
+}
+.bottom-70 {
+	bottom: 70rpx;
+}
+.bottom-80 {
+	bottom: 80rpx;
+}
+.bottom-90 {
+	bottom: 90rpx;
+}
+.bottom-100 {
+	bottom: 100rpx;
+}
+.bottom-150 {
+	bottom: 150rpx;
+}
+.bottom-180px {
+	bottom: 180px;
+}
+.bottom-200 {
+	bottom: 200rpx;
+}
+.bottom-260px{
+	bottom:260px;
+}
+.bottom-300 {
+	bottom: 300rpx;
+}
+.bottom-350 {
+	bottom: 350rpx;
+}
+.bottom_100{
+	bottom: 100vh;
+}
+.left, .left-0 {
+	left: 0;
+}
+.top, .top-0 {
+	top: 0;
+}
+.top-w {
+	top: var(--window-top);
+}
+.top-10 {
+	top: 10rpx;
+}
+.top-20 {
+	top: 20rpx;
+}
+.top-30 {
+	top: 30rpx;
+}
+.top-40 {
+	top: 40rpx;
+}
+.top-50 {
+	top: 50rpx;
+}
+.top-60 {
+	top: 60rpx;
+}
+.top-70 {
+	top: 70rpx;
+}
+.top-80 {
+	top: 80rpx;
+}
+.top-90 {
+	top: 90rpx;
+}
+.top-100 {
+	top: 100rpx;
+}
+.top-200 {
+	top: 200rpx;
+}
+.left-10 {
+	left: 10rpx;
+}
+.left-20 {
+	left: 20rpx;
+}
+.left-30 {
+	left: 30rpx;
+}
+.left-40 {
+	left: 40rpx;
+}
+.left-50 {
+	left: 50rpx;
+}
+.left-60 {
+	left: 60rpx;
+}
+.left-70 {
+	left: 70rpx;
+}
+.left-80 {
+	left: 80rpx;
+}
+.left-90 {
+	left: 90rpx;
+}
+.left-100 {
+	left: 100rpx;
+}
+.left-300 {
+	left: 300rpx;
+}
+.right, .right-0 {
+	right: 0;
+}
+.right-10 {
+	right: 10rpx;
+}
+.right-20 {
+	right: 20rpx;
+}
+.right-30 {
+	right: 30rpx;
+}
+.right-40 {
+	right: 40rpx;
+}
+.right-50 {
+	right: 50rpx;
+}
+.right-60 {
+	right: 60rpx;
+}
+.right-70 {
+	right: 70rpx;
+}
+.right-80 {
+	right: 80rpx;
+}
+.right-90 {
+	right: 90rpx;
+}
+.right-100 {
+	right: 100rpx;
+}
+/* 层级 */
+.zindex-0 {
+	z-index: 0;
+}
+.zindex-1 {
+	z-index: 1;
+}
+.zindex-2 {
+	z-index: 2;
+}
+.zindex-3 {
+	z-index: 3;
+}
+.zindex-4 {
+	z-index: 4;
+}
+.zindex-5 {
+	z-index: 5;
+}
+.zindex-6 {
+	z-index: 6;
+}
+.zindex-7 {
+	z-index: 7;
+}
+.zindex-8 {
+	z-index: 8;
+}
+.zindex-9 {
+	z-index: 9;
+}
+.zindex-10 {
+	z-index: 10;
+}
+.zindex-99 {
+	z-index: 99;
+}
+.zindex-100 {
+	z-index: 100;
+}
+.zindex-101 {
+	z-index: 101;
+}
+.zindex-200 {
+	z-index: 200;
+}
+.zindex-300 {
+	z-index: 300;
+}
+.zindex-400 {
+	z-index: 400;
+}
+.zindex-500 {
+	z-index: 500;
+}
+.zindex-999 {
+	z-index: 999;
+}
+.zindex-1000 {
+	z-index: 1000;
+}
+.zindex-1001 {
+	z-index: 1001;
+}
+.zindex-2000 {
+	z-index: 2000;
+}
+.zindex-2001 {
+	z-index: 2001;
+}
+.zindex-3000 {
+	z-index: 3000;
+}
+.zindex-3001 {
+	z-index: 3001;
+}
+.zindex-9999 {
+	z-index: 9999;
+}
+.zindex-10000 {
+	z-index: 10000;
+}
+.zindex-10001 {
+	z-index: 10001;
+}
+.zindex-99999 {
+	z-index: 99999;
+}
+.zindex-100000 {
+	z-index: 100000;
+}
+.zindex-100001 {
+	z-index: 100001;
+}
+/* margin */
+
+/* #ifndef APP-PLUS-NVUE */
+.mg-auto {
+	margin: auto;
+}
+.mgx-auto {
+	margin-left: auto; margin-right: auto;
+}
+.mgy-auto {
+	margin-top: auto; margin-bottom: auto;
+}
+.mgl-auto {
+	margin-left: auto;
+}
+.mgr-auto {
+	margin-right: auto;
+}
+.mgt-auto {
+	margin-top: auto;
+}
+.mgb-auto {
+	margin-bottom: auto;
+}
+/* #endif */
+.mg-0 {
+	margin: 0;
+}
+.mgl-2 {
+	margin-left: 2rpx;
+}
+.mgl-4 {
+	margin-left: 4rpx;
+}
+.mgl-6 {
+	margin-left: 6rpx;
+}
+.mgl-8 {
+	margin-left: 8rpx;
+}
+.mg-10 {
+	margin: 10;
+}
+.mg-20 {
+	margin: 20;
+}
+.mg-30 {
+	margin: 30;
+}
+.mg-40 {
+	margin: 40;
+}
+.mg-50 {
+	margin: 50;
+}
+.mg-60 {
+	margin: 60;
+}
+.mg-70 {
+	margin: 70;
+}
+.mg-80 {
+	margin: 80;
+}
+.mg-90 {
+	margin: 90;
+}
+.mg-100 {
+	margin: 100;
+}
+.mgl-0 {
+	margin-left: 0;
+}
+.mgl-2 {
+	margin-left: 2rpx;
+}
+.mgl-4 {
+	margin-left: 4rpx;
+}
+.mgl-6 {
+	margin-left: 6rpx;
+}
+.mgl-8 {
+	margin-left: 8rpx;
+}
+.mgl-10 {
+	margin-left: 10rpx;
+}
+.mgl-12 {
+	margin-left: 12rpx;
+}
+.mgl-14 {
+	margin-left: 14rpx;
+}
+.mgl-15 {
+	margin-left: 15rpx;
+}
+.mgl-16 {
+	margin-left: 16rpx;
+}
+.mgl-18 {
+	margin-left: 18rpx;
+}
+.mgl-20 {
+	margin-left: 20rpx;
+}
+.mgl-20 {
+	margin-left: 20rpx;
+}
+.mgl-22 {
+	margin-left: 22rpx;
+}
+.mgl-24 {
+	margin-left: 24rpx;
+}
+.mgl-26 {
+	margin-left: 26rpx;
+}
+.mgl-28 {
+	margin-left: 28rpx;
+}
+.mgl-30 {
+	margin-left: 30rpx;
+}
+.mgl-34 {
+	margin-left: 34rpx;
+}
+.mgl-40 {
+	margin-left: 40rpx;
+}
+.mgl-50{
+	margin-left: 50rpx;
+}
+.mgr-0 {
+	margin-right: 0;
+}
+.mgr-2 {
+	margin-right: 2rpx;
+}
+.mgr-4 {
+	margin-right: 4rpx;
+}
+.mgr-6 {
+	margin-right: 6rpx;
+}
+.mgr-8 {
+	margin-right: 8rpx;
+}
+.mgr-10 {
+	margin-right: 10rpx;
+}
+.mgr-12 {
+	margin-right: 12rpx;
+}
+.mgr-14 {
+	margin-right: 14rpx;
+}
+.mgr-15 {
+	margin-right: 15rpx;
+}
+.mgr-16 {
+	margin-right: 16rpx;
+}
+.mgr-18 {
+	margin-right: 18rpx;
+}
+.mgr-20 {
+	margin-right: 20rpx;
+}
+.mgr-24{
+	margin-right: 24rpx;
+}
+.mgr-30 {
+	margin-right: 30rpx;
+}
+.mgr-40 {
+	margin-right: 40rpx;
+}
+.mgr-50 {
+	margin-right: 50rpx;
+}
+.mgr-60 {
+	margin-right: 60rpx;
+}
+.mgr-70 {
+	margin-right: 70rpx;
+}
+.mgr-80 {
+	margin-right: 80rpx;
+}
+.mgr-90 {
+	margin-right: 90rpx;
+}
+.mgr-100 {
+	margin-right: 100rpx;
+}
+.mgr-110 {
+	margin-right: 110rpx;
+}
+.mgr-120 {
+	margin-right: 120rpx;
+}
+.mgr-130 {
+	margin-right: 130rpx;
+}
+.mgr-140 {
+	margin-right: 140rpx;
+}
+.mgx-0 {
+	margin-left: 0; margin-right: 0;
+}
+.mgx-5 {
+	margin-left: 5rpx; margin-right: 5rpx;
+}
+.mgx-10 {
+	margin-left: 10rpx; margin-right: 10rpx;
+}
+.mgx-20 {
+	margin-left: 20rpx; margin-right: 20rpx;
+}
+.mgx-24{
+	margin-left: 24rpx; margin-right: 24rpx;
+}
+.mgx-24-{
+	margin-left: -24rpx; margin-right: -24rpx;
+}
+.mgx-30 {
+	margin-left: 30rpx; margin-right: 30rpx;
+}
+.mgx-40 {
+	margin-left: 40rpx; margin-right: 40rpx;
+}
+.mgx-50 {
+	margin-left: 50rpx; margin-right: 50rpx;
+}
+.mgx-60 {
+	margin-left: 60rpx; margin-right: 60rpx;
+}
+.mgx-70 {
+	margin-left: 70rpx; margin-right: 70rpx;
+}
+.mgx-80 {
+	margin-left: 80rpx; margin-right: 80rpx;
+}
+.mgx-90 {
+	margin-left: 90rpx; margin-right: 90rpx;
+}
+.mgx-100 {
+	margin-left: 100rpx; margin-right: 100rpx;
+}
+.mgy-0 {
+	margin-top: 0; margin-bottom: 0;
+}
+.mgy-10 {
+	margin-top: 10rpx; margin-bottom: 10rpx;
+}
+.mgy-20 {
+	margin-top: 20rpx; margin-bottom: 20rpx;
+}
+.mgy-30 {
+	margin-top: 30rpx; margin-bottom: 30rpx;
+}
+.mgy-40 {
+	margin-top: 40rpx; margin-bottom: 40rpx;
+}
+.mgy-50 {
+	margin-top: 50rpx; margin-bottom: 50rpx;
+}
+.mgy-60 {
+	margin-top: 60rpx; margin-bottom: 60rpx;
+}
+.mgy-70 {
+	margin-top: 70rpx; margin-bottom: 70rpx;
+}
+.mgy-80 {
+	margin-top: 80rpx; margin-bottom: 80rpx;
+}
+.mgy-90 {
+	margin-top: 90rpx; margin-bottom: 90rpx;
+}
+.mgy-100 {
+	margin-top: 100rpx; margin-bottom: 100rpx;
+}
+.mgt-0 {
+	margin-top: 0;
+}
+.mgt-2 {
+	margin-top: 2rpx;
+}
+.mgt-4 {
+	margin-top: 4rpx;
+}
+.mgt-6 {
+	margin-top: 6rpx;
+}
+.mgt-8 {
+	margin-top: 8rpx;
+}
+.mgt-10 {
+	margin-top: 10rpx;
+}
+.mgt-12 {
+	margin-top: 12rpx;
+}
+.mgt-14 {
+	margin-top: 14rpx;
+}
+.mgt-15 {
+	margin-top: 15rpx;
+}
+.mgt-16 {
+	margin-top: 16rpx;
+}
+.mgt-18 {
+	margin-top: 18rpx;
+}
+.mgt-20 {
+	margin-top: 20rpx;
+}
+.mgt-22 {
+	margin-top: 22rpx;
+}
+.mgt-23 {
+	margin-top: 23rpx;
+}
+.mgt-24 {
+	margin-top: 24rpx;
+}
+.mgt-26 {
+	margin-top: 26rpx;
+}
+.mgt-28 {
+	margin-top: 28rpx;
+}
+.mgt-30 {
+	margin-top: 30rpx;
+}
+.mgt-35 {
+	margin-top: 35rpx;
+}
+.mgt-36 {
+	margin-top: 36rpx;
+}
+.mgt-38 {
+	margin-top: 38rpx;
+}
+.mgt-40 {
+	margin-top: 40rpx;
+}
+.mgt-50 {
+	margin-top: 50rpx;
+}
+.mgt-60 {
+	margin-top: 60rpx;
+}
+.mgt-70 {
+	margin-top: 70rpx;
+}
+.mgt-80 {
+	margin-top: 80rpx;
+}
+.mgt-90 {
+	margin-top: 90rpx;
+}
+.mgt-100 {
+	margin-top: 100rpx;
+}
+.mgt-110 {
+	margin-top: 110rpx;
+}
+.mgt-120 {
+	margin-top: 120rpx;
+}
+.mgt-130 {
+	margin-top: 130rpx;
+}
+.mgt-140 {
+	margin-top: 140rpx;
+}
+.mgt-160 {
+	margin-top: 160rpx;
+}
+.mgt-170 {
+	margin-top: 170rpx;
+}
+.mgt-180 {
+	margin-top: 180rpx;
+}
+.mgt-190 {
+	margin-top: 190rpx;
+}
+.mgt-200 {
+	margin-top: 200rpx;
+}
+.mgt-210 {
+	margin-top: 210rpx;
+}
+.mgt-220 {
+	margin-top: 220rpx;
+}
+.mgt-230 {
+	margin-top: 230rpx;
+}
+.mgt-240 {
+	margin-top: 240rpx;
+}
+.mgb-0 {
+	margin-bottom: 0;
+}
+.mgb-10 {
+	margin-bottom: 10rpx;
+}
+.mgb-20 {
+	margin-bottom: 20rpx;
+}
+.mgb-30 {
+	margin-bottom: 30rpx;
+}
+.mgb-40 {
+	margin-bottom: 40rpx;
+}
+.mgb-50 {
+	margin-bottom: 50rpx;
+}
+.mgb-60 {
+	margin-bottom: 60rpx;
+}
+.mgb-70 {
+	margin-bottom: 70rpx;
+}
+.mgb-80 {
+	margin-bottom: 80rpx;
+}
+.mgb-90 {
+	margin-bottom: 90rpx;
+}
+.mgb-100 {
+	margin-bottom: 100rpx;
+}
+/* padding */
+.pd-0 {
+	padding: 0;
+}
+.pd-10 {
+	padding: 10rpx;
+}
+.pd-20 {
+	padding: 20rpx;
+}
+.pd-24 {
+	padding: 24rpx;
+}
+.pd-30 {
+	padding: 30rpx;
+}
+.pd-40 {
+	padding: 40rpx;
+}
+.pd-50 {
+	padding: 50rpx;
+}
+.pd-60 {
+	padding: 60rpx;
+}
+.pd-70 {
+	padding: 70rpx;
+}
+.pd-80 {
+	padding: 80rpx;
+}
+.pd-90 {
+	padding: 90rpx;
+}
+.pd-100 {
+	padding: 100rpx;
+}
+.pd-110 {
+	padding: 110rpx;
+}
+.pdx-0 {
+	padding-left: 0; padding-right: 0;
+}
+.pdx-4 {
+	padding-left: 4rpx; padding-right: 4rpx;
+}
+.pdx-6 {
+	padding-left: 6rpx; padding-right: 6rpx;
+}
+.pdx-10 {
+	padding-left: 10rpx; padding-right: 10rpx;
+}
+.pdx-12 {
+	padding-left: 12rpx; padding-right: 12rpx;
+}
+.pdx-14 {
+	padding-left: 14rpx; padding-right: 14rpx;
+}
+.pdx-16 {
+	padding-left: 16rpx; padding-right: 16rpx;
+}
+.pdx-18 {
+	padding-left: 18rpx; padding-right: 18rpx;
+}
+.pdx-20 {
+	padding-left: 20rpx; padding-right: 20rpx;
+}
+.pdx-22 {
+	padding-left: 22rpx; padding-right: 22rpx;
+}
+.pdx-24 {
+	padding-left: 24rpx; padding-right: 24rpx;
+}
+.pdx-26 {
+	padding-left: 26rpx; padding-right: 26rpx;
+}
+.pdx-28 {
+	padding-left: 28rpx; padding-right: 28rpx;
+}
+.pdx-30 {
+	padding-left: 30rpx; padding-right: 30rpx;
+}
+.pdx-40 {
+	padding-left: 40rpx; padding-right: 40rpx;
+}
+.pdx-50 {
+	padding-left: 50rpx; padding-right: 50rpx;
+}
+.pdx-60 {
+	padding-left: 60rpx; padding-right: 60rpx;
+}
+.pdx-70 {
+	padding-left: 70rpx; padding-right: 70rpx;
+}
+.pdx-80 {
+	padding-left: 80rpx; padding-right: 80rpx;
+}
+.pdx-100 {
+	padding-left: 100rpx; padding-right: 100rpx;
+}
+.pdx-110 {
+	padding-left: 110rpx; padding-right: 110rpx;
+}
+.pdx-120 {
+	padding-left: 120rpx; padding-right: 120rpx;
+}
+.pdy-0 {
+	padding-top: 0; padding-bottom: 0;
+}
+.pdy-2 {
+	padding-top: 2rpx; padding-bottom: 2rpx;
+}
+.pdy-4 {
+	padding-top: 4rpx; padding-bottom: 4rpx;
+}
+.pdy-6 {
+	padding-top: 6rpx; padding-bottom: 6rpx;
+}
+.pdy-8 {
+	padding-top: 8rpx; padding-bottom: 8rpx;
+}
+.pdy-10 {
+	padding-top: 10rpx; padding-bottom: 10rpx;
+}
+.pdy-12 {
+	padding-top: 12rpx; padding-bottom: 12rpx;
+}
+.pdy-14 {
+	padding-top: 14rpx; padding-bottom: 14rpx;
+}
+.pdy-16 {
+	padding-top: 16rpx; padding-bottom: 16rpx;
+}
+.pdy-18 {
+	padding-top: 18rpx; padding-bottom: 18rpx;
+}
+.pdy-20 {
+	padding-top: 20rpx; padding-bottom: 20rpx;
+}
+.pdy-30 {
+	padding-top: 30rpx; padding-bottom: 30rpx;
+}
+.pdy-35 {
+	padding-top: 35rpx; padding-bottom: 35rpx;
+}
+.pdy-40 {
+	padding-top: 40rpx; padding-bottom: 40rpx;
+}
+.pdy-50 {
+	padding-top: 50rpx; padding-bottom: 50rpx;
+}
+.pdy-60 {
+	padding-top: 60rpx; padding-bottom: 60rpx;
+}
+.pdy-70 {
+	padding-top: 70rpx; padding-bottom: 70rpx;
+}
+.pdy-80 {
+	padding-top: 80rpx; padding-bottom: 80rpx;
+}
+.pdy-100 {
+	padding-top: 100rpx; padding-bottom: 100rpx;
+}
+.pdy-110 {
+	padding-top: 110rpx; padding-bottom: 110rpx;
+}
+.pdy-120 {
+	padding-top: 120rpx; padding-bottom: 120rpx;
+}
+.pdt-0 {
+	padding-top: 0;
+}
+.pdt-10 {
+	padding-top: 10rpx;
+}
+.pdt-20 {
+	padding-top: 20rpx;
+}
+.pdt-22 {
+	padding-top: 22rpx;
+}
+.pdt-24 {
+	padding-top: 24rpx;
+}
+.pdt-26 {
+	padding-top: 26rpx;
+}
+.pdt-28 {
+	padding-top: 28rpx;
+}
+.pdt-30 {
+	padding-top: 30rpx;
+}
+.pdt-40 {
+	padding-top: 40rpx;
+}
+.pdt-50 {
+	padding-top: 50rpx;
+}
+.pdt-60 {
+	padding-top: 60rpx;
+}
+.pdt-70 {
+	padding-top: 70rpx;
+}
+.pdt-80 {
+	padding-top: 80rpx;
+}
+.pdt-90 {
+	padding-top: 90rpx;
+}
+.pdt-100 {
+	padding-top: 100rpx;
+}
+.pdt-110 {
+	padding-top: 110rpx;
+}
+.pdt-120 {
+	padding-top: 120rpx;
+}
+.pdt-140 {
+	padding-top: 140rpx;
+}
+.pdt-160 {
+	padding-top: 160rpx;
+}
+.pdt-180 {
+	padding-top: 180rpx;
+}
+.pdt-200 {
+	padding-top: 200rpx;
+}
+.pdt-220 {
+	padding-top: 220rpx;
+}
+.pdt-240 {
+	padding-top: 240rpx;
+}
+.pdb-0 {
+	padding-bottom: 0;
+}
+.pdb-10 {
+	padding-bottom: 10rpx;
+}
+.pdb-12 {
+	padding-bottom: 12rpx;
+}
+.pdb-14 {
+	padding-bottom: 14rpx;
+}
+.pdb-15 {
+	padding-bottom: 15rpx;
+}
+.pdb-16 {
+	padding-bottom: 16rpx;
+}
+.pdb-18 {
+	padding-bottom: 18rpx;
+}
+.pdb-20 {
+	padding-bottom: 20rpx;
+}
+.pdb-30 {
+	padding-bottom: 30rpx;
+}
+.pdb-40 {
+	padding-bottom: 40rpx;
+}
+.pdb-50 {
+	padding-bottom: 50rpx;
+}
+.pdb-60 {
+	padding-bottom: 60rpx;
+}
+.pdb-70 {
+	padding-bottom: 70rpx;
+}
+.pdb-80 {
+	padding-bottom: 80rpx;
+}
+.pdb-90 {
+	padding-bottom: 90rpx;
+}
+.pdb-100 {
+	padding-bottom: 100rpx;
+}
+.pdb-110 {
+	padding-bottom: 110rpx;
+}
+.pdb-120 {
+	padding-bottom: 120rpx;
+}
+.pdb-300 {
+	padding-bottom: 300rpx;
+}
+.pdl-0 {
+	padding-left: 0;
+}
+.pdl-10 {
+	padding-left: 10rpx;
+}
+.pdl-20 {
+	padding-left: 20rpx;
+}
+.pdl-22 {
+	padding-left: 22rpx;
+}
+.pdl-24 {
+	padding-left: 24rpx;
+}
+.pdl-26 {
+	padding-left: 26rpx;
+}
+.pdl-28 {
+	padding-left: 28rpx;
+}
+.pdl-30 {
+	padding-left: 30rpx;
+}
+.pdl-32 {
+	padding-left: 32rpx;
+}
+.pdl-34 {
+	padding-left: 34rpx;
+}
+.pdl-36 {
+	padding-left: 36rpx;
+}
+.pdl-38 {
+	padding-left: 38rpx;
+}
+.pdl-40 {
+	padding-left: 40rpx;
+}
+.pdl-50 {
+	padding-left: 50rpx;
+}
+.pdl-60 {
+	padding-left: 60rpx;
+}
+.pdl-70 {
+	padding-left: 70rpx;
+}
+.pdl-80 {
+	padding-left: 80rpx;
+}
+.pdl-90 {
+	padding-left: 90rpx;
+}
+.pdl-100 {
+	padding-left: 100rpx;
+}
+.pdr-0 {
+	padding-right: 0;
+}
+.pdr-10 {
+	padding-right: 10rpx;
+}
+.pdr-20 {
+	padding-right: 20rpx;
+}
+.pdr-30 {
+	padding-right: 30rpx;
+}
+.pdr-40 {
+	padding-right: 40rpx;
+}
+.pdr-50 {
+	padding-right: 50rpx;
+}
+.pdr-60 {
+	padding-right: 60rpx;
+}
+.pdr-70 {
+	padding-right: 70rpx;
+}
+.pdr-80 {
+	padding-right: 80rpx;
+}
+.pdr-90 {
+	padding-right: 90rpx;
+}
+.pdr-100 {
+	padding-right: 100rpx;
+}
+.pdr-110 {
+	padding-right: 110rpx;
+}
+.pdr-120 {
+	padding-right: 120rpx;
+}
+/* width */
+.w {
+	width: 100%;
+}
+.w-10 {
+	width: 10rpx;
+}
+.w-12 {
+	width: 12rpx;
+}
+.w-14 {
+	width: 14rpx;
+}
+.w-16 {
+	width: 16rpx;
+}
+.w-18 {
+	width: 18rpx;
+}
+.w-20 {
+	width: 20rpx;
+}
+.w-24 {
+	width: 24rpx;
+}
+.w-30 {
+	width: 30rpx;
+}
+.w-32 {
+	width: 32rpx;
+}
+.w-36 {
+	width: 36rpx;
+}
+.w-38 {
+	width: 38rpx;
+}
+.w-40 {
+	width: 40rpx;
+}
+.w-42 {
+	width: 42rpx;
+}
+.w-44 {
+	width: 44rpx;
+}
+.w-44px {
+	width: 44px;
+}
+.w-46 {
+	width: 46rpx;
+}
+.w-48 {
+	width: 48rpx;
+}
+.w-50 {
+	width: 50rpx;
+}
+.w-52 {
+	width: 52rpx;
+}
+.w-54 {
+	width: 54rpx;
+}
+.w-56 {
+	width: 56rpx;
+}
+.w-58 {
+	width: 58rpx;
+}
+.w-60 {
+	width: 60rpx;
+}
+.w-64 {
+	width: 64rpx;
+}
+.w-65 {
+	width: 65rpx;
+}
+.w-70 {
+	width: 70rpx;
+}
+.w-80 {
+	width: 80rpx;
+}
+.w-90 {
+	width: 90rpx;
+}
+.w-92 {
+	width: 92rpx;
+}
+.w-96 {
+	width: 96rpx;
+}
+.w-100 {
+	width: 100rpx;
+}
+.w-110 {
+	width: 110rpx;
+}
+.w-120 {
+	width: 120rpx;
+}
+.w-140 {
+	width: 140rpx;
+}
+.w-147 {
+	width: 147rpx;
+}
+.w-160 {
+	width: 160rpx;
+}
+.w-170 {
+	width: 170rpx;
+}
+.w-180 {
+	width: 180rpx;
+}
+.w-190 {
+	width: 190rpx;
+}
+.w-200 {
+	width: 200rpx;
+}
+.w-240 {
+	width: 240rpx;
+}
+.w-260 {
+	width: 260rpx;
+}
+.w-220 {
+	width: 220rpx;
+}
+.w-375, .w-1_2 {
+	width: 375rpx;
+}
+.w-230 {
+	width: 230rpx;
+}
+.w-250, .w-1_3 {
+	width: 250rpx;
+}
+.w-253 {
+	width: 253rpx;
+}
+.w-260 {
+	width: 260rpx;
+}
+.w-270 {
+	width: 270rpx;
+}
+.w-280 {
+	width: 280rpx;
+}
+.w-290 {
+	width: 290rpx;
+}
+.w-300 {
+	width: 300rpx;
+}
+.w-310 {
+	width: 310rpx;
+}
+.w-320 {
+	width: 320rpx;
+}
+.w-330 {
+	width: 330rpx;
+}
+.w-335 {
+	width: 335rpx;
+}
+.w-340 {
+	width: 340rpx;
+}
+.w-350 {
+	width: 350rpx;
+}
+.w-360 {
+	width: 360rpx;
+}
+.w-370 {
+	width: 370rpx;
+}
+.w-380 {
+	width: 380rpx;
+}
+.w-400 {
+	width: 400rpx;
+}
+.w-420 {
+	width: 420rpx;
+}
+.w-440 {
+	width: 440rpx;
+}
+.w-480 {
+	width: 480rpx;
+}
+.w-610 {
+	width: 610rpx;
+}
+.w-690 {
+	width: 690rpx;
+}
+.w-187, .w-1_4 {
+	width: 187.5rpx;
+}
+.w-150, .w-1_5 {
+	width: 150rpx;
+}
+.w-156 {
+	width: 156rpx;
+}
+.w-125, .w-1_6 {
+	width: 125rpx;
+}
+.w-93, .w-1_8 {
+	width: 93.75rpx;
+}
+.w-750, .w100 {
+	width: 750rpx;
+}
+.w-750 {
+	width: 750rpx;
+}
+.w-200px{
+	width: 200px;
+}
+.w-249px{
+	width: 249px;
+}
+.w_10 {
+	width: 10%;
+}
+.w_20 {
+	width: 20%;
+}
+.w_25 {
+	width: 25%;
+}
+.w_33 {
+	width: 33.33%;
+}
+.w_50 {
+	width: 50%;
+}
+/* height */
+.h, .h100 {
+	height: 100%;
+}
+.hvh100 {
+	height: 100vh;
+}
+.h-2 {
+	height: 2rpx;
+}
+.h-4 {
+	height: 4rpx;
+}
+.h-6 {
+	height: 6rpx;
+}
+.h-8 {
+	height: 8rpx;
+}
+.h-10 {
+	height: 10rpx;
+}
+.h-11 {
+	height: 11rpx;
+}
+.h-12 {
+	height: 12rpx;
+}
+.h-14 {
+	height: 14rpx;
+}
+.h-16 {
+	height: 16rpx;
+}
+.h-18 {
+	height: 18rpx;
+}
+.h-20 {
+	height: 20rpx;
+}
+.h-22 {
+	height: 22rpx;
+}
+.h-24 {
+	height: 24rpx;
+}
+.h-26 {
+	height: 26rpx;
+}
+.h-28 {
+	height: 28rpx;
+}
+.h-30 {
+	height: 30rpx;
+}
+.h-32 {
+	height: 32rpx;
+}
+.h-34 {
+	height: 34rpx;
+}
+.h-36 {
+	height: 36rpx;
+}
+.h-38 {
+	height: 38rpx;
+}
+.h-40 {
+	height: 40rpx;
+}
+.h-40px {
+	height: 40px;
+}
+.h-44 {
+	height: 44rpx;
+}
+.h-44px {
+	height: 44px;
+}
+.h-48{
+	height: 48rpx;
+}
+.h-50 {
+	height: 50rpx;
+}
+.h-56 {
+	height: 56rpx;
+}
+.h-60 {
+	height: 60rpx;
+}
+.h-61 {
+	height: 61rpx;
+}
+.h-62 {
+	height: 62rpx;
+}
+.h-63 {
+	height: 63rpx;
+}
+.h-64 {
+	height: 64rpx;
+}
+.h-65 {
+	height: 65rpx;
+}
+.h-66 {
+	height: 66rpx;
+}
+.h-67 {
+	height: 67rpx;
+}
+.h-68 {
+	height: 68rpx;
+}
+.h-69 {
+	height: 69rpx;
+}
+.h-70 {
+	height: 70rpx;
+}
+.h-80 {
+	height: 80rpx;
+}
+.h-88 {
+	height: 88rpx;
+}
+.h-90 {
+	height: 90rpx;
+}
+.h-96 {
+	height: 96rpx;
+}
+.h-100 {
+	height: 100rpx;
+}
+.h-102 {
+	height: 102rpx;
+}
+.h-104 {
+	height: 104rpx;
+}
+.h-106 {
+	height: 106rpx;
+}
+.h-108 {
+	height: 108rpx;
+}
+.h-110 {
+	height: 110rpx;
+}
+.h-120 {
+	height: 120rpx;
+}
+.h-130 {
+	height: 130rpx;
+}
+.h-140 {
+	height: 140rpx;
+}
+.h-150 {
+	height: 150rpx;
+}
+.h-160 {
+	height: 160rpx;
+}
+.h-180 {
+	height: 180rpx;
+}
+.h-184 {
+	height: 184rpx;
+}
+.h-192 {
+	height: 192rpx;
+}
+.h-200 {
+	height: 200rpx;
+}
+.h-210 {
+	height: 210rpx;
+}
+.h-220 {
+	height: 220rpx;
+}
+.h-240 {
+	height: 240rpx;
+}
+.h-260 {
+	height: 260rpx;
+}
+.h-280 {
+	height: 280rpx;
+}
+.h-300 {
+	height: 300rpx;
+}
+.h-320 {
+	height: 320rpx;
+}
+.h-326{
+	height: 326rpx;
+}
+.h-336{
+	height: 336rpx;
+}
+.h-340 {
+	height: 340rpx;
+}
+.h-350 {
+	height: 350rpx;
+}
+.h-360 {
+	height: 360rpx;
+}
+.h-380 {
+	height: 380rpx;
+}
+.h-400 {
+	height: 400rpx;
+}
+.h-420 {
+	height: 420rpx;
+}
+.h-460 {
+	height: 460rpx;
+}
+.h-480 {
+	height: 480rpx;
+}
+.h-500 {
+	height: 500rpx;
+}
+.h-520 {
+	height: 520rpx;
+}
+.h-750 {
+	height: 750rpx;
+}
+.h-136px{
+	height:136px;
+}
+.h-200px{
+	height:200px;
+}
+.h-249px{
+	height:249px;
+}
+.h-272px{
+	height:272px;
+}
+.h-339px{
+	height:339px;
+}
+/* #ifndef APP-PLUS-NVUE*/
+/* min-width */
+
+.minw-10 {
+	min-width: 10rpx;
+}
+.minw-20 {
+	min-width: 20rpx;
+}
+.minw-30 {
+	min-width: 30rpx;
+}
+.minw-40 {
+	min-width: 40rpx;
+}
+.minw-50 {
+	min-width: 50rpx;
+}
+.minw-60 {
+	min-width: 60rpx;
+}
+.minw-70 {
+	min-width: 70rpx;
+}
+.minw-80 {
+	min-width: 80rpx;
+}
+.minw-90 {
+	min-width: 90rpx;
+}
+.minw-100 {
+	min-width: 100rpx;
+}
+.minw-120 {
+	min-width: 120rpx;
+}
+/* min-height */
+.minh_100 {
+	min-height: 100%;
+}
+.minh {
+	min-height: 100vh;
+}
+.minh-100 {
+	min-height: 100rpx;
+}
+.minh-120 {
+	min-height: 120rpx;
+}
+
+
+/* maxheight */
+.maxvh-10 {
+	max-height: 10vh;
+}
+.maxvh-20 {
+	max-height: 20vh;
+}
+.maxvh-30 {
+	max-height: 30vh;
+}
+.maxvh-40 {
+	max-height: 40vh;
+}
+.maxvh-50 {
+	max-height: 50vh;
+}
+.maxvh-60 {
+	max-height: 60vh;
+}
+.maxvh-70 {
+	max-height: 70vh;
+}
+.maxvh-80 {
+	max-height: 80vh;
+}
+.maxvh-90 {
+	max-height: 90vh;
+}
+.maxvh-100 {
+	max-height: 100vh;
+}
+.mh-10 {
+	max-height: 10rpx;
+}
+.mh-20 {
+	max-height: 20rpx;
+}
+.mh-30 {
+	max-height: 30rpx;
+}
+.mh-40 {
+	max-height: 40rpx;
+}
+.mh-50 {
+	max-height: 50rpx;
+}
+.mh-60 {
+	max-height: 60rpx;
+}
+.mh-80 {
+	max-height: 80rpx;
+}
+.mh-90 {
+	max-height: 90rpx;
+}
+.mh-100 {
+	max-height: 100rpx;
+}
+.mh-120 {
+	max-height: 120rpx;
+}
+.mh-130 {
+	max-height: 130rpx;
+}
+.mh-140 {
+	max-height: 140rpx;
+}
+.mh-150 {
+	max-height: 150rpx;
+}
+.mh-160 {
+	max-height: 160rpx;
+}
+/* #endif */
+/* lineheight */
+.lh-1 {
+	line-height: 1;
+}
+.lh-1_2 {
+	line-height: 1.2;
+}
+.lh-1_4 {
+	line-height: 1.4;
+}
+.lh-1_6 {
+	line-height: 1.6;
+}
+.lh-1_8 {
+	line-height: 1.8;
+}
+.lh-2 {
+	line-height: 2;
+}
+.lh-2_2 {
+	line-height: 2.2;
+}
+/* #ifndef APP-PLUS-NVUE */
+.lh-ih {
+	line-height: inherit;
+}
+
+/* #endif */
+/* #ifndef APP-PLUS-NVUE*/
+/* scroll-view */
+.scroll-row, .scroll-x {
+	white-space: nowrap;
+}
+/* #endif */
+
+
+/* 边框 */
+.border-yellow {
+	border: 1px solid var(--status);
+}
+.border {
+	border: 1px solid #eeeeee;
+}
+.border-top {
+	border-top: 1px solid #eeeeee;
+}
+.border-top-20{
+	border-top: 20rpx solid #eeeeee;
+}
+.border-left {
+	border-left: 1px solid #eeeeee;
+}
+.border-bottom  {
+	border-bottom: 1px solid #eeeeee;
+}
+.border-right {
+	border-right: 1px solid #eeeeee;
+}
+.border-width-2px {
+	border-width: 2px;
+}
+.border-primary-color, .border-color-primary, .border-primary {
+	border-color: var(--primary);
+}
+.border-color-primary-02, .border-primary-02 {
+	border-color: rgba(218, 37, 28, .2);
+}
+.border-white, .border-color-white {
+	border-color: #ffffff;
+}
+.border-color-eee {
+	border-color: #eeeeee;
+}
+.border-color-e5e5e5 {
+	border-color: #e5e5e5;
+}
+.border-color-f8f8f8 {
+	border-color: #f8f8f8;
+}
+.border-color-transparent {
+	border-color: rgba(0, 0, 0, 0);
+}
+.border-color-tt {
+	border-color: transparent;
+}
+.border-0_1 {
+	border: 1rpx solid rgba(0,0,0,.1);
+}
+.border-status {
+	border-color: var(--status);
+}
+.baf, .bef {
+	position: relative;
+}
+/* #ifndef APP-PLUS-NVUE */
+.baf::after, .bef::before {
+	content: ''; display: inline-block; position: absolute; border-bottom: 1px solid #F7F8F9; left: 0; right: 0; margin: auto;
+}
+/* #endif */
+.baf::after {
+	top: 0;
+}
+.bef::before {
+	bottom: 0;
+}
+/* 圆角 */
+.radio-0 {
+	border-radius: 0rpx;
+}
+.radio-2 {
+	border-radius: 2rpx;
+}
+.radio-4 {
+	border-radius: 4rpx;
+}
+.radio-6 {
+	border-radius: 6rpx;
+}
+.radio-8 {
+	border-radius: 8rpx;
+}
+.radio-10  {
+	border-radius: 10rpx;
+}
+.radio-16 {
+	border-radius: 16rpx;
+}
+.radio-20  {
+	border-radius: 20rpx;
+}
+.radio-22  {
+	border-radius: 22rpx;
+}
+.radio-30  {
+	border-radius: 30rpx;
+}
+.radio-40  {
+	border-radius: 40rpx;
+}
+.radio-50  {
+	border-radius: 50rpx;
+}
+.radio-60  {
+	border-radius: 60rpx;
+}
+.radio-70  {
+	border-radius: 70rpx;
+}
+.radio-80  {
+	border-radius: 80rpx;
+}
+.radio-90  {
+	border-radius: 90rpx;
+}
+.radio-100  {
+	border-radius: 100rpx;
+}
+.radio-120  {
+	border-radius: 120rpx;
+}
+.radio-130  {
+	border-radius: 130rpx;
+}
+.radio-140  {
+	border-radius: 140rpx;
+}
+.radio-150  {
+	border-radius: 150rpx;
+}
+.radio-160  {
+	border-radius: 160rpx;
+}
+.radio-circle  {
+	border-radius: 50%;
+}
+.radio-o {
+	border-radius: 750rpx;
+}
+.radio-t-10 {
+	border-top-left-radius: 10rpx; border-top-right-radius: 10rpx;
+}
+.radio-t-20 {
+	border-top-left-radius: 20rpx; border-top-right-radius: 20rpx;
+}
+.radio-t-30 {
+	border-top-left-radius: 30rpx; border-top-right-radius: 30rpx;
+}
+.radio-t-40 {
+	border-top-left-radius: 40rpx; border-top-right-radius: 40rpx;
+}
+.radio-t-50 {
+	border-top-left-radius: 50rpx; border-top-right-radius: 50rpx;
+}
+.radio-t-60 {
+	border-top-left-radius: 60rpx; border-top-right-radius: 60rpx;
+}
+.radio-t-70 {
+	border-top-left-radius: 70rpx; border-top-right-radius: 70rpx;
+}
+
+.radio-b-10 {
+	border-bottom-left-radius: 10rpx; border-bottom-right-radius: 10rpx;
+}
+.radio-b-20 {
+	border-bottom-left-radius: 20rpx; border-bottom-right-radius: 20rpx;
+}
+.radio-b-30 {
+	border-bottom-left-radius: 30rpx; border-bottom-right-radius: 30rpx;
+}
+.radio-b-40 {
+	border-bottom-left-radius: 40rpx; border-bottom-right-radius: 40rpx;
+}
+.radio-b-50 {
+	border-bottom-left-radius: 50rpx; border-bottom-right-radius: 50rpx;
+}
+.radio-b-60 {
+	border-bottom-left-radius: 60rpx; border-bottom-right-radius: 60rpx;
+}
+.radio-b-70 {
+	border-bottom-left-radius: 70rpx; border-bottom-right-radius: 70rpx;
+}
+
+.radio-lt-10 {
+	border-top-left-radius: 10rpx;
+}
+.radio-lt-20 {
+	border-top-left-radius: 20rpx;
+}
+.radio-lt-30 {
+	border-top-left-radius: 30rpx;
+}
+.radio-lt-40 {
+	border-top-left-radius: 40rpx;
+}
+.radio-lt-50 {
+	border-top-left-radius: 50rpx;
+}
+.radio-lt-60 {
+	border-top-left-radius: 60rpx;
+}
+
+.radio-rt-10 {
+	border-top-right-radius: 10rpx;
+}
+.radio-rt-20 {
+	border-top-right-radius: 20rpx;
+}
+.radio-rt-30 {
+	border-top-right-radius: 30rpx;
+}
+.radio-rt-40 {
+	border-top-right-radius: 40rpx;
+}
+.radio-rt-50 {
+	border-top-right-radius: 50rpx;
+}
+.radio-rt-60 {
+	border-top-right-radius: 60rpx;
+}
+
+.radio-lb-10 {
+	border-bottom-left-radius: 10rpx;
+}
+.radio-lb-20 {
+	border-bottom-left-radius: 20rpx;
+}
+.radio-lb-30 {
+	border-bottom-left-radius: 30rpx;
+}
+.radio-lb-40 {
+	border-bottom-left-radius: 40rpx;
+}
+.radio-lb-50 {
+	border-bottom-left-radius: 50rpx;
+}
+.radio-lb-60 {
+	border-bottom-left-radius: 60rpx;
+}
+
+.radio-rb-10 {
+	border-bottom-right-radius: 10rpx;
+}
+.radio-rb-20 {
+	border-bottom-right-radius: 20rpx;
+}
+.radio-rb-30 {
+	border-bottom-right-radius: 30rpx;
+}
+.radio-rb-40 {
+	border-bottom-right-radius: 40rpx;
+}
+.radio-rb-50 {
+	border-bottom-right-radius: 50rpx;
+}
+.radio-rb-60 {
+	border-bottom-right-radius: 60rpx;
+}
+/* 分隔线 */
+.divider_10 {
+	width: 100%; height: 10rpx; background-color: #F8F8F8;
+}
+.divider_20 {
+	width: 100%; height: 20rpx; background-color: #F8F8F8;
+}
+.divider_30 {
+	width: 100%; height: 30rpx; background-color: #F8F8F8;
+}
+/* font fa*/
+.font-source-han-sans-cn {
+	font-family: Source Han Sans CN;
+}
+
+/* 文字换行溢出处理 */
+.text-ellipsis {
+	overflow: hidden;
+	text-overflow: ellipsis;
+	/* #ifndef APP-PLUS-NVUE */
+	white-space: nowrap;
+	line-height: normal;
+	/* #endif */
+}
+/* #ifndef APP-NVUE */
+.line_1 {
+	display: -webkit-box;
+	display: -moz-box;
+	display: -ms-box;
+	display: -o-box;
+	-webkit-box-orient: vertical;
+	-moz-box-orient: vertical;
+	-ms-box-orient: vertical;
+	-o-box-orient: vertical;
+	box-orient: vertical;
+	-webkit-line-clamp: 1;
+	-moz-line-clamp: 1;
+	-ms-line-clamp: 1;
+	-o-line-clamp: 1;
+	line-clamp: 1;
+	line-height: normal;
+	white-space: normal;
+	overflow: hidden;
+}
+.line_2{
+	display: -webkit-box;
+	display: -moz-box;
+	display: -ms-box;
+	display: -o-box;
+	-webkit-box-orient: vertical;
+	-moz-box-orient: vertical;
+	-ms-box-orient: vertical;
+	-o-box-orient: vertical;
+	box-orient: vertical;
+	-webkit-line-clamp: 2;
+	-moz-line-clamp: 2;
+	-ms-line-clamp: 2;
+	-o-line-clamp: 2;
+	line-clamp: 2;
+	line-height: normal;
+	white-space: normal;
+	overflow: hidden;
+}
+.line_3{
+	display: -webkit-box;
+	display: -moz-box;
+	display: -ms-box;
+	display: -o-box;
+	-webkit-box-orient: vertical;
+	-moz-box-orient: vertical;
+	-ms-box-orient: vertical;
+	-o-box-orient: vertical;
+	box-orient: vertical;
+	-webkit-line-clamp: 3;
+	-moz-line-clamp: 3;
+	-ms-line-clamp: 3;
+	-o-line-clamp: 3;
+	line-clamp: 3;
+	line-height: normal;
+	white-space: normal;
+	overflow: hidden;
+}
+.line_4{
+	display: -webkit-box;
+	display: -moz-box;
+	display: -ms-box;
+	display: -o-box;
+	-webkit-box-orient: vertical;
+	-moz-box-orient: vertical;
+	-ms-box-orient: vertical;
+	-o-box-orient: vertical;
+	box-orient: vertical;
+	-webkit-line-clamp: 4;
+	-moz-line-clamp: 4;
+	-ms-line-clamp: 4;
+	-o-line-clamp: 4;
+	line-clamp: 4;
+	line-height: normal;
+	white-space: normal;
+	overflow: hidden;
+}
+.line_5{
+	display: -webkit-box;
+	display: -moz-box;
+	display: -ms-box;
+	display: -o-box;
+	-webkit-box-orient: vertical;
+	-moz-box-orient: vertical;
+	-ms-box-orient: vertical;
+	-o-box-orient: vertical;
+	box-orient: vertical;
+	-webkit-line-clamp: 5;
+	-moz-line-clamp: 5;
+	-ms-line-clamp: 5;
+	-o-line-clamp: 5;
+	line-clamp: 5;
+	line-height: normal;
+	white-space: normal;
+	overflow: hidden;
+}
+.line_6{
+	display: -webkit-box;
+	display: -moz-box;
+	display: -ms-box;
+	display: -o-box;
+	-webkit-box-orient: vertical;
+	-moz-box-orient: vertical;
+	-ms-box-orient: vertical;
+	-o-box-orient: vertical;
+	box-orient: vertical;
+	-webkit-line-clamp: 6;
+	-moz-line-clamp: 6;
+	-ms-line-clamp: 6;
+	-o-line-clamp: 6;
+	line-clamp: 6;
+	line-height: normal;
+	white-space: normal;
+	overflow: hidden;
+}
+/* #endif */
+
+
+
+

+ 201 - 0
static/css/uflex.css

@@ -0,0 +1,201 @@
+
+
+.flex {
+	/* #ifndef APP-PLUS-NVUE */
+	display: flex; 
+	/* #endif */
+	flex-direction: row;
+	
+}
+.inflex {
+	/* #ifndef APP-PLUS-NVUE */
+	display: inline-flex!important; 
+	/* #endif */
+	flex-direction: row;
+}
+.fw_wrap {
+	flex-wrap: wrap;
+}
+.fw_wr {
+	flex-wrap: wrap-reverse;
+}
+.fw_nowrap {
+	flex-wrap: nowrap;
+}
+.fd_c {
+	flex-direction: column !important;
+}
+.fd_cr {
+	flex-direction: column-reverse !important;
+}
+.fd_r {
+	flex-direction: row !important;
+}
+.fd_rr {
+	flex-direction: row-reverse !important;
+}
+
+.ai_center {
+	align-items: center;
+}
+.ai_start {
+	align-items: flex-start;
+}
+.ai_end {
+	align-items: flex-end;
+}
+.ai_stretch {
+	align-items: stretch;
+}
+/* #ifndef APP-PLUS-NVUE */
+.ai_baseline {
+	align-items: baseline;
+}
+.ai_inherit {
+	align-items: inherit;
+}
+
+.as_center {
+	align-self: center;
+}
+.as_start {
+	align-self: flex-start;
+}
+.as_end {
+	align-self: flex-end;
+}
+.as_stretch {
+	align-self: stretch;
+}
+.as_baseline {
+	align-self: baseline;
+}
+.as_auto {
+	align-self: auto;
+}
+.as_inherit {
+	align-self: inherit;
+}
+
+
+.ac_center {
+	align-content: center;
+}
+.ac_start {
+	align-content: flex-start;
+}
+.ac_end {
+	align-content: flex-end;
+}
+.ac_stretch {
+	align-content: stretch;
+}
+.ac_between {
+	align-content: space-between;
+}
+.ac_around {
+	align-content: space-around;
+}
+.ac_inherit {
+	align-content: inherit;
+}
+/* #endif */
+
+
+
+
+
+.jc_center {
+	justify-content: center;
+}
+.jc_start {
+	justify-content: flex-start;
+}
+.jc_end {
+	justify-content: flex-end;
+}
+.jc_between {
+	justify-content: space-between;
+}
+.jc_around {
+	justify-content: space-around;
+}
+
+/* #ifndef APP-PLUS-NVUE */
+.flex_g {
+	flex-grow: 1;
+}
+.flex_s {
+	flex-shrink: 1;
+}
+.flex_s-0{ 
+	flex-shrink: 0; 
+}
+/* #endif */
+.flex1 {
+	flex: 1;
+}
+.flex1_2 {
+	flex: 1.2;
+}
+.flex1_5 {
+	flex: 1.5
+}
+.flex2 {
+	flex: 2;
+}
+.flex2_2 {
+	flex: 2.2;
+}
+.flex3 {
+	flex: 3;
+}
+
+
+
+.window{
+	width: 100%;
+	height: 100%;
+	position: fixed;
+	top: 0;
+	left: 0;
+}
+.window_bg{
+	width: 100%;
+	height: 100%;
+	position: fixed;
+	top: 0;
+	left: 0;
+	background-color: rgba(0,0,0,0.5);
+}
+.close_icon{
+	width: 24rpx;
+	height: 24rpx;
+	position: absolute;
+	top: 40rpx;
+	right: 30rpx;
+}
+
+.footer{
+	width: 100%;
+	min-height: 120rpx;
+	padding: 20rpx 30rpx;
+	position: fixed;
+	bottom: 0;
+	left: 0;
+	background-color: #FFFFFF;
+}
+.footer_btn{
+	flex: 1;
+	height: 80rpx;
+	background: linear-gradient(90deg, #FF4D32, #FF382E);
+	border-radius: 20rpx;
+	font-size: 32rpx;
+	font-weight: 600;
+	color: #FFFFFF;
+	line-height: 80rpx;
+	text-align: center;
+}
+.footer_hid{
+	height: 200rpx;
+}

BIN
static/image/index_banner.jpg


BIN
static/logo.png


+ 10 - 0
uni.promisify.adaptor.js

@@ -0,0 +1,10 @@
+uni.addInterceptor({
+  returnValue (res) {
+    if (!(!!res && (typeof res === "object" || typeof res === "function") && typeof res.then === "function")) {
+      return res;
+    }
+    return new Promise((resolve, reject) => {
+      res.then((res) => res[0] ? reject(res[0]) : resolve(res[1]));
+    });
+  },
+});

+ 76 - 0
uni.scss

@@ -0,0 +1,76 @@
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+
+/* 颜色变量 */
+
+/* 行为相关颜色 */
+$uni-color-primary: #007aff;
+$uni-color-success: #4cd964;
+$uni-color-warning: #f0ad4e;
+$uni-color-error: #dd524d;
+
+/* 文字基本颜色 */
+$uni-text-color:#333;//基本色
+$uni-text-color-inverse:#fff;//反色
+$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
+$uni-text-color-placeholder: #808080;
+$uni-text-color-disable:#c0c0c0;
+
+/* 背景颜色 */
+$uni-bg-color:#ffffff;
+$uni-bg-color-grey:#f8f8f8;
+$uni-bg-color-hover:#f1f1f1;//点击状态颜色
+$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
+
+/* 边框颜色 */
+$uni-border-color:#c8c7cc;
+
+/* 尺寸变量 */
+
+/* 文字尺寸 */
+$uni-font-size-sm:12px;
+$uni-font-size-base:14px;
+$uni-font-size-lg:16px;
+
+/* 图片尺寸 */
+$uni-img-size-sm:20px;
+$uni-img-size-base:26px;
+$uni-img-size-lg:40px;
+
+/* Border Radius */
+$uni-border-radius-sm: 2px;
+$uni-border-radius-base: 3px;
+$uni-border-radius-lg: 6px;
+$uni-border-radius-circle: 50%;
+
+/* 水平间距 */
+$uni-spacing-row-sm: 5px;
+$uni-spacing-row-base: 10px;
+$uni-spacing-row-lg: 15px;
+
+/* 垂直间距 */
+$uni-spacing-col-sm: 4px;
+$uni-spacing-col-base: 8px;
+$uni-spacing-col-lg: 12px;
+
+/* 透明度 */
+$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
+
+/* 文章场景相关 */
+$uni-color-title: #2C405A; // 文章标题颜色
+$uni-font-size-title:20px;
+$uni-color-subtitle: #555555; // 二级标题颜色
+$uni-font-size-subtitle:26px;
+$uni-color-paragraph: #3F536E; // 文章段落颜色
+$uni-font-size-paragraph:15px;

+ 16 - 0
uni_modules/uni-getbatteryinfo/changelog.md

@@ -0,0 +1,16 @@
+## 1.3.2(2024-10-14)
+- 新增 支持 HarmonyOS Next 调用
+## 1.3.1(2023-09-15)
+app端适配使用UniError
+
+## 1.3.0(2023-05-30)
+新增 同步获取电量api
+
+## 1.2.0(2022-10-17)
+实现百度小程序/支付宝小程序/QQ小程序获取电量
+
+## 1.1.0(2022-10-17)
+实现ios平台获取电量
+
+## 1.0.0(2022-09-01)
+实现android/web/微信小程序平台获取电量

+ 94 - 0
uni_modules/uni-getbatteryinfo/package.json

@@ -0,0 +1,94 @@
+{
+  "id": "uni-getbatteryinfo",
+  "displayName": "uni-getbatteryinfo",
+  "version": "1.3.2",
+  "description": "使用uts开发,实现在多个平台获取电池电量功能",
+  "keywords": [
+    "battery"
+],
+  "repository": "",
+  "engines": {
+    "HBuilderX": "^3.9.0"
+  },
+  "dcloudext": {
+    "type": "uts",
+    "sale": {
+      "regular": {
+        "price": "0.00"
+      },
+      "sourcecode": {
+        "price": "0.00"
+      }
+    },
+    "contact": {
+      "qq": ""
+    },
+    "declaration": {
+      "ads": "无",
+      "data": "插件不采集任何数据",
+      "permissions": "无"
+    },
+    "npmurl": ""
+  },
+  "uni_modules": {
+    "uni-ext-api": {
+      "uni":  {
+        "getBatteryInfo": "getBatteryInfo",
+        "getBatteryInfoSync": {
+          "web": false
+        }
+      }
+    },
+    "dependencies": [],
+    "encrypt": [],
+    "platforms": {
+      "cloud": {
+        "tcb": "y",
+        "aliyun": "y",
+        "alipay": "n"
+      },
+      "client": {
+        "Vue": {
+          "vue2": "n",
+          "vue3": "y"
+        },
+        "App": {
+          "app-android": {
+            "minVersion": "21"
+        },
+          "app-ios": {
+            "minVersion": "9"
+        }
+        },
+        "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",
+          "字节跳动": "u",
+          "QQ": "y",
+          "钉钉": "u",
+          "快手": "u",
+          "飞书": "u",
+          "京东": "u"
+        },
+        "快应用": {
+          "华为": "u",
+          "联盟": "u"
+        }
+      }
+    }
+  }
+}

+ 38 - 0
uni_modules/uni-getbatteryinfo/readme.md

@@ -0,0 +1,38 @@
+# uni-getbatteryinfo
+
+## 使用文档
+
+```ts
+ // 获取电量信息
+uni.getBatteryInfo({
+    success(res) {
+        console.log(res);
+        uni.showToast({
+            title: "当前电量:" + res.level + '%',
+            icon: 'none'
+        });
+    }
+})
+```
+
+
+
+### 参数
+
+Object object
+
+|属性|类型|必填|说明|
+|----|---|----|----|
+|success|function|否|接口调用成功的回调函数|
+|fail|function|否|接口调用失败的回调函数|
+|complete|function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
+
+
+
+object.success 回调函数
+
+
+|属性|类型|说明|
+|----|---|----|
+|level|number|设备电量,范围 1 - 100|
+|isCharging|boolean|是否正在充电中|

+ 3 - 0
uni_modules/uni-getbatteryinfo/utssdk/app-android/config.json

@@ -0,0 +1,3 @@
+{
+  "minSdkVersion": "21"
+}

+ 84 - 0
uni_modules/uni-getbatteryinfo/utssdk/app-android/index.uts

@@ -0,0 +1,84 @@
+import Context from "android.content.Context";
+import BatteryManager from "android.os.BatteryManager";
+
+import { GetBatteryInfo, GetBatteryInfoOptions, GetBatteryInfoSuccess, GetBatteryInfoResult,GetBatteryInfoSync } from '../interface.uts'
+import IntentFilter from 'android.content.IntentFilter';
+import Intent from 'android.content.Intent';
+
+import { GetBatteryInfoFailImpl } from '../unierror';
+
+/**
+ * 异步获取电量
+ */
+export const getBatteryInfo : GetBatteryInfo = function (options : GetBatteryInfoOptions) {
+
+
+    const context = UTSAndroid.getAppContext();
+    if (context != null) {
+        const manager = context.getSystemService(
+            Context.BATTERY_SERVICE
+        ) as BatteryManager;
+        const level = manager.getIntProperty(
+            BatteryManager.BATTERY_PROPERTY_CAPACITY
+        );
+
+        let ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
+        let batteryStatus = context.registerReceiver(null, ifilter);
+        let status = batteryStatus?.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
+        let isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL;
+
+        const res : GetBatteryInfoSuccess = {
+            errMsg: 'getBatteryInfo:ok',
+            level,
+            isCharging: isCharging
+        }
+        options.success?.(res)
+        options.complete?.(res)
+    } else {
+		let res = new GetBatteryInfoFailImpl(1001);
+        options.fail?.(res)
+        options.complete?.(res)
+    }
+}
+
+/**
+ * 同步获取电量示例
+ */
+export const getBatteryInfoSync : GetBatteryInfoSync = function (): GetBatteryInfoResult {
+
+    const context = UTSAndroid.getAppContext();
+    if (context != null) {
+
+
+        const manager = context.getSystemService(
+            Context.BATTERY_SERVICE
+        ) as BatteryManager;
+        const level = manager.getIntProperty(
+            BatteryManager.BATTERY_PROPERTY_CAPACITY
+        );
+        
+        let ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
+        let batteryStatus = context.registerReceiver(null, ifilter);
+        let status = batteryStatus?.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
+        let isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL;
+        
+        const res : GetBatteryInfoResult = {
+            level: level,
+            isCharging: isCharging
+        };
+
+        return res;
+    }
+    else {
+        /**
+         * 无有效上下文
+         */
+        const res : GetBatteryInfoResult = {
+            level: -1,
+            isCharging: false
+        };
+        return res;
+    }
+
+
+}

+ 27 - 0
uni_modules/uni-getbatteryinfo/utssdk/app-harmony/index.uts

@@ -0,0 +1,27 @@
+import batteryInfo from '@ohos.batteryInfo';
+import { GetBatteryInfo, GetBatteryInfoOptions, GetBatteryInfoSuccess, GetBatteryInfoResult, GetBatteryInfoSync } from '../interface.uts';
+
+export const getBatteryInfoSync : GetBatteryInfoSync = function () : GetBatteryInfoResult {
+  return {
+    level: batteryInfo.batterySOC,
+    isCharging: batteryInfo.chargingStatus === batteryInfo.BatteryChargeState.ENABLE || batteryInfo.chargingStatus === batteryInfo.BatteryChargeState.FULL,
+  };
+}
+
+export const getBatteryInfo : GetBatteryInfo = function (options : GetBatteryInfoOptions) {
+  const batteryInfoResult : GetBatteryInfoSuccess = {
+    errMsg: "getBatteryInfo:ok",
+    level: batteryInfo.batterySOC,
+    isCharging: batteryInfo.chargingStatus === batteryInfo.BatteryChargeState.ENABLE || batteryInfo.chargingStatus === batteryInfo.BatteryChargeState.FULL,
+  }
+  try {
+    options.success && options.success(batteryInfoResult)
+  } catch (e) {
+    console.error(e)
+  }
+  try {
+    options.complete && options.complete(batteryInfoResult)
+  } catch (e) {
+    console.error(e)
+  }
+}

+ 3 - 0
uni_modules/uni-getbatteryinfo/utssdk/app-ios/config.json

@@ -0,0 +1,3 @@
+{
+  "deploymentTarget": "9"
+}

+ 34 - 0
uni_modules/uni-getbatteryinfo/utssdk/app-ios/index.uts

@@ -0,0 +1,34 @@
+// 引用 iOS 原生平台 api
+import { UIDevice } from "UIKit";
+
+import { GetBatteryInfo, GetBatteryInfoSuccess, GetBatteryInfoResult, GetBatteryInfoSync } from '../interface.uts';
+/**
+ * 导出 获取电量方法 
+ */
+export const getBatteryInfo : GetBatteryInfo = function (options) {
+
+    // 开启电量检测
+    UIDevice.current.isBatteryMonitoringEnabled = true
+
+    // 返回数据
+    const res : GetBatteryInfoSuccess = {
+        errMsg: "getBatteryInfo:ok",
+        level: Number(UIDevice.current.batteryLevel * 100),
+        isCharging: UIDevice.current.batteryState == UIDevice.BatteryState.charging,
+    };
+    options.success?.(res);
+    options.complete?.(res);
+}
+
+export const getBatteryInfoSync : GetBatteryInfoSync = function (): GetBatteryInfoResult {
+
+    // 开启电量检测
+    UIDevice.current.isBatteryMonitoringEnabled = true
+
+    // 返回数据
+    const res : GetBatteryInfoResult = {
+        level: Number(UIDevice.current.batteryLevel * 100),
+        isCharging: UIDevice.current.batteryState == UIDevice.BatteryState.charging,
+    };
+	return res;
+}

+ 43 - 0
uni_modules/uni-getbatteryinfo/utssdk/index.d.ts

@@ -0,0 +1,43 @@
+declare namespace UniNamespace {
+  interface GetBatteryInfoSuccessCallbackResult {
+    /**
+     * 是否正在充电中
+     */
+    isCharging: boolean;
+    /**
+     * 设备电量,范围 1 - 100
+     */
+    level: number;
+    errMsg: string;
+  }
+
+  interface GetBatteryInfoOption {
+    /**
+     * 接口调用结束的回调函数(调用成功、失败都会执行)
+     */
+    complete?: Function
+    /**
+     * 接口调用失败的回调函数
+     */
+    fail?: Function
+    /**
+     * 接口调用成功的回调函数
+     */
+    success?: (result: GetBatteryInfoSuccessCallbackResult) => void
+  }
+}
+
+declare interface Uni {
+  /**
+   * 获取设备电量
+   *
+   * @tutorial https://uniapp.dcloud.net.cn/api/system/batteryInfo.html
+   */
+  getBatteryInfo(option?: UniNamespace.GetBatteryInfoOption): void;
+
+	/**
+	 * 同步获取电池电量信息
+   * @tutorial https://uniapp.dcloud.net.cn/api/system/batteryInfo.html
+	 */
+	getBatteryInfoSync(): UniNamespace.GetBatteryInfoSuccessCallbackResult;
+}

+ 147 - 0
uni_modules/uni-getbatteryinfo/utssdk/interface.uts

@@ -0,0 +1,147 @@
+export type GetBatteryInfoSuccess = {
+  errMsg: string,
+  /**
+  * 设备电量,范围1 - 100
+  */
+  level: number,
+  /**
+  * 是否正在充电中
+  */
+  isCharging: boolean
+}
+
+export type GetBatteryInfoOptions = {
+  /**
+    * 接口调用结束的回调函数(调用成功、失败都会执行)
+    */
+  success?: (res: GetBatteryInfoSuccess) => void
+  /**
+    * 接口调用失败的回调函数
+    */
+  fail?: (res: UniError) => void
+  /**
+    * 接口调用成功的回调
+    */
+  complete?: (res: any) => void
+}
+
+export type GetBatteryInfoResult = {
+  /**
+  * 设备电量,范围1 - 100
+  */
+  level: number,
+  /**
+  * 是否正在充电中
+  */
+  isCharging: boolean
+}
+
+/**
+ * 错误码
+ * - 1001 getAppContext is null
+ */
+export type GetBatteryInfoErrorCode = 1001 | 1002;
+/**
+ * GetBatteryInfo 的错误回调参数
+ */
+export interface GetBatteryInfoFail extends IUniError {
+  errCode: GetBatteryInfoErrorCode
+};
+
+/**
+* 获取电量信息
+* @param {GetBatteryInfoOptions} options
+*
+*
+* @tutorial https://uniapp.dcloud.net.cn/api/system/batteryInfo.html
+* @platforms APP-IOS = ^9.0,APP-ANDROID = ^22
+* @since 3.6.11
+*
+* @assert () => success({errCode: 0, errSubject: "uni-getBatteryInfo", errMsg: "getBatteryInfo:ok", level: 60, isCharging: false })
+* @assert () => fail({errCode: 1001, errSubject: "uni-getBatteryInfo", errMsg: "getBatteryInfo:fail getAppContext is null" })
+*/
+export type GetBatteryInfo = (options: GetBatteryInfoOptions) => void
+
+
+export type GetBatteryInfoSync = () => GetBatteryInfoResult
+
+interface Uni {
+
+  /**
+   * 获取电池电量信息
+   *
+   * @example
+   * ```typescript
+   * uni.getBatteryInfo({
+   *		success(res) {
+   *			console.log(res);
+   *		}
+   * })
+   * ```
+   * @remark
+   * - 该接口需要同步调用
+   * @uniPlatform {
+   *    "app": {
+   *        "android": {
+   *            "osVer": "4.4.4",
+   *            "uniVer": "3.6.11",
+   *            "unixVer": "3.9.0"
+   *        },
+   *        "ios": {
+   *            "osVer": "12.0",
+   *            "uniVer": "3.6.11",
+   *            "unixVer": "4.11"
+   *        },
+     *    "harmony": {
+     *      "osVer": "3.0",
+     *      "uniVer": "4.23",
+     *      "unixVer": "x"
+     *    }
+   *    },
+   *    "web": {
+   *      "uniVer": "3.6.11",
+   *      "unixVer": "4.0"
+   *    }
+   * }
+   * @uniVueVersion 2,3  //支持的vue版本
+   *
+   */
+  getBatteryInfo(options: GetBatteryInfoOptions): void,
+  /**
+   * 同步获取电池电量信息
+   *
+   * @example
+   * ```typescript
+   * uni.getBatteryInfo()
+   * ```
+   * @remark
+   * - 该接口需要同步调用
+   * @uniPlatform {
+   *    "app": {
+   *        "android": {
+   *            "osVer": "4.4.4",
+   *            "uniVer": "3.6.11",
+   *            "unixVer": "3.9.0"
+   *        },
+   *        "ios": {
+   *            "osVer": "12.0",
+   *            "uniVer": "3.6.11",
+   *            "unixVer": "4.11"
+   *        },
+     *    "harmony": {
+     *      "osVer": "3.0",
+     *      "uniVer": "4.23",
+     *      "unixVer": "x"
+     *    }
+   *    },
+   *    "web": {
+   *      "uniVer": "3.6.11",
+   *      "unixVer": "4.0"
+   *    }
+   * }
+   * @uniVueVersion 2,3  //支持的vue版本
+   *
+   */
+  getBatteryInfoSync(): GetBatteryInfoResult
+
+}

+ 6 - 0
uni_modules/uni-getbatteryinfo/utssdk/mp-alipay/index.js

@@ -0,0 +1,6 @@
+export function getBatteryInfo(options) {
+    return my.getBatteryInfo(options)
+}
+export function getBatteryInfoSync(options) {
+    return my.getBatteryInfoSync(options)
+}

+ 6 - 0
uni_modules/uni-getbatteryinfo/utssdk/mp-baidu/index.js

@@ -0,0 +1,6 @@
+export function getBatteryInfo(options) {
+    return swan.getBatteryInfo(options)
+}
+export function getBatteryInfoSync(options) {
+    return swan.getBatteryInfoSync(options)
+}

+ 6 - 0
uni_modules/uni-getbatteryinfo/utssdk/mp-qq/index.js

@@ -0,0 +1,6 @@
+export function getBatteryInfo(options) {
+    return qq.getBatteryInfo(options)
+}
+export function getBatteryInfoSync(options) {
+    return qq.getBatteryInfoSync(options)
+}

+ 6 - 0
uni_modules/uni-getbatteryinfo/utssdk/mp-weixin/index.js

@@ -0,0 +1,6 @@
+export function getBatteryInfo(options) {
+    return wx.getBatteryInfo(options)
+}
+export function getBatteryInfoSync(options) {
+    return wx.getBatteryInfoSync(options)
+}

+ 35 - 0
uni_modules/uni-getbatteryinfo/utssdk/unierror.uts

@@ -0,0 +1,35 @@
+import { GetBatteryInfoErrorCode, GetBatteryInfoFail } from "./interface.uts"
+/**
+ * 错误主题
+ */
+export const UniErrorSubject = 'uni-getBatteryInfo';
+
+
+/**
+ * 错误信息
+ * @UniError
+ */
+export const UniErrors : Map<GetBatteryInfoErrorCode, string> = new Map([
+  /**
+   * 错误码及对应的错误信息
+   */
+  [1001, 'getBatteryInfo:fail getAppContext is null'],
+  [1002, 'getBatteryInfo:fail not support'],
+]);
+
+
+/**
+ * 错误对象实现
+ */
+export class GetBatteryInfoFailImpl extends UniError implements GetBatteryInfoFail {
+  override errCode : GetBatteryInfoErrorCode;
+  /**
+   * 错误对象构造函数
+   */
+  constructor(errCode : GetBatteryInfoErrorCode) {
+    super();
+    this.errSubject = UniErrorSubject;
+    this.errCode = errCode;
+    this.errMsg = UniErrors[errCode] ?? "";
+  }
+}

+ 23 - 0
uni_modules/uni-getbatteryinfo/utssdk/web/index.js

@@ -0,0 +1,23 @@
+export function getBatteryInfo(options) {
+    if (navigator.getBattery) {
+        navigator.getBattery().then(battery => {
+            const res = {
+				errCode: 0,
+				errSubject: "uni-getBatteryInfo",
+                errMsg: 'getBatteryInfo:ok',
+                level: battery.level * 100,
+                isCharging: battery.charging
+            }
+            options.success && options.success(res)
+            options.complete && options.complete(res)
+        })
+    } else {
+        const res = {
+			errCode: 1002,
+			errSubject: "uni-getBatteryInfo",
+            errMsg: 'getBatteryInfo:fail navigator.getBattery is unsupported'
+        }
+        options.fail && options.fail(res)
+        options.complete && options.complete(res)
+    }
+}