<template> <h-view class="public-style attachment-information" title="附件信息"> <h-content class=""> <list-item v-for="(itemList,index ) in prjItemList" :key="index"> <item :show-content="false" :show-name="false" class="attach-item-title"> <div class="attach"> <div class="attach-icon-box"> <div class="attach-icon"/> </div> <div class="attach-name"> <div>\{{ itemList.cdd_item_desc }}</div> </div> </div> </item> <item :show-content="false" :show-name="false" class="attach-item"> <div class="attach-hint">请上传照片</div> <div class="attach"> <div class="attach-content"> <div class="add-button"> <!--待上传图片列表--> <div v-for="(pic,index) in uploadList" v-if="pic.check_id == itemList.check_id" :key="index" class="picture"> <img :src="pic.picture" @click="showBigPicture(pic.picture,true)"> <div class="close"><i class="icon ion-close-circled" @click="removePic(index)"/></div> </div> <!--从服务器上下载的图片--> <div v-for="list in dowloadList"> <div v-for="(pic, index) in list" v-if="pic.check_id == itemList.check_id" :key="index" class="picture"> <img :src="pic.dataBase64String" @click="showBigPicture(pic.dataBase64String)"> <div class="close"><i class="icon ion-close-circled" @click="deletePic(pic.attachment_id)"/></div> </div> </div> <!--上传图片的加号--> <img src="@/assets/image/plus.png" @click="show(itemList.check_id)"> </div> </div> </div> </item> </list-item> </h-content> </h-view> </template> <script> import projectService from './projectService' export default { name: 'PrjAttachment', data () { return { project: projectService.getProject(), prjItemList: [], uploadList: [], dowloadList: [], localIds: [], } }, mounted () { this.loadPrjInfo() }, methods: { // 打开sheet操作 show (checkId) { let vm = this wx.chooseImage({ count: 9, // 微信最多能选择9张图片 sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有 sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有 success: function (data) { vm.localIds = data.localIds // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片 data.localIds.forEach((localId, index) => { let obj = { 'table_pk_value': checkId, 'table_name': 'PRJ_CDD_ITEM_CHECK', 'check_id': checkId, 'picture': '', 'filePath': localId, 'attachment_id': '', 'mediaId': '', } wx.getLocalImgData({ localId: localId, // 图片的localID success: function (res) { obj.picture = res.localData vm.uploadList.push(obj) }, }) }) vm.wxImageUpload(checkId) }, }) }, // 图片上传到微信服务器 同时上传到业务系统 wxImageUpload (checkId) { let vm = this let localId = vm.localIds.pop() wx.uploadImage({ localId: localId, // 需要上传的图片的本地ID,由chooseImage接口获得 isShowProgressTips: 0, // 默认为1,显示进度提示 success: function (res) { if (vm.localIds.length > 0) { setTimeout(() => { vm.wxImageUpload(checkId) }, 100) } vm.savePicture(res.serverId, checkId) for (let j = 0; j < vm.uploadList.length; j++) { if (vm.uploadList[j].filePath === localId) { vm.uploadList[j].mediaId = res.serverId break } } }, }) }, savePicture (mediaId, checkId) { let vm = this let url = $config.rootPath + '/media/upload' + '?index=' + mediaId // 附件查询 let param = { 'wechatCode': $config.wxCode, 'mediaId': mediaId, 'sourceType': 'PRJ_CDD_ITEM_CHECK', 'pkValue': checkId, 'fileName': new Date().getTime() + '.jpg', 'userId': window.localStorage.user_id, 'uploadApiName': $config.uploadApiName, 'uploadSysName': $config.uploadSysName, } hlsHttp.post(url, param).then(function (res) { if (res.success === 'true') { for (let j = 0; j < vm.uploadList.length; j++) { if (vm.uploadList[j].mediaId === res.mediaId) { vm.uploadList[j].attachment_id = res.attachmentId break } } } }) }, // 移除待上传列表中的某条记录 removePic (index) { let vm = this if (vm.uploadList[index].attachment_id) { vm.deletePic(vm.uploadList[index].attachment_id) } vm.uploadList.remove(index) vm.uploadList.sort() }, /** * 删除图片 * */ deletePic (attachmentId) { let vm = this let deleteList = [] let obj = { 'attachment_id': attachmentId } deleteList.push(obj) let url = $config.basePath + 'attment_delete' // 附件删除 let param = { 'picturelist': deleteList, } vm.hlsPopup.showLoading('请稍候') vm.hlsHttp.post(url, param).then(function (res) { vm.hlsPopup.hideLoading() if (res.result === 'S') { vm.hlsPopup.showLongCenter('删除成功!') vm.removeDowloadList(attachmentId) } }) }, /** * 实现刷新效果,同时为了避免从新调用接口浪费流量 * 从附件列表中移除删除的图片 */ removeDowloadList (attachmentId) { let vm = this for (let i = 0; i < vm.dowloadList.length; i++) { let list = vm.dowloadList[i] for (let j = 0; j < list.length; j++) { let li = list[j] if (parseFloat(li.attachment_id) === parseFloat(attachmentId)) { list.remove(j) break } } } vm.dowloadList.sort() }, // 查看大图 showBigPicture (pic) { let vm = this vm.hlsPopup.showBigPicture({ imgUrl: pic, }) }, // 项目维护界面信息查询 loadPrjInfo () { let vm = this // let projectId = 595 // let cddListId = 12343 let projectId = vm.project.project_id let cddListId = vm.project.cdd_list_id if (projectId) { let url = $config.basePath + 'prj_project_query' let param = { project_id: projectId, cdd_list_id: cddListId, } hlsHttp.post(url, param).then(function (res) { vm.hlsPopup.hideLoading() if (res.result === 'S') { vm.prjItemList = res.prj_item_list for (let i = 0; i < vm.prjItemList.length; i++) { // 查询照片 vm.loadPicture(vm.prjItemList[i].check_id, i) } } else if (res.result === 'E') { vm.hlsPopup.showLongCenter(res.message) } }) } }, loadPicture (checkId, index) { let vm = this let url = $config.basePath + 'attment_download' + '&index=' + index // 附件查询 let param = { 'check_id': checkId, } vm.hlsHttp.post(url, param).then(function (res) { vm.hlsPopup.hideLoading() if (res.result === 'S') { let list = res.cdd_atm_list vm.dowloadList.push(list) } }) } , }, } </script> <style lang="less"> .attachment-information { .content { background-color: #fff; } .hls-list-item { background-color: #fff; .hls-item { .attach { display: flex; align-items: center; width: 100%; .attach-icon-box { width: 5%; .attach-icon { width: 10px; height: 10px; background-color: @headerColor; border-radius: 5px; float: left; } } .attach-name { width: 95%; display: -webkit-flex; display: flex; justify-content: flex-start; align-items: center; -webkit-justify-content: flex-start; -webkit-align-items: center; font-size: 14px; color: @headerColor; //margin-right: 75%; } .attach-content { width: 100%; .add-button { .picture { float: left; .close { position: absolute; font-size: @font-size-big; color: #F96F68; margin-top: -3px; margin-left: 40px; } } img { margin-right: 15px; width: 50px; height: 50px; float: left; margin-bottom: 10px } } } } .attach-hint { //padding: 0 20px 0 40px; color: @hintColor; font-size: @font-size-small; margin: 12.5px 0; white-space: normal; } } .attach-item-title { height: 40px; } .attach-item { min-height: 40px; height: auto; padding-bottom: 10px; .contents { flex-direction: column !important; } } .list-title { height: 45px; color: @activated-color; line-height: 15px; border-bottom: 1px solid rgba(0, 0, 0, 0.10); /*no*/ padding-left: 20px; } } } </style>