WIN-2CJ8FMUT9OF\Administrator 11 bulan lalu
induk
melakukan
711f1b57f8
44 mengubah file dengan 1455 tambahan dan 150 penghapusan
  1. 4 0
      .gitignore
  2. 1 1
      App.vue
  3. 1 0
      index.html
  4. 2 1
      manifest.json
  5. 4 1
      pages.json
  6. 4 2
      pages/index/components/column.vue
  7. 4 2
      pages/index/components/line.vue
  8. 113 0
      pages/index/components/list.vue
  9. 2 2
      pages/index/components/ring.vue
  10. 189 138
      pages/index/index.vue
  11. TEMPAT SAMPAH
      static/bg.png
  12. 10 0
      uni_modules/uni-dateformat/changelog.md
  13. 200 0
      uni_modules/uni-dateformat/components/uni-dateformat/date-format.js
  14. 88 0
      uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue
  15. 88 0
      uni_modules/uni-dateformat/package.json
  16. 11 0
      uni_modules/uni-dateformat/readme.md
  17. 8 0
      uni_modules/uni-scss/changelog.md
  18. 1 0
      uni_modules/uni-scss/index.scss
  19. 82 0
      uni_modules/uni-scss/package.json
  20. 4 0
      uni_modules/uni-scss/readme.md
  21. 7 0
      uni_modules/uni-scss/styles/index.scss
  22. 3 0
      uni_modules/uni-scss/styles/setting/_border.scss
  23. 66 0
      uni_modules/uni-scss/styles/setting/_color.scss
  24. 55 0
      uni_modules/uni-scss/styles/setting/_radius.scss
  25. 56 0
      uni_modules/uni-scss/styles/setting/_space.scss
  26. 167 0
      uni_modules/uni-scss/styles/setting/_styles.scss
  27. 24 0
      uni_modules/uni-scss/styles/setting/_text.scss
  28. 146 0
      uni_modules/uni-scss/styles/setting/_variables.scss
  29. 19 0
      uni_modules/uni-scss/styles/tools/functions.scss
  30. 31 0
      uni_modules/uni-scss/theme.scss
  31. 62 0
      uni_modules/uni-scss/variables.scss
  32. TEMPAT SAMPAH
      unpackage/cache/apk/__UNI__90A3ED1_cm.apk
  33. 1 1
      unpackage/cache/apk/apkurl
  34. 0 0
      unpackage/cache/apk/cmManifestCache.json
  35. 1 1
      unpackage/cache/wgt/__UNI__90A3ED1/app-config-service.js
  36. 0 0
      unpackage/cache/wgt/__UNI__90A3ED1/app-service.js
  37. 0 0
      unpackage/cache/wgt/__UNI__90A3ED1/app-view.js
  38. 0 0
      unpackage/cache/wgt/__UNI__90A3ED1/manifest.json
  39. TEMPAT SAMPAH
      unpackage/cache/wgt/__UNI__90A3ED1/static/bg.png
  40. 1 1
      unpackage/dist/build/app-plus/app-config-service.js
  41. 0 0
      unpackage/dist/build/app-plus/app-service.js
  42. 0 0
      unpackage/dist/build/app-plus/app-view.js
  43. 0 0
      unpackage/dist/build/app-plus/manifest.json
  44. TEMPAT SAMPAH
      unpackage/dist/build/app-plus/static/bg.png

+ 4 - 0
.gitignore

@@ -0,0 +1,4 @@
+unpackage/
+.idea/
+node_modules/
+.hbuilderx/

+ 1 - 1
App.vue

@@ -4,4 +4,4 @@
 
 <style>
 	/*每个页面公共css */
-</style>
+</style>

+ 1 - 0
index.html

@@ -2,6 +2,7 @@
 <html lang="en">
   <head>
     <meta charset="UTF-8" />
+	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
     <title></title>
     <!--preload-links-->
     <!--app-context-->

+ 2 - 1
manifest.json

@@ -38,7 +38,8 @@
                     "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
                     "<uses-feature android:name=\"android.hardware.camera\"/>",
                     "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
-                ]
+                ],
+                "abiFilters" : [ "armeabi-v7a" ]
             },
             /* ios打包配置 */
             "ios" : {

+ 4 - 1
pages.json

@@ -13,7 +13,10 @@
 		"navigationBarTitleText": "uni-app",
 		"navigationBarBackgroundColor": "#F8F8F8",
 		"backgroundColor": "#F8F8F8",
-		"navigationStyle": "custom"
+		"navigationStyle": "custom",
+		"rpxCalcMaxDeviceWidth": 3840, // rpx 计算所支持的最大设备宽度,单位 px,默认值为 960
+		"rpxCalcBaseDeviceWidth": 750, // rpx 计算使用的基准设备宽度,设备实际宽度超出 rpx 计算所支持的最大设备宽度时将按基准宽度计算,单位 px,默认值为 375
+		"rpxCalcIncludeWidth": 750 // rpx 计算特殊处理的值,始终按实际的设备宽度计算,单位 rpx,默认值为 750
 	},
 	"uniIdRouter": {}
 }

+ 4 - 2
pages/index/components/column.vue

@@ -74,7 +74,9 @@
 <style scoped>
 	/* 请根据实际需求修改父元素尺寸,组件自动识别宽高 */
 	.charts-box {
-		width: 100%;
-		height: 354rpx;
+		width: 304rpx;
+		height: 82rpx;
+		padding: 7rpx 11rpx 5rpx 0;
+		box-sizing: border-box;
 	}
 </style>

+ 4 - 2
pages/index/components/line.vue

