MrShi
2025-05-22 bdc2636a9d8f80b77123a827bda740354ba884a0
提交
已添加12个文件
已修改7个文件
5232 ■■■■ 文件已修改
company/.env.development 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/.env.developmentCom 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/api/business/insurance.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/api/business/knowledge.js 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/api/business/settleClaims.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/api/business/settleClaimsMovement.js 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/api/business/settleRisk.js 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/OpearaCaseEntryWindow.vue 1249 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/OperaKnowledgeWindow.vue 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/OperaSettleClaimsWindow.vue 1320 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/OperaSettleClaimsWindow_copy.vue 874 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/OperaSolutionsBaseWindow.vue 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/setCompany.vue 227 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/tagLibrary.vue 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/views/business/caseEntry.vue 186 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/views/business/dataBoard.vue 493 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/views/business/insurance.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/views/business/knowledge.vue 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/views/business/riskReminder.vue 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/.env.development
@@ -12,4 +12,4 @@
# VUE_APP_API = 'https://dmtest.ahapp.net/yyb_admin_api/'
# ä»»åº·
VUE_APP_API = 'http://192.168.0.137:10030/'
VUE_APP_API = 'http://192.168.0.140:10030/'
company/.env.developmentCom
@@ -9,6 +9,6 @@
# VUE_APP_API = 'https://dmtest.ahapp.net/yyb_web_api/'
VUE_APP_API = 'http://192.168.0.129:10031/'
VUE_APP_API = 'http://192.168.0.140:10031/'
# VUE_APP_API = 'https://www.yyb.red/yyb_web_api/'
company/src/api/business/insurance.js
@@ -20,6 +20,11 @@
    return request.post('/business/insurance/create', data)
}
// å­˜å‚¨ç†èµ”配置
export function saveLpInfo (data) {
    return request.post('/business/insurance/saveLpInfo', data)
}
// æŸ¥è¯¢å…¨éƒ¨
export function all (data) {
    return request.post('/business/insurance/list', data)
@@ -34,3 +39,8 @@
export function updateStatus (data) {
    return request.post('/business/insurance/updateStatus', data)
}
// æ ¹æ®ID查询
export function getById (id) {
    return request.get(`/business/insurance/${id}`)
}
company/src/api/business/knowledge.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
    return request.post('/business/knowledge/page', data, {
        trim: true
    })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
    return request.post('/business/knowledge/exportExcel', data, {
        trim: true,
        download: true
    })
}
// åˆ›å»º
export function create (data) {
    return request.post('/business/knowledge/create', data)
}
// åˆ›å»ºæ ‡ç­¾
export function createLabels (data) {
    return request.post('/business/labels/create', data)
}
// æ ‡ç­¾åˆ—表
export function list (data) {
    return request.post('/business/labels/list', data)
}
// ä¿®æ”¹
export function updateById (data) {
    return request.post('/business/knowledge/updateById', data)
}
// åŒºåŸŸæ ‘列表
export function findTreeList (data) {
    return request.post('/business/areas/findTreeList', data)
}
// åˆ é™¤
export function deleteById (id) {
    return request.get(`/business/knowledge/delete/${id}`)
}
// åˆ é™¤æ ‡ç­¾
export function labelsDeleteById (id) {
    return request.get(`/business/labels/delete/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
    return request.get('/business/knowledge/delete/batch', {
        params: {
            ids
        }
    })
}
company/src/api/business/settleClaims.js
@@ -57,6 +57,10 @@
    return request.get(`business/settleClaims/${id}`)
}
export function dele (id) {
    return request.get(`business/settleClaims/delete/${id}`)
}
export function delFile (id,fileId) {
    return request.get(`business/settleClaims/delFile/${id}/${fileId}`)
}
@@ -70,3 +74,8 @@
export function supplement (data) {
    return request.post('/business/settleClaims/supplement', data)
}
// å¹³å°ç³»ç»Ÿæ¡ˆä»¶å½•å…¥(ID不为空表示编辑,ID为空表示新增)
export function createSys (data) {
    return request.post('/business/settleClaims/createSys', data)
}
company/src/api/business/settleClaimsMovement.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
    return request.post('/business/settleClaims/pageForSD', data, {
        trim: true
    })
}
export function exportFiles (data) {
    return request.post('/business/settleClaims/exportForSDExcel', data, {
        trim: true,
        download: true
    })
}
export function findById (id) {
    return request.get(`business/settleClaims/getDetailForSd?id=${id}`)
}
company/src/api/business/settleRisk.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
import request from '../../utils/request'
// æ›´æ–°é£Žé™©é…ç½®
export function updRiskConfig (data) {
    return request.post('/business/settleRisk/updRiskConfig', data, {
        trim: true
    })
}
// ç†èµ”费用项信息
export function getCompensation (data) {
    return request.post('/business/settleRisk/getCompensation', data, {
        trim: true
    })
}
// èŽ·å–è¯¦æƒ…
export function getRiskConfig () {
    return request.get('/business/settleRisk/getRiskConfig')
}
company/src/components/business/OpearaCaseEntryWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1249 @@
<template>
    <GlobalWindow
        :title="title"
        width="100%"
        :visible.sync="visible"
        :confirm-working="isWorking"
        @confirm="confirm"
    >
        <div class="box">
            <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="150px" class="demo-ruleForm">
                <div class="box_item">
                    <div class="box_item_title">
                        <span>出险人信息</span>
                        <el-select v-model="ruleForm.status" style="width: 100px;" placeholder="请选择">
                            <el-option label="待立案" :value="2"></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="9"></el-option>
                            <el-option label="待核赔" :value="10"></el-option>
                            <el-option label="待结案" :value="12"></el-option>
                            <el-option label="已结案" :value="13"></el-option>
                            <el-option label="已撤案" :value="14"></el-option>
                        </el-select>
                    </div>
                    <div class="box_item_list">
                        <div class="box_item_list_row">
                            <el-form-item label="出险人" prop="extData.memberName">
                                <el-input v-model="ruleForm.extData.memberName" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="证件类型" prop="extData.memberIdcardType">
                                <el-select v-model="ruleForm.extData.memberIdcardType" placeholder="请选择">
                                    <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-option label="签证" :value="4"></el-option>
                                    <el-option label="港澳通行证" :value="5"></el-option>
                                </el-select>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="证件号码" prop="extData.memberIdcard">
                                <el-input v-model="ruleForm.extData.memberIdcard" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="出生日期" prop="extData.memberBirthday">
                                <el-date-picker
                                    v-model="ruleForm.extData.memberBirthday"
                                    type="date"
                                    placeholder="选择日期"
                                    format="yyyy å¹´ MM æœˆ dd æ—¥"
                                    value-format="yyyy-MM-dd">
                                </el-date-picker>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="年龄" prop="extData.memberAge">
                                <el-input v-model="ruleForm.extData.memberAge" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="性别" prop="extData.memberSex">
                                <el-radio-group v-model="ruleForm.extData.memberSex">
                                    <el-radio :label="0">男</el-radio>
                                    <el-radio :label="1">女</el-radio>
                                </el-radio-group>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="电话号码" prop="extData.memberPhone">
                                <el-input v-model="ruleForm.extData.memberPhone" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="户籍地址" prop="extData.memberAddr">
                                <el-input v-model="ruleForm.extData.memberAddr" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_rowx"></div>
                    </div>
                </div>
                <div class="box_item">
                    <div class="box_item_title">
                        <span>保单信息</span>
                    </div>
                    <div class="box_item_list">
                        <div class="box_item_list_row">
                            <el-form-item label="保险名称" prop="extData.bxName">
                                <el-input v-model="ruleForm.extData.bxName" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="保单号" prop="extData.bxCode">
                                <el-input v-model="ruleForm.extData.bxCode" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="保障期限" prop="extData.bxDate">
                                <el-date-picker
                                    v-model="ruleForm.extData.bxDate"
                                    type="datetimerange"
                                    @change="changeBxDate"
                                    value-format="yyyy-MM-dd hh:mm:ss"
                                    range-separator="至"
                                    start-placeholder="开始日期"
                                    end-placeholder="结束日期">
                                </el-date-picker>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="投保人" prop="extData.bxTbName">
                                <el-input v-model="ruleForm.extData.bxTbName" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="被保险人" prop="extData.bxBbName">
                                <el-input v-model="ruleForm.extData.bxBbName" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="承保机构" prop="extData.bxOrg">
                                <el-input v-model="ruleForm.extData.bxOrg" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="应收保费" prop="extData.bxYsMoney">
                                <el-input v-model="ruleForm.extData.bxYsMoney" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="实收保费" prop="extData.bxSsMoney">
                                <el-input v-model="ruleForm.extData.bxSsMoney" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_rowx"></div>
                        <div class="box_item_list_row" style="width: 100%;">
                            <el-form-item label="电子保单" prop="dzbdFileList">
                                <div class="box_item_list_row_l">
                                    <div class="desc_data_list_item" v-for="(item, index) in ruleForm.dzbdFileList" :key="index">
                                        <div class="desc_data_list_item_dele" @click="delFile(index, 7)">删除</div>
                                        <div class="desc_data_list_item_img" v-if="item.type === 0">
                                            <img :src="item.url" alt="img"/>
                                        </div>
                                        <div class="desc_data_list_item_img" v-if="item.type === 1">
                                            <video controls :src="item.url" />
                                        </div>
                                        <div class="desc_data_list_item_img" v-if="item.type === 2">
                                            <i class="el-icon-folder-opened"></i>
                                        </div>
                                        <div class="desc_data_list_item_info">
                                            <span>{{ item.name }}</span>
                                        </div>
                                    </div>
                                    <upload width="100px" height="100px" :list="[]" accept=".png,.jpg,.jpeg,.mp4,.word,.xlsx,.xls,.pdf,.excel" folder="SETTLE_FILE" @success="claimsUploadFile($event, 7)" />
                                </div>
                            </el-form-item>
                        </div>
                    </div>
                </div>
                <div class="box_item">
                    <div class="box_item_title">
                        <span>报案信息</span>
                    </div>
                    <div class="box_item_list">
                        <div class="box_item_list_row">
                            <el-form-item label="案件号" prop="reportNum">
                                <el-input v-model="ruleForm.reportNum" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="报案人姓名" prop="informantName">
                                <el-input v-model="ruleForm.informantName" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="报案人联系方式" prop="informantPhone">
                                <el-input v-model="ruleForm.informantPhone" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="报案时间" prop="happenTime">
                                <el-date-picker
                                    v-model="ruleForm.happenTime"
                                    type="date"
                                    placeholder="选择日期"
                                    format="yyyy-MM-dd"
                                    value-format="yyyy-MM-dd">
                                </el-date-picker>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="出险时间" prop="createDate">
                                <el-date-picker
                                    v-model="ruleForm.createDate"
                                    type="datetime"
                                    placeholder="选择日期"
                                    format="yyyy-MM-dd hh:mm:ss"
                                    value-format="yyyy-MM-dd hh:mm:ss">
                                </el-date-picker>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="出险地点" prop="areaInfo">
                                <el-input v-model="ruleForm.areaInfo" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="是否已注销" prop="extData.logoff">
                                <el-radio-group v-model="ruleForm.extData.logoff">
                                    <el-radio :label="1">是</el-radio>
                                    <el-radio :label="0">否</el-radio>
                                </el-radio-group>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="注销处理人" prop="extData.logoffUser">
                                <el-input v-model="ruleForm.extData.logoffUser" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="注销时间" prop="extData.logoffDate">
                                <el-date-picker
                                    v-model="ruleForm.extData.logoffDate"
                                    type="date"
                                    placeholder="选择日期"
                                    format="yyyy å¹´ MM æœˆ dd æ—¥"
                                    value-format="yyyy-MM-dd">
                                </el-date-picker>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row" style="width: 100%;">
                            <el-form-item label="出险经过" prop="content">
                                <el-input v-model="ruleForm.content" :rows="5" type="textarea" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row" style="width: 100%;">
                            <el-form-item label="事故类型" prop="type">
                                <el-radio-group v-model="ruleForm.type">
                                    <el-radio :label="0">工作期间受伤</el-radio>
                                    <el-radio :label="1">上下班途中受伤</el-radio>
                                    <el-radio :label="2">非工作时间受伤</el-radio>
                                    <el-radio :label="3">意外受伤</el-radio>
                                </el-radio-group>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row" style="width: 100%;">
                            <el-form-item label="就诊医疗机构" prop="hospital">
                                <el-input v-model="ruleForm.hospital" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row" style="width: 100%;">
                            <el-form-item label="就诊类型" prop="inHospital">
                                <el-radio-group v-model="ruleForm.inHospital">
                                    <el-radio :label="1">门诊</el-radio>
                                    <el-radio :label="0">住院</el-radio>
                                </el-radio-group>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row" style="width: 100%;">
                            <el-form-item label="是否伤残" prop="hurtType">
                                <el-radio-group v-model="ruleForm.hurtType">
                                    <el-radio :label="0">是</el-radio>
                                    <el-radio :label="1">否</el-radio>
                                    <el-radio :label="2">待确定</el-radio>
                                </el-radio-group>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row" style="width: 100%;">
                            <el-form-item label="是否有医保" prop="medicalInsurance">
                                <el-radio-group v-model="ruleForm.medicalInsurance">
                                    <el-radio :label="1">是</el-radio>
                                    <el-radio :label="0">否</el-radio>
                                </el-radio-group>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row" style="width: 100%;">
                            <el-form-item label="事故视频/照片" prop="reportFileList">
                                <div class="box_item_list_row_l">
                                    <div class="desc_data_list_item" v-for="(item, index) in ruleForm.reportFileList" :key="index">
                                        <div class="desc_data_list_item_dele" @click="delFile(index, 6)">删除</div>
                                        <div class="desc_data_list_item_img" v-if="item.type === 0">
                                            <img :src="item.url" alt="img"/>
                                        </div>
                                        <div class="desc_data_list_item_img" v-if="item.type === 1">
                                            <video controls :src="item.url" />
                                        </div>
                                        <div class="desc_data_list_item_img" v-if="item.type === 2">
                                            <i class="el-icon-folder-opened"></i>
                                        </div>
                                        <div class="desc_data_list_item_info">
                                            <span>{{ item.name }}</span>
                                        </div>
                                    </div>
                                    <upload width="100px" height="100px" :list="[]" accept=".png,.jpg,.jpeg,.mp4,.word,.xlsx,.xls,.pdf,.excel" folder="SETTLE_FILE" @success="claimsUploadFile($event, 6)" />
                                </div>
                            </el-form-item>
                        </div>
                    </div>
                </div>
                <div class="box_item">
                    <div class="box_item_title">
                        <span>人员伤亡情况</span>
                    </div>
                    <div class="box_item_list">
                        <div class="box_item_list_row">
                            <el-form-item label="伤亡人员属性" prop="extData.rsAttr">
                                <el-input v-model="ruleForm.extData.rsAttr" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="人员伤情" prop="extData.rsInfo">
                                <el-input v-model="ruleForm.extData.rsInfo" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="治疗状态" prop="extData.rsZlStatus">
                                <el-input v-model="ruleForm.extData.rsZlStatus" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="损失金额" prop="extData.rsLossMoney">
                                <el-input v-model="ruleForm.extData.rsLossMoney" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="就诊情况" prop="extData.rsJzInfo">
                                <el-input v-model="ruleForm.extData.rsJzInfo" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="出院时间" prop="extData.rsCyDate">
                                <el-date-picker
                                    v-model="ruleForm.extData.rsCyDate"
                                    type="date"
                                    placeholder="选择日期"
                                    format="yyyy å¹´ MM æœˆ dd æ—¥"
                                    value-format="yyyy-MM-dd">
                                </el-date-picker>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="医疗机构" prop="extData.rsYlOrg">
                                <el-input v-model="ruleForm.extData.rsYlOrg" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="死亡时间" prop="extData.rsDeathDate">
                                <el-input v-model="ruleForm.extData.rsDeathDate" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_rowx"></div>
                    </div>
                </div>
                <div class="box_item">
                    <div class="box_item_title">
                        <span>就诊信息</span>
                    </div>
                    <div class="box_item_list">
                        <div class="box_item_list_row">
                            <el-form-item label="医院名称" prop="extData.jzHospital">
                                <el-input v-model="ruleForm.extData.jzHospital" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="住院号" prop="extData.jzZyCode">
                                <el-input v-model="ruleForm.extData.jzZyCode" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="科室" prop="extData.jzZyKs">
                                <el-input v-model="ruleForm.extData.jzZyKs" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="入院时间" prop="extData.jzZyDate">
                                <el-input v-model="ruleForm.extData.jzZyDate" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="出院时间" prop="extData.jzCyDate">
                                <el-input v-model="ruleForm.extData.jzCyDate" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="出院天数" prop="extData.jzZyDays">
                                <el-input v-model="ruleForm.extData.jzZyDays" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                    </div>
                </div>
                <div class="box_item">
                    <div class="box_item_title">
                        <span>诊断信息</span>
                    </div>
                    <div class="box_item_list">
                        <div class="box_item_list_row">
                            <el-form-item label="治疗情况" prop="extData.zdZlInfo">
                                <el-input v-model="ruleForm.extData.zdZlInfo" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="伤情描述" prop="extData.zdSqInfo">
                                <el-input v-model="ruleForm.extData.zdSqInfo" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="临床诊断" prop="extData.zdLczd">
                                <el-input v-model="ruleForm.extData.zdLczd" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="手术名称" prop="extData.zdSsName">
                                <el-input v-model="ruleForm.extData.zdSsName" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="后续治疗项目" prop="extData.zdHxProject">
                                <el-input v-model="ruleForm.extData.zdHxProject" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="是否有既往病" prop="extData.zdJwb">
                                <el-input v-model="ruleForm.extData.zdJwb" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                    </div>
                </div>
                <div class="box_item">
                    <div class="box_item_title">
                        <span>核责信息</span>
                    </div>
                    <div class="box_item_list">
                        <div class="box_item_list_row">
                            <el-form-item label="保单号是否成立" prop="extData.hzBdhCl">
                                <el-input v-model="ruleForm.extData.hzBdhCl" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="事故责任比例" prop="extData.hzDutyRate">
                                <el-input v-model="ruleForm.extData.hzDutyRate" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_rowx"></div>
                    </div>
                </div>
                <div class="box_item">
                    <div class="box_item_title">
                        <span>鉴定信息</span>
                    </div>
                    <div class="box_item_desc">劳动能力鉴定职工工伤与职业病致残等级</div>
                    <div class="box_item_list">
                        <div class="box_item_list_row">
                            <el-form-item label="鉴定情况" prop="extData.jdInfo">
                                <el-input v-model="ruleForm.extData.jdInfo" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="鉴定途径" prop="extData.jdChannel">
                                <el-input v-model="ruleForm.extData.jdChannel" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="鉴定机构" prop="extData.jdOrg">
                                <el-input v-model="ruleForm.extData.jdOrg" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="鉴定人" prop="extData.jdUser">
                                <el-input v-model="ruleForm.extData.jdUser" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="评定日期" prop="extData.jdPdDate">
                                <el-date-picker
                                    v-model="ruleForm.extData.jdPdDate"
                                    type="date"
                                    placeholder="选择日期"
                                    format="yyyy å¹´ MM æœˆ dd æ—¥"
                                    value-format="yyyy-MM-dd">
                                </el-date-picker>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="伤残等级" prop="extData.jdScLevel">
                                <el-select v-model="ruleForm.extData.jdScLevel" placeholder="请选择">
                                    <el-option
                                        v-for="item in 10"
                                        :key="item"
                                        :label="item + '级'"
                                        :value="item">
                                    </el-option>
                                </el-select>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="鉴定条款" prop="extData.jdTerms">
                                <el-input v-model="ruleForm.extData.jdTerms" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row">
                            <el-form-item label="伤残系数" prop="extData.jdXishu">
                                <el-input v-model="ruleForm.extData.jdXishu" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_rowx"></div>
                        <div class="box_item_list_row" style="width: 100%;">
                            <el-form-item label="是否伤残赔偿完成解除劳动合同" prop="extData.jdJsldht">
                                <el-radio-group v-model="ruleForm.extData.jdJsldht">
                                    <el-radio :label="1">是</el-radio>
                                    <el-radio :label="0">否</el-radio>
                                </el-radio-group>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row" style="width: 100%;">
                            <el-form-item label="责任与评残条款关联关系" prop="extData.jdZrpctkRel">
                                <el-radio-group v-model="ruleForm.extData.jdZrpctkRel">
                                    <el-radio :label="0">保单号</el-radio>
                                    <el-radio :label="1">关联评残条款</el-radio>
                                    <el-radio :label="2">劳动能力鉴定</el-radio>
                                </el-radio-group>
                            </el-form-item>
                        </div>
                    </div>
                </div>
                <div class="box_item">
                    <div class="box_item_title">
                        <span>定损录入</span>
                    </div>
                    <div class="box_item_desc">主要赔付项</div>
                    <div class="box_item_list">
                        <div class="box_item_list_row" style="width: 100%;" v-for="(item, index) in list1" :key="index">
                            <el-form-item :label="item.name">
                                <div style="display: flex; flex-direction: column;">
                                    <el-input v-model="item.fee" @input="changeFee" type="number" placeholder="请输入金额"></el-input>
                                    <el-input v-model="item.describe" placeholder="请输入费用说明"></el-input>
                                </div>
                            </el-form-item>
                        </div>
                    </div>
                    <div class="box_item_desc">其他赔付项</div>
                    <div class="box_item_list">
                        <div class="box_item_list_row" style="width: 50%;" v-for="(item, index) in list2" :key="index">
                            <el-form-item :label="item.name">
                                <div style="display: flex; flex-direction: column;">
                                    <el-input v-model="item.fee" @input="changeFee" type="number" placeholder="请输入金额"></el-input>
                                    <el-input v-model="item.describe" placeholder="请输入费用说明"></el-input>
                                </div>
                            </el-form-item>
                        </div>
                    </div>
                    <div class="price">
                        <span>赔付金额合计</span>
                        <span>Â¥{{totalPrice}}</span>
                    </div>
                </div>
                <div class="box_item">
                    <div class="box_item_title">
                        <span>定损方案</span>
                    </div>
                    <div class="box_item_list">
                        <div class="box_item_list_row" style="width: 50%;" v-for="(item, index) in list3" :key="index">
                            <el-form-item :label="item.name">
                                <el-input v-model="item.fee" placeholder="请输入"></el-input>
                            </el-form-item>
                        </div>
                        <div class="box_item_list_row" style="width: 50%;">
                            <el-form-item label="是否可赔付医保外用药" prop="payForYbwyy">
                                <el-radio-group v-model="ruleForm.payForYbwyy">
                                    <el-radio :label="1">是</el-radio>
                                    <el-radio :label="0">否</el-radio>
                                </el-radio-group>
                            </el-form-item>
                        </div>
                    </div>
                </div>
                <div class="box_item">
                    <div class="box_item_title">
                        <span>理赔材料</span>
                    </div>
                    <div class="box_item_list">
                        <div class="box_item_list_row" style="width: 100%; margin-bottom: 30px;">
                            <div class="box_item_list_row_title">
                                <div class="x"></div>
                                <span>员工关系证明材料</span>
                            </div>
                            <div class="box_item_list_row_l">
                                <div class="desc_data_list_item" v-for="(item, index) in ruleForm.relationFileList" :key="index">
                                    <div class="desc_data_list_item_dele" @click="delFile(index, 1)">删除</div>
                                    <div class="desc_data_list_item_img" v-if="item.type === 0">
                                        <img :src="item.url" alt="img"/>
                                    </div>
                                    <div class="desc_data_list_item_img" v-if="item.type === 1">
                                        <video controls :src="item.url" />
                                    </div>
                                    <div class="desc_data_list_item_img" v-if="item.type === 2">
                                       <i class="el-icon-folder-opened"></i>
                                    </div>
                                    <div class="desc_data_list_item_info">
                                        <span>{{ item.name }}</span>
                                    </div>
                                </div>
                                <upload width="100px" height="100px" :list="[]" accept=".png,.jpg,.jpeg,.mp4,.word,.xlsx,.xls,.pdf,.excel" folder="SETTLE_FILE" @success="claimsUploadFile($event, 1)" />
                            </div>
                        </div>
                        <div class="box_item_list_row" style="width: 100%; margin-bottom: 30px;">
                            <div class="box_item_list_row_title">
                                <div class="x"></div>
                                <span>门诊</span>
                            </div>
                            <div class="box_item_list_row_l">
                                <div class="desc_data_list_item" v-for="(item, index) in ruleForm.outpatientFileList" :key="index">
                                    <div class="desc_data_list_item_dele" @click="delFile(index, 2)">删除</div>
                                    <div class="desc_data_list_item_img" v-if="item.type === 0">
                                        <img :src="item.url" alt="img"/>
                                    </div>
                                    <div class="desc_data_list_item_img" v-if="item.type === 1">
                                        <video controls :src="item.url" />
                                    </div>
                                    <div class="desc_data_list_item_img" v-if="item.type === 2">
                                        <i class="el-icon-folder-opened"></i>
                                    </div>
                                    <div class="desc_data_list_item_info">
                                        <span>{{ item.name }}</span>
                                    </div>
                                </div>
                                <upload width="100px" height="100px" :list="[]" accept=".png,.jpg,.jpeg,.mp4,.word,.xlsx,.xls,.pdf,.excel" folder="SETTLE_FILE" @success="claimsUploadFile($event, 2)" />
                            </div>
                        </div>
                        <div class="box_item_list_row" style="width: 100%; margin-bottom: 30px;">
                            <div class="box_item_list_row_title">
                                <div class="x"></div>
                                <span>住院</span>
                            </div>
                            <div class="box_item_list_row_l">
                                <div class="desc_data_list_item" v-for="(item, index) in ruleForm.hospitalFileList" :key="index">
                                    <div class="desc_data_list_item_dele" @click="delFile(index, 3)">删除</div>
                                    <div class="desc_data_list_item_img" v-if="item.type === 0">
                                        <img :src="item.url" alt="img"/>
                                    </div>
                                    <div class="desc_data_list_item_img" v-if="item.type === 1">
                                        <video controls :src="item.url" />
                                    </div>
                                    <div class="desc_data_list_item_img" v-if="item.type === 2">
                                        <i class="el-icon-folder-opened"></i>
                                    </div>
                                    <div class="desc_data_list_item_info">
                                        <span>{{ item.name }}</span>
                                    </div>
                                </div>
                                <upload width="100px" height="100px" :list="[]" accept=".png,.jpg,.jpeg,.mp4,.word,.xlsx,.xls,.pdf,.excel" folder="SETTLE_FILE" @success="claimsUploadFile($event, 3)" />
                            </div>
                        </div>
                        <div class="box_item_list_row" style="width: 100%; margin-bottom: 30px;">
                            <div class="box_item_list_row_title">
                                <div class="x"></div>
                                <span>伤残</span>
                            </div>
                            <div class="box_item_list_row_l">
                                <div class="desc_data_list_item" v-for="(item, index) in ruleForm.disabilityFileList" :key="index">
                                    <div class="desc_data_list_item_dele" @click="delFile(index, 4)">删除</div>
                                    <div class="desc_data_list_item_img" v-if="item.type === 0">
                                        <img :src="item.url" alt="img"/>
                                    </div>
                                    <div class="desc_data_list_item_img" v-if="item.type === 1">
                                        <video controls :src="item.url" />
                                    </div>
                                    <div class="desc_data_list_item_img" v-if="item.type === 2">
                                        <i class="el-icon-folder-opened"></i>
                                    </div>
                                    <div class="desc_data_list_item_info">
                                        <span>{{ item.name }}</span>
                                    </div>
                                </div>
                                <upload width="100px" height="100px" :list="[]" accept=".png,.jpg,.jpeg,.mp4,.word,.xlsx,.xls,.pdf,.excel" folder="SETTLE_FILE" @success="claimsUploadFile($event, 4)" />
                            </div>
                        </div>
                        <div class="box_item_list_row" style="width: 100%; margin-bottom: 30px;">
                            <div class="box_item_list_row_title">
                                <div class="x"></div>
                                <span>其他</span>
                            </div>
                            <div class="box_item_list_row_l">
                                <div class="desc_data_list_item" v-for="(item, index) in ruleForm.otherFileList" :key="index">
                                    <div class="desc_data_list_item_dele" @click="delFile(index, 5)">删除</div>
                                    <div class="desc_data_list_item_img" v-if="item.type === 0">
                                        <img :src="item.url" alt="img"/>
                                    </div>
                                    <div class="desc_data_list_item_img" v-if="item.type === 1">
                                        <video controls :src="item.url" />
                                    </div>
                                    <div class="desc_data_list_item_img" v-if="item.type === 2">
                                        <i class="el-icon-folder-opened"></i>
                                    </div>
                                    <div class="desc_data_list_item_info">
                                        <span>{{ item.name }}</span>
                                    </div>
                                </div>
                                <upload width="100px" height="100px" :list="[]" accept=".png,.jpg,.jpeg,.mp4,.word,.xlsx,.xls,.pdf,.excel" folder="SETTLE_FILE" @success="claimsUploadFile($event, 5)" />
                            </div>
                        </div>
                    </div>
                </div>
            </el-form>
        </div>
    </GlobalWindow>
</template>
<script>
    import BaseOpera from '@/components/base/BaseOpera'
    import GlobalWindow from '@/components/common/GlobalWindow'
    import upload from '@/components/common/upload'
    import { getCompensation } from '@/api/business/settleRisk'
    import { createSys } from '@/api/business/settleClaims'
    import { findById } from '@/api/business/settleClaimsMovement'
    export default {
        name: 'OpearaCaseEntryWindow',
        extends: BaseOpera,
        components: { GlobalWindow, upload },
        data () {
            return {
                ruleForm: {
                    id: null,
                    extData: {
                        memberName: '',
                        memberIdcardType: '',
                        memberIdcard: '',
                        memberBirthday: '',
                        memberAge: '',
                        memberSex: 0,
                        memberPhone: '',
                        memberAddr: '',
                        bxName: '',
                        bxCode: '',
                        bxDate: [],
                        bxStartdate: '',
                        bxEnddate: '',
                        bxTbName: '',
                        bxBbName: '',
                        bxOrg: '',
                        bxYsMoney: '',
                        bxSsMoney: '',
                        rsAttr: '',
                        rsInfo: '',
                        rsZlStatus: '',
                        rsLossMoney: '',
                        rsJzInfo: '',
                        rsCyDate: '',
                        rsYlOrg: '',
                        rsDeathDate: '',
                        jzHospital: '',
                        jzZyCode: '',
                        jzZyKs: '',
                        jzZyDate: '',
                        jzCyDate: '',
                        jzZyDays: '',
                        zdZlInfo: '',
                        zdSqInfo: '',
                        zdLczd: '',
                        zdSsName: '',
                        zdHxProject: '',
                        zdJwb: '',
                        hzBdhCl: '',
                        hzDutyRate: '',
                        jdInfo: '',
                        jdChannel: '',
                        jdOrg: '',
                        jdUser: '',
                        jdPdDate: '',
                        jdScLevel: '',
                        jdTerms: '',
                        jdXishu: '',
                        jdJsldht: 1,
                        jdZrpctkRel: 0,
                        logoff: 1,
                        logoffUser: '',
                        logoffDate: ''
                    },
                    informantName: '',
                    informantPhone: '',
                    reportNum: '',
                    areaInfo: '',
                    type: 0,
                    hospital: '',
                    inHospital: 1,
                    hurtType: 0,
                    payForYbwyy: 1,
                    relationFileList: [],
                    outpatientFileList: [],
                    hospitalFileList: [],
                    disabilityFileList: [],
                    otherFileList: [],
                    reportFileList: [],
                    accountList: [],
                    dzbdFileList: [],
                    status: '',
                    medicalInsurance: 1,
                    content: '',
                    happenTime: '',
                    createDate: ''
                },
                rules: {
                    'extData.memberName': [
                        { required: true, message: '不能为空', trigger: 'blur' }
                    ],
                    'extData.memberIdcardType': [
                        { required: true, message: '不能为空', trigger: 'blur' }
                    ],
                    'extData.memberIdcard': [
                        { required: true, message: '不能为空', trigger: 'blur' }
                    ],
                    'extData.memberSex': [
                        { required: true, message: '不能为空', trigger: 'blur' }
                    ],
                    'extData.memberPhone': [
                        { required: true, message: '不能为空', trigger: 'blur' }
                    ],
                    'extData.bxName': [
                        { required: true, message: '不能为空', trigger: 'blur' }
                    ],
                    'extData.bxCode': [
                        { required: true, message: '不能为空', trigger: 'blur' }
                    ],
                    'extData.bxDate': [
                        { required: true, message: '不能为空', trigger: 'blur' }
                    ],
                    'extData.bxTbName': [
                        { required: true, message: '不能为空', trigger: 'blur' }
                    ],
                    'extData.bxBbName': [
                        { required: true, message: '不能为空', trigger: 'blur' }
                    ],
                    'extData.bxOrg': [
                        { required: true, message: '不能为空', trigger: 'blur' }
                    ],
                    informantPhone: [
                        { required: true, message: '不能为空', trigger: 'blur' }
                    ]
                },
                uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/upload?folder=SETTLE_FILE',
                totalPrice: 0,
                list1: [],
                list2: [],
                list3: [],
            }
        },
        created () {
            this.config({
                api: '/business/company',
                'field.id': 'id'
            })
        },
        methods: {
            open (title, id) {
                this.title = title
                if (id) {
                    findById(id)
                        .then(res => {
                            console.log(res)
                            this.ruleForm.id = id
                            this.$nextTick(() => {
                                for (const key in this.ruleForm) {
                                    this.ruleForm[key] = res[key]
                                }
                                if (this.ruleForm.accountList && this.ruleForm.accountList.length > 0) {
                                    this.list1 = this.ruleForm.accountList.filter(item => item.type === 0)
                                    this.list2 = this.ruleForm.accountList.filter(item => item.type === 1)
                                    this.list3 = this.ruleForm.accountList.filter(item => item.type === 2)
                                    this.changeFee()
                                }
                                if (res.extData.bxStartdate && res.extData.bxEnddate) {
                                    this.ruleForm.extData.bxDate = [res.extData.bxStartdate, res.extData.bxEnddate]
                                }
                            })
                            this.visible = true
                        })
                } else {
                    this.visible = true
                    this.ruleForm = {
                        id: null,
                        extData: {
                            memberName: '',
                            memberIdcardType: '',
                            memberIdcard: '',
                            memberBirthday: '',
                            memberAge: '',
                            memberSex: 0,
                            memberPhone: '',
                            memberAddr: '',
                            bxName: '',
                            bxCode: '',
                            bxDate: [],
                            bxStartdate: '',
                            bxEnddate: '',
                            bxTbName: '',
                            bxBbName: '',
                            bxOrg: '',
                            bxYsMoney: '',
                            bxSsMoney: '',
                            rsAttr: '',
                            rsInfo: '',
                            rsZlStatus: '',
                            rsLossMoney: '',
                            rsJzInfo: '',
                            rsCyDate: '',
                            rsYlOrg: '',
                            rsDeathDate: '',
                            jzHospital: '',
                            jzZyCode: '',
                            jzZyKs: '',
                            jzZyDate: '',
                            jzCyDate: '',
                            jzZyDays: '',
                            zdZlInfo: '',
                            zdSqInfo: '',
                            zdLczd: '',
                            zdSsName: '',
                            zdHxProject: '',
                            zdJwb: '',
                            hzBdhCl: '',
                            hzDutyRate: '',
                            jdInfo: '',
                            jdChannel: '',
                            jdOrg: '',
                            jdUser: '',
                            jdPdDate: '',
                            jdScLevel: '',
                            jdTerms: '',
                            jdXishu: '',
                            jdJsldht: 1,
                            jdZrpctkRel: 0,
                            logoff: 1,
                            logoffUser: '',
                            logoffDate: ''
                        },
                        informantName: '',
                        informantPhone: '',
                        reportNum: '',
                        areaInfo: '',
                        type: 0,
                        hospital: '',
                        inHospital: 1,
                        hurtType: 0,
                        payForYbwyy: 1,
                        relationFileList: [],
                        outpatientFileList: [],
                        hospitalFileList: [],
                        disabilityFileList: [],
                        otherFileList: [],
                        reportFileList: [],
                        accountList: [],
                        dzbdFileList: [],
                        status: '',
                        medicalInsurance: 1,
                        content: '',
                        happenTime: '',
                        createDate: ''
                    }
                }
                this.getCompensations()
            },
            confirm() {
                this.$refs.ruleForm.validate((valid) => {
                    if (!valid) return
                    this.isWorking = true
                    let obj = JSON.parse(JSON.stringify(this.ruleForm))
                    obj.accountList = [...this.list1, ...this.list2, ...this.list3]
                    createSys(obj)
                        .then(() => {
                            this.visible = false
                            if (!obj.id) {
                                this.$tip.apiSuccess('新建成功')
                            } else {
                                this.$tip.apiSuccess('编辑成功')
                            }
                            this.$emit('success')
                        })
                        .catch(e => {
                            this.$tip.apiFailed(e)
                        })
                        .finally(() => {
                            this.isWorking = false
                        })
                })
            },
            changeFee() {
                let arr = [...this.list1, ...this.list2]
                let price = 0
                arr.forEach(item => {
                    if (item.fee) {
                        price += Number(item.fee)
                    }
                })
                this.totalPrice = price
            },
            delFile (index, type) {
                if (type === 1) {
                    this.ruleForm.relationFileList.splice(index, 1)
                } else if (type === 2) {
                    this.ruleForm.outpatientFileList.splice(index, 1)
                } else if (type === 3) {
                    this.ruleForm.hospitalFileList.splice(index, 1)
                } else if (type === 4) {
                    this.ruleForm.disabilityFileList.splice(index, 1)
                } else if (type === 5) {
                    this.ruleForm.otherFileList.splice(index, 1)
                } else if (type === 6) {
                    this.ruleForm.reportFileList.splice(index, 1)
                } else if (type === 7) {
                    this.ruleForm.dzbdFileList.splice(index, 1)
                }
            },
            claimsUploadFile(file, type) {
                file.fileurl = file.imgaddr
                file.name = file.originname
                if (type === 1) {
                    this.ruleForm.relationFileList.push(file)
                } else if (type === 2) {
                    this.ruleForm.outpatientFileList.push(file)
                } else if (type === 3) {
                    this.ruleForm.hospitalFileList.push(file)
                } else if (type === 4) {
                    this.ruleForm.disabilityFileList.push(file)
                } else if (type === 5) {
                    this.ruleForm.otherFileList.push(file)
                } else if (type === 6) {
                    this.ruleForm.reportFileList.push(file)
                } else if (type === 7) {
                    this.ruleForm.dzbdFileList.push(file)
                }
            },
            changeBxDate(e) {
                if (e.length > 1) {
                    this.ruleForm.extData.bxStartdate = e[0]
                    this.ruleForm.extData.bxEnddate = e[1]
                } else {
                    this.ruleForm.extData.bxStartdate = ''
                    this.ruleForm.extData.bxEnddate = ''
                }
            },
            getCompensations() {
                getCompensation({ type: 1 })
                    .then(res => {
                        console.log(res)
                        this.list1 = res.filter(item => item.type === 0)
                        this.list2 = res.filter(item => item.type === 1)
                        this.list3 = res.filter(item => item.type === 2)
                    })
            }
        }
    }
</script>
<style lang="scss" scoped>
    .box {
        width: 100%;
        .box_item {
            width: 100%;
            margin-bottom: 30px;
            .box_item_title {
                width: 100%;
                margin-bottom: 15px;
                span {
                    color: rgba(16,16,16,1);
                    font-size: 16px;
                    margin-right: 10px;
                }
            }
            .box_item_desc {
                width: 100%;
                padding-left: 50px;
                box-sizing: border-box;
                color: rgba(16,16,16,1);
                font-size: 14px;
                margin-bottom: 15px;
            }
            .price {
                width: 100%;
                height: 62px;
                display: flex;
                align-items: center;
                justify-content: space-between;
                border-radius: 4px;
                background-color: rgba(239,239,239,1);
                margin-top: 50px;
                padding: 0 20px;
                box-sizing: border-box;
                span {
                    &:nth-child(1) {
                        color: rgba(16,16,16,1);
                        font-size: 18px;
                    }
                    &:nth-child(2) {
                        color: rgba(255,149,2,1);
                        font-size: 22px;
                    }
                }
            }
            .button {
                width: 100%;
                display: flex;
                align-items: center;
                justify-content: end;
                margin-top: 15px;
                .button_submit {
                    width: 108px;
                    height: 38px;
                    line-height: 38px;
                    text-align: center;
                    border-radius: 4px;
                    color: rgba(255,255,255,1);
                    font-size: 14px;
                    background-color: rgba(31,99,255,1);
                }
            }
            .box_item_list {
                width: 100%;
                display: flex;
                align-items: center;
                flex-wrap: wrap;
                justify-content: space-between;
                .box_item_list_rowx {
                    width: 33.3%;
                    height: 0;
                }
                .box_item_list_row {
                    width: 33.3%;
                    .box_item_list_row_l {
                        width: 100%;
                        display: flex;
                        align-items: center;
                        flex-wrap: wrap;
                        .desc_data_list_item {
                            width: 100px;
                            height: 100px;
                            padding: 10px;
                            box-sizing: border-box;
                            border: 1px solid #e2e2e2;
                            display: flex;
                            flex-direction: column;
                            align-items: center;
                            justify-content: center;
                            position: relative;
                            margin-bottom: 10px;
                            margin-left: 10px;
                            &:first-child {
                                margin-left: 0 !important;
                            }
                            .desc_data_list_item_dele {
                                position: absolute;
                                top: 5px;
                                right: 5px;
                                font-size: 14px;
                                cursor: pointer;
                                color: rgba(249, 86, 1, 0.996078431372549);
                            }
                            .desc_data_list_item_upload {
                                flex: 1;
                                height: 80px;
                                display: flex;
                                align-items: center;
                                justify-content: center;
                            }
                            .desc_data_list_item_img {
                                flex-shrink: 0;
                                width: 70px;
                                height: 70px;
                                display: flex;
                                align-items: center;
                                justify-content: center;
                                overflow: hidden;
                                margin-right: 10px;
                                .el-icon-folder-opened {
                                    font-size: 34px;
                                    color: #666666;
                                }
                                .el-icon-plus {
                                    font-size: 26px;
                                    color: #ffffff;
                                }
                                img {
                                    width: 100%;
                                }
                                video {
                                    width: 100%;
                                }
                            }
                            .desc_data_list_item_info {
                                width: 100%;
                                display: flex;
                                flex-direction: column;
                                justify-content: space-between;
                                word-break: break-all;
                                span {
                                    width: 100%;
                                    white-space: nowrap;
                                    overflow: hidden;
                                    text-overflow: ellipsis;
                                    font-size: 14px;
                                    color: black;
                                }
                            }
                        }
                    }
                    .box_item_list_row_title {
                        width: 100%;
                        display: flex;
                        align-items: center;
                        margin-bottom: 20px;
                        .x {
                            width: 1px;
                            height: 14px;
                            background-color: rgba(255,255,255,1);
                            border: 4px solid rgba(22,93,255,1);
                            margin-right: 10px;
                        }
                        span {
                            color: rgba(16,16,16,1);
                            font-size: 14px;
                        }
                    }
                }
            }
        }
    }
</style>
company/src/components/business/OperaKnowledgeWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,165 @@
<template>
    <GlobalWindow
        :title="title"
        width="500px"
        :visible.sync="visible"
        :confirm-working="isWorking"
        @confirm="confirm"
    >
        <el-form :model="form" ref="form" :rules="rules">
            <el-form-item label="标题" prop="title">
                <el-input v-model="form.title" placeholder="请输入标题" v-trim/>
            </el-form-item>
            <el-form-item label="标签" prop="labelsArr">
                <div style="width: 100%; display: flex; align-items: center;">
                    <el-select v-model="form.labelsArr" style="width: 100%;" @change="changeLabel" multiple placeholder="请选择">
                        <el-option
                            v-for="item in cateList"
                            :key="item.id"
                            :label="item.name"
                            :value="item.id">
                        </el-option>
                    </el-select>
                    <el-button size="medium" style="margin-left: 15px;" @click="$refs.tagLibrary.open('标签库')">标签库</el-button>
                </div>
            </el-form-item>
            <el-form-item label="地区" prop="area">
                <el-cascader
                    v-model="form.area"
                    :options="area"
                    @change="changeArea"
                    :props="{ label: 'name', children: 'childAreasList', value: 'id' }" />
            </el-form-item>
            <el-form-item label="年份" prop="yearInfo">
                <el-date-picker
                    v-model="form.yearInfo"
                    type="year"
                    value-format="yyyy"
                    placeholder="选择年份">
                </el-date-picker>
            </el-form-item>
            <el-form-item label="网址链接" prop="link">
                <el-input v-model="form.link" placeholder="请输入网址链接" v-trim/>
            </el-form-item>
        </el-form>
        <!--    æ·»åŠ çŸ¥è¯†åº“    -->
        <TagLibrary ref="tagLibrary" @refresh="getLabel(), form.labels = '', form.labelsArr = []" />
    </GlobalWindow>
</template>
<script>
    import BaseOpera from '@/components/base/BaseOpera'
    import GlobalWindow from '@/components/common/GlobalWindow'
    import TagLibrary from '@/components/business/tagLibrary'
    import { findTreeList, list } from '@/api/business/knowledge'
    export default {
        name: 'OperaKnowledgeWindow',
        extends: BaseOpera,
        components: { GlobalWindow, TagLibrary },
        data () {
            return {
                // è¡¨å•数据
                form: {
                    id: null,
                    provinceId: '',
                    cityId: '',
                    title: '',
                    link: '',
                    labels: '',
                    yearInfo: '',
                    area: [],
                    labelsArr: []
                },
                // éªŒè¯è§„则
                rules: {
                    title: [
                        { required: true, message: '请输入内容', trigger: 'blur' }
                    ],
                    link: [
                        { required: true, message: '请输入内容', trigger: 'blur' }
                    ]
                },
                area: [],
                cateList: []
            }
        },
        created () {
            this.config({
                api: '/business/knowledge',
                'field.id': 'id'
            })
        },
        methods: {
            changeLabel(e) {
                this.form.labels = e.join(',')
            },
            changeArea(e) {
                if (e.length === 0) return
                if (e.length === 1) {
                    this.form.provinceId = e[0]
                } else if (e.length === 2) {
                    this.form.provinceId = e[0]
                    this.form.cityId = e[1]
                }
            },
            open (title, target) {
                this.getLabel()
                this.getCityTree()
                this.title = title
                this.visible = true
                // æ–°å»º
                if (target == null) {
                    this.$nextTick(() => {
                        this.$refs.form.resetFields()
                        this.form[this.configData['field.id']] = null
                    })
                    return
                }
                // ç¼–辑
                this.$nextTick(() => {
                    for (const key in this.form) {
                        this.form[key] = target[key]
                    }
                    if (this.form.labels) {
                        this.form.labelsArr = this.form.labels.split(',').map(item => Number(item))
                    }
                    if (this.form.provinceId && this.form.cityId) {
                        this.form.area = [this.form.provinceId, this.form.cityId]
                    } else if (this.form.provinceId && !this.form.cityId) {
                        this.form.area = [this.form.provinceId]
                    }
                })
            },
            async getLabel() {
                this.cateList = await list()
            },
            async getCityTree() {
                this.area = await findTreeList({})
                this.setSecondLevelChildrenToNullPrecise(this.area);
                this.area.forEach(item => {
                    if (item.childAreasList.length === 0) {
                        item.childAreasList = null
                    }
                })
            },
            setSecondLevelChildrenToNullPrecise(data, level = 1) {
                if (!data || !data.length) return;
                data.forEach(item => {
                    if (item.childAreasList && item.childAreasList.length) {
                        if (level === 1) {
                            // è¿™æ˜¯ç¬¬ä¸€çº§èŠ‚ç‚¹ï¼Œå¤„ç†å…¶å­èŠ‚ç‚¹ï¼ˆç¬¬äºŒçº§ï¼‰
                            item.childAreasList.forEach(child => {
                                child.childAreasList = null;
                            });
                        } else {
                            // ç»§ç»­é€’归处理更深层级
                            this.setSecondLevelChildrenToNullPrecise(item.childAreasList, level + 1);
                        }
                    }
                });
            }
        }
    }
</script>
company/src/components/business/OperaSettleClaimsWindow.vue
@@ -2,464 +2,293 @@
    <GlobalWindow
        :title="title"
        width="100%"
        :withFooter="false"
        :visible.sync="visible"
        :confirm-working="isWorking"
        @confirm="confirm"
    >
        <div class="desc" v-loading="loading">
            <div class="desc_label">
                <div class="desc_label_left">
                    <span class="desc_label_left_title">
                        æŠ¥æ¡ˆè¯¦æƒ…
        <div class="box">
            <div class="box_status">
                <div class="box_status_row" v-for="(item, index) in statusList" :key="index">
                    <div v-if="statusList.length - 1 !== index" :class="item.date ? 'box_status_row_xian statusColor2' : 'box_status_row_xian'"></div>
                        <div :class="item.date ? 'box_status_row_icon statusColor1' : statusList[index - 1].date ? 'box_status_row_icon statusColor2 statusColor3' : 'box_status_row_icon'">
                        <span v-if="!item.date">{{index + 1}}</span>
                        <i class="el-icon-check" v-else></i>
                    </div>
                    <div class="box_status_row_info">
                        <div class="title">{{item.name}}</div>
                        <div class="info" v-if="item.info">{{item.info}}</div>
                        <div class="info" v-if="item.date">{{item.date}}</div>
                    </div>
                </div>
            </div>
            <div class="box_desc">
                <div class="box_desc_head">
                    <div class="box_desc_title">
                        <span class="box_desc_title_val">报案详情</span>
                    </div>
                    <div class="box_desc_btns">
                        <el-button type="danger" @click="show = true">退回</el-button>
                        <el-button type="primary">立案</el-button>
                        <el-button icon="el-icon-refresh-left" type="primary" circle></el-button>
                        <div class="box_desc_btns_operate">
                            <i class="el-icon-arrow-down"></i>
                            <span>收起</span>
                        </div>
                    </div>
                </div>
                <div class="box_desc_list">
                    <div class="box_desc_list_row">
                        æŠ¥æ¡ˆæ—¶é—´ï¼š2024-09-12 03:50
                    </div>
                    <div class="box_desc_list_row">
                        æŠ¥æ¡ˆå·ï¼šYYBLP-2025010101
                    </div>
                    <div class="box_desc_list_row">
                        æ‰€å±žä¿å•:2984719842130 <el-button type="text">下载保单</el-button>
                    </div>
                    <div class="box_desc_list_row">
                        æŠ¥æ¡ˆäººï¼šå°¹æ™“凤
                    </div>
                    <div class="box_desc_list_row">
                        æŠ¥æ¡ˆäººè”系方式:15556970338
                    </div>
                    <div class="box_desc_list_row">
                        ä¿å¸æŠ¥æ¡ˆå·ï¼š-
                    </div>
                </div>
            </div>
            <div class="box_fx">
                <div class="box_fx_left">
                    <i class="el-icon-warning"></i>
                    <span class="box_fx_left_a">注意,该案件有5条风险信息</span>
                    <span class="box_fx_left_b">查看详情</span>
                </div>
                <i class="el-icon-close"></i>
            </div>
            <div class="box_desc">
                <div class="box_desc_head">
                    <div class="box_desc_title">
                        <span class="box_desc_title_val">出险人信息</span>
                    </div>
                    <div class="box_desc_btns">
                        <div class="box_desc_btns_operate">
                            <i class="el-icon-arrow-down"></i>
                            <span>收起</span>
                        </div>
                    </div>
                </div>
                <div class="box_desc_list">
                    <div class="box_desc_list_row">
                        å‡ºé™©äººå§“名:李静
                    </div>
                    <div class="box_desc_list_row">
                        å‡ºé™©äººèº«ä»½è¯å·ï¼š340122200603251924
                    </div>
                    <div style="width: 33%; height: 0;"></div>
                </div>
                <div class="box_desc_head">
                    <div class="box_desc_title">
                        <span class="box_desc_title_val">保险方案</span>
                    </div>
                </div>
                <div class="box_desc_f">
                    <div class="box_desc_fa">
                        <div class="box_desc_fa_title">工伤意外险-Bç±»</div>
                        <div class="box_desc_fa_row">保单号:20241225133229</div>
                        <div class="box_desc_fa_row">保障期限:2025-01-01~2025-12-31</div>
                        <div class="box_desc_fa_row">投保单位:XXX信息科技有限公司</div>
                        <div class="box_desc_fa_row">派遣单位:XXX信息科技有限公司</div>
                        <div class="box_desc_fa_row">所属工种:电子器械制造工</div>
                    </div>
                    <div class="box_desc_fa">
                        <div class="box_desc_fa_title">工伤意外险-Bç±»</div>
                        <div class="box_desc_fa_row">保单号:20241225133229</div>
                        <div class="box_desc_fa_row">保障期限:2025-01-01~2025-12-31</div>
                        <div class="box_desc_fa_row">投保单位:XXX信息科技有限公司</div>
                        <div class="box_desc_fa_row">派遣单位:XXX信息科技有限公司</div>
                        <div class="box_desc_fa_row">所属工种:电子器械制造工</div>
                    </div>
                    <div style="width: 32%; height: 0;"></div>
                </div>
                <div class="box_desc_head">
                    <div class="box_desc_title">
                        <span class="box_desc_title_val">出险信息</span>
                    </div>
                </div>
                <div class="box_desc_list">
                    <div class="box_desc_list_row">
                        å‡ºé™©æ—¶é—´ï¼š2024-06-13 07:40:00
                    </div>
                    <div class="box_desc_list_row">
                        å°±è¯ŠåŒ»ç–—机构:合肥第二人民医院
                    </div>
                    <div class="box_desc_list_row">
                        å‡ºçŽ°åœ°åŒºï¼šå®‰å¾½çœåˆè‚¥å¸‚è‚¥ä¸œåŽ¿
                    </div>
                    <div class="box_desc_list_row" style="width: 100%;">
                        å‡ºé™©ç»è¿‡ï¼šä¸Šç­æ—¶é—´éª‘车被撞。头部遭到撞击CT还没出来, è„šè¸è¿˜æœ‰å·¦è¾¹å¤§è…¿å¤–侧严重擦伤。
                    </div>
                    <div class="box_desc_list_row">
                        äº‹æ•…类型:上下班途中受伤
                    </div>
                    <div class="box_desc_list_row">
                        æ˜¯å¦ä½é™¢ï¼šæ˜¯
                    </div>
                    <div class="box_desc_list_row">
                        æ˜¯å¦æœ‰åŒ»ç–—保险:是
                    </div>
                    <div class="box_desc_list_row" style="width: 100%;">
                        å°±è¯Šç±»åž‹ï¼šä½é™¢
                    </div>
                    <div class="box_desc_list_img">
                        <span>事故视频/照片:</span>
                        <div class="box_desc_list_img_files">
                            <div class="box_desc_list_img_files_row">
                                <img src="" alt="" />
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="box_desc">
                <div class="box_desc_head">
                    <div class="box_desc_title">
                        <span class="box_desc_title_val">理赔材料</span>
                    </div>
                    <div class="box_desc_btns">
                        <div class="box_desc_btns_operate">
                            <i class="el-icon-arrow-down"></i>
                            <span>收起</span>
                        </div>
                    </div>
                </div>
                <div class="box_desc_cailiao">
                    <div class="box_desc_cailiao_title">
                        <div class="box_desc_cailiao_title_x"></div>
                        <span>员工关系证明材料</span>
                    </div>
                    <div class="box_desc_cailiao_list">
                        <div class="box_desc_cailiao_list_img" v-for="(item, index) in 3" :key="index">
                            <img src="" alt="" />
                        </div>
                    </div>
                </div>
                <div class="box_desc_cailiao">
                    <div class="box_desc_cailiao_title">
                        <div class="box_desc_cailiao_title_x"></div>
                        <span>门诊</span>
                    </div>
                    <div class="box_desc_cailiao_list">
                        <div class="box_desc_cailiao_list_img" v-for="(item, index) in 3" :key="index">
                            <img src="" alt="" />
                        </div>
                    </div>
                </div>
                <div class="box_desc_cailiao">
                    <div class="box_desc_cailiao_title">
                        <div class="box_desc_cailiao_title_x"></div>
                        <span>住院</span>
                    </div>
                    <div class="box_desc_cailiao_list">
                        <div class="box_desc_cailiao_list_img" v-for="(item, index) in 3" :key="index">
                            <img src="" alt="" />
                        </div>
                    </div>
                </div>
                <div class="box_desc_cailiao">
                    <div class="box_desc_cailiao_title">
                        <div class="box_desc_cailiao_title_x"></div>
                        <span>伤残</span>
                    </div>
                    <div class="box_desc_cailiao_list">
                        <div class="box_desc_cailiao_list_img" v-for="(item, index) in 3" :key="index">
                            <img src="" alt="" />
                        </div>
                    </div>
                </div>
                <div class="box_desc_cailiao">
                    <div class="box_desc_cailiao_title">
                        <div class="box_desc_cailiao_title_x"></div>
                        <span>其他材料</span>
                    </div>
                    <div class="box_desc_cailiao_list">
                        <div class="box_desc_cailiao_list_img" v-for="(item, index) in 3" :key="index">
                            <img src="" alt="" />
                        </div>
                    </div>
                </div>
                <div class="box_desc_cailiao">
                    <div class="box_desc_cailiao_title">
                        <div class="box_desc_cailiao_title_x"></div>
                        <span>补充材料</span>
                    </div>
                    <div class="box_desc_cailiao_list">
                        <div class="box_desc_cailiao_list_img" v-for="(item, index) in 3" :key="index">
                            <img src="" alt="" />
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <!--    é€€å›ž    -->
        <el-dialog
            title="退回"
            :visible.sync="show"
            width="500px">
            <span>这是一段信息</span>
            <span slot="footer" class="dialog-footer">
                <el-button @click="show = false">取消</el-button>
                <el-button type="primary" @click="show = false">确定退回</el-button>
                    </span>
                    <span class="desc_label_left_time" :style="contrast(model.createDate, model.baoxianEndTime) ? 'color: rgba(249, 86, 1, 0.996)' : 'color: black'">
                        æŠ¥æ¡ˆæ—¥æœŸï¼š{{ model.createDate }}
                    </span>
                    <span class="desc_label_left_code">
                        æŠ¥æ¡ˆå·ï¼š{{ model.reportNum || '-' }}
                    </span>
                    <span class="desc_label_left_code">
                      çŠ¶æ€ï¼š
                      <span  :class="'settle-status'+model.status" v-if="model.status==0 || model.status==2|| model.status==3">处理中 </span>
                      <span  :class="'settle-status'+model.status" v-if="model.status==1">已撤案 </span>
                      <span  :class="'settle-status'+model.status" v-if="model.status==4">已结案 </span>
                    </span>
                </div>
                <div class="desc_label_right">
                    <template v-if="userInfo.type === 0">
                        <el-button type="primary" v-if="model.status !=1 && model.status !=4" @click="$refs.operaInsuranceApplyCheckWindow.open('添加报案号',model,remarkLogList,1)">添加报案号</el-button>
                        <el-button type="primary" v-if="model.status !=1 && model.status !=4"  @click="$refs.operaInsuranceApplyCheckWindow.open('理赔处理',model,remarkLogList,2)">理赔处理</el-button>
                        <el-button type="primary" v-if="model.status !=1 && model.status !=4"  @click="$refs.operaInsuranceApplyCheckWindow.open('结案提交',model,remarkLogList,4)">结案提交</el-button>
                        <el-button type="danger" v-if="model.status !=1 && model.status !=4" @click="$refs.operaInsuranceApplyCheckWindow.open('撤销申请',model,remarkLogList,3)">撤销申请</el-button>
                    </template>
                    <template v-else>
                        <el-button type="primary" @click="edit" v-if="model.status === 0 || model.status === 2 || model.status === 3">修改信息</el-button>
                        <el-button type="primary" @click="$refs.supplementaryExplanation.open('补充说明', model.id)" v-if="model.status === 0 || model.status === 2 || model.status === 3">补充说明</el-button>
                    </template>
                </div>
            </div>
            <div class="desc_list">
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        å‡ºé™©äººå§“名:
                    </div>
                    <div class="desc_list_item_val">
                      {{model.memberName}}
                    </div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        å‡ºé™©äººèº«ä»½è¯å·ï¼š
                    </div>
                    <div class="desc_list_item_val">
                      {{ model.memberIdcardNo }}
                    </div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label" >
                        äº‹æ•…发生时间:
                    </div>
                    <div class="desc_list_item_val" :style="contrast24(model.baoxianStartTime, model.happenTime) ? 'color: rgba(249, 86, 1, 0.996)' : 'color: black'">
                      {{ model.happenTime }}
                    </div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        æ‰€å±žä¿å•号:
                    </div>
                    <div class="desc_list_item_val" style="cursor: pointer; color: rgba(39, 157, 255, 0.968627450980392);" @click="$refs.OperaInsuranceApplyDetails.open('投保详情', { id: model.insuranceApplyId })">
                      {{ model.applyCode || '-' }}
                        <el-button v-if="model.baoxiandanFile && model.baoxiandanFile.fileurlFull" type="primary" style="margin-left: 10px;" @click.stop="openBaoxiandan">查看保险单</el-button>
                    </div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        ä¿é™©ç”Ÿæ•ˆèµ·æœŸï¼š
                    </div>
                    <div class="desc_list_item_val">
                      {{ model.baoxianStartTime }}
                    </div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        ä¿é™©ç”Ÿæ•ˆæ­¢æœŸï¼š
                    </div>
                    <div class="desc_list_item_val">
                      {{ model.baoxianEndTime }}
                    </div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        æ´¾é£å•位:
                    </div>
                    <div class="desc_list_item_val">
                      {{ model.duName }}
                    </div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        æ‰€å±žå·¥ç§ï¼š
                    </div>
                    <div class="desc_list_item_val">
                      {{ model.worktypeName }}
                    </div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        å°±è¯ŠåŒ»ç–—机构:
                    </div>
                    <div class="desc_list_item_val">
                      {{ model.hospital }}
                    </div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        äº‹æ•…类型:
                    </div>
                    <div class="desc_list_item_val"  v-if="model.type ===1">上下班途中受伤</div>
                    <div class="desc_list_item_val" v-else-if="model.type ===2">非工作时间受伤</div>
                    <div class="desc_list_item_val"  v-else-if="model.type ===3">意外受伤</div>
                    <div class="desc_list_item_val"  v-else>工作期间受伤</div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        æ˜¯å¦ä½é™¢ï¼š
                    </div>
                    <div class="desc_list_item_val">
                        <div class="desc_list_item_val"  v-if="model.inHospital === 0">是</div>
                        <div class="desc_list_item_val"  v-else>否</div>
                    </div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        æ˜¯å¦æœ‰åŒ»ç–—保险:
                    </div>
                    <div class="desc_list_item_val">{{ model.medicalInsurance ===0?"是":"否" }}</div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        å‡ºé™©åœ°åŒºï¼š
                    </div>
                    <div class="desc_list_item_val">
                      {{model.areaInfo}}
                    </div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        æŠ¥æ¡ˆäººå§“名:
                    </div>
                    <div class="desc_list_item_val">
                      {{model.informantName}}
                    </div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label"> æŠ¥æ¡ˆäººè”系方式:  </div>
                    <div class="desc_list_item_val">  {{model.informantPhone}} </div>
                </div>
                <div class="desc_list_item" style="width: 100%;">
                    <div class="desc_list_item_label"> è¢«ä¿é™©äººï¼š </div>
                    <div class="desc_list_item_val">{{model.companyName}}</div>
                </div>
                <div class="desc_list_item" style="width: 100%;">
                    <div class="desc_list_item_label"> äº‹æ•…描述: </div>
                    <div class="desc_list_item_val">{{model.content}}</div>
                </div>
                <div class="desc_list_item" style="width: 100%;">
                    <div class="desc_list_item_label">
                        æŠ¥æ¡ˆè§†é¢‘:
                    </div>
                    <div class="desc_list_item_videos" v-if="model.reportFileList && model.reportFileList.length > 0">
                        <div class="desc_list_item_imgs_video" v-for="(item, index) in model.reportFileList" :key="index">
                            <img :src="item.fileurlFull" v-if="item.type === 0" />
                            <video controls :src="item.fileurlFull" v-if="item.type === 1"></video>
                        </div>
                    </div>
                    <div v-else class="desc_list_item_videos">-</div>
                </div>
            </div>
            <div class="desc_xian"></div>
            <div class="desc_label">
                <div class="desc_label_left">
                    <span class="desc_label_left_title">
                        ç†èµ”资料
                    </span>
                    <span v-if="model.finishDate!=null" class="desc_label_left_time" style="color: black">
                        èµ„料完成日期:{{model.finishDate}}
                    </span>
                </div>
                <div class="desc_label_right">
                    <template v-if="userInfo.type === 0">
                        <el-button type="primary"  v-if="model.status !=1 && model.status !=4"  @click="$refs.operaInsuranceApplyCheckWindow.open('备注标签',model,remarkLogList,5)">备注标签</el-button>
                        <el-button type="primary"  v-if="model.status !=1 && model.status !=4" @click="submit(0)">资料确认</el-button>
                    </template>
                    <el-button type="primary"  @click="submit(1)">资料下载</el-button>
                </div>
            </div>
            <div class="desc_data">
                <div class="desc_data_label">1. å‘˜å·¥å…³ç³»è¯æ˜Žèµ„æ–™</div>
                <div class="desc_data_list">
                    <template v-if="model.relationFileList && model.relationFileList.length > 0">
                      <div class="desc_data_list_item" v-for="(item, index) in model.relationFileList" :key="index">
                        <div class="desc_data_list_item_dele" @click="delFile(item.id)">删除</div>
                        <div class="desc_data_list_item_img" v-if="item.type == 0 && item.fileurlFull != null">
                          <img :src="item.fileurlFull" />
                        </div>
                        <div class="desc_data_list_item_img" v-if="item.type == 1 && item.fileurlFull != null">
                            <video controls :src="item.fileurlFull" />
                        </div>
                        <div class="desc_data_list_item_info">
                          <span>{{ item.name }}</span>
                          <span>操作员-{{ item.creatorName }}</span>
                          <span>{{ item.createDate }}</span>
                        </div>
                      </div>
                    </template>
                  <template   v-if="(model.relationFileList==null|| model.relationFileList.length==0) && (model.status ==1 || model.status ==4)">
                    <span style="height: 40px; width:100%;text-align:center;color: #8c939d;font-size: 12px">暂无相关材料</span>
                  </template>
                    <upload v-if="model.status !=1 && model.status !=4" width="100px" height="100px" :list="[]" accept=".png,.jpg,.jpeg,.mp4,.word,.xlsx,.xls,.pdf,.excel" folder="settle" @loading="loading = true" @success="claimsUploadFile($event, 2)" />
<!--                    <div class="desc_data_list_item">-->
<!--                      <UploadFileCommon :uploadData="{ folder: 'settle' }" />-->
<!--                      <div class="desc_data_list_item_upload">-->
<!--                            <el-button type="primary">上传</el-button>-->
<!--                            <el-button>取消</el-button>-->
<!--                        </div>-->
<!--                    </div>-->
<!--                    <div class="desc_data_list_item1"></div>-->
<!--                    <div class="desc_data_list_item1"></div>-->
                </div>
            </div>
            <div class="desc_data">
                <div class="desc_data_label">2. åŒ»ç–—资料</div>
                <div class="desc_data_cate">
                    <el-tabs v-model="activeName" @tab-click="handleClick">
                        <el-tab-pane label="门诊" name="first"></el-tab-pane>
                        <el-tab-pane label="住院资料" name="second"></el-tab-pane>
                        <el-tab-pane label="伤残" name="third"></el-tab-pane>
                    </el-tabs>
                </div>
                <div class="desc_data_list" v-if="activeName === 'first'">
                  <template v-if="model.outpatientFileList && model.outpatientFileList">
                    <div class="desc_data_list_item" v-for="(item, index) in model.outpatientFileList" :key="index">
                      <div class="desc_data_list_item_dele" @click="delFile(item.id)">删除</div>
                        <div class="desc_data_list_item_img" v-if="item.type == 0 && item.fileurlFull != null">
                            <img :src="item.fileurlFull" />
                        </div>
                        <div class="desc_data_list_item_img" v-if="item.type == 1 && item.fileurlFull != null">
                            <video controls :src="item.fileurlFull" />
                        </div>
                      <div class="desc_data_list_item_info">
                        <span>{{ item.name }}</span>
                        <span>操作员-{{ item.creatorName }}</span>
                        <span>{{ item.createDate }}</span>
                      </div>
                    </div>
                  </template>
                  <template   v-if="(model.outpatientFileList==null|| model.outpatientFileList.length==0) && (model.status ==2 || model.status ==4)">
                    <span style="height: 40px; width:100%;text-align:center;color: #8c939d;font-size: 12px">暂无相关材料</span>
                  </template>
                    <upload v-if="model.status !=1 && model.status !=4" width="100px" height="100px" :list="[]" accept=".png,.jpg,.jpeg,.mp4,.word,.xlsx,.xls,.pdf,.excel" folder="settle" @loading="loading = true" @success="claimsUploadFile($event, 3)" />
<!--                    <div class="desc_data_list_item">-->
<!--                        <div class="desc_data_list_item_img" style="cursor: pointer; background: #8c939d;">-->
<!--                            <i class="el-icon-plus"></i>-->
<!--                        </div>-->
<!--                        <div class="desc_data_list_item_upload">-->
<!--                            <el-button type="primary">上传</el-button>-->
<!--                            <el-button>取消</el-button>-->
<!--                        </div>-->
<!--                    </div>-->
<!--                    <div class="desc_data_list_item1"></div>-->
<!--                    <div class="desc_data_list_item1"></div>-->
                </div>
                <div class="desc_data_list" v-else-if="activeName === 'second'">
                  <template v-if="model.hospitalFileList && model.hospitalFileList">
                    <div class="desc_data_list_item" v-for="(item, index) in model.hospitalFileList" :key="index">
                      <div class="desc_data_list_item_dele" @click="delFile(item.id)">删除</div>
                        <div class="desc_data_list_item_img" v-if="item.type == 0 && item.fileurlFull != null">
                            <img :src="item.fileurlFull" />
                        </div>
                        <div class="desc_data_list_item_img" v-if="item.type == 1 && item.fileurlFull != null">
                            <video controls :src="item.fileurlFull" />
                        </div>
                      <div class="desc_data_list_item_info">
                        <span>{{ item.name }}</span>
                        <span>操作员-{{ item.creatorName }}</span>
                        <span>{{ item.createDate }}</span>
                      </div>
                    </div>
                  </template>
                  <template   v-if="(model.hospitalFileList==null|| model.hospitalFileList.length==0) && (model.status ==2 || model.status ==4)">
                    <span style="height: 40px; width:100%;text-align:center;color: #8c939d;font-size: 12px">暂无相关材料</span>
                  </template>
                    <upload v-if="model.status !=1 && model.status !=4" width="100px" height="100px" :list="[]" accept=".png,.jpg,.jpeg,.mp4,.word,.xlsx,.xls,.pdf,.excel" folder="settle" @loading="loading = true" @success="claimsUploadFile($event, 4)" />
<!--                    <div class="desc_data_list_item">-->
<!--                        <div class="desc_data_list_item_img" style="cursor: pointer; background: #8c939d;">-->
<!--                            <i class="el-icon-plus"></i>-->
<!--                        </div>-->
<!--                        <div class="desc_data_list_item_upload">-->
<!--                            <el-button type="primary">上传</el-button>-->
<!--                            <el-button>取消</el-button>-->
<!--                        </div>-->
<!--                    </div>-->
<!--                    <div class="desc_data_list_item1"></div>-->
<!--                    <div class="desc_data_list_item1"></div>-->
                </div>
                <div class="desc_data_list" v-else-if="activeName === 'third'">
                  <template v-if="model.disabilityFileList && model.disabilityFileList">
                    <div class="desc_data_list_item" v-for="(item, index) in model.disabilityFileList" :key="index">
                      <div class="desc_data_list_item_dele" @click="delFile(item.id)">删除</div>
                        <div class="desc_data_list_item_img" v-if="item.type == 0 && item.fileurlFull != null">
                            <img :src="item.fileurlFull" />
                        </div>
                        <div class="desc_data_list_item_img" v-if="item.type == 1 && item.fileurlFull != null">
                            <video controls :src="item.fileurlFull" />
                        </div>
                      <div class="desc_data_list_item_info">
                        <span>{{ item.name }}</span>
                        <span>操作员-{{ item.creatorName }}</span>
                        <span>{{ item.createDate }}</span>
                      </div>
                    </div>
                  </template>
                  <template   v-if="(model.disabilityFileList==null|| model.disabilityFileList.length==0) && (model.status ==2 || model.status ==4)">
                    <span style=" height: 40px;width:100%;text-align:center;color: #8c939d;font-size: 12px">暂无相关材料</span>
                  </template>
                    <upload  v-if="model.status !=1 && model.status !=4" width="100px" height="100px" :list="[]" accept=".png,.jpg,.jpeg,.mp4,.word,.xlsx,.xls,.pdf,.excel" folder="settle" @loading="loading = true" @success="claimsUploadFile($event, 5)" />
<!--                    <div class="desc_data_list_item">-->
<!--                      <UploadFileCommon :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileList="form.fileList1" @uploadSuccess="baoxianFileUploaded" />-->
<!--&lt;!&ndash;                      <div class="desc_data_list_item_img" style="cursor: pointer; background: #8c939d;">-->
<!--                            <i class="el-icon-plus"></i>-->
<!--                        </div>&ndash;&gt;-->
<!--                        <div class="desc_data_list_item_upload">-->
<!--                            <el-button type="primary">上传</el-button>-->
<!--                            <el-button>取消</el-button>-->
<!--                        </div>-->
<!--                    </div>-->
<!--                    <div class="desc_data_list_item1"></div>-->
<!--                    <div class="desc_data_list_item1"></div>-->
                </div>
            </div>
            <div class="desc_data">
                <div class="desc_data_label">3. èµ”付结案资料</div>
                <div class="desc_data_list">
                  <template v-if="model.compensationFileList && model.compensationFileList">
                    <div class="desc_data_list_item" v-for="(item, index) in model.compensationFileList" :key="index">
                      <div class="desc_data_list_item_dele" @click="delFile(item.id)">删除</div>
                        <div class="desc_data_list_item_img" v-if="item.type == 0 && item.fileurlFull != null">
                            <img :src="item.fileurlFull" />
                        </div>
                        <div class="desc_data_list_item_img" v-if="item.type == 1 && item.fileurlFull != null">
                            <video controls :src="item.fileurlFull" />
                        </div>
                      <div class="desc_data_list_item_info">
                        <span>{{ item.name }}</span>
                        <span>操作员-{{ item.creatorName }}</span>
                        <span>{{ item.createDate }}</span>
                      </div>
                    </div>
                  </template>
                  <template   v-if="(model.compensationFileList==null|| model.compensationFileList.length==0) && (model.status ==2 || model.status ==4)">
                    <span style=" height: 40px;width:100%;text-align:center;color: #8c939d;font-size: 12px">暂无相关材料</span>
                  </template>
                    <upload v-if="model.status !=1 && model.status !=4" width="100px" height="100px" :list="[]" accept=".png,.jpg,.jpeg,.mp4,.word,.xlsx,.xls,.pdf,.excel" folder="settle" @loading="loading = true" @success="claimsUploadFile($event, 6)" />
<!--                    <div class="desc_data_list_item">-->
<!--                        <div class="desc_data_list_item_img" style="cursor: pointer; background: #8c939d;">-->
<!--                            <i class="el-icon-plus"></i>-->
<!--                        </div>-->
<!--                        <div class="desc_data_list_item_upload">-->
<!--                            <el-button type="primary">上传</el-button>-->
<!--                            <el-button>取消</el-button>-->
<!--                        </div>-->
<!--                    </div>-->
<!--                    <div class="desc_data_list_item1"></div>-->
<!--                    <div class="desc_data_list_item1"></div>-->
                </div>
            </div>
            <div class="desc_label">
                <div class="desc_label_left">
                    <span class="desc_label_left_title">
                        æ¡ˆä»¶è¿›åº¦
                    </span>
                </div>
            </div>
            <div class="desc_times">
                <el-timeline :reverse="reverse">
                    <el-timeline-item
                        v-for="(activity, index) in activeLogList"
                        :key="index"
                        :timestamp="activity.timestamp">
                      <div style="display: flex;  flex-direction: column;" v-if="activity.objType==3">
                                <span style="font-size: 16px; font-weight: bold; color: #0d5ada;">
                                    {{activity.title}}
                                      <span style="font-size: 16px; font-weight: bold; color: #0d5ada; margin-left: 10px;" >
                                      <span v-if=" model.ylClaimAccount &&  model.ylClaimAccount>0">医疗理赔{{ model.ylClaimAccount }}元;</span>
                                      <span v-if=" model.wgClaimAccount &&  model.wgClaimAccount>0">误工理赔{{ model.wgClaimAccount }}元;</span>
                                      <span v-if=" model.scClaimAccount &&  model.scClaimAccount>0">伤残理赔{{ model.scClaimAccount }}元;</span>
                                      <span v-if=" model.swClaimAccount &&  model.swClaimAccount>0">死亡理赔{{ model.swClaimAccount }}元;</span>
                                      ç†èµ”总额:{{ model.claimAccount }}元
                                    </span>
                                </span>
                                 <span style="margin-top: 5px; font-size: 12px; font-weight: 400; color: #999999;">
                                        {{activity.content}}
                                 </span>
                                 <span style="margin-top: 5px; font-size: 12px; font-weight: 400; color: #999999;">
                                    æ“ä½œå‘˜-{{activity.creatorName}}({{(activity.creatorType == 1||activity.creatorType == 2)? activity.companyName: "平台端"}}){{activity.createDate}}
                                </span>
                      </div>
                      <div style="display: flex; flex-direction: column;" v-else>
                                <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.creatorType == 2)? activity.companyName: "平台端"}}){{activity.createDate}}
                                </span>
                      </div>
                    </el-timeline-item>
                </el-timeline>
            </div>
        </div>
      <template v-slot:footer>
        <el-button @click="visible=false">返回</el-button>
      </template>
      <OperaSettleClaimsCheckWindow ref="operaInsuranceApplyCheckWindow"  @success="callback" />
        <!--    åœ¨çº¿æŠ¥æ¡ˆ    -->
        <onlineReporting ref="onlineReporting" @success="callback" />
        <!--    è¡¥å……说明    -->
        <supplementaryExplanation ref="supplementaryExplanation" @success="callback" />
        <!--    æŠ•保详情    -->
        <OperaInsuranceApplyDetails ref="OperaInsuranceApplyDetails" @success="callback" />
        </el-dialog>
    </GlobalWindow>
</template>
<script>
import UploadFileCommon from '@/components/common/UploadFileCommon'
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import OperaSettleClaimsCheckWindow from '@/components/business/OperaSettleClaimsCheckWindow'
import onlineReporting from '@/components/enterprise/onlineReporting'
import supplementaryExplanation from '@/components/enterprise/supplementaryExplanation'
import OperaInsuranceApplyDetails from '@/components/business/OperaInsuranceApplyWindow'
import upload from '@/components/common/upload'
import { confirmFile, findById, exportFiles, claimsUploadFile, delFile } from '@/api/business/settleClaims'
import { mapState } from 'vuex'
export default {
  name: 'OperaSettleClaimsWindow',
  extends: BaseOpera,
  components: { GlobalWindow, OperaSettleClaimsCheckWindow, OperaInsuranceApplyDetails, UploadFileCommon, onlineReporting, supplementaryExplanation, upload },
  components: { GlobalWindow },
  data () {
    return {
      loading: false,
      doneFileDate: null,
      remarkLogList: [],
      activeLogList:[],
      list: [],
      model: {},
      activeName: 'first',
      reverse: false
        show: false,
        statusList: [
            {
                name: '报案',
                info: '已报案',
                date: '2025-03-03 12:31'
            },
            {
                name: '立案',
                info: '待立案',
                date: ''
            },
            {
                name: '受理',
                info: '',
                date: ''
            },
            {
                name: '理算',
                info: '',
                date: ''
            },
            {
                name: '核赔',
                info: '',
                date: ''
            },
            {
                name: '结案',
                info: '',
                date: ''
            }
        ]
    }
  },
  computed: {
@@ -472,403 +301,294 @@
    })
  },
  methods: {
    open (title, target) {
      this.model = {}
      this.model = target
      this.title = title
      this.visible = true
      this.doneFileDate = null
      this.remarkLogList = []
      this.activeLogList = []
      this.getDetail()
    },
    // åˆ¤æ–­ä¸¤ä¸ªæ—¶é—´ä¹‹é—´ç›¸å·®æ˜¯å¦
    contrast24 (time1, time2) {
      console.log(time1)
      console.log(time2)
      if (time1 && time2) {
        const a = new Date(time1)
        const b = new Date(time2)
        const timeDiff = Math.abs(a.getTime() - b.getTime())
        console.log(Math.ceil(timeDiff / (3600 * 1000)))
        return Math.ceil(timeDiff / (3600 * 1000)) <= 24
      } else {
        return false
      }
    },
    contrast (time1, time2) {
      if (time1 && time2) {
        const a = new Date(time1).getTime()
        const b = new Date(time2).getTime()
        return a > b
      } else {
        return false
      }
    },
    edit () {
      const obj = JSON.parse(JSON.stringify(this.model))
      obj.areaId = obj.areaId.split(',').map(item => Number(item))
      this.$refs.onlineReporting.open('修改信息', obj)
    },
    openBaoxiandan () {
      window.open(this.model.baoxiandanFile.fileurlFull)
    },
    delFile (id) {
      this.$dialog.messageConfirm('确认删除该附件吗,一旦删除无法撤回?')
        .then(() => {
          delFile(this.model.id, id).then(response => {
            this.getDetail()
          }).catch(err => {
            this.$tip.apiFailed(err)
          })
        })
    },
    getDetail () {
      findById(this.model.id)
        .then(res => {
          this.model = res
          this.remarkLogList = []
          this.activeLogList =[]
          var logList = this.model.settleClaimsLogList
          if (logList) {
            logList.forEach(item => {
              if (item.objType == 2) {
                this.doneFileDate = item.createDate
              }
              if (item.objType == 7) {
                this.remarkLogList.push(item)
              } else {
                this.activeLogList.push(item)
              }
            })
          }
        }).catch(err => {
        })
    },
    handleClick (tab) {
      this.activeName = tab.name
    },
    callback () {
      this.getDetail()
      this.$emit('success')
    },
    claimsUploadFile (e, objType) {
      claimsUploadFile({
        id: this.model.id,
        objType,
        fileUrl: e.imgaddr,
        fileName: e.originname,
        fileType: e.type
      }).then(response => {
        this.getDetail()
      }).catch(err => {
        this.$tip.apiFailed(err)
      }).finally(() => {
        this.loading = false
      })
    },
    submit (type) {
      var that = this
      if (type == 0) {
        this.$dialog.messageConfirm('理赔材料收集完成,请及时提交保险公司!')
          .then(() => {
            // this.isWorking = true
            confirmFile({ id: that.model.id })
              .then(response => {
                that.getDetail()
              }).catch(err => {
                this.$tip.apiFailed(err)
              })
          })
      } else if (type == 1) {
        // èµ„料下载
        this.$dialog.exportConfirm('确认进行资料下载吗?')
          .then(() => {
            this.isWorking = true
            exportFiles({ id: that.model.id })
              .then(response => {
                this.download(response)
              }).catch(err => {
                console.log(err)
                this.$message.error('下载资料失败,请确认资料数据不为空')
              }).finally(() => {
                this.isWorking = false
              })
          })
          .catch(() => {
          })
      }
    }
  }
}
</script>
<style>
    .v-modal {
        z-index: 2000 !important;
    }
</style>
<style lang="scss" scoped>
    .form {
    .box {
        width: 100%;
        display: flex;
        align-items: center;
        flex-direction: column;
        .form_span {
        .box_status {
            width: 100%;
            padding: 30px 0;
            box-sizing: border-box;
            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: start;
            margin-bottom: 20px;
            &:last-child {
                margin: 0 !important;
            }
            .form_item_label {
                flex-shrink: 0;
                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: 100%;
                    outline: none;
                    border-radius: 5px;
                    border: 1px solid #cbcbcb;
                    padding: 0 20px;
                    box-sizing: border-box;
                }
            }
        }
    }
    .desc {
        width: 100%;
        display: flex;
        align-items: center;
        flex-direction: column;
        .desc_label {
            width: 100%;
            display: flex;
            align-items: center;
            justify-content: space-between;
            .desc_label_left {
                flex: 1;
                display: flex;
                align-items: center;
                .desc_label_left_title {
                    font-size: 20px;
                    font-weight: bold;
                    color: black;
                }
                .desc_label_left_time {
                    font-size: 14px;
                    color: black;
                    /*color: rgba(249, 86, 1, 0.996);*/
                    margin-left: 10px;
                }
                .desc_label_left_code {
                    font-size: 15px;
                    color: black;
                    margin-left: 30px;
                }
            }
            .desc_label_right {
                flex-shrink: 0;
            }
        }
        .desc_list {
            width: 100%;
            margin-top: 20px;
            display: flex;
            align-items: center;
            flex-wrap: wrap;
            .desc_list_item {
                width: 33.3%;
                display: flex;
                align-items: center;
                margin-bottom: 10px;
                .desc_list_item_label {
                    width: 130px;
                    flex-shrink: 0;
                    font-size: 15px;
                    color: black;
                }
                .desc_list_item_val {
                    flex: 1;
                    font-size: 15px;
                    color: black;
                }
                .desc_list_item_videos {
                    flex: 1;
                    display: flex;
                    align-items: center;
                    flex-wrap: wrap;
                    .desc_list_item_imgs_video {
                        width: 120px;
                        height: 120px;
                        background: black;
                        margin-right: 10px;
                        display: flex;
                        align-items: center;
                        justify-content: center;
                        overflow: hidden;
                        video {
                            width: 100%;
                            height: 100%;
                        }
                        img {
                            width: 100%;
                        }
                    }
                }
            }
        }
        .desc_xian {
            width: 100%;
            height: 1px;
            margin: 10px 0;
            background: #ececec;
        }
        .desc_data {
            width: 100%;
            margin-bottom: 30px;
            .box_status_row {
                width: 200px;
            display: flex;
            flex-direction: column;
            margin-top: 20px;
            .desc_data_label {
                font-size: 16px;
                color: black;
                font-weight: 600;
                margin-bottom: 20px;
            }
            .desc_data_cate {
                width: 100%;
                margin: 0 0 10px 0;
            }
            .desc_data_list {
                width: 100%;
                display: flex;
                align-items: center;
                flex-wrap: wrap;
                .desc_data_list_item1 {
                    width: 24.5%;
                }
                .desc_data_list_item {
                    width: 24.5%;
                    padding: 10px;
                    box-sizing: border-box;
                    border: 1px solid #e2e2e2;
                    display: flex;
                    align-items: center;
                    justify-content: space-between;
                align-items: start;
                    position: relative;
                    margin-bottom: 10px;
                    margin-right: 20px;
                    &:last-child {
                        margin-right: 0 !important;
                    }
                    .desc_data_list_item_dele {
                .box_status_row_xian {
                        position: absolute;
                    right: 30px;
                        top: 10px;
                        right: 10px;
                        font-size: 14px;
                        cursor: pointer;
                        color: rgba(249, 86, 1, 0.996078431372549);
                    width: calc(100% - 110px);
                    height: 1px;
                    background-color: #BEBEBE;
                    }
                    .desc_data_list_item_upload {
                        flex: 1;
                        height: 80px;
                .statusColor1 {
                    background-color: #E8F4FF !important;
                }
                .statusColor2 {
                    background-color: #165DFF !important;
                }
                .statusColor3 {
                    span {
                        color: #ffffff !important;
                    }
                }
                .box_status_row_icon {
                    width: 28px;
                    height: 28px;
                    background-color: rgba(242,243,245,1);
                        display: flex;
                        align-items: center;
                        justify-content: center;
                    border-radius: 50%;
                    margin-right: 10px;
                    span {
                        color: rgba(78,89,105,1);
                        font-size: 14px;
                    }
                    .desc_data_list_item_img {
                        flex-shrink: 0;
                        width: 80px;
                        height: 80px;
                    i {
                        color: #165DFF;
                    }
                }
                .box_status_row_info {
                    display: flex;
                    flex-direction: column;
                    .title {
                        color: rgba(78,89,105,1);
                        font-size: 16px;
                        font-weight: bold;
                    }
                    .info {
                        color: rgba(154,154,154,1);
                        font-size: 14px;
                        margin-top: 5px;
                    }
                }
            }
        }
        .box_desc {
            width: 100%;
            margin-bottom: 15px;
            .box_desc_cailiao {
                width: 100%;
                margin-bottom: 18px;
                .box_desc_cailiao_title {
                    width: 100%;
                    display: flex;
                    align-items: center;
                    margin-bottom: 15px;
                    .box_desc_cailiao_title_x {
                        width: 5px;
                        height: 14px;
                        background-color: #165DFF;
                    }
                    span {
                        color: rgba(16,16,16,1);
                        font-size: 14px;
                        margin-left: 5px;
                    }
                }
                .box_desc_cailiao_list {
                    width: 100%;
                    display: flex;
                    align-items: center;
                    flex-wrap: wrap;
                    .box_desc_cailiao_list_img {
                        width: 100px;
                        height: 100px;
                        display: flex;
                        align-items: center;
                        justify-content: center;
                        overflow: hidden;
                        margin-right: 10px;
                        .el-icon-plus {
                            font-size: 26px;
                            color: #ffffff;
                        margin-right: 15px;
                        background-color: #E5E5E5;
                        &:last-child {
                            margin: 0;
                        }
                        img {
                            width: 100%;
                            height: 100%;
                        }
                        video {
                    }
                }
            }
            .box_desc_head {
                            width: 100%;
                        }
                    }
                    .desc_data_list_item_info {
                        flex: 1;
                        height: 80px;
                        display: flex;
                        flex-direction: column;
                align-items: center;
                        justify-content: space-between;
                        word-break: break-all;
                        span {
                            &:nth-child(1) {
                                width: 160px;
                                white-space: nowrap;
                                overflow: hidden;
                                text-overflow: ellipsis;
                                font-size: 14px;
                                color: black;
                                padding-right: 30px;
                margin-bottom: 26px;
                .box_desc_title {
                    display: flex;
                    align-items: center;
                    .box_desc_title_val {
                        color: rgba(16,16,16,1);
                        font-size: 18px;
                        margin-right: 20px;
                    }
                    .box_desc_title_zt {
                        height: 25px;
                        padding: 0 15px;
                        display: flex;
                        align-items: center;
                        justify-content: center;
                                box-sizing: border-box;
                        border-radius: 15px;
                        background-color: rgba(239,239,239,1);
                        color: rgba(16,16,16,1);
                        font-size: 12px;
                        margin-right: 20px;
                            }
                            &:nth-child(2) {
                                width: 100%;
                                word-break: break-all;
                    .box_desc_title_tips {
                        width: 84px;
                        height: 25px;
                        border-radius: 15px;
                        display: flex;
                        align-items: center;
                        justify-content: center;
                        background-color: rgba(254,226,225,1);
                        span {
                            color: #FF4D4F;
                            font-size: 12px;
                        }
                    }
                }
                .box_desc_btns {
                    display: flex;
                    align-items: center;
                    .box_desc_btns_operate {
                        display: flex;
                        align-items: center;
                        margin-left: 10px;
                        cursor: pointer;
                        i {
                            color: #515151;
                        }
                        span {
                            color: rgba(16,16,16,1);
                                font-size: 14px;
                                color: #888888;
                            margin-left: 4px;
                            }
                            &:nth-child(3) {
                    }
                }
            }
            .box_desc_list {
                                width: 100%;
                                word-break: break-all;
                display: flex;
                align-items: center;
                justify-content: space-between;
                flex-wrap: wrap;
                .box_desc_list_row {
                    width: 33%;
                    color: rgba(16,16,16,1);
                                font-size: 14px;
                                color: #888888;
                    margin-bottom: 24px;
                            }
                        }
                    }
                }
            }
        }
        .desc_times {
                .box_desc_list_img {
            width: 100%;
            margin-top: 20px;
                    display: flex;
                    align-items: start;
                    span {
                        color: rgba(16,16,16,1);
                        font-size: 14px;
                    }
                    .box_desc_list_img_files {
                        flex-shrink: 0;
                        display: flex;
                        align-items: center;
                        flex-wrap: wrap;
                        .box_desc_list_img_files_row {
                            width: 94px;
                            height: 94px;
                            display: flex;
                            align-items: center;
                            justify-content: center;
                            overflow: hidden;
                            margin-right: 25px;
                            &:last-child {
                                margin: 0;
                            }
                            background-color: #E5E5E5;
                            img {
                                width: 100%;
                            }
                        }
                    }
                }
            }
            .box_desc_f {
                width: 100%;
                display: flex;
                align-items: center;
                flex-wrap: wrap;
                margin-bottom: 30px;
                justify-content: space-between;
                .box_desc_fa {
                    width: 32%;
                    padding: 22px 25px;
                    box-sizing: border-box;
                    border-radius: 4px;
                    background-color: rgba(239,239,239,1);
                    .box_desc_fa_title {
                        color: rgba(16,16,16,1);
                        font-size: 18px;
                        font-weight: bold;
                        text-decoration: underline;
                        margin-bottom: 10px;
                    }
                    .box_desc_fa_row {
                        color: rgba(16,16,16,1);
                        font-size: 14px;
                        margin-bottom: 10px;
                        &:last-child {
                            margin: 0;
                        }
                    }
                }
            }
        }
        .box_fx {
            width: 100%;
            height: 49px;
            display: flex;
            padding: 0 17px;
            margin-bottom: 30px;
            box-sizing: border-box;
            align-items: center;
            justify-content: space-between;
            background-color: rgba(254,226,225,1);
            .box_fx_left {
                display: flex;
                align-items: center;
                i {
                    color: #FF4D4F;
                    font-size: 18px;
                }
                .box_fx_left_a {
                    color: rgba(255,77,79,1);
                    font-size: 14px;
                    margin: 0 10px;
                }
                .box_fx_left_b {
                    color: rgba(255,77,79,1);
                    font-size: 14px;
                    text-decoration: underline;
                    cursor: pointer;
                }
            }
            .el-icon-close {
                color: #101010;
                cursor: pointer;
                font-size: 18px;
            }
        }
    }
</style>
company/src/components/business/OperaSettleClaimsWindow_copy.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,874 @@
<template>
    <GlobalWindow
        :title="title"
        width="100%"
        :visible.sync="visible"
        :confirm-working="isWorking"
        @confirm="confirm"
    >
        <div class="desc" v-loading="loading">
            <div class="desc_label">
                <div class="desc_label_left">
                    <span class="desc_label_left_title">
                        æŠ¥æ¡ˆè¯¦æƒ…
                    </span>
                    <span class="desc_label_left_time" :style="contrast(model.createDate, model.baoxianEndTime) ? 'color: rgba(249, 86, 1, 0.996)' : 'color: black'">
                        æŠ¥æ¡ˆæ—¥æœŸï¼š{{ model.createDate }}
                    </span>
                    <span class="desc_label_left_code">
                        æŠ¥æ¡ˆå·ï¼š{{ model.reportNum || '-' }}
                    </span>
                    <span class="desc_label_left_code">
                      çŠ¶æ€ï¼š
                      <span  :class="'settle-status'+model.status" v-if="model.status==0 || model.status==2|| model.status==3">处理中 </span>
                      <span  :class="'settle-status'+model.status" v-if="model.status==1">已撤案 </span>
                      <span  :class="'settle-status'+model.status" v-if="model.status==4">已结案 </span>
                    </span>
                </div>
                <div class="desc_label_right">
                    <template v-if="userInfo.type === 0">
                        <el-button type="primary" v-if="model.status !=1 && model.status !=4" @click="$refs.operaInsuranceApplyCheckWindow.open('添加报案号',model,remarkLogList,1)">添加报案号</el-button>
                        <el-button type="primary" v-if="model.status !=1 && model.status !=4"  @click="$refs.operaInsuranceApplyCheckWindow.open('理赔处理',model,remarkLogList,2)">理赔处理</el-button>
                        <el-button type="primary" v-if="model.status !=1 && model.status !=4"  @click="$refs.operaInsuranceApplyCheckWindow.open('结案提交',model,remarkLogList,4)">结案提交</el-button>
                        <el-button type="danger" v-if="model.status !=1 && model.status !=4" @click="$refs.operaInsuranceApplyCheckWindow.open('撤销申请',model,remarkLogList,3)">撤销申请</el-button>
                    </template>
                    <template v-else>
                        <el-button type="primary" @click="edit" v-if="model.status === 0 || model.status === 2 || model.status === 3">修改信息</el-button>
                        <el-button type="primary" @click="$refs.supplementaryExplanation.open('补充说明', model.id)" v-if="model.status === 0 || model.status === 2 || model.status === 3">补充说明</el-button>
                    </template>
                </div>
            </div>
            <div class="desc_list">
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        å‡ºé™©äººå§“名:
                    </div>
                    <div class="desc_list_item_val">
                      {{model.memberName}}
                    </div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        å‡ºé™©äººèº«ä»½è¯å·ï¼š
                    </div>
                    <div class="desc_list_item_val">
                      {{ model.memberIdcardNo }}
                    </div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label" >
                        äº‹æ•…发生时间:
                    </div>
                    <div class="desc_list_item_val" :style="contrast24(model.baoxianStartTime, model.happenTime) ? 'color: rgba(249, 86, 1, 0.996)' : 'color: black'">
                      {{ model.happenTime }}
                    </div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        æ‰€å±žä¿å•号:
                    </div>
                    <div class="desc_list_item_val" style="cursor: pointer; color: rgba(39, 157, 255, 0.968627450980392);" @click="$refs.OperaInsuranceApplyDetails.open('投保详情', { id: model.insuranceApplyId })">
                      {{ model.applyCode || '-' }}
                        <el-button v-if="model.baoxiandanFile && model.baoxiandanFile.fileurlFull" type="primary" style="margin-left: 10px;" @click.stop="openBaoxiandan">查看保险单</el-button>
                    </div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        ä¿é™©ç”Ÿæ•ˆèµ·æœŸï¼š
                    </div>
                    <div class="desc_list_item_val">
                      {{ model.baoxianStartTime }}
                    </div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        ä¿é™©ç”Ÿæ•ˆæ­¢æœŸï¼š
                    </div>
                    <div class="desc_list_item_val">
                      {{ model.baoxianEndTime }}
                    </div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        æ´¾é£å•位:
                    </div>
                    <div class="desc_list_item_val">
                      {{ model.duName }}
                    </div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        æ‰€å±žå·¥ç§ï¼š
                    </div>
                    <div class="desc_list_item_val">
                      {{ model.worktypeName }}
                    </div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        å°±è¯ŠåŒ»ç–—机构:
                    </div>
                    <div class="desc_list_item_val">
                      {{ model.hospital }}
                    </div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        äº‹æ•…类型:
                    </div>
                    <div class="desc_list_item_val"  v-if="model.type ===1">上下班途中受伤</div>
                    <div class="desc_list_item_val" v-else-if="model.type ===2">非工作时间受伤</div>
                    <div class="desc_list_item_val"  v-else-if="model.type ===3">意外受伤</div>
                    <div class="desc_list_item_val"  v-else>工作期间受伤</div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        æ˜¯å¦ä½é™¢ï¼š
                    </div>
                    <div class="desc_list_item_val">
                        <div class="desc_list_item_val"  v-if="model.inHospital === 0">是</div>
                        <div class="desc_list_item_val"  v-else>否</div>
                    </div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        æ˜¯å¦æœ‰åŒ»ç–—保险:
                    </div>
                    <div class="desc_list_item_val">{{ model.medicalInsurance ===0?"是":"否" }}</div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        å‡ºé™©åœ°åŒºï¼š
                    </div>
                    <div class="desc_list_item_val">
                      {{model.areaInfo}}
                    </div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label">
                        æŠ¥æ¡ˆäººå§“名:
                    </div>
                    <div class="desc_list_item_val">
                      {{model.informantName}}
                    </div>
                </div>
                <div class="desc_list_item">
                    <div class="desc_list_item_label"> æŠ¥æ¡ˆäººè”系方式:  </div>
                    <div class="desc_list_item_val">  {{model.informantPhone}} </div>
                </div>
                <div class="desc_list_item" style="width: 100%;">
                    <div class="desc_list_item_label"> è¢«ä¿é™©äººï¼š </div>
                    <div class="desc_list_item_val">{{model.companyName}}</div>
                </div>
                <div class="desc_list_item" style="width: 100%;">
                    <div class="desc_list_item_label"> äº‹æ•…描述: </div>
                    <div class="desc_list_item_val">{{model.content}}</div>
                </div>
                <div class="desc_list_item" style="width: 100%;">
                    <div class="desc_list_item_label">
                        æŠ¥æ¡ˆè§†é¢‘:
                    </div>
                    <div class="desc_list_item_videos" v-if="model.reportFileList && model.reportFileList.length > 0">
                        <div class="desc_list_item_imgs_video" v-for="(item, index) in model.reportFileList" :key="index">
                            <img :src="item.fileurlFull" v-if="item.type === 0" />
                            <video controls :src="item.fileurlFull" v-if="item.type === 1"></video>
                        </div>
                    </div>
                    <div v-else class="desc_list_item_videos">-</div>
                </div>
            </div>
            <div class="desc_xian"></div>
            <div class="desc_label">
                <div class="desc_label_left">
                    <span class="desc_label_left_title">
                        ç†èµ”资料
                    </span>
                    <span v-if="model.finishDate!=null" class="desc_label_left_time" style="color: black">
                        èµ„料完成日期:{{model.finishDate}}
                    </span>
                </div>
                <div class="desc_label_right">
                    <template v-if="userInfo.type === 0">
                        <el-button type="primary"  v-if="model.status !=1 && model.status !=4"  @click="$refs.operaInsuranceApplyCheckWindow.open('备注标签',model,remarkLogList,5)">备注标签</el-button>
                        <el-button type="primary"  v-if="model.status !=1 && model.status !=4" @click="submit(0)">资料确认</el-button>
                    </template>
                    <el-button type="primary"  @click="submit(1)">资料下载</el-button>
                </div>
            </div>
            <div class="desc_data">
                <div class="desc_data_label">1. å‘˜å·¥å…³ç³»è¯æ˜Žèµ„æ–™</div>
                <div class="desc_data_list">
                    <template v-if="model.relationFileList && model.relationFileList.length > 0">
                      <div class="desc_data_list_item" v-for="(item, index) in model.relationFileList" :key="index">
                        <div class="desc_data_list_item_dele" @click="delFile(item.id)">删除</div>
                        <div class="desc_data_list_item_img" v-if="item.type == 0 && item.fileurlFull != null">
                          <img :src="item.fileurlFull" />
                        </div>
                        <div class="desc_data_list_item_img" v-if="item.type == 1 && item.fileurlFull != null">
                            <video controls :src="item.fileurlFull" />
                        </div>
                        <div class="desc_data_list_item_info">
                          <span>{{ item.name }}</span>
                          <span>操作员-{{ item.creatorName }}</span>
                          <span>{{ item.createDate }}</span>
                        </div>
                      </div>
                    </template>
                  <template   v-if="(model.relationFileList==null|| model.relationFileList.length==0) && (model.status ==1 || model.status ==4)">
                    <span style="height: 40px; width:100%;text-align:center;color: #8c939d;font-size: 12px">暂无相关材料</span>
                  </template>
                    <upload v-if="model.status !=1 && model.status !=4" width="100px" height="100px" :list="[]" accept=".png,.jpg,.jpeg,.mp4,.word,.xlsx,.xls,.pdf,.excel" folder="settle" @loading="loading = true" @success="claimsUploadFile($event, 2)" />
<!--                    <div class="desc_data_list_item">-->
<!--                      <UploadFileCommon :uploadData="{ folder: 'settle' }" />-->
<!--                      <div class="desc_data_list_item_upload">-->
<!--                            <el-button type="primary">上传</el-button>-->
<!--                            <el-button>取消</el-button>-->
<!--                        </div>-->
<!--                    </div>-->
<!--                    <div class="desc_data_list_item1"></div>-->
<!--                    <div class="desc_data_list_item1"></div>-->
                </div>
            </div>
            <div class="desc_data">
                <div class="desc_data_label">2. åŒ»ç–—资料</div>
                <div class="desc_data_cate">
                    <el-tabs v-model="activeName" @tab-click="handleClick">
                        <el-tab-pane label="门诊" name="first"></el-tab-pane>
                        <el-tab-pane label="住院资料" name="second"></el-tab-pane>
                        <el-tab-pane label="伤残" name="third"></el-tab-pane>
                    </el-tabs>
                </div>
                <div class="desc_data_list" v-if="activeName === 'first'">
                  <template v-if="model.outpatientFileList && model.outpatientFileList">
                    <div class="desc_data_list_item" v-for="(item, index) in model.outpatientFileList" :key="index">
                      <div class="desc_data_list_item_dele" @click="delFile(item.id)">删除</div>
                        <div class="desc_data_list_item_img" v-if="item.type == 0 && item.fileurlFull != null">
                            <img :src="item.fileurlFull" />
                        </div>
                        <div class="desc_data_list_item_img" v-if="item.type == 1 && item.fileurlFull != null">
                            <video controls :src="item.fileurlFull" />
                        </div>
                      <div class="desc_data_list_item_info">
                        <span>{{ item.name }}</span>
                        <span>操作员-{{ item.creatorName }}</span>
                        <span>{{ item.createDate }}</span>
                      </div>
                    </div>
                  </template>
                  <template   v-if="(model.outpatientFileList==null|| model.outpatientFileList.length==0) && (model.status ==2 || model.status ==4)">
                    <span style="height: 40px; width:100%;text-align:center;color: #8c939d;font-size: 12px">暂无相关材料</span>
                  </template>
                    <upload v-if="model.status !=1 && model.status !=4" width="100px" height="100px" :list="[]" accept=".png,.jpg,.jpeg,.mp4,.word,.xlsx,.xls,.pdf,.excel" folder="settle" @loading="loading = true" @success="claimsUploadFile($event, 3)" />
<!--                    <div class="desc_data_list_item">-->
<!--                        <div class="desc_data_list_item_img" style="cursor: pointer; background: #8c939d;">-->
<!--                            <i class="el-icon-plus"></i>-->
<!--                        </div>-->
<!--                        <div class="desc_data_list_item_upload">-->
<!--                            <el-button type="primary">上传</el-button>-->
<!--                            <el-button>取消</el-button>-->
<!--                        </div>-->
<!--                    </div>-->
<!--                    <div class="desc_data_list_item1"></div>-->
<!--                    <div class="desc_data_list_item1"></div>-->
                </div>
                <div class="desc_data_list" v-else-if="activeName === 'second'">
                  <template v-if="model.hospitalFileList && model.hospitalFileList">
                    <div class="desc_data_list_item" v-for="(item, index) in model.hospitalFileList" :key="index">
                      <div class="desc_data_list_item_dele" @click="delFile(item.id)">删除</div>
                        <div class="desc_data_list_item_img" v-if="item.type == 0 && item.fileurlFull != null">
                            <img :src="item.fileurlFull" />
                        </div>
                        <div class="desc_data_list_item_img" v-if="item.type == 1 && item.fileurlFull != null">
                            <video controls :src="item.fileurlFull" />
                        </div>
                      <div class="desc_data_list_item_info">
                        <span>{{ item.name }}</span>
                        <span>操作员-{{ item.creatorName }}</span>
                        <span>{{ item.createDate }}</span>
                      </div>
                    </div>
                  </template>
                  <template   v-if="(model.hospitalFileList==null|| model.hospitalFileList.length==0) && (model.status ==2 || model.status ==4)">
                    <span style="height: 40px; width:100%;text-align:center;color: #8c939d;font-size: 12px">暂无相关材料</span>
                  </template>
                    <upload v-if="model.status !=1 && model.status !=4" width="100px" height="100px" :list="[]" accept=".png,.jpg,.jpeg,.mp4,.word,.xlsx,.xls,.pdf,.excel" folder="settle" @loading="loading = true" @success="claimsUploadFile($event, 4)" />
<!--                    <div class="desc_data_list_item">-->
<!--                        <div class="desc_data_list_item_img" style="cursor: pointer; background: #8c939d;">-->
<!--                            <i class="el-icon-plus"></i>-->
<!--                        </div>-->
<!--                        <div class="desc_data_list_item_upload">-->
<!--                            <el-button type="primary">上传</el-button>-->
<!--                            <el-button>取消</el-button>-->
<!--                        </div>-->
<!--                    </div>-->
<!--                    <div class="desc_data_list_item1"></div>-->
<!--                    <div class="desc_data_list_item1"></div>-->
                </div>
                <div class="desc_data_list" v-else-if="activeName === 'third'">
                  <template v-if="model.disabilityFileList && model.disabilityFileList">
                    <div class="desc_data_list_item" v-for="(item, index) in model.disabilityFileList" :key="index">
                      <div class="desc_data_list_item_dele" @click="delFile(item.id)">删除</div>
                        <div class="desc_data_list_item_img" v-if="item.type == 0 && item.fileurlFull != null">
                            <img :src="item.fileurlFull" />
                        </div>
                        <div class="desc_data_list_item_img" v-if="item.type == 1 && item.fileurlFull != null">
                            <video controls :src="item.fileurlFull" />
                        </div>
                      <div class="desc_data_list_item_info">
                        <span>{{ item.name }}</span>
                        <span>操作员-{{ item.creatorName }}</span>
                        <span>{{ item.createDate }}</span>
                      </div>
                    </div>
                  </template>
                  <template   v-if="(model.disabilityFileList==null|| model.disabilityFileList.length==0) && (model.status ==2 || model.status ==4)">
                    <span style=" height: 40px;width:100%;text-align:center;color: #8c939d;font-size: 12px">暂无相关材料</span>
                  </template>
                    <upload  v-if="model.status !=1 && model.status !=4" width="100px" height="100px" :list="[]" accept=".png,.jpg,.jpeg,.mp4,.word,.xlsx,.xls,.pdf,.excel" folder="settle" @loading="loading = true" @success="claimsUploadFile($event, 5)" />
<!--                    <div class="desc_data_list_item">-->
<!--                      <UploadFileCommon :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileList="form.fileList1" @uploadSuccess="baoxianFileUploaded" />-->
<!--&lt;!&ndash;                      <div class="desc_data_list_item_img" style="cursor: pointer; background: #8c939d;">-->
<!--                            <i class="el-icon-plus"></i>-->
<!--                        </div>&ndash;&gt;-->
<!--                        <div class="desc_data_list_item_upload">-->
<!--                            <el-button type="primary">上传</el-button>-->
<!--                            <el-button>取消</el-button>-->
<!--                        </div>-->
<!--                    </div>-->
<!--                    <div class="desc_data_list_item1"></div>-->
<!--                    <div class="desc_data_list_item1"></div>-->
                </div>
            </div>
            <div class="desc_data">
                <div class="desc_data_label">3. èµ”付结案资料</div>
                <div class="desc_data_list">
                  <template v-if="model.compensationFileList && model.compensationFileList">
                    <div class="desc_data_list_item" v-for="(item, index) in model.compensationFileList" :key="index">
                      <div class="desc_data_list_item_dele" @click="delFile(item.id)">删除</div>
                        <div class="desc_data_list_item_img" v-if="item.type == 0 && item.fileurlFull != null">
                            <img :src="item.fileurlFull" />
                        </div>
                        <div class="desc_data_list_item_img" v-if="item.type == 1 && item.fileurlFull != null">
                            <video controls :src="item.fileurlFull" />
                        </div>
                      <div class="desc_data_list_item_info">
                        <span>{{ item.name }}</span>
                        <span>操作员-{{ item.creatorName }}</span>
                        <span>{{ item.createDate }}</span>
                      </div>
                    </div>
                  </template>
                  <template   v-if="(model.compensationFileList==null|| model.compensationFileList.length==0) && (model.status ==2 || model.status ==4)">
                    <span style=" height: 40px;width:100%;text-align:center;color: #8c939d;font-size: 12px">暂无相关材料</span>
                  </template>
                    <upload v-if="model.status !=1 && model.status !=4" width="100px" height="100px" :list="[]" accept=".png,.jpg,.jpeg,.mp4,.word,.xlsx,.xls,.pdf,.excel" folder="settle" @loading="loading = true" @success="claimsUploadFile($event, 6)" />
<!--                    <div class="desc_data_list_item">-->
<!--                        <div class="desc_data_list_item_img" style="cursor: pointer; background: #8c939d;">-->
<!--                            <i class="el-icon-plus"></i>-->
<!--                        </div>-->
<!--                        <div class="desc_data_list_item_upload">-->
<!--                            <el-button type="primary">上传</el-button>-->
<!--                            <el-button>取消</el-button>-->
<!--                        </div>-->
<!--                    </div>-->
<!--                    <div class="desc_data_list_item1"></div>-->
<!--                    <div class="desc_data_list_item1"></div>-->
                </div>
            </div>
            <div class="desc_label">
                <div class="desc_label_left">
                    <span class="desc_label_left_title">
                        æ¡ˆä»¶è¿›åº¦
                    </span>
                </div>
            </div>
            <div class="desc_times">
                <el-timeline :reverse="reverse">
                    <el-timeline-item
                        v-for="(activity, index) in activeLogList"
                        :key="index"
                        :timestamp="activity.timestamp">
                      <div style="display: flex;  flex-direction: column;" v-if="activity.objType==3">
                                <span style="font-size: 16px; font-weight: bold; color: #0d5ada;">
                                    {{activity.title}}
                                      <span style="font-size: 16px; font-weight: bold; color: #0d5ada; margin-left: 10px;" >
                                      <span v-if=" model.ylClaimAccount &&  model.ylClaimAccount>0">医疗理赔{{ model.ylClaimAccount }}元;</span>
                                      <span v-if=" model.wgClaimAccount &&  model.wgClaimAccount>0">误工理赔{{ model.wgClaimAccount }}元;</span>
                                      <span v-if=" model.scClaimAccount &&  model.scClaimAccount>0">伤残理赔{{ model.scClaimAccount }}元;</span>
                                      <span v-if=" model.swClaimAccount &&  model.swClaimAccount>0">死亡理赔{{ model.swClaimAccount }}元;</span>
                                      ç†èµ”总额:{{ model.claimAccount }}元
                                    </span>
                                </span>
                                 <span style="margin-top: 5px; font-size: 12px; font-weight: 400; color: #999999;">
                                        {{activity.content}}
                                 </span>
                                 <span style="margin-top: 5px; font-size: 12px; font-weight: 400; color: #999999;">
                                    æ“ä½œå‘˜-{{activity.creatorName}}({{(activity.creatorType == 1||activity.creatorType == 2)? activity.companyName: "平台端"}}){{activity.createDate}}
                                </span>
                      </div>
                      <div style="display: flex; flex-direction: column;" v-else>
                                <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.creatorType == 2)? activity.companyName: "平台端"}}){{activity.createDate}}
                                </span>
                      </div>
                    </el-timeline-item>
                </el-timeline>
            </div>
        </div>
      <template v-slot:footer>
        <el-button @click="visible=false">返回</el-button>
      </template>
      <OperaSettleClaimsCheckWindow ref="operaInsuranceApplyCheckWindow"  @success="callback" />
        <!--    åœ¨çº¿æŠ¥æ¡ˆ    -->
        <onlineReporting ref="onlineReporting" @success="callback" />
        <!--    è¡¥å……说明    -->
        <supplementaryExplanation ref="supplementaryExplanation" @success="callback" />
        <!--    æŠ•保详情    -->
        <OperaInsuranceApplyDetails ref="OperaInsuranceApplyDetails" @success="callback" />
    </GlobalWindow>
</template>
<script>
import UploadFileCommon from '@/components/common/UploadFileCommon'
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import OperaSettleClaimsCheckWindow from '@/components/business/OperaSettleClaimsCheckWindow'
import onlineReporting from '@/components/enterprise/onlineReporting'
import supplementaryExplanation from '@/components/enterprise/supplementaryExplanation'
import OperaInsuranceApplyDetails from '@/components/business/OperaInsuranceApplyWindow'
import upload from '@/components/common/upload'
import { confirmFile, findById, exportFiles, claimsUploadFile, delFile } from '@/api/business/settleClaims'
import { mapState } from 'vuex'
export default {
  name: 'OperaSettleClaimsWindow',
  extends: BaseOpera,
  components: { GlobalWindow, OperaSettleClaimsCheckWindow, OperaInsuranceApplyDetails, UploadFileCommon, onlineReporting, supplementaryExplanation, upload },
  data () {
    return {
      loading: false,
      doneFileDate: null,
      remarkLogList: [],
      activeLogList:[],
      list: [],
      model: {},
      activeName: 'first',
      reverse: false
    }
  },
  computed: {
    ...mapState(['userInfo'])
  },
  created () {
    this.config({
      api: '/business/settleClaims',
      'field.id': 'id'
    })
  },
  methods: {
    open (title, target) {
      this.model = {}
      this.model = target
      this.title = title
      this.visible = true
      this.doneFileDate = null
      this.remarkLogList = []
      this.activeLogList = []
      this.getDetail()
    },
    // åˆ¤æ–­ä¸¤ä¸ªæ—¶é—´ä¹‹é—´ç›¸å·®æ˜¯å¦
    contrast24 (time1, time2) {
      console.log(time1)
      console.log(time2)
      if (time1 && time2) {
        const a = new Date(time1)
        const b = new Date(time2)
        const timeDiff = Math.abs(a.getTime() - b.getTime())
        console.log(Math.ceil(timeDiff / (3600 * 1000)))
        return Math.ceil(timeDiff / (3600 * 1000)) <= 24
      } else {
        return false
      }
    },
    contrast (time1, time2) {
      if (time1 && time2) {
        const a = new Date(time1).getTime()
        const b = new Date(time2).getTime()
        return a > b
      } else {
        return false
      }
    },
    edit () {
      const obj = JSON.parse(JSON.stringify(this.model))
      obj.areaId = obj.areaId.split(',').map(item => Number(item))
      this.$refs.onlineReporting.open('修改信息', obj)
    },
    openBaoxiandan () {
      window.open(this.model.baoxiandanFile.fileurlFull)
    },
    delFile (id) {
      this.$dialog.messageConfirm('确认删除该附件吗,一旦删除无法撤回?')
        .then(() => {
          delFile(this.model.id, id).then(response => {
            this.getDetail()
          }).catch(err => {
            this.$tip.apiFailed(err)
          })
        })
    },
    getDetail () {
      findById(this.model.id)
        .then(res => {
          this.model = res
          this.remarkLogList = []
          this.activeLogList =[]
          var logList = this.model.settleClaimsLogList
          if (logList) {
            logList.forEach(item => {
              if (item.objType == 2) {
                this.doneFileDate = item.createDate
              }
              if (item.objType == 7) {
                this.remarkLogList.push(item)
              } else {
                this.activeLogList.push(item)
              }
            })
          }
        }).catch(err => {
        })
    },
    handleClick (tab) {
      this.activeName = tab.name
    },
    callback () {
      this.getDetail()
      this.$emit('success')
    },
    claimsUploadFile (e, objType) {
      claimsUploadFile({
        id: this.model.id,
        objType,
        fileUrl: e.imgaddr,
        fileName: e.originname,
        fileType: e.type
      }).then(response => {
        this.getDetail()
      }).catch(err => {
        this.$tip.apiFailed(err)
      }).finally(() => {
        this.loading = false
      })
    },
    submit (type) {
      var that = this
      if (type == 0) {
        this.$dialog.messageConfirm('理赔材料收集完成,请及时提交保险公司!')
          .then(() => {
            // this.isWorking = true
            confirmFile({ id: that.model.id })
              .then(response => {
                that.getDetail()
              }).catch(err => {
                this.$tip.apiFailed(err)
              })
          })
      } else if (type == 1) {
        // èµ„料下载
        this.$dialog.exportConfirm('确认进行资料下载吗?')
          .then(() => {
            this.isWorking = true
            exportFiles({ id: that.model.id })
              .then(response => {
                this.download(response)
              }).catch(err => {
                console.log(err)
                this.$message.error('下载资料失败,请确认资料数据不为空')
              }).finally(() => {
                this.isWorking = false
              })
          })
          .catch(() => {
          })
      }
    }
  }
}
</script>
<style>
    .v-modal {
        z-index: 2000 !important;
    }
</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: start;
            margin-bottom: 20px;
            &:last-child {
                margin: 0 !important;
            }
            .form_item_label {
                flex-shrink: 0;
                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: 100%;
                    outline: none;
                    border-radius: 5px;
                    border: 1px solid #cbcbcb;
                    padding: 0 20px;
                    box-sizing: border-box;
                }
            }
        }
    }
    .desc {
        width: 100%;
        display: flex;
        align-items: center;
        flex-direction: column;
        .desc_label {
            width: 100%;
            display: flex;
            align-items: center;
            justify-content: space-between;
            .desc_label_left {
                flex: 1;
                display: flex;
                align-items: center;
                .desc_label_left_title {
                    font-size: 20px;
                    font-weight: bold;
                    color: black;
                }
                .desc_label_left_time {
                    font-size: 14px;
                    color: black;
                    /*color: rgba(249, 86, 1, 0.996);*/
                    margin-left: 10px;
                }
                .desc_label_left_code {
                    font-size: 15px;
                    color: black;
                    margin-left: 30px;
                }
            }
            .desc_label_right {
                flex-shrink: 0;
            }
        }
        .desc_list {
            width: 100%;
            margin-top: 20px;
            display: flex;
            align-items: center;
            flex-wrap: wrap;
            .desc_list_item {
                width: 33.3%;
                display: flex;
                align-items: center;
                margin-bottom: 10px;
                .desc_list_item_label {
                    width: 130px;
                    flex-shrink: 0;
                    font-size: 15px;
                    color: black;
                }
                .desc_list_item_val {
                    flex: 1;
                    font-size: 15px;
                    color: black;
                }
                .desc_list_item_videos {
                    flex: 1;
                    display: flex;
                    align-items: center;
                    flex-wrap: wrap;
                    .desc_list_item_imgs_video {
                        width: 120px;
                        height: 120px;
                        background: black;
                        margin-right: 10px;
                        display: flex;
                        align-items: center;
                        justify-content: center;
                        overflow: hidden;
                        video {
                            width: 100%;
                            height: 100%;
                        }
                        img {
                            width: 100%;
                        }
                    }
                }
            }
        }
        .desc_xian {
            width: 100%;
            height: 1px;
            margin: 10px 0;
            background: #ececec;
        }
        .desc_data {
            width: 100%;
            display: flex;
            flex-direction: column;
            margin-top: 20px;
            .desc_data_label {
                font-size: 16px;
                color: black;
                font-weight: 600;
                margin-bottom: 20px;
            }
            .desc_data_cate {
                width: 100%;
                margin: 0 0 10px 0;
            }
            .desc_data_list {
                width: 100%;
                display: flex;
                align-items: center;
                flex-wrap: wrap;
                .desc_data_list_item1 {
                    width: 24.5%;
                }
                .desc_data_list_item {
                    width: 24.5%;
                    padding: 10px;
                    box-sizing: border-box;
                    border: 1px solid #e2e2e2;
                    display: flex;
                    align-items: center;
                    justify-content: space-between;
                    position: relative;
                    margin-bottom: 10px;
                    margin-right: 20px;
                    &:last-child {
                        margin-right: 0 !important;
                    }
                    .desc_data_list_item_dele {
                        position: absolute;
                        top: 10px;
                        right: 10px;
                        font-size: 14px;
                        cursor: pointer;
                        color: rgba(249, 86, 1, 0.996078431372549);
                    }
                    .desc_data_list_item_upload {
                        flex: 1;
                        height: 80px;
                        display: flex;
                        align-items: center;
                        justify-content: center;
                    }
                    .desc_data_list_item_img {
                        flex-shrink: 0;
                        width: 80px;
                        height: 80px;
                        display: flex;
                        align-items: center;
                        justify-content: center;
                        overflow: hidden;
                        margin-right: 10px;
                        .el-icon-plus {
                            font-size: 26px;
                            color: #ffffff;
                        }
                        img {
                            width: 100%;
                        }
                        video {
                            width: 100%;
                        }
                    }
                    .desc_data_list_item_info {
                        flex: 1;
                        height: 80px;
                        display: flex;
                        flex-direction: column;
                        justify-content: space-between;
                        word-break: break-all;
                        span {
                            &:nth-child(1) {
                                width: 160px;
                                white-space: nowrap;
                                overflow: hidden;
                                text-overflow: ellipsis;
                                font-size: 14px;
                                color: black;
                                padding-right: 30px;
                                box-sizing: border-box;
                            }
                            &:nth-child(2) {
                                width: 100%;
                                word-break: break-all;
                                font-size: 14px;
                                color: #888888;
                            }
                            &:nth-child(3) {
                                width: 100%;
                                word-break: break-all;
                                font-size: 14px;
                                color: #888888;
                            }
                        }
                    }
                }
            }
        }
        .desc_times {
            width: 100%;
            margin-top: 20px;
        }
    }
</style>
company/src/components/business/OperaSolutionsBaseWindow.vue
@@ -126,6 +126,40 @@
                    </u-table-column>
                </u-table>
            </div>
            <el-form-item label="风险设置" prop="risk">
                <div class="tx">
                    <div class="tx_item">
                        <div class="tx_item_head">
                            <span>延迟报案提醒</span>
                            <el-switch :active-value="1" :inactive-value="0" v-model="form.riskDelayStatus"></el-switch>
                        </div>
                        <div class="tx_item_content">
                            <span>规则设置:当报案时间超过案发时间</span>
                            <el-input-number style="margin: 0 15px;" :disabled="form.riskDelayStatus === 0" v-model="form.riskDelayTime" :min="1"></el-input-number>
                            <el-select v-model="form.riskDelayUnit" :disabled="form.riskDelayStatus === 0" style="width: 100px; margin-right: 15px;" placeholder="请选择">
                                <el-option label="分钟" :value="0"></el-option>
                                <el-option label="小时" :value="1"></el-option>
                                <el-option label="天" :value="2"></el-option>
                            </el-select>
                            <span>时,进行提醒。</span>
                        </div>
                    </div>
                    <div class="tx_item">
                        <div class="tx_item_head">
                            <span>允许对新员工已投保未生效保险进行保障</span>
                            <el-switch :active-value="1" :inactive-value="0" v-model="form.riskNewUserStatus"></el-switch>
                        </div>
                        <div class="tx_item_content">
                            <span>规则设置:允许出险时间在保单生效前</span>
                            <el-input-number style="margin: 0 15px;" v-model="form.riskNewUserTime" :min="1"></el-input-number>
                            <el-select v-model="form.riskNewUserUnit" style="width: 100px; margin-right: 15px;" placeholder="请选择">
                                <el-option label="小时" :value="1"></el-option>
                                <el-option label="天" :value="2"></el-option>
                            </el-select>
                        </div>
                    </div>
                </div>
            </el-form-item>
            <el-form-item label="特别约定" prop="specialAgreement">
                <RichEditor :richData="form.specialAgreement" :styleEditor="'border: 1px solid #ccc;display: inline-block;'" @getWangedditor="getWangedditor" :readonly="false"/>
            </el-form-item>
@@ -171,6 +205,19 @@
        }
        callback()
      }
      var riskRule = (rule, value, callback) => {
          if (this.form.riskDelayStatus === '1') {
              if (!this.form.riskDelayTime || !this.form.riskDelayUnit) {
                  return callback(new Error('请完善内容'))
              }
          }
          if (this.form.riskNewUserStatus === '1') {
              if (!this.form.riskNewUserTime || !this.form.riskNewUserUnit) {
                  return callback(new Error('请完善内容'))
              }
          }
          callback()
      }
      return {
        // è¡¨å•数据
        form: {
@@ -192,8 +239,17 @@
          delOnlyReplace: 0,
          canAdd: 0,
          correctWarnTime: '',
          worktypeIdList: []
          worktypeIdList: [],
            riskDelayStatus: 0,
            riskDelayTime: 1,
            riskDelayUnit: 0,
            riskNewUserStatus: 0,
            riskNewUserTime: 1,
            riskNewUserUnit: 1
        },
          value: '',
          options: [],
        worktypeId: [],
        // éªŒè¯è§„则
        rules: {
@@ -208,6 +264,9 @@
          ],
          delValidDays: [
            { required: true, validator: numRule }
          ],
            risk: [
                { required: true, validator: riskRule }
          ],
          insuranceId: [
            { required: true, message: '请选择保险公司' }
@@ -455,3 +514,40 @@
    }
  }
</script>
<style lang="scss" scoped>
    .tx {
        width: 100%;
        background-color: #ffffff;
        display: flex;
        flex-direction: column;
        .tx_item {
            width: 50%;
            padding: 20px 20px;
            box-sizing: border-box;
            background-color: #ffffff;
            border: 1px solid #ececec;
            margin-bottom: 20px;
            .tx_item_head {
                display: flex;
                align-items: center;
                span {
                    color: rgba(16,16,16,1);
                    font-size: 16px;
                    font-weight: bold;
                    margin-right: 15px;
                }
            }
            .tx_item_content {
                display: flex;
                align-items: start;
                margin-top: 10px;
                span {
                    flex-shrink: 0;
                    color: rgba(16,16,16,1);
                    font-size: 14px;
                }
            }
        }
    }
</style>
company/src/components/business/setCompany.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,227 @@
<template>
    <GlobalWindow
        :title="title"
        width="100%"
        :visible.sync="visible"
        :confirm-working="isWorking"
        @confirm="confirm"
    >
        <el-collapse v-model="activeNames">
            <el-collapse-item title="模板及材料清单上传" name="1">
                <div class="item">
                    <div class="item_upload">
                        <div class="item_upload_info1">上传盖章文件模版</div>
                        <div class="item_upload_info2">
                            <i class="el-icon-info"></i>
                            <span>多文件请打包上传</span>
                        </div>
                        <div class="item_upload_upload">
                            <el-upload
                                class="upload-demo"
                                :action="uploadImgUrl"
                                :on-remove="handleRemove1"
                                :on-success="handleFileSuccess1"
                                :on-error="uploadError1"
                                :limit="1"
                                :on-exceed="handleExceed"
                                :file-list="form.lpStampTempFileCopy">
                                <el-button size="small" type="primary">点击上传</el-button>
                            </el-upload>
                        </div>
                    </div>
                    <div class="item_upload">
                        <div class="item_upload_info1">上传理赔材料一览表</div>
                        <div class="item_upload_info2">
                            <i class="el-icon-info"></i>
                            <span>建议上传PDF格式的文件</span>
                        </div>
                        <div class="item_upload_upload">
                            <el-upload
                                class="upload-demo"
                                :action="uploadImgUrl"
                                :on-remove="handleRemove"
                                :on-success="handleFileSuccess"
                                :on-error="uploadError"
                                :limit="1"
                                :on-exceed="handleExceed"
                                :file-list="form.lpFileCopy">
                                <el-button size="small" type="primary">点击上传</el-button>
                            </el-upload>
                        </div>
                    </div>
                </div>
            </el-collapse-item>
            <el-collapse-item title="员工关系证明" name="2">
                <div class="title">文件上传说明</div>
                <RichEditor :richData="form.lpYggxFileInfo" :styleEditor="'border: 1px solid #ccc;display: inline-block;'" @getWangedditor="getWangedditor1" :readonly="false"/>
            </el-collapse-item>
            <el-collapse-item title="门诊" name="3">
                <div class="title">文件上传说明</div>
                <RichEditor :richData="form.lpMzFileInfo" :styleEditor="'border: 1px solid #ccc;display: inline-block;'" @getWangedditor="getWangedditor2" :readonly="false"/>
            </el-collapse-item>
            <el-collapse-item title="住院" name="4">
                <div class="title">文件上传说明</div>
                <RichEditor :richData="form.lpZyFileInfo" :styleEditor="'border: 1px solid #ccc;display: inline-block;'" @getWangedditor="getWangedditor3" :readonly="false"/>
            </el-collapse-item>
            <el-collapse-item title="伤残" name="5">
                <div class="title">文件上传说明</div>
                <RichEditor :richData="form.lpScFileInfo" :styleEditor="'border: 1px solid #ccc;display: inline-block;'" @getWangedditor="getWangedditor4" :readonly="false"/>
            </el-collapse-item>
            <el-collapse-item title="其他" name="6">
                <div class="title">文件上传说明</div>
                <RichEditor :richData="form.lpOtherFileInfo" :styleEditor="'border: 1px solid #ccc;display: inline-block;'" @getWangedditor="getWangedditor5" :readonly="false"/>
            </el-collapse-item>
        </el-collapse>
    </GlobalWindow>
</template>
<script>
    import BaseOpera from '@/components/base/BaseOpera'
    import GlobalWindow from '@/components/common/GlobalWindow'
    import RichEditor from '@/components/common/RichEditor'
    import { saveLpInfo, getById } from '@/api/business/insurance'
    export default {
        name: 'setCompany',
        extends: BaseOpera,
        components: { GlobalWindow, RichEditor },
        data () {
            return {
                uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/upload?folder=INSURANCE',
                activeNames: ['1', '2', '3', '4', '5', '6'],
                specialAgreement: '',
                form: {
                    id: null,
                    lpStampTempFile: null,
                    lpStampTempFileCopy: [],
                    lpFile: null,
                    lpFileCopy: [],
                    lpYggxFileInfo: '',
                    lpMzFileInfo: '',
                    lpZyFileInfo: '',
                    lpScFileInfo: '',
                    lpOtherFileInfo: ''
                }
            }
        },
        created () {
            this.config({
                api: '/business/knowledge',
                'field.id': 'id'
            })
        },
        methods: {
            confirm () {
                this.isWorking = true
                saveLpInfo(this.form)
                    .then(res => {
                        this.isWorking = false
                        this.$emit('success')
                        this.$message.success('保存成功')
                        this.visible = false
                    })
            },
            open (title, id) {
                this.title = title
                getById(id)
                    .then(res => {
                        this.visible = true
                        this.$nextTick(() => {
                            setTimeout(() => {
                                for (const key in this.form) {
                                    this.form[key] = res[key]
                                }
                                if (this.form.lpStampTempFile) {
                                    this.form.lpStampTempFileCopy = [this.form.lpStampTempFile]
                                }
                                if (this.form.lpFile) {
                                    this.form.lpFileCopy = [this.form.lpFile]
                                }
                            }, 1000)
                        })
                    })
            },
            getWangedditor1(val) {
                this.form.lpYggxFileInfo = val
            },
            getWangedditor2(val) {
                this.form.lpMzFileInfo = val
            },
            getWangedditor3(val) {
                this.form.lpZyFileInfo = val
            },
            getWangedditor4(val) {
                this.form.lpScFileInfo = val
            },
            getWangedditor5(val) {
                this.form.lpOtherFileInfo = val
            },
            handleFileSuccess(e) {
                e.data.name = e.data.originname
                e.data.fileurl = e.data.imgaddr
                this.form.lpFile = e.data
                this.form.lpFileCopy = [e.data]
            },
            uploadError(e) {
                this.$message.error('上传失败')
            },
            handleRemove() {
                this.form.lpFile = null
                this.form.lpFileCopy = []
            },
            handleFileSuccess1(e) {
                e.data.name = e.data.originname
                e.data.fileurl = e.data.imgaddr
                this.form.lpStampTempFile = e.data
                this.form.lpStampTempFileCopy = [e.data]
            },
            uploadError1(e) {
                this.$message.error('上传失败')
            },
            handleRemove1() {
                this.form.lpStampTempFile = null
                this.form.lpStampTempFileCopy = []
            },
            handleExceed() {
                this.$message.warning('只能上传一个文件!')
            }
        }
    }
</script>
<style lang="scss" scoped>
    .title {
        width: 100%;
        color: #9A9A9A;
        font-size: 14px;
    }
    .item {
        width: 100%;
        display: flex;
        align-items: start;
        .item_upload {
            width: 300px;
            display: flex;
            flex-direction: column;
            .item_upload_info1 {
                color: rgba(16,16,16,1);
                font-size: 14px;
                margin-bottom: 7px;
            }
            .item_upload_info2 {
                display: flex;
                align-items: center;
                margin-bottom: 16px;
                i {
                    color: #9A9A9A;
                    font-size: 18px;
                }
                span {
                    color: rgba(154,154,154,1);
                    font-size: 14px;
                    margin-left: 5px;
                }
            }
        }
    }
</style>
company/src/components/business/tagLibrary.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,126 @@
<template>
    <GlobalWindow
        :title="title"
        width="50%"
        :visible.sync="visible"
        :confirm-working="isWorking"
        @confirm="confirm"
    >
        <div class="box">
            <div class="box-info">
                <i class="el-icon-info"></i>
                <span>最多可添加50个标签</span>
            </div>
            <div class="box-serch">
                <el-input v-model="value" placeholder="请输入请输入新标签"></el-input>
                <el-button type="primary" style="margin-left: 15px;" @click="add">添加</el-button>
            </div>
            <div class="box-list">
                <div class="box-list-item" v-for="(item, index) in list" :key="index">
                    <span>{{item.name}}</span>
                    <i class="el-icon-circle-close" @click="dele(item.id)"></i>
                </div>
            </div>
        </div>
    </GlobalWindow>
</template>
<script>
    import BaseOpera from '@/components/base/BaseOpera'
    import GlobalWindow from '@/components/common/GlobalWindow'
    import { createLabels, list, labelsDeleteById } from '@/api/business/knowledge'
    export default {
        name: 'tagLibrary',
        extends: BaseOpera,
        components: { GlobalWindow },
        data () {
            return {
                value: '',
                list: []
            }
        },
        created () {
            this.config({
                api: '/business/knowledge',
                'field.id': 'id'
            })
        },
        methods: {
            async open(title, target) {
                this.title = title
                await this.getData()
                this.visible = true
            },
            async getData() {
                this.list = await list()
            },
            // æ·»åŠ æ ‡ç­¾
            async add() {
                if (!this.value) return this.$message.warning('请先输入内容')
                let res = await createLabels({ name: this.value })
                await this.getData()
                this.$emit('refresh')
                this.value = ''
                this.$message.success('添加成功')
            },
            // åˆ é™¤
            async dele(id) {
                let res = await labelsDeleteById(id)
                await this.getData()
                this.$emit('refresh')
                this.$message.success('删除成功')
            }
        }
    }
</script>
<style lang="scss" scoped>
    .box {
        width: 100%;
        .box-info {
            width: 100%;
            display: flex;
            align-items: center;
            margin-bottom: 15px;
            span {
                color: rgba(154,154,154,1);
                font-size: 14px;
                margin-left: 6px;
            }
        }
        .box-serch {
            width: 100%;
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-bottom: 20px;
        }
        .box-list {
            width: 100%;
            display: flex;
            align-items: center;
            flex-wrap: wrap;
            .box-list-item {
                padding: 5px 10px;
                box-sizing: border-box;
                border-radius: 20px;
                display: flex;
                align-items: center;
                justify-content: space-between;
                background-color: rgba(239,239,239,1);
                cursor: pointer;
                margin-right: 15px;
                margin-bottom: 15px;
                span {
                    color: rgba(16,16,16,1);
                    font-size: 16px;
                    margin-right: 10px;
                }
                i {
                    font-size: 20px;
                    color: red;
                }
            }
        }
    }
</style>
company/src/views/business/caseEntry.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,186 @@
<template>
    <TableLayout :permissions="['business:company:query']">
        <!-- æœç´¢è¡¨å• -->
        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
            <el-form-item label="案件号" prop="reportNum">
                <el-input v-model="searchForm.reportNum" placeholder="请输入案件号" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="投保单位" prop="companyName">
                <el-input v-model="searchForm.companyName" placeholder="请输入投保单位" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="报案人" prop="informantName">
                <el-input v-model="searchForm.informantName" placeholder="请输入报案人" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="报案时间" prop="createDateStr">
                <el-date-picker
                    v-model="searchForm.createDateStr"
                    type="date"
                    placeholder="选择日期"
                    format="yyyy-MM-dd"
                    value-format="yyyy-MM-dd">
                </el-date-picker>
            </el-form-item>
            <el-form-item label="出险时间" prop="createDate">
                <el-date-picker
                    v-model="searchForm.createDate"
                    type="datetime"
                    placeholder="选择日期"
                    format="yyyy-MM-dd hh:mm:ss"
                    value-format="yyyy-MM-dd hh:mm:ss">
                </el-date-picker>
            </el-form-item>
            <el-form-item label="出险人" prop="extData.memberName">
                <el-input v-model="searchForm.extData.memberName" placeholder="请输入出险人" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="保险方案" prop="solutionName">
                <el-input v-model="searchForm.solutionName" placeholder="请输入保险方案" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="保单号" prop="extData.bxCode">
                <el-input v-model="searchForm.extData.bxCode" placeholder="请输入保单号" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="就诊类型" prop="inHospital">
                <el-select v-model="searchForm.inHospital" placeholder="请选择">
                    <el-option label="门诊" :value="1"></el-option>
                    <el-option label="住院" :value="0"></el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="案件状态" prop="status">
                <el-select v-model="searchForm.status" placeholder="请选择">
                    <el-option label="待立案" :value="2"></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="9"></el-option>
                    <el-option label="待核赔" :value="10"></el-option>
                    <el-option label="待结案" :value="12"></el-option>
                    <el-option label="已结案" :value="13"></el-option>
                    <el-option label="已撤案" :value="14"></el-option>
                </el-select>
            </el-form-item>
            <section>
                <el-button type="primary" @click="search">搜索</el-button>
                <el-button @click="reset">重置</el-button>
            </section>
        </el-form>
        <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
        <template v-slot:table-wrap>
            <ul class="toolbar">
                <li><el-button type="primary" @click="$refs.opearaCaseEntryWindow.open('案件录入')">案件录入</el-button></li>
                <li><el-button type="primary" @click="expr">导出</el-button></li>
            </ul>
            <el-table
                v-loading="isWorking.search"
                :data="tableData.list"
                stripe
            >
                <el-table-column prop="reportNum" label="案件号" min-width="150px" align="center"></el-table-column>
                <el-table-column prop="companyName" label="投保单位" min-width="150px" align="center"></el-table-column>
                <el-table-column prop="informantName" label="报案人" min-width="150px" align="center"></el-table-column>
                <el-table-column prop="createDateStr" label="报案时间" min-width="100px" align="center"></el-table-column>
                <el-table-column prop="createDate" label="出险时间" min-width="120px" align="center"></el-table-column>
                <el-table-column prop="memberName" label="出险人" min-width="120px" align="center"></el-table-column>
                <el-table-column prop="memberIdcard" label="身份证号" min-width="120px" align="center"></el-table-column>
                <el-table-column prop="solutionName" label="保险方案" min-width="120px" align="center"></el-table-column>
                <el-table-column prop="code" label="保单号" min-width="120px" align="center"></el-table-column>
                <el-table-column prop="baoxianStartTime" label="保险生效起期" min-width="120px" align="center"></el-table-column>
                <el-table-column prop="baoxianEndTime" label="保险生效止期" min-width="120px" align="center"></el-table-column>
                <el-table-column label="就诊类型" min-width="120px" align="center">
                    <template slot-scope="{row}">
                        <span v-if="row.inHospital === 1">门诊</span>
                        <span v-if="row.inHospital === 0">住院</span>
                    </template>
                </el-table-column>
                <el-table-column prop="pcAccount" label="赔付金额" min-width="120px" align="center"></el-table-column>
                <el-table-column prop="statusName" label="案件状态" min-width="120px" align="center"></el-table-column>
                <el-table-column
                    v-if="containPermissions(['business:company:update', 'business:company:delete'])"
                    label="操作"
                    min-width="120"
                    align="center"
                    fixed="right"
                >
                    <template slot-scope="{row}">
                        <el-button type="text">详情</el-button>
                        <el-button type="text" @click="$refs.opearaCaseEntryWindow.open('案件录入', row.id)">编辑</el-button>
                        <el-button type="text" @click="deleRow(row.id)">删除</el-button>
                    </template>
                </el-table-column>
            </el-table>
            <pagination
                @size-change="handleSizeChange"
                @current-change="handlePageChange"
                :pagination="tableData.pagination"
            >
            </pagination>
        </template>
        <!--    æ–°å»º    -->
        <OpearaCaseEntryWindow ref="opearaCaseEntryWindow" @success="handlePageChange" />
    </TableLayout>
</template>
<script>
    import BaseTable from '@/components/base/BaseTable'
    import TableLayout from '@/layouts/TableLayout'
    import Pagination from '@/components/common/Pagination'
    import OpearaCaseEntryWindow from '@/components/business/OpearaCaseEntryWindow'
    import { exportFiles } from '@/api/business/settleClaimsMovement'
    import { dele } from '@/api/business/settleClaims'
    export default {
        name: 'caseEntry',
        extends: BaseTable,
        components: { TableLayout, Pagination, OpearaCaseEntryWindow },
        data () {
            return {
                // æœç´¢
                searchForm: {
                    origin: 1,
                    reportNum: '',
                    companyName: '',
                    informantName: '',
                    createDateStr: '',
                    createDate: '',
                    inHospital: '',
                    status: '',
                    solutionName: '',
                    extData: {
                        bxCode: '',
                        memberName: '',
                    }
                }
            }
        },
        created () {
            this.config({
                module: '理赔申请表',
                api: '/business/settleClaimsMovement',
                'field.id': 'id',
                'field.main': 'id'
            })
            this.search()
        },
        methods: {
            expr() {
                exportFiles({
                    capacity: 60000,
                    page: 1,
                    model: this.searchForm
                }).then(res => {
                    this.download(res)
                })
            },
            deleRow(id) {
                this.$confirm('此操作将永久删除该数据, æ˜¯å¦ç»§ç»­?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    type: 'warning'
                }).then(async() => {
                    await dele(id)
                    this.search()
                    this.$message.success('删除成功')
                }).catch(() => {
                });
            }
        }
    }
</script>
company/src/views/business/dataBoard.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,493 @@
<template>
    <div class="box">
        <div class="box_shua">
            <el-button icon="el-icon-refresh" type="primary">刷新数据</el-button>
        </div>
        <div class="box_head">
            <div class="box_head_info">
                <i class="el-icon-info"></i>
                <span>展示当前系统合计总数,每天更新数据</span>
            </div>
            <div class="box_head_list">
                <div class="box_head_list_item">
                    <div class="box_head_list_item_top">
                        <span>保险公司数</span>
                        <span>本月 +3</span>
                    </div>
                    <div class="box_head_list_item_bottom">32</div>
                </div>
                <div class="box_head_list_item">
                    <div class="box_head_list_item_top">
                        <span>保单数</span>
                        <span>本月 +12</span>
                    </div>
                    <div class="box_head_list_item_bottom">88</div>
                </div>
                <div class="box_head_list_item">
                    <div class="box_head_list_item_top">
                        <span>在保人数</span>
                        <span>本月 +300</span>
                    </div>
                    <div class="box_head_list_item_bottom">2,000</div>
                </div>
                <div class="box_head_list_item">
                    <div class="box_head_list_item_top">
                        <span>已收费用合计</span>
                        <span>本月 +813,789.00</span>
                    </div>
                    <div class="box_head_list_item_bottom">Â¥6,345,654.00</div>
                </div>
            </div>
        </div>
        <div class="box_chart">
            <div class="box_chart_item">
                <div class="box_chart_item_info">
                    <span>总理赔金额</span>
                    <i class="el-icon-info"></i>
                </div>
                <div class="box_chart_item_price">Â¥2,345,654.00</div>
                <div class="box_chart_item_tu" id="tu1"></div>
            </div>
            <div class="box_chart_item">
                <div class="box_chart_item_info">
                    <span>总理赔案件数</span>
                    <i class="el-icon-info"></i>
                </div>
                <div class="box_chart_item_price">1,234</div>
                <div class="box_chart_item_tu" id="tu2"></div>
            </div>
            <div class="box_chart_item">
                <div class="box_chart_item_info">
                    <span>平均理赔处理时长</span>
                    <i class="el-icon-info"></i>
                </div>
                <div class="box_chart_item_price">10.5天</div>
                <div class="box_chart_item_tu" id="tu3"></div>
            </div>
        </div>
        <div class="box_shuju">
            <div class="box_shuju_item">
                <div class="box_shuju_item_top">
                    <span>受理率</span>
                    <i class="el-icon-info"></i>
                </div>
                <div class="box_shuju_item_bottom">95.3%</div>
            </div>
            <div class="box_shuju_item">
                <div class="box_shuju_item_top">
                    <span>拒赔率</span>
                    <i class="el-icon-info"></i>
                </div>
                <div class="box_shuju_item_bottom">12.8%</div>
            </div>
            <div class="box_shuju_item">
                <div class="box_shuju_item_top">
                    <span>结案率</span>
                    <i class="el-icon-info"></i>
                </div>
                <div class="box_shuju_item_bottom">88.9%</div>
            </div>
        </div>
        <div class="box_content">
            <div class="box_content_left">
                <div class="box_content_left_title">风险案件监控</div>
                <div class="box_content_left_list">
                    <div class="box_content_left_list_item" :style="{ backgroundColor: item.backgroundColor }" v-for="(item, index) in list" :key="index">
                        <div class="box_content_left_list_item_top">
                            <span>{{item.title}}</span>
                            <span :style="{ color: item.color }">{{item.num}}</span>
                        </div>
                        <div class="box_content_left_list_item_bottom">
                            <span>较上月</span>
                            <div class="box_content_left_list_item_bottom_lv">
                                8.3%
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="box_content_right">
                <div class="box_content_right_title">风险案件监控</div>
            </div>
        </div>
    </div>
</template>
<script>
    import * as echarts from 'echarts'
    export default {
        name: "dataBoard",
        data() {
            return {
                list: [
                    {
                        title: '多次出险',
                        num: 0,
                        color: '#EF4444',
                        backgroundColor: '#FEF2F2'
                    },
                    {
                        title: '重复报案',
                        num: 0,
                        color: '#EA580C',
                        backgroundColor: '#FFF7ED'
                    },
                    {
                        title: '索赔过多',
                        num: 0,
                        color: '#CA8A04',
                        backgroundColor: '#FEFCE8'
                    },
                    {
                        title: '多次出险',
                        num: 0,
                        color: '#2563EB',
                        backgroundColor: '#EFF6FF'
                    },
                    {
                        title: '新员工出险',
                        num: 0,
                        color: '#9333EA',
                        backgroundColor: '#FAF5FF'
                    },
                    {
                        title: '延迟报案',
                        num: 0,
                        color: '#4F46E5',
                        backgroundColor: '#EEF2FF'
                    }
                ]
            }
        },
        created() {
            this.$nextTick(() => {
                this.setChart1()
                this.setChart2()
                this.setChart3()
            })
        },
        methods: {
            setChart1() {
                const chartDom = document.getElementById('tu1')
                const myChart = echarts.init(chartDom)
                let option
                option = {
                    grid: {
                        left: '3%',
                        right: '3%',
                        top: '10%',
                        bottom: '0%',
                        containLabel: true
                    },
                    xAxis: {
                        type: 'category',
                        boundaryGap: false,
                        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
                    },
                    yAxis: {
                        type: 'value'
                    },
                    series: [
                        {
                            data: [2, 7, 3, 12, 16, 9, 6],
                            type: 'line',
                            areaStyle: {},
                            smooth: true
                        }
                    ]
                }
                option && myChart.setOption(option)
            },
            setChart2() {
                const chartDom = document.getElementById('tu2')
                const myChart = echarts.init(chartDom)
                let option
                option = {
                    grid: {
                        left: '3%',
                        right: '3%',
                        top: '10%',
                        bottom: '0%',
                        containLabel: true
                    },
                    xAxis: {
                        type: 'category',
                        boundaryGap: false,
                        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
                    },
                    yAxis: {
                        type: 'value'
                    },
                    series: [
                        {
                            data: [2, 7, 3, 12, 16, 9, 6],
                            type: 'line',
                            areaStyle: {},
                            smooth: true
                        }
                    ]
                }
                option && myChart.setOption(option)
            },
            setChart3() {
                const chartDom = document.getElementById('tu3')
                const myChart = echarts.init(chartDom)
                let option
                option = {
                    grid: {
                        left: '3%',
                        right: '3%',
                        top: '10%',
                        bottom: '0%',
                        containLabel: true
                    },
                    xAxis: {
                        type: 'category',
                        boundaryGap: false,
                        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
                    },
                    yAxis: {
                        type: 'value'
                    },
                    series: [
                        {
                            data: [2, 7, 3, 12, 16, 9, 6],
                            type: 'line',
                            areaStyle: {},
                            smooth: true
                        }
                    ]
                }
                option && myChart.setOption(option)
            }
        }
    }
</script>
<style lang="scss" scoped>
    .box {
        width: 100%;
        padding: 0 10px;
        box-sizing: border-box;
        .box_shua {
            width: 100%;
            display: flex;
            justify-content: end;
            margin-bottom: 10px;
        }
        .box_head {
            width: 100%;
            padding: 0 15px 15px 15px;
            box-sizing: border-box;
            background-color: #ffffff;
            border-radius: 20px;
            display: flex;
            flex-direction: column;
            box-shadow: 0 2px 6px 0 rgba(206,206,206,0.21);
            .box_head_info {
                width: 100%;
                display: flex;
                align-items: center;
                margin: 8px 0;
                span {
                    color: rgba(16,16,16,1);
                    font-size: 14px;
                    margin-left: 5px;
                }
            }
            .box_head_list {
                width: 100%;
                display: flex;
                align-items: center;
                justify-content: space-between;
                .box_head_list_item {
                    width: 24%;
                    height: 100px;
                    padding: 15px;
                    box-sizing: border-box;
                    background-color: rgba(239,246,255,1);
                    border-radius: 20px;
                    display: flex;
                    flex-direction: column;
                    justify-content: space-between;
                    .box_head_list_item_top {
                        display: flex;
                        align-items: center;
                        justify-content: space-between;
                        span {
                            &:nth-child(1) {
                                color: rgba(154,154,154,1);
                                font-size: 14px;
                            }
                            &:nth-child(2) {
                                color: rgba(255,58,48,1);
                                font-size: 14px;
                            }
                        }
                    }
                    .box_head_list_item_bottom {
                        color: rgba(16,16,16,1);
                        font-size: 22px;
                        font-weight: bold;
                    }
                }
            }
        }
        .box_chart {
            width: 100%;
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-top: 15px;
            .box_chart_item {
                width: 32.5%;
                height: 225px;
                padding: 15px;
                box-sizing: border-box;
                background-color: #ffffff;
                border-radius: 20px;
                box-shadow: 0 2px 6px 0 rgba(206,206,206,0.21);
                .box_chart_item_info {
                    display: flex;
                    align-items: center;
                    span {
                        color: rgba(154,154,154,1);
                        font-size: 14px;
                        margin-right: 5px;
                    }
                }
                .box_chart_item_price {
                    color: rgba(16,16,16,1);
                    font-size: 22px;
                    margin-top: 4px;
                    font-weight: bold;
                }
                .box_chart_item_tu {
                    width: 100%;
                    height: 130px;
                }
            }
        }
        .box_shuju {
            width: 32.5%;
            height: 93px;
            border-radius: 20px;
            margin-top: 15px;
            margin-bottom: 15px;
            padding: 15px;
            box-sizing: border-box;
            background-color: #ffffff;
            box-shadow: 0 2px 6px 0 rgba(206,206,206,0.21);
            display: flex;
            align-items: center;
            justify-content: space-between;
            .box_shuju_item {
                width: 33%;
                height: 100%;
                display: flex;
                flex-direction: column;
                justify-content: space-between;
                align-items: center;
                .box_shuju_item_top {
                    display: flex;
                    align-items: center;
                    span {
                        color: rgba(154,154,154,1);
                        font-size: 14px;
                        margin-right: 4px;
                    }
                }
                .box_shuju_item_bottom {
                    color: rgba(16,16,16,1);
                    font-size: 22px;
                    font-weight: bold;
                }
            }
        }
        .box_content {
            width: 100%;
            height: 270px;
            display: flex;
            align-items: center;
            justify-content: space-between;
            .box_content_left {
                width: 66%;
                height: 100%;
                background-color: #fff;
                padding: 15px;
                box-sizing: border-box;
                .box_content_left_title {
                    font-weight: bold;
                    font-size: 16px;
                    color: #101010;
                    margin-bottom: 15px;
                }
                .box_content_left_list {
                    width: 100%;
                    display: flex;
                    flex-wrap: wrap;
                    align-items: center;
                    justify-content: space-between;
                    .box_content_left_list_item {
                        width: 32%;
                        height: 94px;
                        padding: 16px 20px;
                        box-sizing: border-box;
                        border-radius: 15px;
                        background-color: #FEF2F2;
                        display: flex;
                        flex-direction: column;
                        justify-content: space-between;
                        margin-bottom: 15px;
                        .box_content_left_list_item_top {
                            width: 100%;
                            display: flex;
                            align-items: center;
                            justify-content: space-between;
                            span {
                                &:nth-child(1) {
                                    color: rgba(75,85,99,1);
                                    font-size: 18px;
                                }
                                &:nth-child(2) {
                                    color: rgba(239,68,68,1);
                                    font-size: 16px;
                                }
                            }
                        }
                        .box_content_left_list_item_bottom {
                            width: 100%;
                            display: flex;
                            align-items: center;
                            span {
                                color: rgba(16,16,16,1);
                                font-size: 14px;
                                margin-right: 6px;
                            }
                            .box_content_left_list_item_bottom_lv {
                                color: rgba(239,68,68,1);
                                font-size: 14px;
                            }
                        }
                    }
                }
            }
            .box_content_right {
                width: 33%;
                height: 100%;
                padding: 15px;
                box-sizing: border-box;
                background-color: #fff;
                .box_content_right_title {
                    font-weight: bold;
                    font-size: 16px;
                    color: #101010;
                    margin-bottom: 15px;
                }
            }
        }
    }
</style>
company/src/views/business/insurance.vue
@@ -40,6 +40,12 @@
                <el-table-column prop="englishName" label="英文名称" min-width="100px"></el-table-column>
                <el-table-column prop="linkName" label="联系人" min-width="100px"></el-table-column>
                <el-table-column prop="linkPhone" label="联系电话" min-width="100px"></el-table-column>
                <el-table-column label="是否维护" min-width="100px">
                    <template slot-scope="{row}">
                        <span v-if="row.lpFileStatus === 1">已维护</span>
                        <span v-else>未维护</span>
                    </template>
                </el-table-column>
                <el-table-column label="启用状态" min-width="100px">
                    <template slot-scope="{row}">
                        <el-switch
@@ -55,12 +61,13 @@
                <el-table-column
                    v-if="containPermissions(['business:insurance:update', 'business:insurance:delete'])"
                    label="操作"
                    min-width="120"
                    min-width="150"
                    fixed="right"
                >
                    <template slot-scope="{row}">
                        <el-button type="text" @click="$refs.OperaInsuranceDescWindow.open('保险公司详情', row)" icon="el-icon-edit" v-permissions="['business:insurance:update']">查看详情</el-button>
                        <el-button type="text" @click="$refs.operaInsuranceWindow.open('修改保险公司', row)" icon="el-icon-edit" v-permissions="['business:insurance:update']">修改</el-button>
                        <el-button type="text" @click="$refs.setCompany.open('理赔材料配置', row.id)" icon="el-icon-edit">设置</el-button>
                    </template>
                </el-table-column>
            </el-table>
@@ -75,6 +82,8 @@
        <OperaInsuranceWindow ref="operaInsuranceWindow" @success="handlePageChange"/>
        <!-- è¯¦æƒ… -->
        <OperaInsuranceDescWindow ref="OperaInsuranceDescWindow" @success="handlePageChange"/>
        <!-- è®¾ç½® -->
        <SetCompany ref="setCompany" @success="handlePageChange"/>
    </TableLayout>
</template>
@@ -84,11 +93,12 @@
    import Pagination from '@/components/common/Pagination'
    import OperaInsuranceWindow from '@/components/business/OperaInsuranceWindow'
    import OperaInsuranceDescWindow from '@/components/business/OperaInsuranceDescWindow'
    import SetCompany from '@/components/business/setCompany'
    import { updateStatus } from '@/api/business/insurance'
    export default {
        name: 'Insurance',
        extends: BaseTable,
        components: { TableLayout, Pagination, OperaInsuranceWindow, OperaInsuranceDescWindow },
        components: { TableLayout, Pagination, OperaInsuranceWindow, OperaInsuranceDescWindow, SetCompany },
        data () {
            return {
                // æœç´¢
company/src/views/business/knowledge.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,189 @@
<template>
    <TableLayout :permissions="['business:knowledge:query']">
        <!-- æœç´¢è¡¨å• -->
        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
            <el-form-item label="标题/内容" prop="title">
                <el-input v-model="searchForm.title" placeholder="请输入标题内容" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="省份编码" prop="provinceId">
                <el-input v-model="searchForm.provinceId" placeholder="请输入省份编码" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item label="城市编码" prop="cityId">
                <el-input v-model="searchForm.cityId" placeholder="请输入城市编码" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <section>
                <el-button type="primary" @click="search">搜索</el-button>
<!--                <el-button type="primary" :loading="isWorking.export" v-permissions="['business:knowledge:exportExcel']" @click="exportExcel">导出</el-button>-->
                <el-button @click="reset">重置</el-button>
            </section>
        </el-form>
        <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
        <template v-slot:table-wrap>
            <ul class="toolbar" v-permissions="['business:knowledge:create', 'business:knowledge:delete']">
                <li><el-button type="primary" @click="$refs.operaKnowledgeWindow.open('新建')" icon="el-icon-plus" v-permissions="['business:knowledge:create']">新建</el-button></li>
<!--                <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:knowledge:delete']">删除</el-button></li>-->
            </ul>
            <div class="list" v-loading="isWorking.search" v-if="tableData.list.length > 0">
                <div class="list-item" v-for="(item, index) in tableData.list" :key="index">
                    <div class="list-item-title">
                        <span>{{item.title}}</span>
                        <i class="el-icon-arrow-right"></i>
                    </div>
                    <div class="list-item-cates" v-if="item.labelNames">
                        <div class="list-item-cates-row" v-for="(label, index) in item.labelNames.split(',')" :key="index">政策法规labels</div>
                        <div class="list-item-cates-row">{{label}}</div>
                    </div>
                    <div class="list-item-footer">
                        <div class="left">
                            <div class="list-item-footer-row">适用地区:{{item.cityName ? item.cityName : item.provinceName}}</div>
                            <div class="list-item-footer-row">适用年份:{{item.yearInfo}}</div>
                        </div>
                        <div class="right">
                            <el-button type="text" size="medium" style="margin-right: 15px; color: red;" @click="dele(item.id)">删除</el-button>
                            <el-button type="text" size="medium" @click="$refs.operaKnowledgeWindow.open('编辑', item)">修改</el-button>
                        </div>
                    </div>
                </div>
            </div>
            <div class="wu" v-else v-loading="isWorking.search">
                æš‚无数据
            </div>
            <pagination
                @size-change="handleSizeChange"
                @current-change="handlePageChange"
                :pagination="tableData.pagination"
            >
            </pagination>
        </template>
        <!-- æ–°å»º/修改 -->
        <OperaKnowledgeWindow ref="operaKnowledgeWindow" @success="handlePageChange"/>
    </TableLayout>
</template>
<script>
    import BaseTable from '@/components/base/BaseTable'
    import TableLayout from '@/layouts/TableLayout'
    import Pagination from '@/components/common/Pagination'
    import OperaKnowledgeWindow from '@/components/business/OperaKnowledgeWindow'
    import { deleteById } from '@/api/business/knowledge'
    export default {
        name: 'Knowledge',
        extends: BaseTable,
        components: { TableLayout, Pagination, OperaKnowledgeWindow },
        data () {
            return {
                // æœç´¢
                searchForm: {
                    provinceId: '',
                    cityId: '',
                    title: ''
                }
            }
        },
        created () {
            this.config({
                module: '知识库信息表',
                api: '/business/knowledge',
                'field.id': 'id',
                'field.main': 'id'
            })
            this.search()
        },
        methods: {
            dele(id) {
                this.$confirm('此操作将永久删除该数据, æ˜¯å¦ç»§ç»­?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    type: 'warning'
                }).then(async () => {
                    let res = await deleteById(id)
                    this.search()
                    this.$message.success('删除成功')
                }).catch(() => {
                });
            }
        }
    }
</script>
<style lang="scss" scoped>
    .wu {
        width: 100%;
        height: 200px;
        display: flex;
        align-items: center;
        justify-content: center;
        color: #222222;
        font-size: 18px;
        font-weight: bold;
    }
    .list {
        width: 100%;
        display: flex;
        flex-direction: column;
        .list-item {
            width: 100%;
            padding: 20px;
            border-radius: 10px;
            box-sizing: border-box;
            border: 1px solid #ececec;
            margin-bottom: 15px;
            cursor: pointer;
            &:last-child {
                margin: 0;
            }
            .list-item-title {
                width: 100%;
                display: flex;
                align-items: center;
                justify-content: space-between;
                span {
                    flex: 1;
                    color: rgba(54,98,227,1);
                    font-size: 18px;
                }
                i {
                    flex-shrink: 0;
                    margin-left: 30px;
                    font-size: 22px;
                    color: rgba(54,98,227,1);
                }
            }
            .list-item-cates {
                width: 100%;
                display: flex;
                align-items: center;
                margin: 10px 0;
                .list-item-cates-row {
                    padding: 3px 8px;
                    box-sizing: border-box;
                    border-radius: 4px;
                    background-color: rgba(190,190,190,1);
                    color: rgba(255,255,255,1);
                    font-size: 12px;
                    margin-left: 15px;
                    &:first-child {
                        margin: 0 !important;
                    }
                }
            }
            .list-item-footer {
                width: 100%;
                display: flex;
                align-items: center;
                justify-content: space-between;
                .left {
                    display: flex;
                    align-items: center;
                    .list-item-footer-row {
                        color: rgba(154,154,154,1);
                        font-size: 14px;
                        margin-right: 50px;
                    }
                }
            }
        }
    }
</style>
company/src/views/business/riskReminder.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,168 @@
<template>
    <div class="tx">
        <div class="tx_item">
            <div class="tx_item_head">
                <span>多次出险提醒</span>
                <el-switch active-value="1" inactive-value="0" v-model="form.riskTimesOpen"></el-switch>
            </div>
            <div class="tx_item_content">
                <span>规则设置:同一人一年内报案</span>
                <el-input-number style="margin: 0 15px;" v-model="form.riskTimesReportTimes" :min="0"></el-input-number>
                <span>次及以上,进行提醒。</span>
            </div>
        </div>
        <div class="tx_item">
            <div class="tx_item_head">
                <span>疑似重复报案提醒</span>
                <el-switch active-value="1" inactive-value="0" v-model="form.riskRepeatReportOpen"></el-switch>
            </div>
            <div class="tx_item_content">
                <span>规则设置:</span>
                <el-input-number style="margin: 0 15px;" v-model="form.riskRepeatReportTime" :min="0"></el-input-number>
                <el-select v-model="form.riskRepeatReportTimeUnit" style="width: 100px; margin-right: 15px;" placeholder="请选择">
                    <el-option label="小时" value="1"></el-option>
                    <el-option label="天" value="2"></el-option>
                </el-select>
                <span>内,提交同一出险人案件2次及以上,进行提醒。</span>
            </div>
        </div>
        <div class="tx_item">
            <div class="tx_item_head">
                <span>索赔次数过多提醒</span>
                <el-switch active-value="1" inactive-value="0" v-model="form.riskClaimTimesOpen"></el-switch>
            </div>
            <div class="tx_item_content">
                <span>规则设置:同一个保单1年内索赔次数超过</span>
                <el-input-number style="margin: 0 15px;" v-model="form.riskClaimTimes" :min="0"></el-input-number>
                <span>次,进行提醒。</span>
            </div>
        </div>
        <div class="tx_item">
            <div class="tx_item_head">
                <span>新员工出险提醒</span>
                <el-switch active-value="1" inactive-value="0" v-model="form.riskNewMemberOpen"></el-switch>
            </div>
            <div class="tx_item_content">
                <span>规则设置:保单生效的</span>
                <el-input-number style="margin: 0 15px;" v-model="form.riskNewMemberTime" :min="0"></el-input-number>
                <el-select v-model="form.riskNewMemberTimeUnit" style="width: 100px; margin-right: 15px;" placeholder="请选择">
                    <el-option label="小时" value="1"></el-option>
                    <el-option label="天" value="2"></el-option>
                </el-select>
                <span>内出险,进行提醒。</span>
            </div>
        </div>
        <div class="tx_item">
            <div class="tx_item_head">
                <span>敏感词设置</span>
                <el-switch active-value="1" inactive-value="0" v-model="form.riskSensitiveWordsOpen"></el-switch>
            </div>
            <div class="tx_item_content">
                <span>规则设置:</span>
                <el-input
                    type="textarea"
                    :rows="5"
                    placeholder="每个敏感词请用“;”分隔,如骨折;高空;夜间;交通事故;搬运等其他字符"
                    v-model="form.riskSensitiveWords">
                </el-input>
            </div>
        </div>
        <div class="tx_footer">
            <el-button type="primary" :disabled="loading" v-loading="loading" @click="submit">保存</el-button>
        </div>
    </div>
</template>
<script>
    import { updRiskConfig, getRiskConfig } from '@/api/business/settleRisk'
    export default {
        name: "riskReminder",
        data() {
            return {
                form: {
                    riskClaimTimes: '0',
                    riskClaimTimesOpen: '0',
                    riskNewMemberOpen: '0',
                    riskNewMemberTime: '0',
                    riskNewMemberTimeUnit: '0',
                    riskRepeatReportOpen: '0',
                    riskRepeatReportTime: '0',
                    riskRepeatReportTimeUnit: '0',
                    riskSensitiveWords: '0',
                    riskSensitiveWordsOpen: '0',
                    riskTimesOpen: '0',
                    riskTimesReportTimes: '0'
                },
                loading: false
            }
        },
        created() {
            this.getRiskConfigs()
        },
        methods: {
            async getRiskConfigs() {
                let res = await getRiskConfig()
                for (const key in this.form) {
                    this.form[key] = res[key]
                }
            },
            submit() {
                this.loading = true
                updRiskConfig(this.form)
                    .then(res => {
                        this.getRiskConfigs()
                        this.$message.success('保存成功')
                    })
                    .finally(() => {
                        this.loading = false
                    })
            }
        }
    }
</script>
<style lang="scss" scoped>
    .tx {
        width: 100%;
        padding: 20px;
        box-sizing: border-box;
        background-color: #ffffff;
        display: flex;
        flex-wrap: wrap;
        justify-content: space-between;
        .tx_footer {
            width: 100%;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        .tx_item {
            width: 49%;
            padding: 30px 20px;
            box-sizing: border-box;
            background-color: #ffffff;
            border: 1px solid #ececec;
            margin-bottom: 20px;
            .tx_item_head {
                display: flex;
                align-items: center;
                span {
                    color: rgba(16,16,16,1);
                    font-size: 16px;
                    font-weight: bold;
                    margin-right: 15px;
                }
            }
            .tx_item_content {
                display: flex;
                align-items: start;
                margin-top: 30px;
                span {
                    flex-shrink: 0;
                    color: rgba(16,16,16,1);
                    font-size: 14px;
                }
            }
        }
    }
</style>