jiangping
2025-06-17 78a173f85f8a4666d83cf8d900f04dd9f8e3e127
company/src/components/business/detailsEntrustedInsurance.vue
@@ -11,22 +11,40 @@
        <div class="desc_item_label">
          <div class="desc_item_label_left">
            <span>投保人:{{ model.companyName }}</span>
            <span>保单状态:<span  :class="'apply-status'+model.status" >{{ model.statusInfo }}</span></span>
            <span>保单状态:
              <span v-if="model.status === 5 && model.statusInfo === '待审核'" style="color: #216EEE;">{{ model.statusInfo }}</span>
              <span v-else-if="model.status === 3 && model.statusInfo === '已过期'" style="color: #999;">{{ model.statusInfo }}</span>
              <span v-else-if="model.status === 3 && model.statusInfo === '待生效'" style="color: #f95601;">{{ model.statusInfo }}</span>
              <span v-else-if="model.status === 4 && model.statusInfo === '已退回'" style="color: red;">{{ model.statusInfo }}</span>
              <span :class="'union-apply-status'+model.status" v-else>{{ model.statusInfo }}</span>
            </span>
            <span>提交时间:{{ model.createDate }}</span>
          </div>
          <div class="desc_item_label_right">
            <template v-if="userInfo.type === 2">
              <el-button type="primary" v-if="[0].includes(model.status) " @click="$refs.InsuranceDetails.open('导出详单',model,0)">导出详单</el-button>
              <el-button type="primary" @click="$refs.InsuranceDetails.open('导出详单',model,0)">导出详单</el-button>
              <el-button v-if="[0].includes(model.status) " type="primary" @click="$refs.OperaUnionApplyCheckWindow.open('上传投保单',model,2)">上传投保单</el-button>
              <el-button v-if="model.status == 1" type="primary" @click="getSignLink(0)">签署投保单</el-button>
              <el-button v-if="[2,3,4].includes(model.status)" type="primary" @click="viewToubaodan">查看投保单</el-button>
              <el-button v-if="[2].includes(model.status) " type="primary" @click="$refs.OperaUnionApplyCheckWindow.open('上传保险单',model,3)">上传保险单</el-button>
              <el-button v-if="model.status == 1" type="primary" :disabled="loading" :loading="loading" @click="getSignLink(0)">{{model.signType === 1 ? '签署申请单' : '签署投保单'}}</el-button>
              <el-button v-if="[2,3,4].includes(model.status)" type="primary" @click="viewToubaodan">{{model.signType === 1 ? '查看申请单' : '查看投保单'}}</el-button>
<!--              <el-button v-if="[2].includes(model.status) " type="primary" @click="$refs.OperaUnionApplyCheckWindow.open('上传保险单',model,3)">上传保险单</el-button>-->
              <el-button v-if="model.status == 3" type="primary" @click="viewBaoxiandan">查看保险单</el-button>
              <el-button v-if="[0,1,2].includes(model.status) " type="danger" @click="$refs.OperaUnionApplyCheckWindow.open('退回投保',model,1)">退回申请</el-button>
              <el-button v-if="[2,3,4,1,5].includes(model.status) && (model.toubaodanFile || model.toubaodanSignedFile)" type="primary" @click="viewToubaodan">{{model.signType === 1 ? '查看申请单' : '查看投保单'}}</el-button>
              <el-button v-if="[0,1,2,5].includes(model.status) " type="danger" @click="$refs.OperaUnionApplyCheckWindow.open('退回申请',model,1)">退回申请</el-button>
              <el-button v-if="[5].includes(model.status)" type="primary" @click="fusheng">投保复审</el-button>
