Răsfoiți Sursa

材料采集bug修改

liurongli 1 lună în urmă
părinte
comite
9aa44ba1c9

+ 99 - 15
common/common.js

@@ -119,28 +119,112 @@ export function  getFormatNumber(numberStr) {
     
     return formatted;
 }
+/**
+ * 格式化时间,输出:xx月xx日 时:分,去除年份、秒
+ * @param {string|number|null} time
+ * @returns {string}
+*/
+export function formatToMonthDayHM(time) {
+    if (time == null || time === '') {
+        return ''
+    }
+    const str = String(time).trim().replace('T', ' ')
+    const match = str.match(/^(\d{4})-(\d{2})-(\d{2})(?:\s+(\d{2}:\d{2}))?(?::\d{2})?/)
+    if (!match) {
+        return str
+    }
+    const month = match[2]
+    const day = match[3]
+    const hm = match[4]
+    if (hm) {
+        return `${month}-${day} ${hm}`
+    }
+    return `${month}-${day}`
+}
 
-export function remainingDays(endTime) {
-    if (!endTime) return null;
+/**
+ * 去掉后端时间中的秒,页面只展示「年月日 时分」
+ * 支持:2026-08-27 16:44:00、2026-08-27T16:44:59、2026-08-27
+ */
+export function formatTimeWithoutSeconds(time) {
+    if (time == null || time === '') {
+        return ''
+    }
+    const str = String(time).trim().replace('T', ' ')
+    const match = str.match(/^(\d{4}-\d{2}-\d{2})(?:\s+(\d{2}:\d{2}))?(?::\d{2})?/)
+    if (!match) {
+        return str
+    }
+    if (match[2]) {
+        return `${match[1]} ${match[2]}`
+    }
+    return match[1]
+}
 
-    const MS_PER_DAY = 24 * 60 * 60 * 1000;
+/**
+ * 开始时间传给后端:补写死的 00 秒
+ * 例:2026-08-27 16:44 → 2026-08-27 16:44:00
+ */
+export function toApiStartTime(time) {
+    const base = formatTimeWithoutSeconds(time)
+    if (!base) {
+        return ''
+    }
+    if (/^\d{4}-\d{2}-\d{2}$/.test(base)) {
+        return `${base} 00:00:00`
+    }
+    return `${base}:00`
+}
+
+/**
+ * 结束时间传给后端:补写死的 59 秒
+ * 例:2026-08-27 17:30 → 2026-08-27 17:30:59
+ */
+export function toApiEndTime(time) {
+    const base = formatTimeWithoutSeconds(time)
+    if (!base) {
+        return ''
+    }
+    if (/^\d{4}-\d{2}-\d{2}$/.test(base)) {
+        return `${base} 23:59:59`
+    }
+    return `${base}:59`
+}
+/**
+ * 剩余时间:结束时间减去当前时间,精确到分钟。
+ * 满一天显示「X天X小时X分」,不足一天显示「X小时X分」或「X分」。
+ * 已过期返回 null。
+ *
+ * @param {string|Date} endTime - 结束时间
+ * @returns {string|null}
+ */
+export function remainingDays(endTime) {
+    if (!endTime) return null
 
-    // 1) 将结束时间转为 Date 对象
-    const end = new Date(endTime);
-    if (isNaN(end.getTime())) return null;
+    const end = new Date(typeof endTime === 'string' ? String(endTime).replace(/-/g, '/') : endTime)
+    if (isNaN(end.getTime())) return null
 
-    // 2) 取今天的"零点"日期(精确到日,不考虑时分秒)
-    const today = new Date();
-    const todayStart = new Date(today.getFullYear(), today.getMonth(), today.getDate());
+    const diffMs = end.getTime() - Date.now()
+    if (diffMs <= 0) return null
 
-    // 3) 取结束日期的"零点"
-    const endStart = new Date(end.getFullYear(), end.getMonth(), end.getDate());
+    const MS_PER_MINUTE = 60 * 1000
+    const MS_PER_HOUR = 60 * MS_PER_MINUTE
+    const MS_PER_DAY = 24 * MS_PER_HOUR
 
-    // 4) 计算天数差并 +1(含当天和结束天)
-    const diffDays = Math.round((endStart.getTime() - todayStart.getTime()) / MS_PER_DAY);
+    const days = Math.floor(diffMs / MS_PER_DAY)
+    const hours = Math.floor((diffMs % MS_PER_DAY) / MS_PER_HOUR)
+    const minutes = Math.floor((diffMs % MS_PER_HOUR) / MS_PER_MINUTE)
 
-    if (diffDays < 0) return 0;   // 已过期:不显示剩余时间
-    return diffDays + 1;             // 18号到22号:22-18=4,加1后=5天
+    if (days > 0) {
+        return `${days}天${hours}小时${minutes}分`
+    }
+    if (hours > 0) {
+        return `${hours}小时${minutes}分`
+    }
+    if (minutes > 0) {
+        return `${minutes}分`
+    }
+    return '不足1分'
 }
 //时间
 export function unioformDateTransform(date, param = "time"){

+ 5 - 5
pages/materialCollection/reviewMaterial/auditDetail.vue

@@ -38,10 +38,10 @@
 					</view>
 					<view class="task_time">
 						<view class="time_day">
-							<text class="time_item">{{state?.details?.startTime}}</text>
+							<text class="time_item">{{formatTimeWithoutSeconds(state?.details?.startTime)}}</text>
 							<text class="time_item">至</text>
-							<text class="time_item">{{state?.details?.endTime}}</text>
-							<text class="time_item" v-if="remainingDays(state?.details?.endTime) > 0">剩余{{remainingDays(state?.details?.endTime)}}天</text>
+							<text class="time_item">{{formatTimeWithoutSeconds(state?.details?.endTime)}}</text>
+							<text class="time_item" v-if="remainingDays(state?.details?.endTime)">剩余{{remainingDays(state?.details?.endTime)}}</text>
 						</view>
 						<view :class="['task_status', statusClassMap[state?.details?.taskStatus]]">
 							{{taskStatusMap[state?.details?.taskStatus]}}
@@ -82,7 +82,7 @@
 							</view>
 							<view class="item_info">
 								<text class="info_text">{{item.showInfo}}</text>
-								<text class="info_text">{{item?.taskTargetFileVos?.[item.taskTargetFileVos.length -1]?.createTime}}</text>
+								<text class="info_text">{{formatTimeWithoutSeconds(item?.taskTargetFileVos?.[item.taskTargetFileVos.length -1]?.createTime)}}</text>
 							</view>
 						</view>
 						<view class="no_data" v-if="!state.isLoading && state.pageList.length == 0">
@@ -100,7 +100,7 @@
 	import uniIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue';
 	import uvSticky from '@/uni_modules/uv-sticky/components/uv-sticky/uv-sticky.vue'; //吸顶
 	import navBar from '@/components/navBar.vue';
-	import { remainingDays } from '@/common/common.js';
+	import { remainingDays,formatTimeWithoutSeconds } from '@/common/common.js';
 	import {getReviewTaskList} from '@/reqApi/notification.js';
 	import {
 		onLoad,

+ 3 - 3
pages/materialCollection/reviewMaterial/index.vue

@@ -47,8 +47,8 @@
 								<text>待审核:{{ item?.notReviewNum || 0 }}</text>
 							</view>
 							<text class="stats_text">
-								<template v-if="remainingDays(item.endTime) > 0">剩余时间:{{remainingDays(item.endTime) }}天</template>
-								<template v-else>结束时间:{{item.endTime }}</template>
+								<template v-if="remainingDays(item.endTime)">剩余时间:{{remainingDays(item.endTime) }}</template>
+								<template v-else>结束时间:{{formatToMonthDayHM(item.endTime) }}</template>
 							</text>
 						</view>
 						<view class="notice_actions">
@@ -73,7 +73,7 @@ import { reactive,ref,nextTick, onMounted,onUnmounted } from 'vue';
 import {onShow} from '@dcloudio/uni-app';
 import navBar from '@/components/navBar.vue';
 import {getTaskTargetReview,getSchoolYearList,getCategoryList} from '@/reqApi/notification.js';
-import { truncateText,remainingDays } from '@/common/common.js';
+import { truncateText,remainingDays,formatToMonthDayHM } from '@/common/common.js';
 
 const state = reactive({
 	filterPickerData: [{

+ 3 - 3
pages/materialCollection/submitMaterial/index.vue

@@ -47,8 +47,8 @@
 								<text>{{ tabStatusClassMap[state.params.auditStatus] }}:{{ item?.taskTargetVos?.length || 0 }}</text>
 							</view>
 							<text class="stats_text">
-								<template v-if="remainingDays(item.endTime) > 0">剩余时间:{{remainingDays(item.endTime) }}天</template>
-								<template v-else>结束时间:{{item.endTime }}</template>
+								<template v-if="remainingDays(item.endTime)">剩余时间:{{remainingDays(item.endTime) }}</template>
+								<template v-else>结束时间:{{formatToMonthDayHM(item.endTime) }}</template>
 							</text>
 						</view>
 						<view class="notice_actions">
@@ -73,7 +73,7 @@
 	import navBar from '@/components/navBar.vue';
 	import {onShow} from '@dcloudio/uni-app';
 	import {findTeacherTaskTargetList,getSchoolYearList,getCategoryList} from '@/reqApi/notification.js';
-	import { truncateText,remainingDays } from '@/common/common.js';
+	import { truncateText,remainingDays,formatToMonthDayHM } from '@/common/common.js';
 
 	const state = reactive({
 		filterPickerData: [{

+ 57 - 12
pages/materialCollection/submitMaterial/submitDetail.vue

@@ -12,10 +12,10 @@
 				</view>
 				<view class="task_time">
 					<view class="time_day">
-						<text class="time_item">{{state?.details?.startTime}}</text>
+						<text class="time_item">{{formatTimeWithoutSeconds(state?.details?.startTime)}}</text>
 						<text class="time_item">至</text>
-						<text class="time_item">{{state?.details?.endTime}}</text>
-						<text class="time_item" v-if="state?.details?.taskStatus === 1 && remainingDays(state?.details?.endTime) > 0">剩余{{remainingDays(state?.details?.endTime)}}天</text>
+						<text class="time_item">{{formatTimeWithoutSeconds(state?.details?.endTime)}}</text>
+						<text class="time_item" v-if="state?.details?.taskStatus === 1 && remainingDays(state?.details?.endTime)">剩余{{remainingDays(state?.details?.endTime)}}</text>
 					</view>
 					<view :class="['task_status', statusClassMap[state?.details?.taskStatus]]">
 						{{taskStatusMap[state?.details?.taskStatus]}}
@@ -126,7 +126,7 @@
 								<view class="file_name">{{item.fileName}}</view>
 								<view class="file_size">
 									<text>{{getFileSize(item.fileSize)}}</text>
-									<text>{{ item.createTime }}</text>
+									<text>{{ formatTimeWithoutSeconds(item.createTime) }}</text>
 								</view>
 							</view>
 							<view class="file_btn">
@@ -141,7 +141,7 @@
 								<view class="file_name">{{item.fileName}}</view>
 								<view class="file_size">
 									<text>{{getFileSize(item.fileSize)}}</text>
-									<text>{{ item.createTime }}</text>
+									<text>{{ formatTimeWithoutSeconds(item.createTime) }}</text>
 								</view>
 							</view>
 							<view class="file_btn">
@@ -157,7 +157,7 @@
 						<view class="file_name">{{item.fileName}}</view>
 						<view class="file_size">
 							<text>{{getFileSize(item.fileSize)}}</text>
-							<text>{{ item.createTime }}</text>
+							<text>{{ formatTimeWithoutSeconds(item.createTime) }}</text>
 						</view>
 					</view>
 					<view class="file_btn">
@@ -205,7 +205,7 @@
 	// #endif
 	import kexFileUploader from '@/uni_modules/kex-file-uploader/components/kex-file-uploader/kex-file-uploader.vue';
 	import navBar from '@/components/navBar.vue';
-	import { remainingDays,getFileSize,getFileTypeBySuffix } from '@/common/common.js';
+	import { remainingDays,getFileSize,getFileTypeBySuffix,formatTimeWithoutSeconds } from '@/common/common.js';
 	import {getTaskTargetFileList,DeleteFileList,DelTaskTargetFileList,updateTaskTarget,uploadTaskTargetFileList} from '@/reqApi/notification.js';
 	import {onLoad} from '@dcloudio/uni-app';
 	import config from '@/config.js'; // 引入配置文件
@@ -265,6 +265,7 @@
 		uni.removeStorageSync('isLoadSubmitMaterialIndex');//返回是否重新更新提交材料首页
 		getApiBaseUrl();//上传接口地址
 		GetTaskTargetFileList(true);
+		checkTextOverflow();
 	});
 	//上传接口地址
 	const getApiBaseUrl = () => {
@@ -385,6 +386,42 @@
 			fileName:item.fileName
 		});
 	}
+	const checkTextOverflow = () => {
+		nextTick(() => {
+			const instance = getCurrentInstance();
+			// 安全保护
+			if (!instance || !instance.proxy) {
+				// 备用方案:全局查询(要求元素 class 唯一)
+				let taskDescAllHeight = 0,
+					taskDescHeight = 0;
+				const query = uni.createSelectorQuery();
+				query.select('.task_desc_all').boundingClientRect((rect) => {
+					taskDescAllHeight = rect?.height || 0;
+				});
+				query.select('.task_desc').boundingClientRect((rect) => {
+					taskDescHeight = rect?.height || 0;
+				});
+				query.exec(() => {
+					// 所有回调执行完毕后触发
+					state.showExpandBtn = taskDescAllHeight > taskDescHeight + 1;
+				});
+				return;
+			}
+			let taskDescAllHeight = 0,
+				taskDescHeight = 0;
+			const query = uni.createSelectorQuery().in(instance.proxy);
+			query.select('.task_desc_all').boundingClientRect((rect) => {
+				taskDescAllHeight = rect?.height || 0;
+			});
+			query.select('.task_desc').boundingClientRect((rect) => {
+				taskDescHeight = rect?.height || 0;
+			});
+			query.exec(() => {
+				// 所有回调执行完毕后触发
+				state.showExpandBtn = taskDescAllHeight > taskDescHeight + 1;
+			});
+		});
+	}
 	// 展开收起切换
 	const toggleExpand = () => {
 		state.isExpand = !state.isExpand;
@@ -549,12 +586,16 @@
 <style scoped lang="scss">
 	.page_body{
 		height: 100%;
+		display: flex;
+		flex-direction: column;
+		min-height: auto;
 	}
 	.page_content_height{
 		display: flex;
 		flex-direction: column;
 		width: 100%;
-		height: calc(100% - 240rpx);
+		// height: calc(100% - 240rpx);
+		flex:1;
 		overflow: auto;
 	}
 	.page_content {
@@ -838,13 +879,17 @@
 		}
 	}
 	.page_foot{
-		position: fixed;
+		// position: fixed;
+		// display: flex;
+		// align-items: center;
+		// left: 0;
+		// right: 0;
+		// bottom: 0;
 		display: flex;
 		align-items: center;
-		left: 0;
-		right: 0;
-		bottom: 0;
+		width: 100%;
 		padding: 0 24rpx;
+		box-sizing: border-box;
 		height: 130rpx;
 		background-color: #FFFFFF;
 		gap: 32rpx;

+ 8 - 11
pages/materialCollection/submitMaterial/taskDetail.vue

@@ -11,10 +11,10 @@
 			</view>
 			<view class="task_time">
 				<view class="time_day">
-					<text class="time_item">{{state?.details?.startTime}}</text>
+					<text class="time_item">{{formatTimeWithoutSeconds(state?.details?.startTime)}}</text>
 					<text class="time_item">至</text>
-					<text class="time_item">{{state?.details?.endTime}}</text>
-					<text class="time_item" v-if="state?.details?.taskStatus === 1 && remainingDays(state?.details?.endTime) > 0">剩余{{remainingDays(state?.details?.endTime)}}天</text>
+					<text class="time_item">{{formatTimeWithoutSeconds(state?.details?.endTime)}}</text>
+					<text class="time_item" v-if="state?.details?.taskStatus === 1 && remainingDays(state?.details?.endTime)">剩余{{remainingDays(state?.details?.endTime)}}</text>
 				</view>
 				<view :class="['task_status', statusClassMap[state?.details?.taskStatus]]">
 					{{taskStatusMap[state?.details?.taskStatus]}}
@@ -49,7 +49,10 @@
 					</view>
 					<view class="item_info">
 						<template v-for="text in ['departmentName','departmentGroupName','subjectName','gradeName','classTypeName','className','updateTime']">
-							<text class="info_text" v-if="item?.[text]" :key="text">{{item?.[text]}}</text>
+							<text class="info_text" v-if="item?.[text]" :key="text">
+								<template v-if="text=='updateTime'">{{formatTimeWithoutSeconds(item?.[text])}}</template>
+								<template v-else>{{item?.[text]}}</template>
+							</text>
 						</template>
 					</view>
 				</view>
@@ -61,7 +64,7 @@
 <script setup>
 	import uniIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue';
 	import navBar from '@/components/navBar.vue';
-	import { remainingDays } from '@/common/common.js';
+	import { remainingDays,formatTimeWithoutSeconds } from '@/common/common.js';
 	import {onLoad,onShow} from '@dcloudio/uni-app';
 	import {
 		reactive,
@@ -129,9 +132,6 @@
 				query.select('.task_desc').boundingClientRect((rect) => {
 					taskDescHeight = rect?.height || 0;
 				});
-				query.select('.page_content_data').boundingClientRect((rect) => {
-					state.searchBoxTop = rect?.top || 0;
-				});
 				query.exec(() => {
 					// 所有回调执行完毕后触发
 					state.showExpandBtn = taskDescAllHeight > taskDescHeight + 1;
@@ -147,9 +147,6 @@
 			query.select('.task_desc').boundingClientRect((rect) => {
 				taskDescHeight = rect?.height || 0;
 			});
-			query.select('.page_content_data').boundingClientRect((rect) => {
-				state.searchBoxTop = rect?.top || 0;
-			});
 			query.exec(() => {
 				// 所有回调执行完毕后触发
 				state.showExpandBtn = taskDescAllHeight > taskDescHeight + 1;

+ 13 - 7
pages/materialCollection/taskOverview/addEdit.vue

@@ -27,8 +27,8 @@
 						placeholderStyle="font-weight: 400;font-size: 28rpx;color: #999999;"></uni-easyinput>
 				</uni-forms-item>
 				<uni-forms-item label="采集周期:" required name="taskTime">
-					<uni-datetime-picker type="daterange" :clear-icon="false" v-model="state.formData.taskTime"
-						placeholder="请选择采集周期" style="width: 480rpx;" />
+					<uni-datetime-picker type="datetimerange" :hide-second="true" :clear-icon="false" v-model="state.formData.taskTime"
+						placeholder="请选择采集周期" />
 				</uni-forms-item>
 				<uni-forms-item label="审核机制:" required name="auditMechanism">
 					<uni-data-checkbox v-model="state.formData.auditMechanism" selectedColor="#2E64FA"
@@ -36,7 +36,7 @@
 				</uni-forms-item>
 				<uni-forms-item label="审核人:" required name="taskAuditors" v-if="state.formData.auditMechanism === 1">
 					<zxz-uni-data-select v-model="state.formData.taskAuditors" collapse-tags :collapse-tags-num="1"
-						filterable multiple dataKey="teacherName" dataValue="teacherId" :clear="false"
+						filterable multiple dataKey="teacherNameStr" dataValue="teacherId" :clear="false"
 						:localdata="state.auditorsData"></zxz-uni-data-select>
 				</uni-forms-item>
 				<uni-forms-item label="采集对象:" required name="taskTargets">
@@ -66,6 +66,7 @@
 	import uniDataSelect from '@/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue';
 	import uniDatetimePicker from '@/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue';
 	import zxzUniDataSelect from '@/uni_modules/zxz-uni-data-select/components/zxz-uni-data-select/zxz-uni-data-select.vue';
+	import uniDataCheckbox from '@/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue';
 	import uniIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue';
 	import {
 		getSchoolYearList,
@@ -75,7 +76,7 @@
 		insertCollectionTask,
 		UpdateCollectionTask
 	} from '@/reqApi/notification.js';
-	import {getDeptTreeData,subjectTreeData,gradTreeData,permTreeData} from '@/common/common.js'
+	import {getDeptTreeData,subjectTreeData,gradTreeData,permTreeData,toApiStartTime,toApiEndTime} from '@/common/common.js'
 	import {
 		reactive,
 		ref,
@@ -212,7 +213,12 @@
 	const QueryTeacherInfo = () => {
 		queryTeacherInfo('').then(res=>{
 			if(res.code == 200){
-				state.auditorsData = res?.data || [];
+				const resData = res?.data || [];
+				resData.forEach(item=>{
+					const userAccountStr = `${item?.userAccount ? `(${item.userAccount})` : ''}`;
+					item.teacherNameStr = `${item.teacherName}${userAccountStr}`;
+				})
+				state.auditorsData = resData;
 			}
 		})
 	}
@@ -308,8 +314,8 @@
 			materialCategory: state.formData.materialCategory,
 			taskName: state.formData.taskName,
 			collectionRequire: state.formData.collectionRequire,
-			startTime: state.formData.taskTime[0],
-			endTime: state.formData.taskTime[1],
+			startTime: toApiStartTime(state.formData.taskTime[0]),
+			endTime: toApiEndTime(state.formData.taskTime[1]),
 			targetType: state.formData.targetType,
 			auditMechanism: state.formData.auditMechanism,//审核机制 0-无需审核 1-需要审核
 			taskAuditors: taskAuditors,//审核人

+ 4 - 4
pages/materialCollection/taskOverview/index.vue

@@ -47,9 +47,9 @@
 					<!-- 任务底部 -->
 					<view class="item_bottom">
 						<view class="notice_stats">
-							<text class="stats_text" v-if="item.taskStatus === 0">开始时间:{{ item.startTime }}</text>
-							<text class="stats_text" v-else-if="item.taskStatus === 1">剩余时间:{{ remainingDays(item.endTime) }}天</text>
-							<text class="stats_text" v-else>结束时间:{{ item.endTime }}</text>
+							<text class="stats_text" v-if="item.taskStatus === 0">开始时间:{{ formatToMonthDayHM(item.startTime) }}</text>
+							<text class="stats_text" v-else-if="item.taskStatus === 1">剩余时间:{{ remainingDays(item.endTime) }}</text>
+							<text class="stats_text" v-else>结束时间:{{ formatToMonthDayHM(item.endTime) }}</text>
 						</view>
 						<view class="notice_actions">
 							<view class="action_btn delete" :class="{ disable: !!item.submitNum }" @click="handleDelete(item)">
@@ -81,7 +81,7 @@ import { reactive,ref,nextTick, onMounted,onUnmounted } from 'vue';
 import navBar from '@/components/navBar.vue';
 import popupDialog from '@/components/popupDialog.vue';
 import {findCollectionTask,getSchoolYearList,getCategoryList,deleteCollectionTask} from '@/reqApi/notification.js';
-import { truncateText,remainingDays } from '@/common/common.js';
+import { truncateText,remainingDays,formatToMonthDayHM } from '@/common/common.js';
 import { onShow } from '@dcloudio/uni-app';
 
 const state = reactive({

+ 2 - 0
pages/materialCollection/taskOverview/selectObjectNoDedup.vue

@@ -47,6 +47,8 @@
 
 <script setup>
 	import navBar from '@/components/navBar.vue';
+	import uniEasyinput from '@/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue';
+	import uniTreeView from '@/uni_modules/KieranYin9527-tree/components/uni-tree-view/uni-tree-view.vue';
 	import {findDepartContainUser,findCollectPersonalInfo} from '@/reqApi/notification.js';
 	import {getDeptTreeData,subjectTreeData,gradTreeData,permTreeData} from '@/common/common.js';
 	import {onLoad} from '@dcloudio/uni-app';

+ 9 - 6
pages/materialCollection/taskOverview/taskDetail.vue

@@ -48,9 +48,9 @@
 					</view>
 					<view class="task_time">
 						<view class="time_day">
-							<text class="time_item">{{state?.details?.startTime}}</text>
+							<text class="time_item">{{formatTimeWithoutSeconds(state?.details?.startTime)}}</text>
 							<text class="time_item">至</text>
-							<text class="time_item">{{state?.details?.endTime}}</text>
+							<text class="time_item">{{formatTimeWithoutSeconds(state?.details?.endTime)}}</text>
 							<text class="time_item" v-if="state.taskStatus!== 2 && remainingDays(state?.details?.endTime) > 0">剩余{{remainingDays(state?.details?.endTime)}}天</text>
 						</view>
 						<view :class="['task_status', statusClassMap[state.taskStatus]]">
@@ -119,12 +119,15 @@
 							</view>
 							<view class="item_info">
 								<template v-for="prop in state?.[`${state.tabsSelected}Header`]">
-									<text v-if="['targetName','fileNum','reviewBy','reviewTime'].indexOf(prop) == -1" class="info_text">{{item[prop]}}</text>
+									<text v-if="['targetName','fileNum','reviewBy','reviewTime'].indexOf(prop) == -1" class="info_text">
+										<template v-if="prop=='updateTime'">{{formatTimeWithoutSeconds(item[prop])}}</template>
+										<template v-else>{{item[prop]}}</template>
+									</text>
 								</template>
 							</view>
 							<view class="item_info" v-if="state?.[`${state.tabsSelected}Header`]?.includes('reviewBy')">
 								<text class="info_text">审核人:{{item.reviewBy}}</text>
-								<text class="info_text">{{item.reviewTime}}</text>
+								<text class="info_text">{{formatTimeWithoutSeconds(item.reviewTime)}}</text>
 							</view>
 						</view>
 						<view class="no_data" v-if="!state.isLoading && state.tabListData.length == 0">
@@ -144,7 +147,7 @@
 						<view class="file_name">{{item.fileName}}</view>
 						<view class="file_size">
 							<text>{{getFileSize(item.fileSize)}}</text>
-							<text>{{ item.createTime }}</text>
+							<text>{{ formatTimeWithoutSeconds(item.createTime) }}</text>
 						</view>
 					</view>
 					<view class="file_btn">
@@ -191,7 +194,7 @@
 	import uniIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue';
 	import uvSticky from '@/uni_modules/uv-sticky/components/uv-sticky/uv-sticky.vue'; //吸顶
 	import navBar from '@/components/navBar.vue';
-	import { remainingDays,getFileSize,getFileTypeBySuffix } from '@/common/common.js';
+	import { remainingDays,getFileSize,getFileTypeBySuffix,formatTimeWithoutSeconds } from '@/common/common.js';
 	import {
 		GetCollectionTask,
 		getTaskTargetList,

+ 3 - 0
uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue

@@ -75,6 +75,9 @@
 	export default {
 		name: "uni-data-select",
 		mixins: [uniCloud.mixinDatacom || {}],
+		components:{
+			uniIcons
+		},
 		props: {
 			localdata: {
 				type: Array,