@@ -92,7 +92,9 @@
 <style scoped>
 	/* 请根据实际需求修改父元素尺寸,组件自动识别宽高 */
 	.charts-box {
-		width: 100%;
-		height: 354rpx;
+		width: 304rpx;
+		height: 82rpx;
+		padding: 7rpx 11rpx 5rpx 0;
+		box-sizing: border-box;
 	}
 </style>

+ 113 - 0
pages/index/components/list.vue

@@ -0,0 +1,113 @@
+<template>
+  <view class="container">
+    <!-- 顶部 Tab 切换 -->
+    <scroll-view scroll-x class="tab-scroll">
+      <view class="tabs">
+        <view 
+          v-for="(tab, index) in tabList" 
+          :key="index" 
+          :class="['tab', currentSwiperIndex === index ? 'active' : '']"
+          @click="onTabChange(index)"
+        >
+          {{ tab.name }}
+        </view>
+      </view>
+    </scroll-view>
+
+    <!-- Swiper 内容区 -->
+    <swiper 
+      :current="currentSwiperIndex" 
+      @change="onSwiperChange"
+      class="swiper-container"
+    >
+      <swiper-item v-for="(tab, tabIndex) in tabList" :key="tabIndex">
+        <!-- 单个列表页 -->
+        <scroll-view 
+          scroll-y 
+          class="list-scroll"
+          @scroll="(e) => onListScroll(tabIndex, e)" 
+          :scroll-top="tab.scrollTop"
+        >
+          <view class="list">
+            <view 
+              v-for="(item, itemIndex) in tab.listData" 
+              :key="itemIndex" 
+              class="list-item"
+            >
+               {{ item }}
+            </view>
+          </view>
+        </scroll-view>
+      </swiper-item>
+    </swiper>
+  </view>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      currentSwiperIndex: 0, // 当前显示的 swiper-item 索引
+      tabList: [ // 所有 Tab 及其对应的列表数据
+        { 
+          name: '标签1', 
+          listData: ['项目1-1', '项目1-2', '项目1-3', /* ...更多数据... */],
+          scrollTop: 0 // 记录该列表的滚动位置
+        },
+        { 
+          name: '标签2', 
+          listData: ['项目2-1', '项目2-2', '项目2-3', /* ... */],
+          scrollTop: 0
+        },
+        // ...更多 Tab...
+      ]
+    };
+  },
+  methods: {
+    // 点击 Tab 切换
+    onTabChange(index) {
+      this.currentSwiperIndex = index;
+    },
+    // Swiper 滑动切换
+    onSwiperChange(e) {
+      this.currentSwiperIndex = e.detail.current;
+    },
+    // 记录每个列表的滚动位置
+    onListScroll(tabIndex, e) {
+      this.tabList[tabIndex].scrollTop = e.detail.scrollTop;
+    }
+  }
+};
+</script>
+
+<style>
+.container {
+  display: flex;
+  flex-direction: column;
+  height: 100vh;
+}
+.tab-scroll {
+  white-space: nowrap;
+  background-color: #f8f8f8;
+}
+.tabs {
+  display: inline-flex;
+}
+.tab {
+  padding: 20rpx 40rpx;
+}
+.tab.active {
+  color: #007AFF;
+  border-bottom: 4rpx solid #007AFF;
+}
+.swiper-container {
+  flex: 1;
+}
+.list-scroll {
+  height: 100%;
+}
+.list-item {
+  padding: 30rpx;
+  border-bottom: 1rpx solid #eee;
+}
+</style>

+ 2 - 2
pages/index/components/ring.vue

@@ -86,7 +86,7 @@
 <style scoped>
 	/* 请根据实际需求修改父元素尺寸,组件自动识别宽高 */
 	.charts-box {
-		width: 280rpx;
-		height: 280rpx;
+		width: 54rpx;
+		height: 54rpx;
 	}
 </style>

+ 189 - 138
pages/index/index.vue

@@ -4,21 +4,23 @@
 		<image class="bt-box" src="/static/bt.png" mode=""></image>
 		<view class="top-box">
 			<view class="top-left">
-				<view class="fc-f fs-40 mr-32">
+				<uni-dateformat class="fc-f fs-40 mr-32" :format="'yyyy-MM-dd hh:mm:ss'"
+					:date="new Date().toString()"></uni-dateformat>
+				<!-- 				<view class="fc-f fs-40 mr-32">
 					{{currentDate}}
 				</view>
 				<view class="fc-f fs-40 mr-32">
 					{{currentTime}}
-				</view>
+				</view> -->
 				<view class="fc-f fs-40">
 					{{weekday}}
 				</view>
 			</view>
-			<view class="top-left">
+			<!-- 			<view class="top-left">
 				<view class="fc-f fs-40">
 					26°C
 				</view>
-			</view>
+			</view> -->
 		</view>
 
 		<view class="data-box">
@@ -30,7 +32,8 @@
 						<image class="amount-img-two z-3" src="/static/zje.png" mode=""></image>
 						<view class="z-3">
 							<view class="fc-00D5FF fw-b fs-48">
-								¥{{totalData.total_money}}
+								¥{{setTotalMoney(totalData.total_money)}}万
+								
 							</view>
 							<view class="fc-f fs-14">
 								收款总金额
@@ -42,11 +45,14 @@
 						<image class="amount-img-two z-3" src="/static/zbs.png" mode=""></image>
 						<view class="z-3">
 							<view class="fc-00D5FF fw-b fs-48">
+								民营经济
+							</view>
+							<!-- 							<view class="fc-00D5FF fw-b fs-48">
 								{{totalData.count}}
 							</view>
 							<view class="fc-f fs-14">
 								收款总笔数
