nidapeng
2024-04-06 fd6df9412858c419689662d0ebd50f2cac231361
提交一把
已添加2个文件
已修改9个文件
1104 ■■■■■ 文件已修改
company/src/components/business/OpearaUnionChangeUnit.vue 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/OperaUnionApplyCheckWindow.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/OperaUnionChangeCheckWindow.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/OperaUnionChangeDetailWindow.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/OperaUnionChangeUnitDetailWindow.vue 587 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/UnionChangeDetails.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/UnionChangeUnitDetails.vue 357 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/views/business/unionChangeUnit.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/UnionChangeServiceImpl.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/OpearaUnionChangeUnit.vue
@@ -63,20 +63,20 @@
          label="被保险人">
      </el-table-column>
      <el-table-column
          prop="applyStartTime"
          label="期望保险生效起期">
          prop="validCode"
          label="保单号">
      </el-table-column>
      <el-table-column
          prop="addNum"
          label="加保人数">
          prop="startTime"
          label="保险生效起期">
      </el-table-column>
      <el-table-column
          prop="delNum"
          label="减保人数">
          prop="endTime"
          label="保险生效止期">
      </el-table-column>
      <el-table-column
          prop="fee"
          label="费用变更">
          prop="changeNum"
          label="换厂人数">
      </el-table-column>
      <el-table-column  label="操作">
        <template slot-scope="{row}">
@@ -156,7 +156,7 @@
import selectApplicationForm from '@/components/business/selectApplicationForm'
import { listAll } from '@/api/business/applyChange'
import { merge } from '@/api/business/unionChange'
import ApplyChangeDetails from '@/components/business/ApplyChangeDetails'
import ApplyChangeDetails from '@/components/business/ApplyChangeUnitDetails'
import { fetchList as pageUnionList } from '@/api/business/unionApply'
import {getDetail} from "@/api/business/insuranceApply";
export default {
@@ -208,7 +208,7 @@
    checkDetial(row){
      getDetail(row.applyId).then(res => {
        // this.apply = res
        this.$refs.ApplyChangeDetails.open('加减保人员名单',res, row,2)
        this.$refs.ApplyChangeDetails.open('更换派遣单位人员',res, row,2)
      }).catch(err => {
      })
    },
company/src/components/business/OperaUnionApplyCheckWindow.vue
@@ -165,7 +165,6 @@
      this.form.toubaodanFile= null
    },
    deleIndex (flag,index) {
      alert(index)
      if(flag == 0){
        this.form.tbdMultifileList[index].fileurl = null
        this.form.tbdMultifileList[index].name = null
company/src/components/business/OperaUnionChangeCheckWindow.vue
@@ -41,15 +41,17 @@
          <div class="box_table_head">
            <div class="box_table_head_item">序号</div>
            <div class="box_table_head_item">被保险人</div>
            <div class="box_table_head_item">加保人数</div>
            <div class="box_table_head_item">减保人数</div>
            <div v-if="model.type==0" class="box_table_head_item">加保人数</div>
            <div v-if="model.type==0" class="box_table_head_item">减保人数</div>
            <div v-if="model.type==1" class="box_table_head_item">变更人数</div>
            <div class="box_table_head_item">上传批单</div>
          </div>
          <div class="box_table_content" v-for="(item, index) in model.applyList" :key="index">
            <div class="box_table_content_item">{{index + 1}}</div>
            <div class="box_table_content_item" >{{ item.companyName }}</div>
            <div class="box_table_content_item">{{ item.addNum }}</div>
            <div class="box_table_content_item">{{ item.delNum }}</div>
            <div v-if="model.type==0" class="box_table_content_item">{{ item.addNum }}</div>
            <div v-if="model.type==0" class="box_table_content_item">{{ item.delNum }}</div>
            <div  v-if="model.type==1" class="box_table_content_item">{{ item.changeNum }}</div>
            <div class="box_table_content_item">
              <el-form-item label="" prop="bxdMultifileList[index]">
                <UploadFileLink   @remove="deleIndex(1,index)" :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileIndex="index" :showTips="showTips" :fileList="model.applyList[index].fileList1" @uploadSuccess="baoxianFileUploaded2" />
@@ -124,7 +126,6 @@
  },
  methods: {
    deleIndex (flag,index) {
      alert(index)
      if(flag == 0){
        this.form.tbdMultifileList[index].fileurl = null
        this.form.tbdMultifileList[index].name = null
company/src/components/business/OperaUnionChangeDetailWindow.vue
@@ -27,6 +27,12 @@
                            <el-button  v-if="[0,1].includes(model.status)" type="danger" @click="$refs.OperaUnionChangeCheckWindow.open('退回投保',model,1)">退回投保</el-button>
                        </template>
                        <template  v-if="0">
                          <template  v-if="0">
                            <el-button type="primary"  @click="$refs.ApplyChangeDetails.open('更换派遣单位详单',model,0)">导出详单</el-button>
                            <el-button v-if="[1,2].includes(model.status)" type="primary" @click="viewApplyFile">查看申请单</el-button>
                            <el-button v-if="[0].includes(model.status)" type="primary" @click="getSignLink(0)">签署申请单</el-button>
                            <el-button v-if="[2].includes(model.status)" type="primary" @click="viewPidan">查看批单</el-button>
                          </template>
                                             </template>
                  </div>
                </div>
@@ -343,6 +349,11 @@
        this.setTime()
      })
    },
    openFile (url) {
      setTimeout(() => {
        window.open(url)
      }, 500)
    },
    setTime () {
      this.timer = setInterval(() => {
        if (this.num === 0) {
company/src/components/business/OperaUnionChangeUnitDetailWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,587 @@
<template>
    <GlobalWindow
        :title="title"
        width="100%"
        :visible.sync="visible"
        :confirm-working="isWorking"
        @confirm="confirm"
    >
        <div class="desc">
            <div class="desc_item">
                <div class="desc_item_label">
                    <div class="desc_item_label_left">
                        <span>投保人:{{ model.shopName}}</span>
                        <span v-if="model.status === 0">保单状态:<span  :class="'change-status'+model.status" >待签署</span></span>
                        <span v-if="model.status === 1">保单状态:<span  :class="'change-status'+model.status" >待审核</span></span>
                        <span v-if="model.status === 2">保单状态:<span  :class="'change-status'+model.status" >已生效</span></span>
                        <span v-if="model.status === 3">保单状态:<span  :class="'change-status'+model.status" >已退回</span></span>
                        <span>提交时间:{{ model.createDate }}</span>
                    </div>
                  <div class="desc_item_label_right">
                        <template v-if="2">
                            <el-button type="primary"  @click="$refs.ApplyChangeDetails.open('更换派遣单位详单',model,0)">导出详单</el-button>
                            <el-button v-if="[1,2].includes(model.status)" type="primary" @click="viewApplyFile">查看申请单</el-button>
                            <el-button v-if="[0].includes(model.status)" type="primary" @click="getSignLink(0)">签署申请单</el-button>
                            <el-button v-if="[2].includes(model.status)" type="primary" @click="viewPidan">查看批单</el-button>
                            <el-button v-if=" [1].includes(model.status)" type="primary" @click="$refs.OperaUnionChangeCheckWindow.open('上传批单',model,3)">上传批单</el-button>
                            <el-button  v-if="[0,1].includes(model.status)" type="danger" @click="$refs.OperaUnionChangeCheckWindow.open('退回投保',model,1)">退回投保</el-button>
                        </template>
                        <template  v-if="0">
                          <el-button type="primary"  @click="$refs.ApplyChangeDetails.open('更换派遣单位详单',model,0)">导出详单</el-button>
                          <el-button v-if="[1,2].includes(model.status)" type="primary" @click="viewApplyFile">查看申请单</el-button>
                          <el-button v-if="[0].includes(model.status)" type="primary" @click="getSignLink(0)">签署申请单</el-button>
                          <el-button v-if="[2].includes(model.status)" type="primary" @click="viewPidan">查看批单</el-button>
                         </template>
                  </div>
                </div>
                <div class="desc_item_from">
                    <el-table
                        :data="tableData"
                        border
                        style="width: 100%">
                        <el-table-column
                            prop="validCode"
                            align="center"
                            label="批单号">
                        </el-table-column>
                        <el-table-column
                            align="center"
                            label="保单号">
                            <template slot-scope="{row}">
                                <el-button type="text" @click="$refs.insuranceApplyDetails.open('投保详情', { id: row.applyId })">{{row.applyCode}}</el-button>
                            </template>
                        </el-table-column>
                        <el-table-column
                            prop="solutionsName"
                            label="保险方案"
                            align="center"
                            width="180">
                        </el-table-column>
                        <el-table-column
                            prop="startTime"
                            align="center"
                            label="保险生效起期">
                        </el-table-column>
                        <el-table-column
                            prop="endTime"
                            align="center"
                            label="保险生效止期">
                        </el-table-column>
                      <el-table-column
                          prop="changeNum"
                          align="center"
                          label="换厂人数">
                      </el-table-column>
                      <el-table-column
                          prop="applyStartTime"
                          align="center"
                          label="批单生效起期">
                      </el-table-column>
                    </el-table>
                </div>
                <div class="desc_item_from">
                    <el-table
                        :data="list"
                        border
                        style="width: 100%">
                        <el-table-column label="序号">
                            <template slot-scope="scope">
                                <span>{{scope.$index + 1}}</span>
                            </template>
                        </el-table-column>
                        <el-table-column
                            prop="memberName"
                            label="员工姓名">
                        </el-table-column>
                        <el-table-column
                            label="性别">
                            <template slot-scope="{row}">
                                <span v-if="row.sex === 0">男</span>
                                <span v-else>女</span>
                            </template>
                        </el-table-column>
                        <el-table-column
                            prop="memberIdcardNo"
                            label="身份证号">
                        </el-table-column>
                      <el-table-column
                          prop="companyName"
                          label="被保险人">
                      </el-table-column>
                      <el-table-column
                          prop="oldDuName"
                          label="原派遣单位">
                      </el-table-column>
                      <el-table-column
                          prop="oldWorkTypeName"
                          label="原所属工种">
                      </el-table-column>
                      <el-table-column
                          prop="duName"
                          label="更换后派遣单位">
                      </el-table-column>
                      <el-table-column
                          prop="workTypeName"
                          label="更换后所属工种">
                      </el-table-column>
                    </el-table>
                    <div class="desc_item_from_page">
                        <el-pagination
                            @current-change="handleCurrentChange"
                            :current-page="currentPage"
                            :page-size="10"
                            layout="total, prev, pager, next, jumper"
                            :total="total">
                        </el-pagination>
                    </div>
                </div>
                <div class="desc_item_review" v-if="model.applyLogList">
                    <div class="desc_item_review_label">审核流程</div>
                  <el-timeline :reverse="reverse">
                    <el-timeline-item
                        v-for="(activity, index) in model.applyLogList"
                        :key="index">
                      <div style="display: flex; flex-direction: column;">
                                <span style="font-size: 16px; font-weight: 400; color: black;">
                                    {{activity.title}}
                                    <span style="font-size: 16px; font-weight: 400; color: black; margin-left: 10px;" >
                                        {{activity.content}}
                                    </span>
                                </span>
                        <span style="margin-top: 5px; font-size: 12px; font-weight: 400; color: #999999;">
                                    æ“ä½œå‘˜-{{activity.creatorName}}({{activity.creatorType==1? activity.companyName: (activity.creatorType==2? activity.companyName: "平台端") }}}){{activity.createDate}}
                                </span>
                      </div>
                    </el-timeline-item>
                  </el-timeline>
                </div>
            </div>
        </div>
        <UnionChangeUnitDetails ref="ApplyChangeDetails" @success="successEvent" />
        <OperaUnionChangeCheckWindow ref="OperaUnionChangeCheckWindow" @success="successEvent" />
        <!--    ä¼ä¸šç”³è¯·é€€å›ž    -->
<!--        <applyReturn ref="applyReturn" @success="successEvent" />-->
        <add_subtract_return ref="add_subtract_return" @success="successEvent" />
        <!--    æ–°å¢žæŠ•保    -->
        <OperaInsuranceApply ref="OperaInsuranceApply" @success="successEvent" />
        <!--    æ›´æ¢æ´¾é£å•位申请    -->
        <reinsurance ref="reinsurance" @success="successEvent" />
        <!--    æ›´æ¢æ´¾é£å•位申请    -->
        <factoryChange ref="factoryChange" @success="successEvent" />
        <!--    æŠ•保详情    -->
        <insuranceApplyDetails ref="insuranceApplyDetails" @success="successEvent" />
      <!-- ä¿®æ”¹æ‰‹æœºå· -->
      <el-dialog
          :title="signTitle"
          :visible.sync="visiblePhone"
          width="500px"
          :modal="false"
          :show-close="false"
          :close-on-click-modal="false"
          center>
        <el-form :model="form" ref="form" :rules="rules">
          <el-form-item label="手机号" prop="phone">
            <el-input v-model="form.phone" placeholder="请输入" disabled v-trim/>
          </el-form-item>
          <el-form-item label="验证码" prop="code">
            <div style="width: 100%; display: flex; align-items: center;">
              <el-input v-model="form.code" placeholder="请输入" v-trim/>
              <el-button type="primary" style="margin-left: 15px;" @click="send" v-if="num === 0">发送验证码</el-button>
              <el-button type="primary" style="margin-left: 15px;" v-else>{{num}}s</el-button>
            </div>
          </el-form-item>
        </el-form>
        <span slot="footer" class="dialog-footer">
                <el-button type="primary" :loading="signing" @click="goSignDo()">ç¡®  å®š</el-button>
                <el-button @click="visiblePhone=false">取 æ¶ˆ</el-button>
            </span>
      </el-dialog>
      <el-dialog
          title="查看保险单"
          :visible.sync="visibleFile"
          width="500px"
          :modal="true"
          :show-close="true"
          :close-on-click-modal="false"
          append-to-body
          center>
        <div class="desc_item_from" v-for="(item, index) in pidanFileData" :key="index"  style="margin-bottom: 15px">
          <span v-if="index ==0">{{item.name}}:</span>
          <span v-if="index >0">被保险人({{item.name}})保险单:</span>
          <a style="cursor: pointer;color: #2E68EC" v-if="item.file && item.file.fileurl" @click="openFile(item.file.fileurlFull)">在线预览</a><span v-if="!item.file || !item.file.fileurl">未上传</span>
        </div>
        <span slot="footer" class="dialog-footer">
                <el-button @click="visibleFile=false">关 é—­</el-button>
            </span>
      </el-dialog>
      <template v-slot:footer>
        <el-button @click="visible=false">返回</el-button>
      </template>
    </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import UnionChangeUnitDetails from '@/components/business/UnionChangeUnitDetails'
import OperaUnionChangeCheckWindow from '@/components/business/OperaUnionChangeCheckWindow'
import reinsurance from '@/components/enterprise/reinsurance'
import factoryChange from '@/components/enterprise/factoryChange'
import add_subtract_return from '@/components/enterprise/add_subtract_return'
import {
  applyChagneDetailPage
} from '@/api/business/insuranceApply'
import {
  getById,
    getSignLink
} from '@/api/business/unionChange'
import {applyChangeOpt, listAll as applyList} from '@/api/business/applyChange'
import {sendSms} from "@/api/business/smsEmail";
import OperaInsuranceApply from '@/components/enterprise/OperaInsuranceApplyWindow'
import { mapState } from 'vuex'
export default {
  name: 'OperaUnionChangeDetailWindow',
  extends: BaseOpera,
  components: {
      GlobalWindow,
    UnionChangeUnitDetails,
    OperaUnionChangeCheckWindow,
      add_subtract_return,
      OperaInsuranceApply,
      reinsurance,
      factoryChange,
      insuranceApplyDetails: () => import ('@/components/business/OperaInsuranceApplyWindow')
  },
  data () {
    return {
      // è¡¨å•数据
      modelId:null,
      num: 0,
      timer: null,
      signing:false,
      signTitle: '手机号验证',
      pidanFileData:[],
      model: {},
      visiblePhone: false,
      visibleFile:false,
      form: {
          businessId: null,
          phone: this.$store.state.userInfo.company.phone,
          id: null,
          editDate: '',
          code:null
      },
      // éªŒè¯è§„则
      rules: {
      },
      formInline: {
          applyStatus: '',
          duId: '',
          workTypeId: '',
          memberName: '',
          types: ''
      },
      reverse: false,
      radio: 0,
      activities: [],
      tableData: [],
        list: [],
      activeName: '0',
        total: 0,
      currentPage: 1
    }
  },
  created () {
      this.config({
          api: '/business/insuranceApply',
          'field.id': 'id'
      })
  },
    computed: {
      ...mapState(['userInfo'])
    },
  methods: {
     open(title,target){
        this.visible = true;
        this.title = title
        this.modelId = target.id
       this.model={}
       this.form.businessId = target.id
       this.num=0
       this.signing=false
       this.visiblePhone=false
       this.visibleFile=false
       this. pidanFileData=[]
       this.timer=null
        this.getDetail()
        this.getList()
     },
    send () {
      sendSms({
        phone: this.form.phone
      }).then(res => {
        this.num = 60
        this.setTime()
      })
    },
    openFile (url) {
      setTimeout(() => {
        window.open(url)
      }, 500)
    },
    setTime () {
      this.timer = setInterval(() => {
        if (this.num === 0) {
          clearInterval(this.timer)
          this.timer = null
          return
        }
        this.num = this.num - 1
      }, 1000)
    },
    getSignLink (flag) {
        this.signTitle = '签署方案确认书'
      this.form.type = flag
      this.visiblePhone = true
      this.$nextTick(() => {
        this.$refs.form.resetFields()
      });
    },
    goSignDo(){
      this.$refs.form.validate((valid) => {
        if (!valid) {
          return
        }
        this.signing = true
        if(this.form.type===0){
          getSignLink(this.form).then(res => {
            setTimeout(() => {
              this.visiblePhone=false
              this.signing=false
              window.open(res)
            }, 500)
          }).catch(err => {
            this.signing=false
            this.$tip.apiFailed(err)
          })
        }
      })
    },
      resetting() {
            this.search()
      },
      closeOrder() {
          this.$confirm('确认关闭此订单吗?', '提示', {
              confirmButtonText: '确定',
              cancelButtonText: '取消',
              type: 'warning'
          }).then(() => {
              applyChangeOpt({
                  optType: 6,
                  applyId: this.model.id
              }).then(res => {
                  this.getDetail()
              }).catch(e => {
                  this.$message.error(e)
              })
          }).catch(() => {
          });
      },
      search() {
          this.currentPage = 1
          this.getList()
      },
      getList() {
           applyChagneDetailPage({
               capacity: 10,
               page: this.currentPage,
               model: {
                   unionChangeId: this.modelId
               }
           }).then(res => {
               this.list = res.records
               this.total = res.total
           })
      },
      handleClick(e) {
        this.activeName = e.index
        this.resetting()
      },
    viewApplyFile(){
       if(this.model.applyFile && this.model.applyFile.fileurlFull){
        window.open(this.model.applyFile.fileurlFull)
       }
    },
    viewPidan(){
      this.visibleFile=true
    },
    handleSizeChange(val){
        console.log(val)
    },
    handleCurrentChange(val){
        console.log(val)
        this.page = val
        this.getList()
    },
    onSubmit(){
    },
    getDetail(){
      this.pidanFileData=[]
      getById(this.modelId).then(res => {
        this.model = res
        this.tableData = new Array()
        this.tableData.push(res)
        this.pidanFileData.push({ name: '商户保险单', file: this.model.pidanFile })
        this.getApplyList()
      }).catch(err => {
      })
    },
    getApplyList () {
      applyList({ unionChangeId: this.model.id, getFiles: 1 }).then(res => {
        this.model.applyList = res
        if (res && res.length > 0) {
          res.forEach(item => {
            if (item.pidanFile) {
              this.pidanFileData.push({ name: item.companyName, file: item.pidanFile })
            } else {
              this.pidanFileData.push({ name: item.companyName, file: null })
            }
          })
        }
      }).catch(err => {
      })
    },
    successEvent(){
       // this.visible=false
      this.getDetail()
      this.$emit('success')
    }
  }
}
</script>
<style>
</style>
<style lang="scss" scoped>
    .form {
        width: 100%;
        display: flex;
        align-items: center;
        flex-direction: column;
        .form_span {
            width: 100%;
            display: flex;
            align-items: start;
            flex-direction: column;
            margin-bottom: 20px;
            span {
                font-size: 14px;
                &:nth-child(1) {
                    color: black;
                    margin-bottom: 5px;
                }
                &:nth-child(2) {
                    color: #8c939d;
                }
            }
        }
        .form_item {
            width: 100%;
            display: flex;
            align-items: center;
            margin-bottom: 20px;
            &:last-child {
                margin: 0 !important;
            }
            .form_item_label {
                flex-shrink: 0;
                width: 170px;
                color: black;
                font-size: 14px;
                span {
                    color: red;
                    font-size: 14px;
                }
            }
            .form_item_val {
                flex: 1;
                /*height: 40px;*/
                margin-left: 20px;
                textarea {
                    width: 100%;
                    height: 70px;
                    border: 1px solid #cbcbcb;
                    padding: 10px;
                    outline: none;
                    box-sizing: border-box;
                }
                input {
                    width: 100%;
                    height: 40px;
                    outline: none;
                    border-radius: 5px;
                    border: 1px solid #cbcbcb;
                    padding: 0 20px;
                    box-sizing: border-box;
                }
            }
        }
    }
    .desc {
        width: 100%;
        .desc_item {
            width: 100%;
            display: flex;
            flex-direction: column;
            .desc_item_label {
                width: 100%;
                display: flex;
                align-items: center;
                justify-content: space-between;
                margin-bottom: 10px;
                .desc_item_label_left {
                    flex-shrink: 0;
                }
                span {
                    font-size: 14px;
                    color: black;
                    margin-right: 30px;
                }
            }
            .desc_item_from {
                width: 100%;
                margin-bottom: 10px;
                .desc_item_from_page {
                    width: 100%;
                    display: flex;
                    align-items: center;
                    justify-content: end;
                    margin-top: 10px;
                }
            }
            .desc_item_cate {
                width: 100%;
                margin-bottom: 10px;
            }
            .desc_item_search {
                width: 100%;
                margin-bottom: 20px;
            }
            .desc_item_review {
                width: 100%;
                .desc_item_review_label {
                    font-size: 20px;
                    color: black;
                    font-weight: bold;
                    margin-bottom: 15px;
                }
            }
        }
    }
</style>
company/src/components/business/UnionChangeDetails.vue
@@ -115,7 +115,7 @@
<script>
    import BaseOpera from '@/components/base/BaseOpera'
    import GlobalWindow from '@/components/common/GlobalWindow'
    import {getChangeDetailList, exportJiajianBaoExcel} from "@/api/business/insuranceApply";
    import {getChangeDetailList} from "@/api/business/insuranceApply";
    import {check } from "@/api/business/applyChange";
    import {exportDetailExcel} from "@/api/business/unionChange";
    export default {
company/src/components/business/UnionChangeUnitDetails.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,357 @@
<template>
    <GlobalWindow
        :title="title"
        width="100%"
        :visible.sync="visible"
        :confirm-working="isWorking"
        @confirm="confirm"
    >
        <div class="box">
          <div class="top">
            {{title}}
          </div>
          <div class="box_table">
            <div class="box_table_head">
              <div class="box_table_head_item">投保人</div>
              <div class="box_table_head_item">保险方案</div>
              <div class="box_table_head_item">保险生效起期</div>
              <div class="box_table_head_item">保险生效止期</div>
              <div class="box_table_head_item">保单号</div>
              <div class="box_table_head_item">换厂</div>
              <div class="box_table_head_item">批单生效期</div>
            </div>
            <div class="box_table_content "  >
              <div class="box_table_content_item box_table_content_header">{{ model.shopName }}</div>
              <div class="box_table_content_item box_table_content_header">{{ model.solutionsName }}</div>
              <div class="box_table_content_item box_table_content_header">{{ model.startTime }}</div>
              <div class="box_table_content_item box_table_content_header">{{ model.endTime }}</div>
              <div class="box_table_content_item box_table_content_header">{{ model.applyCode }}</div>
              <div class="box_table_content_item box_table_content_header">{{ model.changeNum}}</div>
              <div class="box_table_content_item box_table_content_header">{{ model.applyStartTime}}</div>
            </div>
          </div>
          <div class="box_table">
            <div class="box_table_head box_table_content">
              <div class="box_table_head_item" style=" flex: 1;border-bottom: 0px">被保险人</div>
              <div class="box_table_content_item box_table_content_header" style=" flex: 6;">
                <p v-for="(item, index) in companyList" :key="index" >
                  {{index>0?',':''}} {{ item[1]}}
                </p>
               </div>
              </div>
          </div>
            <div class="box_table" v-if="addList && addList.length>0">
                <div class="box_table_head">
                    <div class="box_table_head_item">序号</div>
                    <div class="box_table_head_item">员工姓名</div>
                  <div class="box_table_head_item">性别</div>
                  <div class="box_table_head_item">身份证号</div>
                  <div class="box_table_head_item">被保险人</div>
                    <div class="box_table_head_item">原派遣单位</div>
                    <div class="box_table_head_item">原所属工种</div>
                    <div class="box_table_head_item">更换后派遣单位</div>
                    <div class="box_table_head_item">更换后所属工种</div>
                </div>
                <div class="box_table_content" v-for="(item, index) in addList" :key="index">
                  <div class="box_table_content_item">{{(index + 1)}}</div>
                  <div class="box_table_content_item" >{{ item.memberName }}</div>
                  <div class="box_table_content_item">{{  item.sex==0?"男":(item.sex==1?"女":"" )}}</div>
                  <div class="box_table_content_item">{{ item.memberIdcardNo }}</div>
                  <div class="box_table_content_item">{{ item.companyName }}</div>
                  <div class="box_table_content_item">{{ item.oldDuName }}</div>
                  <div class="box_table_content_item">{{item.oldWorkTypeName}}</div>
                  <div class="box_table_content_item">{{ item.duName }}</div>
                  <div class="box_table_content_item">{{item.workTypeName}}</div>
                </div>
            </div>
          <div class="box_table" v-if="type==1" style="border-top: 0px solid #b4bbc5;" >
            <div class="box_table_head">
              <div class="box_table_head_item5">备注</div>
              <div class="box_table_head_item5">
                <input v-model="form.checkInfo" style="width: 100%;height: 45px;border: 0px;outline: none;" placeholder="请输入" v-trim/>
              </div>
            </div>
          </div>
        </div>
        <template v-if="type==1" v-slot:footer>
            <el-button type="primary"  :loading="isWorking.export" @click="check(0)">提交通过</el-button>
<!--            <el-button type="danger"  :loading="isWorking.export" @click="check(1)">审核不通过</el-button>-->
            <el-button @click="visible=false">取消</el-button>
        </template>
        <template v-else-if="type==2" v-slot:footer>
            <el-button @click="visible=false">返回</el-button>
        </template>
        <template v-else v-slot:footer>
            <el-button type="primary"  :loading="isWorking.export" @click="exportDetail">导出详单</el-button>
            <el-button @click="visible=false">取消</el-button>
        </template>
    </GlobalWindow>
</template>
<script>
    import BaseOpera from '@/components/base/BaseOpera'
    import GlobalWindow from '@/components/common/GlobalWindow'
    import {getChangeDetailList} from "@/api/business/insuranceApply";
    import {check } from "@/api/business/applyChange";
    import {exportDetailExcel} from "@/api/business/unionChange";
    export default {
        name: 'ApplyChangeDetails',
        extends: BaseOpera,
        components: { GlobalWindow },
        data () {
            return {
                model:{},
                apply:{},
              type:0,
              delList:[],
              addList:[],
              companyList:new Map(),
                // è¡¨å•数据
                form: {
                    id: null,
                    dealBackApply:0,
                    checkInfo: ''
                },
                // éªŒè¯è§„则
                rules: {
                },
                reverse: false,
                tableData: []
            }
        },
        created () {
            this.config({
                api: '/business/insuranceApply',
                'field.id': 'id'
            })
        },
        methods: {
            open(title,target,target2){
              this.title=title
              this.visible=true
              this.model = target
              this.form.id=target.id
              this.type=target2
              this.getDetailListDo()
            },
           check (type) {
            this.form.dealBackApply = type
            this.$dialog.messageConfirm('确认进行该操作吗?')
                .then(() => {
                  this.isWorking = true
                  check(this.form)
                      .then(response => {
                        this.visible = false
                        this.$emit('success')
                      }).catch(err => {
                    this.$tip.apiFailed(err)
                  })
                })
                .catch(() => {
                })
          },
           getDetailListDo() {
             this.delList=[]
             this.addList=[]
             getChangeDetailList({unionChangeId: this.model.id})
                 .then(res => {
                   var index =0
                   res.forEach(item1 => {
                     this.companyList.set(item1.companyId, item1.companyName)
                     if (item1.type == 1) {
                       this.delList.push(item1);
                     } else {
                       this.addList.push(item1);
                     }
                   })
                 }).catch(err => {})
           },
          exportDetail(){
            this.$dialog.exportConfirm('确认导出详单吗?')
                .then(() => {
                  this.isWorking = true
                  exportDetailExcel({ id: this.model.id })
                      .then(response => {
                        this.download(response)
                      })
                      .catch(e => {
                        console.log(e)
                        this.$message.error('数据下载失败!')
                      })
                      .finally(() => {
                        this.isWorking = false
                      })
                })
                .catch(() => {
                })
          },
            handleSizeChange(val) {
                console.log(`每页 ${val} æ¡`);
            },
            handleCurrentChange(val) {
                console.log(`当前页: ${val}`);
            },
            handleClick(tab, event) {
                console.log(tab, event);
            },
            onSubmit() {
            }
        }
    }
</script>
<style lang="scss" scoped>
    .box {
        width: 100%;
       .top{
           width: 100%;
           align-items: center;
           flex-wrap: wrap;
           border-top: 1px solid #b4bbc5;
           border-left: 1px solid #b4bbc5;
            font-size: 14px;
            font-weight: bold;
            text-align: center;
          padding: 15px;
           box-sizing: border-box;
         }
        .box_header {
            width: 100%;
            display: flex;
            align-items: center;
            flex-wrap: wrap;
            border-top: 1px solid #b4bbc5;
            border-left: 1px solid #b4bbc5;
            box-sizing: border-box;
            .box_header_item {
                width: 50%;
                height: 50px;
                display: flex;
                align-items: center;
                border-right: 1px solid #b4bbc5;
                border-bottom: 1px solid #b4bbc5;
                box-sizing: border-box;
                .box_header_item_label {
                    flex: 1;
                    height: 100%;
                    display: flex;
                    align-items: center;
                    justify-content: center;
                    font-size: 14px;
                    color: black;
                    background: #f2f2f2;
                    border-right: 1px solid #b4bbc5;
                    box-sizing: border-box;
                }
                .box_header_item_val {
                    flex: 1;
                    height: 100%;
                    display: flex;
                    align-items: center;
                    justify-content: center;
                    font-size: 14px;
                    color: black;
                }
            }
        }
        .box_table {
            width: 100%;
            border-top: 1px solid #b4bbc5;
            border-left: 1px solid #b4bbc5;
            box-sizing: border-box;
            .box_table_head {
                width: 100%;
                display: flex;
                align-items: center;
                .box_table_head_item1 {
                    flex: 1;
                    height: 50px;
                    background: #f2f2f2;
                    display: flex;
                    align-items: center;
                    justify-content: center;
                    font-size: 14px;
                    color: black;
                    border-right: 1px solid #b4bbc5;
                    border-bottom: 1px solid #b4bbc5;
                    box-sizing: border-box;
                    }
                .box_table_head_item {
                    flex: 1;
                    height: 50px;
                    background: #f2f2f2;
                    display: flex;
                    align-items: center;
                    justify-content: center;
                    font-size: 14px;
                    color: black;
                    border-right: 1px solid #b4bbc5;
                    border-bottom: 1px solid #b4bbc5;
                    box-sizing: border-box;
                  &:nth-child(3) {
                  }
                  &:nth-child(9) {
                  }
                }
              .box_table_head_item5 {
                flex: 1;
                height: 50px;
                background: #f2f2f2;
                display: flex;
                align-items: center;
                justify-content: center;
                font-size: 14px;
                color: black;
                border-right: 1px solid #b4bbc5;
                border-bottom: 1px solid #b4bbc5;
                box-sizing: border-box;
                &:nth-child(2) {
                }
              }
              .box_form_item {
                flex: 1;
                height: 50px;
                background: #ffffff;
                display: flex;
                align-items: center;
                justify-content: center;
                font-size: 14px;
                color: black;
                border-right: 1px solid #b4bbc5;
                border-bottom: 1px solid #b4bbc5;
                box-sizing: border-box;
                &:nth-child(1) {
                }
              }
            }
            .box_table_content {
                width: 100%;
                display: flex;
                align-items: center;
                .box_table_content_header{
                  border-bottom: 0px solid #b4bbc5 !important;
                }
              .box_table_content_item {
                    flex: 1;
                    height: 50px;
                    background: #ffffff;
                    display: flex;
                    align-items: center;
                    justify-content: center;
                    font-size: 14px;
                    color: black;
                    border-right: 1px solid #b4bbc5;
                    border-bottom: 1px solid #b4bbc5;
                    box-sizing: border-box;
                &:nth-child(3) {
                }
                &:nth-child(9) {
                }
                }
            }
        }
    }
</style>
company/src/views/business/unionChangeUnit.vue
@@ -62,7 +62,7 @@
            fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.OperaApplyChangeDetailWindow.open('更换派遣单位详情', row)">查看详情</el-button>
            <el-button type="text" @click="$refs.OperaUnionChangeUnitDetailWindow.open('更换派遣单位详情', row)">查看详情</el-button>
          </template>
        </el-table-column>
      </el-table>
@@ -74,7 +74,8 @@
      </pagination>
    </template>
    <!--    æäº¤ç”³è¯·    -->
    <OpearaUnionChangeUnit ref="OpearaUnionChangeUnit" />
    <OpearaUnionChangeUnit ref="OpearaUnionChangeUnit" @success="successDo"/>
    <OperaUnionChangeUnitDetailWindow ref="OperaUnionChangeUnitDetailWindow" @success="successDo" />
  </TableLayout>
</template>
@@ -82,11 +83,12 @@
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaUnionChangeUnitDetailWindow from '@/components/business/OperaUnionChangeUnitDetailWindow'
import OpearaUnionChangeUnit from '@/components/business/OpearaUnionChangeUnit'
export default {
  name: 'unionChangeUnit',
  extends: BaseTable,
  components: { TableLayout, Pagination, OpearaUnionChangeUnit },
  components: { TableLayout, Pagination, OpearaUnionChangeUnit,OperaUnionChangeUnitDetailWindow },
  data () {
    return {
      // æœç´¢
@@ -110,6 +112,9 @@
    this.search()
  },
  methods: {
    successDo(){
      this.reset()
    },
    changeTime(e) {
      if (e.length > 0) {
        this.searchForm.queryStartTime = e[0]
server/service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java
@@ -1006,17 +1006,17 @@
        try {
            sxssfWorkbook = new SXSSFWorkbook();
            Sheet sheet = sxssfWorkbook.createSheet(sheetName);
            for (int i = 0; i < 9; i++) {
            for (int i = 0; i < 8; i++) {
                sheet.setColumnWidth(i, ((i==3|| i== 4|| i== 5 ||i== 6 || i==7)?16:8) * 2 * 256);
            }
            sheet.createFreezePane(0, 1);
            sheet.addMergedRegion(new CellRangeAddress(0   ,0,0,8));
            sheet.addMergedRegion(new CellRangeAddress(0   ,0,0,7));
            Row title = sheet.createRow(0);
            title.setHeight((short) 2000);
            Cell c = title.createCell(0);
            c.setCellValue(sheetName);
            configFirstCell(sxssfWorkbook,c);
            for (int i = 0; i < 9; i++) {
            for (int i = 0; i < 8; i++) {
                if(i>0){
                    title.createCell(i).setCellValue("");
                }
@@ -1395,7 +1395,7 @@
            sheet.createFreezePane(0, 1);
            sheet.addMergedRegion(new CellRangeAddress(0   ,0,0,8));
            Row title = sheet.createRow(0);
            title.setHeight((short) 2000);
            title.setHeight((short) 1000);
            Cell c = title.createCell(0);
            c.setCellValue(sheetName);
            configFirstCell(sxssfWorkbook,c);
@@ -1407,49 +1407,56 @@
            }
            Row header1 = sheet.createRow(1);
            header1.createCell(0).setCellValue("投保人");
            header1.createCell(1).setCellValue("保险方案");
            header1.createCell(2).setCellValue("");
            header1.createCell(1).setCellValue("");
            header1.createCell(2).setCellValue("保险方案");
            header1.createCell(3).setCellValue(""); 
            header1.createCell(4).setCellValue("保单号");
            header1.createCell(5).setCellValue("保险生效起期");
            header1.createCell(6).setCellValue("保险生效止期");
            header1.createCell(7).setCellValue("换厂人数");
            header1.createCell(8).setCellValue("期望批单生效期");
            sheet.addMergedRegion(new CellRangeAddress(1  ,1,0,1));
            sheet.addMergedRegion(new CellRangeAddress(1  ,1,2,3));
            for (int i = 0; i < 9; i++) {
                configFirstCell(sxssfWorkbook,header1.getCell(i));
            }
            sheet.addMergedRegion(new CellRangeAddress(1  ,1,1,3));
            Row header2 = sheet.createRow(2);
            header2.createCell(0).setCellValue(data.getShopName());
            header2.createCell(1).setCellValue(data.getSolutionsName());
            header2.createCell(2).setCellValue("");
            header2.createCell(1).setCellValue("");
            header2.createCell(2).setCellValue(data.getSolutionsName());
            header2.createCell(3).setCellValue("");
            header2.createCell(4).setCellValue(data.getApplyCode());
            header2.createCell(5).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getStartTime()));
            header2.createCell(6).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getEndTime()));
            header2.createCell(7).setCellValue(data.getApplyChagneDetailList().stream().filter(i->i.getType().equals(Constants.TWO)).collect(Collectors.toList()).size());
            header2.createCell(8).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getApplyStartTime()));
            sheet.addMergedRegion(new CellRangeAddress(2  ,2,1,3));
//            sheet.addMergedRegion(new CellRangeAddress(2  ,2,1,3));
            sheet.addMergedRegion(new CellRangeAddress(2  ,2,0,1));
            sheet.addMergedRegion(new CellRangeAddress(2  ,2,2,3));
            for (int i = 0; i < 9; i++) {
                configDataCell(sxssfWorkbook,header2.getCell(i));
            }
            Row header3 = sheet.createRow(3);
            header3.createCell(0).setCellValue("被保险人");
            header3.createCell(1).setCellValue(data.getCompanyNames());
            header3.createCell(2).setCellValue("");
            header3.createCell(1).setCellValue("");
            header3.createCell(2).setCellValue(data.getCompanyNames());
            header3.createCell(3).setCellValue("");
            header3.createCell(4).setCellValue("");
            header3.createCell(5).setCellValue("");
            header3.createCell(6).setCellValue("");
            header3.createCell(7).setCellValue("");
            header3.createCell(8).setCellValue("");
            for (int i = 0; i < 9; i++) {
            for (int i = 0; i < 2; i++) {
                configFirstCell(sxssfWorkbook,header3.getCell(i));
            }
            sheet.addMergedRegion(new CellRangeAddress(3  ,3,1,8));
            for (int i = 2; i < 9; i++) {
                configDataCell(sxssfWorkbook,header3.getCell(i));
            }
            sheet.addMergedRegion(new CellRangeAddress(3  ,3,0,1));
            sheet.addMergedRegion(new CellRangeAddress(3  ,3,2,8));
            List<ApplyChagneDetail> otherChangeDetailList = data.getApplyChagneDetailList().stream().filter(i->i.getType().equals(Constants.TWO)).collect(Collectors.toList());
@@ -1485,7 +1492,7 @@
                    header6.createCell(7).setCellValue(applyChagneDetail.getDuName());
                    header6.createCell(8).setCellValue(applyChagneDetail.getWorkTypeName());
                    for (int i = 0; i < 9; i++) {
                        configFirstCell(sxssfWorkbook,header6.getCell(i));
                        configDataCell(sxssfWorkbook,header6.getCell(i));
                    } 
                }
            } 
@@ -1772,7 +1779,7 @@
            sheet.createFreezePane(0, 1);
            sheet.addMergedRegion(new CellRangeAddress(0   ,0,0,7));
            Row title = sheet.createRow(0);
            title.setHeight((short) 2000);
            title.setHeight((short) 1000);
            for (int i = 0; i < 8; i++) {
                title.createCell(i).setCellValue(i==0?sheetName:"");
                configTitleCell(sxssfWorkbook,title.getCell(i));
@@ -1931,7 +1938,7 @@
            sheet.createFreezePane(0, 1);
            sheet.addMergedRegion(new CellRangeAddress(0   ,0,0,8));
            Row title = sheet.createRow(0);
            title.setHeight((short) 2000);
            title.setHeight((short) 1000);
            Cell c = title.createCell(0);
            c.setCellValue(sheetName);
            configFirstCell(sxssfWorkbook,c);
@@ -1943,49 +1950,56 @@
            }
            Row header1 = sheet.createRow(1);
            header1.createCell(0).setCellValue("投保人");
            header1.createCell(1).setCellValue("保险方案");
            header1.createCell(2).setCellValue("");
            header1.createCell(1).setCellValue("");
            header1.createCell(2).setCellValue("保险方案");
            header1.createCell(3).setCellValue("");
            header1.createCell(4).setCellValue("保单号");
            header1.createCell(5).setCellValue("保险生效起期");
            header1.createCell(6).setCellValue("保险生效止期");
            header1.createCell(7).setCellValue("换厂人数");
            header1.createCell(8).setCellValue("期望批单生效期");
            sheet.addMergedRegion(new CellRangeAddress(1  ,1,0,1));
            sheet.addMergedRegion(new CellRangeAddress(1  ,1,2,3));
            for (int i = 0; i < 9; i++) {
                configFirstCell(sxssfWorkbook,header1.getCell(i));
            }
            sheet.addMergedRegion(new CellRangeAddress(1  ,1,1,3));
            Row header2 = sheet.createRow(2);
            header2.createCell(0).setCellValue(data.getShopName());
            header2.createCell(1).setCellValue(data.getSolutionsName());
            header2.createCell(2).setCellValue("");
            header2.createCell(1).setCellValue("");
            header2.createCell(2).setCellValue(data.getSolutionsName());
            header2.createCell(3).setCellValue("");
            header2.createCell(4).setCellValue(data.getApplyCode());
            header2.createCell(5).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getStartTime()));
            header2.createCell(6).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getEndTime()));
            header2.createCell(7).setCellValue(data.getApplyChagneDetailList().stream().filter(i->i.getType().equals(Constants.TWO)).collect(Collectors.toList()).size());
            header2.createCell(8).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getApplyStartTime()));
            sheet.addMergedRegion(new CellRangeAddress(2  ,2,1,3));
