k94314517
2025-07-04 50fb58286ed3b718c39a97e0987ee7561a295651
company/src/views/enterprise/myPolicy.vue
@@ -6,7 +6,7 @@
                <el-input v-model="searchForm.code" placeholder="请输入" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="保险方案" prop="baseSolutionId">
                <el-select v-model="searchForm.baseSolutionId" placeholder="请选择" @change="search">
                <el-select v-model="searchForm.baseSolutionId" filterable placeholder="请选择" @change="search">
                    <el-option
                        v-for="item in solutionList"
                        :key="item.baseId"
@@ -15,19 +15,32 @@
                    </el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="状态" prop="statusCollect">
                <el-select v-model="searchForm.statusCollect" placeholder="请选择" @change="search">
                    <el-option label="待审核" value="0"></el-option>
                    <el-option label="待出单" value="1"></el-option>
                    <el-option label="待签署" value="7"></el-option>
                    <el-option label="保障中" value="2"></el-option>
                    <el-option label="已过期" value="3"></el-option>
                    <el-option label="已退回" value="4"></el-option>
                    <el-option label="退回申请中" value="5"></el-option>
                    <el-option label="已关闭" value="6"></el-option>
                    <el-option label="投保中" value="26"></el-option>
            <el-form-item label="投保类型" prop="solutionType">
                <el-select v-model="searchForm.solutionType" placeholder="请选择" @change="search">
                    <el-option label="直接投保" value="0"></el-option>
                    <el-option label="委托投保" value="1"></el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="状态" prop="timeOut">
                <el-select v-model="searchForm.timeOut" placeholder="请选择" @change="search">
                    <el-option label="待生效" value="0"></el-option>
                    <el-option label="保障中" value="1"></el-option>
                    <el-option label="已过期" value="2"></el-option>
                </el-select>
            </el-form-item>
<!--            <el-form-item label="状态" prop="statusCollect">-->
<!--                <el-select v-model="searchForm.statusCollect" placeholder="请选择" @change="search">-->
<!--                    <el-option label="待审核" value="0"></el-option>-->
<!--                    <el-option label="待出单" value="1"></el-option>-->
<!--                    <el-option label="待签署" value="7"></el-option>-->
<!--                    <el-option label="保障中" value="2"></el-option>-->
<!--                    <el-option label="已过期" value="3"></el-option>-->
<!--                    <el-option label="已退回" value="4"></el-option>-->
<!--                    <el-option label="退回申请中" value="5"></el-option>-->
<!--                    <el-option label="已关闭" value="6"></el-option>-->
<!--                    <el-option label="投保中" value="26"></el-option>-->
<!--                </el-select>-->
<!--            </el-form-item>-->
            <el-form-item label="保险生效起期" prop="time1">
                <el-date-picker
                    v-model="time1"
@@ -77,57 +90,75 @@
                :data="tableData.list"
                stripe
            >
                <el-table-column label="序号" width="80px">
                <el-table-column label="序号" width="80px" align="center" fixed>
                    <template slot-scope="scope">
                        <span>{{scope.$index + 1}}</span>
                    </template>
                </el-table-column>
                <el-table-column prop="statusInfo" label="状态">
                <el-table-column prop="statusInfo" align="center" fixed label="状态">
                  <template slot-scope="{row}">
                    <span :class="'apply-status'+row.status" >{{row.statusInfo}}</span>
                    <span style="color:#f95601;" v-if="row.status === 5 && row.statusInfo === '待生效'">{{row.statusInfo}}</span>
                    <span style="color:#999;" v-else-if="row.status === 5 && row.statusInfo === '已过期'">{{row.statusInfo}}</span>
                    <span :class="'apply-status'+row.status" v-else>{{row.statusInfo}}</span>
                  </template>
                </el-table-column>
                <el-table-column prop="solutionsName" label="保险方案"></el-table-column>
              <el-table-column label="类型">
                <el-table-column prop="solutionsName" align="center" fixed label="保险方案" min-width="150"></el-table-column>
              <el-table-column label="类型" fixed  align="center">
                <template slot-scope="{row}">
                  <span style="color: #00BA92" v-if="row.solutionType == 1">委托投保</span>
                  <span style="color: #F95601;"  v-else>直接投保</span>
                </template>
              </el-table-column>
              <el-table-column label="保单号">
              <el-table-column label="保单号" align="center" fixed>
                    <template slot-scope="{row}">
                        <span>{{row.code ? row.code : '-'}}</span>
                    </template>
                </el-table-column>
                <el-table-column prop="insureNum" label="投保人数"></el-table-column>
                <el-table-column label="投保时长(天)">
                    <template slot-scope="{row}">
                        <span>{{(row.serviceDays - row.loseEfficacyDays) < 0 ? `-` : row.serviceDays - row.loseEfficacyDays}}</span>
                    </template>
                </el-table-column>
                <el-table-column prop="currentFee" label="已产生费用">
                    <template slot-scope="{row}">
                      <span>{{row.currentFee!=null?row.currentFee: '-'}}</span>
                    </template>
                  </el-table-column>
                <el-table-column prop="fee" label="总费用(元)">