<!--              <el-button v-if="[0,1,2].includes(model.status) " type="danger" @click="$refs.OperaUnionApplyCheckWindow.open('退回申请',model,1)">退回申请</el-button>-->
            </template>
            <template v-if="userInfo.type ===0">
              <el-button v-if="[2,3,4].includes(model.status)" type="primary" @click="viewToubaodan">查看投保单</el-button>
              <el-button v-if="[2,3,4,1,5].includes(model.status) && (model.toubaodanFile || model.toubaodanSignedFile)" type="primary" @click="viewToubaodan">{{model.signType === 1 ? '查看申请单' : '查看投保单'}}</el-button>
              <el-button v-if="[0].includes(model.status) " type="primary" @click="$refs.OperaUnionApplyCheckWindow.open('上传投保单',model,2)">上传投保单</el-button>
              <el-button v-if="[0, 1].includes(model.status)" type="primary" :disabled="loading" :loading="loading" @click="getSignLink(0)">{{model.signType === 1 ? '签署申请单' : '签署投保单'}}</el-button>
              <el-button v-if="[0,1,2,5].includes(model.status) " type="danger" @click="$refs.OperaUnionApplyCheckWindow.open('退回申请',model,1)">退回申请</el-button>
              <el-button v-if="[2].includes(model.status)" type="primary" @click="$refs.OperaUnionApplyCheckWindow.open('上传保险单',model,3)">上传保险单</el-button>
              <el-button type="primary"   @click="$refs.InsuranceDetails.open('导出详单',model,0)">导出详单</el-button>
<!--              <el-button v-if="[2,3,4].includes(model.status)" type="primary" @click="viewToubaodan">查看投保单</el-button>-->
              <el-button v-if="[4].includes(model.status)" type="primary" @click="viewBaoxiandan">查看保险单</el-button>
              <el-button v-if="[5].includes(model.status)" type="primary" @click="fusheng">投保复审</el-button>
            </template>
          </div>
        </div>
@@ -49,40 +67,57 @@
            <el-table-column
                prop="startTime"
                align="center"
                label="保险生效起期">
                :label="getUnionApplyTimeTitle(1,model)">
            </el-table-column>
            <el-table-column
                prop="endTime"
                align="center"
                label="保险生效止期">
                :label="getUnionApplyTimeTitle(0,model)">
            </el-table-column>
            <el-table-column
                prop="insureNum"
                align="center"
                label="投保人数">
              <template slot-scope="{row}">
                <span>{{row.insureNum||0}} 人</span>
              </template>
            </el-table-column>
            <el-table-column prop="guaranteeNum"  align="center" label="在保人数" >
              <template slot-scope="{row}">
                <span>{{row.guaranteeNum||0}} 人</span>
              </template>
            </el-table-column>
            <el-table-column
                prop="serviceDays"
                align="center"
                label="在保时长(天)">
                label="保单时长">
              <template slot-scope="{row}">
                <span>{{row.serviceDays||0}} 天</span>
              </template>
            </el-table-column>
            <el-table-column
                prop="currentFee"
                align="center"
                label="已产生费用(元)">
                label="已产生费用">
              <template slot-scope="{row}">
                <span>{{row.currentFee!=null?row.currentFee+' 元': '-'}}</span>
              </template>
            </el-table-column>
            <el-table-column
                prop="fee"
                align="center"
                label="总费用(元)">
                label="总费用">
              <template slot-scope="{row}">
                <span>{{row.fee!=null?row.fee+' 元': '-'}}</span>
              </template>
            </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="0" ></el-tab-pane>
            <el-tab-pane label="加/减保记录"  name="1"></el-tab-pane>
            <el-tab-pane label="更换派遣单位记录" name="2"></el-tab-pane>
            <el-tab-pane label="更换工种记录" name="2"></el-tab-pane>
          </el-tabs>
        </div>
        <div class="desc_item_search">
@@ -93,6 +128,7 @@
                  <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="memberName">
@@ -128,7 +164,6 @@
            <el-form-item>
              <el-button type="primary" style="width: 80px;" @click="search">查询</el-button>
              <el-button @click="resetting" style="width: 80px;">重置</el-button>
              <el-button type="primary" style="width: 80px;" @click="exportExcel" v-if="activeName === '0'">导出名单</el-button>
            </el-form-item>
          </el-form>
        </div>
@@ -157,7 +192,17 @@
                label="性别">
              <template slot-scope="{row}">
                <span v-if="row.sex === 0">男</span>
                <span v-else>女</span>
                <span  v-if="row.sex === 1">女</span>
              </template>
            </el-table-column>
            <el-table-column
              align="center"
              :key="Math.random()"
              label="在保状态">
              <template slot-scope="{row}">
                <span v-if="row.applyStatus === 0" style="color: #00BA92;">保障中</span>
                <span v-if="row.applyStatus === 1" style="color: #999;">不在保</span>
                <span v-if="row.applyStatus === 2" style="color: #f95601;">待生效</span>
              </template>
            </el-table-column>
            <el-table-column
