| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272 | <script setup>	import {		ref	} from "vue";	import {		onLoad,		onPullDownRefresh,		onReachBottom,		onPageScroll,	} from "@dcloudio/uni-app";	import {		getImportantKind,		getImportantList	} from "@/api/work/important.js";	import {		timeFormat	} from "@/utils/timeFormatter.js";	// ====================================选择开始时间	let beginDateStart = ref(null)	let beginTimeShow = ref(false)	function showBeginTimeChoose() {		beginTimeShow.value = true	}	function beginTimeClose(e) {		if (e) {			let time = timeFormat(e.value)			searchInfo.value.beginDate = time		}		beginTimeShow.value = false	}	// ====================================选择结束时间	let beginDateEnd = ref(null)	let endTimeShow = ref(false)	function showEndTimeChoose() {		endTimeShow.value = true	}	function endTimeClose(e) {		if (e) {			let time = timeFormat(e.value)			searchInfo.value.endDate = time		}		endTimeShow.value = false	}	// ====================================选择专题类型	let kindList = ref([]);	let kindListFull = ([]);	function getKindList() {		getImportantKind().then(res => {			kindList.value = [res.data.type.map(item => item.title)];			kindListFull = res.data.type;		})	};	let kindShow = ref(false)	function showKindChoose() {		kindShow.value = true	}	function kindClose(e) {		if (e) searchInfo.value.kind = e.value[0];		kindShow.value = false;	}	// =========================================搜索	let scrollTop = ref(0);	let moreListFlag = true; // 触底加载flag	let searchInfo = ref({		pageNo: 1,		pageSize: 10,		kind: null, //当前页面		host: null, //主持人姓名		title: null, //会议主题		beginDate: null, //会议时间段_开始时间		endDate: null, //会议时间段_结束时间	});	let projectList = ref([]);	let listTotal = ref(0);	function reSearch() {		searchInfo.value.pageNo = 1;		projectList.value = [];		moreListFlag = true;		getList();	};	function getList() {		let params = Object.assign({}, searchInfo.value);		if (params.beginDate) {			params.beginDate = params.beginDate.replace('/', '-');			params.beginDate = params.beginDate.replace('/', '-');		}		if (params.endDate) {			params.endDate = params.endDate.replace('/', '-');			params.endDate = params.endDate.replace('/', '-');		}		getImportantList(params).then(res => {			projectList.value = projectList.value.concat(res.data.list);			listTotal.value = res.data.total;			if (res.data.total == searchInfo.value.pageNo*searchInfo.value.pageSize-(10 - res.data.list.length)) moreListFlag = false;		})	};	function goToPage(id) {		uni.navigateTo({			url: `/pages/important/detail/index?id=${id}`		})	}	onLoad(() => {		let now = new Date();		let year = now.getFullYear();		let month = now.getMonth() + 1 < 10 ? `0${now.getMonth() + 1< 10}` : now.getMonth() + 1;		let day = now.getDate() < 10 ? `0${now.getDate()}` : now.getDate();		beginDateStart.value = `${year}/${month}/${day}`; // 开始时间		beginDateEnd.value = `${year}/${month}/${day}`; // 结束时间		getKindList();		getList();	})	onPullDownRefresh(() => {		try {			searchInfo.value = {				pageNo: 1,				pageSize: 10,				kind: null, //当前页面				host: null, //主持人姓名				title: null, //会议主题				beginDate: null, //会议时间段_开始时间				endDate: null, //会议时间段_结束时间			};			reSearch();		} finally {			uni.stopPullDownRefresh()		}	})	onReachBottom(() => {		if (!moreListFlag) {			return uni.showToast({				title: "已经到底了。",				icon: "none",				duration: 2000			})		}		searchInfo.value.pageNo++;		getList();	});	onPageScroll((e) => {		scrollTop.value = e.scrollTop;	});</script><template>	<view class="container">		<page-title>重大事项</page-title>		<view class="cards-list">			<view class="card only-card">				<!-- 计划开始日期 -->				<view class="card-item first-card-item" @click="showBeginTimeChoose()">					<view class="card-item-name">开始日期</view>					<view class="card-item-description">						<view v-if="searchInfo.beginDate">{{searchInfo.beginDate}}</view>						<view v-else class="remind-text">请选择开始日期</view>						<u-icon name="arrow-right" color="#343437" size="16" customStyle="margin-left:10rpx"></u-icon>					</view>				</view>				<!-- 计划结束日期 -->				<view class="card-item" @click="showEndTimeChoose()">					<view class="card-item-name">结束日期</view>					<view class="card-item-description">						<view v-if="searchInfo.endDate">{{searchInfo.endDate}}</view>						<view v-else class="remind-text">请选择结束日期</view>						<u-icon name="arrow-right" color="#343437" size="16" customStyle="margin-left:10rpx"></u-icon>					</view>				</view>				<!-- 事项 -->				<view class="card-item">					<view class="card-item-name">事项</view>					<input v-model="searchInfo.xxx" class="card-item-input" placeholder="请填写事项" placeholder-style="color: #D8D8D8"						maxlength="20" />				</view>				<!-- 专题类型 -->				<view class="card-item" @click="showKindChoose()">					<view class="card-item-name">专题类型</view>					<view class="card-item-description">						<view v-if="searchInfo.kind">{{searchInfo.kind}}</view>						<view v-else class="remind-text">请选择状态</view>						<u-icon name="arrow-right" color="#343437" size="16" customStyle="margin-left:10rpx"></u-icon>					</view>				</view>			</view>			<view class="search-btn" @click="reSearch()">确定</view>			<view class="card" v-for="(item,index) in projectList" :key="index">				<card-title :numerator="index+1" :denominator="listTotal"></card-title>				<view class="card-item">					<view class="card-item-name">专题类型</view>					<view class="card-item-content">{{item.kindName || "--"}}</view>				</view>				<view class="card-item">					<view class="card-item-name">日期</view>					<view class="card-item-content">{{item.meetingDate || "--"}}</view>				</view>				<view class="card-item">					<view class="card-item-name">主题</view>					<view class="card-item-content zrrTel">{{item.meetingTitle || "--"}}</view>				</view>				<view class="card-item">					<view class="card-item-name">主持人</view>					<view class="card-item-content">{{item.host || "--"}}</view>				</view>				<view class="card-item" @click="goToPage(item.id)">					<view class="card-btn fat-btn empty-btn">查看详情</view>				</view>			</view>			<empty-show v-if="projectList.length===0"></empty-show>		</view>		<!-- 开始时间 -->		<u-datetime-picker :show="beginTimeShow" @confirm="beginTimeClose" @cancel="beginTimeClose" @close="beginTimeClose"			v-model="beginDateStart" mode="date" closeOnClickOverlay></u-datetime-picker>		<!-- 结束时间 -->		<u-datetime-picker :show="endTimeShow" @confirm="endTimeClose" @cancel="endTimeClose" @close="endTimeClose"			v-model="beginDateEnd" mode="date" closeOnClickOverlay></u-datetime-picker>		<!-- 专题类型 -->		<u-picker :show="kindShow" :columns="kindList" @confirm="kindClose" @cancel="kindClose" @close="kindClose"			closeOnClickOverlay></u-picker>		<u-back-top :scroll-top="scrollTop"></u-back-top>	</view></template><style lang="scss" scoped>	.search-btn {		width: 98%;		height: 84rpx;		margin: 40rpx auto 56rpx;		line-height: 84rpx;		text-align: center;		color: #FFFFFF;		font-size: 36rpx;		background: #1763E7;		border-radius: 16rpx;	}</style>
 |