From 07401392be0115d291e64471325fcc4c17ba2be9 Mon Sep 17 00:00:00 2001
From: wjt <1797368093@qq.com>
Date: 星期五, 21 六月 2024 15:26:35 +0800
Subject: [PATCH] 图片压缩

---
 common/http.interceptor.js                                                       |    2 
 policy/components/index.vue                                                      |  124 ++
 uni_modules/yt-dateTimePicker/components/yt-dateTimePicker/yt-dateTimePicker.vue |  339 ++++++++
 static/policy/zhi4.png                                                           |    0 
 policy/policyIndex/policyIndex.vue                                               |   23 
 static/policy/zhi3.png                                                           |    0 
 policy/policyApply/policyApply.vue                                               |  152 ++-
 uni_modules/yt-dateTimePicker/package.json                                       |   76 +
 components/lingfeng-timepicker/uitls/util.js                                     |  163 ++++
 pages/companyLogin/companyLogin.vue                                              |    6 
 policy/policyApply/perPage.vue                                                   |   87 ++
 static/i03.png                                                                   |    0 
 policy/applyRecordDetails/applyRecordDetails.vue                                 |   59 
 components/lingfeng-timepicker/lingfeng-timepicker.vue                           |  980 ++++++++++++++++++++++++
 policy/applyRecord/applyRecord.vue                                               |  102 +-
 api/policy.js                                                                    |   19 
 static/policy/zhi1.png                                                           |    0 
 static/policy/back.png                                                           |    0 
 static/i04.png                                                                   |    0 
 policy/components/mine.vue                                                       |   15 
 static/policy/zhi5.png                                                           |    0 
 /dev/null                                                                        |   20 
 api/auth.js                                                                      |    4 
 uni_modules/yt-dateTimePicker/readme.md                                          |   85 ++
 static/policy/zhi2.png                                                           |    0 
 static/head.png                                                                  |    0 
 uni_modules/yt-dateTimePicker/changelog.md                                       |   92 ++
 static/policy/qrcode-border.png                                                  |    0 
 28 files changed, 2,157 insertions(+), 191 deletions(-)

diff --git a/api/auth.js b/api/auth.js
index 72195ac..db38798 100644
--- a/api/auth.js
+++ b/api/auth.js
@@ -25,3 +25,7 @@
 export function getCompanyInfo(data) {
 	return http.get(`/system/company/${data.companyId}`, {params: data});
 }
+// 鏌ヨ鎯犱紒鏀跨瓥
+export function docList(data) {
+	return http.get(`/system/doc/list`, {params: data});
+}
\ No newline at end of file
diff --git a/api/policy.js b/api/policy.js
index 9c02bdb..8021a4b 100644
--- a/api/policy.js
+++ b/api/policy.js
@@ -8,4 +8,23 @@
 // 鏌ヨ浼佷笟 
 export function companyList(data){
 	return http.get('/system/company/list', {params: data}, { custom: { loading: true }});
+}
+
+// 鎵ф硶浜哄憳 /enforce/peer/list
+export function enforceList(data) {
+	return http.get('/enforce/order/peerList', {params: data}, { custom: { loading: true }});
+}
+// 鐢宠璁板綍 
+
+export function orderList(data) {
+	return http.get('/enforce/order/list', {params: data}, { custom: { loading: true }});
+}
+// 鑾峰彇鎵ф硶鍗� 璇︽儏 /enforce/order/{orderId}
+export function orderDetails(data) {
+	return http.get(`/enforce/order/${data.orderId}`, {params: data}, { custom: { loading: true }});
+}
+// 鎵ф硶瀹℃壒 
+
+export function checkLogList(data) {
+	return http.get(`/enforce/check/log/list`, {params: data}, { custom: { loading: true }});
 }
\ No newline at end of file
diff --git a/common/http.interceptor.js b/common/http.interceptor.js
index 9099a99..6e49d92 100644
--- a/common/http.interceptor.js
+++ b/common/http.interceptor.js
@@ -60,7 +60,7 @@
 				// vm.$u.vuex('userInfo', null)
 				// vm.$u.vuex('token', null)
 				// uni.removeStorageSync("sessionToken")