@@ -167,6 +212,13 @@
                label="身份证号">
            </el-table-column>
            <el-table-column
                :key="Math.random()"
                prop="companyName"
                align="center"
                label="被保险人">
            </el-table-column>
            <el-table-column
                v-if="model.hasDispatchUnit !== 1"
                :key="Math.random()"
                prop="duName"
                align="center"
@@ -182,13 +234,13 @@
                :key="Math.random()"
                prop="startTime"
                align="center"
                label="保险生效起期">
                :label="getUnionApplyTimeTitle(1,model)">
            </el-table-column>
            <el-table-column
                :key="Math.random()"
                prop="endTime"
                align="center"
                label="保险生效止期">
                :label="getUnionApplyTimeTitle(0,model)">
            </el-table-column>
            <el-table-column
                :key="Math.random()"
@@ -214,9 +266,13 @@
                             align="center">
              <template slot-scope="{row}">
                <span :class="'change-status'+row.status" v-if="row.status === 0">待签署</span>
                <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 === 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 || row.status === 4">申请退回</span>
                <span :class="'change-status'+row.status" v-if="row.status === 5 || row.status === 8">已退回</span>
                <span :class="'change-status'+row.status" v-if="row.status === 6">已关闭</span>
                <span :class="'change-status'+row.status" v-if="row.status === 7">待出单</span>
                <span :class="'change-status'+row.status" v-if="row.status === 9">批改申请中</span>
              </template>
            </el-table-column>
            <el-table-column
@@ -276,9 +332,13 @@
                align="center" label="保单状态" :key="Math.random()">
              <template slot-scope="{row}">
                <span :class="'change-status'+row.status" v-if="row.status === 0">待签署</span>
                <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 === 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 || row.status === 4">申请退回</span>
                <span :class="'change-status'+row.status" v-if="row.status === 5 || row.status === 8">已退回</span>
                <span :class="'change-status'+row.status" v-if="row.status === 6">已关闭</span>
                <span :class="'change-status'+row.status" v-if="row.status === 7">待出单</span>
                <span :class="'change-status'+row.status" v-if="row.status === 9">批改申请中</span>
              </template>
            </el-table-column>
            <el-table-column
@@ -291,7 +351,7 @@
                :key="Math.random()"
                prop="changeNum"
                align="center"
                label="更换派遣单位人数">
                label="更换工种人数">
            </el-table-column>
            <el-table-column
                :key="Math.random()"
@@ -325,7 +385,7 @@
          </div>
        </div>
        <div class="desc_item_review">
          <div class="desc_item_review_label">审核流程</div>
          <div class="desc_item_review_label">操作记录</div>
          <el-timeline :reverse="reverse">
            <el-timeline-item
                v-for="(activity, index) in activities"
@@ -352,6 +412,7 @@
    <OperaApplyChangeDetailWindow ref="OperaApplyChangeDetailWindow" @success="successEvent"/>
    <!-- 更换派遣单位详情 -->
    <OperaApplyChangeUnitDetailWindow ref="OperaApplyChangeUnitDetailWindow" @success="successEvent"/>
    <OperaPdfViewerWindow ref="OperaPdfViewerWindow" />
    <!-- 加减保详情 -->
    <template v-slot:footer>
      <el-button @click="visible=false">返回</el-button>
@@ -380,27 +441,31 @@
        </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-button type="primary" @click="goSignDo()">确  定</el-button>
        <el-button @click="visiblePhone=false">取 消</el-button>
      </span>
    </el-dialog>
    <el-dialog
        :title="fileTitle"
        :visible.sync="visibleFile"
        width="500px"
        :modal="true"
        :show-close="true"
        :close-on-click-modal="false"
        append-to-body
        center>
      :title="fileTitle"
      :visible.sync="visibleFile"
      width="800px"
      :modal="true"
      :show-close="true"
      :close-on-click-modal="false"
      append-to-body
      center>
      <div class="desc_item_from" v-for="(item, index) in fileData" :key="index"  style="margin-bottom: 15px">
        <span v-if="index ==0">{{item.name}}:</span>
        <span v-if="index >0">被保险人({{item.name}}){{fileFlag=== 0?"投保单":"保险单"}}:</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>
        <span v-if="index >0">被保险人({{item.name}})服务费:{{item.serverCost || 0}}元/人 {{fileFlag=== 0?"投保单":"保险单"}}:</span>
        <a  style="cursor: pointer;color: #2E68EC" v-if="item.file && item.file.fileurl && index ==0" @click="openFile(item.file.fileurlFull,item.name)">在线预览</a>
        <a   style="cursor: pointer;color: #2E68EC" v-if="item.file && item.file.fileurl && index !=0 &&fileFlag=== 0" @click="openFile(item.file.fileurlFull,'被保险人('+item.name+')投保单')">在线预览</a>
        <a   style="cursor: pointer;color: #2E68EC" v-if="item.file && item.file.fileurl && index !=0 &&fileFlag!= 0" @click="openFile(item.file.fileurlFull,'被保险人('+item.name+')保险单')">在线预览</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-button @click="visibleFile=false">关 闭</el-button>
      </span>
    </el-dialog>
  </GlobalWindow>