<!--                <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="当前在保人数" width="120">
                  <template slot-scope="{row}">
                    <span>{{row.fee!=null?row.fee: '-'}}</span>
                    <span>{{(row.guaranteeNum||0)}} 人</span>
                  </template>
                </el-table-column>
                <el-table-column prop="createDate" 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 label="投保时长" align="center">
                    <template slot-scope="{row}">
                        <span>{{(row.serviceDays - row.loseEfficacyDays) < 0 ? `-` : (row.serviceDays - row.loseEfficacyDays+'天')}}</span>
                    </template>
                </el-table-column>
<!--                <el-table-column prop="currentFee" label="已产生费用"  align="center">-->
<!--                    <template slot-scope="{row}">-->
<!--                      <span>{{row.currentFee!=null?row.currentFee+' 元': '-'}}</span>-->
<!--                    </template>-->
<!--                  </el-table-column>-->
                <el-table-column prop="fee" label="批改费用合计"  align="center" width="120">
                    <template slot-scope="{row}">
                        <span>{{row.changeMoney+' 元'}}</span>
                    </template>
                </el-table-column>
                <el-table-column prop="fee" label="总费用"  align="center">
                  <template slot-scope="{row}">
                    <span>{{row.fee!=null?row.fee+' 元': '-'}}</span>
                  </template>
                </el-table-column>
                <el-table-column prop="createDate" label="提交日期"  align="center" min-width="150"></el-table-column>
                <el-table-column prop="startTime" label="投保生效日期"  align="center" min-width="150"></el-table-column>
                <el-table-column prop="endTime" label="投保失效日期"  align="center" min-width="150"></el-table-column>
                <el-table-column
                    v-if="containPermissions(['business:insuranceapply:update', 'business:insuranceapply:delete'])"
                    label="操作"
                    min-width="150"
                    fixed="right"
                    align="center"
                >
                    <template slot-scope="{row}">
                        <el-button type="text" @click="godetail(row)" v-permissions="['business:insuranceapply:update']">查看详情</el-button>
<!--                        <template v-if="row.statusCollect === 2">-->
<!--                            <el-button type="text" @click="$refs.additionSubtractionApplication.open('加减保申请', { id: row.id })">加减保申请</el-button>-->
                      <!--                        <el-button type="text" @click="$refs.OperaApplyChangeMonthWindow.open('加减保月度费用统计',row)" v-permissions="['business:applychange:query']">加减保费用</el-button>
                                          <template v-if="row.statusCollect === 2">-->
                        <el-button type="text" @click="$refs.additionSubtractionApplication.open('加减保申请', { id: row.id })" v-if="isShow(row.status, row.endTime)">加减保申请</el-button>
<!--                        </template>-->
                    </template>
                </el-table-column>
@@ -140,141 +171,162 @@
            </pagination>
        </template>
        <!--    新增投保    -->
        <OperaInsuranceApplyWindow ref="OperaInsuranceApplyWindow" @success="handlePageChange" />
        <OperaInsuranceApplyWindow ref="OperaInsuranceApplyWindow" @success="result" />
        <!--    投保详情    -->
        <OperaInsuranceApplyDetails ref="OperaInsuranceApplyDetails" @success="handlePageChange" />
      <OperaWtbApplyShopWindow ref="OperaWtbApplyShopWindow" @success="handlePageChange" />
        <!--    加减保申请    -->
        <additionSubtractionApplication ref="additionSubtractionApplication" @success="handlePageChange" />
        <!--    续保弹窗    -->
<!--        <OperaApplyChangeMonthWindow ref="OperaApplyChangeMonthWindow" @success="handlePageChange" />-->
        <renewalInsurance ref="renewalInsurance" @success="handlePageChange" />
    </TableLayout>
</template>
<script>
    import BaseTable from '@/components/base/BaseTable'
    import TableLayout from '@/layouts/TableLayout'
    import Pagination from '@/components/common/Pagination'
    import OperaInsuranceApplyWindow from '@/components/enterprise/OperaInsuranceApplyWindow'
    import OperaInsuranceApplyDetails from '@/components/business/OperaInsuranceApplyWindow'
    import additionSubtractionApplication from '@/components/enterprise/additionSubtractionApplication'
    import renewalInsurance from '@/components/enterprise/renewalInsurance'
    import OperaWtbApplyShopWindow from '@/components/business/OperaWtbApplyShopWindow'
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaInsuranceApplyWindow from '@/components/enterprise/OperaInsuranceApplyAddWindow'
import OperaInsuranceApplyDetails from '@/components/business/OperaInsuranceApplyWindow'
import additionSubtractionApplication from '@/components/enterprise/additionSubtractionApplication'
import renewalInsurance from '@/components/enterprise/renewalInsurance'
import OperaWtbApplyShopWindow from '@/components/business/OperaWtbApplyShopWindow'
import OperaApplyChangeMonthWindow from '@/components/business/OperaApplyChangeMonthWindow'
    import { all as solutionAll} from '@/api/business/solutions'
    import { getCaptcha, closeApplyNotice } from '@/api/business/notices'
    export default {
        name: 'myPolicy',
        extends: BaseTable,
        components: {
            TableLayout,
            Pagination,
            OperaInsuranceApplyWindow,
            OperaInsuranceApplyDetails,
            renewalInsurance,
            additionSubtractionApplication,
          OperaWtbApplyShopWindow
        },
        data () {
            return {
                // 搜索
                searchForm: {
                    code: '',
                    endTimeE: '',
                    endTimeS: '',
                    startTimeE: '',
                    startTimeS: '',
                    baseSolutionId: '',
                    statusCollect: '2'
                },
                obj: {
                    renewalNum: 0,
                    waitSignNum: 0
                },
                time1: [],
                time2: [],
                solutionList:[]
            }
        },
        created () {
            this.config({
                module: '投保申请信息表',
                api: '/business/insuranceApply',
                'field.id': 'id',
                'field.main': 'id'
            })
            this.search()
            this.loadSelectList()
            this.getNum()
        },
        methods:{
          godetail (row) {
            if (row.solutionType == 1) {
              this.$refs.OperaWtbApplyShopWindow.open('委托投保详情', { id: row.id })
            } else {
              this.$refs.OperaInsuranceApplyDetails.open('投保详情', { id: row.id })
            }
          },
            see() {
                this.searchForm.statusCollect = '7'
                this.search()
            },
            closeRemind(type) {
                this.$confirm('确定关闭此提示吗?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    type: 'warning'
                }).then(() => {
                    closeApplyNotice(type)
                        .then(res => {
                            this.getNum()
                        })
                }).catch(() => {
                });
            },
            getNum() {
                getCaptcha()
                    .then(res => {
                        this.obj.renewalNum = res.renewalNum
                        this.obj.waitSignNum = res.waitSignNum
                    })
            },
            reset() {
                this.time1 = []
                this.time2 = []
                this.searchForm.endTimeE = ''
                this.searchForm.endTimeS = ''
                this.searchForm.startTimeE = ''
                this.searchForm.startTimeS = ''
                this.$refs.searchForm.resetFields()
                this.search()
            },
            changeE(e) {
                if (e.length > 0) {
                    this.searchForm.endTimeS = e[0]
                    this.searchForm.endTimeE = e[1]
                } else {
                    this.searchForm.endTimeS = ''
                    this.searchForm.endTimeE = ''
                }
                this.search()
            },
            changeS(e) {
                if (e.length > 0) {
                    this.searchForm.startTimeS = e[0]
                    this.searchForm.startTimeE = e[1]
                } else {
                    this.searchForm.startTimeS = ''
                    this.searchForm.startTimeE = ''
                }
                this.search()
            },
            loadSelectList() {
                solutionAll({ dataType: 0 }).then(res => {
                    this.solutionList = res
                })
            }
        }
import { all as solutionAll } from '@/api/business/solutions'
import { getCaptcha, closeApplyNotice } from '@/api/business/notices'
export default {
  name: 'myPolicy',
  extends: BaseTable,
  components: {
    TableLayout,
    Pagination,
    OperaInsuranceApplyWindow,
    OperaInsuranceApplyDetails,
    renewalInsurance,
    // OperaApplyChangeMonthWindow,
    additionSubtractionApplication,
    OperaWtbApplyShopWindow
  },
  data () {
    return {
      // 搜索
      searchForm: {
        code: '',
        endTimeE: '',
        endTimeS: '',
        startTimeE: '',
        startTimeS: '',
        baseSolutionId: '',
        status: '5,27',
        solutionType: '',
        timeOut: ''
      },
      obj: {
        renewalNum: 0,
        waitSignNum: 0
      },
      time1: [],
      time2: [],
      solutionList: []
    }
  },
  created () {
    this.config({
      module: '投保申请信息表',
      api: '/business/insuranceApply',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
    this.loadSelectList()
    this.getNum()
  },
  methods: {
    // 判断是否显示加减保
    isShow(status, endTime) {
      const currentDate = new Date();
      const specifiedDate = new Date(endTime);
      return [5,27].includes(status) && (currentDate < specifiedDate);
    },
    godetail (row) {
      if (row.solutionType == 1) {
        this.$refs.OperaWtbApplyShopWindow.open('委托投保详情', { id: row.id })
      } else {
        this.$refs.OperaInsuranceApplyDetails.open('投保详情', { id: row.id })
      }
    },
    result(flag,param){
      console.log(flag,param)
      if(param && param.godetail && param.id){
        if (param.type == 1) {
          this.$refs.OperaWtbApplyShopWindow.open('委托投保详情', { id: param.id })
        } else {
          this.$refs.OperaInsuranceApplyDetails.open('投保详情', { id: param.id })
        }
      }
      this.handlePageChange()
    },
    see () {
      this.searchForm.statusCollect = '7'
      this.search()
    },
    closeRemind (type) {
      this.$confirm('确定关闭此提示吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        closeApplyNotice(type)
          .then(res => {
            this.getNum()
          })
      }).catch(() => {
      })
    },
    getNum () {
      getCaptcha()
        .then(res => {
          this.obj.renewalNum = res.renewalNum
          this.obj.waitSignNum = res.waitSignNum
        })
    },
    reset () {
      this.time1 = []
      this.time2 = []
      this.searchForm.endTimeE = ''
      this.searchForm.endTimeS = ''
      this.searchForm.startTimeE = ''
      this.searchForm.startTimeS = ''
      this.$refs.searchForm.resetFields()
      this.search()
    },
    changeE (e) {
      if (e.length > 0) {
        this.searchForm.endTimeS = e[0]
        this.searchForm.endTimeE = e[1]
      } else {
        this.searchForm.endTimeS = ''
        this.searchForm.endTimeE = ''
      }
      this.search()
    },
    changeS (e) {
      if (e.length > 0) {
        this.searchForm.startTimeS = e[0]
        this.searchForm.startTimeE = e[1]
      } else {
        this.searchForm.startTimeS = ''
        this.searchForm.startTimeE = ''
      }
      this.search()
    },
    loadSelectList () {
      solutionAll({ dataType: 0 }).then(res => {
        this.solutionList = res
      })
    }
  }
}
</script>