-							</view>
+							</view> -->
 						</view>
 					</view>
 					<view class="amount-box flex-1">
@@ -54,61 +60,68 @@
 						<image class="amount-img-two z-3" src="/static/zrs.png" mode=""></image>
 						<view class="z-3">
 							<view class="fc-00D5FF fw-b fs-48">
+								实体联盟
+							</view>
+							<!-- 							<view class="fc-00D5FF fw-b fs-48">
 								{{totalData.total_member}}
 							</view>
 							<view class="fc-f fs-14">
 								消费总人数
-							</view>
+							</view> -->
 						</view>
 					</view>
 				</view>
 
 				<view class="flex-1 list-box">
 					<image class="list-img" src="/static/k3.png" mode=""></image>
-					<view class="title-box mb-26">
+					<view class="title-box">
 						<image class="title-img" src="/static/xfmx.png" mode=""></image>
 					</view>
 					<!-- 滚动列表 -->
-					<scroll-view class="scroll-view-css z-3" scroll-y="true" :scroll-top="scrollTop"
-						scroll-with-animation="true">
-						<view class="item-box" v-for="(item,i) in listData" :key="i">
-							<view class="user-box w-30">
-								<image class="user-img" :src="item.head_img" mode=""></image>
-								<view class="">
+					<swiper class="scroll-view-css z-3" circular :indicator-dots="false" :autoplay="true"
+						:interval="3000" :duration="800" :vertical="true" :circular='true' :display-multiple-items="8"
+						@change="listChang">
+						<swiper-item v-for="(item,i) in listData" :key="i">
+							<view class="item-box">
+								<view class="user-box w-30">
+									<image class="user-img" :src="item.head_img" mode=""></image>
+									<view class="">
+										<view class="fs-32 fc-f w-90 text-overflow-ellipsis-one">
+											{{item.nickname}}
+										</view>
+										<view class="fs-28 fc-B2D6FF">
+											消费者
+										</view>
+									</view>
+								</view>
+								<view class="w-30">
 									<view class="fs-32 fc-f w-90 text-overflow-ellipsis-one">
-										{{item.nickname}}
+										{{item.shop_name}}
 									</view>
 									<view class="fs-28 fc-B2D6FF">
-										消费者
+										消费门店
 									</view>
 								</view>
-							</view>
-							<view class="w-30">
-								<view class="fs-32 fc-f w-90 text-overflow-ellipsis-one">
-									{{item.shop_name}}
-								</view>
-								<view class="fs-28 fc-B2D6FF">
-									消费门店
-								</view>
-							</view>
-							<view class="w-20">
-								<view class="fs-32 fc-f">
-									¥{{item.pay_money}}
-								</view>
-								<view class="fs-28 fc-B2D6FF">
-									消费金额
-								</view>
-							</view>
-							<view class="w-20">
-								<view class="fs-32 fc-f">
-									{{item.created_at}}
+								<view class="w-20">
+									<view class="fs-32 fc-f">
+										¥{{item.pay_money}}
+									</view>
+									<view class="fs-28 fc-B2D6FF">
+										消费金额
+									</view>
 								</view>
-								<view class="fs-28 fc-B2D6FF text-align-right">
-									消费时间
+								<view class="w-20">
+									<view class="fs-32 fc-f">
+										{{item.created_at}}
+									</view>
+									<view class="fs-28 fc-B2D6FF text-align-right">
+										消费时间
+									</view>
 								</view>
 							</view>
-						</view>
-					</scroll-view>
+							<view class="hr"></view>
+						</swiper-item>
+					</swiper>
 				</view>
 			</view>
 
@@ -129,7 +142,7 @@
 				</view>
 				<view class="flex-1 chart-box mbt-12">
 					<image class="chart-bg" src="/static/k2.png" mode=""></image>
-					<view class="title-box">
+					<!-- <view class="title-box">
 						<image class="title-img" src="/static/zjtj.png" mode=""></image>
 						<view class="bfje-num">
 							<view class="bfje-title">
@@ -142,7 +155,7 @@
 								{{Number(summaryDaya.total_money).toFixed(2)}}
 							</view>
 						</view>
-					</view>
+					</view> -->
 					<view class="flex-1 tj-box">
 						<view class="hx-box z-3">
 							<!-- 环形图 -->
@@ -151,9 +164,9 @@
 						<view class="bf-box mr-86 ml-28">
 							<view class="bf-num">
 								<image class="yhbf-img" src="/static/yhbf.png" mode=""></image>
-								<view class="fc-f fs-40 z-3 text-align-center">
+								<!-- <view class="fc-f fs-40 z-3 text-align-center">
 									¥{{Number(summaryDaya.total_member).toFixed(2)}}
-								</view>
+								</view> -->
 							</view>
 							<view class="bf-title">
 								<image class="yh-bg" src="/static/yh-bg.png" mode=""></image>
@@ -166,9 +179,9 @@
 						<view class="bf-box">
 							<view class="bf-num">
 								<image class="yhbf-img" src="/static/dpbf.png" mode=""></image>
-								<view class="fc-f fs-40 z-3 text-align-center">
+								<!-- <view class="fc-f fs-40 z-3 text-align-center">
 									¥{{Number(summaryDaya.total_shop).toFixed(2)}}
-								</view>
+								</view> -->
 							</view>
 							<view class="bf-title">
 								<image class="yh-bg" src="/static/dp-bg.png" mode=""></image>
@@ -185,7 +198,7 @@
 					<view class="title-box">
 						<image class="title-img" src="/static/rztj.png" mode=""></image>
 					</view>
