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>
|