From def7a94103b1c68110dcfc2a7ceba3021a22a24f Mon Sep 17 00:00:00 2001
From: Mr.Zhang <710666463@qq.com>
Date: 星期四, 07 九月 2023 15:35:34 +0800
Subject: [PATCH] 小程序

---
 minipro_standard/uni_modules/l-calendar/components/l-calendar/calendar.js    |  562 +++++++++++++++
 minipro_standard/pages/selectWorkOrder/selectWorkOrder.vue                   |  437 +++++------
 minipro_standard/uni_modules/l-calendar/readme.md                            |   40 +
 minipro_standard/pages/InOperation/InOperation.vue                           |  210 ++++
 minipro_standard/uni_modules/l-calendar/changelog.md                         |    8 
 minipro_standard/pages/inspectComplete/inspectComplete.vue                   |    2 
 minipro_standard/components/materialIn.vue                                   |    3 
 minipro_standard/pages/index/index.vue                                       |   21 
 minipro_standard/pages/inspectPatrol/inspectPatrol.vue                       |    1 
 minipro_standard/uni_modules/l-calendar/components/l-calendar/l-calendar.vue |  832 ++++++++++++++++++++++
 minipro_standard/uni_modules/l-calendar/package.json                         |   84 ++
 11 files changed, 1,936 insertions(+), 264 deletions(-)

diff --git a/minipro_standard/components/materialIn.vue b/minipro_standard/components/materialIn.vue
index aae23a9..277a9bc 100644
--- a/minipro_standard/components/materialIn.vue
+++ b/minipro_standard/components/materialIn.vue
@@ -42,7 +42,8 @@
 				this.list = target.list
 			},
 			jump(item) {
-				
+				this.show = false
+				this.$emit('selected', item)
 			}
 		}
 	}
diff --git a/minipro_standard/pages/InOperation/InOperation.vue b/minipro_standard/pages/InOperation/InOperation.vue
index 1f3a8df..f3fd8fc 100644
--- a/minipro_standard/pages/InOperation/InOperation.vue
+++ b/minipro_standard/pages/InOperation/InOperation.vue
@@ -63,10 +63,9 @@
 				</div>
 			</div>
 			<!--        鍏ュ簱鍗曪紙鍗曚釜浠撳簱锛�        -->
-			<template
-				v-if="route.query.type == 9 && info.woScanMaterialBeanList && info.woScanMaterialBeanList.length > 0">
+			<template v-if="type == 9 && woScanMaterialBeanList && woScanMaterialBeanList.length > 0">
 				<div class="page_yxwl_list">
-					<div class="page_yxwl_list_item" v-for="(item, index) in info.woScanMaterialBeanList" :key="index">
+					<div class="page_yxwl_list_item" v-for="(item, index) in woScanMaterialBeanList" :key="index">
 						<div class="page_yxwl_list_item_top">
 							<!--                            <div class="page_yxwl_list_item_top_left" v-if="item.batch">{{item.materialName}} | {{item.materialCode}}锝渰{item.batch}}</div>-->
 							<div class="page_yxwl_list_item_top_left">{{item.materialName}} | {{item.materialCode}}
@@ -107,7 +106,7 @@
 				</div>
 			</template>
 			<!--        杞簱鍗曪紙澶氫釜浠撳簱锛�        -->
-			<template v-else-if="route.query.type == 7 && seleMateriaList.length > 0">
+			<template v-else-if="type == 7 && seleMateriaList.length > 0">
 				<!-- <template v-for="(item, index) in info.wtransferWarehouseList" :key="index"> -->
 				<div class="page_yxwl_list">
 					<div class="page_yxwl_list_item" v-for="(item1, idx) in seleMateriaList" :key="idx">
@@ -158,16 +157,14 @@
 				<span>纭鍏ュ簱</span>
 			</div>
 		</div>
-		<SelectMultipleMaterial ref="selectMultipleMaterial" />
-		<SelectLoaction ref="selectLoaction" @selected="selectLocation"/>
-		<MaterialIn ref="materialIn" @selected="selectLocation"/>
+		<SelectLoaction ref="selectLoaction" @selected="selectLocation" />
+		<MaterialIn ref="materialIn" @selected="selectMaterial" />
 	</view>
 </template>
 
 <script>
 	import InOutInfo from '@/components/InOutInfo.vue'
-	import SelectMultipleMaterial from '@/components/SelectMultipleMaterial.vue'
-	import SelectLoaction from '@/components/SelectLoaction.vue'
+	import SelectLoaction from '@/components/SelectLoaction.vue'
 	import MaterialIn from '@/components/materialIn.vue'
 	import {
 		QRCodeType
@@ -196,24 +193,25 @@
 	} from '@/util/api/agencyAPI'
 	export default {
 		components: {
-			InOutInfo,
-			SelectLoaction,
-			MaterialIn,
-			SelectMultipleMaterial
+			InOutInfo,
+			SelectLoaction,
+			MaterialIn
 		},
 		data() {
 			return {
 				type: '',
-				id: '',
+				id: '',
 				wareHouseId: '',
 				isZKD: false,
 				show: false,
 				info: {},
-				ids: [],
-				location: '',
+				ids: [],
+				location: '',
 				locationName: '',
 				wtransferWarehouseList: [],
-				MateriaList: []
+				MateriaList: [],
+				woScanMaterialBeanList: [],
+				seleMateriaList: [] // 宸查�夌墿鏂�
 			};
 		},
 		onLoad(option) {
@@ -246,8 +244,8 @@
 				let data = {
 					id: this.id
 				}
-				console.log(this.type, QRCodeType.CKD);
-				if (this.type == QRCodeType.CKD) {
+				// console.log(this.type, QRCodeType.CKD);
+				if (this.type == QRCodeType.RKD) {
 					infoAction = wOutBoundForInOut
 					data.wOutboundType = '1'
 				} else if (this.type == QRCodeType.ZKD) {
@@ -256,13 +254,14 @@
 				}
 				infoAction(data).then(res => {
 					if (this.isZKD) {
-						this.info = res.data.wtransfer
+						this.info = res.data.wtransfer
 						this.wareHouseId = res.data.wtransfer.inWarehouseId
 						this.wtransferWarehouseList = res.data.wtransferWarehouseList
 						this.MateriaList = res.data.wtransferWarehouseList[0].wtransferDetailList
 					} else {
 						this.info = res.data.woutbound
 						this.woutboundDetailsWait = res.data.woutboundDetailsWait
+						this.woScanMaterialBeanList = res.data.woScanMaterialBeanList
 					}
 				}).catch(err => {
 					uni.$u.toast(err)
@@ -277,19 +276,167 @@
 						wareHouseId: this.wareHouseId
 					})
 					.then(res => {
-						if (res.data.length === 1) {
-							this.location = res.data[0].id
-							this.locationName = res.data[0].unionName
-							this.$refs.materialIn.open({list: this.MateriaList})
-						} else {
-							this.$refs.selectLoaction.open({wareHouseId: this.wareHouseId})
+						if (res.data.length === 1) {
+							this.location = res.data[0].id
+							this.locationName = res.data[0].unionName
+							this.$refs.materialIn.open({
+								list: this.MateriaList
+							})
+						} else {
+							this.$refs.selectLoaction.open({
+								wareHouseId: this.wareHouseId
+							})
 						}
 					})
-			},
-			selectLocation(item) {
-				this.location = item.id
-				this.locationName = item.unionName
-				this.$refs.materialIn.open({list: this.MateriaList})
+			},
+			selectLocation(item) {
+				this.location = item.id
+				this.locationName = item.unionName
+				this.$refs.materialIn.open({
+					list: this.MateriaList
+				})
+			},
+			selectMaterial(val) {
+				let material = JSON.parse(JSON.stringify(val))
+				let tempMaterial = this.seleMateriaList.find(item => item.locationId == this.location)
+				if (tempMaterial) {
+					if (tempMaterial.qualityType == material.qualityType && tempMaterial.procedureId == material
+						.procedureId &&
+						tempMaterial.batch == material.batch && tempMaterial.materialId == material.materialId) {
+						uni.$u.toast('鐩稿悓璐т綅锛屽悓涓�涓墿鏂欏彧鑳芥湁涓�涓�')
+						return
+					}
+				}
+				let materialNum = 0
+				let num = 0
+				this.seleMateriaList.forEach(item => {
+					if (item.id === material.id) {
+						materialNum += Number(item.outActnum)
+					}
+				})
+				this.MateriaList.forEach(item => {
+					if (item.id === material.id) {
+						num = item.outActnum - materialNum
+					}
+				})
+				material.outActnum = num
+				this.seleMateriaList.push({
+					...material,
+					locationId: this.location,
+					locationName: this.locationName
+				})
+			},
+			submit() {
+				if (this.type == QRCodeType.ZKD) {
+					if (!this.seleMateriaList.length) {
+						uni.$u.toast('杞叆鐗╂枡涓嶈兘涓虹┖')
+						return
+					}
+					let result = this.seleMateriaList.reduce((a, b) => {
+						if (a[b.id]) {
+							a[b.id].push(b);
+						} else {
+							a[b.id] = [b];
+						}
+						return a;
+					}, {});
+					for (let i = 0; i < this.MateriaList.length; i++) {
+						for (let a in result) {
+							if (this.MateriaList[i].id == a) {
+								let total = 0
+								for (let b = 0; b < result[a].length; b++) {
+									total = Number(total) + Number(result[a][b].outActnum)
+								}
+								if (!total || total <= 0) {
+									uni.$u.toast('鍏ュ簱鏁伴噺涓嶈兘灏忎簬0')
+									return 
+									// Toast.fail({
+									// 	message: '鍏ュ簱鏁伴噺涓嶈兘灏忎簬0',
+									// 	forbidClick: true,
+									// 	duration: 2000
+									// })
+								}
+								if (total > this.MateriaList[i].outActnum) {
+									uni.$u.toast('鍏ュ簱鏁伴噺涓嶈兘澶т簬寰呭叆搴撴暟閲�')
+									return 
+									// Toast.fail({
+									// 	message: '鍏ュ簱鏁伴噺涓嶈兘澶т簬寰呭叆搴撴暟閲�',
+									// 	forbidClick: true,
+									// 	duration: 2000
+									// })
+								}
+							}
+						}
+					}
+					let submitTransferInDetailDTOList = []
+					this.seleMateriaList.forEach(item => {
+						submitTransferInDetailDTOList.push({
+							inNum: item.outActnum,
+							locationId: item.locationId,
+							wtransferDetailId: item.id
+						})
+					})
+					transferToInNew({
+						submitTransferInDetailDTOList,
+						wtransferId: this.id
+					}).then(res => {
+						if (res.code === 200) {
+							this.$store.dispatch('getUpcomingNum')
+							uni.$u.toast('鎿嶄綔鎴愬姛')
+							// Toast.success({
+							// 	message: '鎿嶄綔鎴愬姛',
+							// 	forbidClick: true,
+							// 	duration: 2000
+							// })
+							
+							// setTimeout(() => {
+							// 	if (route.query.Type == '4') { // 璺宠浆瀹屽伐鍏ュ簱璇︽儏
+							// 		router.push({
+							// 			name: 'completionDetails',
+							// 			query: {
+							// 				id: route.query.id,
+							// 				dbid: route.query.dbid,
+							// 				type: 7,
+							// 				isShow: 2
+							// 			}
+							// 		})
+							// 		return
+							// 	}
+							// 	router.replace({
+							// 		name: 'wTransferDetail',
+							// 		query: {
+							// 			id: route.query.id
+							// 		}
+							// 	})
+							// }, 2000)
+						}
+					})
+
+				} else if (this.type === QRCodeType.RKD) {
+					wOutBoundForUpload({
+						id: this.info.id,
+						wOutboundType: 1
+					}).then(res => {
+						if (res.code === 200) {
+							this.$store.dispatch('getUpcomingNum')
+							uni.$u.toast('鎿嶄綔鎴愬姛')
+							// Toast.success({
+							// 	message: '鎿嶄綔鎴愬姛',
+							// 	forbidClick: true,
+							// 	duration: 2000
+							// })
+							// setTimeout(() => {
+							// 	// router.go(-1)
+							// 	router.replace({
+							// 		name: 'wInboundDetail',
+							// 		query: {
+							// 			id: this.id
+							// 		}
+							// 	})
+							// }, 2000)
+						}
+					})
+				}
 			}
 		}
 	}
@@ -606,6 +753,7 @@
 							}
 
 							.nr {
+								display: flex;
 								font-size: 26rpx;
 								font-weight: 400;
 								color: #222222;
diff --git a/minipro_standard/pages/index/index.vue b/minipro_standard/pages/index/index.vue
index ac8f18a..8da7917 100644
--- a/minipro_standard/pages/index/index.vue
+++ b/minipro_standard/pages/index/index.vue
@@ -9,7 +9,7 @@
 					:style="{paddingTop: `${statusbarHeight}px`, height: `${navHeight}px`, lineHeight:`${navHeight}px`, textAlign: 'center'}">
 					寰呭姙</view>
 				<view class="cY">
-					<u-search placeholder="鎼滅储鍏抽敭瀛�" bgColor="#f7f7f7" :showAction="false" @search="scrolltoupper"
+					<u-search placeholder="鎼滅储鍏抽敭瀛�" bgColor="#f7f7f7" :showAction="false" @search="search"
 						shape="square" v-model="searchForm.mixParam"></u-search>
 					<image src="../../static/filter@2x.png" class="img48 ml20" @click="filterAction" mode=""></image>
 				</view>
@@ -198,13 +198,11 @@
 			},
 			selectType(status) {
 				if (this.searchForm.status == status) return
-				this.searchForm.status = status
-				this.scrolltolower()
+				this.searchForm.status = status
+				this.search()
 			},
 			jump(item) {
-				console.log(item);
 				if ((item.type === 0 || item.type === 2 || item.type === 5) && item.status === 0) { // 璺宠浆鍑哄簱(杞簱鍗�)
-				console.log('鍑哄簱');
 					uni.navigateTo({
 						url: `/pages/OutOperation/OutOperation?id=${item.objId}&dbid=${item.id}&type=7`
 					})
@@ -278,7 +276,10 @@
 					// 		id: item.objId
 					// 	}
 					// })
-				} else if (item.type === 9 && item.status === 0) { // 璋冩暣鍏ュ簱(鍏ュ簱鍗�)
+				} else if (item.type === 9 && item.status === 0) { // 璋冩暣鍏ュ簱(鍏ュ簱鍗�)
+					uni.navigateTo({
+						url: `/pages/InOperation/InOperation?id=${item.objId}&dbid=${item.id}&type=9`
+					})
 					// router.push({
 					// 	name: 'warehousing',
 					// 	query: {
@@ -309,8 +310,12 @@
 			},
 			confirm() {
 				this.searchForm.type = this.type
-				this.show = false
-				this.scrolltoupper()
+				this.show = false
+				this.search()
+			},
+			search() {
+				this.page.page = 1
+				this.loadData()
 			}
 		}
 	}