-					<view class="flex-1 z-3">
+					<view class="flex-1 z-3 column-box">
 						<!-- 曲线图 -->
 						<lineVue ref="lineRef"></lineVue>
 					</view>
@@ -214,7 +227,6 @@
 		},
 		data() {
 			return {
-				scrollTop: 0,
 				timer: '', //定时器
 				listData: [],
 				currentDate: '',
@@ -223,19 +235,26 @@
 				totalData: {},
 				summaryDaya: {},
 				shopGdp: '',
-				userGdp: ''
+				userGdp: '',
+				page: 1,
+				total: 0
 			}
 		},
 		onReady() {
 			if (window.plus) { // 仅在5+环境中有效
 				plus.screen.lockOrientation(
-				'portrait-primary'); // 锁定为竖屏,如果你想锁定为横屏,可以使用 'landscape-primary' 或 'landscape-secondary'
+					'portrait-primary'); // 锁定为竖屏,如果你想锁定为横屏,可以使用 'landscape-primary' 或 'landscape-secondary'
 			} else {
 				// 对于非5+环境,例如H5,你可能需要使用CSS媒体查询或其他JavaScript库来处理横屏模式。
 			}
 		},
 		mounted() {
-			this.startAutoScroll();
+			
+			
+			// document.addEventListener('keydown', (event) => {
+			// 	event.preventDefault();
+			// 	event.stopPropagation();
+			// });
 			this.updateDateTime()
 			setInterval(() => { // 每分钟更新一次日期和时间
 				this.updateDateTime();
@@ -249,6 +268,11 @@
 			this.chartSummary()
 		},
 		methods: {
+			setTotalMoney(money){
+				let m = ((money*1 + 500000)/10000).toFixed(2);
+				return m
+			},
+			
 			chartSummary() {
 				chartSummary().then((res) => {
 					if (res.code === 1) {
@@ -262,12 +286,21 @@
 				})
 			},
 			chartList() {
-				chartList().then((res) => {
+				chartList({
+					page: this.page
+				}).then((res) => {
 					if (res.code === 1) {
-						this.listData = res.data.items
+						this.total = res.data.total
+						this.listData = [...this.listData, ...res.data.items]
 					}
 				})
 			},
+			listChang(e) {
+				if(e.detail.current === 42) {
+					this.page++
+					this.chartList()
+				}
+			},
 			chartTotal() {
 				chartTotal().then((res) => {
 					this.totalData = res.data
@@ -284,33 +317,32 @@
 				})
 			},
 			updateTime() {
-				this.currentTime = new Date().toLocaleTimeString(); // 更新时间,例如 "2:05:30 PM" 格式(根据地区不同)
+				// 指定中文区域,并使用24小时制
+				this.currentTime = new Date().toLocaleTimeString('zh-CN', {
+					hour12: false
+				});
 			},
 			updateDateTime() {
 				const now = new Date();
-				this.currentDate = now.toLocaleDateString(); // 获取日期(格式可能因地区而异)
-				this.weekday = now.toLocaleDateString('default', {
-					weekday: 'long'
-				}); // 获取星期
-			},
-			startAutoScroll() {
-				this.timer = setInterval(() => {
-					this.scrollTop += 84;
-					// console.log(this.scrollTop);
-					// console.log(10 * 84);
-					// 到底
-					if (this.scrollTop >= (10 * 84)) {
-						this.scrollTop = 0;
-					}
-				}, 2000);
-			},
+				const year = now.getFullYear();
+				const month = (now.getMonth() + 1).toString().padStart(2, '0'); // 月份补0
+				const day = now.getDate().toString().padStart(2, '0'); // 日期补0
+
+				// 生成 YYYY-MM-DD 格式的日期
+				this.currentDate = `${year}-${month}-${day}`;
+
+				// 获取星期几 (返回0-6, 0代表星期日)
+				const weekDayNumber = now.getDay();
+				const weekDays = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
+				this.weekday = weekDays[weekDayNumber];
+			}
 		}
 	}
 </script>
 
 <style>
 	.box {
-		width: 100%;
+		width: 100vw;
 		height: 100vh;
 		position: relative;
 		overflow: hidden;
@@ -323,8 +355,8 @@
 		left: 0;
 		top: 0;
 		z-index: 1;
-		width: 101vw;
-		height: 102vh;
+		width: 100vw;
+		height: 101vh;
 	}
 
 	.bt-box {
@@ -333,16 +365,15 @@
 		top: 0;
 		z-index: 1;
 		width: 100%;
-		height: 200rpx;
+		height: 39rpx;
 	}
 
 	.top-box {
-		height: 200rpx;
 		display: flex;
 		align-items: center;
 		justify-content: space-between;
-		padding: 0 86rpx;
-		margin-bottom: 60rpx;
+		padding: 15rpx 16rpx 12rpx;
+		margin-bottom: 10rpx;
 		position: relative;
 		z-index: 2;
 	}
@@ -384,7 +415,7 @@
 	}
 
 	.fs-48 {
-		font-size: 48rpx;
+		font-size: 9rpx;
 	}
 
 	.fs-10 {
@@ -392,15 +423,15 @@
 	}
 
 	.fs-40 {
-		font-size: 40rpx;
+		font-size: 7rpx;
 	}
 
 	.fs-32 {
-		font-size: 32rpx;
+		font-size: 6.2rpx;
 	}
 
 	.fs-28 {
-		font-size: 28rpx;
+		font-size: 5rpx;
 	}
 
 	.fs-7 {
@@ -416,11 +447,11 @@
 	}
 
 	.fs-14 {
-		font-size: 24rpx;
+		font-size: 5rpx;
 	}
 
 	.mr-32 {
-		margin-right: 32rpx;
+		margin-right: 6rpx;
 	}
 
 	.mr-6 {
@@ -428,7 +459,11 @@
 	}
 
 	.mr-86 {
-		margin-right: 86rpx;
+		margin-right: 16rpx;
+	}
+
+	.ml-28 {
+		margin-left: 28rpx;
 	}
 
 	.ml-142 {
@@ -448,7 +483,7 @@
 	}
 
 	.mb-56 {
-		margin-bottom: 56rpx;
+		margin-bottom: 10rpx;
 	}
 
 	.mrl-12 {
@@ -483,67 +518,74 @@
 	.left-box {
 		display: flex;
 		flex-direction: column;
+		width: 384rpx;
+		margin-right: 12rpx;
 	}
 
 	.data-box {
-		padding: 0 112rpx 56rpx 112rpx;
+		padding: 0 23rpx 23rpx 25rpx;
 		box-sizing: border-box;
 		display: flex;
 		flex: 1;
 	}
 
 	.amount-box {
-		width: 620rpx;
-		height: 204rpx;
+		width: 121rpx;
+		height: 39rpx;
 		position: relative;
-		padding: 20rpx 50rpx;
+		padding: 3rpx 9rpx;
 		box-sizing: border-box;
 		display: flex;
 		align-items: center;
-		margin-right: 62rpx;
 	}
 
 	.amount-img {
 		position: absolute;
 		left: 0;
 		top: 0;
-		width: 100%;
+		width: 121rpx;
 		height: 100%;
 		z-index: 2;
 	}
 
 	.amount-img-two {
-		width: 168rpx;
-		height: 168rpx;
-		margin-right: 40rpx;
+		width: 32rpx;
+		height: 32rpx;
+		margin-right: 7.8rpx;
+		flex-shrink: 0;
 	}
 
 	.list-box {
+		width: 386rpx;
+		height: 297rpx;
 		position: relative;
-		padding: 60rpx 40rpx;
+		padding: 12rpx 7rpx;
 		box-sizing: border-box;
 		display: flex;
 		flex-direction: column;
-		margin-right: 62rpx;
 	}
 
 	.list-img {
 		position: absolute;
 		left: 0;
 		top: 0;
-		width: 100%;
-		height: 100%;
+		width: 386rpx;
+		height: 297rpx;
 		z-index: 2;
 	}
 
 	.right-box {
 		display: flex;
 		flex-direction: column;
+		width: 304rpx;
+		height: 350rpx;
 	}
 
 	.chart-box {
+		width: 304rpx;
+		height: 105rpx;
 		position: relative;
-		padding: 40rpx;
+		padding: 7rpx;
 		box-sizing: border-box;
 		display: flex;
 		flex-direction: column;
@@ -553,30 +595,30 @@
 		position: absolute;
 		left: 0;
 		top: 0;
-		width: 100%;
-		height: 100%;
+		width: 304rpx;
+		height: 105rpx;
 		z-index: 2;
 	}
 
 	.title-box {
 		position: relative;
-		width: 1404rpx;
-		height: 78rpx;
+		width: 274rpx;
+		height: 15rpx;
 	}
 
 	.title-img {
 		position: absolute;
 		top: 0;
 		bottom: 0;
-		width: 100%;
-		height: 100%;
+		width: 274rpx;
+		height: 15rpx;
 		z-index: 2;
 	}
 
 	.title-right {
 		text-align: right;
 		position: relative;
-		top: 20rpx;
+		top: 4rpx;
 		z-index: 2;
 	}
 
@@ -584,8 +626,10 @@
 		position: absolute;
 		top: 0;
 		right: 0;
+		padding: 2rpx 4rpx 3rpx;
+		box-sizing: border-box;
 		border-radius: 2rpx;
-		border-image: linear-gradient(90deg, rgba(113, 203, 255, 0.5), rgba(0, 161, 255, 0.05)) 0 0;
+		background: linear-gradient(to right, RGBA(19, 56, 87, 1), RGBA(0, 28, 59, 1));
 		z-index: 2;
 	}
 
@@ -596,8 +640,8 @@
 	}
 
 	.bf-img {
-		width: 32rpx;
-		height: 32rpx;
+		width: 6rpx;
+		height: 6rpx;
 		margin-right: 1rpx;
 	}
 
@@ -608,20 +652,20 @@
 	}
 
 	.bf-box {
-		width: 376rpx;
+		width: 73rpx;
 		height: auto;
 	}
 
 	.bf-num {
-		width: 376rpx;
-		height: 180rpx;
+		width: 73rpx;
+		height: 35rpx;
 		position: relative;
-		margin-bottom: 24rpx;
+		margin-bottom: 4rpx;
 	}
 
 	.bf-title {
 		width: 100%;
-		height: 56rpx;
+		height: 10rpx;
 		display: flex;
 		align-items: center;
 		justify-content: center;
@@ -632,14 +676,14 @@
 		position: absolute;
 		top: 0;
 		height: 0;
-		width: 100%;
-		height: 100%;
+		width: 73rpx;
+		height: 10rpx;
 		z-index: 2;
 	}
 
 	.yh-img {
-		width: 36rpx;
-		height: 36rpx;
+		width: 7rpx;
+		height: 7rpx;
 		margin-right: 1rpx;
 	}
 
