Просмотр исходного кода

Merge branch 'master' of http://git.wealfavor.cn/root/wh-new-xcx

DESKTOP-70VPDLK\Administrator 1 год назад
Родитель
Сommit
1196a6f667

+ 48 - 12
common/task/task-item.vue

@@ -1,15 +1,14 @@
 <template>
 	<view>
 		<view class="task-body m-20">
-			<view class="row-c page-box-bg-fff m-b20 r-30 p-30 box-shadow-197" v-for="(item,index) in 30" :key="index">
+			<view class="row-c page-box-bg-fff m-b20 r-30 p-30 box-shadow-197" v-for="(item,index) in 10" :key="index">
 				<image class="wh-80" :src="getLeftImg(leftImg)" mode=""></image>
 				<view class="flex m-l20">
 					<view class="row-justify-sb center flex">
 						<text class="text-color-333 sys-weight-600">垫资还款</text>
-						<view class="row-c">
-							<text class="size-26 text-color-333">刘芳芳1</text>
-							<image class="wh-30 m-l16" style="margin-top: 4rpx;" src="/static/img/task/task-phone.png"
-								mode=""></image>
+						<view class="row-c line-40">
+							<text class="size-26 text-color-333">刘芳芳{{index}}</text>
+							<image class="wh-30 m-l16" src="/static/img/task/task-phone.png" mode=""></image>
 						</view>
 					</view>
 					<view
@@ -23,14 +22,21 @@
 						<text class="size-24 text-color-999 flex">2024.10.11 12:45</text>
 						<image style="width: 65rpx;height: 32rpx;" :src="getIconStatus(iconStatus)" v-if="type == 1">
 						</image>
-						<button class="button-background en-button sys-weight-500 text-color-fff size-28 r-100" style="width: 220rpx;height: 70rpx;line-height: 70rpx;" type="default" hover-class="is-hover"
-							v-if="type == 2">领取任务</button>
-						<image style="width: 45rpx;height: 30rpx;" :src="getIconStatus(iconStatus)" v-if="type == 3">
-						</image>
+						<button class="button-background en_button sys-weight-500 text-color-fff size-28 r-100"
+							style="width: 200rpx;height: 70rpx;line-height: 70rpx;" type="default"
+							hover-class="is-hover" v-if="type == 2">领取任务</button>
+						<view class="row-c" v-if="type == 3">
+							<button
+								class="button-backgroun en_buttond left_button sys-weight-500 button_color-008FD6 size-26 r-100 m-r20"
+								type="default" hover-class="is-hover">核算</button>
+							<button
+								class="button-background en_button left_button right_button sys-weight-500 button_color-008FD6 size-26 r-100"
+								type="default" hover-class="is-hover">客户分类</button>
+						</view>
 					</view>
 				</view>
 			</view>
-			<view class="content-row sys-list-background-color"></view>
+			<view class="placeholder sys-list-background-color" v-if="is_bottom"></view>
 		</view>
 	</view>
 </template>
@@ -47,6 +53,10 @@
 				type: Number,
 				default: 1
 			},
+			taskList: {
+				type: Array,
+				default: () => []
+			},
 			iconStatus: {
 				type: Number,
 				default: 0
@@ -63,6 +73,10 @@
 				type: Boolean,
 				default: false
 			},
+			is_bottom: {
+				type: Boolean,
+				default: false
+			},
 		},
 		data() {
 			return {
@@ -82,10 +96,32 @@
 </script>
 
 <style lang="scss" scoped>
-	.en-button {
+	.en_button {
 		border: none;
 	}
-	
+
+	.task-body {
+		height: 100%;
+	}
+
+	.left_button {
+		width: 122rpx;
+		height: 56rpx;
+		color: #008FD6;
+		line-height: 56rpx;
+		background: #FFFFFF;
+		border: 1rpx solid #008FD6;
+		border-radius: 100rpx;
+	}
+
+	.right_button {
+		width: 150rpx;
+	}
+
+	.placeholder {
+		height: 40rpx;
+	}
+
 	button::after {
 		border: none;
 	}

+ 79 - 0
components/en-scroll/en-scroll.vue

@@ -0,0 +1,79 @@
+<template>
+	<view>
+		<scroll-view class="main" :style="{height:`calc(100vh - ${$tools.topHeight()+navHeight+tabHeight}px)`}"
+			scroll-y="true" refresher-enabled="true" :refresher-triggered="triggered" :refresher-threshold="45"
+			refresher-background="lightgreen" @refresherpulling="onPulling" @refresherrefresh="onRefresh"
+			@refresherrestore="onRestore" @refresherabort="onAbort" @scrolltolower="onScrolltolower">
+			<!-- 自定义样式时设置 refresher-default-style="none" -->
+			<view slot="refresher">刷新样式</view>
+			<slot></slot>
+		</scroll-view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			navHeight: {
+				type: Number,
+				default: 0
+			},
+			is_tabHeight: {
+				type: Boolean,
+				default: false
+			},
+		},
+		data() {
+			return {
+				triggered: false,
+				// 底部tab高度
+				tabHeight: uni.getStorageSync('tab_height'),
+			}
+		},
+		created() {
+			this.tabHeight = this.is_tabHeight ? this.tabHeight : 0
+		},
+		onLoad() {
+			// this._freshing = false;
+			// setTimeout(() => {
+			// 	this.triggered = true;
+			// }, 1000)
+		},
+		methods: {
+			// 自定义下拉刷新控件被下拉
+			onPulling(e) {
+				if (e.detail.deltaY < 0) {
+					return
+				}
+				this.triggered = true
+			},
+			// 触发下拉刷新
+			onRefresh() {
+				if (this._freshing) return;
+				this._freshing = true;
+				this.$emit('onRefresh')
+			},
+			// 数据加载结束
+			onEndPulling() {
+				this.triggered = false;
+				this._freshing = false;
+			},
+			// 重置下拉
+			onRestore() {
+				this.triggered = 'restore';
+			},
+			// 下拉被中止
+			onAbort() {
+				this.triggered = false;
+				this._freshing = false;
+			},
+			// 滚动到底部
+			onScrolltolower() {
+				this.$emit('onScrollBottom')
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 2 - 3
components/en-utils/en-blank/en-blank.vue

@@ -43,7 +43,7 @@
 		},
 		data() {
 			return {
-				imageList:['']
+				imageList: ['']
 			}
 		},
 		methods: {
@@ -57,7 +57,6 @@
 <style scoped lang="scss">
 	// @import url("/static/css/en-common.css") ;
 	.blank-page {
-		width: calc(100vw - 60rpx);
 		padding: 120rpx 0;
 		z-index: 2;
 		display: flex;
@@ -65,8 +64,8 @@
 		align-items: center;
 		justify-content: center;
 		background-color: #fff;
-		margin: 30rpx;
 		border-radius: 20rpx;
+		margin: 0 20rpx;
 	}
 
 	.blank-img-box {

+ 15 - 3
components/en-utils/en-tab/en-tab.vue

@@ -1,9 +1,9 @@
 <template>
-	<view class="tab-box sys-background-fff">
+	<view class="tab-box tab_height sys-background-fff">
 		<view class="tab-item " :class="{'tab-check':tabIndex==index}" @click="setTab(item.path,index)"
 			v-for="(item,index) in tabList" :key="index">
 			<view class="tab-content">
-				<image class="tab-img" 
+				<image class="tab-img"
 					:src="`/static/img/tabBar/${tabIndex==index?item.selectedIconPath:item.iconPath}.png`"></image>
 				<view class="tab-text sys-size-24 text-color-dominant">{{item.name}}</view>
 			</view>
@@ -69,11 +69,23 @@
 				]
 			};
 		},
+		created() {
+			this.getTabHeight()
+		},
 		methods: {
 			setTab(path) {
 				uni.switchTab({
 					url: path
 				})
+			},
+			getTabHeight() {
+				const query = uni.createSelectorQuery().in(this);
+				query.select('.tab_height').boundingClientRect(data => {
+					if (data) {
+						// data.height 就是元素的高度
+						uni.setStorageSync('tab_height', data.height)
+					}
+				}).exec();
 			}
 		},
 
@@ -103,7 +115,7 @@
 				box-sizing: border-box;
 				border-radius: 0 0 100rpx 100rpx;
 				text-align: center;
-				
+
 				.tab-img {
 					width: 42rpx;
 					height: 42rpx;

+ 4 - 1
main.js

@@ -21,12 +21,15 @@ import Tab from './components/en-utils/en-tab/en-tab.vue'
 import EnButton from './components/en-utils/en-button/en-button.vue'
 // 无数据
 import Enblank from './components/en-utils/en-blank/en-blank.vue'
+// scroll-view组件
+import EnScroll from './components/en-scroll/en-scroll.vue'
 
 Vue.component('Search', Search)
 Vue.component('Nav', Nav)
 Vue.component('Tab', Tab)
 Vue.component('EnButton', EnButton)
 Vue.component('Enblank', Enblank)
+Vue.component('EnScroll', EnScroll)
 
 Vue.prototype.$tools = tools
 
@@ -59,4 +62,4 @@ export function createApp() {
 		app,
 	}
 }
-// #endif
+// #endif

+ 52 - 16
page_subpack/message/message.vue

@@ -1,28 +1,36 @@
 <template>
-	<view class="total-page page-box">
+	<view class="total-page page-env-20 page-box scroll_content">
 		<Nav :title="'消息'" :genre="1" :fixedHeight="50"></Nav>
 		<view class="task-tabs" :style="{top:`${$tools.topHeight()}px`}">
 			<z-tabs ref="tabs" :list="tabsList" :active-style="{color:'#10B261',fontWeight:'bold',fontSize:'30rpx'}"
 				:bar-style="{background:'#10B261'}" :inactive-style="{fontWeight:'bold',fontSize:'28rpx'}"
 				:current="current" :bar-animate-mode="'worm'" @change="tabsChange" />
 		</view>
-		<view class="task-body m-20">
-			<view class="row-c page-box-bg-fff m-b20 r-30 p-30 box-shadow-197" v-for="(item,index) in 30" :key="index">
-				<image class="wh-80" :src="getLeftImg(index)" mode=""></image>
-				<view class="flex m-l20">
-					<view class="row-justify-sb center flex">
-						<text class="text-color-333 sys-weight-400 size-30">您有新的可执行任务</text>
-						<image class="wh-30 m-l16" style="margin-top: 4rpx;" src="/static/img/task/task-phone.png"
-							mode=""></image>
-					</view>
-					<view class="row-justify-sb center m-t10">
-						<text class="size-26 text-color-666">垫资还款</text>
-						<text class="size-24 text-color-999">2024/12/24用款</text>
+		<EnScroll ref="scroll" class="main" @onRefresh="onRefresh" @onScrollBottom="onScrollBottom">
+			<view class="m-t20">
+				<Enblank :message="'暂无消息'" v-if="!messageList.length">
+				</Enblank>
+			</view>
+			<view class="m-lr20 page-env-160">
+				<view class="row-c page-box-bg-fff m-t20 r-30 p-30 box-shadow-197" v-for="(item,index) in 30"
+					:key="index">
+					<image class="wh-80" :src="getLeftImg(index)" mode=""></image>
+					<view class="flex m-l20">
+						<view class="row-justify-sb center flex">
+							<text class="text-color-333 sys-weight-400 size-30">您有新的可执行任务{{index}}</text>
+							<image class="wh-30 m-l16" style="margin-top: 4rpx;" src="/static/img/task/task-phone.png"
+								mode=""></image>
+						</view>
+						<view class="row-justify-sb center m-t10">
+							<text class="size-26 text-color-666">垫资还款</text>
+							<text class="size-24 text-color-999">2024/12/24用款</text>
+						</view>
 					</view>
 				</view>
 			</view>
-			<view class="content-row sys-list-background-color"></view>
-		</view>
+			<!-- <view class="placeholder sys-list-background-color" style="height: 60rpx;" v-if="is_bottom"></view> -->
+		</EnScroll>
+
 	</view>
 </template>
 <script>
@@ -56,7 +64,8 @@
 					disabled: false
 				}],
 				leftImg: ['task-house', 'task-business', 'task-repayment'],
-				iconList: ['task-audit', 'task-do', 'task-stay']
+				iconList: ['task-audit', 'task-do', 'task-stay'],
+				messageList: []
 			}
 		},
 		watch: {
@@ -70,6 +79,33 @@
 			getLeftImg(index) {
 				return `/static/img/task/${this.leftImg[0]}.png`
 			},
+			// 下拉刷新
+			onRefresh() {
+				uni.showLoading({
+					title: '数据加载中'
+				})
+				setTimeout(() => {
+					uni.showToast({
+						title: '加载完成',
+						icon: 'none'
+					})
+					this.$refs.scroll.onEndPulling()
+				}, 1000)
+				console.log("下拉刷新");
+			},
+			// 滚动到底部
+			onScrollBottom() {
+				uni.showLoading({
+					title: '数据加载中'
+				})
+				setTimeout(() => {
+					uni.showToast({
+						title: '加载完成',
+						icon: 'none'
+					})
+				}, 1000)
+				console.log("到底部了");
+			},
 		},
 	}
 </script>

+ 60 - 172
pages/index/index.vue

@@ -1,119 +1,29 @@
 <template>
 	<view class="total-page page_env page-box">
 		<Nav :title="'工作台导航'" :back="false" :is_fixed="true" :opacity="scrollTop" :justify="'left'" :color="'#fff'">
-			<view class="">
-				<view class="p-30">
-					<view class="bor-f1 row-justify-sb center p-40 r-20"
-						style="box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);">
-						<view class="center">
-							<image class="wh-100 r-circle" src="/static/img/index/index-avatar.png" mode="">
-							</image>
-							<view class="m-l20">
-								<text class="text-color-fff">HI,李亮</text>
-								<view class="text-color-fff size-24 text-center r-20 line-30 p-tb6 p-lr20 m-t10 "
-									style="background-color: rgba(0, 0, 0, 0.2);opacity: 0.6;">
-									业务专员
-								</view>
-							</view>
-						</view>
-						<image class="wh-80 r-circle is-hover" src="/static/img/index/index-system.png"
-							@click="onSystemShow">
-						</image>
-					</view>
-					<view class="row-c m-t30">
-						<view class="sys-background-dominant r-30 column-justify-sb" style="width: 50%;height: 300rpx;"
-							v-if="!is_admin">
-							<view class="column-c p-t40">
-								<view class="row-c" style="height: 80rpx;line-height: 80rpx;">
-									<image class="wh-80 m-r20 r20" src="/static/img/index/index-add.png" mode="">
-									</image>
-									<text class="text-color-fff sys-weight-600 size-30">新建任务</text>
-								</view>
-							</view>
-							<view class="p-l40 column justify-center"
-								style="background-color: rgba(255, 255, 255, 0.2);height: 140rpx;border-radius: 16rpx 16rpx 30rpx 30rpx;">
-								<view class="row-c m-b16" style="height: 30rpx;line-height: 30rpx;">
-									<image class="wh-30 m-r16" src="/static/img/index/index-record.png"></image>
-									<text class="size-26 text-color-fff">任务记录</text>
-								</view>
-								<text class="text-color-fff size-24 text-center r-30 line-30 p-tb6 p-lr20"
-									style="background-color: rgba(0, 0, 0, 0.2);opacity: 0.7;width: 140rpx;line-height: 40rpx;">
-									创建中(2)
-								</text>
-							</view>
-						</view>
-						<view class="column-justify-sb" style="width: 50%;height: 300rpx;" v-else>
-							<view class="column justify-center r-30 p-lr24"
-								style="height: 140rpx;background: linear-gradient( 180deg, #94ECE1 0%, rgba(255,255,255,1) 100%);">
-								<view class="row-c">
-									<view class="sys-background-dominant r-10" style="width: 8rpx;height: 24rpx;">
-									</view>
-									<text class="text-color-12 sys-weight-600 size-24 m-l10">今日放款</text>
-								</view>
-								<view class="row-justify-sb center m-t20" style="line-height: 40rpx;">
-									<text class="sys-weight-600" style="color: #02154E;">13678.45万</text>
-									<view class="row-c">
-										<text style="color: #02154E;padding-right: 6rpx;">34</text>
-										<text class="size-24" style="color: #999999;">笔</text>
-									</view>
-								</view>
-							</view>
-							<view class="column justify-center r-30 p-lr24"
-								style="height: 140rpx;background: linear-gradient( 180deg, #FFF5DA 0%, rgba(255,255,255,1) 100%);">
-								<view class="row-c">
-									<view class="sys-background-dominant r-10" style="width: 8rpx;height: 24rpx;">
-									</view>
-									<text class="text-color-12 sys-weight-600 size-24 m-l10">今日回款</text>
-								</view>
-								<view class="row-justify-sb center m-t20" style="line-height: 40rpx;">
-									<text class="sys-weight-600" style="color: #02154E;">78459.80万</text>
-									<view class="row-c">
-										<text style="color: #02154E;padding-right: 6rpx;">56</text>
-										<text class="size-24" style="color: #999999;">笔</text>
-									</view>
-								</view>
-							</view>
-						</view>
-						<view class="m-l20 column-justify-sb" style="width: 50%;height: 300rpx;">
-							<view class="row-justify-c center r-30"
-								style="height: 140rpx;background: linear-gradient( 180deg, #FFEEDA 0%, rgba(255,255,255,1) 100%);"
-								@click="onGetTask">
-								<view style="position: relative;">
-									<image class="wh-90 r-circle m-r20" src="/static/img/index/index-task.png"
-										style="margin-right: 20rpx;" mode="">
-									</image>
-									<view class="text-color-fff size-20"
-										style="border-radius: 40rpx;background: red;padding: 2rpx 10rpx;position: absolute;right: 10rpx;top: -10rpx;line-height: 30rpx;">
-										12
-									</view>
-								</view>
-								<text class="text-color-12 sys-weight-600">领取任务</text>
-							</view>
-							<view class="row-justify-c center r-30"
-								style="height: 140rpx;background: linear-gradient( 180deg, #DAF4FF 0%, rgba(255,255,255,1) 100%);"
-								@click="onMessage">
-								<image class="wh-90 r-circle m-r20" src="/static/img/index/index-money.png" mode="">
-								</image>
-								<text class="text-color-12 sys-weight-600">任务消息</text>
-							</view>
-						</view>
-					</view>
-				</view>
+			<view class="p-20">
+				<IndexPersonal></IndexPersonal>
+				<IndexColumn></IndexColumn>
 			</view>
 		</Nav>
 		<view class="p-lr20 m-tb30">
-			<view class="m-lr10 row-justify-sb center" style="height: 54rpx;line-height: 54rpx;">
+			<view class="personal m-lr10 row-justify-sb center">
 				<text class="sys-weight-600">我的待办</text>
 				<view class="row-justify-sb center">
-					<image class="wh-30 m-r16" src="/static/img/address.png" mode=""></image>
-					<text class="sys-background-fff size-24 sys-weight-600 p-lr30 r-40">2024年03月08日</text>
+					<view class="personal_text">
+						<uni-datetime-picker type="date" v-model="modelTime" @change="onChangeTime"
+							@touchmove.stop.prevent="moveHandle">
+							<view class="personal sys-background-fff size-24 sys-weight-600 p-lr30 r-40">{{indexTime}}
+							</view>
+						</uni-datetime-picker>
+					</view>
 				</view>
 			</view>
 		</view>
 		<view class="page-box-bg-fff m-t30 m-lr20 m-b20 r-30 row-justify-sb flex p-b30">
 			<view class="">
 				<view class="row-c">
-					<view class="column-c" style="width: 135px;">
+					<view class="pie_chart column-c">
 						<PieChart></PieChart>
 						<text class="size-24 text-color-12">任务完成情况</text>
 					</view>
@@ -125,90 +35,74 @@
 									<text class="m-l16 text-color-787">{{item.name}}</text>
 								</view>
 							</view>
-							<text class="text-color-12 sys-weight-600" style="margin-left: 40rpx;">{{item.value}}</text>
+							<text class="text-color-12 sys-weight-600 m-l40">{{item.value}}</text>
 						</view>
 					</view>
 				</view>
 			</view>
-			<view class="column-sb-c" style="width: 135px;padding-top: 20rpx;">
-				<CircleChart :bgColor="'#0FB160'"></CircleChart>
+			<view class="circle_chart column-sb-c m-t10">
+				<CircleChart :width="'180rpx'" :height="'180rpx'" :bgColor="'#0FB160'"></CircleChart>
 				<text class="size-24 text-color-12">任务进度</text>
 			</view>
 		</view>
-		<TaskItem :type="2"></TaskItem>
-		<uni-popup background-color="#fff" ref="popup" type="left" border-radius="10px 10px 0 0"
-			@touchmove.stop.prevent="moveHandle">
-			<SystemPopup ref="system" @onCloseSystem="onCloseSystem"></SystemPopup>
-		</uni-popup>
-		<Tab :tab-index="0"></Tab>
+		<Enblank :message="'暂无待办任务'" v-if="!taskList.length"></Enblank>
+		<TaskItem :type="2" :taskList="taskList"></TaskItem>
+		<Tab class="tabs_height" :tab-index="0"></Tab>
 	</view>
 
 </template>
 <script>
-	import TaskItem from "@/common/task/task-item.vue";
-	import SystemPopup from "@/common/system_popup/system_popup.vue";
-	import PieChart from "@/common/chart/pie_chart.vue";
-	import CircleChart from "@/common/chart/circle_chart.vue";
-	
+	import TaskItem from "@/common/task/task-item.vue"
+	import PieChart from "@/common/chart/pie_chart.vue"
+	import CircleChart from "@/common/chart/circle_chart.vue"
+	// 个人信息
+	import IndexColumn from "./module/index_column.vue"
+	// 顶部栏目
+	import IndexPersonal from "./module/index_personal.vue"
+
 	export default {
 		components: {
 			TaskItem,
-			SystemPopup,
 			PieChart,
-			CircleChart
+			CircleChart,
+			IndexColumn,
+			IndexPersonal
 		},
 		data() {
 			return {
+				modelTime: this.$tools.getDate('-'),
+				indexTime: this.$tools.getDate(),
 				is_admin: false,
 				scrollTop: 0,
 				topNavHeight: 0,
-				chartList:[{
-					name:"超期",
-					color:'#DE5847',
-					value:"100%"
-				},{
-					name:"滞后",
-					color:'#EF8F27',
-					value:"100%"
-				},{
-					name:"正常",
-					color:'#3ABF7D',
-					value:"100%"
-				},]
+				chartList: [{
+					name: "超期",
+					color: '#DE5847',
+					value: "100%"
+				}, {
+					name: "滞后",
+					color: '#EF8F27',
+					value: "100%"
+				}, {
+					name: "正常",
+					color: '#3ABF7D',
+					value: "100%"
+				}, ],
+				taskList: []
 			}
-		},
-		created() {
-			this.topNavHeight = getApp().globalData.topNavHeight
-		},
-		onLaunch() {
-
 		},
 		onLoad() {
 			uni.hideTabBar()
-		},
-		watch: {
-
-
 		},
 		onPageScroll(res) {
 			this.scrollTop = res.scrollTop / 120
 		},
-		mounted() {
-
+		onReachBottom() {
+			console.log('到底部了');
 		},
 		methods: {
-			onSystemShow() {
-				this.$refs.popup.open('left')
-			},
-			onGetTask() {
-				uni.navigateTo({
-					url: "/page_subpack/gain_task/gain_task"
-				})
-			},
-			onMessage() {
-				uni.navigateTo({
-					url: "/page_subpack/message/message"
-				})
+			onChangeTime(e) {
+				this.indexTime = e
 			},
 			moveHandle() {
 				return false
@@ -217,26 +111,20 @@
 	}
 </script>
 <style lang="scss" scoped>
-	// .page-box{
-	//   height: 100vh;
-	//   background-image: url("https://wealfavor-1257406827.cos.ap-beijing.myqcloud.com/new-xcx/index/index-bg.png?imageMogr2/quality/20");
-	//   background-repeat: no-repeat;
-	//   background-size: 100% auto;
-	//   display: flex;
-	//   flex-direction: column;
-	//   .top-data{
-	//     flex: 1;
-	//     overflow: hidden;
-	//     .top-row{
-	//       height: 680rpx;
-	//     }
-	//   }
+	.personal {
+		height: 55rpx;
+		line-height: 55rpx;
+	}
 
-	//   .bottom-data{
+	.pie_chart {
+		width: 135px
+	}
 
-	//   }
+	.circle_chart {
+		width: 135px;
+		padding-top: 20rpx;
+	}
 
-	// }
 	.chart_dot {
 		width: 16rpx;
 		height: 16rpx;

+ 188 - 0
pages/index/module/index_column.vue

@@ -0,0 +1,188 @@
+<template>
+	<view class="row-c m-t20">
+		<view class="column_item sys-background-dominant r-30 column-justify-sb" v-if="!is_admin">
+			<view class="column_build column-c">
+				<view class="row-c">
+					<image class="wh-80 m-r30" src="/static/img/index/index-add.png" mode="">
+					</image>
+					<text class="text-color-fff sys-weight-600 size-30">新建任务</text>
+				</view>
+			</view>
+			<view class="column_record row-justify-sb center p-lr20">
+				<view class="column_task">
+					<view class="row-c m-b16 column-c justify-center line-30">
+						<text class="size-26 text-color-fff">任务记录</text>
+					</view>
+					<text class="column_record_num text-color-fff size-24 text-center r-12 line-30 p-tb6">
+						创建中(2)
+					</text>
+				</view>
+				<view class="column_line"></view>
+				<view class="column_task">
+					<view class="row-c m-b16 column-c justify-center line-30">
+						<text class="size-26 text-color-fff">征信审核</text>
+					</view>
+					<text class="column_record_num text-color-fff size-24 text-center r-12 line-30 p-tb6">
+						待验证(2)
+					</text>
+				</view>
+			</view>
+		</view>
+		<view class="column_item column-justify-sb" v-else>
+			<view class="column column_loan justify-center r-30 p-lr24">
+				<view class="row-c">
+					<view class="sys-background-dominant r-10" style="width: 8rpx;height: 24rpx;">
+					</view>
+					<text class="text-color-12 sys-weight-600 size-24 m-l10">今日放款</text>
+				</view>
+				<view class="row-justify-sb center m-t20 line-40">
+					<text class="sys-weight-600" style="color: #02154E;">13678.45万</text>
+					<view class="row-c">
+						<text style="color: #02154E;padding-right: 6rpx;">34</text>
+						<text class="size-24 text-color-999">笔</text>
+					</view>
+				</view>
+			</view>
+			<view class="column column_proceeds justify-center r-30 p-lr24">
+				<view class="row-c">
+					<view class="sys-background-dominant r-10" style="width: 8rpx;height: 24rpx;">
+					</view>
+					<text class="text-color-12 sys-weight-600 size-24 m-l10">今日回款</text>
+				</view>
+				<view class="row-justify-sb center m-t20 line-40">
+					<text class="sys-weight-600" style="color: #02154E;">78459.80万</text>
+					<view class="row-c">
+						<text style="color: #02154E;padding-right: 6rpx;">56</text>
+						<text class="size-24 text-color-999">笔</text>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="column_item m-l20 column-justify-sb">
+			<view class="task_item row-justify center r-30" @click="onGetTask">
+				<view class="m-l40" style="position: relative;">
+					<image class="wh-90 r-circle m-r20" src="/static/img/index/index-task.png" mode="">
+					</image>
+					<view class="task_num text-color-fff size-20" style="">
+						12
+					</view>
+				</view>
+				<text class="text-color-12 sys-weight-600">领取任务</text>
+			</view>
+			<view class="task_message row-justify center r-30" @click="onMessage">
+				<view class="m-l40" style="position: relative;">
+					<image class="wh-90 r-circle m-r20" src="/static/img/index/index-money.png" mode="">
+					</image>
+					<view class="task_num text-color-fff size-20" style="">
+						12
+					</view>
+				</view>
+				<text class="text-color-12 sys-weight-600">任务消息</text>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: 'index_column',
+		props: {
+			is_admin: {
+				type: Boolean,
+				default: false
+			},
+			data: {
+				type: Object,
+				default: () => {}
+			},
+		},
+		data() {
+			return {
+
+			}
+		},
+		methods: {
+			onGetTask() {
+				uni.navigateTo({
+					url: "/page_subpack/gain_task/gain_task"
+				})
+			},
+			onMessage() {
+				uni.navigateTo({
+					url: "/page_subpack/message/message"
+				})
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.column_item {
+		width: 50%;
+		height: 300rpx;
+	}
+
+	.column_build {
+		height: 160rpx;
+		line-height: 160rpx;
+	}
+
+	.column_line {
+		width: 1rpx;
+		margin: 0 6rpx;
+		height: 88rpx;
+		background: #FFFFFF;
+		opacity: 0.5;
+	}
+
+	.column_record {
+		height: 140rpx;
+		background-color: rgba(255, 255, 255, 0.2);
+		border-radius: 16rpx 16rpx 30rpx 30rpx;
+	}
+
+	.column_task {
+		width: 140rpx;
+		text-align: center;
+	}
+
+	.column_record_num {
+		background-color: rgba(0, 0, 0, 0.2);
+		opacity: 0.7;
+		line-height: 40rpx;
+		padding: 0 16rpx;
+		display: block;
+		height: 46rpx;
+		line-height: 46rpx;
+	}
+
+	.column_loan {
+		height: 140rpx;
+		background: linear-gradient(180deg, #94ECE1 0%, rgba(255, 255, 255, 1) 100%);
+	}
+
+	.column_proceeds {
+		height: 140rpx;
+		background: linear-gradient(180deg, #FFF5DA 0%, rgba(255, 255, 255, 1) 100%);
+	}
+
+	.task_item {
+		height: 140rpx;
+		background: linear-gradient(180deg, #FFEEDA 0%, rgba(255, 255, 255, 1) 100%);
+	}
+
+	.task_message {
+		height: 140rpx;
+		background: linear-gradient(180deg, #DAF4FF 0%, rgba(255, 255, 255, 1) 100%);
+	}
+
+	.task_num {
+		border-radius: 40rpx;
+		background: red;
+		padding: 2rpx 10rpx;
+		position: absolute;
+		right: 10rpx;
+		top: -10rpx;
+		line-height: 30rpx;
+	}
+</style>

+ 58 - 0
pages/index/module/index_personal.vue

@@ -0,0 +1,58 @@
+<template>
+	<view class="">
+		<view class="index_personal bg-rgba-255 r-20 bor-f1 row-justify-sb center p-40">
+			<view class="center">
+				<image class="wh-100 r-circle" src="/static/img/index/index-avatar.png" mode="">
+				</image>
+				<view class="m-l20">
+					<text class="text-color-fff">HI,李亮</text>
+					<view class="text-color-fff size-24 text-center r-20 line-30 p-tb6 p-lr20 m-t10 "
+						style="background-color: rgba(0, 0, 0, 0.2);opacity: 0.6;">
+						{{is_admin?'管理员':'业务员'}}
+					</view>
+				</view>
+			</view>
+			<image class="wh-80 r-circle is-hover" src="/static/img/index/index-system.png" @click="onSystemShow">
+			</image>
+		</view>
+		<uni-popup background-color="#fff" ref="popup" type="left" border-radius="10px 10px 0 0"
+			@touchmove.stop.prevent="moveHandle">
+			<SystemPopup ref="system" @onCloseSystem="onCloseSystem"></SystemPopup>
+		</uni-popup>
+	</view>
+</template>
+
+<script>
+	import SystemPopup from "@/common/system_popup/system_popup.vue"
+
+	export default {
+		name: 'index_personal',
+		components: {
+			SystemPopup
+		},
+		props: {
+			is_admin: {
+				type: Boolean,
+				default: true
+			},
+			data: {
+				type: Object,
+				default: () => {}
+			},
+		},
+		methods: {
+			onSystemShow() {
+				this.$refs.popup.open('left')
+			},
+			moveHandle() {
+				return false
+			},
+		}
+	}
+</script>
+
+<style>
+	.index_personal {
+		box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);
+	}
+</style>

+ 21 - 2
pages/loan/loan.vue

@@ -32,12 +32,12 @@
 				}, {
 					name: '已完成(6)',
 					dot_color: 'red',
-					is_dot:true,
+					is_dot: true,
 					disabled: false
 				}, {
 					name: '未完成(6)',
 					dot_color: '#000',
-					is_dot:true,
+					is_dot: true,
 					disabled: false
 				}],
 			}
@@ -55,5 +55,24 @@
 	}
 </script>
 <style lang="scss" scoped>
+	// .page-box{
+	//   height: 100vh;
+	//   background-image: url("https://wealfavor-1257406827.cos.ap-beijing.myqcloud.com/new-xcx/index/index-bg.png?imageMogr2/quality/20");
+	//   background-repeat: no-repeat;
+	//   background-size: 100% auto;
+	//   display: flex;
+	//   flex-direction: column;
+	//   .top-data{
+	//     flex: 1;
+	//     overflow: hidden;
+	//     .top-row{
+	//       height: 680rpx;
+	//     }
+	//   }
 
+	//   .bottom-data{
+
+	//   }
+
+	// }
 </style>

+ 3 - 2
pages/statistics/statistics.vue

@@ -11,12 +11,12 @@
 				</view>
 			</view>
 		</Nav>
-			<!-- <view class="m-t30 stat_blank" style="z-index: 999999999;" :style="{minHeight:`calc(100% - ${$tools.topHeight()}px)`}">
+		<!-- <view class="m-t30 stat_blank" style="z-index: 999999999;" :style="{minHeight:`calc(100% - ${$tools.topHeight()}px)`}">
 				内容
 			</view> -->
 		<view class="statistics_content" :style="[{top:`${$tools.topHeight() + positionHeight}px`}]">
 
-			<view class="" v-if="husenl">
+			<view class="">
 				<HeadData v-if="statType === 0 || statType === 1"></HeadData>
 				<view class="tabs page-box-bg-fff m-lr30 r-30" v-if="statType == 2 || statType == 3"
 					:style="[{position:is_fixed?'absolute':''},{top:`${$tools.topHeight() + 85}px`}]"
@@ -228,6 +228,7 @@
 		height: 100%;
 		/* 高度占满整个屏幕 */
 	}
+
 	.content {
 		flex: 1;
 		/* 充满剩余空间 */

+ 54 - 10
pages/task/task.vue

@@ -1,19 +1,30 @@
 <template>
-	<view class="total-page page_env page-box">
+	<view class="total-page page-box page-env-160 scroll_content">
 		<Nav :title="'任务'" :genre="1" :back="false" :fixedHeight="105"></Nav>
 		<view class="task-tabs" :style="{top:`${$tools.topHeight()}px`}">
 			<Search :placeholder="'贷款人姓名或电话'"></Search>
 			<view style="height: 100rpx;">
-				<z-tabs ef="tabs" :list="tabsList" :active-style="{color:'#10B261',fontWeight:'bold',fontSize:'30rpx'}"
+				<z-tabs ref="tabs" :list="tabsList" :active-style="{color:'#10B261',fontWeight:'bold',fontSize:'28rpx'}"
 					:bar-style="{background:'#10B261'}" :inactive-style="{fontWeight:'bold',fontSize:'28rpx'}"
 					:current="current" :bar-animate-mode="'worm'" @change="tabsChange" />
 			</view>
 		</view>
-		<!-- <EnButton is_both></EnButton> -->
-		<TaskItem :type="1"></TaskItem>
+		<!-- 带Swiper -->
+		<!-- 		<swiper style="height: 100vh;" :current="current" @transition="swiperTransition"
+			@animationfinish="swiperAnimationfinish">
+			<swiper-item v-for="(item, index) in tabsList" :key="index">
+				<EnScroll ref="scroll" :navHeight="125" @onRefresh="onRefresh" @onScrollBottom="onScrollBottom">
+					<TaskItem :type="1" is_bottom></TaskItem>
+				</EnScroll>
+			</swiper-item>
+		</swiper> -->
+		<!-- 不带Swiper -->
+		<EnScroll ref="scroll" :navHeight="105" is_tabHeight class="main" @onRefresh="onRefresh"
+			@onScrollBottom="onScrollBottom">
+			<TaskItem :type="1" is_bottom></TaskItem>
+		</EnScroll>
 		<Tab :tab-index="1"></Tab>
 	</view>
-
 </template>
 <script>
 	// 任务列表
@@ -25,7 +36,9 @@
 		},
 		data() {
 			return {
+				tabHeight: uni.getStorageSync('tab_height'),
 				current: 0,
+				swiperCurrent: 0,
 				tabsList: [{
 					name: '全部',
 					dot_color: 'red',
@@ -48,16 +61,47 @@
 					disabled: false
 				}],
 			}
-		},
-		watch: {
-
-
 		},
 		methods: {
 			tabsChange(index) {
 				this.current = index;
 			},
-
+			// 下拉刷新
+			onRefresh() {
+				uni.showLoading({
+					title: '数据加载中'
+				})
+				setTimeout(() => {
+					uni.showToast({
+						title: '加载完成',
+						icon: 'none'
+					})
+					this.$refs.scroll.onEndPulling()
+				}, 1000)
+				console.log("下拉刷新");
+			},
+			// 滚动到底部
+			onScrollBottom() {
+				uni.showLoading({
+					title: '数据加载中'
+				})
+				setTimeout(() => {
+					uni.showToast({
+						title: '加载完成',
+						icon: 'none'
+					})
+				}, 1000)
+				console.log("到底部了");
+			},
+			//swiper滑动中
+			swiperTransition(e) {
+				this.$refs.tabs.setDx(e.detail.dx);
+			},
+			//swiper滑动结束
+			swiperAnimationfinish(e) {
+				this.current = e.detail.current;
+				this.$refs.tabs.unlockDx();
+			}
 		},
 	}
 </script>

+ 341 - 330
service/tools.js

@@ -5,8 +5,8 @@ let tools = {}
  * @param b
  * @returns {number}
  */
-tools.sortNumber = function (a, b) {
-    return a - b;
+tools.sortNumber = function(a, b) {
+	return a - b;
 }
 
 /**
@@ -14,95 +14,97 @@ tools.sortNumber = function (a, b) {
  * @param phone
  * @returns {*}
  */
-tools.hidePhone = function (phone) {
-    let reg = /^(\d{3})\d{4}(\d{4})$/;
-    return phone.replace(reg, '$1****$2');
+tools.hidePhone = function(phone) {
+	let reg = /^(\d{3})\d{4}(\d{4})$/;
+	return phone.replace(reg, '$1****$2');
 }
 /**
  * 保留两位小数
  * @param num
  * @returns {string}
  */
-tools.twoFloating = function (num) {
-    // 获取两位小数
-    let price = "";
-    price = num * 1;
-    price = String(price).split(".")[1];
-    if (price !== undefined && price.length === 1) {
-        price = `.${price}0`;
-    } else {
-        price === undefined ? (price = ".00") : (price = `.${price}`);
-    }
-    return price;
-}
-tools.formatDecimal = function (num, decimal) {
-    num = num.toString()
-    let index = num.indexOf('.')
-    if (index !== -1) {
-        num = num.substring(0, decimal + index + 1)
-    } else {
-        num = num.substring(0)
-    }
-    return parseFloat(num).toFixed(decimal)
+tools.twoFloating = function(num) {
+	// 获取两位小数
+	let price = "";
+	price = num * 1;
+	price = String(price).split(".")[1];
+	if (price !== undefined && price.length === 1) {
+		price = `.${price}0`;
+	} else {
+		price === undefined ? (price = ".00") : (price = `.${price}`);
+	}
+	return price;
+}
+tools.formatDecimal = function(num, decimal) {
+	num = num.toString()
+	let index = num.indexOf('.')
+	if (index !== -1) {
+		num = num.substring(0, decimal + index + 1)
+	} else {
+		num = num.substring(0)
+	}
+	return parseFloat(num).toFixed(decimal)
 }
 
 /**
  * 错误提示
  * @param msg
  */
-tools.error = function (msg) {
-    uni.showToast({
-        'title': msg,
-        'icon': 'error',
-        'mask': true,
-        'duration': 1000
-    })
+tools.error = function(msg) {
+	uni.showToast({
+		'title': msg,
+		'icon': 'error',
+		'mask': true,
+		'duration': 1000
+	})
 }
 
 /**
  * 成功提示
  * @param msg
  */
-tools.success = function (msg) {
-    uni.showToast({
-        'title': msg,
-        'icon': 'success',
-        'mask': true,
-        'duration': 1000
-    })
+tools.success = function(msg) {
+	uni.showToast({
+		'title': msg,
+		'icon': 'success',
+		'mask': true,
+		'duration': 1000
+	})
 }
 
 /**
  * 显示Loading
  */
-tools.showLoading = function () {
-    uni.showLoading({
-        title: '加载中...',
-        mask: true
-    });
+tools.showLoading = function() {
+	uni.showLoading({
+		title: '加载中...',
+		mask: true
+	});
 }
 
 /**
  * 关闭Loading
  */
-tools.hideLoading = function () {
-    uni.hideLoading();
+tools.hideLoading = function() {
+	uni.hideLoading();
 }
 
 /**
  * 32位随机字符串+时间 首位字母
  */
-tools.SetString = function () {
+tools.SetString = function() {
 	let str = '';
-	let list=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','1','2','3','4','5','6','7','8','9','0'];
-	let numOne = Math.round(Math.random()*14);
+	let list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', '1', '2', '3', '4', '5',
+		'6', '7', '8', '9', '0'
+	];
+	let numOne = Math.round(Math.random() * 14);
 	let oneStr = list[numOne];
-	for (let i=1;i<=32;i++){
-		let num = Math.round(Math.random()*24);
+	for (let i = 1; i <= 32; i++) {
+		let num = Math.round(Math.random() * 24);
 		str += list[num];
 	}
 	let time = new Date().getTime()
-	return oneStr+str+time;
+	return oneStr + str + time;
 }
 
 
@@ -110,63 +112,63 @@ tools.SetString = function () {
  * 获取时间戳(毫秒)
  * @returns {number}
  */
-tools.getTime = function () {
-    return new Date().getTime();
+tools.getTime = function() {
+	return new Date().getTime();
 }
 
 
 // 返回上级
-tools.leftClick = function () {
-    let pages = getCurrentPages();
-    if (pages.length > 1) {
-        uni.navigateBack({
-            delta: 1
-        })
-    } else {
-        uni.reLaunch({
-            url: '/pages/index/index'
-        });
-    }
-}
-
-tools.updateVersion = function (sysVersion, appUrl) {
-    let app_version = plus.runtime.version;
-    console.log('版本号信息对比------------------------------' + app_version + '---------' + sysVersion)
-    console.log(app_version < sysVersion)
-    if (app_version < sysVersion) {
-        uni.showLoading({
-            title: '更新中……'
-        })
-        uni.downloadFile({//执行下载
-            url: appUrl, //下载地址
-            success: (downloadResult) => {//下载成功
-                uni.hideLoading();
-                if (downloadResult.statusCode === 200) {
-                    uni.showModal({
-                        title: '',
-                        content: '更新成功,确定现在重启吗?',
-                        confirmText: '重启',
-                        confirmColor: '#EE8F57',
-                        success: function (res) {
-                            if (res.confirm === true) {
-                                plus.runtime.install(//安装
-                                    downloadResult.tempFilePath, {
-                                        force: true
-                                    },
-                                    function (res) {
-                                        tools.success('更新成功,重启中')
-                                        plus.runtime.restart();
-                                    }
-                                );
-                            }
-                        }
-                    });
-                }
-            }
-        });
-    } else {
-        // tools.success('你已是最新版本')
-    }
+tools.leftClick = function() {
+	let pages = getCurrentPages();
+	if (pages.length > 1) {
+		uni.navigateBack({
+			delta: 1
+		})
+	} else {
+		uni.reLaunch({
+			url: '/pages/index/index'
+		});
+	}
+}
+
+tools.updateVersion = function(sysVersion, appUrl) {
+	let app_version = plus.runtime.version;
+	console.log('版本号信息对比------------------------------' + app_version + '---------' + sysVersion)
+	console.log(app_version < sysVersion)
+	if (app_version < sysVersion) {
+		uni.showLoading({
+			title: '更新中……'
+		})
+		uni.downloadFile({ //执行下载
+			url: appUrl, //下载地址
+			success: (downloadResult) => { //下载成功
+				uni.hideLoading();
+				if (downloadResult.statusCode === 200) {
+					uni.showModal({
+						title: '',
+						content: '更新成功,确定现在重启吗?',
+						confirmText: '重启',
+						confirmColor: '#EE8F57',
+						success: function(res) {
+							if (res.confirm === true) {
+								plus.runtime.install( //安装
+									downloadResult.tempFilePath, {
+										force: true
+									},
+									function(res) {
+										tools.success('更新成功,重启中')
+										plus.runtime.restart();
+									}
+								);
+							}
+						}
+					});
+				}
+			}
+		});
+	} else {
+		// tools.success('你已是最新版本')
+	}
 }
 
 /**
@@ -174,12 +176,12 @@ tools.updateVersion = function (sysVersion, appUrl) {
  * @param str
  * @returns {*}
  */
-tools.imgDeal = function (str) {
-    if (str === null || str === undefined) {
-        return '';
-    } else {
-        return str.replace(/\<img/gi, '<img style="width:100%;height:auto;display:block;"');
-    }
+tools.imgDeal = function(str) {
+	if (str === null || str === undefined) {
+		return '';
+	} else {
+		return str.replace(/\<img/gi, '<img style="width:100%;height:auto;display:block;"');
+	}
 
 }
 
@@ -187,28 +189,28 @@ tools.imgDeal = function (str) {
  * 获取用户类型
  * @returns {number}
  */
-tools.getReceivingType = function () {
-    let receivingType = uni.getStorageSync('receivingType')
-    if (!receivingType) {
-        receivingType = 0;
-    } else {
-        receivingType = receivingType * 1;
-    }
-    return receivingType;
+tools.getReceivingType = function() {
+	let receivingType = uni.getStorageSync('receivingType')
+	if (!receivingType) {
+		receivingType = 0;
+	} else {
+		receivingType = receivingType * 1;
+	}
+	return receivingType;
 }
 
 /**
  * 获取是否有录单权限
  * @returns {number}
  */
-tools.getEnteringType = function () {
-    let enteringType = uni.getStorageSync('enteringType')
-    if (!enteringType) {
-        enteringType = 0;
-    } else {
-        enteringType = enteringType * 1;
-    }
-    return enteringType;
+tools.getEnteringType = function() {
+	let enteringType = uni.getStorageSync('enteringType')
+	if (!enteringType) {
+		enteringType = 0;
+	} else {
+		enteringType = enteringType * 1;
+	}
+	return enteringType;
 }
 
 /**
@@ -216,37 +218,37 @@ tools.getEnteringType = function () {
  * @param data
  * @param type
  */
-tools.setLoginData = function (data, type) {
-    uni.setStorageSync('m_id', data.m_id)
-    uni.setStorageSync('token', data.token)
-    uni.setStorageSync('status', data.status)
-    uni.setStorageSync('ministerType', data.minister_type)
-    uni.setStorageSync('receivingType', data.receivingType)
-    uni.setStorageSync('enteringType', data.enteringType)
-    if (type) {
-        tools.success('登陆成功')
-        setTimeout(() => {
-            if (data.status * 1 === 0) {
-                //审核状态跳转至待审核页面
-                uni.reLaunch({
-                    url: '/pages/login/module/await-audit'
-                });
-            } else {
-                let excelPath=uni.getStorageSync('excelPath');
-                console.log('excelPath:'+excelPath)
-                if(excelPath){
-                    uni.reLaunch({
-                        url: excelPath
-                    });
-                }else {
-                    uni.reLaunch({
-                        url: '/pages/index/index'
-                    });
-                }
-
-            }
-        }, 1500)
-    }
+tools.setLoginData = function(data, type) {
+	uni.setStorageSync('m_id', data.m_id)
+	uni.setStorageSync('token', data.token)
+	uni.setStorageSync('status', data.status)
+	uni.setStorageSync('ministerType', data.minister_type)
+	uni.setStorageSync('receivingType', data.receivingType)
+	uni.setStorageSync('enteringType', data.enteringType)
+	if (type) {
+		tools.success('登陆成功')
+		setTimeout(() => {
+			if (data.status * 1 === 0) {
+				//审核状态跳转至待审核页面
+				uni.reLaunch({
+					url: '/pages/login/module/await-audit'
+				});
+			} else {
+				let excelPath = uni.getStorageSync('excelPath');
+				console.log('excelPath:' + excelPath)
+				if (excelPath) {
+					uni.reLaunch({
+						url: excelPath
+					});
+				} else {
+					uni.reLaunch({
+						url: '/pages/index/index'
+					});
+				}
+
+			}
+		}, 1500)
+	}
 
 }
 
@@ -255,102 +257,106 @@ tools.setLoginData = function (data, type) {
  * 获取日期
  * @returns {string}
  */
-tools.getDate = function () {
-    let myDate = new Date();
-    // let myYear = myDate.getFullYear(); //获取完整的年份(4位,1970-????)
-    // let myMonth = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
-    // let myToday = myDate.getDate(); //获取当前日(1-31)
-    // let myDay = myDate.getDay(); //获取当前星期X(0-6,0代表星期天)
-    // let myHour = myDate.getHours(); //获取当前小时数(0-23)
-    // let myMinute = myDate.getMinutes(); //获取当前分钟数(0-59)
-    // let mySecond = myDate.getSeconds(); //获取当前秒数(0-59)
-    return myDate.getFullYear() + '-' + (myDate.getMonth() + 1) + '-' + myDate.getDate()
+tools.getDate = function(type) {
+	let myDate = new Date();
+	// let myYear = myDate.getFullYear(); //获取完整的年份(4位,1970-????)
+	// let myMonth = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
+	// let myToday = myDate.getDate(); //获取当前日(1-31)
+	// let myDay = myDate.getDay(); //获取当前星期X(0-6,0代表星期天)
+	// let myHour = myDate.getHours(); //获取当前小时数(0-23)
+	// let myMinute = myDate.getMinutes(); //获取当前分钟数(0-59)
+	// let mySecond = myDate.getSeconds(); //获取当前秒数(0-59)
+	if (type === '-') {
+		return myDate.getFullYear() + '-' + (myDate.getMonth() + 1) + '-' + myDate.getDate()
+	} else {
+		return myDate.getFullYear() + '年' + (myDate.getMonth() + 1) + '月' + myDate.getDate() + '日'
+	}
 }
 
-tools.getRandFileName = function (filePath) {
-    let extIndex = filePath.lastIndexOf('.');
-    let extName = extIndex === -1 ? '' : filePath.substr(extIndex);
-    return parseInt('' + Date.now() + Math.floor(Math.random() * 900 + 100), 10).toString(36) + extName;
+tools.getRandFileName = function(filePath) {
+	let extIndex = filePath.lastIndexOf('.');
+	let extName = extIndex === -1 ? '' : filePath.substr(extIndex);
+	return parseInt('' + Date.now() + Math.floor(Math.random() * 900 + 100), 10).toString(36) + extName;
 }
 
 /**
  * 拨打电话
  * @param phone
  */
-tools.makingCall = function (phone) {
-    uni.makePhoneCall({
-        phoneNumber: phone
-    });
-}
-
-
-tools.getOssVideo = function (url) {
-    let strFileName = url.substring(0, url.lastIndexOf("."));
-    return strFileName + '_vj_0.jpg';
-}
-
-tools.getFileType = function (url) {
-    let suffixArr = ['.pdf', '.doc', '.docx', '.xlsx', '.xls']
-    let suffix = url.substring(url.lastIndexOf("."));
-    console.log(suffix)
-    let suffixKey = suffixArr.indexOf(suffix)
-    let fileType = 1;
-    if (suffixKey < 1) {
-        fileType = 1
-    } else if (suffixKey < 3) {
-        fileType = 2
-    } else {
-        fileType = 3
-    }
-    return fileType
+tools.makingCall = function(phone) {
+	uni.makePhoneCall({
+		phoneNumber: phone
+	});
+}
+
+
+tools.getOssVideo = function(url) {
+	let strFileName = url.substring(0, url.lastIndexOf("."));
+	return strFileName + '_vj_0.jpg';
+}
+
+tools.getFileType = function(url) {
+	let suffixArr = ['.pdf', '.doc', '.docx', '.xlsx', '.xls']
+	let suffix = url.substring(url.lastIndexOf("."));
+	console.log(suffix)
+	let suffixKey = suffixArr.indexOf(suffix)
+	let fileType = 1;
+	if (suffixKey < 1) {
+		fileType = 1
+	} else if (suffixKey < 3) {
+		fileType = 2
+	} else {
+		fileType = 3
+	}
+	return fileType
 }
-tools.getFileName = function (url) {
-    return url.substring(url.lastIndexOf("/") - 1, url.lastIndexOf("."));
+tools.getFileName = function(url) {
+	return url.substring(url.lastIndexOf("/") - 1, url.lastIndexOf("."));
 }
 
 /**
  * 获取平台类型
  * @returns {string}
  */
-tools.getPlatform = function () {
-    let platForm = undefined;
-    // #ifdef H5
-    platForm = 'H5';
-    //#endif
-    // #ifdef APP-PLUS
-    platForm = 'APP';
-    //#endif
-    // #ifdef APP-PLUS-NVUE
-    platForm = 'APP';
-    //#endif
-    // #ifdef APP-NVUE
-    platForm = 'APP';
-    //#endif
-    // #ifdef MP-WEIXIN
-    platForm = 'MP-WEIXIN';
-    //#endif
-    // #ifdef MP-ALIPAY
-    platForm = 'MP-ALIPAY';
-    //#endif
-    // #ifdef MP-BAIDU
-    platForm = 'MP-BAIDU';
-    //#endif
-    // #ifdef MP-TOUTIAO
-    platForm = 'MP-TOUTIAO';
-    //#endif
-    // #ifdef MP-LARK
-    platForm = 'MP-LARK';
-    //#endif
-    // #ifdef MP-QQ
-    platForm = 'MP-QQ';
-    //#endif
-    // #ifdef MP-KUAISHOU
-    platForm = 'MP-KUAISHOU';
-    //#endif
-    // #ifdef QUICKAPP-WEBVIEW
-    platForm = 'QUICKAPP-WEBVIEW';
-    //#endif
-    return platForm;
+tools.getPlatform = function() {
+	let platForm = undefined;
+	// #ifdef H5
+	platForm = 'H5';
+	//#endif
+	// #ifdef APP-PLUS
+	platForm = 'APP';
+	//#endif
+	// #ifdef APP-PLUS-NVUE
+	platForm = 'APP';
+	//#endif
+	// #ifdef APP-NVUE
+	platForm = 'APP';
+	//#endif
+	// #ifdef MP-WEIXIN
+	platForm = 'MP-WEIXIN';
+	//#endif
+	// #ifdef MP-ALIPAY
+	platForm = 'MP-ALIPAY';
+	//#endif
+	// #ifdef MP-BAIDU
+	platForm = 'MP-BAIDU';
+	//#endif
+	// #ifdef MP-TOUTIAO
+	platForm = 'MP-TOUTIAO';
+	//#endif
+	// #ifdef MP-LARK
+	platForm = 'MP-LARK';
+	//#endif
+	// #ifdef MP-QQ
+	platForm = 'MP-QQ';
+	//#endif
+	// #ifdef MP-KUAISHOU
+	platForm = 'MP-KUAISHOU';
+	//#endif
+	// #ifdef QUICKAPP-WEBVIEW
+	platForm = 'QUICKAPP-WEBVIEW';
+	//#endif
+	return platForm;
 
 }
 
@@ -360,17 +366,18 @@ tools.getPlatform = function () {
  * @param refundNum
  * @param interestRate
  */
-tools.getAverageCapitalPlusInterest = function (loansMoney, refundNum, interestRate) {
-    console.log('getAverageCapitalPlusInterest:等额本息')
-    let repaymentMoney = 0;
-    if (!loansMoney || loansMoney <= 0 || !refundNum || refundNum <= 0 || !interestRate || interestRate <= 0) {
-        return repaymentMoney
-    }
-    let monthlyInterest = interestRate / 12 / 100;
-    // console.log( ((monthlyInterest * Math.pow((1 + monthlyInterest), refundNum)) / (Math.pow((1 + monthlyInterest), refundNum) - 1)))
-    repaymentMoney = (loansMoney * ((monthlyInterest * Math.pow((1 + monthlyInterest), refundNum)) / (Math.pow((1 + monthlyInterest), refundNum) - 1))).toFixed(2)
-    // console.log('repaymentMoney:'+repaymentMoney)
-    return repaymentMoney
+tools.getAverageCapitalPlusInterest = function(loansMoney, refundNum, interestRate) {
+	console.log('getAverageCapitalPlusInterest:等额本息')
+	let repaymentMoney = 0;
+	if (!loansMoney || loansMoney <= 0 || !refundNum || refundNum <= 0 || !interestRate || interestRate <= 0) {
+		return repaymentMoney
+	}
+	let monthlyInterest = interestRate / 12 / 100;
+	// console.log( ((monthlyInterest * Math.pow((1 + monthlyInterest), refundNum)) / (Math.pow((1 + monthlyInterest), refundNum) - 1)))
+	repaymentMoney = (loansMoney * ((monthlyInterest * Math.pow((1 + monthlyInterest), refundNum)) / (Math.pow((1 +
+		monthlyInterest), refundNum) - 1))).toFixed(2)
+	// console.log('repaymentMoney:'+repaymentMoney)
+	return repaymentMoney
 }
 
 /**
@@ -380,15 +387,15 @@ tools.getAverageCapitalPlusInterest = function (loansMoney, refundNum, interestR
  * @param interestRate
  * @returns {number}
  */
-tools.getAverageCapital = function (loansMoney, refundNum, interestRate) {
-    console.log('getAverageCapital:等额本金')
-    let repaymentMoney = 0;
-    if (!loansMoney || loansMoney <= 0 || !refundNum || refundNum <= 0 || !interestRate || interestRate <= 0) {
-        return repaymentMoney
-    }
-    let monthlyInterest = interestRate / 12 / 100;
-    repaymentMoney = (loansMoney / refundNum + loansMoney * monthlyInterest).toFixed(2)
-    return repaymentMoney
+tools.getAverageCapital = function(loansMoney, refundNum, interestRate) {
+	console.log('getAverageCapital:等额本金')
+	let repaymentMoney = 0;
+	if (!loansMoney || loansMoney <= 0 || !refundNum || refundNum <= 0 || !interestRate || interestRate <= 0) {
+		return repaymentMoney
+	}
+	let monthlyInterest = interestRate / 12 / 100;
+	repaymentMoney = (loansMoney / refundNum + loansMoney * monthlyInterest).toFixed(2)
+	return repaymentMoney
 }
 
 /**
@@ -397,32 +404,36 @@ tools.getAverageCapital = function (loansMoney, refundNum, interestRate) {
  * @param interestRate
  * @returns {string|number}
  */
-tools.getInterestFirst = function (loansMoney, interestRate) {
-    console.log('getInterestFirst:先息后本')
-    let repaymentMoney = 0;
-    if (!loansMoney || loansMoney <= 0 || !interestRate || interestRate <= 0) {
-        return repaymentMoney
-    }
-    let monthlyInterest = interestRate / 12 / 100;
-    repaymentMoney = (loansMoney * monthlyInterest).toFixed(2)
-    return repaymentMoney
+tools.getInterestFirst = function(loansMoney, interestRate) {
+	console.log('getInterestFirst:先息后本')
+	let repaymentMoney = 0;
+	if (!loansMoney || loansMoney <= 0 || !interestRate || interestRate <= 0) {
+		return repaymentMoney
+	}
+	let monthlyInterest = interestRate / 12 / 100;
+	repaymentMoney = (loansMoney * monthlyInterest).toFixed(2)
+	return repaymentMoney
 }
 
 /**
  * 获取日期
  * @returns {{d: number, y: number, m: number}}
  */
-tools.getDateArr = function (time) {
-    console.log('time:' + time)
-    let myDate = new Date(time);
-    let myYear = myDate.getFullYear(); //获取完整的年份(4位,1970-????)
-    let myMonth = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
-    let myToday = myDate.getDate(); //获取当前日(1-31)
-    // let myDay = myDate.getDay(); //获取当前星期X(0-6,0代表星期天)
-    // let myHour = myDate.getHours(); //获取当前小时数(0-23)
-    // let myMinute = myDate.getMinutes(); //获取当前分钟数(0-59)
-    // let mySecond = myDate.getSeconds(); //获取当前秒数(0-59)
-    return {'y': myYear, 'm': myMonth>=10?myMonth:'0'+myMonth, 'd': myToday>=10?myToday:'0'+myToday};
+tools.getDateArr = function(time) {
+	console.log('time:' + time)
+	let myDate = new Date(time);
+	let myYear = myDate.getFullYear(); //获取完整的年份(4位,1970-????)
+	let myMonth = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
+	let myToday = myDate.getDate(); //获取当前日(1-31)
+	// let myDay = myDate.getDay(); //获取当前星期X(0-6,0代表星期天)
+	// let myHour = myDate.getHours(); //获取当前小时数(0-23)
+	// let myMinute = myDate.getMinutes(); //获取当前分钟数(0-59)
+	// let mySecond = myDate.getSeconds(); //获取当前秒数(0-59)
+	return {
+		'y': myYear,
+		'm': myMonth >= 10 ? myMonth : '0' + myMonth,
+		'd': myToday >= 10 ? myToday : '0' + myToday
+	};
 }
 
 /**
@@ -431,62 +442,62 @@ tools.getDateArr = function (time) {
  * @param num
  * @returns {[{d: number, y: number, m: number},{d: number, y: number, m: number}]}
  */
-tools.getStatisticsDate = function (d, num) {
-    let date = new Date(d)
-    let dateTime = date.getTime();
-    dateTime += (num * 86400000);
-    return [tools.getDateArr(dateTime), tools.getDateArr(dateTime)];
+tools.getStatisticsDate = function(d, num) {
+	let date = new Date(d)
+	let dateTime = date.getTime();
+	dateTime += (num * 86400000);
+	return [tools.getDateArr(dateTime), tools.getDateArr(dateTime)];
 }
 
 /**
  *
  * @returns {[{d: number, y: number, m: number},{d: number, y: number, m: number}]}
  */
-tools.getNextWeek = function (d, num) {
-    let date = new Date(d)
-    let dateTime = date.getTime();
-    console.log('start:' + dateTime)
-    dateTime += (num * 86400000);
-    let weekDate = new Date(dateTime)
-    let weekday = weekDate.getDay();
-    let weekStarTime;
-    let weekEndTime;
-    if (weekday === 0) {
-        weekStarTime = dateTime - 86400000 * 6;
-        weekEndTime = dateTime;
-    } else {
-        weekStarTime = dateTime - (86400000 * (weekday - 1));
-        weekEndTime = weekStarTime + (86400000 * 7);
-    }
-    return [tools.getDateArr(weekStarTime), tools.getDateArr(weekEndTime)];
-}
-
-tools.getNextMonth = function (d, num) {
-    let date = new Date(d)
-    let dateTime = date.getTime();
-    dateTime += (num * 86400000);
-    let newDate = new Date(dateTime)
-    let year = newDate.getFullYear(); //获取完整的年份(4位,1970-????)
-    let month = newDate.getMonth(); //获取当前月份(0-11,0代表1月)
-    let starTime = new Date(year, month , 1).valueOf() ;
-    let endTime = new Date(year, month+ 1 , 1).valueOf()  - 86400000;
-    return [tools.getDateArr(starTime), tools.getDateArr(endTime)];
-}
-
-tools.getNextYear = function (d, num) {
-    let date = new Date(d)
-    let dateTime = date.getTime();
-    dateTime += (num * 86400000);
-    let newDate = new Date(dateTime)
-    let year = newDate.getFullYear(); //获取完整的年份(4位,1970-????)
-    let starTime = new Date(year, 0 , 1).valueOf() ;
-    let endTime = new Date(year+ 1, 0 , 1).valueOf()  - 86400000;
-    return [tools.getDateArr(starTime), tools.getDateArr(endTime)];
-}
-
-tools.topHeight = function(){
+tools.getNextWeek = function(d, num) {
+	let date = new Date(d)
+	let dateTime = date.getTime();
+	console.log('start:' + dateTime)
+	dateTime += (num * 86400000);
+	let weekDate = new Date(dateTime)
+	let weekday = weekDate.getDay();
+	let weekStarTime;
+	let weekEndTime;
+	if (weekday === 0) {
+		weekStarTime = dateTime - 86400000 * 6;
+		weekEndTime = dateTime;
+	} else {
+		weekStarTime = dateTime - (86400000 * (weekday - 1));
+		weekEndTime = weekStarTime + (86400000 * 7);
+	}
+	return [tools.getDateArr(weekStarTime), tools.getDateArr(weekEndTime)];
+}
+
+tools.getNextMonth = function(d, num) {
+	let date = new Date(d)
+	let dateTime = date.getTime();
+	dateTime += (num * 86400000);
+	let newDate = new Date(dateTime)
+	let year = newDate.getFullYear(); //获取完整的年份(4位,1970-????)
+	let month = newDate.getMonth(); //获取当前月份(0-11,0代表1月)
+	let starTime = new Date(year, month, 1).valueOf();
+	let endTime = new Date(year, month + 1, 1).valueOf() - 86400000;
+	return [tools.getDateArr(starTime), tools.getDateArr(endTime)];
+}
+
+tools.getNextYear = function(d, num) {
+	let date = new Date(d)
+	let dateTime = date.getTime();
+	dateTime += (num * 86400000);
+	let newDate = new Date(dateTime)
+	let year = newDate.getFullYear(); //获取完整的年份(4位,1970-????)
+	let starTime = new Date(year, 0, 1).valueOf();
+	let endTime = new Date(year + 1, 0, 1).valueOf() - 86400000;
+	return [tools.getDateArr(starTime), tools.getDateArr(endTime)];
+}
+
+tools.topHeight = function() {
 	const navTop = uni.getMenuButtonBoundingClientRect()
-	return navTop.height+navTop.top+5
+	return navTop.height + navTop.top + 10
 }
 
-export default tools
+export default tools

+ 623 - 154
static/css/common.css

@@ -2,9 +2,17 @@
 	box-sizing: border-box;
 	min-height: 100%;
 	z-index: 1;
+}
+
+.hidden_scrollbar::-webkit-scrollbar {
+	display: none;
+}
+
+.page-env-20 {
 	padding-bottom: calc(20rpx + env(safe-area-inset-bottom));
 }
-.page_env{
+
+.page-env-160 {
 	padding-bottom: calc(160rpx + env(safe-area-inset-bottom));
 }
 
@@ -15,7 +23,7 @@
 }
 
 .page-bg2 {
-/* 	background-image: url("https://wealfavor-1257406827.cos.ap-beijing.myqcloud.com/new-xcx/index/index-bg.png?imageMogr2/quality/20");
+	/* 	background-image: url("https://wealfavor-1257406827.cos.ap-beijing.myqcloud.com/new-xcx/index/index-bg.png?imageMogr2/quality/20");
 	background-repeat: no-repeat;
 	background-size: 100% auto; */
 }
@@ -32,183 +40,644 @@
 }
 
 /* 页面style*/
-.task-tabs{
+.task-tabs {
 	position: fixed;
 	width: 100%;
 	top: 84px;
 	z-index: 9999;
 }
-.is-hover{
+
+.scroll_content {
+	height: 100vh;
+	width: 100vw;
+	overflow: hidden;
+	display: flex;
+	flex-direction: column;
+}
+
+.is-hover {
 	opacity: 0.6;
 }
 
-.bg-ragb-0{background-color: rgba(0, 0, 0, 0.2);}
-.bg-ragb-255{background-color: rgba(255, 255, 255, 0.2);}
+.bg-ragb-0 {
+	background-color: rgba(0, 0, 0, 0.2);
+}
+
+.bg-ragb-255 {
+	background-color: rgba(255, 255, 255, 0.2);
+}
+
 /*flex布局*/
-.flex{flex: 1;}
-.flex-wrap{flex-wrap: wrap;}
-.center{display: flex;align-items: center;}
-.justify-center{justify-content: center;}
-.justify-left{justify-content: left;}
-.row{display: flex;flex-direction: row;}
-.row-c{display: flex;flex-direction: row;align-items: center;}
-.column{display: flex;flex-direction: column;}
-.column-c{display: flex;flex-direction: column;align-items: center;}
-.column-sb-c{display: flex;flex-direction: column;align-items: center;justify-content: space-between;}
-.row-justify-c{display: flex;flex-direction: row;justify-content: center;}
-.row-justify-sb{display: flex;flex-direction: row;justify-content: space-between;}
-.column-justify-c{display: flex;flex-direction: column;justify-content: center;}
-.column-justify-sb{display: flex;flex-direction: column;justify-content: space-between;}
+.flex {
+	flex: 1;
+}
+
+.flex-wrap {
+	flex-wrap: wrap;
+}
+
+.center {
+	display: flex;
+	align-items: center;
+}
+
+.justify-center {
+	justify-content: center;
+}
+
+.justify-left {
+	justify-content: left;
+}
+
+.row {
+	display: flex;
+	flex-direction: row;
+}
+
+.row-c {
+	display: flex;
+	flex-direction: row;
+	align-items: center;
+}
+
+.column {
+	display: flex;
+	flex-direction: column;
+}
+
+.column-c {
+	display: flex;
+	flex-direction: column;
+	align-items: center;
+}
+
+.column-sb-c {
+	display: flex;
+	flex-direction: column;
+	align-items: center;
+	justify-content: space-between;
+}
+
+.row-justify-c {
+	display: flex;
+	flex-direction: row;
+	justify-content: center;
+}
+
+.row-justify-sb {
+	display: flex;
+	flex-direction: row;
+	justify-content: space-between;
+}
+
+.column-justify-c {
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+}
+
+.column-justify-sb {
+	display: flex;
+	flex-direction: column;
+	justify-content: space-between;
+}
 
 /*padding大小*/
-.p-16{padding: 16rpx;}
-.p-20{padding: 20rpx;}
-.p-30{padding: 30rpx;}
-.p-40{padding: 40rpx;}
-
-.p-t10{padding-top: 10rpx;}
-.p-t16{padding-top: 16rpx;}
-.p-t20{padding-top: 20rpx;}
-.p-t30{padding-top: 30rpx;}
-.p-t40{padding-top: 40rpx;}
-
-.p-r10{padding-right: 10rpx;}
-.p-r16{padding-right: 16rpx;}
-.p-r20{padding-right: 20rpx;}
-.p-r30{padding-right: 30rpx;}
-.p-r40{padding-right: 40rpx;}
-.p-r60{padding-right: 60rpx;}
-
-.p-l10{padding-left: 10rpx;}
-.p-l16{padding-left: 16rpx;}
-.p-l20{padding-left: 20rpx;}
-.p-l40{padding-left: 30rpx;}
-.p-l40{padding-left: 40rpx;}
-
-.p-b10{padding-bottom: 10rpx;}
-.p-b16{padding-bottom: 16rpx;}
-.p-b20{padding-bottom: 20rpx;}
-.p-b30{padding-bottom: 30rpx;}
-.p-b40{padding-bottom: 40rpx;}
-
-.p-tb6{padding-top: 6rpx;padding-bottom: 6rpx;}
-.p-tb10{padding-top: 10rpx;padding-bottom: 10rpx;}
-.p-tb14{padding-top: 14rpx;padding-bottom: 14rpx;}
-.p-tb16{padding-top: 16rpx;padding-bottom: 16rpx;}
-.p-tb20{padding-top: 20rpx;padding-bottom: 20rpx;}
-.p-tb25{padding-top: 25rpx;padding-bottom: 25rpx;}
-.p-tb30{padding-top: 30rpx;padding-bottom: 30rpx;}
-.p-tb40{padding-top: 40rpx;padding-bottom: 40rpx;}
-
-.p-lr10{padding-left: 10rpx;padding-right: 10rpx;}
-.p-lr16{padding-left: 16rpx;padding-right: 16rpx;}
-.p-lr20{padding-left: 20rpx;padding-right: 20rpx;}
-.p-lr24{padding-left: 24rpx;padding-right: 24rpx;}
-.p-lr30{padding-left: 30rpx;padding-right: 30rpx;}
-.p-lr40{padding-left: 40rpx;padding-right: 40rpx;}
+.p-16 {
+	padding: 16rpx;
+}
+
+.p-20 {
+	padding: 20rpx;
+}
+
+.p-30 {
+	padding: 30rpx;
+}
+
+.p-40 {
+	padding: 40rpx;
+}
+
+.p-t10 {
+	padding-top: 10rpx;
+}
+
+.p-t16 {
+	padding-top: 16rpx;
+}
+
+.p-t20 {
+	padding-top: 20rpx;
+}
+
+.p-t30 {
+	padding-top: 30rpx;
+}
+
+.p-t40 {
+	padding-top: 40rpx;
+}
+
+.p-r10 {
+	padding-right: 10rpx;
+}
+
+.p-r16 {
+	padding-right: 16rpx;
+}
+
+.p-r20 {
+	padding-right: 20rpx;
+}
+
+.p-r30 {
+	padding-right: 30rpx;
+}
+
+.p-r40 {
+	padding-right: 40rpx;
+}
+
+.p-r60 {
+	padding-right: 60rpx;
+}
+
+.p-l10 {
+	padding-left: 10rpx;
+}
+
+.p-l16 {
+	padding-left: 16rpx;
+}
+
+.p-l20 {
+	padding-left: 20rpx;
+}
+
+.p-l40 {
+	padding-left: 30rpx;
+}
+
+.p-l40 {
+	padding-left: 40rpx;
+}
+
+.p-b10 {
+	padding-bottom: 10rpx;
+}
+
+.p-b16 {
+	padding-bottom: 16rpx;
+}
+
+.p-b20 {
+	padding-bottom: 20rpx;
+}
+
+.p-b30 {
+	padding-bottom: 30rpx;
+}
+
+.p-b40 {
+	padding-bottom: 40rpx;
+}
+
+.p-tb6 {
+	padding-top: 6rpx;
+	padding-bottom: 6rpx;
+}
+
+.p-tb10 {
+	padding-top: 10rpx;
+	padding-bottom: 10rpx;
+}
+
+.p-tb14 {
+	padding-top: 14rpx;
+	padding-bottom: 14rpx;
+}
+
+.p-tb16 {
+	padding-top: 16rpx;
+	padding-bottom: 16rpx;
+}
+
+.p-tb20 {
+	padding-top: 20rpx;
+	padding-bottom: 20rpx;
+}
+
+.p-tb25 {
+	padding-top: 25rpx;
+	padding-bottom: 25rpx;
+}
+
+.p-tb30 {
+	padding-top: 30rpx;
+	padding-bottom: 30rpx;
+}
+
+.p-tb40 {
+	padding-top: 40rpx;
+	padding-bottom: 40rpx;
+}
+
+.p-lr10 {
+	padding-left: 10rpx;
+	padding-right: 10rpx;
+}
+
+.p-lr16 {
+	padding-left: 16rpx;
+	padding-right: 16rpx;
+}
+
+.p-lr20 {
+	padding-left: 20rpx;
+	padding-right: 20rpx;
+}
+
+.p-lr24 {
+	padding-left: 24rpx;
+	padding-right: 24rpx;
+}
+
+.p-lr30 {
+	padding-left: 30rpx;
+	padding-right: 30rpx;
+}
+
+.p-lr40 {
+	padding-left: 40rpx;
+	padding-right: 40rpx;
+}
 
 /*margin大小*/
-.m-16{margin: 16rpx;}
-.m-20{margin: 20rpx;}
-.m-30{margin: 30rpx;}
-.m-40{margin: 40rpx;}
-
-.m-t10{margin-top: 10rpx;}
-.m-t16{margin-top: 16rpx;}
-.m-t20{margin-top: 20rpx;}
-.m-t30{margin-top: 30rpx;}
-.m-t40{margin-top: 40rpx;}
-
-.m-b10{margin-bottom: 10rpx;}
-.m-b16{margin-bottom: 16rpx;}
-.m-b20{margin-bottom: 20rpx;}
-.m-b25{margin-bottom: 25rpx;}
-.m-b30{margin-bottom: 30rpx;}
-.m-b40{margin-bottom: 40rpx;}
-.m-b50{margin-bottom: 50rpx;}
-
-.m-r6{margin-right: 6rpx;}
-.m-r10{margin-right: 10rpx;}
-.m-r16{margin-right: 16rpx;}
-.m-r20{margin-right: 20rpx;}
-.m-r30{margin-right: 30rpx;}
-.m-r40{margin-right: 40rpx;}
-
-.m-l10{margin-left: 10rpx;}
-.m-l16{margin-left: 16rpx;}
-.m-l20{margin-left: 20rpx;}
-.m-l30{margin-left: 30rpx;}
-.m-l40{margin-left: 40rpx;}
-
-.m-tb10{margin-top: 10rpx;margin-bottom: 10rpx;}
-.m-tb16{margin-top: 16rpx;margin-bottom: 16rpx;}
-.m-tb20{margin-top: 20rpx;margin-bottom: 20rpx;}
-.m-tb30{margin-top: 30rpx;margin-bottom: 30rpx;}
-.m-tb40{margin-top: 40rpx;margin-bottom: 40rpx;}
-
-.m-lr10{margin-left: 10rpx;margin-right: 10rpx;}
-.m-lr16{margin-left: 16rpx;margin-right: 16rpx;}
-.m-lr20{margin-left: 20rpx;margin-right: 20rpx;}
-.m-lr30{margin-left: 30rpx;margin-right: 30rpx;}
-.m-lr40{margin-left: 30rpx;margin-right: 40rpx;}
+.m-16 {
+	margin: 16rpx;
+}
+
+.m-20 {
+	margin: 20rpx;
+}
+
+.m-30 {
+	margin: 30rpx;
+}
+
+.m-40 {
+	margin: 40rpx;
+}
+
+.m-t10 {
+	margin-top: 10rpx;
+}
+
+.m-t16 {
+	margin-top: 16rpx;
+}
+
+.m-t20 {
+	margin-top: 20rpx;
+}
+
+.m-t30 {
+	margin-top: 30rpx;
+}
+
+.m-t40 {
+	margin-top: 40rpx;
+}
+
+.m-b10 {
+	margin-bottom: 10rpx;
+}
+
+.m-b16 {
+	margin-bottom: 16rpx;
+}
+
+.m-b20 {
+	margin-bottom: 20rpx;
+}
+
+.m-b25 {
+	margin-bottom: 25rpx;
+}
+
+.m-b30 {
+	margin-bottom: 30rpx;
+}
+
+.m-b40 {
+	margin-bottom: 40rpx;
+}
+
+.m-b50 {
+	margin-bottom: 50rpx;
+}
+
+.m-r6 {
+	margin-right: 6rpx;
+}
+
+.m-r10 {
+	margin-right: 10rpx;
+}
+
+.m-r16 {
+	margin-right: 16rpx;
+}
+
+.m-r20 {
+	margin-right: 20rpx;
+}
+
+.m-r30 {
+	margin-right: 30rpx;
+}
+
+.m-r40 {
+	margin-right: 40rpx;
+}
+
+.m-l10 {
+	margin-left: 10rpx;
+}
+
+.m-l16 {
+	margin-left: 16rpx;
+}
+
+.m-l20 {
+	margin-left: 20rpx;
+}
+
+.m-l30 {
+	margin-left: 30rpx;
+}
+
+.m-l40 {
+	margin-left: 40rpx;
+}
+
+.m-tb10 {
+	margin-top: 10rpx;
+	margin-bottom: 10rpx;
+}
+
+.m-tb16 {
+	margin-top: 16rpx;
+	margin-bottom: 16rpx;
+}
+
+.m-tb20 {
+	margin-top: 20rpx;
+	margin-bottom: 20rpx;
+}
+
+.m-tb30 {
+	margin-top: 30rpx;
+	margin-bottom: 30rpx;
+}
+
+.m-tb40 {
+	margin-top: 40rpx;
+	margin-bottom: 40rpx;
+}
+
+.m-lr10 {
+	margin-left: 10rpx;
+	margin-right: 10rpx;
+}
+
+.m-lr16 {
+	margin-left: 16rpx;
+	margin-right: 16rpx;
+}
+
+.m-lr20 {
+	margin-left: 20rpx;
+	margin-right: 20rpx;
+}
+
+.m-lr30 {
+	margin-left: 30rpx;
+	margin-right: 30rpx;
+}
+
+.m-lr40 {
+	margin-left: 30rpx;
+	margin-right: 40rpx;
+}
 
 /*字体大小*/
-.size-16{font-size: 16rpx;}
-.size-20{font-size: 20rpx;}
-.size-22{font-size: 22rpx;}
-.size-24{font-size: 24rpx;}
-.size-26{font-size: 26rpx;}
-.size-28{font-size: 28rpx;}
-.size-30{font-size: 30rpx;}
-.size-32{font-size: 32rpx;}
-.size-34{font-size: 34rpx;}
-.size-36{font-size: 36rpx;}
-.size-38{font-size: 38rpx;}
-.size-40{font-size: 40rpx;}
-.size-44{font-size: 44rpx;}
-.size-48{font-size: 48rpx;}
-.size-64{font-size: 64rpx;}
+.size-16 {
+	font-size: 16rpx;
+}
+
+.size-20 {
+	font-size: 20rpx;
+}
+
+.size-22 {
+	font-size: 22rpx;
+}
+
+.size-24 {
+	font-size: 24rpx;
+}
+
+.size-26 {
+	font-size: 26rpx;
+}
+
+.size-28 {
+	font-size: 28rpx;
+}
+
+.size-30 {
+	font-size: 30rpx;
+}
+
+.size-32 {
+	font-size: 32rpx;
+}
+
+.size-34 {
+	font-size: 34rpx;
+}
+
+.size-36 {
+	font-size: 36rpx;
+}
+
+.size-38 {
+	font-size: 38rpx;
+}
+
+.size-40 {
+	font-size: 40rpx;
+}
+
+.size-44 {
+	font-size: 44rpx;
+}
+
+.size-48 {
+	font-size: 48rpx;
+}
+
+.size-64 {
+	font-size: 64rpx;
+}
 
 /*边框*/
-.bor-f1{border: 1rpx solid #ffffff;}
-.bor-f2{border: 2rpx solid #ffffff;}
-.bor-solid-2{border: 2rpx solid #E5E5E5;}
-.bor-dashed-1{border: 1rpx dashed #E5E5E5;}
-.bor-dashed-2{border: 2rpx dashed #E5E5E5;}
-.bor-bottom-1{border-bottom: 1rpx solid #E5E5E5;}
-.bor-255{border: 2rpx solid rgba(255,255,255,0.7);}
+.bor-f1 {
+	border: 1rpx solid #ffffff;
+}
 
-.view_line{height: 1rpx;background: #CCCCCC;}
+.bor-f2 {
+	border: 2rpx solid #ffffff;
+}
+
+.bor-solid-2 {
+	border: 2rpx solid #E5E5E5;
+}
+
+.bor-dashed-1 {
+	border: 1rpx dashed #E5E5E5;
+}
+
+.bor-dashed-2 {
+	border: 2rpx dashed #E5E5E5;
+}
+
+.bor-bottom-1 {
+	border-bottom: 1rpx solid #E5E5E5;
+}
+
+.bor-255 {
+	border: 2rpx solid rgba(255, 255, 255, 0.7);
+}
+
+.view_line {
+	height: 1rpx;
+	background: #CCCCCC;
+}
 
 /*圆角*/
-.r-8 {border-radius: 8rpx;}
-.r-10 {border-radius: 10rpx;}
-.r-12 {border-radius: 12rpx;}
-.r-14 {border-radius: 14rpx;}
-.r-16 {border-radius: 16rpx;}
-.r-20 {border-radius: 20rpx;}
-.r-30 {border-radius: 30rpx;}
-.r-40 {border-radius: 40rpx;}
-.r-100 {border-radius: 100rpx;}
-.r-circle{border-radius: 50%;}
+.r-8 {
+	border-radius: 8rpx;
+}
+
+.r-10 {
+	border-radius: 10rpx;
+}
+
+.r-12 {
+	border-radius: 12rpx;
+}
+
+.r-14 {
+	border-radius: 14rpx;
+}
+
+.r-16 {
+	border-radius: 16rpx;
+}
+
+.r-20 {
+	border-radius: 20rpx;
+}
+
+.r-30 {
+	border-radius: 30rpx;
+}
+
+.r-40 {
+	border-radius: 40rpx;
+}
+
+.r-100 {
+	border-radius: 100rpx;
+}
+
+.r-circle {
+	border-radius: 50%;
+}
 
 /*宽高*/
-.wh-14{width: 14rpx;height: 14rpx;display: block;}
-.wh-25{width: 25rpx;height: 25rpx;display: block;}
-.wh-30{width: 30rpx;height: 30rpx;display: block;}
-.wh-60{width: 60rpx;height: 60rpx;display: block;}
-.wh-80{width: 80rpx;height: 80rpx;display: block;}
-.wh-90{width: 90rpx;height: 90rpx;display: block;}
-.wh-100{width: 100rpx;height: 100rpx;display: block;}
-.wh-110{width: 110rpx;height: 110rpx;display: block;}
+.wh-14 {
+	width: 14rpx;
+	height: 14rpx;
+	display: block;
+}
+
+.wh-25 {
+	width: 25rpx;
+	height: 25rpx;
+	display: block;
+}
+
+.wh-30 {
+	width: 30rpx;
+	height: 30rpx;
+	display: block;
+}
+
+.wh-60 {
+	width: 60rpx;
+	height: 60rpx;
+	display: block;
+}
+
+.wh-80 {
+	width: 80rpx;
+	height: 80rpx;
+	display: block;
+}
+
+.wh-90 {
+	width: 90rpx;
+	height: 90rpx;
+	display: block;
+}
+
+.wh-100 {
+	width: 100rpx;
+	height: 100rpx;
+	display: block;
+}
+
+.wh-110 {
+	width: 110rpx;
+	height: 110rpx;
+	display: block;
+}
+
 /*宽高*/
-.line-30{line-height: 30rpx;}
-.line-34{line-height: 34rpx;}
-.line-40{line-height: 40rpx;}
-.line-100{line-height: 100rpx;}
+.line-30 {
+	line-height: 30rpx;
+}
+
+.line-34 {
+	line-height: 34rpx;
+}
+
+.line-40 {
+	line-height: 40rpx;
+}
+
+.line-100 {
+	line-height: 100rpx;
+}
 
 /*阴影*/
-.box-shadow-197{box-shadow: 0 0 10px rgba(197,197,197,0.25);}
+.box-shadow-197 {
+	box-shadow: 0 0 10px rgba(197, 197, 197, 0.25);
+}
 
 /*字体大小*/
 .sys-size-16 {

+ 3 - 0
static/css/default-color.scss

@@ -116,6 +116,9 @@
 .color-2B7DFA{
 	color: #2B7DFA;
 }
+.button_color-008FD6{
+	color: #008FD6;
+}
 .color-ED9A2C{
 	color: #ED9A2C;
 }