jiangping
2025-06-04 a01d637e9ff2bf26aa44c65a239413a38bd8b1fe
company/src/views/index.vue
@@ -1,4 +1,4 @@
<template>
  <template>
  <div class="home">
    <div class="home_inlet">
      <div class="home_inlet_label">快捷入口</div>
@@ -22,16 +22,16 @@
        <div class="home_content_left_item" ref="picture3"></div>
      </div>
      <div class="home_content_right">
        <div class="home_content_right_label" v-if="tabs && tabs.length>0" >代办事项</div>
        <div class="home_content_right_label" v-if="tabs && tabs.length>0" >待办事项</div>
        <el-tabs v-model="activeName" @tab-click="handleClick" >
          <el-tab-pane v-for="a in tabs" :key="a.path" :name="a.name" >
             <span slot="label" title="点击刷新"> {{a.label }}
                        <el-badge v-if="(a.name==0?totalPage0:(a.name==1?totalPage1:totalPage2))  >0" :value="(a.name==0?totalPage0:(a.name==1?totalPage1:totalPage2)) " class="item"></el-badge>
                        <el-badge v-if="getTotalNoticeCount(a)  >0" :value="getTotalNoticeCount(a) " class="item"></el-badge>
                    </span>
          </el-tab-pane>
        </el-tabs>
        <div v-if="activeName === '0'"  v-permissions="['business:notice:insurance']" >
          <div class="home_content_right_list">
          <div class="home_content_right_list" v-if="tableData0 && tableData0.length">
            <div class="list_item" v-for="(item, index) in tableData0" :key="index">
              <div class="list_item_left">
                <span>{{item.title}}({{ item.typeDetail }})</span>
@@ -46,6 +46,11 @@
              </div>
            </div>
          </div>
          <div class="home_content_right_list" v-else>
            <div class="list_item" style="width: 100%;font-size: 12px;display:block;color: #8c939d;text-align: center; padding: 20px">
              暂无消息
            </div>
          </div>
          <div class="home_content_right_page">
            <el-pagination
                @current-change="handleCurrentChange0"
@@ -57,7 +62,7 @@
          </div>
        </div>
        <div v-if="activeName === '1'"  v-permissions="['business:notice:tax']">
          <div class="home_content_right_list">
          <div class="home_content_right_list" v-if="tableData1 && tableData1.length">
            <div class="list_item" v-for="(item, index) in tableData1" :key="index">
              <div class="list_item_left">
                <span>{{item.title}}({{ item.typeDetail }})</span>
@@ -72,6 +77,11 @@
              </div>
            </div>
          </div>
          <div class="home_content_right_list" v-else>
            <div class="list_item" style="width: 100%;font-size: 12px;display:block;color: #8c939d;text-align: center; padding: 20px">
              暂无消息
            </div>
          </div>
          <div class="home_content_right_page">
            <el-pagination
                @current-change="handleCurrentChange1"
@@ -83,11 +93,14 @@
          </div>
        </div>
        <div v-if="activeName === '2'"  v-permissions="['business:notice:settle']">
          <div class="home_content_right_list">
          <div class="home_content_right_list" v-if="tableData2 && tableData2.length">
            <div class="list_item" v-for="(item, index) in tableData2" :key="index">
              <div class="list_item_left">
                <span>{{item.title}}({{ item.typeDetail }})</span>
                <span>{{item.info}}({{item.content}})</span>
<!--
                <span style="font-size: 12px;color: #8c939d;margin-top: 10px">{{item.createDate}}</span>
-->
              </div>
              <div class="list_item_center">
                <span>{{item.companyName}}</span>
@@ -96,6 +109,11 @@
              <div class="list_item_right">
                <span  @click="detail(item)">查看</span>
              </div>
            </div>
          </div>
          <div class="home_content_right_list" v-else>
            <div class="list_item" style="width: 100%;font-size: 12px;display:block;color: #8c939d;text-align: center; padding: 20px">
              暂无消息
            </div>
          </div>
          <div class="home_content_right_page">