@@ -647,54 +691,61 @@
 		position: absolute;
 		left: 0;
 		top: 0;
-		width: 100%;
-		height: 100%;
+		width: 73rpx;
+		height: 35rpx;
 		z-index: 2;
 	}
 
 	.hx-box {
-		width: 280rpx;
-		height: 280rpx;
+		width: 54rpx;
+		height: 54rpx;
 	}
 
 	.scroll-view-css {
 		width: 100%;
-		height: 1060rpx;
+		height: 269rpx;
 		overflow: auto;
-	}
-
-	.scroll-view-css ::-webkit-scrollbar {
-		display: none;
+		padding: 5rpx 0;
+		box-sizing: border-box;
 	}
 
 	.item-box {
-		width: 100%;
-		height: 136rpx;
+		width: 370rpx;
+		height: 27rpx;
 		background: rgba(0, 161, 255, 0.05);
-		border-radius: 48rpx;
-		margin-bottom: 32rpx;
-		padding: 28rpx 48rpx;
+		border-radius: 9rpx;
+		margin-bottom: 6rpx;
+		padding: 5rpx 9rpx;
 		box-sizing: border-box;
 		display: flex;
 		align-items: center;
 		justify-content: space-between;
 	}
 
+	.hr {
+		width: 375rpx;
+		height: 6rpx;
+		background: transparent;
+	}
+
 	.user-box {
 		display: flex;
 		align-items: center;
 	}
 
 	.user-img {
-		width: 80rpx;
-		height: 80rpx;
+		width: 15rpx;
+		height: 15rpx;
 		border-radius: 50%;
-		margin-right: 16rpx;
+		margin-right: 3rpx;
+		flex-shrink: 0;
 	}
 
 	.column-box {
-		padding: 40rpx 0 28rpx;
-		box-sizing: border-box;
+		width: 304rpx;
+		height: 82rpx;
+		/* padding: 7rpx 11rpx 5rpx; */
+		/* box-sizing: border-box; */
 	}
 
 	.w-max-441 {
@@ -702,6 +753,6 @@
 	}
 
 	.w-90 {
-		max-width: 90%;
+		max-width: 80%;
 	}
 </style>

