jiangping
2024-01-31 95db36f778d5a6f4197cc2cde4390c84e57b26b6
开发业务接口
已添加2个文件
已修改6个文件
381 ■■■■ 文件已修改
company/src/api/business/settleClaims.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/OperaSettleClaimsWindow.vue 177 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/common/UploadFileCommon.vue 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/api/common/PublicController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/dto/SCSupplementDTO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/join/MultifileJoinMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/model/Multifile.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | 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);
    }