| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 | <script setup>	import {		ref	} from "vue";	import {		onLoad	} from "@dcloudio/uni-app";	import {		getIntermediaryDetail,	} from "@/api/work/intermediaryService.js";	// 主要信息	let pageData = ref({});	const getDetail = id => {		getIntermediaryDetail({			id		}).then(res => {			pageData.value = res.data;			conbineFileList(res.data.listFile)		})	}	// 附件信息	const conbineFileList = list => {		// 照片附件		listPhoto.value = list.filter(item => ['101', '102', '103', '104', '105'].includes(item.fileType));		listPhotoPreview = listPhoto.value.map(item => item.fileId);		// 视频附件		listVideo.value = list.filter(item => ['202', '203'].includes(item.fileType));		// 其他附件		let exceptPhotoList = list.filter(item => !listPhoto.value.includes(item));		uploadListFile.value = exceptPhotoList.filter(item => !listVideo.value.includes(item));	}	// 图片附件	let listPhoto = ref([]);	let listPhotoPreview = [];	const showImage = index => {		uni.previewImage({			current: index,			urls: listPhotoPreview,			longPressActions: true,		});	}	// 视频附件	let listVideo = ref([]);	//列表--文件	let uploadListFile = ref([]);	const showFile = url => {		let downloadTask = uni.downloadFile({			url,			success: function(res) {				isDownload.value = false;				let filepathss = plus.io.convertLocalFileSystemURL(res.tempFilePath);				setTimeout(					() =>					uni.openDocument({						filePath: filepathss,						showMenu: false,						success: function() {},						fail: function(failRes) {							uni.showToast({								title: '暂不支持此类型',								duration: 2000,								icon: "none",							});						}					}),					1000				);			},			fail: function(failRes) {				isDownload.value = false;			}		});	}	let isDownload = ref(false); // 是否正在下载	let downloadPrecent = ref(0); //下载进度	onLoad(options => {		getDetail(options.id);	})</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">					<view class="card-item-name">机构类型</view>					<view class="card-item-content">{{pageData.typeName ?? "--"}}</view>				</view>				<view class="card-item">					<view class="card-item-name">单位名称</view>					<view class="card-item-content">{{pageData.title ?? "--"}}</view>				</view>				<view class="card-item">					<view class="card-item-name">统一社会信用代码</view>					<view class="card-item-content">{{pageData.groupCode ?? "--"}}</view>				</view>				<view class="card-item">					<view class="card-item-name">单位地址</view>					<view class="card-item-content">{{pageData.addr?? "--"}}</view>				</view>				<view class="card-item">					<view class="card-item-name">法人姓名</view>					<view class="card-item-content">{{pageData.legalName ?? "--"}}</view>				</view>				<view class="card-item">					<view class="card-item-name">法人联系电话号码</view>					<view class="card-item-content">{{pageData.legalPhone ?? "--"}}</view>				</view>				<view class="card-item">					<view class="card-item-name">业务负责人姓名</view>					<view class="card-item-content">{{pageData.businessOwner ?? "--"}}</view>				</view>				<view class="card-item">					<view class="card-item-name">业务负责人职务</view>					<view class="card-item-content">{{pageData.businessJob ?? "--"}}</view>				</view>				<view class="card-item">					<view class="card-item-name">业务负责人电话</view>					<view class="card-item-content">{{pageData.businessPhone ?? "--"}}</view>				</view>				<view class="card-item">					<view class="card-item-name">该单位主要业务</view>				</view>				<view class="card-item">					<view class="item-textarea">{{pageData.mainBusiness ?? "--"}}</view>				</view>				<view class="card-item">					<view class="card-item-name">备注</view>				</view>				<view class="card-item">					<view class="item-textarea">{{pageData.remark ?? "--"}}</view>				</view>			</view>			<view class="card">				<!-- 附件(照片) -->				<view class="card-item">					<view class="card-item-name">图片附件</view>					<view class="card-item-content" v-if="listPhoto.length === 0">无</view>				</view>				<view class="card-item first-card-item photo-item">					<image :src="item.fileId" v-for="(item,index) in listPhoto" :key="index" @click="showImage(index)"></image>				</view>				<!-- 附件(视频) -->				<view class="card-item">					<view class="card-item-name" style="min-width: 156rpx;">视频附件</view>					<view class="card-item-content" v-if="listVideo.length === 0">无</view>				</view>				<view class="video-item">					<video :src="item.fileId" v-for="(item,index) in listVideo" :key="index"></video>				</view>				<!-- 附件(文件) -->				<view class="card-item">					<view class="card-item-name" style="min-width: 156rpx;">其他附件</view>					<view class="upload-file-area">						<view class="upload-file-name" v-for="(item,index) in uploadListFile" :key="index"							@click="showFile(item.fileId)">							{{item.fileName}}						</view>					</view>				</view>			</view>			<view class="gap-bottom"></view>			<u-overlay :show="isDownload">				<view class="download-box">					<view class="loading-box">						<view class="loading-icon">							<u-loading-icon v-if="downloadPrecent !== '100'" size="40"></u-loading-icon>							<u-icon v-else name="checkmark" size="40"></u-icon>						</view>						<view class="loading-text">附件下载中</view>						<view class="loading-progress">							<u-line-progress :percentage="downloadPrecent" activeColor="#1869F6"></u-line-progress>						</view>					</view>				</view>			</u-overlay>		</view>	</view></template><style lang="scss" scoped>	.item-textarea {		width: 100%;		min-height: 150rpx;		padding: 20rpx;		box-sizing: border-box;		background: #EAF0FA;		border-radius: 20rpx;	}	.photo-item {		display: flex;		justify-content: flex-start;		flex-wrap: wrap;		margin-top: 20rpx;		image {			width: 160rpx;			height: 160rpx;			margin: 20rpx 40rpx 20rpx 0;		}	}	.video-item {		width: 480rpx;		min-height: 270rpx;		margin: 20rpx auto;		video {			width: 480rpx;			height: 270rpx;		}	}	.upload-file-area {		min-height: 32rpx;	}</style>
 |