</template>
@@ -414,7 +479,7 @@
import OperaApplyChangeUnitDetailWindow from '@/components/business/OperaApplyChangeUnitDetailWindow'
import OperaUnionApplyCheckWindow from '@/components/business/OperaUnionApplyCheckWindow'
import { getById, getSignLink } from '@/api/business/unionApply'
import { getById, getSignLink, reexamineCheck } from '@/api/business/unionApply'
import {
  applyDetailPage,
@@ -429,11 +494,13 @@
import { mapState } from 'vuex'
import { sendSms } from '@/api/business/smsEmail'
import OperaPdfViewerWindow from '@/components/business/OperaPdfViewerWindow'
export default {
  name: 'OperaWtbApplyShopWindow',
  name: 'OperaWtbApplyShopWindow1',
  extends: BaseOpera,
  components: {
    GlobalWindow,
    OperaPdfViewerWindow,
    OperaApplyChangeUnitDetailWindow,
    OperaApplyChangeDetailWindow,
    InsuranceDetailsWtb,
@@ -445,13 +512,13 @@
      dataId: null,
      signTitle: '手机号验证',
      fileTitle: '查看投保单',
      fileFlag:0,
      fileFlag: 0,
      visibleFile: false,
      fileData: [],
      model: {},
      form: {
        businessId: null,
        phone: this.$store.state.userInfo.company.phone,
        phone: this.$store.state.userInfo.company ? this.$store.state.userInfo.company.phone:null,
        code: '',
        type: 0
      },
@@ -482,7 +549,9 @@
      gzList: [],
      activeName: '0',
      total: 0,
      currentPage: 1
      currentPage: 1,
      loading: false
    }
  },
  created () {
@@ -502,7 +571,6 @@
      this.fileData = []
      this.taobaodanFileData = []
      this.baoxiandanFileData = []
      this.dataId = null
      this.dataId = target.id
      this.form.businessId = target.id
      this.formInline.applyStatus = ''
@@ -522,15 +590,41 @@
      this.getDW()
      this.getGZ()
    },
    fusheng() {
      this.$confirm('是否确定复审通过?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        reexamineCheck({ id: this.dataId })
          .then(res => {
            this.getDetail()
          })
      }).catch(() => {
      });
    },
    getSignLink (flag) {
      if (flag === 0) {
        this.signTitle = '签署投保单'
      }
      this.form.type = flag
      this.visiblePhone = true
      this.$nextTick(() => {
        this.$refs.form.resetFields()
      this.loading = true
      getSignLink(this.form).then(res => {
        this.loading = false
        // setTimeout(() => {
        //   this.visiblePhone = false
          window.open(res)
        // }, 500)
      }).catch(err => {
        this.loading = false
        this.$tip.apiFailed(err)
      })
      // this.goSign()
      // this.visiblePhone = true
      // this.$nextTick(() => {
      //   this.$refs.form.resetFields()
      // })
    },
    goSignDo () {
      this.$refs.form.validate((valid) => {
@@ -568,7 +662,7 @@
        this.num = this.num - 1
      }, 1000)
    },
    // 关闭订单
    // 关闭申请
    closeOrder () {
      this.$confirm('确认关闭此订单吗?', '提示', {
        confirmButtonText: '确定',
@@ -652,7 +746,7 @@
    exportExcel () {
      if (this.activeName === '0') {
        exportExcel({
          capacity: 10,
          capacity: 60000,
          page: this.currentPage,
          model: {
            solutionName: this.tableData[0].solutionsName,
@@ -671,7 +765,7 @@
        })
      } else {
        applyChagneDetailExcel({
          capacity: 10,
          capacity: 60000,
          page: this.currentPage,
          model: {
            applyId: this.dataId,
@@ -696,15 +790,10 @@
          capacity: 10,
          page: this.currentPage,
          model: {
            applyId: this.dataId,
            unionApplyId: this.dataId,
            applyStatus: this.formInline.applyStatus,
            duId: this.formInline.duId,
            workTypeId: this.formInline.workTypeId,
            memberName: this.formInline.memberName,
            endTimeE: this.formInline.endTimeE,
            endTimeS: this.formInline.endTimeS,
            startTimeE: this.formInline.startTimeE,
            startTimeS: this.formInline.startTimeS
            companyName: this.formInline.applyCompanyName,
            memberName: this.formInline.memberName
          }
        }).then(res => {
          this.list = res.records
@@ -721,7 +810,7 @@
          capacity: 10,
          page: this.currentPage,
          model: {
            applyId: this.dataId,
            unionApplyId: this.dataId,
            status: this.formInline.applyStatus,
            endTimeE: this.formInline.endTimeS,
            endTimeS: this.formInline.startTimeS,
@@ -761,27 +850,23 @@
        this.$tip.apiFailed(err)
      })
    },
    openFile (url) {
    openFile (url,title) {
      setTimeout(() => {
        window.open(url)
        this.$refs.OperaPdfViewerWindow.open(title ||'在线预览',url)
        // window.open(url)
      }, 500)
    },
    viewToubaodan () {
      this.fileData = this.taobaodanFileData;
      this.visibleFile=true
      this.fileFlag = 0
     /* if (this.model.toubaodanSignedFile && this.model.toubaodanSignedFile.fileurlFull) {
        setTimeout(() => {
          window.open(this.model.toubaodanSignedFile.fileurlFull)
        }, 500)
      } else if (this.model.toubaodanFile && this.model.toubaodanFile.fileurlFull) {
        setTimeout(() => {
          window.open(this.model.toubaodanFile.fileurlFull)
        }, 500)
      }*/
      if (this.model.toubaodanSignedFile) {
        this.$refs.OperaPdfViewerWindow.open(this.model.toubaodanSignedFile.name, this.model.toubaodanSignedFile.fileurlFull)
      } else if (this.model.toubaodanFile) {
        this.$refs.OperaPdfViewerWindow.open(this.model.toubaodanFile.name, this.model.toubaodanFile.fileurlFull)
      }
    },
    viewBaoxiandan () {
      this.fileFlag = 1
      this.fileTitle='查看保险单'
      console.log(this.baoxiandanFileData)
      this.fileData = this.baoxiandanFileData;
      this.visibleFile=true
     /* if (this.model.baoxiandanFile && this.model.baoxiandanFile.fileurlFull) {
@@ -814,7 +899,6 @@
        this.model = res
        this.tableData = new Array()
        this.tableData.push(res)
        console.log(this.tableData)
        this.activities = res.applyLogList
        if (this.model.toubaodanSignedFile && this.model.toubaodanSignedFile.fileurlFull) {
          this.taobaodanFileData.push({ name: '商户投保单', file: this.model.toubaodanSignedFile })
@@ -841,9 +925,9 @@
              this.taobaodanFileData.push({ name: item.companyName, file: null })
            }
            if (item.baoxiandanFile) {
              this.baoxiandanFileData.push({ name: item.companyName, file: item.baoxiandanFile })
              this.baoxiandanFileData.push({ name: item.companyName, serverCost: item.serverCost, file: item.baoxiandanFile })
            } else {
              this.baoxiandanFileData.push({ name: item.companyName, file: null })
              this.baoxiandanFileData.push({ name: item.companyName, serverCost: item.serverCost, file: null })
            }
          })
        }