TEMPAT SAMPAH
static/bg.png


+ 10 - 0
uni_modules/uni-dateformat/changelog.md

@@ -0,0 +1,10 @@
+## 1.0.0(2021-11-19)
+- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
+- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-dateformat](https://uniapp.dcloud.io/component/uniui/uni-dateformat)
+## 0.0.5(2021-07-08)
+- 调整 默认时间不再是当前时间,而是显示'-'字符
+## 0.0.4(2021-05-12)
+- 新增 组件示例地址
+## 0.0.3(2021-02-04)
+- 调整为uni_modules目录规范
+- 修复 iOS 平台日期格式化出错的问题

+ 200 - 0
uni_modules/uni-dateformat/components/uni-dateformat/date-format.js

@@ -0,0 +1,200 @@
+// yyyy-MM-dd hh:mm:ss.SSS 所有支持的类型
+function pad(str, length = 2) {
+	str += ''
+	while (str.length < length) {
+		str = '0' + str
+	}
+	return str.slice(-length)
+}
+
+const parser = {
+	yyyy: (dateObj) => {
+		return pad(dateObj.year, 4)
+	},
+	yy: (dateObj) => {
+		return pad(dateObj.year)
+	},
+	MM: (dateObj) => {
+		return pad(dateObj.month)
+	},
+	M: (dateObj) => {
+		return dateObj.month
+	},
+	dd: (dateObj) => {
+		return pad(dateObj.day)
+	},
+	d: (dateObj) => {
+		return dateObj.day
+	},
+	hh: (dateObj) => {
+		return pad(dateObj.hour)
+	},
+	h: (dateObj) => {
+		return dateObj.hour
+	},
+	mm: (dateObj) => {
+		return pad(dateObj.minute)
+	},
+	m: (dateObj) => {
+		return dateObj.minute
+	},
+	ss: (dateObj) => {
+		return pad(dateObj.second)
+	},
+	s: (dateObj) => {
+		return dateObj.second
+	},
+	SSS: (dateObj) => {
+		return pad(dateObj.millisecond, 3)
+	},
+	S: (dateObj) => {
+		return dateObj.millisecond
+	},
+}
+
+// 这都n年了iOS依然不认识2020-12-12,需要转换为2020/12/12
+function getDate(time) {
+	if (time instanceof Date) {
+		return time
+	}
+	switch (typeof time) {
+		case 'string':
+			{
+				// 2020-12-12T12:12:12.000Z、2020-12-12T12:12:12.000
+				if (time.indexOf('T') > -1) {
+					return new Date(time)
+				}
+				return new Date(time.replace(/-/g, '/'))
+			}
+		default:
+			return new Date(time)
+	}
+}
+
+export function formatDate(date, format = 'yyyy/MM/dd hh:mm:ss') {
+	if (!date && date !== 0) {
+		return ''
+	}
+	date = getDate(date)
+	const dateObj = {
+		year: date.getFullYear(),
+		month: date.getMonth() + 1,
+		day: date.getDate(),
+		hour: date.getHours(),
+		minute: date.getMinutes(),
+		second: date.getSeconds(),
+		millisecond: date.getMilliseconds()
+	}
+	const tokenRegExp = /yyyy|yy|MM|M|dd|d|hh|h|mm|m|ss|s|SSS|SS|S/
+	let flag = true
+	let result = format
+	while (flag) {
+		flag = false
+		result = result.replace(tokenRegExp, function(matched) {
+			flag = true
+			return parser[matched](dateObj)
+		})
+	}
+	return result
+}
+
+export function friendlyDate(time, {
+	locale = 'zh',
+	threshold = [60000, 3600000],
+	format = 'yyyy/MM/dd hh:mm:ss'
+}) {
+	if (time === '-') {
+		return time
+	}
+	if (!time && time !== 0) {
+		return ''
+	}
+	const localeText = {
+		zh: {
+			year: '年',
+			month: '月',
+			day: '天',
+			hour: '小时',
+			minute: '分钟',
+			second: '秒',
+			ago: '前',
+			later: '后',
+			justNow: '刚刚',
+			soon: '马上',
+			template: '{num}{unit}{suffix}'
+		},
+		en: {
+			year: 'year',
+			month: 'month',
+			day: 'day',
+			hour: 'hour',
+			minute: 'minute',
+			second: 'second',
+			ago: 'ago',
+			later: 'later',
+			justNow: 'just now',
+			soon: 'soon',
+			template: '{num} {unit} {suffix}'
+		}
+	}
+	const text = localeText[locale] || localeText.zh
+	let date = getDate(time)
+	let ms = date.getTime() - Date.now()
+	let absMs = Math.abs(ms)
+	if (absMs < threshold[0]) {
+		return ms < 0 ? text.justNow : text.soon
+	}
+	if (absMs >= threshold[1]) {
+		return formatDate(date, format)
+	}
+	let num
+	let unit
+	let suffix = text.later
+	if (ms < 0) {
+		suffix = text.ago
+		ms = -ms
+	}
+	const seconds = Math.floor((ms) / 1000)
+	const minutes = Math.floor(seconds / 60)
+	const hours = Math.floor(minutes / 60)
+	const days = Math.floor(hours / 24)
+	const months = Math.floor(days / 30)
+	const years = Math.floor(months / 12)
+	switch (true) {
+		case years > 0:
+			num = years
+			unit = text.year
+			break
+		case months > 0:
+			num = months
+			unit = text.month
+			break
+		case days > 0:
+			num = days
+			unit = text.day
+			break
+		case hours > 0:
+			num = hours
+			unit = text.hour
+			break
+		case minutes > 0:
+			num = minutes
+			unit = text.minute
+			break
+		default:
+			num = seconds
+			unit = text.second
+			break
+	}
+
+	if (locale === 'en') {
+		if (num === 1) {
+			num = 'a'
+		} else {
+			unit += 's'
+		}
+	}
+
+	return text.template.replace(/{\s*num\s*}/g, num + '').replace(/{\s*unit\s*}/g, unit).replace(/{\s*suffix\s*}/g,
+		suffix)
+}

+ 88 - 0
uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue

@@ -0,0 +1,88 @@
+<template>
+	<text>{{dateShow}}</text>
+</template>
+
+<script>
+	import {friendlyDate} from './date-format.js'
+	/**
+	 * Dateformat 日期格式化
+	 * @description 日期格式化组件
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=3279
+	 * @property {Object|String|Number} date 日期对象/日期字符串/时间戳
+	 * @property {String} locale 格式化使用的语言
+	 * 	@value zh 中文
+	 * 	@value en 英文
+	 * @property {Array} threshold 应用不同类型格式化的阈值
+	 * @property {String} format 输出日期字符串时的格式
+	 */
+	export default {
+		name: 'uniDateformat',
+		props: {
+			date: {
+				type: [Object, String, Number],
+				default () {
+					return '-'
+				}
+			},
+			locale: {
+				type: String,
+				default: 'zh',
+			},
+			threshold: {
+				type: Array,
+				default () {
+					return [0, 0]
+				}
+			},
+			format: {
+				type: String,
+				default: 'yyyy/MM/dd hh:mm:ss'
+			},
+			// refreshRate使用不当可能导致性能问题,谨慎使用
+			refreshRate: {
+				type: [Number, String],
+				default: 0
+			}
+		},
+		data() {
+			return {
+				refreshMark: 0
+			}
+		},
+		computed: {
+			dateShow() {
+				this.refreshMark
+				return friendlyDate(this.date, {
+					locale: this.locale,
+					threshold: this.threshold,
+					format: this.format
+				})
+			}
+		},
+		watch: {
+			refreshRate: {
+				handler() {
+					this.setAutoRefresh()
+				},
+				immediate: true
+			}
+		},
+		methods: {
+			refresh() {
+				this.refreshMark++
+			},
+			setAutoRefresh() {
+				clearInterval(this.refreshInterval)
+				if (this.refreshRate) {
+					this.refreshInterval = setInterval(() => {
+						this.refresh()
+					}, parseInt(this.refreshRate))
+				}
+			}
+		}
+	}
+</script>
+
+<style>
+
+</style>

+ 88 - 0
uni_modules/uni-dateformat/package.json

@@ -0,0 +1,88 @@
+{
+  "id": "uni-dateformat",
+  "displayName": "uni-dateformat 日期格式化",
+  "version": "1.0.0",
+  "description": "日期格式化组件,可以将日期格式化为1分钟前、刚刚等形式",
+  "keywords": [
+    "uni-ui",
+    "uniui",
+    "日期格式化",
+    "时间格式化",
+    "格式化时间",
+    ""
+],
+  "repository": "https://github.com/dcloudio/uni-ui",
+  "engines": {
+    "HBuilderX": ""
+  },
+  "directories": {
+    "example": "../../temps/example_temps"
+  },
+  "dcloudext": {
+    "category": [
+      "前端组件",
+      "通用组件"
+    ],
+    "sale": {
+      "regular": {
+        "price": "0.00"
+      },
+      "sourcecode": {
+        "price": "0.00"
+      }
+    },
+    "contact": {
+      "qq": ""
+    },
+    "declaration": {
+      "ads": "无",
+      "data": "无",
+      "permissions": "无"
+    },
+    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+  },
+  "uni_modules": {
+    "dependencies": ["uni-scss"],
+    "encrypt": [],
+    "platforms": {
+      "cloud": {
+        "tcb": "y",
+        "aliyun": "y"
+      },
+      "client": {
+        "App": {
+          "app-vue": "y",
+          "app-nvue": "y"
+        },
+        "H5-mobile": {
+          "Safari": "y",
+          "Android Browser": "y",
+          "微信浏览器(Android)": "y",
+          "QQ浏览器(Android)": "y"
+        },
+        "H5-pc": {
+          "Chrome": "y",
+          "IE": "y",
+          "Edge": "y",
+          "Firefox": "y",
+          "Safari": "y"
+        },
+        "小程序": {
+          "微信": "y",
+          "阿里": "y",
+          "百度": "y",
+          "字节跳动": "y",
+          "QQ": "y"
+        },
+        "快应用": {
+          "华为": "y",
+          "联盟": "y"
+        },
+        "Vue": {
+            "vue2": "y",
+            "vue3": "y"
+        }
+      }
+    }
+  }
+}

+ 11 - 0
uni_modules/uni-dateformat/readme.md

@@ -0,0 +1,11 @@
+
+
+### DateFormat 日期格式化
+> **组件名:uni-dateformat**
+> 代码块: `uDateformat`
+
+
+日期格式化组件。
+
+### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-dateformat)
+#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 

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

@@ -0,0 +1,8 @@
+## 1.0.3(2022-01-21)
+- 优化 组件示例
+## 1.0.2(2021-11-22)
+- 修复 / 符号在 vue 不同版本兼容问题引起的报错问题
+## 1.0.1(2021-11-22)
+- 修复 vue3中scss语法兼容问题
+## 1.0.0(2021-11-18)
+- init

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

TEMPAT SAMPAH
unpackage/cache/apk/__UNI__90A3ED1_cm.apk


+ 1 - 1
unpackage/cache/apk/apkurl

@@ -1 +1 @@
-https://app.liuyingyong.cn/build/download/a92d0620-a71a-11f0-9640-9fa9010d8423
+https://app.liuyingyong.cn/build/download/72ab2540-a7ee-11f0-b2c7-651cad12098a

File diff ditekan karena terlalu besar
+ 0 - 0
unpackage/cache/apk/cmManifestCache.json


+ 1 - 1
unpackage/cache/wgt/__UNI__90A3ED1/app-config-service.js

@@ -1,7 +1,7 @@
 
 var isReady=false;var onReadyCallbacks=[];
 var isServiceReady=false;var onServiceReadyCallbacks=[];
-var __uniConfig = {"pages":["pages/index/index"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"uni-app","navigationBarBackgroundColor":"#F8F8F8","backgroundColor":"#F8F8F8","navigationStyle":"custom"},"darkmode":false,"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"data_visualization","compilerVersion":"4.66","entryPagePath":"pages/index/index","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
+var __uniConfig = {"pages":["pages/index/index"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"uni-app","navigationBarBackgroundColor":"#F8F8F8","backgroundColor":"#F8F8F8","navigationStyle":"custom","rpxCalcMaxDeviceWidth":3840,"rpxCalcBaseDeviceWidth":750,"rpxCalcIncludeWidth":750},"darkmode":false,"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"data_visualization","compilerVersion":"4.66","entryPagePath":"pages/index/index","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
 var __uniRoutes = [{"path":"/pages/index/index","meta":{"isQuit":true},"window":{"navigationBarTitleText":"首页","pageOrientation":"landscape"}}];
 __uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
 __uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});

File diff ditekan karena terlalu besar
+ 0 - 0
unpackage/cache/wgt/__UNI__90A3ED1/app-service.js


File diff ditekan karena terlalu besar
+ 0 - 0
unpackage/cache/wgt/__UNI__90A3ED1/app-view.js


File diff ditekan karena terlalu besar
+ 0 - 0
unpackage/cache/wgt/__UNI__90A3ED1/manifest.json


TEMPAT SAMPAH
unpackage/cache/wgt/__UNI__90A3ED1/static/bg.png


+ 1 - 1
unpackage/dist/build/app-plus/app-config-service.js

@@ -1,7 +1,7 @@
 
 var isReady=false;var onReadyCallbacks=[];
 var isServiceReady=false;var onServiceReadyCallbacks=[];
-var __uniConfig = {"pages":["pages/index/index"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"uni-app","navigationBarBackgroundColor":"#F8F8F8","backgroundColor":"#F8F8F8","navigationStyle":"custom"},"darkmode":false,"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"data_visualization","compilerVersion":"4.66","entryPagePath":"pages/index/index","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
+var __uniConfig = {"pages":["pages/index/index"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"uni-app","navigationBarBackgroundColor":"#F8F8F8","backgroundColor":"#F8F8F8","navigationStyle":"custom","rpxCalcMaxDeviceWidth":3840,"rpxCalcBaseDeviceWidth":750,"rpxCalcIncludeWidth":750},"darkmode":false,"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"data_visualization","compilerVersion":"4.66","entryPagePath":"pages/index/index","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
 var __uniRoutes = [{"path":"/pages/index/index","meta":{"isQuit":true},"window":{"navigationBarTitleText":"首页","pageOrientation":"landscape"}}];
 __uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
 __uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});

File diff ditekan karena terlalu besar
+ 0 - 0
unpackage/dist/build/app-plus/app-service.js


File diff ditekan karena terlalu besar
+ 0 - 0
unpackage/dist/build/app-plus/app-view.js


File diff ditekan karena terlalu besar
+ 0 - 0
unpackage/dist/build/app-plus/manifest.json


TEMPAT SAMPAH
unpackage/dist/build/app-plus/static/bg.png


Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini