nidapeng
2024-04-03 3a5fbcae78f6d395468826ce5dbcf6b4643aec7e
提交一把
已添加2个文件
已修改10个文件
1076 ■■■■■ 文件已修改
company/src/assets/style/style.scss 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/ApplyChangeUnitDetails.vue 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/OpearaUnionChange.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/OpearaUnionChangeUnit.vue 392 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/OperaApplyChangeDetailWindow.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/OperaUnionChangeDetailWindow.vue 572 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/views/business/unionApply.vue 补丁 | 查看 | 原始文档 | blame | 历史
company/src/views/business/unionChange.vue 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/views/business/unionChangeUnit.vue 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/dto/ApplyDetailPageDTO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/ApplyChagneDetailServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/UnionChangeServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/assets/style/style.scss
@@ -80,7 +80,9 @@
::v-deep .el-table__cell {
  height: 100% !important;
}
.apply-status0, .apply-status26,.apply-status20,.apply-status28,
.union-change-status0,.union-change-status1,
.apply-status0, .apply-status26,,.apply-status20,.apply-status28,
.apply-status21,.apply-status22,
.apply-status23,.apply-status2 , .apply-status3, .apply-status10,
.change-status0,.change-status1,.change-status9,
@@ -90,6 +92,7 @@
.du-status0 {
  color: #216EEE  !important;
}
.union-change-status3,
.apply-status1 ,.apply-status24,.apply-status25, .apply-status4, .apply-status6,
.apply-status7, .apply-status8, .apply-status11,
.change-status3,.change-status4,.change-status5,.change-status8,
@@ -98,6 +101,7 @@
.du-status2 {
  color: #F95601 !important;
}
.union-change-status2,
  .apply-status5,.apply-status27,.change-status7,.settle-status7,.change-status2,
  .tax-status1,.du-status1,.settle-status4 ,.union-apply-status3 {
  color: #00BA92  !important;
company/src/components/business/ApplyChangeUnitDetails.vue
@@ -66,6 +66,9 @@
<!--            <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==1" 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="exportComFilesDo">企业证件</el-button>
            <el-button type="primary"  :loading="isWorking.export" @click="exportDetail">导出详单</el-button>
@@ -79,6 +82,7 @@
    import GlobalWindow from '@/components/common/GlobalWindow'
    import {getChangeDetailList, exportChangeUnitExcel} from "@/api/business/insuranceApply";
    import {exportComFiles} from "@/api/business/company";
    import {check} from "@/api/business/applyChange";
    // import {all as solutionAll} from "@/api/business/solutions";
    export default {
        name: 'ApplyChangeUnitDetails',
@@ -110,13 +114,30 @@
            })
        },
        methods: {
            open(title,target,target2){
            open(title,target,target2,target3){
              this.title=title
              this.visible=true
              this.apply = target
              this.model = target2
              this.form.id=target.id
              this.type=target3
              this.form.id=target2.id
              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.detailList = []
@@ -265,13 +286,13 @@
                    border-bottom: 1px solid #b4bbc5;
                    box-sizing: border-box;
                  &:nth-child(4) {
                    flex: 1.5;;
                    flex: 1.5;
                  }
                  &:nth-child(6) {
                    flex: 1.5;;
                    flex: 1.5;
                  }
                  &:nth-child(8) {
                    flex: 1.5;;
                    flex: 1.5;
                  }
                }
              .box_table_head_item5 {
@@ -286,8 +307,11 @@
                border-right: 1px solid #b4bbc5;
                border-bottom: 1px solid #b4bbc5;
                box-sizing: border-box;
                &:nth-child(1) {
                   flex: 1;
                }
                &:nth-child(2) {
                   flex: 5;
                   flex: 8.5;
                }
              }
              .box_form_item {
company/src/components/business/OpearaUnionChange.vue
@@ -337,6 +337,7 @@
    getList () {
      listAll({
          solutionType:1,
          type:0,
          unionApplyId: this.model.id,
          status: 7
      }).then(res => {
company/src/components/business/OpearaUnionChangeUnit.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,392 @@
<template>
  <GlobalWindow
      :title="title"
      width="100%"
      text="加减保申请"
      :visible.sync="visible"
      :confirm-working="isWorking"
      @confirm="confirm"
  >
    <div class="list">
      <el-form :inline="true" ref="form" :model="form" :rules="rules" class="demo-form-inline">
        <el-form-item label=" " prop="unionApplyId" >
          <div style=" display: flex; flex-direction: column;">
            <el-button type="primary" size="small" @click="selectBaoxiandan"> é€‰æ‹©ä¿é™©å•</el-button>
            <span style="color: #F95601; font-size: 14px;">(1. è¯·é€‰æ‹©ä¿é™©å•后进行操作)</span>
          </div>
        </el-form-item>
        <el-form-item label="批单生效起期:" prop="applyDate" style="margin-left: 40px">
          <div style="display: flex; flex-direction: column;">
            <el-date-picker
                v-model="form.applyDate"
                type="date"
                format="yyyy å¹´ MM æœˆ dd æ—¥"
                value-format="yyyy-MM-dd" />
            <span style="color: #F95601; font-size: 14px;">(2. æ¬¡æ—¥ç”Ÿæ•ˆæŠ•保请于17:30前提交,超时提交以保险单为准)</span>
          </div>
        </el-form-item>
        <el-form-item label="费用" v-if="model">
          <span>{{model.price}}元</span>
          <span v-if="model.timeUnit === 0">/天</span>
          <span v-if="model.timeUnit === 1">/半月</span>
          <span v-if="model.timeUnit === 2">/月</span>
          <span v-if="model.timeUnit === 3">/å¹´</span>
          <span>/人</span>
        </el-form-item>
        <el-form-item label="投保年龄" v-if="item">
          <span>{{model.minAge}} è‡³ {{model.maxAge}}</span>
        </el-form-item>
      </el-form>
    </div>
    <div style="display: block;margin:0 0 30px 30px " v-if="model">
      <div style="display: inline-block;width: 300px">保险方案:{{model.solutionName}}</div>
      <div style="display: inline-block">保单号:{{model.code}}</div>
    </div>
    <el-table
        :data="list"
        border
        ref="multipleTable"
        @row-click="rowselect"
        @selection-change="handleSelectionChange"
        style="width: 100%;margin-bottom: 15px;">
      <el-table-column
          type="selection"
          width="55">
      </el-table-column>
      <el-table-column label="序号" width="80px">
        <template slot-scope="scope">
          <span>{{scope.$index + 1}}</span>
        </template>
      </el-table-column>
      <el-table-column
          prop="companyName"
          label="被保险人">
      </el-table-column>
      <el-table-column
          prop="applyStartTime"
          label="期望保险生效起期">
      </el-table-column>
      <el-table-column
          prop="addNum"
          label="加保人数">
      </el-table-column>
      <el-table-column
          prop="delNum"
          label="减保人数">
      </el-table-column>
      <el-table-column
          prop="fee"
          label="费用变更">
      </el-table-column>
      <el-table-column  label="操作">
        <template slot-scope="{row}">
          <el-button type="text" @click="checkDetial(row)">查看名单</el-button>
          <!--                    <el-button type="text" style="color: #ff0000;">删除</el-button>-->
        </template>
      </el-table-column>
    </el-table>
    <div style="color: #F95601; font-size: 14px;width: 100%;text-align: left">(3. è¯·å…ˆé€‰æ‹©è‡³å°‘一条申请后提交投保申请)</div>
    <div class="info" v-if="model">
      <span v-if="model.specialAgreement">{{model.specialAgreement}}</span>
      <span v-if="model.specialInfo">{{model.specialInfo}}</span>
      <span v-if="model.ortherInfo">{{model.ortherInfo}}</span>
    </div>
    <!--    é€‰æ‹©ç”³è¯·å•    -->
    <ApplyChangeDetails ref="ApplyChangeDetails" @success="getValue" />
    <el-dialog
        title="选择保险单"
        :visible.sync="visibleSelect"
        width="70%"
        :modal="true"
        :show-close="false"
        append-to-body
        center>
      <div class="desc_item_from">
        <el-table
            ref="multipleTable1"
            v-loading="isWorking.search"
            :data="tableData.list"
            @row-click="rowselect1"
            row-key="id"
            @selection-change="handleSelectionChange1"
            stripe
        >
         <el-table-column
            type="selection"
            width="55">
        </el-table-column>
          <el-table-column label="序号" width="80px">
            <template slot-scope="scope">
              <span>{{scope.$index + 1}}</span>
            </template>
          </el-table-column>
          <el-table-column prop="statusInfo" label="状态" min-width="100px">
            <template slot-scope="{row}">
              <span :class="'union-apply-status'+row.status"  >{{ row.statusInfo}}</span>
            </template>
          </el-table-column>
          <el-table-column prop="code" label="保单号" min-width="100px"></el-table-column>
          <el-table-column prop="solutionName" label="保险方案" min-width="100px"></el-table-column>
          <el-table-column prop="insureNum" label="投保人数" min-width="100px"></el-table-column>
          <el-table-column prop="fee" label="总费用(元)" min-width="100px"></el-table-column>
          <el-table-column prop="createDate" label="提交时间" min-width="100px"></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="tableTotal">
          </el-pagination>
        </div>
      </div>
      <span slot="footer" class="dialog-footer">
                <el-button type="primary" @click="selectDo()">ç¡®  å®š</el-button>
                <el-button @click="model=null;visibleSelect=false">取 æ¶ˆ</el-button>
            </span>
    </el-dialog>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
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 { fetchList as pageUnionList } from '@/api/business/unionApply'
import {getDetail} from "@/api/business/insuranceApply";
export default {
  name: 'add_subtract_entrust',
  extends: BaseOpera,
  components: { GlobalWindow, ApplyChangeDetails,selectApplicationForm },
  data () {
    return {
      form: {
        unionApplyId: null,
        applyIds: [],
        applyDate: null,
        businessType: 1
      },
      visibleSelect:false,
      solutions: [],
      currentPage:0,
      list: [],
      tableData:[],
      tableTotal:0,
      endTime: '',
      item: null,
      model: null,
      time: [],
      // éªŒè¯è§„则
      rules: {
        unionApplyId: [
          { required: true, message: '请选择保险单' }
        ],
        applyDate: [
          { required: true, message: '请选择保险生效起期' }
        ]
      }
    }
  },
  created () {
    this.config({
      api: '/business/insuranceApply',
      'field.id': 'id'
    })
  },
  methods: {
    rowselect(row){
      this.$refs.multipleTable.toggleRowSelection(row,true);
    },
    rowselect1(row){
      this.$refs.multipleTable1.toggleRowSelection(row,true);
    },
    checkDetial(row){
      getDetail(row.applyId).then(res => {
        // this.apply = res
        this.$refs.ApplyChangeDetails.open('加减保人员名单',res, row,2)
      }).catch(err => {
      })
    },
    handleSelectionChange(rows){
      this.form.applyIds = []
      // å‡è®¾å–出 id å­—段
      rows.forEach(item => {
        const id = item.id
        if ( this.form.applyIds.indexOf(id) === -1) {
          this.form.applyIds.push(id)
        }
      })
    },
    handleSelectionChange1 (rows) {
      console.log(rows)
      if (rows.length > 1) {
        // clearSelection ç”¨äºŽå¤šé€‰è¡¨æ ¼ï¼Œæ¸…空用户的选择
        this.$refs.multipleTable1.clearSelection();
        this.$refs.multipleTable1.toggleRowSelection(rows[rows.length-1]);
      }
     if (rows.length >= 1) {
        // é€‰ä¸­çš„行对像放进数组,方便后续对数据进行操作
        this.model =rows[rows.length-1]
      } else if (rows.length === 0) {
        this.model = null
      }
    },
    selectDo(){
      if(!this.model){
        this.$tip.apiFailed({
          type: 'error',
          message: '请选择至少一条申请记录进行操作'
        })
        return
      }
      this.visibleSelect=false
      this.form.unionApplyId = this.model.id
      this.getList();
    },
    confirm () {
      this.$refs.form.validate((valid) => {
        // debugger
        if (!valid) {
          return
        }
        if(this.form.applyIds == null || this.form.applyIds.length ===0){
          this.$tip.apiFailed({
            type: 'error',
            message: '请选择至少一条申请记录进行投保申请!!'
          })
          return;
        }
        this.$confirm('确认提交,请仔细核对信息。', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning',
          center: true
        }).then(() => {
          merge(this.form)
              .then(response => {
                this.$message({
                  type: 'success',
                  message: '提交成功!'
                })
                this.visible = false
                this.$emit('success')
              }).catch(err => {
            this.$tip.apiFailed(err)
          })
        }).catch(() => {
          this.$message({
            type: 'info',
            message: '取消'
          })
        })
      })
    },
    open (title, target) {
      this.title = title
      this.model= null
      this.list= []
      this.visibleSelect=false
      this.tableData=[]
      this.tableTotal=0
      this.item= null
      if (target) {
        this.$nextTick(() => {
          this.$refs.form.resetFields()
        })
      } else {
        this.$nextTick(() => {
          this.$refs.form.resetFields()
          this.form[this.configData['field.id']] = null
        })
      }
      // this.getUnionApplyList()
      this.visible = true
    },
    getValue(){
    },
    selectBaoxiandan(){
      this.currentPage = 1
      this.visibleSelect=true
      this.$refs.multipleTable.clearSelection();
      this.getUnionApplyList()
    },
    getUnionApplyList(){
      pageUnionList({
        capacity: 10,
        page: this.currentPage,
        model: {
          status: 3,
        }
      }).then(res => {
        this.tableData.list = res.records
        this.tableTotal = res.total
        this.$nextTick(() => {
          console.log(this.$refs.multipleTable1)
          if (this.$refs.multipleTable1 && this.$refs.multipleTable1.doLayout) {
            this.$refs.multipleTable1.doLayout()
          }
        })
      })
    },
    getList () {
      listAll({
          solutionType:1,
          type:1,
          unionApplyId: this.model.id,
          status: 7
      }).then(res => {
        this.list = res
        this.$nextTick(() => {
          if (this.$refs.multipleTable && this.$refs.multipleTable.doLayout) {
            this.$refs.multipleTable.doLayout()
          }
        })
      })
    },
    handleCurrentChange (val) {
      this.currentPage = val
      this.getUnionApplyList()
    }
  }
}
</script>
<style lang="scss" scoped>
.list {
  width: 100%;
}
.btns {
  width: 100%;
  margin-bottom: 15px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  .btns_item {
    display: flex;
    align-items: center;
  }
}
.submit {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 15px;
}
.desc_item_cate {
  width: 100%;
  margin-bottom: 10px;
}
.info {
  margin-top: 30px;
  width: 100%;
  font-size: 14px;
  color: black;
}
</style>
company/src/components/business/OperaApplyChangeDetailWindow.vue
@@ -325,6 +325,8 @@
        this.title = title
        this.dataId = target.applyId
        this.modelId = target.id
       this.model={}
       this.apply={}
       this.form.businessId = target.id
       this.num=0
       this.timer=null
company/src/components/business/OperaUnionChangeDetailWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,572 @@
<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('加减保详单',apply,model,0)">导出详单</el-button>
                            <el-button v-if="[1,2,4,7,9].includes(model.status)" type="primary" @click="viewApplyFile">查看申请单</el-button>
                            <el-button v-if="[2].includes(model.status)" type="primary" @click="viewPidan">查看批单</el-button>
                            <el-button v-if=" model.solutionType == 1 && [1].includes(model.status)" type="primary" @click="$refs.ApplyChangeDetails.open('投保审核',apply,model,1)">投保审核</el-button>
                            <el-button v-if=" model.solutionType == 1 && [0,1].includes(model.status)" type="danger" @click="$refs.OperaApplyChangeCheckWindow.open('退回申请',model,1)">退回申请</el-button>
                            <el-button v-if=" model.solutionType == 1 && [7].includes(model.status)" type="danger" @click="closeOrder">关闭订单</el-button>
                            <el-button v-if=" model.solutionType == 0 && [1].includes(model.status)" type="primary" @click="$refs.OperaApplyChangeCheckWindow.open('上传批单',model,3)">上传批单</el-button>
                            <el-button  v-if="model.solutionType == 0 &&[3,4].includes(model.status)"  type="primary" @click="$refs.OperaApplyChangeCheckWindow.open('驳回退回申请',model,5)">驳回退回申请</el-button>
                            <el-button  v-if="model.solutionType == 0 &&[0,1].includes(model.status)" type="danger" @click="$refs.OperaApplyChangeCheckWindow.open('退回投保',model,1)">退回投保</el-button>
                            <el-button  v-if="model.solutionType == 0 &&[2].includes(model.status)"  type="danger" @click="$refs.OperaApplyChangeCheckWindow.open('修改批单',model,4)">修改批单</el-button>
                        </template>
                        <template  v-if="0">
                          <el-button type="primary" @click="$refs.ApplyChangeDetails.open('加减保详单',apply,model,0)">导出详单</el-button>
                          <el-button v-if="[1,2,4,7,9].includes(model.status)" type="primary" @click="viewApplyFile">查看申请单</el-button>
                          <el-button v-if="[2].includes(model.status)" type="primary" @click="viewPidan">查看批单</el-button>
                          <el-button v-if=" model.solutionType == 0 && [1].includes(model.status)" type="primary" @click="$refs.OperaApplyChangeCheckWindow.open('上传批单',model,3)">上传批单</el-button>
                          <el-button  v-if="model.solutionType == 0 &&[3,4].includes(model.status)"  type="primary" @click="$refs.OperaApplyChangeCheckWindow.open('驳回退回申请',model,5)">驳回退回申请</el-button>
                          <el-button  v-if="model.solutionType == 0 &&[0,1].includes(model.status)" type="danger" @click="$refs.OperaApplyChangeCheckWindow.open('退回投保',model,1)">退回投保</el-button>
                          <el-button  v-if="model.solutionType == 0 &&[2].includes(model.status)"  type="danger" @click="$refs.OperaApplyChangeCheckWindow.open('修改批单',model,4)">修改批单</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="applyStartTime"
                          align="center"
                          label="批单生效起期">
                      </el-table-column>
                        <el-table-column
                            prop="addNum"
                            align="center"
                            label="加保人数">
                        </el-table-column>
                        <el-table-column
                            prop="delNum"
                            align="center"
                            label="减保人数">
                        </el-table-column>
                        <el-table-column
                            prop="fee"
                            align="center"
                            label="费用变更(元)">
                        </el-table-column>
                    </el-table>
                </div>
                <div class="desc_item_cate">
                    <el-tabs v-model="activeName" @tab-click="handleClick">
                        <el-tab-pane label="加保记录" name="0"></el-tab-pane>
                        <el-tab-pane label="减保记录" name="1"></el-tab-pane>
                    </el-tabs>
                </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="duName"
                            label="派遣单位">
                        </el-table-column>
                        <el-table-column
                            prop="workTypeName"
                            label="所属工种">
                        </el-table-column>
                        <el-table-column
                            prop="startTime"
                            label="保险生效起期">
                        </el-table-column>
                        <el-table-column
                            prop="endTime"
                            label="保险生效止期">
                        </el-table-column>
                        <el-table-column
                            prop="fee"
                            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">
                    <div class="desc_item_review_label">审核流程</div>
                  <el-timeline :reverse="reverse">
                    <el-timeline-item
                        v-for="(activity, index) in activities"
                        :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>
        <ApplyChangeDetails ref="ApplyChangeDetails" @success="successEvent" />
        <OperaApplyChangeCheckWindow ref="OperaApplyChangeCheckWindow" @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" @click="goSignDo()">ç¡®  å®š</el-button>
                <el-button @click="visiblePhone=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 ApplyChangeDetails from '@/components/business/ApplyChangeDetails'
import OperaApplyChangeCheckWindow from '@/components/business/OperaApplyChangeCheckWindow'
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,
} from '@/api/business/unionChange'
import { applyChangeOpt ,
  getChangeMemberListOnlineSignLink} 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,
      ApplyChangeDetails,
      OperaApplyChangeCheckWindow,
      add_subtract_return,
      OperaInsuranceApply,
      reinsurance,
      factoryChange,
      insuranceApplyDetails: () => import ('@/components/business/OperaInsuranceApplyWindow')
  },
  data () {
    return {
      // è¡¨å•数据
      modelId:null,
      num: 0,
      timer: null,
      signTitle: '手机号验证',
      model: {},
      visiblePhone: 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.timer=null
        this.getDetail()
        this.getList()
     },
    send () {
      sendSms({
        phone: this.form.phone
      }).then(res => {
        this.num = 60
        this.setTime()
      })
    },
    setTime () {
      this.timer = setInterval(() => {
        if (this.num === 0) {
          clearInterval(this.timer)
          this.timer = null
          return
        }
        this.num = this.num - 1
      }, 1000)
    },
    getSignLink (flag) {
      if (flag === 0) {
        this.signTitle = '签署方案确认书'
      } else if (flag === 1) {
        this.signTitle = '签署申请单'
      } else if (flag === 2) {
        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.isWorking = true
        if(this.form.type===0){
          getChangeMemberListOnlineSignLink(this.form).then(res => {
            setTimeout(() => {
              this.visiblePhone=false
              window.open(res)
            }, 500)
          }).catch(err => {
            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,
                   types:[ this.activeName]
               }
           }).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(){
      if(this.model.pidanFile && this.model.pidanFile.fileurlFull){
        window.open(this.model.pidanFile.fileurlFull)
      }
    },
    handleSizeChange(val){
        console.log(val)
    },
    handleCurrentChange(val){
        console.log(val)
        this.page = val
        this.getList()
    },
    onSubmit(){
    },
    getDetail(){
      getById(this.modelId).then(res => {
        this.model = res
        this.tableData = new Array()
        this.tableData.push(res)
      }).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/views/business/unionApply.vue
company/src/views/business/unionChange.vue
@@ -3,12 +3,11 @@
        <!-- æœç´¢è¡¨å• -->
        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
            <el-form-item label="保单状态" prop="status">
                <el-select v-model="searchForm.status" placeholder="请选择" @change="search">
                    <el-option label="全部" value=""></el-option>
                    <el-option label="待签署" value="1"></el-option>
                    <el-option label="待出单" value="2"></el-option>
                    <el-option label="已生效" value="3"></el-option>
                    <el-option label="已退回" value="4"></el-option>
                <el-select v-model="searchForm.status" clearable  @change="search">
                    <el-option label="待签署" value="0"></el-option>
                    <el-option label="待审核" value="1"></el-option>
                    <el-option label="已生效" value="2"></el-option>
                    <el-option label="已退回" value="3"></el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="保险方案" prop="solutionName">
@@ -47,10 +46,10 @@
                </el-table-column>
                <el-table-column prop="status" label="保单状态" min-width="100px">
                    <template slot-scope="{row}">
                        <span :class="'change-status'+row.status" v-if="row.status === 1">待签署</span>
                        <span :class="'change-status'+row.status" v-if="row.status === 2">待出单</span>
                        <span :class="'change-status'+row.status" v-if="row.status === 3">已生效</span>
                        <span :class="'change-status'+row.status" v-if="row.status === 4">已退回</span>
                        <span :class="'union-change-status'+row.status" v-if="row.status === 0">待签署</span>
                        <span :class="'union-change-status'+row.status" v-if="row.status === 1">待审核</span>
                        <span :class="'union-change-status'+row.status" v-if="row.status === 2">已生效</span>
                        <span :class="'union-change-status'+row.status" v-if="row.status === 3">已退回</span>
                    </template>
                </el-table-column>
                <el-table-column prop="applyCode" label="关联保单号" min-width="100px"></el-table-column>
@@ -64,7 +63,7 @@
                    fixed="right"
                >
                    <template slot-scope="{row}">
                        <el-button type="text" @click="$refs.OperaApplyChangeDetailWindow.open('加减保详情', row)">查看详情</el-button>
                        <el-button type="text" @click="$refs.OperaUnionChangeDetailWindow.open('加减保详情', row)">查看详情</el-button>
                    </template>
                </el-table-column>
            </el-table>
@@ -77,6 +76,7 @@
        </template>
        <!--    æäº¤ç”³è¯·    -->
        <OpearaUnionChange ref="OpearaUnionChange" />
        <OperaUnionChangeDetailWindow ref="OperaUnionChangeDetailWindow" @success="handlerSuccess"/>
    </TableLayout>
</template>
@@ -85,10 +85,11 @@
    import TableLayout from '@/layouts/TableLayout'
    import Pagination from '@/components/common/Pagination'
    import OpearaUnionChange from '@/components/business/OpearaUnionChange'
    import OperaUnionChangeDetailWindow from '@/components/business/OperaUnionChangeDetailWindow'
    export default {
        name: 'unionChange',
        extends: BaseTable,
        components: { TableLayout, Pagination, OpearaUnionChange },
        components: { TableLayout, Pagination, OpearaUnionChange ,OperaUnionChangeDetailWindow},
        data () {
            return {
                // æœç´¢
@@ -112,6 +113,9 @@
            this.search()
        },
        methods: {
           handlerSuccess(){
             this.reset();
           },
            changeTime(e) {
                if (e.length > 0) {
                    this.searchForm.queryStartTime = e[0]
company/src/views/business/unionChangeUnit.vue
@@ -3,10 +3,9 @@
        <!-- æœç´¢è¡¨å• -->
        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
            <el-form-item label="保单状态" prop="status">
                <el-select v-model="searchForm.status" placeholder="请选择" @change="search">
                    <el-option label="全部" value=""></el-option>
        <el-select v-model="searchForm.status" clearable  @change="search">
                    <el-option label="待签署" value="1"></el-option>
                    <el-option label="待出单" value="2"></el-option>
          <el-option label="待审核" value="2"></el-option>
                    <el-option label="已生效" value="3"></el-option>
                    <el-option label="已退回" value="4"></el-option>
                </el-select>
@@ -32,8 +31,8 @@
        </el-form>
        <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
        <template v-slot:table-wrap>
            <ul class="toolbar" v-permissions="['business:insurance:create']">
                <li><el-button type="primary" @click="$refs.add_subtract_entrust.open('加减保申请')" v-permissions="['business:insurance:create']">提交申请</el-button></li>
      <ul class="toolbar" v-permissions="['business:unionchange:create']">
        <li><el-button type="primary" @click="$refs.OpearaUnionChangeUnit.open('更换派遣单位申请')" v-permissions="['business:unionchange:create']">提交申请</el-button></li>
            </ul>
            <el-table
                v-loading="isWorking.search"
@@ -47,16 +46,15 @@
                </el-table-column>
                <el-table-column prop="status" label="保单状态" min-width="100px">
                    <template slot-scope="{row}">
                        <span :class="'change-status'+row.status" v-if="row.status === 1">待签署</span>
                        <span :class="'change-status'+row.status" v-if="row.status === 2">待出单</span>
                        <span :class="'change-status'+row.status" v-if="row.status === 3">已生效</span>
                        <span :class="'change-status'+row.status" v-if="row.status === 4">已退回</span>
            <span :class="'union-change-status'+row.status" v-if="row.status === 0">待签署</span>
            <span :class="'union-change-status'+row.status" v-if="row.status === 1">待审核</span>
            <span :class="'union-change-status'+row.status" v-if="row.status === 2">已生效</span>
            <span :class="'union-change-status'+row.status" v-if="row.status === 3">已退回</span>
                    </template>
                </el-table-column>
              <el-table-column prop="applyCode" label="关联保单号" min-width="100px"></el-table-column>
              <el-table-column prop="solutionsName" label="保险方案" min-width="100px"></el-table-column>
              <el-table-column prop="changeNum" label="更换派遣单位人数" min-width="100px"></el-table-column>
              <el-table-column prop="fee" label="费用变更更换派遣单位" min-width="100px"></el-table-column>
        <el-table-column prop="changeNum" label="更换派遣单位人数(人)" min-width="100px"></el-table-column>
              <el-table-column prop="createDate" label="提交时间" min-width="100px"></el-table-column>
                <el-table-column
                    label="操作"
@@ -64,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.OperaApplyChangeDetailWindow.open('更换派遣单位详情', row)">查看详情</el-button>
                    </template>
                </el-table-column>
            </el-table>
@@ -76,7 +74,7 @@
            </pagination>
        </template>
        <!--    æäº¤ç”³è¯·    -->
        <add_subtract_entrust ref="add_subtract_entrust" />
    <OpearaUnionChangeUnit ref="OpearaUnionChangeUnit" />
    </TableLayout>
</template>
@@ -84,17 +82,17 @@
    import BaseTable from '@/components/base/BaseTable'
    import TableLayout from '@/layouts/TableLayout'
    import Pagination from '@/components/common/Pagination'
    import add_subtract_entrust from '@/components/business/add_subtract_entrust'
import OpearaUnionChangeUnit from '@/components/business/OpearaUnionChangeUnit'
    export default {
        name: 'unionChangeUnit',
        extends: BaseTable,
        components: { TableLayout, Pagination, add_subtract_entrust },
  components: { TableLayout, Pagination, OpearaUnionChangeUnit },
        data () {
            return {
                // æœç´¢
                searchForm: {
                    status: '',
                    type: '0',
        type: '1',
                    solutionName: '',
                    queryStartTime: '',
                    queryEndTime: '',
server/service/src/main/java/com/doumee/dao/business/dto/ApplyDetailPageDTO.java
@@ -52,6 +52,8 @@
    private Integer applyChangeId;
    @ApiModelProperty(value = "合并单主键")
    private Integer unionApplyId;
    @ApiModelProperty(value = "合并单主键")
    private Integer unionChangeId;
    @ApiModelProperty(value = "类型:0=加保;1=减保;2=换厂 ")
    private List<Integer> types;
server/service/src/main/java/com/doumee/service/business/impl/ApplyChagneDetailServiceImpl.java
@@ -217,6 +217,7 @@
        queryWrapper.eq(!Objects.isNull(applyDetailPageDTO.getDuId()),ApplyChagneDetail::getDuId,applyDetailPageDTO.getDuId());
        queryWrapper.eq(!Objects.isNull(applyDetailPageDTO.getWorkTypeId()),ApplyChagneDetail::getWorktypeId,applyDetailPageDTO.getWorkTypeId());
        queryWrapper.eq(!Objects.isNull(applyDetailPageDTO.getApplyChangeId()),ApplyChagneDetail::getApplyChangeId,applyDetailPageDTO.getApplyChangeId());
        queryWrapper.eq(!Objects.isNull(applyDetailPageDTO.getUnionChangeId()),ApplyChagneDetail::getUnionChangeId,applyDetailPageDTO.getUnionChangeId());
        queryWrapper.like(StringUtils.isNotBlank(applyDetailPageDTO.getMemberName()),Member::getName,applyDetailPageDTO.getMemberName());
        queryWrapper.ge(StringUtils.isNotBlank(applyDetailPageDTO.getStartTimeS()),ApplyChagneDetail::getStartTime,applyDetailPageDTO.getStartTimeS()+" 00:00:00");
        queryWrapper.le(StringUtils.isNotBlank(applyDetailPageDTO.getStartTimeE()),ApplyChagneDetail::getStartTime,applyDetailPageDTO.getStartTimeE()+" 23:59:59");
server/service/src/main/java/com/doumee/service/business/impl/UnionChangeServiceImpl.java
@@ -200,6 +200,7 @@
        IPage<UnionChange> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<UnionChange> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(UnionChange.class);
        pageWrap.getModel().setIsdeleted(Constants.ZERO);
        queryWrapper.selectAs(UnionApply::getCode,UnionChange::getApplyCode);
        queryWrapper.selectAs(Solutions::getName,UnionChange::getSolutionsName)
        .select("( select count(1) from apply_chagne_detail ad where t.id = ad.UNION_CHANGE_ID and ad.TYPE = 0  )",UnionChange::getAddNum)
@@ -209,7 +210,7 @@
        queryWrapper.leftJoin(Solutions.class,Solutions::getId,UnionApply::getSolutionId);
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if(Constants.equalsInteger(user.getType(),Constants.TWO)){
            queryWrapper.eq(UnionChange::getShopId, pageWrap.getModel().getShopId());
            queryWrapper.eq(UnionChange::getShopId, user.getCompanyId());
        }
        Utils.MP.blankToNull(pageWrap.getModel());
        if (pageWrap.getModel().getId() != null) {
@@ -327,6 +328,7 @@
        unionChange.setCreateDate(new Date());
        unionChange.setCreator(user.getId());
        unionChange.setShopId(user.getCompanyId());
        unionChange.setIsdeleted(Constants.ZERO);
        unionChange.setUnionApplyId(saveUnionChangeDTO.getUnionApplyId());
        unionChange.setApplyStartTime(saveUnionChangeDTO.getApplyDate());
        unionChange.setType(saveUnionChangeDTO.getBusinessType());
@@ -343,7 +345,7 @@
        applyChagneDetailJoinMapper.update(null,new UpdateWrapper<ApplyChagneDetail>().lambda()
                .set(ApplyChagneDetail::getUnionChangeId,unionChange.getId())
                .in(ApplyChagneDetail::getApplyId,saveUnionChangeDTO.getApplyIds()));
                .in(ApplyChagneDetail::getApplyChangeId,saveUnionChangeDTO.getApplyIds()));
        Constants.ApplyLogType applyLogType = Constants.ApplyLogType.CA_HBD_UPLOAD;