-				uni.clearStorageSync() // 娓呮鎵�鏈夌殑缂撳瓨
+				// uni.clearStorageSync() // 娓呮鎵�鏈夌殑缂撳瓨
 				uni.showToast({
 					title: '鎺堟潈杩囨湡,璇烽噸鏂扮櫥褰�',
 					icon: 'none',
diff --git a/components/customerForm.vue b/components/customerForm.vue
deleted file mode 100644
index 471abc6..0000000
--- a/components/customerForm.vue
+++ /dev/null
@@ -1,20 +0,0 @@
-<template>
-	<view>
-		
-	</view>
-</template>
-
-<script>
-	export default {
-		name:"customerForm",
-		data() {
-			return {
-				
-			};
-		}
-	}
-</script>
-
-<style>
-
-</style>
\ No newline at end of file
diff --git a/components/lingfeng-timepicker/lingfeng-timepicker.vue b/components/lingfeng-timepicker/lingfeng-timepicker.vue
new file mode 100644
index 0000000..87166e2
--- /dev/null
+++ b/components/lingfeng-timepicker/lingfeng-timepicker.vue
@@ -0,0 +1,980 @@
+<template>
+	<uni-popup ref="popup" type="bottom" :safe-area="safeArea" @change="popChange">
+		<view class="date-time-picker" v-if="showPopPicker">
+			<!-- <view class="date-time-mask" @click.stop="hide"></view> -->
+			<view class="date-time-container" :class="{'safe-area-padding':!safeArea}" @click.stop="handleEvent">
+				<view class="time-picker-tool">
+					<view class="cancel-base" :class="[cancelButtonClass]" @click.stop="close">
+						<text>{{cancelButtonText}}</text>
+					</view>
+					<view :class="[toolBarTitleClass]">
+						<text>{{toolBarTitle}}</text>
+					</view>
+					<view class="confirm-base" :class="[confirmButtonClass]" @click.stop="confirm">
+						<text>{{confirmButtonText}}</text>
+					</view>
+				</view>
+				<view class="picker-tab" v-if="isShowRange">
+					<view @click="dateTabChange(1)" class="picker-tab-item" :style="[rangeBtnStyle,dateTab==1?rangeBtnActiveStyle:'']"
+					>{{pickerData.startTime}}</view>
+					鑷�
+					<view @click="dateTabChange(2)" class="picker-tab-item" :style="[rangeBtnStyle,dateTab==2?rangeBtnActiveStyle:'']"
+					>{{pickerData.endTime}}</view>
+				</view>
+				<picker-view class="picker-view" :indicator-style="popupIndicatorStyleString" :value="dateTime" @change="dateTimePickerChange">
+					<picker-view-column data-id='year' v-if='isShowYear'>
+						<view class="item" v-for="(item,index) in years" :key="index">{{item}}骞�</view>
+					</picker-view-column>
+					<picker-view-column data-id='month' v-if='isShowMonth'>
+						<view class="item" v-for="(item,index) in months" :key="index">{{item}}鏈�</view>
+					</picker-view-column>
+					<picker-view-column data-id='day' v-if='isShowDay'>
+						<view class="item" v-for="(item,index) in days" :key="index">{{item}}鏃�</view>
+					</picker-view-column>
+					<picker-view-column data-id='hour' v-if='isShowHour'>
+						<view class="item" v-for="(item,index) in hours" :key="index">{{item}}鏃�</view>
+					</picker-view-column>
+					<picker-view-column data-id='minute' v-if='isShowMinute'>
+						<view class="item" v-for="(item,index) in minutes" :key="index">{{item}}鍒�</view>
+					</picker-view-column>
+					<picker-view-column data-id='second' v-if='isShowSecond'>
+						<view class="item" v-for="(item,index) in seconds" :key="index">{{item}}绉�</view>
+					</picker-view-column>
+					<picker-view-column data-id='week' v-if='isShowWeek'>
+						<view class="item" v-for="(item,index) in weeks" :key="index">{{item}}</view>
+					</picker-view-column>
+					<picker-view-column data-id='quarter' v-if='isShowQuarter'>
+						<view class="item" v-for="(item,index) in quarters" :key="index">{{item}}</view>
+					</picker-view-column>
+				</picker-view>
+			</view>
+		</view>
+	</uni-popup>
+</template>
+
+<script>
+	import {
+		getOneMonthDays,
+		getTimeArray,
+		addZero,
+		removeZero,
+		getIndexOfArray,
+		getQuarterArray,
+		isOnlyTime,
+		isRange,
+		getTotalWeeks,
+		getFirstAndLastDate
+	} from './uitls/util.js'
+	const [year, month, date, hour, minute, second]=getTimeArray(new Date());
+	export default {
+		name: 'TimePicker',
+		props: {
+			minDate: { //鏈�灏忛�夋嫨鏃堕棿 
+				type: Object,
+				default: function() {
+					return {
+						year: 1970,
+						month: 1,
+						date: 1,
+						hour:0,
+						minute:0,
+						second:0
+					}
+				}
+			},
+			maxDate: { //鏈�澶ч�夋嫨鏃堕棿 
+				type: Object,
+				default: function() {
+					return {
+						year,
+						month,
+						date,
+						hour:23,
+						minute:59,
+						second:59
+					}
+				}
+			},
+			type: {
+				/**
+				 * date 骞存湀鏃�
+				 * year-month 骞存湀
+				 * year 骞�
+				 * datetime 骞存湀鏃� 鏃跺垎
+				 * datetime-all 骞存湀鏃� 鏃跺垎绉�
+				 * time 鏃跺垎绉�
+				 * hour-minute 鏃跺垎
+				 * week 鍛�
+				 * quarter 瀛e害
+				 * year-range 骞�-鑼冨洿
+				 * year-month-range 骞存湀-鑼冨洿
+				 * date-range 骞存湀鏃�-鑼冨洿
+				 * datetime-range 骞存湀鏃� 鏃跺垎-鑼冨洿
+				 * datetime-all-range 骞存湀鏃� 鏃跺垎绉�-鑼冨洿
+				 * time-range 鏃跺垎绉�-鑼冨洿
+				 */
+				type: String,
+				default: 'date'
+			},
+			defaultData: {
+				type: Object,
+				default: function() {
+					return {
+						startTime: "", //榛樿寮�濮嬫棩鏈�/鏃堕棿 yyyy-mm-dd (HH:MM:SS)
+						endTime: "", //榛樿缁撴潫鏃ユ湡/鏃堕棿 yyyy-mm-dd (HH:MM:SS)
+						year: "", //榛樿骞翠唤		yyyy		
+						month: "", //榛樿骞�-鏈堜唤 yyyy-mm
+						week: "", //榛樿鍛� 2020 绗�1鍛�
+						quarter: "", //榛樿瀛e害 2020 涓�瀛e害
+					}
+				}
+			},
+			popIindicatorStyle:{
+				type: Object,
+				default: null
+			},
+			rangeBtnStyle: { // 鑼冨洿閫夋嫨鎸夐挳鏍峰紡
+				type: Object,
+				default: function(){
+					return {
+						color:'#666'
+					}
+				}
+			},
+			rangeBtnActiveStyle: { // 鑼冨洿閫夋嫨鎸夐挳婵�娲绘牱寮�
+				type: Object,
+				default: function(){
+					return {
+						color:'#049bff',
+						borderColor:'#049bff'
+					}
+				}
+			},
+			cancelButtonText: {
+				type: String,
+				default: '鍙栨秷'
+			},
+			cancelButtonClass: {
+				type: String,
+				default: 'cancel-btn'
+			},
+			toolBarTitle: {
+				type: String,
+				default: ''
+			},
+			toolBarTitleClass: {
+				type: String,
+				default: 'tool-title'
+			},
+			confirmButtonText: {
+				type: String,
+				default: '纭畾'
+			},
+			confirmButtonClass: {
+				type: String,
+				default: 'confirm-btn'
+			},
+			safeArea: {
+				type: Boolean,
+				default: true
+			},
+			en: {
+				type: Boolean,
+				default: false
+			},
+			weekType:{
+				type:String,
+				default:'firstWeek' // firstWeek fullWeek firstDay
+			}
+		},
+		data() {
+			return {
+				showPicker: false,
+				showPopPicker: false,
+				dateTab: 1,
+				popupIndicatorStyleString:"",
+				dateTime: [],//picker-view-column 閫変腑鐨勫��
+				lastDateTime: [],//閫変腑鐨勬椂闂�,灏忎簬10鐨勬暟涓嶅姞0
+				days: [],//鍙�夌殑鏃ュ垪琛�
+				months: [],//鍙�夌殑鏈堝垪琛�
+				quarters: getQuarterArray(1, 12),//鍙�夌殑瀛e害鍒楄〃
+				weeks: [], //鍙�夌殑鍛ㄥ垪琛�
+				hours: [], //鍙�夌殑鏃跺垪琛�
+				minutes: [], //鍙�夌殑鍒嗗垪琛�
+				seconds: [], //鍙�夌殑绉掑垪琛�
+				datestring: "",//閫変腑鐨勬椂闂�,鏍煎紡鍖栧悗鐨勫睍绀�
+				allQuarter: [{
+						name: "涓�瀛e害",
+						start: "01-01",
+						end: "03-31"
+					},
+					{
+						name: "浜屽搴�",
+						start: "04-01",
+						end: "06-30"
+					},
+					{
+						name: "涓夊搴�",
+						start: "07-01",
+						end: "09-30"
+					},
+					{
+						name: "鍥涘搴�",
+						start: "10-01",
+						end: "12-31"
+					}
+				],
+				pickerData: {
+					startTime: "",
+					endTime: "",
+					month: "",
+					quarter: "",
+					year: ""
+				}
+			};
+		},
+		methods: {
+			showPop() {
+				this.dateTab = 1;
+				this.getPopIndicatorStyle();
+				this.showPopPicker = true;
+				this.tempTime = new Date().getTime();
+				this.$refs.popup.open();
+			},
+			close() {
+				this.$emit('close');
+				this.showPopPicker = false;
+				this.$refs.popup.close();
+				this.pickerData={
+					startTime: "",
+					endTime: "",
+					month: "",
+					quarter: "",
+					year: ""
+				}
+				this.lastDateTime=[];
+			},
+			dateTabChange(i) {
+				if (this.dateTab == i) {
+					return;
+				}
+				this.dateTab = i;
+				this.datestring = i == 2 ? this.pickerData.endTime : this.pickerData.startTime;
+				this.initDateTime();
+				this.tempTime = new Date().getTime();
+			},
+			dateTimePickerChange(e) {
+				if(new Date().getTime()-this.tempTime < 100){
+					//dateTimePickerChange 灏忕▼搴忕鏈夋椂鐐瑰嚮dateTabChange灏辫Е鍙戜簡change
+					// console.log("鏃犳晥婊氬姩")
+					return;
+				}
+				this.tempTime = new Date().getTime();
+				let columns = [...e.target.value];
+				let currentDateList=[];
+
+				if (isOnlyTime(this.type)) {
+					currentDateList = [this.hours[columns[0]],this.minutes[columns[1]],this.seconds[columns[2]]];
+					let tag = 2;
+					if(currentDateList[1]!=this.lastDateTime[1]){
+						tag = 3;
+					}
+					let minTag = currentDateList[0] == this.realMinDate.hour;
+					let maxTag = currentDateList[0] == this.realMaxDate.hour;
+					if(tag > 2) {
+						minTag = minTag && currentDateList[1] == this.realMinDate.minute;
+						maxTag = maxTag && currentDateList[1] == this.realMaxDate.minute;
+					}
+					
+					this.getHMSColumnsData(currentDateList, this.lastDateTime, tag, minTag, maxTag);
+				} else if (this.type === "week") {
+					if (this.lastDateTime[0] != this.years[columns[0]]) {
+						this.getWeeks(this.years[columns[0]]);	
+					}
+				} else if (this.type === "quarter") {
+					if (this.lastDateTime[0] != this.years[columns[0]]) {
+						if (columns[0] == 0) {
+							this.quarters = getQuarterArray(this.realMinDate.month, 12);
+						} else if (columns[0] == this.years.length - 1) {
+							this.quarters = getQuarterArray(1, this.realMaxDate.month);
+						} else {
+							this.quarters = getQuarterArray(1, 12);
+						}
+					}
+				} else {
+					currentDateList=[this.years[columns[0]],this.months[columns[1]],this.days[columns[2]],this.hours[columns[3]],this.minutes[columns[4]],this.seconds[columns[5]]];
+					this.getColumnsData(currentDateList, this.lastDateTime);
+				}
+				setTimeout(() => {
+					if (this.type === "week") {
+						if (this.lastDateTime[0] != this.years[columns[0]]) {
+							let index = columns[1];
+							index = this.weeks.findIndex(val => val == this.lastDateTime[1]);
+							if (index < 0) {
+								index = columns[0] == 0 ? 0 : this.weeks.length - 1;
+							}
+							columns.splice(1, 1, index)
+						}
+					} else if (this.type === "quarter") {
+						if (this.lastDateTime[0] != this.years[columns[0]]) {
+							let index = columns[1];
+							index = this.quarters.findIndex(val => val == this.lastDateTime[1]);
+							if (index < 0) {
+								index = columns[0] == 0 ? 0 : this.quarters.length - 1;
+							}
+							columns.splice(1, 1, index)
+						}
+					} else {
+						let names = ['year', 'month', 'day', 'hour', 'minute', 'second'];
+						if (isOnlyTime(this.type)){
+							names=names.slice(3);
+						}
+						const arr = [];
+						let i = 1;
+						while(i < currentDateList.length && currentDateList[i] != undefined) {
+							const colName = names[i] + 's';
+							let index = this[colName].findIndex(val => val == currentDateList[i]);
+							if (index < 0) {
+								index = currentDateList[i] <= this[colName][0] ? 0 : this[colName].length - 1;
+							}
+							arr.push(index);
+							i++;
+						}
+						columns.splice(1, columns.length-1, ...arr);
+					}
+					columns.forEach((column, index) => {
+						this.dateTime.splice(index, 1, column);
+					})
+					this.formatDate();
+				},50)
+			},
+			formatDate() {//閫変腑鐨勬椂闂磋褰� 鍙婃牸寮忓寲
+				let names = ['year', 'month', 'day', 'hour', 'minute', 'second'];
+				let dateString, formatDateArray = [];
+				if (['date','year','year-month','year-range','year-month-range','date-range'].includes(this.type)) {
+					formatDateArray = this.dateTime.map((item, index) => {
+						let num=this[names[index] + 's'][item] ? this[names[index] + 's'][item] : this[names[index] + 's'][this[names[index] + 's'].length-1];
+						return  addZero(num);
+					})
+					dateString = formatDateArray.join('-');
+				} else if (isOnlyTime(this.type)) {
+					names = names.splice(3);
+					formatDateArray = this.dateTime.map((item, index) => {
+						return addZero(this[names[index] + 's'][item]);
+					})
+					dateString = formatDateArray.join(':');
+				} else if (this.type === "week") {
+					dateString = this.years[this.dateTime[0]] + " " + this.weeks[this.dateTime[1]];
+				} else if (this.type === "quarter") {
+					dateString = this.years[this.dateTime[0]] + " " + this.quarters[this.dateTime[1]];
+				} else {
+					let name1 = names.splice(0, 3);
+					formatDateArray = this.dateTime.map((item, index) => {
+						if (index > 2) {
+							return addZero(this[names[index - 3] + 's'][item]);
+						} else {
+							return addZero(this[name1[index] + 's'][item]);
+						}
+					})
+					dateString = formatDateArray.splice(0, 3).join('-') + ' ' + formatDateArray.join(':');
+				}
+				if(['week','quarter'].includes(this.type)){
+					this.lastDateTime = dateString.split(/[-: ]/);
+				}else{
+					let tempDate = [];
+					dateString.split(/[-: ]/).forEach((val) => {
+						tempDate.push(parseInt(removeZero(val)));
+					})
+					this.lastDateTime = tempDate;
+				}
+				
+				switch (this.type) {
+					case "date":
+					case "datetime":
+					case "datetime-all":
+					case "time":
+					case "hour-minute":
+					case "year-range":
+					case "year-month-range":
+					case "date-range":
+					case "datetime-range":
+					case "datetime-all-range":
+					case "time-range":
+						if (this.dateTab == 2) {
+							this.pickerData.endTime = dateString;
+						} else {
+							this.pickerData.startTime = dateString;
+						};
+						break;
+					case "year-month":
+						this.pickerData.month = dateString;
+						break;
+					case "year":
+						this.pickerData.year = dateString;
+						break;
+					case "week":
+						this.pickerData.week = dateString;
+						break;
+					case "quarter":
+						this.pickerData.quarter = dateString;
+						break;
+				}
+				// this.$emit('change', dateString)
+			},
+			getPopIndicatorStyle() {
+				if (this.popIindicatorStyle) {
+					for (let key in this.popIindicatorStyle) {
+						this.popupIndicatorStyleString += `${key}:${this.popIindicatorStyle[key]};`
+					}
+				}
+			},
+			initDefaultDate() {//鍒濆鍖栬捣濮嬫椂闂�
+				const pickerData = {};
+				Object.keys(this.defaultData).forEach(key=>{
+					pickerData[key] = this.defaultData[key];
+				})
+				let [y, m, d] = getTimeArray(new Date());
+				if (this.type === 'year') {
+					pickerData.year=pickerData.year||y;
+					this.datestring = this.getDefaultYearMonth(pickerData.year,this.type);
+				} else if (this.type === 'year-month') {
+					pickerData.month=pickerData.month||(y+'-'+addZero(m));
+					this.datestring = this.getDefaultYearMonth(pickerData.month,this.type);
+				} else if (this.type === 'year-range') {
+					pickerData.startTime=pickerData.startTime||y;
+					pickerData.endTime=pickerData.endTime||y;
+					this.datestring = this.getDefaultYearMonth(pickerData.startTime,this.type);
+				} else if (this.type === 'year-month-range') {
+					pickerData.startTime=pickerData.startTime||(y+'-'+addZero(m));
+					pickerData.endTime=pickerData.endTime||(y+'-'+addZero(m));
+					this.datestring = this.getDefaultYearMonth(pickerData.startTime,this.type);
+				} else if (this.type === 'quarter') {
+					this.datestring = pickerData.quarter;
+				} else if (this.type === 'week') {
+					this.datestring = pickerData.week;
+				} else {
+					// 澶勭悊榛樿寮�濮嬫椂闂村拰缁撴潫鏃堕棿
+					let startTime=isOnlyTime(this.type) ? y + "/" + m + "/" + d + " " + pickerData.startTime : pickerData.startTime;
+					startTime=this.getMinDate(startTime).replace(/-/g,"/");
+					pickerData.startTime = isNaN(Date.parse(startTime)) ? this.formatPickerData(new Date(),this.type) : this.formatPickerData(startTime,this.type);
+					if(isRange(this.type)){
+						let endTime=isOnlyTime(this.type) ? y + "/" + m + "/" + d + " " + pickerData.endTime : pickerData.endTime;
+						endTime=this.getMinDate(endTime).replace(/-/g,"/");
+						pickerData.endTime = isNaN(Date.parse(endTime)) ? this.formatPickerData(new Date(),this.type) : this.formatPickerData(endTime,this.type);						
+					}
+					this.datestring = pickerData.startTime;
+				}
+				
+				this.$nextTick(()=>{
+					Object.keys(pickerData).forEach(key=>{
+						this.pickerData[key] = pickerData[key];
+					})					
+				})
+			},
+			initDateTime() {//鍒濆鍖杙icker-view閫夋嫨鐨勬椂闂�
+				let value;
+				if (this.datestring && this.datestring.length > 0) {
+					if (['year','year-range'].includes(this.type)) {
+						value = new Date(this.datestring, 0);
+					} else if (isOnlyTime(this.type)) {
+						let date = new Date();
+						let ary = this.datestring.split(':');
+						ary.forEach((item, index) => {
+							if (index == 0) {
+								date.setHours(item)
+							} else if (index == 1) {
+								date.setMinutes(item)
+							} else if (index == 2) {
+								date.setSeconds(item)
+							}
+						})
+						value = date;
+						const currentHMS = getTimeArray(value).slice(3);
+						const lastHMS = [-1, -1, -1];
+						this.getHMSColumnsData(currentHMS, lastHMS, 1, true, true);
+					} else if(['year-month','year-month-range'].includes(this.type)){
+						let datestring = this.datestring.replace(/-/g, '/');
+						value = isNaN(Date.parse(datestring)) ? new Date(datestring+'/01') : new Date(datestring);
+					} else {
+						value = new Date(this.datestring.replace(/-/g, '/'));
+					}
+				} else {
+					value = new Date();
+				}
+				let len, timeArray, index;
+				let array = ['week','quarter'].includes(this.type) ? this.datestring.split(" ") : getTimeArray(value);
+				let [year, month, day, hour, minute, second] = array;
+				if (this.isShowWeek) {
+					this.getWeeks(year?year:this.realMinDate.year);	
+				} else if(!isOnlyTime(this.type)){
+					this.getColumnsData(array);
+				}
+				let names = ['year', 'month', 'day', 'hour', 'minute', 'second'];
+				switch (this.type) {
+					case "date":
+					case "time":
+					case "date-range":
+					case "time-range":
+						len = 3;
+						break;
+					case "year-month":
+					case "year-month-range":
+					case "hour-minute":
+					case "week":
+					case "quarter":
+						len = 2;
+						break;
+					case "year":
+					case "year-range":
+						len = 1;
+						break;
+					case "datetime":
+					case "datetime-range":
+						len = 5;
+						break;
+					case "datetime-all":
+					case "datetime-all-range":
+						len = 6;
+						break;
+				}
+				timeArray = new Array(len).fill(0);
+				if (isOnlyTime(this.type)) {
+					names = names.slice(3);
+					array = array.slice(3);
+				} else if (this.type === "week") {
+					names = ["year", "week"];
+				} else if (this.type === "quarter") {
+					names = ["year", "quarter"];
+				} else {
+					names = names.slice(0,len);
+					array = array.slice(0,len);
+				}
+				// setTimeout(() => {
+					timeArray = timeArray.map((item, index) => {
+						const name = names[index];
+						return getIndexOfArray(array[index], this[name + 's'])
+					})
+					this.dateTime = timeArray;
+					this.lastDateTime = array;
+					this.formatDate();
+				// },100)
+			},
+			initTimeData(end, start) {//璁剧疆鏈�澶ф渶灏忓��
+				let timeArray = [];
+				while (start <= end) {
+					timeArray.push(start);
+					start++;
+				}
+				return timeArray;
+			},
+			getColumnsData(currentDateList, lastDateTime=[-1,-1,-1,-1,-1,-1]){
+				let min='';
+				let max='';
+				let minTag=false;
+				let maxTag=false;
+				let currentYear=currentDateList[0];
+				let currentMonth=currentDateList[1];
+				let currentDate=currentDateList[2];
+				let currentHMS=currentDateList.slice(3);
+				let lastHMS=lastDateTime.slice(3);
+				if(this.isShowMonth || this.isShowQuarter){
+					if(currentYear==this.realMinDate.year){
+						minTag=true;
+					}
+					if (currentYear == this.realMaxDate.year){
+						maxTag=true;
+					}
+					if(currentYear!=lastDateTime[0]){
+						min=1;
+						max=12;
+						if (minTag){
+							min=this.realMinDate.month;
+							currentMonth=currentMonth<min?min:currentMonth;
+						}
+						if (maxTag){
+							max=this.realMaxDate.month;
+							currentMonth=currentMonth>max?max:currentMonth;
+						}
+						this.isShowMonth && (this.months = this.initTimeData(max, min));
+						this.isShowQuarter && (this.quarters = getQuarterArray(min, max));
+					}				
+				}
+				if(this.isShowDay){
+					minTag=minTag&&currentMonth == this.realMinDate.month;
+					maxTag=maxTag&&currentMonth == this.realMaxDate.month;
+					if(currentMonth!=lastDateTime[1]||max){
+						min=1;
+						max=getOneMonthDays(currentYear, currentMonth-1);
+						if (minTag){
+							min=this.realMinDate.date;
+							currentDate=currentDate<min?min:currentDate;
+						}
+						if (maxTag){
+							max=this.realMaxDate.date;
+							currentDate=currentDate>max?max:currentDate;
+						}
+						this.days = this.initTimeData(max, min);
+					}				
+				}
+				if(this.isShowHour){
+					// 鍒ゆ柇鏃跺垎绉掑垪琛ㄦ槸鍚﹂渶瑕侀噸鏂拌祴鍊�
+					let tag=0;
+					if(currentHMS[1]!=lastDateTime[4]){
+						tag=3;
+					}
+					if(currentHMS[0]!=lastDateTime[3]){
+						tag=2;
+					}
+					if(max||currentDate!=lastDateTime[2]){
+						tag=1;
+					}
+					minTag=minTag&&currentDate==this.realMinDate.date;
+					maxTag=maxTag&&currentDate==this.realMaxDate.date;
+					if(tag>1){
+						minTag=minTag&&currentHMS[0]==this.realMinDate.hour;
+						maxTag=maxTag&&currentHMS[0]==this.realMaxDate.hour;	
+					}
+					if(tag>2){
+						minTag=minTag&&currentHMS[1]==this.realMinDate.minute;
+						maxTag=maxTag&&currentHMS[1]==this.realMaxDate.minute;	
+					}
+					this.getHMSColumnsData(currentHMS, lastHMS, tag, minTag, maxTag);
+				}
+			},
+			
+			getHMSColumnsData(currentHMS, lastHMS, tag, minTag, maxTag){
+				let [currentHour, currentMinute, currentSecond] = currentHMS;
+				let min="";
+				let max="";
+				if(tag==1){
+					min=0;
+					max=23;
+					if(minTag){
+						min=this.realMinDate.hour;
+						currentHour=currentHour<min?min:currentHour;
+					}
+					if(maxTag){
+						max=this.realMaxDate.hour;
+						currentHour=currentHour>max?max:currentHour;
+					}
+					this.hours = this.initTimeData(max, min);
+					tag=2;
+				}
+				
+				if(tag==2){
+					minTag=minTag&&currentHour==this.realMinDate.hour;
+					maxTag=maxTag&&currentHour==this.realMaxDate.hour;
+					min=0;
+					max=59;
+					if(minTag){
+						min=this.realMinDate.minute;
+						currentMinute=currentMinute<min?min:currentMinute;
+					}
+					if(maxTag){
+						max=this.realMaxDate.minute;
+						currentMinute=currentMinute>max?max:currentMinute;
+					}
+					this.minutes = this.initTimeData(max, min);
+					tag=3;
+				} 
+				
+				if(tag=3){
+					minTag=minTag&&currentMinute==this.realMinDate.minute;
+					maxTag=maxTag&&currentMinute==this.realMaxDate.minute;
+					min=0;
+					max=59;
+					if(minTag){
+						min=this.realMinDate.second;
+					}
+					if(maxTag){
+						max=this.realMaxDate.second;
+					}
+					this.seconds = this.initTimeData(max, min);
+				}	
+			},
+			getWeeks(year){
+				let startDate = year + '/01/01', endDate = year + '/12/31';
+				if(year<=this.realMinDate.year){
+					startDate = this.realMinDate.year + '/' + addZero(this.realMinDate.month) + '/' + addZero(this.realMinDate.date);
+				}
+				if(year>=this.realMaxDate.year){
+					endDate = this.realMaxDate.year + '/' + addZero(this.realMaxDate.month) + '/' + addZero(this.realMaxDate.date);
+				}
+				const [start, end] = getTotalWeeks(startDate, endDate, this.en, this.weekType);
+				this.weeks = this.initTimeData(end, start).map(item=>`绗�${item}鍛╜);
+			},
+			getWeekDate(){
+				let [year, w] = this.pickerData.week.split(" ");
+				let week = w.slice(1, - 1);
+				let { start, end } = getFirstAndLastDate(year, week, this.en, this.weekType);
+				start = this.formatPickerData(this.getMinDate(start),'date');
+				end = this.formatPickerData(this.getMAxDate(end),'date');
+				return [this.pickerData.week, start, end];
+			},
+			getQuarterDate(){
+				let [y, q] = this.pickerData.quarter.split(" ");
+				let index = getIndexOfArray(q, this.allQuarter, "name");
+				let start = y + "-" + this.allQuarter[index].start;
+				let end = y + "-" + this.allQuarter[index].end;
+				start = this.formatPickerData(this.getMinDate(start),'date');
+				end = this.formatPickerData(this.getMAxDate(end),'date');
+				return [this.pickerData.quarter,start, end];
+			},
+			getMinDate(date){
+				let defaultMInArr=[1970,1,1,0,0,0];
+				let minDate = `${this.realMinDate.year||defaultMInArr[0]}/${this.realMinDate.month||defaultMInArr[1]}/${this.realMinDate.date||defaultMInArr[2]} ${this.realMinDate.hour||defaultMInArr[3]}:${this.realMinDate.minute||defaultMInArr[4]}:${this.realMinDate.second||defaultMInArr[5]}`;
+				let repDate=date.replace(/-/g,"/");
+				let datetime=isNaN(Date.parse(repDate))?new Date().getTime():new Date(repDate).getTime();
+				return datetime>new Date(minDate).getTime()?date:minDate.replace(/\//g,"-");
+			},
+			getMAxDate(date){
+				let maxDate = `${this.realMaxDate.year}/${this.realMaxDate.month}/${this.realMaxDate.date} ${this.realMaxDate.hour}:${this.realMaxDate.minute}:${this.realMaxDate.second}`;
+				let repDate=date.replace(/-/g,"/");
+				let datetime=isNaN(Date.parse(repDate))?new Date().getTime():new Date(repDate).getTime();
+				return datetime<new Date(maxDate).getTime()?date:maxDate;
+			},
+			getDefaultYearMonth(date,type){
+				let minDate=['year','year-range'].includes(this.type)?this.realMinDate.year:(this.realMinDate.year+"-"+addZero(this.realMinDate.month));
+				let maxDate=['year','year-range'].includes(this.type)?this.realMaxDate.year:(this.realMaxDate.year+"-"+addZero(this.realMaxDate.month));
+				return date<minDate?minDate:date>maxDate?maxDate:date;
+			},
+			//popup
+			show(){
+				this.$nextTick(()=>{
+					this.initDefaultDate();
+					this.initDateTime();
+					this.showPop();					
+				})
+			},
+			handleEvent() {
+				return;
+			},
+			confirm() {
+				let val;
+				switch (this.type){
+					case "date":
+					case "datetime":
+					case "datetime-all":
+					case "time":
+					case "hour-minute":
+						val = this.pickerData.startTime;
+						break;
+					case "year":
+						val = this.pickerData.year;
+						break;
+					case "year-month":
+						val = this.pickerData.month;
+						break;
+					case "week":
+						val = this.getWeekDate();
+						break;
+					case "quarter":
+						val = this.getQuarterDate();
+						break;
+					case "year-range":
+					case "year-month-range":
+					case "date-range":
+					case "datetime-range":
+					case "datetime-all-range":
+					case "time-range":
+						let start=this.pickerData.startTime;
+						let end=this.pickerData.endTime;
+						if(start>end){
+							val=[end,start];
+						}else{
+							val=[start,end];
+						}
+						break;
+					default:
+						break;
+				}
+				this.$emit("change",val)
+				this.close();
+			},
+			popChange(val){
+				if(!val.show){
+					this.$emit("close");
+					this.showPopPicker = false;
+					this.$parent.pageScrollFlag=true;
+				}
+			},
+			formatPickerData(date,type){
+				let [y, m, d, HH, MM, SS] = getTimeArray(new Date(date));
+				m=addZero(m);
+				d=addZero(d);
+				HH=addZero(HH);
+				MM=addZero(MM);
+				SS=addZero(SS);
+				switch (type){
+					case "date":
+					case "date-range":
+						return y + "-" + m + "-" + d;
+					case "datetime":
+					case "datetime-range":
+						return y + "-" + m + "-" + d + " " + HH + ":" + MM;
+					case "datetime-all":
+					case "datetime-all-range":
+						return y + "-" + m + "-" + d + " " + HH + ":" + MM + ":" + SS;
+					case "time":
+					case "time-range":
+						return HH + ":" + MM + ":" + SS;
+					case "hour-minute":
+						return HH + ":" + MM;
+					default:
+						return "";
+						break;
+				}
+				
+			}
+		},
+		computed: {
+			years() {//鍙�夌殑骞村垪琛�
+				return this.initTimeData(this.realMaxDate.year, this.realMinDate.year);
+			},
+			isShowYear() {
+				return !['time','hour-minute','time-range'].includes(this.type);
+			},
+			isShowMonth() {
+				return !['year','time','hour-minute','week','quarter','year-range','time-range'].includes(this.type);
+			},
+			isShowDay() {
+				return ['date','datetime','datetime-all','date-range','datetime-range','datetime-all-range'].includes(this.type);
+			},
+			isShowHour() {
+				return !['date','year-month','year','week','quarter','year-range','year-month-range','date-range'].includes(this.type);
+			},
+			isShowRange() {
+				return isRange(this.type);
+			},
+			isShowMinute() {
+				return !['date','year-month','year','week','quarter','year-range','year-month-range','date-range'].includes(this.type);
+			},
+			isShowSecond() {
+				return ['time','datetime-all','datetime-all-range','time-range'].includes(this.type);
+			},
+			isShowQuarter() {
+				return this.type === 'quarter';
+			},
+			isShowWeek() {
+				return this.type === 'week';
+			},
+			realMinDate(){
+				return {
+					year: 1970,
+					month: 1,
+					date: 1,
+					hour:0,
+					minute:0,
+					second:0,
+					...this.minDate
+				}
+			},
+			realMaxDate(){
+				return {
+					year,
+					month,
+					date,
+					hour:23,
+					minute:59,
+					second:59,
+					...this.maxDate
+				}
+			}
+		},
+	}
+</script>
+
+<style lang="scss">
+	// popup
+	.date-time-picker {
+		width: 100%;
+		height: 40vh;
+		border-top-right-radius: 10rpx;
+		border-top-left-radius: 10rpx;
+		.date-time-mask {
+			position: fixed;
+			top: 0;
+			bottom: 0;
+			left: 0;
+			right: 0;
+			background-color: rgba($color: #000000, $alpha: .5);
+			z-index: 998;
+		}
+
+		.date-time-container {
+			width: 100%;
+			height: 100%;
+			border-top-right-radius: 10rpx;
+			border-top-left-radius: 10rpx;
+			box-sizing: border-box;
+			padding-bottom: 20rpx;
+			background-color: #f6f6f6;
+			display: flex;
+			flex-direction: column;
+
+			.time-picker-tool {
+				height: 80rpx;
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				font-size: 32rpx;
+
+				.cancel-base {
+					padding: 0 32rpx;
+					box-sizing: border-box;					
+				}
+				.cancel-btn {
+					color: #969799;
+				}
+
+				.tool-title {
+					font-weight: 500;
+					font-size: 32rpx;
+					max-width: 50%;
+					overflow: hidden;
+					white-space: nowrap;
+					text-overflow: ellipsis;
+				}
+				.confirm-base {
+					padding: 0 32rpx;
+					box-sizing: border-box;					
+				}
+				.confirm-btn {
+					color: #049bff;
+				}
+			}
+
+			.picker-view {
+				width: 100%;
+				flex: 1;
+
+				.item {
+					font-size: 34rpx;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+				}
+			}
+		}
+		.safe-area-padding{
+			padding-bottom: constant(safe-area-inset-bottom);
+			padding-bottom: env(safe-area-inset-bottom);
+		}
+	}
+	.picker-tab{
+		display: flex;
+		justify-content: space-around;
+		align-items: center;
+		margin: 20rpx 0;
+	}
+	.picker-tab-item{
+		box-sizing: border-box;
+		width: 260rpx;
+		text-align: center;
+		padding: 4rpx 30rpx;
+		border:2rpx solid #666;
+		border-radius: 20rpx;
+		font-size: 30rpx;
+	}
+	
+</style>
diff --git a/components/lingfeng-timepicker/uitls/util.js b/components/lingfeng-timepicker/uitls/util.js
new file mode 100644
index 0000000..976744b
--- /dev/null
+++ b/components/lingfeng-timepicker/uitls/util.js
@@ -0,0 +1,163 @@
+/**
+ * 鑾峰彇鏌愬勾鏌愭湀鏈夊灏戝ぉ
+ */
+export const getOneMonthDays = (year, month) => {
+	month = Number(month);
+	const baseMonthsDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
+	if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) {
+		if (month === 1) {
+			baseMonthsDays[month] = 29;
+		}
+	}
+	return baseMonthsDays[month];
+}
+
+/**
+ * 鑾峰彇鏃ユ湡鐨勫勾鏈堟棩鏃跺垎绉�
+ */
+export const getTimeArray = (data) => {
+	const year = data.getFullYear();
+	const month = data.getMonth() + 1;
+	const date = data.getDate();
+	const hour = data.getHours();
+	const minute = data.getMinutes();
+	const second = data.getSeconds();
+	return [year, month, date, hour, minute, second];
+}
+/**
+ * 灏忎簬10鐨勬暟瀛楀墠闈㈣ˉ0
+ */
+export const addZero = (num) => {
+	if (num / 1 == 0) {
+		return "00";
+	}
+	num = "" + num;
+	return num < 10 ? (num.substr(0, 1) == 0 ? num : ('0' + num)) : num;
+}
+/**
+ * 灏忎簬10鐨勬暟瀛楀墠闈㈠幓闄�0
+ */
+export const removeZero = (num) => {
+	if (num / 1 == 0) {
+		return 0
+	}
+	num = "" + num;
+	return num.substr(0, 1) == 0 ? (num.substr(1)) : num;
+}
+/**
+ * 鑾峰彇褰撳墠鍊煎湪鏁扮粍涓殑绱㈠紩
+ */
+export const getIndexOfArray = (value, array, key) => {
+	let index;
+	if (key) {
+		index = array.findIndex(item => item[key] == value);
+	} else {
+		index = array.findIndex(item => item == value);
+	}
+	return index > -1 ? index : 0;
+}
+
+/**
+ * 鑾峰彇瀛e害
+ */
+export const getQuarterArray = (startMOnth, endMOnth) => {
+	let arr = ["涓�瀛e害", "浜屽搴�", "涓夊搴�", "鍥涘搴�"];
+	let start = Math.ceil(startMOnth / 3);
+	let end = Math.ceil(endMOnth / 3);
+	if (end < start) {
+		return arr;
+	} else {
+		return arr.slice(start - 1, end);
+	}
+}
+/**
+ * 鏄惁涓鸿寖鍥撮�夋嫨
+ */
+export const isRange = (type) => {
+	return type.indexOf("range") > -1;
+}
+/**
+ * 鏄惁浠呬负鏃堕棿閫夋嫨
+ */
+export const isOnlyTime = (type) => {
+	return ["time", "hour-minute", "time-range"].includes(type);
+}
+/**
+ * 鑾峰彇start,end涔嬮棿鏈夊灏戝懆
+ */
+export const getTotalWeeks = (start, end, en, weekType) => {
+	if (weekType === 'firstDay') {
+		return getFirstDayTotalWeeks(start, end, weekType)
+	}
+	//鑾峰彇end褰撳墠鍛ㄧ殑绗竴澶�
+	let endMon = getWeekFirstDate(new Date(end), en);
+	//鑾峰彇start褰撳墠鍛ㄧ殑绗竴澶�
+	let startMon = getWeekFirstDate(new Date(start), en);
+	let year = new Date(start).getFullYear();
+	let firMon = getWeekFirstDate(new Date(year + '/01/01'), en);
+	if (weekType === 'fullWeek') {
+		if (new Date(startMon).getFullYear() != year) {
+			let curTime = new Date(startMon);
+			startMon = curTime.setDate(curTime.getDate() + 7);
+		}
+		if (new Date(firMon).getFullYear() != year) {
+			let curTime = new Date(firMon);
+			firMon = curTime.setDate(curTime.getDate() + 7);
+		}
+	}
+	return getStartAndEndWeek(firMon, startMon, endMon, weekType);
+}
+/**
+ * 鑾峰彇褰撳墠鍛ㄧ殑绗竴澶�
+ * 榛樿鍛ㄤ竴涓虹涓�澶╋紝en=true 鏃跺懆鏃ヤ负绗竴澶�
+ */
+function getWeekFirstDate(date, en = false) {
+	let temptTime = new Date(date);
+	let weekday = temptTime.getDay() || (en ? 0 : 7);
+	return temptTime.setDate(temptTime.getDate() - weekday + (en ? 0 : 1));
+}
+/**
+ * 鑾峰彇褰撳墠骞寸week鍛ㄧ殑绗竴澶╁拰鏈�鍚庝竴澶�
+ * 榛樿鍛ㄤ竴涓虹涓�澶╋紝en=true 鏃跺懆鏃ヤ负绗竴澶�
+ */
+export const getFirstAndLastDate = (year, week, en, weekType) => {
+	let firstDate = new Date(getWeekFirstDate(new Date(year + '/01/01'), en));
+	if (weekType === 'fullWeek') {
+		if (firstDate.getFullYear() != year) {
+			firstDate.setDate(firstDate.getDate() + 7);
+		}
+	}
+	if (weekType === 'firstDay') {
+		firstDate = new Date(year + '/01/01');
+	}
+	firstDate = new Date(firstDate.setDate(firstDate.getDate() + (week - 1) * 7));
+	let lastDate = new Date(firstDate);
+	lastDate = new Date(lastDate.setDate(lastDate.getDate() + 6));
+	const [fy, fm, fd] = getTimeArray(firstDate);
+	const [ly, lm, ld] = getTimeArray(lastDate);
+	const start = `${fy}-${addZero(fm)}-${addZero(fd)}`;
+	const end = `${ly}-${addZero(lm)}-${addZero(ld)}`;
+	return {
+		start,
+		end
+	};
+}
+
+function getStartAndEndWeek(first, start, end) {
+	let d = Math.ceil((end.valueOf() - first.valueOf()) / 8.64e7) + 1;
+	let endWeek = Math.ceil(d / 7);
+	let startWeek = 1;
+	if (start !== first) {
+		let d = Math.ceil((start.valueOf() - first.valueOf()) / 8.64e7) + 1;
+		startWeek = Math.ceil(d / 7);
+	}
+	return [startWeek, endWeek];
+}
+
+function getFirstDayTotalWeeks(start, end, weekType) {
+	let year = new Date(start).getFullYear();
+	let startTime = new Date(start).getTime();
+	let endTime = new Date(end).getTime();
+	let firstTime = new Date(year + '/01/01').getTime();
+	return getStartAndEndWeek(firstTime, startTime, endTime, weekType)
+}
\ No newline at end of file
diff --git a/pages/companyLogin/companyLogin.vue b/pages/companyLogin/companyLogin.vue
index 760656b..3188d7d 100644
--- a/pages/companyLogin/companyLogin.vue
+++ b/pages/companyLogin/companyLogin.vue
@@ -24,7 +24,7 @@
 						鎵嬫満鍙�
 					</view>
 					<view class="form-input">
-						<input type="number"  placeholder="璇疯緭鍏�11浣嶆墜鏈哄彿"/>
+						<input type="number"  v-model="form.phone"  placeholder="璇疯緭鍏�11浣嶆墜鏈哄彿"/>
 					</view>
 				</view>
 				<view class="form-item">
@@ -32,7 +32,7 @@
 						楠岃瘉鐮�
 					</view>
 					<view class="form-input set-flex set-flex-content-between">
-						<input type="number" placeholder="璇疯緭鍏ラ獙璇佺爜"/>
+						<input type="number" v-model="form.code"  placeholder="璇疯緭鍏ラ獙璇佺爜"/>
 						<view @click="getCode">
 							<text class="driver"></text>
 							<text class="getcode">{{tips}}</text>
@@ -62,7 +62,7 @@
 				form: {
 					phone: '',
 					code: '',
-					userType: ''
+					userType: '01'
 				},
 				loginToken: '',
 				isSendCode: false,
diff --git a/policy/applyRecord/applyRecord.vue b/policy/applyRecord/applyRecord.vue
index 1eea770..41a70c4 100644
--- a/policy/applyRecord/applyRecord.vue
+++ b/policy/applyRecord/applyRecord.vue
@@ -2,13 +2,13 @@
 	<view class="page-box">
 		<u-sticky bgColor="white">
 			<view class="set-search">
-				<u-search placeholder="璇疯緭鍏ョ敵璇疯褰曞叧閿瘝 "  shape="square" :showAction="false"></u-search>
+				<u-search placeholder="璇疯緭鍏ョ敵璇疯褰曞叧閿瘝 " @search="search" @blur="search" shape="square" :showAction="false"></u-search>
 			</view>
 			<view class="border"></view>
-			<u-tabs :list="list1" @click="click" :scrollable="false" bgColor="white"></u-tabs>
+			<u-tabs :list="list1" @click="click" :current="current" :scrollable="false" bgColor="white"></u-tabs>
 		</u-sticky>
 		<view class="list">
-			<view class="list-item" @click="goReport">
+			<view class="list-item" @click="goReport" v-for="(item,index) in dataList" :key="index">
 				<view class="top-title">
 					<text>24骞�5鏈堢獊鍑绘鏌ユ秷闃插畨鍏�</text>
 					<text class="status">宸茬粨鏉�</text>
@@ -34,80 +34,53 @@
 
 				</view>
 			</view>
-			<view class="list-item">
-				<view class="top-title">
-					<text>24骞�5鏈堢獊鍑绘鏌ユ秷闃插畨鍏�</text>
-					<text class="status">宸茬粨鏉�</text>
-				</view>
-				<view class="user-info">
-					<text>鐜嬫�濋洦</text>
-					<view class="driver"></view>
-					<text>鎵ф硶涓�澶ч槦</text>
-				</view>
-				<view class="set-line">
-					<text>鎵ф硶瀵硅薄锛�</text>娌冲崡瑙夐啋绉戞妧鏈夐檺鍏徃
-				</view>
-				<view class="line"></view>
-				<view class="set-flex set-start set-flex-content-between">
-					<view>
-						<view class="set-line1">
-							<text>鎵ф硶鏃堕棿锛�</text>2024-05-12 12:00
-						</view>
-						<view class="set-line1">
-							<text>鐢宠鏃堕棿锛�</text>2024-05-12 12:00:12
-						</view>
-					</view>
-
-				</view>
-			</view>
-			<view class="list-item">
-				<view class="top-title">
-					<text>24骞�5鏈堢獊鍑绘鏌ユ秷闃插畨鍏�</text>
-					<text class="status">宸茬粨鏉�</text>
-				</view>
-				<view class="user-info">
-					<text>鐜嬫�濋洦</text>
-					<view class="driver"></view>
-					<text>鎵ф硶涓�澶ч槦</text>
-				</view>
-				<view class="set-line">
-					<text>鎵ф硶瀵硅薄锛�</text>娌冲崡瑙夐啋绉戞妧鏈夐檺鍏徃
-				</view>
-				<view class="line"></view>
-				<view class="set-flex set-start set-flex-content-between">
-					<view>
-						<view class="set-line1">
-							<text>鎵ф硶鏃堕棿锛�</text>2024-05-12 12:00
-						</view>
-						<view class="set-line1">
-							<text>鐢宠鏃堕棿锛�</text>2024-05-12 12:00:12
-						</view>
-					</view>
-
-				</view>
-			</view>
+			 <u-empty v-if="!dataList.length"></u-empty>
 		</view>
 	</view>
 </template>
 
 <script>
+	import { orderList } from '@/api/policy.js'
 	export default {
 		data() {
 			return {
+				current: 0,
 				list1: [{
 					name: '鍏ㄩ儴',
+					value: ''
 				}, {
 					name: '寰呭鎵�',
+					value: 1
 				}, {
 					name: '寰呮墽琛�',
+					value: 2
 				}, {
 					name: '寰呬笂鎶�',
+					value: 3
 				}, {
 					name: '宸叉嫆缁�',
+					value: -1
 				}, {
 					name: '宸茬粨鏉�',
-				}]
+					value: 4
+				}],
+				queryParams: {
+					pageNum: 1,
+					pageSize: 10
+				},
+				total: 1,
+				dataList: []
 			}
+		},
+		onShow() {
+			this.orderList()
+		},
+		onReachBottom() {
+			if(this.list.length == this.total) {
+				return
+			}
+			this.queryParams.pageNum++
+			this.orderList()
 		},
 		methods: {
 			goReport() {
@@ -115,8 +88,21 @@
 					url: `/policy/applyRecordDetails/applyRecordDetails`
 				})
 			},
-			click() {
-
+			click(e) {
+				this.queryParams.pageNum = 1
+				this.current = e.index
+			},
+			orderList() {
+				orderList({...this.queryParams, orderStatus: this.list1[this.current].value}).then(val => {
+					// console.log(val.data)
+					this.total = val.data.total
+					this.dataList = [...this.dataList,...val.data.rows]
+				})
+			},
+			search(e){
+				this.queryParams.pageNum =1
+				this.queryParams.companyName = e
+				this.orderList()
 			}
 		}
 	}
diff --git a/policy/applyRecordDetails/applyRecordDetails.vue b/policy/applyRecordDetails/applyRecordDetails.vue
index d5e093b..95516ee 100644
--- a/policy/applyRecordDetails/applyRecordDetails.vue
+++ b/policy/applyRecordDetails/applyRecordDetails.vue
@@ -8,7 +8,7 @@
 		<view class="top-content"></view>
 		<view class="main-page">
 			<view class="status">
-				宸茬粨鏉�
+				{{mapStatus[details.orderStatus]}}
 			</view>
 			<view class="base-card">
 				<view class="title">
@@ -17,47 +17,43 @@
 				<view class="view-form">
 					<view class="view-form-item">
 						<view class="label">鎵ф硶涓婚</view>
-						<view>24骞�5鏈堜唤娑堥槻绐佸嚮妫�鏌�</view>
+						<view>{{details.enforceReason}}</view>
 					</view>
 					<view class="view-form-item">
 						<view class="label">鎵ф硶瀵硅薄</view>
-						<view>24骞�5鏈堜唤娑堥槻绐佸嚮妫�鏌�</view>
+						<view>{{details.companyName}}</view>
 					</view>
 					<view class="view-form-item">
 						<view class="label">鎵ф硶鏃堕棿</view>
-						<view>24骞�5鏈堜唤娑堥槻绐佸嚮妫�鏌�</view>
-					</view>
-					<view class="view-form-item">
-						<view class="label">鎵ф硶鏃堕棿</view>
-						<view>24骞�5鏈堜唤娑堥槻绐佸嚮妫�鏌�</view>
+						<view>{{details.executeTime}}</view>
 					</view>
 					<view class="view-form-item">
 						<view class="label">鎵ф硶绫诲瀷</view>
-						<view>24骞�5鏈堜唤娑堥槻绐佸嚮妫�鏌�</view>
+						<view>{{details.enforceTypeName}}</view>
 					</view>
 					<view class="view-form-item">
 						<view class="label">鎵ф硶浜哄憳</view>
-						<view>24骞�5鏈堜唤娑堥槻绐佸嚮妫�鏌�</view>
+						<view>{{details.executeUser}}</view>
 					</view>
 					<view class="view-form-item">
 						<view class="label">鎵ф硶閮ㄩ棬</view>
-						<view>24骞�5鏈堜唤娑堥槻绐佸嚮妫�鏌�</view>
+						<view>{{details.executeDeptName}}</view>
 					</view>
 					<view class="view-form-item">
-						<view class="label">闅忚浜哄憳鏁伴噺</view>
-						<view>24骞�5鏈堜唤娑堥槻绐佸嚮妫�鏌�</view>
+						<view class="label">闅忚浜哄憳</view>
+						<view>闅忚浜哄憳</view>
 					</view>
 					<view class="view-form-item">
 						<view class="label">鏄惁閫氱煡浼佷笟</view>
-						<view>24骞�5鏈堜唤娑堥槻绐佸嚮妫�鏌�</view>
+						<view>{{details.isNoticeCompany == 0 ? '鍚�': '鏄�'}}</view>
 					</view>
 					<view class="view-form-item">
 						<view class="label">鐢宠鏃堕棿</view>
-						<view>24骞�5鏈堜唤娑堥槻绐佸嚮妫�鏌�</view>
+						<view>{{details.applyTime}}</view>
 					</view>
 					<view class="view-form-item">
 						<view class="label">褰撳墠鐘舵��</view>
-						<view>24骞�5鏈堜唤娑堥槻绐佸嚮妫�鏌�</view>
+						<view>{{mapStatus[details.orderStatus]}}</view>
 					</view>
 				</view>
 			</view>
@@ -66,11 +62,7 @@
 					<text>鎵ф硶鍐呭</text>
 				</view>
 				<view class="view-content">
-					鐏伀鍣ㄤ娇鐢細涓嶅悓绫诲瀷鐨勭伃鐏櫒閫傜敤浜庝笉鍚岀绫荤殑鐏伨锛屽浜屾哀鍖栫⒊鐏伀鍣ㄩ�傜敤浜庡浐浣撱�佹恫浣撱�佹皵浣撳拰甯︾數璁惧鐏伨锛屽共绮夌伃鐏櫒鍚屾牱閫傜敤浜庡绉嶇伀鐏剧被鍨嬨�備娇鐢ㄦ椂搴斿厛鎷旀帀淇濋櫓閿�锛岀劧鍚庣瀯鍑嗙伀鐒版牴閮ㄨ繘琛屽柗灏勩��
-					娑堥槻鏍撲娇鐢細浣跨敤娑堥槻鏍撴椂锛屽簲纭繚鑷冲皯鏈�3浜哄弬涓庯紝鍏朵腑2浜烘彙绱ф按鏋紝1浜鸿礋璐e紑鍚榾闂ㄣ�備娇鐢ㄥ墠搴旀鏌ユ按甯﹀強鎺ュご鏄惁瀹屽ソ锛岄伩鍏嶆壄鎶橈紝骞剁‘淇濇按甯︿笌姘存灙姝g‘杩炴帴銆�
-					闃茬伀鎺柦锛氬寘鎷絾涓嶉檺浜庝笉涔变涪鐑熻拏銆佷笉绉佹媺涔辨帴鐢电嚎銆佷笉瓒呰礋鑽蜂娇鐢ㄧ數鍣ㄣ�佸畾鏈熸鏌ョ數绾垮拰鐢靛櫒璁惧鏄惁鑰佸寲鎴栫牬鎹熴�佸涓笉瀛樻斁鏄撶噧鏄撶垎鐗╁搧绛夈��
-					鐏伨閫冪敓锛氬彂鐢熺伀鐏炬椂锛屽簲杩呴�熷垽鏂伀鍔挎潵婧愶紝閫夋嫨涓庣伀婧愮浉鍙嶇殑鏂瑰悜閫冪敓銆傚垏鍕夸娇鐢ㄧ數姊�冪敓锛屽簲閫氳繃瀹夊叏閫氶亾鎾ょ銆傞�冪敓杩囩▼涓簲淇濇寔浣庡Э鍔匡紝鐢ㄦ箍姣涘肪鎺╂姢鍙i蓟锛屽噺灏戝惛鍏ユ湁姣掔儫闆俱��
-					鎶ヨ鍜岃嚜鏁戯細鍙戠幇鐏儏鍚庯紝搴旂珛鍗虫嫧鎵撯��119鈥濈伀璀︾數璇濇姤璀︼紝骞惰缁嗚鏄庣伀鐏惧湴鐐广�佺伀鍔垮ぇ灏忕瓑淇℃伅銆傚湪绛夊緟鏁戞彺鏃讹紝搴斿敖閲忎繚鎸佸喎闈欙紝閲囧彇姝g‘鐨勮嚜鏁戞帾鏂斤紝濡備娇鐢ㄧ伃鐏櫒銆佹秷闃叉爴绛夈��
+					{{ details.regionReason }}
 				</view>
 			</view>
 			<view class="base-card">
@@ -106,7 +98,7 @@
 					<image src="https://picsum.photos/200/300" mode="widthFix"></image>
 					<image src="https://picsum.photos/200/300" mode="widthFix"></image>
 					<image src="https://picsum.photos/200/300" mode="widthFix"></image>
-
+					<!-- {{regionImgs}} -->
 				</view>
 			</view>
 			<view class="base-card">
@@ -152,14 +144,33 @@
 </template>
 
 <script>
+	import {
+		orderDetails
+	} from '@/api/policy.js'
 	export default {
 		data() {
 			return {
-
+				details: {},
+				mapStatus: {
+					1: '寰呭鎵�',
+					2: "寰呮墽琛�",
+					3: "寰呬笂鎶�",
+					'-1':"宸叉嫆缁�",
+					4: "宸茬粨鏉�"
+				}
 			}
 		},
+		onLoad(options) {
+			this.orderDetails(options.id)
+		},
 		methods: {
-
+			getDetails(orderId) {
+				orderDetails({
+					orderId
+				}).then(val => {
+					this.details = val.data
+				})
+			}
 		}
 	}
 </script>
diff --git a/policy/components/index.vue b/policy/components/index.vue
index e07a3f0..3df9939 100644
--- a/policy/components/index.vue
+++ b/policy/components/index.vue
@@ -1,6 +1,6 @@
 <template>
 	<view class="page-content">
-	
+
 		<view class="banner">
 			<image src="/static/head.png" mode=""></image>
 		</view>
@@ -8,10 +8,11 @@
 			<view class="second-box">
 				<image src="/static/hqzc.png" class="icon"></image>
 				<view class="driver"></view>
-				<view class="right-box">
-					<view>
-						<view class="u-line-1 margin-bottom">娴峰叧鎬荤讲璐告槗鎸佺画鍙戝睍2024骞寸珛娉曞眬...</view>
-						<view class="u-line-1">鍥藉鍖荤枟淇濋殰灞�鍔炲叕瀹ゅ叧浜庡彂甯冪鐞�... </view>
+				<view class="right-box" @click="goPolicyList">
+					<view class="article-list">
+						<view class="u-line-1 margin-bottom" v-for="(item, index) in policyList" :key="index">
+							{{item.docTitle}}</view>
+						<!-- <view class="u-line-1">鍥藉鍖荤枟淇濋殰灞�鍔炲叕瀹ゅ叧浜庡彂甯冪鐞�... </view> -->
 					</view>
 					<view class="icon-box">
 						<u-icon name="arrow-right" size="14" color="#868C98FF"></u-icon>
@@ -19,39 +20,59 @@
 				</view>
 			</view>
 			<view class="policy-list">
-				<!-- v-if="isJudge" -->
-				<image src="/static/policy/zhi1.png"  @click="applyPulicy" mode="widthFix"></image>
-				<image src="/static/policy/zhi2.png"  @click="recordZhifa" mode="widthFix"></image>
-				<image src="/static/policy/zhi3.png" @click="report" mode="widthFix"></image>
-				<image src="/static/policy/zhi4.png" @click="applyRecord" mode="widthFix"></image>
-				<image src="/static/policy/zhi5.png" @click="goDataLook" mode="widthFix"></image>
+				<image src="/static/policy/zhi1.png"  v-if="userAuth"  @click="applyPulicy" mode="widthFix"></image>
+				<image src="/static/policy/zhi2.png" v-if="isJudge" @click="recordZhifa" mode="widthFix"></image>
+				<image src="/static/policy/zhi3.png" v-if="userAuth" @click="report" mode="widthFix"></image>
+				<image src="/static/policy/zhi4.png" v-if="userAuth" @click="applyRecord" mode="widthFix"></image>
+				<image src="/static/policy/zhi5.png" @click="goDataLook" v-if="userType == '02'" mode="widthFix">
+				</image>
 			</view>
 		</view>
 	</view>
 </template>
 
 <script>
-	import {  getInfo } from '@/api/auth.js'
+	import {
+		getInfo,
+		docList
+	} from '@/api/auth.js'
 	import tabsCom from '@/policy/components/tabs.vue'
 	export default {
+		props: {
+			isJudge: {
+				type: Boolean,
+				default: false
+			},
+			userType: {
+				type: String,
+				default: ""
+			},
+			userAuth: {
+				type: Boolean,
+				default: false
+			}
+		},
 		components: {
 			tabsCom
 		},
 		data() {
 			return {
-				isJudge: false
+				// isJudge: false,
+				policyList: []
 			}
 		},
-		onShow() {
-			this.getInfo()
+		mounted() {
+			// this.getInfo()
+			this.docList()
 		},
 		methods: {
-			getInfo() {
-				getInfo().then(val =>{
-					// console.log()
-					this.isJudge = val.data.roles.some(item => item.includes('check_enforce'))
-				})
-			},
+			// getInfo() {
+			// 	getInfo().then(val =>{
+			// if(val.data.data.roles) {
+			// 	this.isJudge = val.data.data.roles.some(item => item.includes('check_enforce'))
+			// }
+			// 	})
+			// },
 			applyPulicy() {
 				uni.navigateTo({
 					url: '/policy/policyApply/policyApply'
@@ -76,26 +97,43 @@
 				uni.navigateTo({
 					url: '/policy/translate/translate'
 				})
+			},
+			// 鍘诲線鎯犱紒鏀跨瓥
+			goPolicyList() {
+				uni.navigateTo({
+					url: `/pages/hqzc/list`
+				})
+			},
+			docList() {
+				docList({
+					pageSize: 2,
+					pageNum: 1
+				}).then(val => {
+					this.policyList = val.data.rows
+				})
 			}
 		}
 	}
 </script>
 
 <style lang="scss" scoped>
-	.page-content{
-		.banner{
+	.page-content {
+		.banner {
 			width: 100%;
 			height: 520rpx;
-			image{
+
+			image {
 				width: 100%;
 				height: 100%;
 			}
 		}
-		.main-page-box{
+
+		.main-page-box {
 			position: relative;
 			top: -60rpx;
 		}
-		.second-box{
+
+		.second-box {
 			margin: 0 32rpx;
 			background-color: white;
 			border-radius: 20rpx;
@@ -103,42 +141,58 @@
 			display: flex;
 			justify-content: space-between;
 			align-items: center;
-			.icon{
+
+			.icon {
 				width: 76rpx;
 				height: 76rpx;
-				
+
 			}
-			.driver{
+
+			.driver {
 				height: 50rpx;
 				width: 2rpx;
 				background-color: #F1F1F1;
 				margin: 0 24rpx;
 			}
-			.right-box{
+
+			.right-box {
 				display: flex;
 				justify-content: space-between;
 				align-items: center;
 				width: calc(100% - 76rpx - 50rpx);
 				font-size: 26rpx;
 				color: #4A4E60FF;
-				.icon-box{
+
+				.article-list {
+					width: 80%;
+				}
+
+				.icon-box {
 					background-color: #F1F1F1;
 					border-radius: 50%;
 					padding: 10rpx;
 				}
-				.margin-bottom{
+
+				.margin-bottom {
 					margin-bottom: 10rpx;
+				}
+
+				.margin-bottom:last-child {
+					margin-bottom: 0;
 				}
 			}
 		}
-		.policy-list{
+
+		.policy-list {
 			margin: 22rpx 32rpx;
-			image{
+
+			image {
 				width: 100%;
 				height: 160rpx;
 				margin-bottom: 20rpx;
 			}
-			image::last-child{
+
+			image::last-child {
 				margin-bottom: 0;
 			}
 		}
diff --git a/policy/components/mine.vue b/policy/components/mine.vue
index 3f95cd8..1fab1b4 100644
--- a/policy/components/mine.vue
+++ b/policy/components/mine.vue
@@ -6,12 +6,12 @@
 				<image src="/static/policy/header.png" mode="widthFix"></image>
 				<view class="user-info">
 					<view class="user-name">
-						<view class="inckname">鍒樺皬闆�</view>
+						<view class="inckname">{{userInfo.data.nickName}}</view>
 						<view class="direc"></view>
 						<view class="dept-per">鎵ф硶浜哄憳</view>
 					</view>
 					<view class="dept-name">
-						鐜繚灞�--绗竴閮ㄩ棬
+						{{userInfo.data.dept.parentName}}
 					</view>
 				</view>
 			</view>
@@ -19,13 +19,14 @@
 		<view class="main-box">
 			<view class="show-phone-number">
 				<text class="label">鑱旂郴鐢佃瘽</text>
-				<text>168****4164</text>
+				<text v-if="userInfo.phonenumber">{{userInfo.data.phonenumber.replace(/(\d{3})\d{4}(\d{4})/, "$1****$2")}}</text>
+				<text v-else>鏆傛棤鎵嬫満鍙�</text>
 			</view>
 			<view class="show-phone-number" @click="goChangePhone">
 				<view class="set-flex">
 					<!-- <u-icon name="phone" size="22"></u-icon> -->
 					<image src="/static/policy/phone.png" mode="widthFix"></image>
-					<text class="change" >淇敼鎵嬫満鍙�</text>
+					<text class="change">淇敼鎵嬫満鍙�</text>
 				</view>
 				<u-icon name="arrow-right"></u-icon>
 			</view>
@@ -38,6 +39,12 @@
 
 <script>
 	export default {
+		props: {
+			userInfo: {
+				type: Object,
+				default: () => ({})
+			},
+		},
 		data(){
 			return {
 				src: '/static/policy/header.png'
diff --git a/policy/policyApply/perPage.vue b/policy/policyApply/perPage.vue
new file mode 100644
index 0000000..a05d340
--- /dev/null
+++ b/policy/policyApply/perPage.vue
@@ -0,0 +1,87 @@
+<template>
+	<u-popup mode="button" :safeAreaInsetBottom="false" :show="show" @close="close" @open="open" z-index="8000" bgColor="#fff">
+		<view class="bg-box">
+			<view class="title">閫夋嫨闅忚浜哄憳</view>
+			<u-checkbox-group     iconPlacement="right"  v-model="checkboxValue1" placement="column" @change="checkboxChange">
+				<u-checkbox :customStyle="{marginBottom: '40rpx', }" v-for="(item, index) in checkboxList1" :key="index"
+					 :name="item.userId" :label="`${item.dept.deptName}--${item.nickName}`">
+				</u-checkbox>
+			</u-checkbox-group>
+			<view class="set-flex set-flex-content-between">
+				<view class="button-per">
+					<u-button @click="close">鍙栨秷</u-button>
+				</view>
+				<view class="button-per"  @click="enteryResult">
+					<u-button color="#1171E0">纭</u-button>
+				</view>
+			</view>
+		</view>
+	</u-popup>
+</template>
+
+<script>
+	export default {
+		props: {
+			list: {
+				type: Array,
+				default: () => []
+			}
+		},
+		data() {
+			return {
+				show: false,
+				checkboxValue1: [],
+				// 鍩烘湰妗堝垪鏁版嵁
+				checkboxList1: [
+				],
+			}
+
+		},
+		watch: {
+			list: {
+				handler(n) {
+				this.checkboxList1 = n
+				},
+				immediate: true
+			}
+		},
+		methods: {
+			checkboxChange(n) {
+				// console.log('change', n);
+			},
+			close(){
+				this.show = false
+			},
+			open(list) {
+			
+				this.show = true
+			},
+			enteryResult() {
+				this.$emit('selectValue', this.checkboxValue1)
+				this.close()
+				console.log(44)
+			}
+		}
+	}
+</script>
+
+<style scoped>
+	.bg-box{
+		position: fixed;
+		bottom: 0;
+		background-color: white;
+		border-radius: 20rpx 20rpx 0 0;
+		padding: 20rpx 32rpx;
+		z-index: 1000000;
+		width: 100%;
+		box-sizing: border-box;
+	}
+	.title{
+		font-size: 36rpx;
+		font-family: 500;
+		margin-bottom: 40rpx;
+	}
+	.button-per{
+		width: 48%;
+	}
+</style>
\ No newline at end of file
diff --git a/policy/policyApply/policyApply.vue b/policy/policyApply/policyApply.vue
index 45e2bb8..49ff902 100644
--- a/policy/policyApply/policyApply.vue
+++ b/policy/policyApply/policyApply.vue
@@ -13,26 +13,26 @@
 						鎵ф硶瀵硅薄
 					</view>
 					<view class="input">
-						<input type="text" placeholder="璇疯緭鍏�" v-model="form.companyName"/>
+						<input type="text"  placeholder="璇疯緭鍏�" v-model="form.companyName"/>
 						<!-- <u-icon name="arrow-right"></u-icon> -->
-						<u-text text='鎼滅储' type="primary"></u-text>
+						<u-text text='鎼滅储' type="primary" @click="search"></u-text>
 					</view>
 				</view>
 				<view class="form-item">
 					<view class="form-label require">
 						鎵ф硶鏃堕棿
 					</view>
-					<view class="input">
-						<input type="text" placeholder="璇疯緭鍏�"/>
+					<view class="input" @click="showTimeFun">
+						<input type="text" placeholder="璇疯緭鍏�" disabled v-model="form.planTimeStr"/>
 						<u-icon name="arrow-right"></u-icon>
 					</view>
 				</view>
-				<view class="form-item">
+				<view class="form-item" @click="showType = true">
 					<view class="form-label require">
 						鎵ф硶绫诲瀷
 					</view>
 					<view class="input">
-						<input type="text" placeholder="璇疯緭鍏�"/>
+						<input type="text" placeholder="璇疯緭鍏�" v-model="form.enforceTypeName" disabled/>
 						<u-icon name="arrow-right"></u-icon>
 					</view>
 				</view>
@@ -52,19 +52,27 @@
 					<view class="form-label">
 						鎵ф硶浜哄憳
 					</view>
-					<input type="text" placeholder="璇疯緭鍏�"/>
+					<input type="text" placeholder="璇疯緭鍏�" v-model="form.applyUser" disabled/>
 				</view>
 				<view class="form-item">
 					<view class="form-label">
 						鎵ф硶閮ㄩ棬
 					</view>
-					<input type="text" placeholder="璇疯緭鍏�"/>
+					<input type="text" placeholder="璇疯緭鍏�" v-model="form.applyDeptName" disabled/>
 				</view>
-				<view class="form-item">
-					<view class="form-label require">
-						闅忚浜哄憳鏁伴噺
+				<view class="form-item sui" style="align-items: flex-start;" @click="openPer">
+					<view class="form-label require ">
+						闅忚浜哄憳
 					</view>
-					<input type="text" placeholder="璇疯緭鍏�"/>
+					<view>
+						<view style="color: #a2a2a2;" class="placeholder" v-if="!form.peers.length">璇烽�夋嫨</view>
+						<view v-else>
+							<view style="margin-bottom: 20rpx;" v-for="(item,index) in form.peers"  :key="index">
+								{{item.peerUser}}({{item.peerDeptName}})
+							</view>
+						</view>
+					</view>
+					<!-- <u-textarea  border="none" disabled style="padding: 0;" placeholder="璇烽�夋嫨" ></u-textarea> -->
 				</view>
 				<view class="form-item down-2">
 					<view class="form-label">
@@ -76,7 +84,7 @@
 			</view>
 		</view>
 		<view class="down-options">
-			<view class="button record" >鐢宠璁板綍</view>
+			<view class="button record" @click="applyRecord">鐢宠璁板綍</view>
 			<view class="button submit" @click="submitApply">鎻愪氦鐢宠</view>
 		</view>
 		<!-- <u-form label-position="top" label-width="120px">
@@ -115,62 +123,90 @@
 <!-- 		<u-button @click="submitApply">鎻愪氦鐢宠</u-button>
 		<u-button @click="applyRecord">鐢宠璁板綍</u-button> -->
 		<u-picker :show="show" @close="show = false" @confirm="confirmSearch" @cancel="show = false" :columns="columns" keyName="companyName"></u-picker>
-		<u-datetime-picker
-					:show="showTime"
-					@close="showTime = false"
-					@cancel="showTime = false"
-					v-model="currentTime"
-					@confirm="confirmTime"
-					:minDate="minDate"
-					mode="dateTime"
-					ref="datetimePicker"
-					class="hide-clear-button"
-			></u-datetime-picker>
+		<!-- <u-datetime-picker
+			:show="showTime"
+			@close="showTime = false"
+			@cancel="showTime = false"
+			@confirm="confirmTime"
+			:minDate="minDate"
+			v-model="currentTime"
+			@change="changeValue"
+			mode="datetime"
+			ref="datetimePicker"
+			></u-datetime-picker> -->
+			 <yt-dateTimePicker
+			      ref="myPicker"
+			      @submit="confirmTime"
+			      :start-year="year"
+			      :end-year="endYear"
+			      :time-init="timeInit"
+			      :time-hide="[true, true, true, true, false, false]"
+			    />
 			<u-picker :show="showType" @close="showType = false" @confirm="confirmType" @cancel="showType = false" :columns="columnsType" keyName="dictLabel"></u-picker>
-			
+			<perPage :list="list" ref="perpage" @selectValue="selectValue"></perPage>
 	</view>
 </template>
 
 <script>
-	import { orderAdd, companyList } from '@/api/policy.js'
+	import { orderAdd, companyList, enforceList } from '@/api/policy.js'
 	import { getInfo } from '@/api/auth.js'
 	import { getDicts } from '@/api/data'
+	import perPage from './perPage'
+	import YtDateTimePicker from "uni_modules/yt-dateTimePicker/components/yt-dateTimePicker/yt-dateTimePicker.vue"
 	export default {
+		components: {
+			YtDateTimePicker,
+			perPage
+		},
 		data() {
 			return {
 				currentTime: "",
 				form: {
-					executeTime: "",
-					applyName: '',
+					applyUser: '',
 					applyDeptName: '',
 					enforceType: 1,
 					isNoticeCompany: 0,
-					regionReason: ''
+					regionReason: '',
+					planTimeStr: '',
+					peers: []
 				},
 				show: false,
 				columns: [],
 				showTime: false,
 				columnsType: [],
 				showType: false,
-				minDate: ''
+				minDate: '',
+				year: '',
+				endYear: '',
+				timeInit: '',
+				list: []
 			}
 		},
 		onLoad() {
-			this.currentTime = this.$u.timeFormat(new Date(), 'yyyy-mm-dd hh:MM:ss')
+			this.year = new Date().getFullYear()
+			this.endYear = this.year + 5
+			this.minDate = new Date().valueOf()
+			this.timeInit = this.$u.timeFormat(new Date(), 'yyyy-mm-dd')
 			this.getInfo()
 			this.getDicts()
+			this.enforceList()
 		},
 		methods: {
+			enforceList() {
+				enforceList().then(val => {
+					this.list = val.data.data
+				})
+			},
 			getDicts() {
 				getDicts('enforce_type').then(val =>{
-					console.log(val.data.data)
 					this.columnsType = [val.data.data]
 				})
 			},
 			getInfo() {
 				getInfo().then(val => {
 					const value = val.data.data
-					this.form.applyName = value.nickName
+					// this.form.applyName = value.nickName
+					this.form.applyUser = value.nickName
 					this.form.applyId = value.userId
 					this.form.applyDeptName = value.dept.deptName
 					this.form.applyDeptId = value.dept.deptId
@@ -194,12 +230,20 @@
 			submitApply(){
 				orderAdd(this.form).then(val => {
 					if(val.data.code == 200) {
-						uni.navigateBack()
+						uni.showToast({
+							title: '鎻愪氦鎴愬姛',
+							icon: 'none'
+						})
+						setTimeout(() => {
+							uni.navigateBack()
+						}, 500)
 					}
 				})
 			},
 			applyRecord() {
-			
+				uni.navigateTo({
+					url:`/policy/applyRecord/applyRecord`
+				})
 			},
 			search() {
 				companyList({companyName: this.form.companyName}).then(val => {
@@ -229,13 +273,13 @@
 				this.show = false
 			},
 			confirmTime(e) {
-				// console.log(e.value)
-				this.form.applyTime = e.value
-				this.showTime = false
+				this.form.planTime = e.year + '-' + e.month+ '-' + + e.day + ' ' + e.hour + ":" + "00:00"
+				this.form.planTimeStr = e.year + '-' + e.month+ '-' + + e.day + ' ' + e.hour
 			},
 			showTimeFun() {
-				this.showTime = true
-				
+				// this.showTime = true
+					      this.$refs.myPicker.show();
+
 			},
 			sheet(){
 				
@@ -244,6 +288,26 @@
 				this.form.enforceType = e.value[0].dictCode
 				this.form.enforceTypeName = e.value[0].dictLabel
 				this.showType = false
+			},
+			changeValue(e, e1) {
+				this.currentTime = e.value
+			},
+			openPer() {
+				this.$refs.perpage.open(this.list)
+			},
+			selectValue(value) {
+				this.list.forEach(item => {
+					if(value.includes(item.userId)) {
+						this.form.peers.push({
+							peerDeptId: item.dept.deptId,
+							peerDeptName: item.dept.deptName,
+							peerId: item.userId,
+							peerPhone: item.phonenumber,
+							peerType: 3,
+							peerUser: item.nickName
+						})
+					}
+				})
 			}
 		}
 	}
@@ -251,6 +315,9 @@
 <style>
 	page{
 		background-color: #F4F4F4;
+	}
+	.sui  .u-textarea{
+		padding: 0 !important;
 	}
 </style>
 <style scoped lang="scss">
@@ -323,7 +390,7 @@
 	padding-bottom: 40rpx;
 	width: 100%;
 	padding: 22rpx 30rpx 40rpx;
-	z-index: 1000;
+	z-index: 800;
 	display: flex;
 	justify-content: space-between;
 	align-items: center;
@@ -350,5 +417,8 @@
 		text-align: center;
 	}
 }
+.sui{
 
+}
+	
 </style>
diff --git a/policy/policyIndex/policyIndex.vue b/policy/policyIndex/policyIndex.vue
index 0a89f1b..0ad4e1f 100644
--- a/policy/policyIndex/policyIndex.vue
+++ b/policy/policyIndex/policyIndex.vue
@@ -1,7 +1,7 @@
 <template>
 	<view class="padding-bottom">
-		<policyIndexVue v-if="activeNumber == 0"></policyIndexVue>
-		<minePage v-if="activeNumber == 1"></minePage>
+		<policyIndexVue v-if="activeNumber == 0" :isJudge="isJudge" :userType="userInfo.userType" :userAuth="userAuth"></policyIndexVue>
+		<minePage v-if="activeNumber == 1" :userInfo="userInfo" :roleGroup="roleGroup"></minePage>
 		<tabsCom :activeNumber.sync="activeNumber"></tabsCom>
 	</view>
 </template>
@@ -20,7 +20,10 @@
 		data() {
 			return {
 				isJudge: false,
-				activeNumber: 0
+				activeNumber: 0,
+				userInfo: {},
+				roleGroup: '',
+				userAuth: false
 			}
 		},
 		onShow() {
@@ -29,8 +32,18 @@
 		methods: {
 			getInfo() {
 				getInfo().then(val =>{
-					// console.log()
-					this.isJudge = val.data.roles.some(item => item.includes('check_enforce'))
+					
+					this.userInfo = val.data
+					
+					if(val.data.roles) {
+						this.isJudge = val.data.roles.some(item => item.includes('check_enforce'))
+						const value = val.data.roles.filter(item => !item.includes('check_enforce'))
+						if(value.length) {
+							this.userAuth = true
+						} else {
+							this.userAuth = false
+						}
+					}
 				})
 			},
 			applyPulicy() {
diff --git a/static/head.png b/static/head.png
index 642f895..a0b9d2a 100644
--- a/static/head.png
+++ b/static/head.png
Binary files differ
diff --git a/static/i03.png b/static/i03.png
index 76cd63e..7514b15 100644
--- a/static/i03.png
+++ b/static/i03.png
Binary files differ
diff --git a/static/i04.png b/static/i04.png
index ea3e4f2..bcd24bf 100644
--- a/static/i04.png
+++ b/static/i04.png
Binary files differ
diff --git a/static/policy/back.png b/static/policy/back.png
index 3e08f69..a7dd443 100644
--- a/static/policy/back.png
+++ b/static/policy/back.png
Binary files differ
diff --git a/static/policy/qrcode-border.png b/static/policy/qrcode-border.png
index fedbe51..21e930b 100644
--- a/static/policy/qrcode-border.png
+++ b/static/policy/qrcode-border.png
Binary files differ
diff --git a/static/policy/zhi1.png b/static/policy/zhi1.png
index 6727715..6dfb7db 100644
--- a/static/policy/zhi1.png
+++ b/static/policy/zhi1.png
Binary files differ
diff --git a/static/policy/zhi2.png b/static/policy/zhi2.png
index 8d89f6c..90d0231 100644
--- a/static/policy/zhi2.png
+++ b/static/policy/zhi2.png
Binary files differ
diff --git a/static/policy/zhi3.png b/static/policy/zhi3.png
index 2203666..f48394c 100644
--- a/static/policy/zhi3.png
+++ b/static/policy/zhi3.png
Binary files differ
diff --git a/static/policy/zhi4.png b/static/policy/zhi4.png
index b84a45a..48b547f 100644
--- a/static/policy/zhi4.png
+++ b/static/policy/zhi4.png
Binary files differ
diff --git a/static/policy/zhi5.png b/static/policy/zhi5.png
index d93d97d..7b8f0a3 100644
--- a/static/policy/zhi5.png
+++ b/static/policy/zhi5.png
Binary files differ
diff --git a/uni_modules/yt-dateTimePicker/changelog.md b/uni_modules/yt-dateTimePicker/changelog.md
new file mode 100644
index 0000000..ad3546b
--- /dev/null
+++ b/uni_modules/yt-dateTimePicker/changelog.md
@@ -0,0 +1,92 @@
+## 1.2.2锛�2024-04-18锛�
+璇存槑鏂囨。
+## 1.2.1锛�2024-04-18锛�
+淇璇存槑鏂囨。
+## 1.2.0锛�2024-04-18锛�
+鏀规绉掓墦鍗颁笉鍑烘潵鐨勯棶棰�
+## 1.1.9锛�2024-01-11锛�
+淇敼榛樿鍊艰鏄庢枃妗�
+## 1.1.8锛�2024-01-11锛�
+淇敼榛樿鏃堕棿绌垮弬鏂瑰紡
+## 1.1.7锛�2023-11-07锛�
+淇敼绀轰緥閾炬帴
+## 1.1.6锛�2023-11-07锛�
+澧炲姞绀轰緥閾炬帴
+## 1.1.5锛�2023-11-06锛�
+鎬庡姞鑱旂郴鏂瑰紡
+## 1.1.4锛�2023-11-06锛�
+鏍囩淇敼
+## 1.1.3锛�2023-11-06锛�
+浠嬬粛淇敼
+## 1.1.2锛�2023-11-06锛�
+鍚嶇О淇敼
+## 1.1.0锛�2023-11-06锛�
+鏃堕棿閫夋嫨
+## 1.0.9锛�2023-11-06锛�
+淇敼bug
+## 1.0.8锛�2023-11-06锛�
+涓婁紶绀轰緥椤圭洰
+## 1.0.7锛�2023-11-06锛�
+鍒犻櫎鍥剧墖
+## 1.0.6锛�2023-11-06锛�
+淇敼璇存槑鏂囨。
+## 1.0.5锛�2023-11-04锛�
+鏇存柊璇存槑鏂囨。
+## 1.0.4\5锛�2023-11-04锛�
+鏇存柊璇存槑鏂囨。
+## 1.0.4\5锛�2023-11-04锛�
+鏇存柊璇存槑鏂囨。
+## 1.0.4\5锛�2023-11-04锛�
+鏇存柊璇存槑鏂囨。
+## 1.0.4锛�2023-11-03锛�
+淇敼bug
+## 1.0.3锛�2023-11-03锛�
+鏇存柊浣跨敤璇存槑
+## 1.0.2锛�2023-11-03锛�
+淇bug
+## 1.0.1锛�2023-11-03锛�
+淇敼鍙橀噺鍚�
+## 1.0.0锛�2023-11-03锛�
+淇鏃堕棿鍥炴樉闂
+# CHANGELOG
+## 0.7.0锛�2023-07-11锛�
+- 澧炲姞`time-init`灞炴��, 鑷畾涔夊垵濮嬫椂闂�, 榛樿涓哄綋鍓嶆椂闂�, 鍊间负鏃堕棿鎴�
+## 0.6.0锛�2023-07-11锛�
+
+- 澧炲姞瀵圭鐨勯�夋嫨
+- 澧炲姞`timeHidden`灞炴��, 鑷畾涔夊勾鏈堟棩鏃跺垎绉掕嚜鐢辨樉绀�
+- 澧炲姞`timeLabel`灞炴��, 鑷畾涔夌晫闈㈡椂闂村崟浣嶏紝榛樿涓� `["骞�", "鏈�", "鏃�", "鏃�", "鍒�", "绉�"]`
+- 淇寰俊灏忕▼搴忎腑鏃犳硶瀹氫綅鍒板綋鍓嶆椂闂�
+
+## 0.5.0锛�2021-08-17锛�
+
+- refactor
+
+## 0.4.1锛�2021-08-17锛�
+
+- update readme.md
+
+## 0.4.0锛�2021-08-17锛�
+
+- 绉婚櫎缁勪欢 `color` 灞炴��
+- update readme.md
+
+## 0.3.3锛�2021-08-15锛�
+
+- 淇敼鎻掍欢鍩烘湰淇℃伅
+
+## 0.3.2锛�2021-08-15锛�
+
+- 鏇存柊鏂囨。
+
+## 0.3.1锛�2021-08-15锛�
+
+- fix
+
+## 0.3.0锛�2019-07-22锛�
+
+- 澧炲姞 color 灞炴�э紝鍙互鏇存崲鎸夐挳棰滆壊
+
+## 0.0.4锛�2019-07-17锛�
+
+- 澧炲姞浠� npm 瀹夎鏂瑰紡
diff --git a/uni_modules/yt-dateTimePicker/components/yt-dateTimePicker/yt-dateTimePicker.vue b/uni_modules/yt-dateTimePicker/components/yt-dateTimePicker/yt-dateTimePicker.vue
new file mode 100644
index 0000000..4e32bc2
--- /dev/null
+++ b/uni_modules/yt-dateTimePicker/components/yt-dateTimePicker/yt-dateTimePicker.vue
@@ -0,0 +1,339 @@
+<template>
+	<view class="yt-dateTimePicker" v-if="done">
+		<view class="mask" :class="{ show: open }" @touchmove.stop.prevent catchtouchmove="true">
+		</view>
+		<view class="wrap" :class="{ show: open }">
+			<view class="picker-header" @touchmove.stop.prevent catchtouchmove="true">
+				<view class="btn-picker cancel" @click="open = false">鍙栨秷</view>
+				<view class="btn-picker submit" @click="_onSubmit">纭畾</view>
+			</view>
+			<view class="picker-body">
+				<picker-view :value="value" @change="_onChange">
+					<picker-view-column :disable-flicking="true" v-if="timeHide[0]">
+						<view class="column-item" v-for="item in years" :key="item">
+							{{ item + timeLabel[0] }}
+						</view>
+					</picker-view-column>
+					<picker-view-column :disable-flicking="true" v-if="timeHide[1]">
+						<view class="column-item" v-for="item in months" :key="item">
+							{{ formatNum(item) + timeLabel[1] }}
+						</view>
+					</picker-view-column>
+					<picker-view-column :disable-flicking="true" v-if="timeHide[2]">
+						<view class="column-item" v-for="item in days" :key="item">
+							{{ formatNum(item) + timeLabel[2] }}
+						</view>
+					</picker-view-column>
+					<picker-view-column :disable-flicking="true" v-if="timeHide[3]">
+						<view class="column-item" v-for="item in hours" :key="item">
+							{{ formatNum(item) + timeLabel[3] }}
+						</view>
+					</picker-view-column>
+					<picker-view-column :disable-flicking="true" v-if="timeHide[4]">
+						<view class="column-item" v-for="item in minutes" :key="item">
+							{{ formatNum(item) + timeLabel[4] }}
+						</view>
+					</picker-view-column>
+					<picker-view-column :disable-flicking="true" v-if="timeHide[5]">
+						<view class="column-item" v-for="item in seconds" :key="item">
+							{{ formatNum(item) + timeLabel[5] }}
+						</view>
+					</picker-view-column>
+				</picker-view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: "yt-dateTimePicker",
+		props: {
+			startYear: {
+				type: Number,
+				default: 2000,
+			},
+			endYear: {
+				type: Number,
+				default: 2099,
+			},
+			timeLabel: {
+				type: Array,
+				default: () => ["骞�", "鏈�", "鏃�", "鏃�", "鍒�", "绉�"],
+			},
+			timeHide: {
+				type: Array,
+				default: () => [true, true, true, true, true, true],
+			},
+			timeInit: {
+				type: String,
+				default: '', //new Date('2023-5-20').valueOf()
+			},
+		},
+
+		data() {
+			return {
+				open: false,
+				years: [],
+				months: [],
+				days: [],
+				hours: [],
+				minutes: [],
+				seconds: [],
+				year: "",
+				month: "",
+				day: "",
+				hour: "",
+				minute: "",
+				second: "",
+				value: [0, 0, 0, 0, 0, 0],
+				done: false,
+			};
+		},
+
+		computed: {
+			currentDatetime() {
+				return this.timeInit ? new Date(new Date(`${this.timeInit}`).valueOf()) : new Date(new Date().valueOf());
+			},
+		},
+
+		mounted() {
+			this.init();
+		},
+
+		watch: {
+			month() {
+				this.initDays();
+			},
+		},
+
+		methods: {
+			init() {
+				this.initYears();
+				this.initMonths();
+				this.initDays();
+				this.initHours();
+				this.initMinutes();
+				this.initSeconds();
+				this.setSelectValue();
+				this.done = true;
+			},
+
+			initYears() {
+				const years = [];
+				for (let year = this.startYear; year <= this.endYear; year++) {
+					years.push(year);
+					if (this.currentDatetime.getFullYear() === year) {
+						this.$set(this.value, 0, year - this.startYear);
+					}
+				}
+				this.years = years;
+			},
+
+			initMonths() {
+				const months = [];
+				for (let month = 1; month <= 12; month++) {
+					months.push(month);
+					if (this.currentDatetime.getMonth() + 1 === month) {
+						this.$set(this.value, 1, month - 1);
+					}
+				}
+				this.months = months;
+			},
+
+			initDays() {
+				const value = this.value;
+				const selectedYear = this.years[value[0]];
+				const selectedMonth = this.months[value[1]];
+				const days = [];
+				const totalDays = new Date(selectedYear, selectedMonth, 0).getDate();
+				for (let day = 1; day <= totalDays; day++) {
+					days.push(day);
+					if (this.currentDatetime.getDate() === day) {
+						this.$set(value, 2, day - 1);
+					}
+				}
+				this.days = days;
+			},
+
+			initHours() {
+				const hours = [];
+				for (let hour = 0; hour <= 23; hour++) {
+					hours.push(hour);
+					if (this.currentDatetime.getHours() === hour) {
+						this.$set(this.value, 3, hour);
+					}
+				}
+				this.hours = hours;
+			},
+
+			initMinutes() {
+				const minutes = [];
+				for (let minute = 0; minute < 60; minute++) {
+					minutes.push(minute);
+					if (this.currentDatetime.getMinutes() === minute) {
+						this.$set(this.value, 4, minute);
+					}
+				}
+				this.minutes = minutes;
+			},
+
+			initSeconds() {
+				const seconds = [];
+				for (let second = 0; second < 60; second++) {
+					seconds.push(second);
+					if (this.currentDatetime.getSeconds() === second) {
+						this.$set(this.value, 5, second);
+					}
+				}
+				this.seconds = seconds;
+			},
+
+			show() {
+				this.init();
+				this.open = true;
+			},
+
+			hide() {
+				this.open = false;
+			},
+
+			_onChange(e) {
+				this.value = e.detail.value;
+				this.setSelectValue();
+			},
+
+			setSelectValue() {
+				const v = this.value;
+				this.year = this.years[v[0]];
+				this.month = this.months[v[1]];
+				this.day = this.days[v[2]];
+				this.hour = this.hours[v[3]];
+				this.minute = this.minutes[v[4]];
+				this.second = this.seconds[v[5]];
+			},
+
+			_onSubmit() {
+				const {
+					year,
+					month,
+					day,
+					hour,
+					minute,
+					second,
+					formatNum,
+					timeHide,
+					timeLabel,
+				} = this;
+				const result = {
+					year: timeHide[0] ? formatNum(year) : "",
+					month: timeHide[1] ? formatNum(month) : "",
+					day: timeHide[2] ? formatNum(day) : "",
+					hour: timeHide[3] ? formatNum(hour) : "",
+					minute: timeHide[4] ? formatNum(minute) : "",
+					second: timeHide[5] ? formatNum(second) : "",
+				};
+				this.$emit("submit", result);
+				this.hide(); 
+			},
+
+			formatNum(num) {
+				return num < 10 ? "0" + num : num + "";
+			},
+		},
+	};
+</script>
+
+<style lang="scss">
+	$transition: all 0.3s ease;
+	$primary: #1171E0;
+
+	.yt-dateTimePicker {
+		position: relative;
+		z-index: 999;
+
+		picker-view {
+			height: 100%;
+		}
+
+		.mask {
+			position: fixed;
+			z-index: 1000;
+			top: 0;
+			right: 0;
+			bottom: 0;
+			left: 0;
+			background-color: rgba(0, 0, 0, 0.4);
+			visibility: hidden;
+			opacity: 0;
+			transition: $transition;
+
+			&.show {
+				visibility: visible;
+				opacity: 1;
+			}
+		}
+
+		.wrap {
+			z-index: 1001;
+			position: fixed;
+			bottom: 0;
+			left: 0;
+			width: 100%;
+			transition: $transition;
+			transform: translateY(100%);
+
+			&.show {
+				transform: translateY(0);
+			}
+		}
+
+		.picker-header {
+			display: flex;
+			flex-direction: row;
+			justify-content: space-between;
+			align-items: center;
+			padding: 8px 8px;
+			background-color: darken(#fff, 2%);
+			background-color: #fff;
+		}
+
+		.picker-body {
+			width: 100%;
+			height: 420rpx;
+			overflow: hidden;
+			background-color: #fff;
+		}
+
+		.column-item {
+			text-overflow: ellipsis;
+			white-space: nowrap;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+		}
+
+		.btn-picker {
+			position: relative;
+			display: inline-block;
+			padding-left: 10px;
+			padding-right: 10px;
+			box-sizing: border-box;
+			text-align: center;
+			text-decoration: none;
+			line-height: 2;
+			-webkit-tap-highlight-color: transparent;
+			overflow: hidden;
+			background-color: #eee;
+			font-size: 14px;
+			border-radius: 3px;
+			color: #000;
+			cursor: pointer;
+		}
+
+		.btn-picker.submit {
+			background-color: $primary;
+			color: #fff;
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/uni_modules/yt-dateTimePicker/package.json b/uni_modules/yt-dateTimePicker/package.json
new file mode 100644
index 0000000..53bbbd9
--- /dev/null
+++ b/uni_modules/yt-dateTimePicker/package.json
@@ -0,0 +1,76 @@
+{
+  "id": "yt-dateTimePicker",
+  "displayName": "鏃ユ湡鏃堕棿閫夋嫨鍣紙瓒呯骇濂界敤锛夎嚜甯︽粦鍔ㄩ煶鏁�",
+  "version": "1.2.2",
+  "description": "杩欎釜閫夋嫨鍣ㄥ厑璁哥敤鎴烽�夋嫨骞淬�佹湀銆佹棩銆佹椂銆佸垎鍜岀锛屾彁渚涗簡涓板瘜鐨勬牱寮忓拰閰嶇疆閫夐」銆傞�氳繃璁剧疆璧峰鏃堕棿鍜岀粨鏉熸椂闂磋寖鍥达紝鐢ㄦ埛鍙互鏂逛究鍦拌繘琛岀簿鍑嗙殑鏃ユ湡鍜屾椂闂撮�夋嫨銆傛槸寮�鍙憉ni-app搴旂敤绋嬪簭鐨勭悊鎯抽�夋嫨涔嬩竴锛�",
+  "keywords": [
+    "鏃堕棿",
+    "鏃ユ湡",
+    "骞存湀鏃�",
+    "鏃堕棿閫夋嫨鍣�",
+    "鏃ユ湡鏃堕棿閫夋嫨鍣�"
+],
+  "repository": "",
+"engines": {
+  },
+"dcloudext": {
+    "sale": {
+      "regular": {
+        "price": "0.00"
+      },
+      "sourcecode": {
+        "price": "0.00"
+      }
+    },
+    "contact": {
+      "qq": "3190136675"
+    },
+    "declaration": {
+      "ads": "鏃�",
+      "data": "鏃�",
+      "permissions": "鏃�"
+    },
+    "npmurl": "",
+    "type": "component-vue"
+  },
+  "uni_modules": {
+    "dependencies": [],
+    "encrypt": [],
+    "platforms": {
+      "cloud": {
+        "tcb": "y",
+        "aliyun": "y"
+      },
+      "client": {
+        "App": {
+          "app-vue": "y",
+          "app-nvue": "u"
+        },
+        "H5-mobile": {
+          "Safari": "y",
+          "Android Browser": "y",
+          "寰俊娴忚鍣�(Android)": "y",
+          "QQ娴忚鍣�(Android)": "y"
+        },
+        "H5-pc": {
+          "Chrome": "y",
+          "IE": "n",
+          "Edge": "y",
+          "Firefox": "y",
+          "Safari": "y"
+        },
+        "灏忕▼搴�": {
+          "寰俊": "y",
+          "闃块噷": "u",
+          "鐧惧害": "u",
+          "瀛楄妭璺冲姩": "u",
+          "QQ": "u"
+        },
+        "蹇簲鐢�": {
+          "鍗庝负": "u",
+          "鑱旂洘": "u"
+        }
+      }
+    }
+  }
+}
diff --git a/uni_modules/yt-dateTimePicker/readme.md b/uni_modules/yt-dateTimePicker/readme.md
new file mode 100644
index 0000000..6711f7f
--- /dev/null
+++ b/uni_modules/yt-dateTimePicker/readme.md
@@ -0,0 +1,85 @@
+# uniApp 绠�鍗曠殑鏃ユ湡鏃堕棿閫夋嫨鍣�
+
+uniApp 鏃ユ湡鏃堕棿閫夋嫨鍣�, 鍙�夋嫨骞�, 鏈�, 鏃�, 鏃�, 鍒�, 绉�.
+
+
+## 绀轰緥閾炬帴
+
+[璁$畻浣犳潵鍒拌繖涓笘鐣屽灏戝ぉ浜哴(https://tinyurl.com/yangtao-age)
+
+## 婕旂ず鏁堟灉鍥�
+
+<p>
+  <img align=top src="https://7072-prod-4gapv4gl33a8a0ff-1305990777.tcb.qcloud.la/%E9%87%8D%E8%A6%81%E5%9B%BE%E7%89%87%E5%AD%98%E5%82%A8/uniappcj.png?sign=67f6bd2b9d1e5f5bbdecc5ffdf9b923d&t=1699237042" width="500px" height="auto">
+</p>
+
+
+## 鐢ㄦ硶
+
+鍦� template 涓細
+
+```vue
+<template>
+  <view>
+    <button type="default" @click="openDatetimePicker">鏃堕棿閫夋嫨</button>
+    <yt-dateTimePicker
+      ref="myPicker"
+      @submit="handleSubmit"
+      :start-year="2000"
+      :end-year="2099"
+      time-init="2023-5-20"
+      :time-hide="[true, true, true, true, true, false]"
+      :time-label="['骞�', '鏈�', '鏃�', '鏃�', '鍒�', '绉�']"
+    />
+  </view>
+</template>
+```
+
+鍦� script 涓細
+
+- 璇ユ彃浠堕伒寰� easycom 瑙勮寖, 涓嶇敤鏄惧紡瀵煎叆灏卞彲浠ヤ娇鐢� `<yt-dateTimePicker />`
+- 濡傞渶鎸夐渶瀵煎叆鍙互浣跨敤`import YtDateTimePicker from "uni_modules/yt-dateTimePicker/components/yt-dateTimePicker/yt-dateTimePicker.vue";`
+
+```javascript
+export default {
+  data() {
+    return {
+      birthday: "",
+    };
+  },
+  methods: {
+    // 鎵撳紑picker
+    openDatetimePicker() {
+      this.$refs.myPicker.show();
+    },
+
+    // 鍏抽棴picker
+    closeDatetimePicker() {
+      this.$refs.myPicker.hide();
+    },
+
+    handleSubmit(e) {
+      this.birthday = `${e.year}-${e.month}-${e.day} ${e.hour}:${e.minute}:${e.second}`;
+    },
+  },
+};
+```
+
+> Note: 涓嶈鎶婄粍浠舵斁 swiper 閲岄潰鎴栬�� v-for 閲岄潰绛�, 鏈�濂芥斁鍦ㄩ〉闈㈡牴閮�. 閫氬父鎯呭喌涓嬫墦寮� picker 闇�瑕佽皟鐢╜this.$refs.refName.show()`, 鍦ㄩ�夋嫨瀹屾瘯鍚� picker 浼氳嚜鍔ㄩ殣钘忥紝涓嶉渶瑕佽皟鐢╜this.$refs.refName.hide()`鏉ユ墜鍔ㄩ殣钘忋��
+
+## 灞炴�ц鏄�
+
+| 灞炴��		| 鏄惁蹇呭~	|  鍊肩被鍨�	| 榛樿鍊�	| 璇存槑			|
+| --------- | -------- 	| -----: 	| --: 	| :------------:|
+| start-year|	鏄�  		| Number	|2000	| 閫夋嫨寮�濮嬪勾浠�	|
+| end-year	|	鏄� 		| Number	|2099	| 閫夋嫨缁撴潫骞翠唤	|
+| time-init	|	鍚� 		| String	|2023-5-20| 鑷畾涔夊垵濮嬫椂闂�, 榛樿涓哄綋鍓嶆椂闂�	|
+| time-hidden|	鏄� 		| Array	|[true, true, true, true, true, true]| 鑷畾涔夋椂闂村垪鏄剧ず锛岄粯璁ゆ樉绀哄勾鏈堟棩鏃ュ垎 |
+| time-label|	鍚� 		| Array	|['骞�', '鏈�', '鏃�', '鏃�', '鍒�', '绉�']	| 鑷畾涔夊悇涓椂闂村崟浣�	|
+| @submit	|	鍚� 		| Function	|Object	|  鐩戝惉閫夋嫨浜嬩欢, 鍥炶皟鍑芥暟鐨勭涓�涓弬鏁板寘鍚簡閫夋嫨鏃堕棿鐨勫畬鏁翠俊鎭瘄
+
+| `QQ浜ゆ祦缇�(906392632)`  |
+
+|<p><img align=top src="https://7072-prod-4gapv4gl33a8a0ff-1305990777.tcb.qcloud.la/%E9%87%8D%E8%A6%81%E5%9B%BE%E7%89%87%E5%AD%98%E5%82%A8/Snipaste_2023-11-06_16-50-56.png?sign=ed27f09cfeabb33e24835fecdd4108db&t=1699260686" width="500px" height="auto"></p>|
+| QQ缇ゅ彿锛�906392632      |
+

--
Gitblit v1.9.1