//            sheet.addMergedRegion(new CellRangeAddress(2  ,2,1,3));
            sheet.addMergedRegion(new CellRangeAddress(2  ,2,0,1));
            sheet.addMergedRegion(new CellRangeAddress(2  ,2,2,3));
            for (int i = 0; i < 9; i++) {
                configDataCell(sxssfWorkbook,header2.getCell(i));
            }
            Row header3 = sheet.createRow(3);
            header3.createCell(0).setCellValue("被保险人");
            header3.createCell(1).setCellValue(data.getCompanyNames());
            header3.createCell(2).setCellValue("");
            header3.createCell(1).setCellValue("");
            header3.createCell(2).setCellValue(data.getCompanyNames());
            header3.createCell(3).setCellValue("");
            header3.createCell(4).setCellValue("");
            header3.createCell(5).setCellValue("");
            header3.createCell(6).setCellValue("");
            header3.createCell(7).setCellValue("");
            header3.createCell(8).setCellValue("");
            for (int i = 0; i < 9; i++) {
            for (int i = 0; i < 2; i++) {
                configFirstCell(sxssfWorkbook,header3.getCell(i));
            }
            sheet.addMergedRegion(new CellRangeAddress(3  ,3,1,8));
            for (int i = 2; i < 9; i++) {
                configDataCell(sxssfWorkbook,header3.getCell(i));
            }
            sheet.addMergedRegion(new CellRangeAddress(3  ,3,0,1));
            sheet.addMergedRegion(new CellRangeAddress(3  ,3,2,8));
            List<ApplyChagneDetail> otherChangeDetailList = data.getApplyChagneDetailList().stream().filter(i->i.getType().equals(Constants.TWO)).collect(Collectors.toList());
@@ -2021,7 +2035,7 @@
                    header6.createCell(7).setCellValue(applyChagneDetail.getDuName());
                    header6.createCell(8).setCellValue(applyChagneDetail.getWorkTypeName());
                    for (int i = 0; i < 9; i++) {
                        configFirstCell(sxssfWorkbook,header6.getCell(i));
                        configDataCell(sxssfWorkbook,header6.getCell(i));
                    }
                }
            }
