company/src/api/business/settleClaims.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
company/src/components/business/OperaSettleClaimsWindow.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
company/src/components/common/UploadFileCommon.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/platform/src/main/java/com/doumee/api/common/PublicController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/service/src/main/java/com/doumee/dao/business/dto/SCSupplementDTO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/service/src/main/java/com/doumee/dao/business/join/MultifileJoinMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/service/src/main/java/com/doumee/dao/business/model/Multifile.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
company/src/api/business/settleClaims.js
@@ -31,6 +31,11 @@ trim: true }) } export function claimsUploadFile (data) { return request.post('/business/settleClaims/claimsUploadFile', data, { trim: true }) } export function back (data) { return request.post('/business/settleClaims/back', data, { trim: true company/src/components/business/OperaSettleClaimsWindow.vue
@@ -179,17 +179,53 @@ <div class="desc_data"> <div class="desc_data_label">1. åå·¥å ³ç³»è¯æèµæ</div> <div class="desc_data_list"> <div class="desc_data_list_item" v-for="(item, index) in 2" :key="index"> <div class="desc_data_list_item_dele">å é¤</div> <div class="desc_data_list_item_img"> <img src="@/assets/images/Galanz@2x.png" /> <template v-if="model.relationFileList && model.relationFileList"> <div class="desc_data_list_item" v-for="(item, index) in model.relationFileList" :key="index"> <div class="desc_data_list_item_dele" @click="delFile(item.id)">å é¤</div> <div class="desc_data_list_item_img" v-if="item.type ==0 && item.fileurlFull!=null"> <img :src="item.fileurlFull" /> </div> <div class="desc_data_list_item_info"> <span>èå¤è¡¨.jpg</span> <span>æä½å-çææ</span> <span>2023-05-22 10:10:11</span> <span>{{ item.name }}</span> <span>æä½å-{{ item.creatorName }}</span> <span>{{ item.createDate }}</span> </div> </div> </template> <div class="desc_data_list_item"> <UploadFileCommon :uploadData="{ folder: 'settle' }" :file="file1" @uploadSuccess="file1Uploaded()" /> <div class="desc_data_list_item_upload"> <el-button type="primary">ä¸ä¼ </el-button> <el-button>åæ¶</el-button> </div> </div> <div class="desc_data_list_item1"></div> <div class="desc_data_list_item1"></div> </div> </div> <div class="desc_data"> <div class="desc_data_label">2. å»çèµæ</div> <div class="desc_data_cate"> <el-tabs v-model="activeName" @tab-click="handleClick"> <el-tab-pane label="é¨è¯" name="first"></el-tab-pane> <el-tab-pane label="ä½é¢èµæ" name="second"></el-tab-pane> <el-tab-pane label="伤æ®" name="third"></el-tab-pane> </el-tabs> </div> <div class="desc_data_list" v-if="activeName=='first'"> <template v-if="model.outpatientFileList && model.outpatientFileList"> <div class="desc_data_list_item" v-for="(item, index) in model.outpatientFileList" :key="index"> <div class="desc_data_list_item_dele" @click="delFile(item.id)">å é¤</div> <div class="desc_data_list_item_img" v-if="item.type ==0 && item.fileurlFull!=null"> <img :src="item.fileurlFull" /> </div> <div class="desc_data_list_item_info"> <span>{{ item.name }}</span> <span>æä½å-{{ item.creatorName }}</span> <span>{{ item.createDate }}</span> </div> </div> </template> <div class="desc_data_list_item"> <div class="desc_data_list_item_img" style="cursor: pointer; background: #8c939d;"> <i class="el-icon-plus"></i> @@ -202,32 +238,51 @@ <div class="desc_data_list_item1"></div> <div class="desc_data_list_item1"></div> </div> </div> <div class="desc_data"> <div class="desc_data_label">2. å»çèµæ</div> <div class="desc_data_cate"> <el-tabs v-model="activeName" @tab-click="handleClick"> <el-tab-pane label="é¨è¯" name="first"></el-tab-pane> <el-tab-pane label="ä½é¢èµæ" name="second"></el-tab-pane> <el-tab-pane label="伤æ®" name="third"></el-tab-pane> </el-tabs> </div> <div class="desc_data_list"> <div class="desc_data_list_item" v-for="(item, index) in 2" :key="index"> <div class="desc_data_list_item_dele">å é¤</div> <div class="desc_data_list_item_img"> <img src="@/assets/images/Galanz@2x.png" /> </div> <div class="desc_data_list_item_info"> <span>èå¤è¡¨.jpg</span> <span>æä½å-çææ</span> <span>2023-05-22 10:10:11</span> </div> <div class="desc_data_list" v-if="activeName=='second'"> <template v-if="model.outpatientFileList && model.outpatientFileList"> <div class="desc_data_list_item" v-for="(item, index) in model.outpatientFileList" :key="index"> <div class="desc_data_list_item_dele" @click="delFile(item.id)">å é¤</div> <div class="desc_data_list_item_img" v-if="item.type ==0 && item.fileurlFull!=null"> <img :src="item.fileurlFull" /> </div> <div class="desc_data_list_item_info"> <span>{{ item.name }}</span> <span>æä½å-{{ item.creatorName }}</span> <span>{{ item.createDate }}</span> </div> </div> </template> <div class="desc_data_list_item"> <div class="desc_data_list_item_img" style="cursor: pointer; background: #8c939d;"> <i class="el-icon-plus"></i> </div> <div class="desc_data_list_item_upload"> <el-button type="primary">ä¸ä¼ </el-button> <el-button>åæ¶</el-button> </div> </div> <div class="desc_data_list_item1"></div> <div class="desc_data_list_item1"></div> </div> <div class="desc_data_list" v-if="activeName=='third'"> <template v-if="model.outpatientFileList && model.outpatientFileList"> <div class="desc_data_list_item" v-for="(item, index) in model.outpatientFileList" :key="index"> <div class="desc_data_list_item_dele" @click="delFile(item.id)">å é¤</div> <div class="desc_data_list_item_img" v-if="item.type ==0 && item.fileurlFull!=null"> <img :src="item.fileurlFull" /> </div> <div class="desc_data_list_item_info"> <span>{{ item.name }}</span> <span>æä½å-{{ item.creatorName }}</span> <span>{{ item.createDate }}</span> </div> </div> </template> <div class="desc_data_list_item"> <UploadFileCommon :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileList="form.fileList1" @uploadSuccess="baoxianFileUploaded" /> <!-- <div class="desc_data_list_item_img" style="cursor: pointer; background: #8c939d;"> <i class="el-icon-plus"></i> </div>--> <div class="desc_data_list_item_upload"> <el-button type="primary">ä¸ä¼ </el-button> <el-button>åæ¶</el-button> @@ -240,17 +295,19 @@ <div class="desc_data"> <div class="desc_data_label">3. èµä»ç»æ¡èµæ</div> <div class="desc_data_list"> <div class="desc_data_list_item" v-for="(item, index) in 2" :key="index"> <div class="desc_data_list_item_dele">å é¤</div> <div class="desc_data_list_item_img"> <img src="@/assets/images/Galanz@2x.png" /> </div> <div class="desc_data_list_item_info"> <span>èå¤è¡¨.jpg</span> <span>æä½å-çææ</span> <span>2023-05-22 10:10:11</span> </div> <template v-if="model.compensationFileList && model.compensationFileList"> <div class="desc_data_list_item" v-for="(item, index) in model.compensationFileList" :key="index"> <div class="desc_data_list_item_dele" @click="delFile(item.id)">å é¤</div> <div class="desc_data_list_item_img" v-if="item.type ==0 && item.fileurlFull!=null"> <img :src="item.fileurlFull" /> </div> <div class="desc_data_list_item_info"> <span>{{ item.name }}</span> <span>æä½å-{{ item.creatorName }}</span> <span>{{ item.createDate }}</span> </div> </div> </template> <div class="desc_data_list_item"> <div class="desc_data_list_item_img" style="cursor: pointer; background: #8c939d;"> <i class="el-icon-plus"></i> @@ -318,14 +375,16 @@ </template> <script> import UploadFileCommon from '@/components/common/UploadFileCommon' import BaseOpera from '@/components/base/BaseOpera' import GlobalWindow from '@/components/common/GlobalWindow' import OperaSettleClaimsCheckWindow from '@/components/business/OperaSettleClaimsCheckWindow' import {confirmFile, findById,exportFiles} from '@/api/business/settleClaims'; import {confirmFile, findById,exportFiles,claimsUploadFile} from '@/api/business/settleClaims' export default { name: 'OperaSettleClaimsWindow', extends: BaseOpera, components: { GlobalWindow, OperaSettleClaimsCheckWindow }, components: { GlobalWindow, OperaSettleClaimsCheckWindow,UploadFileCommon }, data () { return { doneFileDate:null, @@ -340,12 +399,12 @@ }, activeName: 'first', reverse: true, tableData: [], visible1: false, visible2: false, visible3: false, visible4: false, visible5: false file1:null, file2:null, file3:null, file4:null, file5:null, file6:null } }, created () { @@ -362,6 +421,12 @@ this.visible=true this.doneFileDate=null this.remarkLogList=[] this. file1=null this.file2 = null this.file3 = null this.file4 = null this.file5 = null this.file6 = null this.getDetail() }, openBaoxiandan(){ @@ -394,6 +459,26 @@ this.getDetail() this.$emit('success') }, claimsUploadFile(type) { var param = {} if(type == 2){ param = this.file2 }else if(type == 3){ param = this.file3 }else if(type == 4){ param = this.file4 }else if(type == 5){ param = this.file5 }else if(type == 6){ param = this.file6 } claimsUploadFile(param) .then(response => { that.getDetail() }).catch(err => { this.$tip.apiFailed(err) }) }, submit(type) { var that =this if(type ==0){ company/src/components/common/UploadFileCommon.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,150 @@ <template> <div> <el-upload class="avatar-uploader" :accept="uploadData.fileTyp" :style="customStyle" :action="uploadImgUrl" :file="file1" :data="uploadData" :limit="1" :show-file-list="false" :on-success="handleSuccess" :on-error="uploadError" :before-upload="beforeAvatarUpload"> <img v-if="file.fileType==0 && file.fileUrlFull" :src="file.fileUrlFull" style="width: 90px;height: 90px" class="avatar"> <video v-if="file.fileType==1 &&file.fileUrlFull" :src="file.fileUrlFull" style="width: 90px;height: 90px" class="avatar" /> <span v-if="file.fileType==2 &&file.fileUrlFull" style="width: 90px;height: 90px" class="avatar" >{{file.fileName}}</span> <div class="desc_data_list_item_img" style="cursor: pointer; background: #8c939d;"> <i class="el-icon-plus"></i> </div> </el-upload> </div> </template> <script> export default { props: { file: { type: Object, default: () => {} }, tipsLabel: '', customStyle: { type: String, default: 'width: 90px; height: 90px;' }, uploadData: Object }, data() { return { uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/upload' } }, methods: { // ä¸ä¼ å¾ç handleSuccess(res, file) { if (res.code == 200) { let { data } = res this.file.fileUrl = data.imgaddr this.file.fileType = data.type this.file.fileName= data.originname this.file.fileUrlFull = data.url this.$message.success('ä¸ä¼ æå') this.$emit('uploadSuccess', { fileurl: data.imgaddr, fileUrlFull: data.url, name: data.originname }) } else { this.$tip.apiFailed('ä¸ä¼ 失败') } this.$emit('uploadEnd') }, uploadError() { this.$tip.apiFailed('ä¸ä¼ 失败') this.$emit('endUpload') }, // // æ¦æª beforeAvatarUpload(file) { this.$emit('uploadBegin') return true } } } </script> <style lang="scss" scoped> .desc_data_list_item_img { flex-shrink: 0; width: 80px; height: 80px; display: flex; align-items: center; justify-content: center; overflow: hidden; .el-icon-plus { font-size: 26px; color: #ffffff; } img { width: 100%; height: 100%; } } $image-width: 100px; .avatar-uploader { width: $image-width; height: $image-width; } ::v-deep .el-upload { border: 1px dashed #d9d9d9; border-radius: 6px; cursor: pointer; position: relative; width: $image-width; height: $image-width; overflow: hidden; } .avatar-uploader .el-upload:hover { border-color: #409EFF; } .avatar-uploader-icon { line-height: 90px; font-size: 28px; color: #8c939d; width: $image-width; height: $image-width; text-align: center; } .avatar { width: $image-width; height: $image-width; display: block; } .tips-style { height: 13px; font-size: 13px; font-weight: 400; color: #999999; line-height: 13px; } </style> <style lang="scss" scoped> ::v-deep .el-upload--picture-card{ width: 90px !important; height: 90px !important; } ::v-deep .el-upload-list__item { width: 90px !important; height: 90px !important; } .icon { -webkit-transform: translate(-50%,-50%); -ms-transform: translate(-50%,-50%); transform: translate(0%, -85%); } ::v-deep .el-upload-list__item { width: 90px !important; height: 90px !important; } </style> server/platform/src/main/java/com/doumee/api/common/PublicController.java
@@ -171,6 +171,16 @@ String tempFileName = nowDate + "/" + fileName; String key = folder + tempFileName;// æä»¶å ALiYunUtil obs = new ALiYunUtil(endpoint,access_id, access_key); int type = 2; if(StringUtils.endsWith(key,".mp4")){ type =1; }else if(StringUtils.endsWith(key,".jpg") || StringUtils.endsWith(key,".JPG") || StringUtils.endsWith(key,".PNG") || StringUtils.endsWith(key,".jpeg") || StringUtils.endsWith(key,".JPEG")){ type =0; } if (obs.uploadOnlineObject(file.getInputStream(),bucketName, key,null)) { // ç§»å¨æå,è¿åæä»¶å // sendSuccessMessage(response, resourcePath+key); @@ -180,6 +190,7 @@ JSONObject fileJSON = new JSONObject(); fileJSON.put("url", resourcePath + key); fileJSON.put("imgaddr", tempFileName); fileJSON.put("type", type); fileJSON.put("imgname", fileName); fileJSON.put("originname", originname); context.put("data",fileJSON); server/service/src/main/java/com/doumee/dao/business/dto/SCSupplementDTO.java
@@ -20,6 +20,8 @@ @ApiModelProperty(value = "æä»¶è·¯å¾") private String fileUrl; @ApiModelProperty(value = "æä»¶åç§°") private String fileName; @ApiModelProperty(value = "æä½ç±»åï¼0=è¡¥å 说æï¼1=çèµæ¥æ¡äºæ è§é¢æå¾çï¼2=çèµåå·¥å ³ç³»è¯æææï¼3=çèµé¨è¯èµæï¼4=çèµä½é¢èµæï¼5=çèµä¼¤æ®èµæï¼6=çèµèµä»ç»æ¡ææ") private Integer objType; server/service/src/main/java/com/doumee/dao/business/join/MultifileJoinMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,13 @@ package com.doumee.dao.business.join; import com.doumee.dao.business.model.Member; import com.doumee.dao.business.model.Multifile; import com.github.yulichang.base.mapper.MPJJoinMapper; /** * @author æ±è¹è¹ * @date 2024/01/16 10:03 */ public interface MultifileJoinMapper extends MPJJoinMapper<Multifile> { } server/service/src/main/java/com/doumee/dao/business/model/Multifile.java
@@ -75,6 +75,9 @@ @ApiModelProperty(value = "æä»¶å®æ´è®¿é®å°å") @TableField(exist = false) private String fileurlFull; @ApiModelProperty(value = "æä½åå§å") @TableField(exist = false) private String creatorName; @ApiModelProperty(value = "æåºç ", example = "1") @ExcelColumn(name="æåºç ") server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java
@@ -10,10 +10,10 @@ import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; import com.doumee.core.utils.Utils; import com.doumee.dao.business.MultifileMapper; import com.doumee.dao.business.SettleClaimsLogMapper; import com.doumee.dao.business.SettleClaimsMapper; import com.doumee.dao.business.dto.SCSupplementDTO; import com.doumee.dao.business.join.MultifileJoinMapper; import com.doumee.dao.business.join.SettleClaimsJoinMapper; import com.doumee.dao.business.join.SettleClaimsLogJoinMapper; import com.doumee.dao.business.model.*; @@ -59,7 +59,7 @@ private SystemDictDataBiz systemDictDataBiz; @Autowired private MultifileMapper multifileMapper; private MultifileJoinMapper multifileJoinMapper; @Autowired private SettleClaimsJoinMapper settleClaimsJoinMapper; @@ -360,7 +360,7 @@ multifile.setObjId(settleClaims.getId()); multifile.setObjType(Constants.ONE); multifile.setSortnum(i+1); multifileMapper.insert(multifile); multifileJoinMapper.insert(multifile); } } //è®°å½æ¥å¿ @@ -385,7 +385,7 @@ settleClaimsLogMapper.insert(log); List<File> fileList = new ArrayList<>(); List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda() List<Multifile> multifileList = multifileJoinMapper.selectList(new QueryWrapper<Multifile>().lambda() .eq(Multifile::getObjId,id) .isNotNull(Multifile::getFileurl) .in(Multifile::getObjType, Arrays.asList(new Integer[]{ @@ -446,8 +446,12 @@ if(settleClaims == null){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>() .lambda().eq(Multifile::getObjId,id) List<Multifile> multifileList = multifileJoinMapper.selectJoinList(Multifile.class, new MPJLambdaWrapper<Multifile>() .selectAll(Multifile.class) .selectAs(SystemUser::getRealname,Multifile::getCreatorName) .leftJoin(SystemUser.class,SystemUser::getId,Multifile::getCreator) .eq(Multifile::getObjId,id) .eq(Multifile::getIsdeleted,Constants.ZERO) .orderByAsc(Multifile::getCreateDate) ); @@ -460,7 +464,7 @@ } } } Multifile baoxiandanFile = multifileMapper.selectOne(new QueryWrapper<Multifile>() Multifile baoxiandanFile = multifileJoinMapper.selectOne(new QueryWrapper<Multifile>() .lambda().eq(Multifile::getObjId,settleClaims.getInsuranceApplyId()) .eq(Multifile::getIsdeleted,Constants.ZERO) .eq(Multifile::getObjType,Constants.MultiFile.BD_DONE_PDF.getKey()) @@ -616,7 +620,7 @@ multifile.setObjId(scSupplementDTO.getId()); multifile.setName(scSupplementDTO.getFileUrl().substring(scSupplementDTO.getFileUrl().lastIndexOf("/") + 1)); multifile.setType(scSupplementDTO.getFileType()); multifileMapper.insert(multifile); multifileJoinMapper.insert(multifile); }