@@ -108,9 +126,105 @@
            </el-pagination>
          </div>
        </div>
        <div v-if="activeName === '6'">
          <div class="home_content_right_list" v-if="tableData6 && tableData6.length">
            <div class="list_item" v-for="(item, index) in tableData6" :key="index">
              <div class="list_item_left">
                <span>{{item.title}}({{ item.typeDetail }})</span>
                <span>{{item.content}}</span>
              </div>
              <div class="list_item_center">
                <span>{{item.companyName}}</span>
                <span>提交时间  {{item.createDate}}</span>
              </div>
              <div class="list_item_right">
                <span @click="jump('/business/contract')">查看</span>
              </div>
            </div>
          </div>
          <div class="home_content_right_list" v-else>
            <div class="list_item" style="width: 100%;font-size: 12px;display:block;color: #8c939d;text-align: center; padding: 20px">
              暂无消息
            </div>
          </div>
          <div class="home_content_right_page">
            <el-pagination
              @current-change="handleCurrentChange6"
              :current-page="page6"
              :page-size="5"
              layout="total, prev, pager, next, jumper"
              :total="totalPage6">
            </el-pagination>
          </div>
        </div>
        <div v-if="activeName === '7'">
          <div class="home_content_right_list" v-if="tableData7 && tableData7.length">
            <div class="list_item" v-for="(item, index) in tableData7" :key="index">
              <div class="list_item_left">
                <span>{{item.title}}({{ item.typeDetail }})</span>
                <span>{{item.content}}</span>
              </div>
              <div class="list_item_center">
                <span>{{item.companyName}}</span>
                <span>提交时间  {{item.createDate}}</span>
              </div>
              <div class="list_item_right">
                <span @click="jump('/business/solutions')">查看</span>
              </div>
            </div>
          </div>
          <div class="home_content_right_list" v-else>
            <div class="list_item" style="width: 100%;font-size: 12px;display:block;color: #8c939d;text-align: center; padding: 20px">
              暂无消息
            </div>
          </div>
          <div class="home_content_right_page">
            <el-pagination
              @current-change="handleCurrentChange7"
              :current-page="page7"
              :page-size="5"
              layout="total, prev, pager, next, jumper"
              :total="totalPage7">
            </el-pagination>
          </div>
        </div>
        <div v-if="activeName === '8'">
          <div class="home_content_right_list" v-if="tableData8 && tableData8.length">
            <div class="list_item" v-for="(item, index) in tableData8" :key="index">
              <div class="list_item_left">
                <span>{{item.title}}(待审核)</span>
                <span>{{item.info}}({{item.content}})</span>
              </div>
              <div class="list_item_center">
                <span>{{item.companyName}}</span>
                <span>提交时间  {{item.createDate}}</span>
              </div>
              <div class="list_item_right">
                <span @click="jump('/business/companyUserApply')">查看</span>
              </div>
            </div>
          </div>
          <div class="home_content_right_list" v-else>
            <div class="list_item" style="width: 100%;font-size: 12px;display:block;color: #8c939d;text-align: center; padding: 20px">
              暂无消息
            </div>
          </div>
          <div class="home_content_right_page">
            <el-pagination
              @current-change="handleCurrentChange8"
              :current-page="page8"
              :page-size="5"
              layout="total, prev, pager, next, jumper"
              :total="totalPage8">
            </el-pagination>
          </div>
        </div>
      </div>
    </div>
    <OperaInsuranceApplyWindow ref="operaInsuranceApplyWindow" @success="handleCurrentChange0()"/>
    <OperaWtbApplyShopWindow ref="OperaWatbApplyShopWindow" @success="handleCurrentChange0()"/>
    <dispatchUnitDetailsPlat ref="dispatchUnitDetailsPlat" @success="handleCurrentChange0()"/>
    <OperaSettleClaimsWindow ref="operaSettleClaimsWindow" @success="handleCurrentChange2()"/>
    <OperaApplyChangeUnitDetailWindow ref="operaApplyChangeUnitDetailWindow" @success="handleCurrentChange0()"/>
@@ -128,9 +242,12 @@
import OperaSettleClaimsWindow from '@/components/business/OperaSettleClaimsWindow'
import OperaApplyChangeDetailWindow from '@/components/business/OperaApplyChangeDetailWindow'
import OperaTaxesWindow from '@/components/business/OperaTaxesWindow'
import { fetchList as noticeList } from '@/api/business/notices'
import { fetchList as noticeList, deleById } from '@/api/business/notices'
import { getChangeDetail, getDetail } from '@/api/business/insuranceApply'
import OperaWtbApplyShopWindow from '@/components/business/OperaWtbApplyShopWindow'
export default {
  components: {
    OperaWtbApplyShopWindow,
    OperaInsuranceApplyWindow,
    dispatchUnitDetailsPlat,
    OperaTaxesWindow,
@@ -146,12 +263,21 @@
      page0: 1,
      page1: 1,
      page2: 1,
      page6: 1,
      page7: 1,
      page8: 1,
      totalPage8: 0,
      totalPage7: 0,
      totalPage6: 0,
      totalPage2: 0,
      totalPage1: 0,
      totalPage0: 0,
      tableData0: [],
      tableData1: [],
      tableData2: [],
      tableData6: [],
      tableData7: [],
      tableData8: [],
      cate: [
        {
          name: '投保申请',
@@ -169,15 +295,20 @@
          icon: require('../assets/icons/company/dipatch_unit.png')
        },
        {
          name: '直保开票',
          url: '/enterprise/directInvoicing',
          icon: require('../assets/icons/company/tax.png')
        },
        {
          name: '委托保开票',
          url: '/enterprise/entrustedInvoicing',
          icon: require('../assets/icons/company/tax.png')
          name: '员工管理',
          url: '/business/member',
          icon: require('../assets/icons/company/image.png')
        }
        // {
        //   name: '直保开票',
        //   url: '/enterprise/directInvoicing',
        //   icon: require('../assets/icons/company/tax.png')
        // },
        // {
        //   name: '委托保开票',
        //   url: '/enterprise/entrustedInvoicing',
        //   icon: require('../assets/icons/company/tax.png')
        // }
      ],
      catePlat: [
        {
@@ -219,19 +350,62 @@
    this.setLoadTimer()
  },
  methods: {
    getTotalNoticeCount (a) {
      if (a.name == 0) {
        return this.totalPage0
      } else if (a.name == 1) {
        return this.totalPage1
      } else if (a.name == 2) {
        return this.totalPage2
      } else if (a.name == 6) {
        return this.totalPage6
      } else if (a.name == 7) {
        return this.totalPage7
      } else if (a.name == 8) {
        return this.totalPage8
      }
      return 0
    },
    detail (obj) {
      if (obj.objType === 0) {
        this.$refs.operaInsuranceApplyWindow.open('投保申请详情', { id: obj.objId })
        getDetail(obj.objId).then(res => {
          if (res.solutionType == 0) {
            this.$refs.operaInsuranceApplyWindow.open('投保申请详情', { id: obj.objId })
          } else {
            this.$refs.OperaWtbApplyShopWindow.open('委托投保申请详情', { id: obj.objId })
          }
        }).catch(err => {
        })
      } else if (obj.objType === 1) {
        this.$refs.operaApplyChangeDetailWindow.open('加减保详情', { id: obj.objId, applyId: obj.param1 })
        getChangeDetail(obj.objId).then(res => {
          this.$refs.operaApplyChangeDetailWindow.open('加减保详情', { id: obj.objId, applyId: res.applyId })
        }).catch(err => {
        })
      } else if (obj.objType === 2) {
        this.$refs.operaApplyChangeUnitDetailWindow.open('换厂申请详情', { id: obj.objId, applyId: obj.param1 })
        getChangeDetail(obj.objId).then(res => {
          this.$refs.operaApplyChangeUnitDetailWindow.open('更换派遣单位申请详情', { id: obj.objId, applyId: res.applyId })
        }).catch(err => {
        })
      } else if (obj.objType === 3) {
        this.$refs.dispatchUnitDetailsPlat.open('派遣单详情', { id: obj.objId })
      } else if (obj.objType === 4) {
        this.$refs.OperaTaxesWindow.open('开票申请详情', { id: obj.objId })
      } else if (obj.objType === 5) {
        this.$refs.operaSettleClaimsWindow.open('理赔详情', { id: obj.objId })
        this.$refs.operaSettleClaimsWindow.open('报案理赔详情', obj.objId)
        if ([1,4, 7,13, 14, 15, 16, 17, 18].includes(obj.type)) {
          // 如果是提醒累消息,删除通知
          deleById(obj.id)
            .then(res => {
              this.tableData2.forEach((item, index) => {
                if (item.id === obj.id) {
                  this.tableData2.splice(index, 1)
                  this.totalPage2 = this.totalPage2 - 1
                }
              })
              // this.$refs.operaSettleClaimsWindow.open('报案理赔详情', obj.objId)
            })
        }
      }
    },
    setLoadTimer () {
@@ -241,10 +415,10 @@
        clearInterval(window.timer)
      }
      window.timer = setInterval(() => {
          that.initLoadData()
      }, 6000)
        that.initLoadData()
      }, 60000)
    },
    initLoadData(){
    initLoadData () {
      var pemissons = this.userInfo.permissions
      if (pemissons.includes('business:notice:insurance')) {
        this.handleCurrentChange0(0)
@@ -271,9 +445,22 @@
          if (type === 1) {
            this.tableData1 = response.records
            this.totalPage1 = response.total
          } if (type === 2) {
          }
          if (type === 2) {
            this.tableData2 = response.records
            this.totalPage2 = response.total
          }
          if (type === 6) {
            this.tableData6 = response.records
            this.totalPage6 = response.total
          }
          if (type === 7) {
            this.tableData7 = response.records
            this.totalPage7 = response.total
          }
          if (type === 8) {
            this.tableData8 = response.records
            this.totalPage8 = response.total
          }
        })
        .catch(e => {
@@ -284,16 +471,23 @@
      var pemissons = this.userInfo.permissions
      if (pemissons.includes('business:notice:insurance')) {
        this.tabs.push({ name: '0', label: '投保代办' })
        this.tabs.push({ name: '0', label: '投保待办' })
        // this.handleCurrentChange0(0);
      }
      if (pemissons.includes('business:notice:tax')) {
        this.tabs.push({ name: '1', label: '发票代办' })
      if (pemissons.includes('business:notice:tax') && this.userInfo.type !== 1) {
        this.tabs.push({ name: '1', label: '发票待办' })
        // this.handleCurrentChange1(0);
      }
      if (pemissons.includes('business:notice:settle')) {
        this.tabs.push({ name: '2', label: '理赔代办' })
        this.tabs.push({ name: '2', label: '报案理赔' })
        // this.handleCurrentChange2(0);
      }
      if (this.userInfo.type === 1) {
        this.tabs.push({ name: '7', label: '方案签署提醒' })
      }
      this.tabs.push({ name: '6', label: '合同签署提醒' })
      if (this.userInfo.type === 0) {
        this.tabs.push({ name: '8', label: '集团申请提醒' })
      }
      /* if (pemissons.includes('business:notice:insurance')) {
        this.getNoticeList(0, this.page0)
@@ -313,6 +507,12 @@
        this.handleCurrentChange1(0)
      } else if (this.activeName === '2') {
        this.handleCurrentChange2(0)
      } else if (this.activeName === '6') {
        this.handleCurrentChange6(0)
      } else if (this.activeName === '7') {
        this.handleCurrentChange7(0)
      } else if (this.activeName === '8') {
        this.handleCurrentChange8(0)
      }
    },
    handleCurrentChange0 (page) {
@@ -326,6 +526,18 @@
    handleCurrentChange2 (page) {
      this.page2 = page
      this.getNoticeList(2, this.page2)
    },
    handleCurrentChange6 (page) {
      this.page6 = page
      this.getNoticeList(6, this.page6)
    },
    handleCurrentChange7 (page) {
      this.page7 = page
      this.getNoticeList(7, this.page7)
    },
    handleCurrentChange8 (page) {
      this.page8 = page
      this.getNoticeList(8, this.page8)
    },
    jump (url) {
      if (!url) return
@@ -498,22 +710,25 @@
  }
  .home_content {
    width: 100%;
    height: calc(100% - 170px);
    /*height: calc(100% - 170px);*/
    margin-top: 10px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    /*align-items: center;*/
    /*justify-content: space-between;*/
    .home_content_left {
      width: 350px;
      height: 100%;
      /*height: 100%;*/
      height: auto;
      flex-shrink: 0;
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      .home_content_left_item {
        width: 100%;
        height: 32%;
        /*height: 32%;*/
        height: 200px;
        background: #ffffff;
        margin-bottom: 10px;
      }
    }
    .home_content_right {
@@ -538,6 +753,7 @@
          box-sizing: border-box;
          width: 100%;
          display: flex;
          align-items: center;
          justify-content: space-between;
          border: 1px solid #ececec;
          margin-bottom: 15px;
@@ -573,6 +789,7 @@
            }
          }
          .list_item_right {
            flex-shrink: 0;
            height: 100%;
            display: flex;
            align-items: center;