server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java
@@ -1517,6 +1517,9 @@
        queryWrapper
                .selectAll(ApplyChange.class)
                .selectAs(InsuranceApply::getCode,ApplyChange::getApplyCode)
                .selectAs(InsuranceApply::getStartTime,ApplyChange::getStartTime)
                .selectAs(InsuranceApply::getCode,ApplyChange::getValidCode)
                .selectAs(InsuranceApply::getEndTime,ApplyChange::getEndTime)
                .selectAs(Solutions::getName,ApplyChange::getSolutionsName)
                .selectAs(Solutions::getType,ApplyChange::getSolutionType)
                .selectAs(Company::getName,ApplyChange::getCompanyName)
@@ -1767,9 +1770,9 @@
        List<Multifile> multifiles = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda()
                .eq(Multifile::getObjId, applyChange.getId() )
                .in(Multifile::getObjType, Arrays.asList(new Integer[]{Constants.MultiFile.CA_APPLY_JIAJIAN_SIGN.getKey()
                        ,Constants.MultiFile.CA_PD_PDF.getKey()
                        ,Constants.MultiFile.CA_APPLY_CHANGEUNIT_SIGN.getKey()}))
//                .in(Multifile::getObjType, Arrays.asList(new Integer[]{Constants.MultiFile.CA_APPLY_JIAJIAN_SIGN.getKey()
//                        ,Constants.MultiFile.CA_PD_PDF.getKey()
//                        ,Constants.MultiFile.CA_APPLY_CHANGEUNIT_SIGN.getKey()}))
                .eq(Multifile::getIsdeleted,Constants.ZERO));
        if(multifiles!=null){
            String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()
server/service/src/main/java/com/doumee/service/business/impl/UnionChangeServiceImpl.java
@@ -399,13 +399,16 @@
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if(user.getType().equals(Constants.TWO)){
        user.setType(Constants.formatIntegerNum(user.getType()));
        if(!user.getType().equals(Constants.TWO)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非商户用户,无法进行该操作!");
        }
        UnionChange unionChange = unionChangeMapper.selectById(closeDTO.getId());
        if(Objects.isNull(unionChange)||!Constants.equalsInteger(unionChange.getIsdeleted(),Constants.ZERO)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        unionChange.setStatus(Constants.formatIntegerNum(unionChange.getStatus()));
        unionChange.setShopId(Constants.formatIntegerNum(unionChange.getShopId()));
        if(!unionChange.getShopId().equals(user.getCompanyId())){
            throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"对不起非您的合并单,您无法进行操作!");
        }
@@ -426,14 +429,14 @@
        applyChagneDetailJoinMapper.update(null,new UpdateWrapper<ApplyChagneDetail>().lambda()
                .set(ApplyChagneDetail::getUnionChangeId,null)
                .in(ApplyChagneDetail::getApplyId,unionChange.getId()));
                .eq(ApplyChagneDetail::getUnionChangeId,unionChange.getId()));
        unionChangeMapper.update(null,new UpdateWrapper<UnionChange>().lambda()
                .set(UnionChange::getStatus,Constants.UnionApplyStatus.CLOSE.getKey())
                .set(UnionChange::getStatus,Constants.UnionChangeStatus.CLOSE.getKey())
                .eq(UnionChange::getId,unionChange.getId())
        );
        Constants.ApplyLogType applyLogType = Constants.ApplyLogType.CA_HBD_UPLOAD;
        Constants.ApplyLogType applyLogType = Constants.ApplyLogType.CA_HBD_CLOSE;
        String info =applyLogType.getInfo();
        info = info.replace("${param}", closeDTO.getReason());
        ApplyLog log = new ApplyLog(unionChange,applyLogType.getName(), info
@@ -647,8 +650,6 @@
                multifileMapper.insert(m);
            }
        }
        if(CollectionUtils.isNotEmpty(applyChangeList)){
            for (ApplyChange applyChange:applyChangeList) {
                applyChange.setApplyStartTime(unionChangeBXDDTO.getApplyDate());