diff --git a/minipro_standard/pages/inspectComplete/inspectComplete.vue b/minipro_standard/pages/inspectComplete/inspectComplete.vue
index 72f566e..d55a676 100644
--- a/minipro_standard/pages/inspectComplete/inspectComplete.vue
+++ b/minipro_standard/pages/inspectComplete/inspectComplete.vue
@@ -59,6 +59,8 @@
 </template>
 
 <script>
+	import { createStandard } from '@/util/api/QualityAPI'
+	import { checkAllList, getListByCondition, toolingQueryById } from "@/util/api/WorkOrderAPI"
 	export default {
 		data() {
 			return {
diff --git a/minipro_standard/pages/inspectPatrol/inspectPatrol.vue b/minipro_standard/pages/inspectPatrol/inspectPatrol.vue
index be1dace..6d08d9c 100644
--- a/minipro_standard/pages/inspectPatrol/inspectPatrol.vue
+++ b/minipro_standard/pages/inspectPatrol/inspectPatrol.vue
@@ -83,6 +83,7 @@
 		},
 		onLoad() {
 			uni.$on('workOrder', (data) => {
+				console.log(data);
 				this.form.gdmc = data.mmodel.name + '-' + data.pgmodel.name
 				this.form.gdid = data.id
 				this.info = data
diff --git a/minipro_standard/pages/selectWorkOrder/selectWorkOrder.vue b/minipro_standard/pages/selectWorkOrder/selectWorkOrder.vue
index e6800a4..74ba8b9 100644
--- a/minipro_standard/pages/selectWorkOrder/selectWorkOrder.vue
+++ b/minipro_standard/pages/selectWorkOrder/selectWorkOrder.vue
@@ -8,10 +8,12 @@
 						<div class="Search_item_label">璁″垝鏃ユ湡</div>
 						<div class="Search_item_content" @click="isOpenDate=true">
 							<div class="Search_item_content_a" :style="form.startDate ? 'color: #000;' : ''">
-								{{ form.startDate ? form.startDate : '寮�濮嬫棩鏈�'}}</div>
+								{{ form.startDate ? form.startDate : '寮�濮嬫棩鏈�'}}
+							</div>
 							<span>-</span>
 							<div class="Search_item_content_a" :style="form.endDate ? 'color: #000;' : ''">
-								{{ form.endDate ? form.endDate : '缁撴潫鏃ユ湡'}}</div>
+								{{ form.endDate ? form.endDate : '缁撴潫鏃ユ湡'}}
+							</div>
 						</div>
 					</div>
 				</template>
@@ -19,239 +21,226 @@
 			<div class="content_search_x"></div>
 			<v-LableSelection :TagList="tagList" :isShow="true" @change="clickTag"></v-LableSelection>
 		</div>
-		<div class="content_total">鍏眥{page.total}}鏉℃暟鎹�</div>
-		<div class="content_list">
-			<u-list @scrolltolower="scrolltolower" @scrolltoupper="scrolltoupper">
-				<u-list-item  v-for="(item, i) in list" :key="i">
-					<div class="content_list_item" @click="jump(item)">
-						<div class="content_list_item_top">
-							<div class="content_list_item_top_left">
-								<span v-if="item.mmodel">{{item.mmodel.name}} | {{item.procedureName}}</span>
-								<div class="content_list_item_top_left_tag" v-if="item.urgent">浼樺厛{{item.urgent}}</div>
-								<div class="content_list_item_top_left_tagW" v-if="item.paused === 1">鍋�</div>
-							</div>
-							<div class="content_list_item_top_right">
-								<span class="yellow" v-if="item.status === 0">宸插垱寤�</span>
-								<span class="green" v-if="item.status === 1">宸插鏂�</span>
-								<span v-if="item.status === 2">宸插畬宸�</span>
-								<span class="purple" v-if="item.status === 3">宸叉楠�</span>
-								<span v-if="item.status === 4">宸叉姤宸�</span>
-								<span v-if="item.status === 5">宸插叆搴�</span>
-								<span v-if="item.status === 6">宸插彇娑�</span>
-							</div>
-						</div>
-						<span>宸ュ崟缂栫爜: {{item.code}}</span>
-						<div class="content_list_item_content">
-							<div class="content_list_item_content_item">
-								<div class="content_list_item_content_item_label">鐗╂枡缂栫爜锛�</div>
-								<div class="content_list_item_content_item_nr" v-if="item.mmodel">{{item.mmodel.code}}
-								</div>
-							</div>
-							<div class="content_list_item_content_item">
-								<div class="content_list_item_content_item_label">璁″垝寮�宸ワ細</div>
-								<div class="content_list_item_content_item_nr">{{item.planDate}}</div>
-							</div>
-							<div class="content_list_item_content_item">
-								<div class="content_list_item_content_item_label">鐢熶骇鎵规锛�</div>
-								<div class="content_list_item_content_item_nr">{{item.batch}}</div>
-							</div>
-							<div class="content_list_item_content_item">
-								<div class="content_list_item_content_item_label">璁″垝鏁伴噺锛�</div>
-								<div class="content_list_item_content_item_nr" v-if="item.umodel">
-									{{item.planNum}}{{item.umodel.name}}</div>
-							</div>
-							<div class="content_list_item_content_item">
-								<div class="content_list_item_content_item_label">鐢熶骇璁惧锛�</div>
-								<div class="content_list_item_content_item_nr" v-if="item.pgmodel">{{item.pgmodel.name}}
-								</div>
-							</div>
-							<div class="content_list_item_content_item" v-if="item.status === 5">
-								<div class="content_list_item_content_item_label">瀹屽伐鏁伴噺锛�</div>
-								<div class="content_list_item_content_item_nr">{{item.proNum}}</div>
-							</div>
-						</div>
-					</div>
-				</u-list-item>
-			</u-list>
+		<div class="content_total">鍏眥{page.total}}鏉℃暟鎹�</div>
+		<div class="content_list">
+			<scroll-view scroll-y="true" refresher-enabled="true" :refresher-triggered="refreshing"
+				@scrolltolower="loadMore" @refresherrefresh="onRefresh" :style="{height: height}">
+				<div class="content_list_item" v-for="(item, i) in list" :key="i" @click="jump(item)">
+					<div class="content_list_item_top">
+						<div class="content_list_item_top_left">
+							<span v-if="item.mmodel">{{item.mmodel.name}} | {{item.procedureName}}</span>
+							<div class="content_list_item_top_left_tag" v-if="item.urgent">浼樺厛{{item.urgent}}</div>
+							<div class="content_list_item_top_left_tagW" v-if="item.paused === 1">鍋�</div>
+						</div>
+						<div class="content_list_item_top_right">
+							<span class="yellow" v-if="item.status === 0">宸插垱寤�</span>
+							<span class="green" v-if="item.status === 1">宸插鏂�</span>
+							<span v-if="item.status === 2">宸插畬宸�</span>
+							<span class="purple" v-if="item.status === 3">宸叉楠�</span>
+							<span v-if="item.status === 4">宸叉姤宸�</span>
+							<span v-if="item.status === 5">宸插叆搴�</span>
+							<span v-if="item.status === 6">宸插彇娑�</span>
+						</div>
+					</div>
+					<span>宸ュ崟缂栫爜: {{item.code}}</span>
+					<div class="content_list_item_content">
+						<div class="content_list_item_content_item">
+							<div class="content_list_item_content_item_label">鐗╂枡缂栫爜锛�</div>
+							<div class="content_list_item_content_item_nr" v-if="item.mmodel">{{item.mmodel.code}}
+							</div>
+						</div>
+						<div class="content_list_item_content_item">
+							<div class="content_list_item_content_item_label">璁″垝寮�宸ワ細</div>
+							<div class="content_list_item_content_item_nr">{{item.planDate}}</div>
+						</div>
+						<div class="content_list_item_content_item">
+							<div class="content_list_item_content_item_label">鐢熶骇鎵规锛�</div>
+							<div class="content_list_item_content_item_nr">{{item.batch}}</div>
+						</div>
+						<div class="content_list_item_content_item">
+							<div class="content_list_item_content_item_label">璁″垝鏁伴噺锛�</div>
+							<div class="content_list_item_content_item_nr" v-if="item.umodel">
+								{{item.planNum}}{{item.umodel.name}}
+							</div>
+						</div>
+						<div class="content_list_item_content_item">
+							<div class="content_list_item_content_item_label">鐢熶骇璁惧锛�</div>
+							<div class="content_list_item_content_item_nr" v-if="item.pgmodel">{{item.pgmodel.name}}
+							</div>
+						</div>
+						<div class="content_list_item_content_item" v-if="item.status === 5">
+							<div class="content_list_item_content_item_label">瀹屽伐鏁伴噺锛�</div>
+							<div class="content_list_item_content_item_nr">{{item.proNum}}</div>
+						</div>
+					</div>
+				</div>
+			</scroll-view>
 		</div>
 		<!-- <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
 			<van-list v-model:loading="loading" :finished="finished" finished-text="娌℃湁鏇村浜唦" @load="onLoad">
 			</van-list>
-		</van-pull-refresh> -->
-		<u-calendar :show="isOpenDate" mode="range" @close="isOpenDate=false" @confirm="onConfirm"></u-calendar>
-		<!-- <van-calendar v-model:show="isOpenDate" type="range" :min-date="minDate" :max-date="maxDate" color="#4275FC"
-			@confirm="onConfirm" /> -->
-		<!-- <v-ScanCode
-		            :openCode="openCode"
-		            :infos="['绗竴娆℃壂鐮�']"
-		            @closePopup="closePopup"
-		            @onDecode="onDecode">
-		        </v-ScanCode> -->
+		</van-pull-refresh> -->
+
+		<l-calendar :lunar="false" v-model="isOpenDate" @change="onConfirm" :isRange="true" activeBgColor="#305ED5"
+			rangeColor="#305ED5" rangeBgColor="rgba(48, 80, 213, 0.1)"></l-calendar>
+
 	</view>
 </template>
 
-<script>
-	import vSearch from '@/components/Search.vue'
-	import vLableSelection from '@/components/LabelSelection.vue'
-	import { gsdate } from '@/util/utils'
-	export default {
-		components: {
-			vSearch,
-			vLableSelection
+<script>
+	import vSearch from '@/components/Search.vue'
+	import vLableSelection from '@/components/LabelSelection.vue'
+	import {
+		gsdate
+	} from '@/util/utils'
+	import {
+		getList,
+		pageCount
+	} from '@/util/api/WorkOrderAPI'
+	export default {
+		components: {
+			vSearch,
+			vLableSelection
 		},
 		data() {
 			return {
-				status: true,
-				isOpenDate: false,
-				// tagList: [1,2,3],
-				form: {
-					startDate: '',
-					endDate: ''
-				},
-				list: [
-					{
-						mmodel: { name: 'adsa', },
-						mmodel: { code: 'wl-001' },
-						umodel: { name: '鍚�' },
-						pgmodel: { name: '娑插帇鏈�' },
-						procedureName: '鍘嬪埗',
-						urgent: 10,
-						paused: 0,
-						status: 0,
-						code: '00100',
-						planDate: '2023-08-30',
-						batch: 'kk-yw',
-						planNum: 300,
-						proNum: 100,
-					},
-					{
-						mmodel: { name: 'adsa', },
-						mmodel: { code: 'wl-001' },
-						umodel: { name: '鍚�' },
-						pgmodel: { name: '娑插帇鏈�' },
-						procedureName: '鍘嬪埗',
-						urgent: 10,
-						paused: 0,
-						status: 1,
-						code: '00100',
-						planDate: '2023-08-30',
-						batch: 'kk-yw',
-						planNum: 300,
-						proNum: 100
-					},
-					{
-						mmodel: { name: 'adsa', },
-						mmodel: { code: 'wl-001' },
-						umodel: { name: '鍚�' },
-						pgmodel: { name: '娑插帇鏈�' },
-						procedureName: '鍘嬪埗',
-						urgent: 10,
-						paused: 0,
-						status: 2,
-						code: '00100',
-						planDate: '2023-08-30',
-						batch: 'kk-yw',
-						planNum: 300,
-						proNum: 100,
-					},
-					{
-						mmodel: { name: 'adsa', },
-						mmodel: { name: '鐗╂枡001', code: 'wl-001' },
-						umodel: { name: '鍚�' },
-						pgmodel: { name: '娑插帇鏈�' },
-						procedureName: '鍘嬪埗',
-						urgent: 10,
-						paused: 0,
-						status: 3,
-						code: '00100',
-						planDate: '2023-08-30',
-						batch: 'kk-yw',
-						planNum: 300,
-						proNum: 100,
-					},
-					{
-						mmodel: { name: 'adsa', },
-						mmodel: { code: 'wl-001' },
-						umodel: { name: '鍚�' },
-						pgmodel: { name: '娑插帇鏈�' },
-						procedureName: '鍘嬪埗',
-						urgent: 10,
-						paused: 0,
-						status: 4,
-						code: '00100',
-						planDate: '2023-08-30',
-						batch: 'kk-yw',
-						planNum: 300,
-						proNum: 100,
-					},
-					{
-						mmodel: { name: 'adsa', },
-						mmodel: { code: 'wl-001' },
-						umodel: { name: '鍚�' },
-						pgmodel: { name: '娑插帇鏈�' },
-						procedureName: '鍘嬪埗',
-						urgent: 10,
-						paused: 0,
-						status: 5,
-						code: '00100',
-						planDate: '2023-08-30',
-						batch: 'kk-yw',
-						planNum: 300,
-						proNum: 100,
-					},
-					{
-						mmodel: { name: 'adsa', },
-						mmodel: { code: 'wl-001' },
-						umodel: { name: '鍚�' },
-						pgmodel: { name: '娑插帇鏈�' },
-						procedureName: '鍘嬪埗',
-						urgent: 10,
-						paused: 0,
-						status: 6,
-						code: '00100',
-						planDate: '2023-08-30',
-						batch: 'kk-yw',
-						planNum: 300,
-						proNum: 100,
-					},
-					{
-						mmodel: { name: 'adsa', },
-						mmodel: { code: 'wl-001' },
-						umodel: { name: '鍚�' },
-						pgmodel: { name: '娑插帇鏈�' },
-						procedureName: '鍘嬪埗',
-						urgent: 10,
-						paused: 0,
-						status: 7,
-						code: '00100',
-						planDate: '2023-08-30',
-						batch: 'kk-yw',
-						planNum: 300,
-						proNum: 100,
-					},
-				],
-				page: {
-					size: 10,
-					index: 1,
-					total: 0
+				height: '',
+				status: true,
+				isOpenDate: false,
+				refreshing: false,
+				// tagList: [1,2,3],
+				tagList: [{
+                    id: [2,3,7],
+                    name: '鐢熶骇涓�',
+                    num: ''
+                }],
+				minDate: '2021-01-01',
+				maxDate: '',
+				form: {
+					startDate: '',
+					endDate: '',
+					mixParam: '',
+					statusList: []
+				},
+				list: [],
+				page: {
+					capacity: 10,
+					index: 1,
+					total: 0
 				}
 			};
-		},
-		methods: {
-			reset() {},
-			submit() {},
-			onConfirm(value) {
-				const [start, end] = value
-				this.form.startDate = gsdate(start)
-				this.form.endDate = gsdate(end)
-				this.isOpenDate = false
-			},
-			scrolltolower() {},
-			scrolltoupper() {},
-			jump(item) {
-				uni.$emit('workOrder', item)
-				uni.navigateBack()
-			}
+		},
+		onLoad(opt) {
+			this.$nextTick(() => {
+				uni.createSelectorQuery().in(this).select('.content_search').boundingClientRect((rect) => {
+					this.height = `calc(100vh - ${rect.height + 80}px)`
+				}).exec()
+			})
+			if (opt.type == '1') {
+				this.tagList = [{
+						id: [0, 1],
+						name: '寰呯敓浜�',
+						num: ''
+					},
+					{
+						id: [2, 3, 7],
+						name: '鐢熶骇涓�',
+						num: ''
+					}
+				]
+			} else {
+				this.tagList = [{
+					id: [2, 3, 7],
+					name: '鐢熶骇涓�',
+					num: ''
+				}]
+			}
+			this.maxDate = gsdate(new Date(`${new Date().getFullYear() + 1}-12-30`))
+			this.pageCounts()
+			this.loadData()
+		},
+		methods: {
+			reset() {
+				this.form.startDate = ''
+				this.form.endDate = ''
+				this.search()
+			},
+			searchInput(val) {
+				this.form.mixParam = val;
+				this.search()
+			},
+			clickTag(v) {
+				this.form.statusList = v
+				this.search()
+			},
+			submit() {
+				this.search()
+			},
+			onConfirm(value) {
+				this.form.startDate = value.startDate
+				this.form.endDate = value.endDate
+				this.isOpenDate = false
+			},
+			onRefresh() {
+				if (this.refreshing) return
+				this.refreshing = true;
+				this.search()
+			},
+			loadMore() {
+				this.page.page += 1
+				this.loadData()
+			},
+			search() {
+				this.page.page = 1
+				this.loadData()
+			},
+			loadData() {
+				getList({
+						...this.page,
+						model: {
+							...this.form,
+							statusList: this.form.statusList.length === 0 ? this.tagList[0].id : this.form.statusList
+						} 
+					})
+					.then(res => {
+						let {
+							data
+						} = res
+						if (data.page == 1) {
+							this.list = []
+						}
+						this.list.push(...data.records)
+						this.page.total = data.total
+						this.page.page = data.page
+					})
+					.catch(err => {
+
+					})
+					.finally(() => {
+						this.refreshing = false
+					})
+			},
+			pageCounts() {
+				pageCount({}).then(res => {
+					if (res.code === 200) {
+						this.tagList.forEach(item => {
+							if (item.name == '寰呯敓浜�') {
+								item.num = res.data.startNum
+							}
+							if (item.name == '鐢熶骇涓�') {
+								item.num = res.data.ingNum
+							}
+							if (item.name == '宸插畬鎴�') {
+								item.num = res.data.endNum
+							}
+						})
+					}
+				})
+			},
+			jump(item) {
+				uni.$emit('workOrder', item)
+				uni.navigateBack()
+			}
 		}
 	}
 </script>
@@ -363,7 +352,7 @@
 
 		.content_list {
 			width: 100%;
-			height: 100%;
+			// height: 100%;
 			display: flex;
 			flex-direction: column;
 
diff --git a/minipro_standard/uni_modules/l-calendar/changelog.md b/minipro_standard/uni_modules/l-calendar/changelog.md
new file mode 100644
index 0000000..1e20611
--- /dev/null
+++ b/minipro_standard/uni_modules/l-calendar/changelog.md
@@ -0,0 +1,8 @@
+## 1.0.3锛�2023-05-31锛�
+1.0.3
+## 1.0.2锛�2023-05-20锛�
+1.0.2
+## 1.0.1锛�2023-05-19锛�
+1.0.1
+## 1.0.0锛�2023-05-19锛�
+1.0.0
diff --git a/minipro_standard/uni_modules/l-calendar/components/l-calendar/calendar.js b/minipro_standard/uni_modules/l-calendar/components/l-calendar/calendar.js
new file mode 100644
index 0000000..72b0e2b
--- /dev/null
+++ b/minipro_standard/uni_modules/l-calendar/components/l-calendar/calendar.js
@@ -0,0 +1,562 @@
+/**
+ * @1900-2100鍖洪棿鍐呯殑鍏巻銆佸啘鍘嗕簰杞�
+ * @鍏巻杞啘鍘嗭細solar2lunar
+ * @鍐滃巻杞叕鍘嗭細lunar2solar 
+ */
+let calendar = {
+	/**
+	 * 鍐滃巻1900-2100鐨勬鼎澶у皬淇℃伅琛�
+	 * @Array Of Property
+	 * @return Hex
+	 */
+	lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, //1900-1909
+		0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, //1910-1919
+		0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, //1920-1929
+		0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, //1930-1939
+		0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, //1940-1949
+		0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0, //1950-1959
+		0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, //1960-1969
+		0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6, //1970-1979
+		0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, //1980-1989
+		0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x055c0, 0x0ab60, 0x096d5, 0x092e0, //1990-1999
+		0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, //2000-2009
+		0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, //2010-2019
+		0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, //2020-2029
+		0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, //2030-2039
+		0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0, //2040-2049
+		0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0, //2050-2059
+		0x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4, //2060-2069
+		0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0, //2070-2079
+		0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160, //2080-2089
+		0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252, //2090-2099
+		0x0d520
+	], //2100
+	/**
+	 * 鍏巻姣忎釜鏈堜唤鐨勫ぉ鏁版櫘閫氳〃
+	 * @Array Of Property
+	 * @return Number
+	 */
+	solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
+	/**
+	 * 澶╁共鍦版敮涔嬪ぉ骞查�熸煡琛�
+	 * @Array Of Property trans["鐢�","涔�","涓�","涓�","鎴�","宸�","搴�","杈�","澹�","鐧�"]
+	 * @return Cn string
+	 */
+	Gan: ["\u7532", "\u4e59", "\u4e19", "\u4e01", "\u620a", "\u5df1", "\u5e9a", "\u8f9b", "\u58ec", "\u7678"],
+	/**
+	 * 澶╁共鍦版敮涔嬪湴鏀�熸煡琛�
+	 * @Array Of Property
+	 * @trans["瀛�","涓�","瀵�","鍗�","杈�","宸�","鍗�","鏈�","鐢�","閰�","鎴�","浜�"]
+	 * @return Cn string
+	 */
+	Zhi: ["\u5b50", "\u4e11", "\u5bc5", "\u536f", "\u8fb0", "\u5df3", "\u5348", "\u672a", "\u7533", "\u9149", "\u620c",
+		"\u4ea5"
+	],
+	/**
+	 * 澶╁共鍦版敮涔嬪湴鏀�熸煡琛�<=>鐢熻倴
+	 * @Array Of Property
+	 * @trans["榧�","鐗�","铏�","鍏�","榫�","铔�","椹�","缇�","鐚�","楦�","鐙�","鐚�"]
+	 * @return Cn string
+	 */
+	Animals: ["\u9f20", "\u725b", "\u864e", "\u5154", "\u9f99", "\u86c7", "\u9a6c", "\u7f8a", "\u7334", "\u9e21",
+		"\u72d7", "\u732a"
+	],
+	/**
+	 * 24鑺傛皵閫熸煡琛�
+	 * @Array Of Property
+	 * @trans["灏忓瘨","澶у瘨","绔嬫槬","闆ㄦ按","鎯婅洶","鏄ュ垎","娓呮槑","璋烽洦","绔嬪","灏忔弧","鑺掔","澶忚嚦","灏忔殤","澶ф殤","绔嬬","澶勬殤","鐧介湶","绉嬪垎","瀵掗湶","闇滈檷","绔嬪啲","灏忛洩","澶ч洩","鍐嚦"]
+	 * @return Cn string
+	 */
+	solarTerm: ["\u5c0f\u5bd2", "\u5927\u5bd2", "\u7acb\u6625", "\u96e8\u6c34", "\u60ca\u86f0", "\u6625\u5206",
+		"\u6e05\u660e", "\u8c37\u96e8", "\u7acb\u590f", "\u5c0f\u6ee1", "\u8292\u79cd", "\u590f\u81f3", "\u5c0f\u6691",
+		"\u5927\u6691", "\u7acb\u79cb", "\u5904\u6691", "\u767d\u9732", "\u79cb\u5206", "\u5bd2\u9732", "\u971c\u964d",
+		"\u7acb\u51ac", "\u5c0f\u96ea", "\u5927\u96ea", "\u51ac\u81f3"
+	],
+	/**
+	 * 1900-2100鍚勫勾鐨�24鑺傛皵鏃ユ湡閫熸煡琛�
+	 * @Array Of Property
+	 * @return 0x string For splice
+	 */
+	sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f',
+		'97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+		'97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa',
+		'97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f',
+		'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f',
+		'97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa',
+		'97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2',
+		'9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f',
+		'97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+		'97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+		'97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722',
+		'9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f',
+		'97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+		'97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+		'97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722',
+		'9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f',
+		'97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
+		'97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
+		'9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722',
+		'7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+		'97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+		'97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+		'9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722',
+		'7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+		'97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+		'97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+		'9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722',
+		'7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
+		'97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
+		'9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
+		'7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
+		'7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+		'97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+		'9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+		'7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
+		'7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+		'97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+		'9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+		'7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721',
+		'7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2',
+		'977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
+		'7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+		'7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd',
+		'7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+		'977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+		'7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+		'7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd',
+		'7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+		'977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+		'7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721',
+		'7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5',
+		'7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722',
+		'7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+		'7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
+		'7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35',
+		'7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+		'7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721',
+		'7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd',
+		'7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35',
+		'7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+		'7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721',
+		'7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5',
+		'7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35',
+		'665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+		'7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
+		'7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35',
+		'7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'
+	],
+	/**
+	 * 鏁板瓧杞腑鏂囬�熸煡琛�
+	 * @Array Of Property
+	 * @trans ['鏃�','涓�','浜�','涓�','鍥�','浜�','鍏�','涓�','鍏�','涔�','鍗�']
+	 * @return Cn string
+	 */
+	nStr1: ["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d", "\u4e03", "\u516b", "\u4e5d", "\u5341"],
+	/**
+	 * 鏃ユ湡杞啘鍘嗙О鍛奸�熸煡琛�
+	 * @Array Of Property
+	 * @trans ['鍒�','鍗�','寤�','鍗�']
+	 * @return Cn string
+	 */
+	nStr2: ["\u521d", "\u5341", "\u5eff", "\u5345"],
+	/**
+	 * 鏈堜唤杞啘鍘嗙О鍛奸�熸煡琛�
+	 * @Array Of Property
+	 * @trans ['姝�','涓�','浜�','涓�','鍥�','浜�','鍏�','涓�','鍏�','涔�','鍗�','鍐�','鑵�']
+	 * @return Cn string
+	 */
+	nStr3: ["\u6b63", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d", "\u4e03", "\u516b", "\u4e5d", "\u5341", "\u51ac",
+		"\u814a"
+	],
+	/**
+	 * 杩斿洖鍐滃巻y骞翠竴鏁村勾鐨勬�诲ぉ鏁�
+	 * @param lunar Year
+	 * @return Number
+	 * @eg:let count = calendar.lYearDays(1987) ;//count=387
+	 */
+	lYearDays: function(y) {
+		let i, sum = 348;
+		for (i = 0x8000; i > 0x8; i >>= 1) {
+			sum += (calendar.lunarInfo[y - 1900] & i) ? 1 : 0;
+		}
+		return (sum + calendar.leapDays(y));
+	},
+	/**
+	 * 杩斿洖鍐滃巻y骞撮棸鏈堟槸鍝釜鏈堬紱鑻骞存病鏈夐棸鏈� 鍒欒繑鍥�0
+	 * @param lunar Year
+	 * @return Number (0-12)
+	 * @eg:let leapMonth = calendar.leapMonth(1987) ;//leapMonth=6
+	 */
+	leapMonth: function(y) { //闂板瓧缂栫爜 \u95f0
+		return (calendar.lunarInfo[y - 1900] & 0xf);
+	},
+	/**
+	 * 杩斿洖鍐滃巻y骞撮棸鏈堢殑澶╂暟 鑻ヨ骞存病鏈夐棸鏈堝垯杩斿洖0
+	 * @param lunar Year
+	 * @return Number (0銆�29銆�30)
+	 * @eg:let leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29
+	 */
+	leapDays: function(y) {
+		if (calendar.leapMonth(y)) {
+			return ((calendar.lunarInfo[y - 1900] & 0x10000) ? 30 : 29);
+		}
+		return (0);
+	},
+	/**
+	 * 杩斿洖鍐滃巻y骞磎鏈堬紙闈為棸鏈堬級鐨勬�诲ぉ鏁帮紝璁$畻m涓洪棸鏈堟椂鐨勫ぉ鏁拌浣跨敤leapDays鏂规硶
+	 * @param lunar Year
+	 * @return Number (-1銆�29銆�30)
+	 * @eg:let MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29
+	 */
+	monthDays: function(y, m) {
+		if (m > 12 || m < 1) {
+			return -1
+		} //鏈堜唤鍙傛暟浠�1鑷�12锛屽弬鏁伴敊璇繑鍥�-1
+		return ((calendar.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29);
+	},
+	/**
+	 * 杩斿洖鍏巻(!)y骞磎鏈堢殑澶╂暟
+	 * @param solar Year
+	 * @return Number (-1銆�28銆�29銆�30銆�31)
+	 * @eg:let solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30
+	 */
+	solarDays: function(y, m) {
+		if (m > 12 || m < 1) {
+			return -1
+		} //鑻ュ弬鏁伴敊璇� 杩斿洖-1
+		let ms = m - 1;
+		if (ms == 1) { //2鏈堜唤鐨勯棸骞宠寰嬫祴绠楀悗纭杩斿洖28鎴�29
+			return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28);
+		} else {
+			return (calendar.solarMonth[ms]);
+		}
+	},
+	/**
+	 * 鍐滃巻骞翠唤杞崲涓哄共鏀邯骞�
+	 * @param lYear 鍐滃巻骞寸殑骞翠唤鏁�
+	 * @return Cn string
+	 */
+	toGanZhiYear: function(lYear) {
+		let ganKey = (lYear - 3) % 10;
+		let zhiKey = (lYear - 3) % 12;
+		if (ganKey == 0) ganKey = 10; //濡傛灉浣欐暟涓�0鍒欎负鏈�鍚庝竴涓ぉ骞�
+		if (zhiKey == 0) zhiKey = 12; //濡傛灉浣欐暟涓�0鍒欎负鏈�鍚庝竴涓湴鏀�
+		return calendar.Gan[ganKey - 1] + calendar.Zhi[zhiKey - 1];
+	},
+	/**
+	 * 鍏巻鏈堛�佹棩鍒ゆ柇鎵�灞炴槦搴�
+	 * @param cMonth [description]
+	 * @param cDay [description]
+	 * @return Cn string
+	 */
+	toAstro: function(cMonth, cDay) {
+		let s =
+			"\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf";
+		let arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22];
+		return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + "\u5ea7"; //搴�
+	},
+	/**
+	 * 浼犲叆offset鍋忕Щ閲忚繑鍥炲共鏀�
+	 * @param offset 鐩稿鐢插瓙鐨勫亸绉婚噺
+	 * @return Cn string
+	 */
+	toGanZhi: function(offset) {
+		return calendar.Gan[offset % 10] + calendar.Zhi[offset % 12];
+	},
+	/**
+	 * 浼犲叆鍏巻(!)y骞磋幏寰楄骞寸n涓妭姘旂殑鍏巻鏃ユ湡
+	 * @param y鍏巻骞�(1900-2100)锛沶浜屽崄鍥涜妭姘斾腑鐨勭鍑犱釜鑺傛皵(1~24)锛涗粠n=1(灏忓瘨)绠楄捣
+	 * @return day Number
+	 * @eg:let _24 = calendar.getTerm(1987,3) ;//_24=4;鎰忓嵆1987骞�2鏈�4鏃ョ珛鏄�
+	 */
+	getTerm: function(y, n) {
+		if (y < 1900 || y > 2100) {
+			return -1;
+		}
+		if (n < 1 || n > 24) {
+			return -1;
+		}
+		let _table = calendar.sTermInfo[y - 1900];
+		let _info = [
+			parseInt('0x' + _table.substr(0, 5)).toString(),
+			parseInt('0x' + _table.substr(5, 5)).toString(),
+			parseInt('0x' + _table.substr(10, 5)).toString(),
+			parseInt('0x' + _table.substr(15, 5)).toString(),
+			parseInt('0x' + _table.substr(20, 5)).toString(),
+			parseInt('0x' + _table.substr(25, 5)).toString()
+		];
+		let _calday = [
+			_info[0].substr(0, 1),
+			_info[0].substr(1, 2),
+			_info[0].substr(3, 1),
+			_info[0].substr(4, 2),
+			_info[1].substr(0, 1),
+			_info[1].substr(1, 2),
+			_info[1].substr(3, 1),
+			_info[1].substr(4, 2),
+			_info[2].substr(0, 1),
+			_info[2].substr(1, 2),
+			_info[2].substr(3, 1),
+			_info[2].substr(4, 2),
+			_info[3].substr(0, 1),
+			_info[3].substr(1, 2),
+			_info[3].substr(3, 1),
+			_info[3].substr(4, 2),
+			_info[4].substr(0, 1),
+			_info[4].substr(1, 2),
+			_info[4].substr(3, 1),
+			_info[4].substr(4, 2),
+			_info[5].substr(0, 1),
+			_info[5].substr(1, 2),
+			_info[5].substr(3, 1),
+			_info[5].substr(4, 2),
+		];
+		return parseInt(_calday[n - 1]);
+	},
+	/**
+	 * 浼犲叆鍐滃巻鏁板瓧鏈堜唤杩斿洖姹夎閫氫織琛ㄧず娉�
+	 * @param lunar month
+	 * @return Cn string
+	 * @eg:let cnMonth = calendar.toChinaMonth(12) ;//cnMonth='鑵婃湀'
+	 */
+	toChinaMonth: function(m) { // 鏈� => \u6708
+		if (m > 12 || m < 1) {
+			return -1
+		} //鑻ュ弬鏁伴敊璇� 杩斿洖-1
+		let s = calendar.nStr3[m - 1];
+		s += "\u6708"; //鍔犱笂鏈堝瓧
+		return s;
+	},
+	/**
+	 * 浼犲叆鍐滃巻鏃ユ湡鏁板瓧杩斿洖姹夊瓧琛ㄧず娉�
+	 * @param lunar day
+	 * @return Cn string
+	 * @eg:let cnDay = calendar.toChinaDay(21) ;//cnMonth='寤夸竴'
+	 */
+	toChinaDay: function(d) { //鏃� => \u65e5
+		let s;
+		switch (d) {
+			case 10:
+				s = '\u521d\u5341';
+				break;
+			case 20:
+				s = '\u4e8c\u5341';
+				break;
+				break;
+			case 30:
+				s = '\u4e09\u5341';
+				break;
+				break;
+			default:
+				s = calendar.nStr2[Math.floor(d / 10)];
+				s += calendar.nStr1[d % 10];
+		}
+		return (s);
+	},
+	/**
+	 * 骞翠唤杞敓鑲朳!浠呰兘澶ц嚧杞崲] => 绮剧‘鍒掑垎鐢熻倴鍒嗙晫绾挎槸鈥滅珛鏄モ��
+	 * @param y year
+	 * @return Cn string
+	 * @eg:let animal = calendar.getAnimal(1987) ;//animal='鍏�'
+	 */
+	getAnimal: function(y) {
+		return calendar.Animals[(y - 4) % 12]
+	},
+	/**
+	 * 浼犲叆闃冲巻骞存湀鏃ヨ幏寰楄缁嗙殑鍏巻銆佸啘鍘唎bject淇℃伅 <=>JSON
+	 * @param y solar year
+	 * @param m solar month
+	 * @param d solar day
+	 * @return JSON object
+	 * @eg:console.log(calendar.solar2lunar(1987,11,01));
+	 */
+	solar2lunar: function(y, m, d) { //鍙傛暟鍖洪棿1900.1.31~2100.12.31
+		if (y < 1900 || y > 2100) {
+			return -1;
+		} //骞翠唤闄愬畾銆佷笂闄�
+		if (y == 1900 && m == 1 && d < 31) {
+			return -1;
+		} //涓嬮檺
+		let objDate;
+		if (!y) { //鏈紶鍙� 鑾峰緱褰撳ぉ
+			 objDate = new Date();
+		} else {
+			 objDate = new Date(y, parseInt(m) - 1, d)
+		}
+		let i, leap = 0,
+			temp = 0;
+		//淇ymd鍙傛暟
+		y = objDate.getFullYear();
+		m = objDate.getMonth() + 1;
+		d = objDate.getDate();
+		let offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) /
+			86400000;
+		for (i = 1900; i < 2101 && offset > 0; i++) {
+			temp = calendar.lYearDays(i);
+			offset -= temp;
+		}
+		if (offset < 0) {
+			offset += temp;
+			i--;
+		}
+		//鏄惁浠婂ぉ
+		let isTodayObj = new Date(),
+			isToday = false;
+		if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) {
+			isToday = true;
+		}
+		//鏄熸湡鍑�
+		let nWeek = objDate.getDay(),
+			cWeek = calendar.nStr1[nWeek];
+		if (nWeek == 0) {
+			nWeek = 7;
+		} //鏁板瓧琛ㄧず鍛ㄥ嚑椤哄簲澶╂湞鍛ㄤ竴寮�濮嬬殑鎯緥
+		//鍐滃巻骞�
+		let year = i;
+		leap = calendar.leapMonth(i); //闂板摢涓湀
+		let isLeap = false;
+		//鏁堥獙闂版湀
+		for (i = 1; i < 13 && offset > 0; i++) {
+			//闂版湀
+			if (leap > 0 && i == (leap + 1) && isLeap == false) {
+				--i;
+				isLeap = true;
+				temp = calendar.leapDays(year); //璁$畻鍐滃巻闂版湀澶╂暟
+			} else {
+				temp = calendar.monthDays(year, i); //璁$畻鍐滃巻鏅�氭湀澶╂暟
+			}
+			//瑙i櫎闂版湀
+			if (isLeap == true && i == (leap + 1)) {
+				isLeap = false;
+			}
+			offset -= temp;
+		}
+		if (offset == 0 && leap > 0 && i == leap + 1)
+			if (isLeap) {
+				isLeap = false;
+			} else {
+				isLeap = true;
+				--i;
+			}
+		if (offset < 0) {
+			offset += temp;
+			--i;
+		}
+		//鍐滃巻鏈�
+		let month = i;
+		//鍐滃巻鏃�
+		let day = offset + 1;
+		//澶╁共鍦版敮澶勭悊
+		let sm = m - 1;
+		let gzY = calendar.toGanZhiYear(year);
+		//鏈堟煴 1900骞�1鏈堝皬瀵掍互鍓嶄负 涓欏瓙鏈�(60杩涘埗12)
+		let firstNode = calendar.getTerm(year, (m * 2 - 1)); //杩斿洖褰撴湀銆岃妭銆嶄负鍑犳棩寮�濮�
+		let secondNode = calendar.getTerm(year, (m * 2)); //杩斿洖褰撴湀銆岃妭銆嶄负鍑犳棩寮�濮�
+		//渚濇嵁12鑺傛皵淇骞叉敮鏈�
+		let gzM = calendar.toGanZhi((y - 1900) * 12 + m + 11);
+		if (d >= firstNode) {
+			gzM = calendar.toGanZhi((y - 1900) * 12 + m + 12);
+		}
+		//浼犲叆鐨勬棩鏈熺殑鑺傛皵涓庡惁
+		let isTerm = false;
+		let Term = null;
+		if (firstNode == d) {
+			isTerm = true;
+			Term = calendar.solarTerm[m * 2 - 2];
+		}
+		if (secondNode == d) {
+			isTerm = true;
+			Term = calendar.solarTerm[m * 2 - 1];
+		}
+		//鏃ユ煴 褰撴湀涓�鏃ヤ笌 1900/1/1 鐩稿樊澶╂暟
+		let dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10;
+		let gzD = calendar.toGanZhi(dayCyclical + d - 1);
+		//璇ユ棩鏈熸墍灞炵殑鏄熷骇
+		let astro = calendar.toAstro(m, d);
+		return {
+			'lYear': year,
+			'lMonth': month,
+			'lDay': day,
+			'Animal': calendar.getAnimal(year),
+			'IMonthCn': (isLeap ? "\u95f0" : '') + calendar.toChinaMonth(month),
+			'IDayCn': calendar.toChinaDay(day),
+			'cYear': y,
+			'cMonth': m,
+			'cDay': d,
+			'gzYear': gzY,
+			'gzMonth': gzM,
+			'gzDay': gzD,
+			'isToday': isToday,
+			'isLeap': isLeap,
+			'nWeek': nWeek,
+			'ncWeek': "\u661f\u671f" + cWeek,
+			'isTerm': isTerm,
+			'Term': Term,
+			'astro': astro
+		};
+	},
+	/**
+	 * 浼犲叆鍐滃巻骞存湀鏃ヤ互鍙婁紶鍏ョ殑鏈堜唤鏄惁闂版湀鑾峰緱璇︾粏鐨勫叕鍘嗐�佸啘鍘唎bject淇℃伅 <=>JSON
+	 * @param y lunar year
+	 * @param m lunar month
+	 * @param d lunar day
+	 * @param isLeapMonth lunar month is leap or not.[濡傛灉鏄啘鍘嗛棸鏈堢鍥涗釜鍙傛暟璧嬪�紅rue鍗冲彲]
+	 * @return JSON object
+	 * @eg:console.log(calendar.lunar2solar(1987,9,10));
+	 */
+	lunar2solar: function(y, m, d, isLeapMonth) { //鍙傛暟鍖洪棿1900.1.31~2100.12.1
+		isLeapMonth = !!isLeapMonth;
+		let leapOffset = 0;
+		let leapMonth = calendar.leapMonth(y);
+		let leapDay = calendar.leapDays(y);
+		if (isLeapMonth && (leapMonth != m)) {
+			return -1;
+		} //浼犲弬瑕佹眰璁$畻璇ラ棸鏈堝叕鍘� 浣嗚骞村緱鍑虹殑闂版湀涓庝紶鍙傜殑鏈堜唤骞朵笉鍚�
+		if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) {
+			return -1;
+		} //瓒呭嚭浜嗘渶澶ф瀬闄愬��
+		let day = calendar.monthDays(y, m);
+		let _day = day;
+		//bugFix 2016-9-25
+		//if month is leap, _day use leapDays method
+		if (isLeapMonth) {
+			_day = calendar.leapDays(y, m);
+		}
+		if (y < 1900 || y > 2100 || d > _day) {
+			return -1;
+		} //鍙傛暟鍚堟硶鎬ф晥楠�
+		//璁$畻鍐滃巻鐨勬椂闂村樊
+		let offset = 0;
+		for (let i = 1900; i < y; i++) {
+			offset += calendar.lYearDays(i);
+		}
+		let leap = 0,
+			isAdd = false;
+		for (let i = 1; i < m; i++) {
+			leap = calendar.leapMonth(y);
+			if (!isAdd) { //澶勭悊闂版湀
+				if (leap <= i && leap > 0) {
+					offset += calendar.leapDays(y);
+					isAdd = true;
+				}
+			}
+			offset += calendar.monthDays(y, i);
+		}
+		//杞崲闂版湀鍐滃巻 闇�琛ュ厖璇ュ勾闂版湀鐨勫墠涓�涓湀鐨勬椂宸�
+		if (isLeapMonth) {
+			offset += day;
+		}
+		//1900骞村啘鍘嗘鏈堜竴鏃ョ殑鍏巻鏃堕棿涓�1900骞�1鏈�30鏃�0鏃�0鍒�0绉�(璇ユ椂闂翠篃鏄湰鍐滃巻鐨勬渶寮�濮嬭捣濮嬬偣)
+		let stmap = Date.UTC(1900, 1, 30, 0, 0, 0);
+		let calObj = new Date((offset + d - 31) * 86400000 + stmap);
+		let cY = calObj.getUTCFullYear();
+		let cM = calObj.getUTCMonth() + 1;
+		let cD = calObj.getUTCDate();
+		return calendar.solar2lunar(cY, cM, cD);
+	}
+};
+
+export default {
+	solar2lunar: calendar.solar2lunar,
+	lunar2solar: calendar.lunar2solar
+};
\ No newline at end of file
diff --git a/minipro_standard/uni_modules/l-calendar/components/l-calendar/l-calendar.vue b/minipro_standard/uni_modules/l-calendar/components/l-calendar/l-calendar.vue
new file mode 100644
index 0000000..cd1ea4a
--- /dev/null
+++ b/minipro_standard/uni_modules/l-calendar/components/l-calendar/l-calendar.vue
@@ -0,0 +1,832 @@
+<template>
+	<view @touchmove.stop.prevent>
+		<view class="l-calendar-box" :class="{'calendar-box-show': value}">
+			<view class="calendar-top">
+				<view>{{title}}</view>
+				<view class="close l-icons icon-shanchu" hover-class="l-opacity" :hover-stay-time="150" @tap="hide">
+				</view>
+			</view>
+
+			<view class="date-box">
+				<view class=" date-arrowleft l-icons icon-youjiantou" :style="{ color: yearChangeColor }"
+					hover-class="l-opacity" :hover-stay-time="150"  @tap="changeYear(false)">
+				</view>
+				<view class=" date-arrowleft l-icons  icon-zuojiantou" :style="{ color: monthChangeColor }"
+					hover-class="l-opacity" :hover-stay-time="150" @tap="changeMonth(false)"></view>
+				<view class="title-datetime">{{ showTitle }}</view>
+				<view class=" date-arrowright l-icons icon-youjiantou2" :style="{ color: monthChangeColor }"
+					hover-class="l-opacity" :hover-stay-time="150" @tap="changeMonth(true)"></view>
+				<view class=" date-arrowright l-icons  icon-youjiantou1" :style="{ color: yearChangeColor }"
+					hover-class="l-opacity" :hover-stay-time="150"  @tap="changeYear(true)"></view>
+			</view>
+			<view class="date-weekday">
+				<view class="date-weekday-item">鏃�</view>
+				<view class="date-weekday-item">涓�</view>
+				<view class="date-weekday-item">浜�</view>
+				<view class="date-weekday-item">涓�</view>
+				<view class="date-weekday-item">鍥�</view>
+				<view class="date-weekday-item">浜�</view>
+				<view class="date-weekday-item">鍏�</view>
+			</view>
+			<view class="date-content" :style="{ height: dateHeight * 6 + 'px' }">
+				<block v-for="(item, index) in weekdayArr" :key="index">
+					<view class="date-weekday-item"></view>
+				</block>
+				<view class="date-weekday-item" :class="{
+						'l-opacity': isDisable(year, month, index + 1),
+						'start-date': (isRange && startDate == `${year}-${month}-${index + 1}`) || !isRange,
+						'end-date': (isRange && endDate == `${year}-${month}-${index + 1}`) || !isRange
+					}" :style="{ backgroundColor: getColor(index, 1), height: dateHeight + 'px',padding:0}"
+					v-for="(item, index) in daysArr" :key="index" @tap="dateClick(index)">
+					<view class="date-content-item" :style="{ color: getColor(index, 2) }">
+						<view>{{ index + 1 }}</view>
+						<!-- 鍐滃巻 -->
+						<view class="custom-desc">
+							{{ getText(index, startDate, endDate) }}
+						</view>
+					</view>
+					<view class="date-content-item-desc" :style="{ color: activeColor }"
+						v-if="!lunar && isRange && startDate == `${year}-${month}-${index + 1}` && startDate != endDate">
+						{{ startText }}
+					</view>
+					<view class="date-content-item-desc" :style="{ color: activeColor }"
+						v-if="!lunar && isRange && endDate == `${year}-${month}-${index + 1}`">{{ endText }}</view>
+				</view>
+				<view class="bg-mounth">{{ month }}</view>
+			</view>
+
+			<view class="calendar-text">
+				<!-- <view class="calendar-result">
+					<text>{{ !isRange ? activeDate : startDate }}</text>
+					<text v-if="endDate">鑷硔{ endDate }}</text>
+				</view> -->
+				<view class="calendar-btn">
+					<button :style="{opacity:disabled ? '.5' : '1'}" :size="28" :disabled="disabled"
+						@click="confireBtnClick(false)">纭畾
+					</button>
+				</view>
+			</view>
+		</view>
+
+		<view class="mask" :class="[value ? 'mask-show' : '']" @tap="hide"></view>
+	</view>
+</template>
+<script>
+	import calendar from './calendar.js';
+	export default {
+		name: 'lCalendar',
+		model: {
+			prop: 'value',
+			event: 'input'
+		},
+		props: {
+			//鍙屽悜缁戝畾鐨勫�� 鐢ㄤ簬灞曠ず/鍏抽棴鏃ュ巻
+			value: {
+				type: Boolean,
+				default: false
+			},
+      //鏄惁閫夋嫨鑼冨洿 true鏄� false閫夋嫨鍗曚釜鏃ユ湡
+      isRange: {
+      	type: Boolean,
+      	default: false
+      },
+			//鍙垏鎹㈡渶澶у勾浠�
+			maxYear: {
+				type: Number,
+				default: 2100
+			},
+			//鍙垏鎹㈡渶灏忓勾浠�
+			minYear: {
+				type: Number,
+				default: 1920
+			},
+			//鏈�灏忓彲閫夋棩鏈� 涓嶅湪鑼冨洿鍐呮棩鏈熺閫�
+			minDate: {
+				type: String,
+				default: '1920-01-01'
+			},
+			//鏈�澶у彲閫夋棩鏈�
+			maxDate: {
+				type: String,
+				default: '2100-1-1'
+			},
+      //缁勪欢鏍囬
+			title: {
+				type: String,
+				default: '鏃ユ湡閫夋嫨'
+			},
+			//鏈堜唤鍒囨崲绠ご棰滆壊
+			monthChangeColor: {
+				type: String,
+				default: '#999'
+			},
+			//骞翠唤鍒囨崲绠ご棰滆壊
+			yearChangeColor: {
+				type: String,
+				default: '#bfbfbf'
+			},
+			//榛樿鏃ユ湡瀛椾綋棰滆壊
+			color: {
+				type: String,
+				default: '#333'
+			},
+
+			//閫変腑鏃ユ湡瀛椾綋棰滆壊
+			activeColor: {
+				type: String,
+				default: '#fff'
+			},
+			//閫変腑鏃ユ湡鑳屾櫙鑹�
+			activeBgColor: {
+				type: String,
+				default: '#55BBF9'
+			},
+			//鑼冨洿鍐呮棩鏈熻儗鏅壊
+			rangeBgColor: {
+				type: String,
+				default: 'rgba(85, 187, 249, 0.1)'
+			},
+			//鑼冨洿鍐呮棩鏈熷瓧浣撻鑹�
+			rangeColor: {
+				type: String,
+				default: '#55BBF9'
+			},
+
+			//鑼冨洿閫夋嫨鏃剁敓鏁� 寮�濮嬫棩鏈熻嚜瀹氫箟鏂囧瓧
+			startText: {
+				type: String,
+				default: '寮�濮�'
+			},
+			//鑼冨洿閫夋嫨鏃剁敓鏁� 缁撴潫鏃ユ湡鑷畾涔夋枃瀛�
+			endText: {
+				type: String,
+				default: '缁撴潫'
+			},
+			//鏄惁鏄剧ず鍐滃巻
+			lunar: {
+				type: Boolean,
+				default: true
+			},
+			//鍒濆鍖栧紑濮嬮�変腑鏃ユ湡 鏍煎紡锛� 2020-06-06 鎴� 2020/06/06
+			initStartDate: {
+				type: String,
+				default: ''
+			},
+			//鍒濆鍖栫粨鏉熸棩鏈� 鏍煎紡锛� 2020-06-06 鎴� 2020/06/06
+			initEndDate: {
+				type: String,
+				default: ''
+			}
+		},
+		data() {
+			return {
+				weekday: 1, // 鏄熸湡鍑�,鍊间负1-7
+				weekdayArr: [],
+				days: 0, //褰撳墠鏈堟湁澶氬皯澶�
+				daysArr: [],
+				showTitle: '',//褰撳墠骞存湀鏍囬
+				year: 2020,
+				month: 0,
+				day: 0,
+				startYear: 0,
+				startMonth: 0,
+				startDay: 0,
+				endYear: 0,
+				endMonth: 0,
+				endDay: 0,
+				today: '', //浠婂ぉ鐨勬棩鏈�
+				activeDate: '', //褰撳墠閫変腑鏃ユ湡
+				startDate: '', //鑼冨洿閫夋嫨鏃剁殑閫変腑寮�濮嬫棩鏈�
+				endDate: '', //鑼冨洿閫夋嫨鏃剁殑閫変腑缁撴潫鏃ユ湡
+				isStart: true,
+				min: null,
+				max: null,
+				dateHeight: 20
+			};
+		},
+		computed: {
+			dataChange() {
+				return `${this.type}-${this.minDate}-${this.maxDate}-${this.initStartDate}-${this.initEndDate}`;
+			},
+			disabled() {
+				return this.isRange && (!this.startDate || !this.endDate)
+			}
+		},
+		watch: {
+			dataChange(val) {
+				this.init();
+			},
+		},
+		created() {
+			this.init();
+		},
+		methods: {
+			getColor(index, type) {
+				let color = type == 1 ? '' : this.color;
+				let day = index + 1;
+				let date = `${this.year}-${this.month}-${day}`;
+				let timestamp = new Date(date.replace(/\-/g, '/')).getTime();
+				let start = this.startDate.replace(/\-/g, '/');
+				let end = this.endDate.replace(/\-/g, '/');
+				if ((this.activeDate == date) || this.startDate == date || this.endDate == date) {
+					color = type == 1 ? this.activeBgColor : this.activeColor;
+				} else if (this.endDate && timestamp > new Date(start).getTime() && timestamp < new Date(end).getTime()) {
+					color = type == 1 ? this.rangeBgColor : this.rangeColor;
+				}
+				return color;
+			},
+			getText(index, startDate, endDate) {
+				let text = this.lunar ? this.getLunar(this.year, this.month, index + 1) : '';
+				if (this.isRange) {
+					if (this.lunar) {
+						let date = `${this.year}-${this.month}-${index + 1}`;
+						if (startDate == date && startDate != endDate) {
+							text = this.startText;
+						} else if (endDate == date) {
+							text = this.endText;
+						}
+					}
+				}
+				return text;
+			},
+			getLunar(year, month, day) {
+				let obj = calendar.solar2lunar(year, month, day);
+				if (obj.IDayCn == '鍒濅竴') {
+					return obj.IMonthCn
+				}
+				return obj.IDayCn;
+			},
+			init() {
+				this.dateHeight = uni.getSystemInfoSync().windowWidth / 7;
+				let now = new Date();
+				this.year = now.getFullYear();
+				this.month = now.getMonth() + 1;
+				this.day = now.getDate();
+				this.today = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()}`;
+				this.activeDate = this.today;
+				this.min = this.initDate(this.minDate);
+				this.max = this.initDate(this.maxDate);
+				if (this.isDisable(this.year, this.month, this.day)) {
+					this.year = this.min.year;
+					this.month = this.min.month;
+					this.day = this.min.day;
+					this.activeDate = `${this.min.year}-${this.min.month}-${this.min.day}`;
+					this.max = this.initDate(this.maxDate || this.minDate);
+				}
+				this.startDate = '';
+				this.startYear = 0;
+				this.startMonth = 0;
+				this.startDay = 0;
+				if (this.initStartDate) {
+					let start = new Date(this.initStartDate.replace(/\-/g, '/'));
+					if (!this.isRange) {
+						this.year = start.getFullYear();
+						this.month = start.getMonth() + 1;
+						this.day = start.getDate();
+						this.activeDate = `${start.getFullYear()}-${start.getMonth() + 1}-${start.getDate()}`;
+					} else {
+						this.startDate = `${start.getFullYear()}-${start.getMonth() + 1}-${start.getDate()}`;
+						this.startYear = start.getFullYear();
+						this.startMonth = start.getMonth() + 1;
+						this.startDay = start.getDate();
+						this.activeDate = '';
+					}
+
+				}
+				this.endYear = 0;
+				this.endMonth = 0;
+				this.endDay = 0;
+				this.endDate = '';
+				if (this.initEndDate && this.isRange) {
+					let end = new Date(this.initEndDate.replace(/\-/g, '/'));
+					this.endDate = `${end.getFullYear()}-${end.getMonth() + 1}-${end.getDate()}`;
+					this.endYear = end.getFullYear();
+					this.endMonth = end.getMonth() + 1;
+					this.endDay = end.getDate();
+					this.activeDate = '';
+					this.year = end.getFullYear();
+					this.month = end.getMonth() + 1;
+					this.day = end.getDate();
+				}
+				this.isStart = true;
+				this.changeData();
+			},
+			//鏃ユ湡澶勭悊
+			initDate(date) {
+				let dateArr = date.split('-');
+				return {
+					year: Number(dateArr[0] || 1920),
+					month: Number(dateArr[1] || 1),
+					day: Number(dateArr[2] || 1)
+				};
+			},
+			isDisable(year, month, day) {
+				let bool = true;
+				let date = `${year}/${month}/${day}`;
+				let min = `${this.min.year}/${this.min.month}/${this.min.day}`;
+				let max = `${this.max.year}/${this.max.month}/${this.max.day}`;
+				let timestamp = new Date(date).getTime();
+				if (timestamp >= new Date(min).getTime() && timestamp <= new Date(max).getTime()) {
+					bool = false;
+				}
+				return bool;
+			},
+			generateArray(start, end) {
+				return Array.from(new Array(end + 1).keys()).slice(start);
+			},
+			formatNum(num) {
+				return num < 10 ? '0' + num : num + '';
+			},
+			//涓�涓湀鏈夊灏戝ぉ
+			getMonthDay(year, month) {
+				let days = new Date(year, month, 0).getDate();
+				return days;
+			},
+			// 鑾峰彇褰撳墠鏃ユ湡鏄槦鏈熷嚑
+			getWeekday(year, month) {
+				let date = new Date(`${year}/${month}/01 00:00:00`);
+				return date.getDay();
+			},
+			changeMonth(isAdd) {
+				if (isAdd) {
+					let month = this.month + 1;
+					let year = month > 12 ? this.year + 1 : this.year;
+					if (year > this.minYear || year < this.maxYear) {
+						this.month = month > 12 ? 1 : month;
+						this.year = year;
+						this.changeData();
+					}
+				} else {
+					let month = this.month - 1;
+					let year = month < 1 ? this.year - 1 : this.year;
+					if (year > this.minYear || year < this.maxYear) {
+						this.month = month < 1 ? 12 : month;
+						this.year = year;
+						this.changeData();
+					}
+				}
+			},
+			changeYear(isAdd) {
+				let year = isAdd ? this.year + 1 : this.year - 1;
+				if (year > this.minYear || year < this.maxYear) {
+					this.year = year;
+					this.changeData();
+				}
+			},
+			changeData() {
+				this.days = this.getMonthDay(this.year, this.month);
+				this.daysArr = this.generateArray(1, this.days);
+				this.weekday = this.getWeekday(this.year, this.month);
+				this.weekdayArr = this.generateArray(1, this.weekday);
+				this.showTitle = `${this.year}骞�${this.month}鏈坄;
+				if (!this.isRange) {
+					this.confireBtnClick(true);
+				}
+			},
+			dateClick: function(day) {
+				day += 1;
+				if (!this.isDisable(this.year, this.month, day)) {
+					this.day = day;
+					let date = `${this.year}-${this.month}-${day}`;
+					if (!this.isRange) {
+						this.activeDate = date;
+					} else {
+						let compare = new Date(date.replace(/\-/g, '/')).getTime() < new Date(this.startDate.replace(
+							/\-/g, '/')).getTime();
+						if (this.isStart || compare) {
+							this.startDate = date;
+							this.startYear = this.year;
+							this.startMonth = this.month;
+							this.startDay = this.day;
+							this.endYear = 0;
+							this.endMonth = 0;
+							this.endDay = 0;
+							this.endDate = '';
+							this.activeDate = '';
+							this.isStart = false;
+						} else {
+							this.endDate = date;
+							this.endYear = this.year;
+							this.endMonth = this.month;
+							this.endDay = this.day;
+							this.isStart = true;
+						}
+					}
+				}
+			},
+			hide() {
+				this.$emit('input', false)
+			},
+			getWeekText(date) {
+				date = new Date(`${date.replace(/\-/g, '/')} 00:00:00`);
+				let week = date.getDay();
+				return '鏄熸湡' + ['鏃�', '涓�', '浜�', '涓�', '鍥�', '浜�', '鍏�'][week];
+			},
+			confireBtnClick(show) {
+				if (!show) {
+					this.hide();
+				}
+				if (!this.isRange) {
+					let arr = this.activeDate.split('-');
+					let year = +arr[0];
+					let month = +arr[1];
+					let day = +arr[2];
+					//褰撳墠鏈堟湁澶氬皯澶�
+					let days = this.getMonthDay(year, month);
+					let result = `${year}-${this.formatNum(month)}-${this.formatNum(day)}`;
+					let weekText = this.getWeekText(result);
+					let isToday = false;
+					if (`${year}-${month}-${day}` == this.today) {
+						//浠婂ぉ
+						isToday = true;
+					}
+					let lunar = calendar.solar2lunar(year, month, day);
+					this.$emit('change', {
+						year: year,
+						month: month,
+						day: day,
+						days: days,
+						result: result,
+						week: weekText,
+						isToday: isToday,
+						lunar: lunar
+					});
+				} else {
+					if (!this.startDate || !this.endDate) return;
+					let startMonth = this.formatNum(this.startMonth);
+					let startDay = this.formatNum(this.startDay);
+					let startDate = `${this.startYear}-${startMonth}-${startDay}`;
+					let startWeek = this.getWeekText(startDate);
+					let startLunar = calendar.solar2lunar(this.startYear, startMonth, startDay);
+
+					let endMonth = this.formatNum(this.endMonth);
+					let endDay = this.formatNum(this.endDay);
+					let endDate = `${this.endYear}-${endMonth}-${endDay}`;
+					let endWeek = this.getWeekText(endDate);
+					let endLunar = calendar.solar2lunar(this.endYear, endMonth, endDay);
+					this.$emit('change', {
+						startYear: this.startYear,
+						startMonth: this.startMonth,
+						startDay: this.startDay,
+						startDate: startDate,
+						startWeek: startWeek,
+						startLunar: startLunar,
+						endYear: this.endYear,
+						endMonth: this.endMonth,
+						endDay: this.endDay,
+						endDate: endDate,
+						endWeek: endWeek,
+						endLunar: endLunar
+					});
+				}
+			}
+		}
+	};
+</script>
+
+<style lang="scss" scoped>
+	@font-face {
+		font-family: 'l-icons';
+		src: url('data:font/ttf;charset=utf-8;base64,AAEAAAANAIAAAwBQRkZUTZa9XzsAAAjcAAAAHEdERUYAKQAOAAAIvAAAAB5PUy8yPDVJwwAAAVgAAABgY21hcMxRtw0AAAHUAAABYmdhc3D//wADAAAItAAAAAhnbHlm05h+ZAAAA0wAAAJ8aGVhZCQifFoAAADcAAAANmhoZWEHyAOSAAABFAAAACRobXR4EnYBLQAAAbgAAAAcbG9jYQKkAegAAAM4AAAAEm1heHABFgBMAAABOAAAACBuYW1lXoIBAgAABcgAAAKCcG9zdMeZtAYAAAhMAAAAaAABAAAAAQAA+jMzTF8PPPUACwQAAAAAAOCMnBkAAAAA4IycGQAA/6sD6gOAAAAACAACAAAAAAAAAAEAAAOA/4AAXAQLAAAAAAPqAAEAAAAAAAAAAAAAAAAAAAAGAAEAAAAIAEAABAAAAAAAAgAAAAoACgAAAP8AAAAAAAAABAQEAZAABQAAAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZADA5gDm8AOA/4AAAAPcAIAAAAABAAAAAAAAAAAAAAAgAAEEAAAAAAAAAAFVAAAECwAWBAsAHgQAAPkBCwAAAAAAAwAAAAMAAAAcAAEAAAAAAFwAAwABAAAAHAAEAEAAAAAMAAgAAgAE5gDmB+Yf5iPm8P//AADmAOYH5h/mI+bw//8aAxn9GeYZ4xkXAAEAAAAAAAAAAAAAAAAAAAEGAAABAAAAAAAAAAECAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByAOAA9AEIAT4AAAAEABb/wQPiA0sAIQAkAD4APwAAAQYUFwEWHwE3Njc2JyYnJicBJwE2NzY3NicmJzEuAQYHCQE3ByU+ATc2JwEnNwE2Jy4BDwEGBw4BFwEWHwE3MQHuFhYBcRIZDAwvDQQDAwsFBf7IBQE3DgUJAgICAQQLLDET/o8BqAwM/kUbJwEBGf7HBgYBOhwGB1MiabFZFwEXAXESGAoJAbkWQxf+kBIEAgIKLQ8TDw4HBAE5BAE3DQgNDRINBQkYGAcT/o/+CAICAQIqGyIZATkEBQE6HCUsHh5psVgXRBf+kBIEAgEAAAAEAB7/tQPqAz8AIAAiADwAPQAAATY0JwEmLwEHBgcGFxYXFhcBFwEGBwYHBhcWFzEeATY3AwclDgEHBhcBFwcBBhceAT8BNjc+AScBJi8BBzECEhYW/o8SGQwMLw0EAwMLBQUBOAX+yQ4FCQICAgEECywxEzcMAccbJwEBGQE5Bgb+xhwGB1MiabFZFwEX/o8SGAoJAUcWQxcBcBIEAgIKLQ8TDw4HBP7HBP7JDQgNDRINBQkYGAcTA2kCAQIqGyIZ/scEBf7GHCUsHh5psVgXRBcBcBIEAgEAAAAAAQD5/68DSQOAAAUAADcXCQEHAflnAen+F2cBghZnAekB6Gf+fwAAAAEBC/+rAxgDVQAFAAAJARcJAQcBCwG9UP6JAWJRAYEB1Ez+dv52SgABAAD/sAPOA4AAGwAACQEWFAYiJwkBBiImNDcJASY0NjIXCQE2MhYUBwJPAWoVKzwW/pb+lhY8KxUBa/6VFSs8FgFqAWoWPCsVAZj+lRU9KxUBa/6VFSs9FQFrAWsVPSsV/pUBaxUrPRUAAAAAABIA3gABAAAAAAAAABMAKAABAAAAAAABAAgATgABAAAAAAACAAcAZwABAAAAAAADAAgAgQABAAAAAAAEAAgAnAABAAAAAAAFAAsAvQABAAAAAAAGAAgA2wABAAAAAAAKACsBPAABAAAAAAALABMBkAADAAEECQAAACYAAAADAAEECQABABAAPAADAAEECQACAA4AVwADAAEECQADABAAbwADAAEECQAEABAAigADAAEECQAFABYApQADAAEECQAGABAAyQADAAEECQAKAFYA5AADAAEECQALACYBaABDAHIAZQBhAHQAZQBkACAAYgB5ACAAaQBjAG8AbgBmAG8AbgB0AABDcmVhdGVkIGJ5IGljb25mb250AABpAGMAbwBuAGYAbwBuAHQAAGljb25mb250AABSAGUAZwB1AGwAYQByAABSZWd1bGFyAABpAGMAbwBuAGYAbwBuAHQAAGljb25mb250AABpAGMAbwBuAGYAbwBuAHQAAGljb25mb250AABWAGUAcgBzAGkAbwBuACAAMQAuADAAAFZlcnNpb24gMS4wAABpAGMAbwBuAGYAbwBuAHQAAGljb25mb250AABHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAABHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuAABoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAABodHRwOi8vZm9udGVsbG8uY29tAAAAAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAEAAgECAQMBBAEFAQYKeW91amlhbnRvdQt5b3VqaWFudG91MQt5b3VqaWFudG91Mgp6dW9qaWFudG91B3NoYW5jaHUAAAAB//8AAgABAAAADAAAABYAAAACAAEAAwAHAAEABAAAAAIAAAAAAAAAAQAAAADVpCcIAAAAAOCMnBkAAAAA4IycGQ==') format('truetype');
+		font-weight: normal;
+		font-style: normal;
+		font-display: swap;
+	}
+
+	.l-icons {
+		font-family: 'l-icons';
+		font-size: 38rpx;
+		color: #333333;
+		font-style: normal;
+		-webkit-font-smoothing: antialiased;
+		-moz-osx-font-smoothing: grayscale
+	}
+
+	.icon-shanchu:before {
+		content: "\e6f0";
+	}
+
+	.icon-youjiantou:before {
+		content: "\e600";
+	}
+
+	.icon-zuojiantou:before {
+		content: "\e623";
+	}
+
+	.icon-youjiantou1:before {
+		content: "\e607";
+	}
+
+	.icon-youjiantou2:before {
+		content: "\e61f";
+	}
+	
+	.l-calendar-box {
+		width: 100%;
+		position: fixed;
+		left: 0;
+		right: 0;
+		bottom: 0;
+		z-index: 9999;
+		visibility: hidden;
+		transform: translate3d(0, 100%, 0);
+		transform-origin: center;
+		transition: all 0.3s ease-in-out;
+		min-height: 20rpx;
+		
+		.calendar-top {
+			width: 100%;
+			height: 80rpx;
+			padding: 0 40rpx;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			box-sizing: border-box;
+			font-size: 30rpx;
+			font-weight: bold;
+			background-color: #fff;
+			color: #333;
+			position: relative;
+			border-top-left-radius: 20rpx;
+			border-top-right-radius: 20rpx;
+			overflow: hidden;
+			.close {
+				position: absolute;
+				right: 30rpx;
+				top: 50%;
+				transform: translateY(-50%);
+				color: #999;
+			
+			}
+		}
+		
+		.date-box {
+			width: 100%;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			padding: 20rpx 0 30rpx;
+			background-color: #fff;
+			.date-arrowleft {
+				margin-right: 32rpx;
+			}
+			
+			.date-arrowright {
+				margin-left: 32rpx;
+			}
+			
+			.title-datetime {
+				padding: 0 16rpx;
+				color: #333;
+				font-size: 30rpx;
+				line-height: 30rpx;
+				font-weight: bold;
+			}
+		}
+		
+		.date-weekday {
+			width: 100%;
+			display: flex;
+			align-items: center;
+			background-color: #fff;
+			font-size: 24rpx;
+			line-height: 24rpx;
+			color: #555;
+			box-shadow: 0 15rpx 20rpx -15rpx #efefef;
+			position: relative;
+			z-index: 2;
+			.date-weekday-item {
+				width: 14.2857%;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				padding: 12rpx 0;
+				overflow: hidden;
+				position: relative;
+				z-index: 2;
+			}
+		}
+		.date-content {
+			width: 100%;
+			display: flex;
+			flex-wrap: wrap;
+			padding: 12rpx 0;
+			box-sizing: border-box;
+			background-color: #fff;
+			position: relative;
+			align-content: flex-start;
+			.date-weekday-item {
+				width: 14.2857%;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				padding: 12rpx 0;
+				overflow: hidden;
+				position: relative;
+				z-index: 2;
+				
+				.date-content-item {
+					width: 80rpx;
+					height: 80rpx;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					flex-direction: column;
+					font-size: 32rpx;
+					line-height: 32rpx;
+					position: relative;
+					border-radius: 50%;
+					background-color: transparent;
+					.custom-desc {
+						width: 100%;
+						font-size: 24rpx;
+						line-height: 24rpx;
+						transform: scale(0.8);
+						transform-origin: center center;
+						text-align: center;
+					}
+					
+				}
+				.date-content-item-desc {
+					width: 100%;
+					font-size: 24rpx;
+					line-height: 24rpx;
+					position: absolute;
+					left: 0;
+					transform: scale(0.8);
+					transform-origin: center center;
+					text-align: center;
+					bottom: 8rpx;
+					z-index: 2;
+				}
+			}
+			.start-date {
+				border-top-left-radius: 8rpx;
+				border-bottom-left-radius: 8rpx;
+			}
+			
+			.end-date {
+				border-top-right-radius: 8rpx;
+				border-bottom-right-radius: 8rpx;
+			}
+			
+			.bg-mounth {
+				position: absolute;
+				font-size: 260rpx;
+				line-height: 260rpx;
+				left: 50%;
+				top: 50%;
+				transform: translate(-50%, -50%);
+				color: #f5f5f7;
+				z-index: 1;
+			}
+		}
+		
+		
+		.calendar-text {
+			width: 100%;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			flex-direction: column;
+			background-color: #fff;
+			padding: 0 42rpx env(safe-area-inset-bottom);
+			box-sizing: border-box;
+			font-size: 24rpx;
+			color: #666;
+			.calendar-result {
+				height: 48rpx;
+				transform: scale(0.9);
+				transform-origin: center 100%;
+			}
+			
+			.calendar-btn {
+				width: 100%;
+			
+				button {
+					background-color: #305ED5;
+					color: #fff;
+					height: 72rpx;
+					line-height: 72rpx;
+					font-size: 32rpx
+				}
+			}
+		}
+		
+		
+		
+	}
+	.mask {
+		position: fixed;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
+		background: rgba(0, 0, 0, 0.6);
+		z-index: 9996;
+		transition: all 0.3s ease-in-out;
+		opacity: 0;
+		visibility: hidden;
+	}
+	
+	.mask-show {
+		opacity: 1;
+		visibility: visible;
+	}
+
+	/* @font-face {
+		font-family: 'tuiDateFont';
+		src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAVgAA0AAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAFRAAAABoAAAAci0/w50dERUYAAAUkAAAAHgAAAB4AKQANT1MvMgAAAaAAAABDAAAAVjxuSNNjbWFwAAAB+AAAAEoAAAFS5iPQt2dhc3AAAAUcAAAACAAAAAj//wADZ2x5ZgAAAlQAAAFHAAABvPf29TBoZWFkAAABMAAAADAAAAA2GMsN3WhoZWEAAAFgAAAAHQAAACQHjAOFaG10eAAAAeQAAAATAAAAFgzQAPJsb2NhAAACRAAAABAAAAAQAOoBSG1heHAAAAGAAAAAHgAAACABEwA3bmFtZQAAA5wAAAFJAAACiCnmEVVwb3N0AAAE6AAAADQAAABLUwjqHHjaY2BkYGAAYp5Gj5/x/DZfGbhZGEDg1tUn7+F00P/LzOuY9YFcDgYmkCgAa0gNlHjaY2BkYGBu+N/AEMPCAALM6xgYGVABCwBT4AMaAAAAeNpjYGRgYGBn0GZgYgABEMkFhAwM/8F8BgANaAFLAAB42mNgZGFgnMDAysDA1Ml0hoGBoR9CM75mMGLkAIoysDIzYAUBaa4pDA7PGJ49ZG7438AQw9zA0AAUZgTJAQDrcAy8AHjaY2GAABYIDgLCBQx1AAcEAc8AeNpjYGBgZoBgGQZGBhDwAfIYwXwWBgMgzQGETAwMzxifcTx7+P8/kMUAYUkxS/6VVIXqAgNGNgY4lxGoB6QPBTAyDHsAADDkDYkAAAAAAAAAAAAAADQAagC2AN542m2QsU7DMBCG/Tt1bNPUiUnkSgiVtqKpxJAgVLVbeAa6MaK+B4JXgJWBjY21UtW5gpkdMTFX7dzApaJLhXU6n8+n//ttxtn458N79XJWZ8eMxS00C4wy9A1EP8PQncAlIQzS4WgsVtPpSmwzV3OFRqLetH5TSQMK939X61ptPZ2p2EAttNMLBRMrtschQblDeS34aY50cIkCzg/B2Y5C+VpyQxhFkRgu515O8jvU5mmPM2O0wJ5Z27vhX+yMsV437WvCdTM+GI40MgwKfuGammC0uURqeqFMfe9cxaJclkt5GMaB1hIR1VobOgpEiKq+sLZcIrJWhO3/Jw7qWlYj1Jf21FaCtmd5bevrlk28O/7A4spXTl4KTh9MTlqQ8PESBRstReic+sRj0Dni9fIqmNS/pXNWCvWOeYBmx5S9Bsn9Ah+5WtAAeNp9kD1OAzEQhZ/zByQSQiCoXVEA2vyUKRMp9Ailo0g23pBo1155nUg5AS0VB6DlGByAGyDRcgpelkmTImvt6PObmeexAZzjGwr/3yXuhBWO8ShcwREy4Sr1F+Ea+V24jhY+hRvUf4SbuFUD4RYu1BsdVO2Eu5vSbcsKZxgIV3CKJ+Eq9ZVwjfwqXMcVPoQb1L+EmxjjV7iFa2WpDOFhMEFgnEFjig3jAjEcLJIyBtahOfRmEsxMTzd6ETubOBso71dilwMeaDnngCntPbdmvkon/mDLgdSYbh4FS7YpjS4idCgbXyyc1d2oc7D9nu22tNi/a4E1x+xRDWzU/D3bM9JIbAyvkJI18jK3pBJTj2hrrPG7ZynW814IiU68y/SIx5o0dTr3bmniwOLn8owcfbS5kj33qBw+Y1kIeb/dTsQgil2GP5PYcRkAAAB42mNgYoAALjDJyIAO2MGiTIxMjMyMLIys7GmJeRmlmWZQ2pQ5OSORLaU0Mz2/FACDfwlbAAAAAf//AAIAAQAAAAwAAAAWAAAAAgABAAMABgABAAQAAAACAAAAAHjaY2BgYGQAgqtL1DlA9K2rT97DaABNlwiuAAA=) format('woff');
+		font-weight: normal;
+		font-style: normal;
+	}
+
+	.tui-iconfont {
+		font-family: 'tuiDateFont' !important;
+		font-size: 36rpx;
+		font-style: normal;
+		-webkit-font-smoothing: antialiased;
+		-moz-osx-font-smoothing: grayscale;
+	}
+
+	.tui-font-close:before {
+		content: '\e608';
+	}
+
+	.tui-font-check:before {
+		content: '\e6e1';
+	}
+
+	.date-arrowright:before {
+		content: '\e600';
+	}
+
+	.date-arrowleft:before {
+		content: '\e601';
+	} */
+
+	
+	// .calendar-radius {
+	// 	border-top-left-radius: 20rpx;
+	// 	border-top-right-radius: 20rpx;
+	// 	overflow: hidden;
+	// }
+
+	
+
+	
+
+	
+
+	
+
+
+	
+
+	
+
+
+	
+
+	
+
+	.tui-btn-calendar {
+		padding: 16rpx;
+		box-sizing: border-box;
+		text-align: center;
+		text-decoration: none;
+	}
+
+	.l-opacity {
+		opacity: 0.5;
+	}
+
+	
+
+	.calendar-box-show {
+		transform: translate3d(0, 0, 0);
+		visibility: visible;
+	}
+
+	
+
+	
+
+
+
+	
+
+	// .tui-lunar-unshow {
+	// 	position: absolute;
+	// 	left: 0;
+	// 	bottom: 8rpx;
+	// 	z-index: 2;
+	// }
+
+	
+
+	
+
+	
+</style>
diff --git a/minipro_standard/uni_modules/l-calendar/package.json b/minipro_standard/uni_modules/l-calendar/package.json
new file mode 100644
index 0000000..7a0b99d
--- /dev/null
+++ b/minipro_standard/uni_modules/l-calendar/package.json
@@ -0,0 +1,84 @@
+{
+  "id": "l-calendar",
+  "displayName": "鏃ュ巻 鏃ユ湡閫夋嫨 閫夋嫨骞存湀鏃�",
+  "version": "1.0.3",
+  "description": "鏃ュ巻 鏃ユ湡閫夋嫨 閫夋嫨骞存湀鏃� 浠呮祴杩囧皬绋嬪簭鍏朵粬鑷祴",
+  "keywords": [
+    "鏃ュ巻",
+    "鏃ユ湡閫夋嫨",
+    "閫夋嫨骞存湀鏃�",
+    "骞存湀鏃�",
+    "l-calendar"
+],
+  "repository": "",
+"engines": {
+  },
+  "dcloudext": {
+    "type": "component-vue",
+    "sale": {
+      "regular": {
+        "price": "0.00"
+      },
+      "sourcecode": {
+        "price": "0.00"
+      }
+    },
+    "contact": {
+      "qq": ""
+    },
+    "declaration": {
+      "ads": "鏃�",
+      "data": "鎻掍欢涓嶉噰闆嗕换浣曟暟鎹�",
+      "permissions": "鏃�"
+    },
+    "npmurl": ""
+  },
+  "uni_modules": {
+    "dependencies": [],
+    "encrypt": [],
+    "platforms": {
+      "cloud": {
+        "tcb": "y",
+        "aliyun": "y"
+      },
+      "client": {
+        "Vue": {
+          "vue2": "y",
+          "vue3": "y"
+        },
+        "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",
+          "椋炰功": "y",
+          "浜笢": "y"
+        },
+        "蹇簲鐢�": {
+          "鍗庝负": "y",
+          "鑱旂洘": "y"
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/minipro_standard/uni_modules/l-calendar/readme.md b/minipro_standard/uni_modules/l-calendar/readme.md
new file mode 100644
index 0000000..441bf60
--- /dev/null
+++ b/minipro_standard/uni_modules/l-calendar/readme.md
@@ -0,0 +1,40 @@
+# l-calendar
+
+# ## 浣跨敤鏂规硶
+閰嶇疆easycom瑙勫垯鍚庯紝鑷姩鎸夐渶寮曞叆锛屾棤闇�`import`缁勪欢锛岀洿鎺ュ紩鐢ㄥ嵆鍙��
+
+```html
+<template>
+	<l-calendar v-model="show" @change="change" :isRange="true"></l-calendar>
+</template>
+```
+## 缁勪欢灞炴��
+
+| 灞炴�� | 绫诲瀷 | 榛樿鍊� | 璇存槑 |
+|:---:|:---:|:---:|---|
+| value | Boolean | false | v-module 鍙屽悜缁戝畾鐨勫�� |
+| isRange | Boolean | false | 鏄惁閫夋嫨鑼冨洿 true鏄�  false閫夋嫨鍗曚釜鏃ユ湡 |
+| maxYear | Number | 2100 | 鍙垏鎹㈡渶澶у勾浠� |
+| minYear | Number | 1920 | 鍙垏鎹㈡渶灏忓勾浠� |
+| minDate | String | '1920-01-01' | 鏈�灏忓彲閫夋棩鏈� 涓嶅湪鑼冨洿鍐呮棩鏈熺閫� |
+| maxDate | String | '2100-1-1' | 鏈�澶у彲閫夋棩鏈� 涓嶅湪鑼冨洿鍐呮棩鏈熺閫� |
+| title | String | '鏃ユ湡閫夋嫨' | 缁勪欢鏍囬 |
+| monthChangeColor | String | #999 | 鏈堜唤鍒囨崲绠ご棰滆壊 |
+| yearChangeColor | String | '#bfbfbf' | 骞翠唤鍒囨崲绠ご棰滆壊 |
+| color | String | #333 | 榛樿鏃ユ湡瀛椾綋棰滆壊 |
+| activeColor | String | '#fff' | 閫変腑鏃ユ湡瀛椾綋棰滆壊 |
+| activeBgColor | String | '#55BBF9' | 閫変腑鏃ユ湡鑳屾櫙鑹� |
+| rangeBgColor | String | rgba(85, 187, 249, 0.1) | 鑼冨洿鍐呮棩鏈熻儗鏅壊 |
+| startText | String | 寮�濮� | 鑼冨洿閫夋嫨鏃剁敓鏁� 寮�濮嬫棩鏈熻嚜瀹氫箟鏂囧瓧 |
+| endText | String | 缁撴潫 | 鑼冨洿閫夋嫨鏃剁敓鏁� 缁撴潫鏃ユ湡鑷畾涔夋枃瀛� |
+| lunar | Boolean | true | 鏄惁鏄剧ず鍐滃巻 |
+| initStartDate | String | '' | 鍒濆鍖栧紑濮嬮�変腑鏃ユ湡 鏍煎紡锛� 2020-06-06 鎴� 2020/06/06 |
+| initEndDate | String | '' | 鍒濆鍖栧紑濮嬮�変腑鏃ユ湡 鏍煎紡锛� 2020-06-06 鎴� 2020/06/06 |
+
+
+## 缁勪欢浜嬩欢
+
+| 鍚嶇О | 瑙﹀彂鏃舵満 |
+|:---:|---|
+| change | 鐐瑰嚮纭畾鎸夐挳閫夋嫨鏃ユ湡 |
+

--
Gitblit v1.9.3