MrShi
2025-05-26 daf76fb0807550f6e49545e10603a29e414f3b84
提交
已添加6个文件
已修改8个文件
3421 ■■■■ 文件已修改
company/.env.development 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/.env.developmentCom 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/api/business/settleRisk.js 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/OpearaCaseEntryWindow.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/OperaSettleClaimsWindow.vue 537 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/acceptance.vue 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/additionMaterial_ba.vue 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/adjustment.vue 306 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/caseProgress.vue 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/business/riskCaseReminder.vue 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/common/GlobalWindow.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/enterprise/onlineReporting.vue 1560 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/components/enterprise/onlineReportingCopy.vue 398 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company/src/views/business/settleClaims.vue 67 ●●●● 补丁 | 查看 | 原始文档 | 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.140:10030/'
VUE_APP_API = 'http://192.168.0.143: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.140:10031/'
VUE_APP_API = 'http://192.168.0.143:10031/'
# VUE_APP_API = 'https://www.yyb.red/yyb_web_api/'
company/src/api/business/settleRisk.js
@@ -14,7 +14,79 @@
    })
}
// ç†èµ”报案
export function saveSettleClaims (data) {
    return request.post('/business/settleRisk/saveSettleClaims', data, {
        trim: true
    })
}
// æ’¤é”€æŠ¥æ¡ˆ
export function returnSettle (data) {
    return request.post('/business/settleRisk/returnSettle', data, {
        trim: true
    })
}
// å¹³å°ç«‹æ¡ˆæˆ–退回
export function register (data) {
    return request.post('/business/settleRisk/register', data, {
        trim: true
    })
}
// å¹³å°å—理业务
export function acceptance (data) {
    return request.post('/business/settleRisk/acceptance', data, {
        trim: true
    })
}
// æ·»åŠ æŠ¥æ¡ˆå·
export function addReportNum (data) {
    return request.post('/business/settleRisk/addReportNum', data, {
        trim: true
    })
}
// æ·»åŠ å¤‡æ³¨
export function addRemark (data) {
    return request.post('/business/settleRisk/addRemark', data, {
        trim: true
    })
}
// èŽ·å–è¯¦æƒ…
export function getRiskConfig () {
    return request.get('/business/settleRisk/getRiskConfig')
}
// å—理业务
export function getDiscussProblemType () {
    return request.get('/business/settleRisk/getDiscussProblemType')
}
// è¡¥å……说明
export function saveSupplementDescribe (data) {
    return request.post('/business/settleRisk/saveSupplementDescribe', data)
}
// ä¿®æ”¹æ¡ˆä»¶ç±»åž‹
export function updCaseType (data) {
    return request.post('/business/settleRisk/updCaseType', data)
}
// æ·»åŠ ææ–™
export function saveSupplementFile (data) {
    return request.post('/business/settleRisk/saveSupplementFile', data)
}
// ç†èµ”
export function compensation (data) {
    return request.post('/business/settleRisk/compensation', data)
}
// æ ¸èµ”
export function nuclearCompensation (data) {
    return request.post('/business/settleRisk/nuclearCompensation', data)
}
company/src/components/business/OpearaCaseEntryWindow.vue
@@ -155,7 +155,7 @@
                                            <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)" />
                                    <upload width="100px" height="100px" :list="[]" accept=".png,.jpg,.jpeg,.mp4,.word,.xlsx,.xls,.pdf,.excel" folder="settle" @success="claimsUploadFile($event, 7)" />
                                </div>
                            </el-form-item>
                        </div>
@@ -295,7 +295,7 @@
                                            <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)" />
                                    <upload width="100px" height="100px" :list="[]" accept=".png,.jpg,.jpeg,.mp4,.word,.xlsx,.xls,.pdf,.excel" folder="settle" @success="claimsUploadFile($event, 6)" />
                                </div>
                            </el-form-item>
                        </div>
@@ -603,7 +603,7 @@
                                        <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)" />
                                <upload width="100px" height="100px" :list="[]" accept=".png,.jpg,.jpeg,.mp4,.word,.xlsx,.xls,.pdf,.excel" folder="settle" @success="claimsUploadFile($event, 1)" />
                            </div>
                        </div>
                        <div class="box_item_list_row" style="width: 100%; margin-bottom: 30px;">
@@ -627,7 +627,7 @@
                                        <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)" />
                                <upload width="100px" height="100px" :list="[]" accept=".png,.jpg,.jpeg,.mp4,.word,.xlsx,.xls,.pdf,.excel" folder="settle" @success="claimsUploadFile($event, 2)" />
                            </div>
                        </div>
                        <div class="box_item_list_row" style="width: 100%; margin-bottom: 30px;">
@@ -651,7 +651,7 @@
                                        <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)" />
                                <upload width="100px" height="100px" :list="[]" accept=".png,.jpg,.jpeg,.mp4,.word,.xlsx,.xls,.pdf,.excel" folder="settle" @success="claimsUploadFile($event, 3)" />
                            </div>
                        </div>
                        <div class="box_item_list_row" style="width: 100%; margin-bottom: 30px;">
@@ -675,7 +675,7 @@
                                        <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)" />
                                <upload width="100px" height="100px" :list="[]" accept=".png,.jpg,.jpeg,.mp4,.word,.xlsx,.xls,.pdf,.excel" folder="settle" @success="claimsUploadFile($event, 4)" />
                            </div>
                        </div>
                        <div class="box_item_list_row" style="width: 100%; margin-bottom: 30px;">
@@ -699,7 +699,7 @@
                                        <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)" />
                                <upload width="100px" height="100px" :list="[]" accept=".png,.jpg,.jpeg,.mp4,.word,.xlsx,.xls,.pdf,.excel" folder="settle" @success="claimsUploadFile($event, 5)" />
                            </div>
                        </div>
                    </div>
@@ -850,7 +850,7 @@
                        { required: true, message: '不能为空', trigger: 'blur' }
                    ]
                },
                uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/upload?folder=SETTLE_FILE',
                uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/upload?folder=settle',
                totalPrice: 0,
                list1: [],
                list2: [],
company/src/components/business/OperaSettleClaimsWindow.vue
@@ -7,18 +7,37 @@
        :confirm-working="isWorking"
        @confirm="confirm"
    >
        <div class="box">
        <div class="box" v-if="info">
            <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" v-for="(item, index) in info.parentStatusVOList" :key="index">
                    <div v-if="info.parentStatusVOList.length - 1 !== index" :class="item.optDate ? 'box_status_row_xian statusColor1' : 'box_status_row_xian'"></div>
                    <div :class="item.optDate ? 'box_status_row_icon statusColor1' : info.parentStatusVOList[index - 1].optDate ? 'box_status_row_icon statusColor2 statusColor3' : 'box_status_row_icon'"></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 class="title">{{item.parentTitle}}</div>
                        <div class="info" v-if="item.childTitle">{{item.childTitle}}</div>
                        <div class="info" v-if="item.optDate">{{item.optDate}}</div>
                    </div>
                </div>
            </div>
            <div class="box_desc">
                <div class="box_desc_head">
                    <div class="box_desc_title">
                        <i class="el-icon-success"></i>
                        <span class="box_desc_title_val">理算完成</span>
                    </div>
                </div>
                <div class="box_desc_ls">
                    <span>理算赔付金额合计:</span>
                    <span>Â¥{{info.claimAccount + info.otherAccount}}</span>
                </div>
                <div class="box_desc_lslist">
                    <div class="box_desc_lslist_title">赔付详情</div>
                    <div class="box_desc_lslist_l">
                        <div class="box_desc_lslist_l_row" v-for="(item, index) in JSON.parse(info.accountContent).filter(row => row.type === 0)" :key="index">
                            <span>{{item.name}}</span>
                            <span>{{item.fee}}</span>
                            <span>{{item.describe}}</span>
                        </div>
                    </div>
                </div>
            </div>
@@ -26,64 +45,82 @@
                <div class="box_desc_head">
                    <div class="box_desc_title">
                        <span class="box_desc_title_val">报案详情</span>
                        <div class="box_desc_title_zt" v-if="info.statusName">{{info.statusName}}</div>
                        <div class="box_desc_title_tips" v-if="info.isRisk === 1">
                            <i class="el-icon-warning"></i>
                            <span>风险案件</span>
                        </div>
                        <el-select v-model="info.caseType" @change="setCaseType" style="width: 100px;" placeholder="案件类型" v-if="[9,10,11].includes(info.status)">
                            <el-option label="医疗" :value="1"></el-option>
                            <el-option label="伤残" :value="2"></el-option>
                            <el-option label="死亡" :value="3"></el-option>
                        </el-select>
                    </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>
                        <template v-if="userInfo.type === 1">
                            <el-button type="danger" @click="revoke()" v-if="[1,2,3,4,5,9,7,10,11].includes(info.status)">撤销报案</el-button>
                        </template>
                        <template v-if="userInfo.type === 0">
                            <el-button type="danger" @click="returnCase" v-if="[1,2].includes(info.status)">退回</el-button>
                            <el-button type="primary" @click="register" v-if="[1,2].includes(info.status)">立案</el-button>
                            <el-button type="primary" @click="$refs.acceptance.open('案件受理', info.id)" v-if="[3,5].includes(info.status)">受理</el-button>
                            <el-button type="primary" @click="addRemark" v-if="![0,1,2,4,14].includes(info.status)">备注</el-button>
                            <el-button type="primary" @click="addReport(1)" v-if="[3].includes(info.status) && info.reportNumStatus === 0">添加报案号</el-button>
                            <el-button type="primary" @click="addReport(2)" v-if="[9].includes(info.status) && info.reportNumStatus === 1">编辑报案号</el-button>
                            <el-button type="primary" @click="$refs.adjustment.open('理算', info.id, 1)" v-if="[9].includes(info.status)">理算</el-button>
                            <el-button type="primary" @click="$refs.adjustment.open('重新理算', info.id, 1)" v-if="[10].includes(info.status)">重新理算</el-button>
                            <el-button type="primary" @click="$refs.adjustment.open('核赔', info.id, 2)" v-if="[10].includes(info.status)">核赔</el-button>
                            <el-button type="primary" @click="supplementaryMaterials" v-if="[9].includes(info.status)">补充材料</el-button>
                            <el-button type="primary" @click="$refs.additionMaterial_ba.open('添加材料', info.id)" v-if="[9,10].includes(info.status)">添加材料</el-button>
                        </template>
                        <el-button icon="el-icon-refresh-left" type="primary" circle @click="$refs.caseProgress.open('案件进度', info.settleClaimsLogList)" v-if="![0,14].includes(info.status)"></el-button>
                    </div>
                </div>
                <div class="box_desc_list">
                    <div class="box_desc_list_row">
                        æŠ¥æ¡ˆæ—¶é—´ï¼š2024-09-12 03:50
                        æŠ¥æ¡ˆæ—¶é—´ï¼š{{info.createDate}}
                    </div>
                    <div class="box_desc_list_row">
                        æŠ¥æ¡ˆå·ï¼šYYBLP-2025010101
                        æŠ¥æ¡ˆå·ï¼š{{info.reportNum}}
                    </div>
                    <div class="box_desc_list_row">
                        æ‰€å±žä¿å•:2984719842130 <el-button type="text">下载保单</el-button>
                        æ‰€å±žä¿å•:{{info.applyCode}}
                    </div>
                    <div class="box_desc_list_row">
                        æŠ¥æ¡ˆäººï¼šå°¹æ™“凤
                        æŠ¥æ¡ˆäººï¼š{{info.informantName}}
                    </div>
                    <div class="box_desc_list_row">
                        æŠ¥æ¡ˆäººè”系方式:15556970338
                        æŠ¥æ¡ˆäººè”系方式:{{info.informantPhone}}
                    </div>
                    <div class="box_desc_list_row">
                        ä¿å¸æŠ¥æ¡ˆå·ï¼š-
                    </div>
                    <div class="box_desc_list_zw"></div>
                </div>
            </div>
            <div class="box_fx">
            <div class="box_fx" v-if="info.isRisk === 1">
                <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>
                    <span class="box_fx_left_a">注意,该案件有{{info.riskContent.length}}条风险信息</span>
                    <span class="box_fx_left_b" @click="$refs.riskCaseReminder.open('风险案件提醒', info.riskContent)">查看详情</span>
                </div>
                <i class="el-icon-close"></i>
                <i class="el-icon-close" @click="info.isRisk = 0"></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 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">
                        å‡ºé™©äººå§“名:李静
                        å‡ºé™©äººå§“名:{{info.memberName}}
                    </div>
                    <div class="box_desc_list_row">
                        å‡ºé™©äººèº«ä»½è¯å·ï¼š340122200603251924
                        å‡ºé™©äººèº«ä»½è¯å·ï¼š{{info.memberIdcard}}
                    </div>
                    <div style="width: 33%; height: 0;"></div>
                </div>
@@ -94,22 +131,13 @@
                </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 class="box_desc_fa_title">{{info.solutionName}}</div>
                        <div class="box_desc_fa_row">保单号:{{info.applyCode}}</div>
                        <div class="box_desc_fa_row">保障期限:{{info.baoxianStartTime}}~{{info.baoxianEndTime}}</div>
                        <div class="box_desc_fa_row">投保单位:{{info.companyName}}</div>
                        <div class="box_desc_fa_row">派遣单位:{{info.duName}}</div>
                        <div class="box_desc_fa_row">所属工种:{{info.worktypeName}}</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">
@@ -118,34 +146,32 @@
                </div>
                <div class="box_desc_list">
                    <div class="box_desc_list_row">
                        å‡ºé™©æ—¶é—´ï¼š2024-06-13 07:40:00
                        å‡ºé™©æ—¶é—´ï¼š{{info.happenTime}}
                    </div>
                    <div class="box_desc_list_row">
                        å°±è¯ŠåŒ»ç–—机构:合肥第二人民医院
                        å°±è¯ŠåŒ»ç–—机构:{{info.hospital}}
                    </div>
                    <div class="box_desc_list_row">
                        å‡ºçŽ°åœ°åŒºï¼šå®‰å¾½çœåˆè‚¥å¸‚è‚¥ä¸œåŽ¿
                        å‡ºé™©åœ°åŒºï¼š{{info.areaInfo}}
                    </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">
                        æ˜¯å¦æœ‰åŒ»ç–—保险:是
                        å‡ºé™©ç»è¿‡ï¼š{{info.content}}
                    </div>
                    <div class="box_desc_list_row" style="width: 100%;">
                        å°±è¯Šç±»åž‹ï¼šä½é™¢
                        äº‹æ•…类型:{{returnType(info.type)}}
                    </div>
                    <div class="box_desc_list_row">
                        æ˜¯å¦æœ‰åŒ»ç–—保险:{{returnName(info.medicalInsurance)}}
                    </div>
                    <div class="box_desc_list_row">
                        å°±è¯Šç±»åž‹ï¼š{{returnInHospital(info.inHospital)}}
                    </div>
                    <div class="box_desc_list_zw"></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 class="box_desc_list_img_files_row" v-for="(item, index) in info.reportFileList" :key="index">
                                <img :src="item.fileurlFull" alt="img" />
                            </div>
                        </div>
                    </div>
@@ -156,12 +182,12 @@
                    <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 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">
@@ -169,8 +195,8 @@
                        <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 class="box_desc_cailiao_list_img" v-for="(item, index) in info.relationFileList" :key="index">
                            <img :src="item.fileurlFull" alt="img" />
                        </div>
                    </div>
                </div>
@@ -180,8 +206,8 @@
                        <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 class="box_desc_cailiao_list_img" v-for="(item, index) in info.outpatientFileList" :key="index">
                            <img :src="item.fileurlFull" alt="img" />
                        </div>
                    </div>
                </div>
@@ -191,8 +217,8 @@
                        <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 class="box_desc_cailiao_list_img" v-for="(item, index) in info.hospitalFileList" :key="index">
                            <img :src="item.fileurlFull" alt="img" />
                        </div>
                    </div>
                </div>
@@ -202,8 +228,8 @@
                        <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 class="box_desc_cailiao_list_img" v-for="(item, index) in info.disabilityFileList" :key="index">
                            <img :src="item.fileurlFull" alt="img" />
                        </div>
                    </div>
                </div>
@@ -213,8 +239,8 @@
                        <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 class="box_desc_cailiao_list_img" v-for="(item, index) in info.otherFileList" :key="index">
                            <img :src="item.fileurlFull" alt="img" />
                        </div>
                    </div>
                </div>
@@ -224,8 +250,8 @@
                        <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 class="box_desc_cailiao_list_img" v-for="(item, index) in info.supplementFileList" :key="index">
                            <img :src="item.fileurlFull" alt="img" />
                        </div>
                    </div>
                </div>
@@ -242,53 +268,45 @@
                <el-button type="primary" @click="show = false">确定退回</el-button>
            </span>
        </el-dialog>
        <!--    é£Žé™©æ¡ˆä»¶æé†’    -->
        <RiskCaseReminder ref="riskCaseReminder" />
        <!--    æ¡ˆä»¶è¿›åº¦    -->
        <CaseProgress ref="caseProgress" />
        <!--    å—理    -->
        <Acceptance ref="acceptance" @success="getDetail" />
        <!--    æ·»åŠ ææ–™    -->
        <AdditionMaterial_ba ref="additionMaterial_ba" @success="getDetail" />
        <!--    ç†ç®—    -->
        <adjustment ref="adjustment" @success="getDetail" />
    </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import { findById, returnSettle } from '@/api/business/settleClaims'
import {
    register,
    addReportNum,
    addRemark,
    saveSupplementDescribe,
    updCaseType } from '@/api/business/settleRisk'
import RiskCaseReminder from '@/components/business/riskCaseReminder'
import CaseProgress from '@/components/business/caseProgress'
import Acceptance from '@/components/business/acceptance'
import AdditionMaterial_ba from '@/components/business/additionMaterial_ba'
import adjustment from '@/components/business/adjustment'
import { mapState } from 'vuex'
export default {
  name: 'OperaSettleClaimsWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  components: { GlobalWindow, RiskCaseReminder, CaseProgress, Acceptance, AdditionMaterial_ba, adjustment },
  data () {
    return {
        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: ''
            }
        ]
        info: null,
        id: null
    }
  },
  computed: {
@@ -301,7 +319,186 @@
    })
  },
  methods: {
      open (title, id) {
          this.title = title
          this.id = id
          this.getDetail()
      },
      setCaseType(e) {
          updCaseType({ id: this.id, caseType: e })
            .then(res => {
                this.getDetail()
            })
      },
      supplementaryMaterials() {
          this.$prompt('补充说明', '补充材料', {
              confirmButtonText: '提交',
              cancelButtonText: '取消',
              inputPattern: /^(?:.|\n)+$/,
              inputErrorMessage: '补充说明不能为空!',
              beforeClose: (action, instance, done) => {
                  if (action === 'confirm') {
                      instance.confirmButtonLoading = true;
                      saveSupplementDescribe({ id: this.id, describe: instance.inputValue })
                          .finally(() => {
                              done();
                              instance.confirmButtonLoading = false;
                          })
                  } else {
                      done();
                  }
              }
          }).then(({ value }) => {
              this.getDetail()
          }).catch(() => {
          });
      },
      addRemark() {
          this.$prompt('备注', '添加备注', {
              confirmButtonText: '添加',
              cancelButtonText: '取消',
              inputPattern: /^(?:.|\n)+$/,
              inputErrorMessage: '备注不能为空!',
              beforeClose: (action, instance, done) => {
                  if (action === 'confirm') {
                      instance.confirmButtonLoading = true;
                      addRemark({ id: this.id, describe: instance.inputValue })
                          .finally(() => {
                              done();
                              instance.confirmButtonLoading = false;
                          })
                  } else {
                      done();
                  }
              }
          }).then(({ value }) => {
              this.getDetail()
          }).catch(() => {
          });
      },
      addReport(type) {
          this.$prompt(`报案号`, `${type === 1 ? '添加报案号' : '编辑报案号'}`, {
              confirmButtonText: '添加',
              cancelButtonText: '取消',
              inputPattern: /^(?:.|\n)+$/,
              inputErrorMessage: '报案号不能为空!',
              beforeClose: (action, instance, done) => {
                  if (action === 'confirm') {
                      instance.confirmButtonLoading = true;
                      addReportNum({ id: this.id, reportNum: instance.inputValue })
                        .finally(() => {
                            done();
                            instance.confirmButtonLoading = false;
                        })
                  } else {
                      done();
                  }
              }
          }).then(({ value }) => {
              this.getDetail()
          }).catch(() => {
          });
      },
      register() {
          this.$prompt('立案说明', '立案', {
              confirmButtonText: '确定',
              cancelButtonText: '取消',
              beforeClose: (action, instance, done) => {
                  if (action === 'confirm') {
                      instance.confirmButtonLoading = true;
                      register({ id: this.id, describe: instance.inputValue, registerStatus: 3 })
                          .finally(() => {
                              done();
                              instance.confirmButtonLoading = false;
                          })
                  } else {
                      done();
                  }
              }
          }).then(({ value }) => {
              this.getDetail()
          }).catch(() => {
          });
      },
      returnCase() {
          this.$prompt('退回说明', '退回', {
              confirmButtonText: '确定',
              cancelButtonText: '取消',
              inputPattern: /^(?:.|\n)+$/,
              inputErrorMessage: '退回说明不能为空!',
              beforeClose: (action, instance, done) => {
                  if (action === 'confirm') {
                      instance.confirmButtonLoading = true;
                      register({ id: this.id, describe: instance.inputValue, registerStatus: 4 })
                          .finally(() => {
                              done();
                              instance.confirmButtonLoading = false;
                          })
                  } else {
                      done();
                  }
              }
          }).then(({ value }) => {
              this.getDetail()
          }).catch(() => {
          });
      },
      getDetail() {
          findById(this.id)
              .then(res => {
                  res.riskContent = JSON.parse(res.riskContent)
                  this.info = res
                  this.visible = true
              })
      },
      // æ’¤é”€
      revoke(id) {
          this.$confirm('撤销后,案件直接结束,无法继续进行理赔操作!', '是否撤销报案?', {
              confirmButtonText: '确定撤销',
              cancelButtonText: '我再想想',
              type: 'warning'
          }).then(() => {
              returnSettle({ id: this.info.id })
                  .then(res => {
                      this.getDetail()
                  })
          }).catch(() => {
          });
      },
      returnInHospital(type) {
          switch (type) {
              case 0:
                  return '住院'
              case 1:
                  return '门诊'
          }
      },
      returnName(type) {
          switch (type) {
              case 0:
                  return '是'
              case 1:
                  return '否'
          }
      },
      returnType(type) {
          switch (type) {
                case 0:
                    return '工作期间受伤'
              case 1:
                  return '上下班途中受伤'
              case 2:
                  return '非工作时间受伤'
              case 3:
                  return '意外受伤'
          }
      }
  }
}
</script>
@@ -320,21 +517,23 @@
            .box_status_row {
                width: 200px;
                display: flex;
                align-items: start;
                flex-direction: column;
                align-items: center;
                justify-content: center;
                position: relative;
                .box_status_row_xian {
                    position: absolute;
                    right: 30px;
                    top: 10px;
                    width: calc(100% - 110px);
                    right: -55px;
                    top: 5px;
                    width: calc(100% - 80px);
                    height: 1px;
                    background-color: #BEBEBE;
                }
                .statusColor1 {
                    background-color: #E8F4FF !important;
                    background-color: #165DFF !important;
                }
                .statusColor2 {
                    background-color: #165DFF !important;
                    border: 1px solid #0052D9 !important;
                }
                .statusColor3 {
                    span {
@@ -342,14 +541,13 @@
                    }
                }
                .box_status_row_icon {
                    width: 28px;
                    height: 28px;
                    background-color: rgba(242,243,245,1);
                    width: 8px;
                    height: 8px;
                    border: 1px solid #C5C5C5;
                    border-radius: 50%;
                    display: flex;
                    align-items: center;
                    justify-content: center;
                    border-radius: 50%;
                    margin-right: 10px;
                    span {
                        color: rgba(78,89,105,1);
                        font-size: 14px;
@@ -360,7 +558,10 @@
                }
                .box_status_row_info {
                    display: flex;
                    align-items: center;
                    justify-content: center;
                    flex-direction: column;
                    margin-top: 10px;
                    .title {
                        color: rgba(78,89,105,1);
                        font-size: 16px;
@@ -369,7 +570,7 @@
                    .info {
                        color: rgba(154,154,154,1);
                        font-size: 14px;
                        margin-top: 5px;
                        margin-top: 10px;
                    }
                }
            }
@@ -420,6 +621,64 @@
                    }
                }
            }
            .box_desc_ls {
                width: 100%;
                display: flex;
                align-items: center;
                margin-bottom: 15px;
                span {
                    &:nth-child(1) {
                        color: rgba(0,0,0,1);
                        font-size: 16px;
                    }
                    &:nth-child(2) {
                        color: rgba(255,162,63,1);
                        font-size: 16px;
                    }
                }
            }
            .box_desc_lslist {
                width: 100%;
                display: flex;
                flex-direction: column;
                margin-bottom: 40px;
                .box_desc_lslist_title {
                    color: rgba(0,0,0,1);
                    font-size: 16px;
                    margin-bottom: 15px;
                }
                .box_desc_lslist_l {
                    width: 100%;
                    display: flex;
                    flex-direction: column;
                    padding-left: 50px;
                    box-sizing: border-box;
                    .box_desc_lslist_l_row {
                        width: 100%;
                        display: flex;
                        align-items: center;
                        margin-bottom: 13px;
                        &:last-child {
                            margin: 0 !important;
                        }
                        span {
                            &:nth-child(1) {
                                color: rgba(16,16,16,1);
                                font-size: 14px;
                            }
                            &:nth-child(2) {
                                color: rgba(16,16,16,1);
                                font-size: 14px;
                                margin: 0 30px;
                            }
                            &:nth-child(3) {
                                color: rgba(108,108,108,1);
                                font-size: 14px;
                            }
                        }
                    }
                }
            }
            .box_desc_head {
                width: 100%;
                display: flex;
@@ -429,6 +688,11 @@
                .box_desc_title {
                    display: flex;
                    align-items: center;
                    .el-icon-success {
                        font-size: 20px;
                        color: #34C758;
                        margin-right: 10px;
                    }
                    .box_desc_title_val {
                        color: rgba(16,16,16,1);
                        font-size: 18px;
@@ -455,6 +719,11 @@
                        align-items: center;
                        justify-content: center;
                        background-color: rgba(254,226,225,1);
                        margin-right: 20px;
                        .el-icon-warning {
                            color: #FF4D4F;
                            margin-right: 5px;
                        }
                        span {
                            color: #FF4D4F;
                            font-size: 12px;
@@ -486,6 +755,10 @@
                align-items: center;
                justify-content: space-between;
                flex-wrap: wrap;
                .box_desc_list_zw {
                    width: 33%;
                    height: 0;
                }
                .box_desc_list_row {
                    width: 33%;
                    color: rgba(16,16,16,1);
company/src/components/business/acceptance.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,129 @@
<template>
    <GlobalWindow
        :title="title"
        width="500px"
        text="同意受理"
        :visible.sync="visible"
        :confirm-working="isWorking"
        @confirm="confirm"
    >
        <el-form :model="form" ref="form" :rules="form.status === 0 ? rules : rules1" label-position="top">
            <el-form-item label="" prop="status">
                <el-radio-group v-model="form.status" @change="changeStatus">
                    <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>
            <el-form-item label="说明" prop="describe">
                <el-input
                    type="textarea"
                    :rows="5"
                    placeholder="请输入说明"
                    v-model="form.describe" />
            </el-form-item>
            <el-form-item label="问题类型" prop="problem" v-if="[2,3].includes(form.status)">
                <el-checkbox-group v-model="form.problem" @change="changeProblem">
                    <el-checkbox :label="item" v-for="(item, index) in problemList" :key="index"></el-checkbox>
                </el-checkbox-group>
            </el-form-item>
        </el-form>
    </GlobalWindow>
</template>
<script>
    import BaseOpera from '@/components/base/BaseOpera'
    import GlobalWindow from '@/components/common/GlobalWindow'
    import { acceptance, getDiscussProblemType } from '@/api/business/settleRisk'
    export default {
        name: 'acceptance',
        extends: BaseOpera,
        components: { GlobalWindow },
        data () {
            return {
                form: {
                    id: null,
                    status: 0,
                    describe: '',
                    syProblemOpts: '',
                    problem: []
                },
                problemList: [],
                rules: {
                    problem: [
                        { required: true, message: '不能为空', trigger: 'blur' }
                    ]
                },
                rules1: {
                    problem: [
                        { required: true, message: '不能为空', trigger: 'blur' }
                    ],
                    describe: [
                        { required: true, message: '不能为空', trigger: 'blur' }
                    ]
                }
            }
        },
        methods: {
            open(title, id) {
                this.title = title
                this.form.id = id
                getDiscussProblemType()
                    .then(res => {
                        console.log(res)
                        this.problemList = res
                    })
                this.visible = true
            },
            changeStatus() {
                this.$nextTick(() => {
                    this.$refs.form.clearValidate();
                })
            },
            changeProblem(e) {
                if (!e || e.length === 0) {
                    this.form.syProblemOpts = ''
                } else {
                    this.form.syProblemOpts = e.join(',')
                }
            },
            confirm() {
                this.$refs.form.validate((valid) => {
                    if (!valid) {
                        return
                    }
                    this.isWorking = true
                    acceptance(this.form)
                        .then(() => {
                            this.visible = false
                            this.$tip.apiSuccess('受理成功')
                            this.$emit('success')
                        })
                        .catch(e => {
                            this.$tip.apiFailed(e)
                        })
                        .finally(() => {
                            this.isWorking = false
                        })
                })
            }
        }
    }
</script>
<style lang="scss" scoped>
    .a {
        color: rgba(16,16,16,1);
        font-size: 14px;
    }
    .b {
        color: rgba(154,154,154,1);
        font-size: 14px;
        margin: 10px 0;
    }
    .c {
        color: rgba(16,16,16,1);
        font-size: 14px;
    }
</style>
company/src/components/business/additionMaterial_ba.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,177 @@
<template>
    <GlobalWindow
        :title="title"
        width="50%"
        :visible.sync="visible"
        :confirm-working="isWorking"
        @confirm="confirm"
    >
        <div class="box">
            <el-form :model="form" :rules="rules" ref="form">
                <el-form-item label="材料" prop="supplementFileList">
                    <div class="box_item_list_row_l">
                        <div class="desc_data_list_item" v-for="(item, index) in form.supplementFileList" :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.fileurlFull" alt="img"/>
                            </div>
                            <div class="desc_data_list_item_img" v-if="item.type === 1">
                                <video controls :src="item.fileurlFull" />
                            </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" @success="claimsUploadFile($event, 1)" />
                    </div>
                </el-form-item>
            </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 { saveSupplementFile } from '@/api/business/settleRisk'
    export default {
        name: 'additionMaterial_ba',
        extends: BaseOpera,
        components: { GlobalWindow, upload },
        data () {
            return {
                form: {
                    id: null,
                    supplementFileList: []
                },
                rules: {
                    supplementFileList: [
                        { required: true, message: '至少上传一个材料', trigger: 'blur' }
                    ]
                }
            }
        },
        methods: {
            open (title, id) {
                this.title = title
                this.form.id = id
                this.form.supplementFileList = []
                this.visible = true
            },
            delFile (index) {
                this.form.supplementFileList.splice(index, 1)
            },
            claimsUploadFile(file) {
                file.fileurl = file.imgaddr
                file.name = file.originname
                file.fileurlFull = file.url
                this.form.supplementFileList.push(file)
            },
            confirm() {
                this.$refs.form.validate((valid) => {
                    if (!valid) return
                    this.isWorking = true
                    saveSupplementFile(this.form)
                        .then(() => {
                            this.visible = false
                            this.$tip.apiSuccess('添加成功')
                            this.$emit('success')
                        })
                        .catch(e => {
                            this.$tip.apiFailed(e)
                        })
                        .finally(() => {
                            this.isWorking = false
                        })
                })
            }
        }
    }
</script>
<style scoped lang="scss">
    .box {
        width: 100%;
        .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;
                    }
                }
            }
        }
    }
</style>
company/src/components/business/adjustment.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,306 @@
<template>
    <GlobalWindow
        :title="title"
        width="100%"
        :text="`${type === 1 ? '完成理算' : '完成核赔'}`"
        :visible.sync="visible"
        :confirm-working="isWorking"
        @confirm="confirm"
    >
        <div class="box">
            <el-form :model="form" ref="ruleForm" label-width="150px" class="demo-ruleForm">
                <div class="box_item">
                    <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>
            </el-form>
        </div>
    </GlobalWindow>
</template>
<script>
    import BaseOpera from '@/components/base/BaseOpera'
    import GlobalWindow from '@/components/common/GlobalWindow'
    import { compensation, getCompensation, nuclearCompensation } from '@/api/business/settleRisk'
    export default {
        name: 'acceptance',
        extends: BaseOpera,
        components: { GlobalWindow },
        data () {
            return {
                form: {
                    id: null
                },
                type: '',
                list1: [],
                list2: [],
                totalPrice: 0
            }
        },
        methods: {
            open (title, id, type) {
                this.type = type
                this.title = title
                this.form.id = id
                getCompensation({ type, id: this.form.id })
                    .then(res => {
                        res.forEach(item => {
                            if (!item.fee) {
                                item.fee = 0
                            }
                        })
                        this.list1 = res.filter(item => item.type === 0)
                        this.list2 = res.filter(item => item.type === 1)
                        this.changeFee()
                        this.visible = true
                    })
            },
            changeFee() {
                let arr = [...this.list1, ...this.list2]
                let price = 0
                arr.forEach(item => {
                    if (item.fee) {
                        price += Number(item.fee)
                    }
                })
                this.totalPrice = price
            },
            confirm() {
                let arr = [...this.list1, ...this.list2]
                for (let i = 0; i < arr.length; i++) {
                    if (!arr[i].fee && arr[i].fee !== 0) {
                        return this.$message.warning(`请先完善${arr[i].name}金额`)
                    }
                }
                this.isWorking = true
                let compensationJson = JSON.stringify(arr)
                if (this.type === 1) {
                    compensation({ id: this.form.id, compensationJson })
                        .then(() => {
                            this.visible = false
                            this.$tip.apiSuccess('操作成功')
                            this.$emit('success')
                        })
                        .catch(e => {
                            this.$tip.apiFailed(e)
                        })
                        .finally(() => {
                            this.isWorking = false
                        })
                } else if (this.type === 2) {
                    nuclearCompensation({ id: this.form.id, compensationJson })
                        .then(() => {
                            this.visible = false
                            this.$tip.apiSuccess('操作成功')
                            this.$emit('success')
                        })
                        .catch(e => {
                            this.$tip.apiFailed(e)
                        })
                        .finally(() => {
                            this.isWorking = false
                        })
                }
            }
        }
    }
</script>
<style scoped lang="scss">
    .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/caseProgress.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
<template>
    <GlobalWindow
        :title="title"
        width="50%"
        :withFooter="false"
        :visible.sync="visible"
        :confirm-working="isWorking"
    >
        <el-timeline reverse>
            <el-timeline-item v-for="(item, index) in list" :key="index" :hide-timestamp="true">
                <div style="display: flex; flex-direction: column;">
                    <span class="a">{{item.title}}</span>
                    <span class="b">{{item.creatorName}} {{item.companyName || '平台理赔员'}} {{item.createDate }}</span>
                    <span class="c">说明:{{item.content}}</span>
                </div>
            </el-timeline-item>
        </el-timeline>
    </GlobalWindow>
</template>
<script>
    import BaseOpera from '@/components/base/BaseOpera'
    import GlobalWindow from '@/components/common/GlobalWindow'
    export default {
        name: 'caseProgress',
        extends: BaseOpera,
        components: { GlobalWindow },
        data () {
            return {
                list: []
            }
        },
        methods: {
            open(title, target) {
                this.title = title
                this.list = target
                this.visible = true
            }
        }
    }
</script>
<style lang="scss" scoped>
    .a {
        color: rgba(16,16,16,1);
        font-size: 14px;
    }
    .b {
        color: rgba(154,154,154,1);
        font-size: 14px;
        margin: 10px 0;
    }
    .c {
        color: rgba(16,16,16,1);
        font-size: 14px;
    }
</style>
company/src/components/business/riskCaseReminder.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,92 @@
<template>
    <GlobalWindow
        :title="title"
        width="500px"
        :withFooter="false"
        :visible.sync="visible"
        :confirm-working="isWorking"
        @confirm="confirm"
    >
        <div class="box">
            <div class="box_row" v-for="(item, index) in list" :key="index">
                <div class="box_row_icon">
                    <i class="el-icon-warning"></i>
                </div>
                <div class="box_row_content">
                    <div class="box_row_content_title">{{item.title}}</div>
                    <div class="box_row_content_desc">{{item.info}}</div>
                </div>
            </div>
        </div>
    </GlobalWindow>
</template>
<script>
    import BaseOpera from '@/components/base/BaseOpera'
    import GlobalWindow from '@/components/common/GlobalWindow'
    export default {
        name: 'riskCaseReminder',
        extends: BaseOpera,
        components: { GlobalWindow },
        data () {
            return {
                list: []
            }
        },
        methods: {
            async open(title, target) {
                this.title = title
                this.list = target
                this.visible = true
            }
        }
    }
</script>
<style lang="scss" scoped>
    .box {
        width: 100%;
        .box_row {
            width: 100%;
            padding: 15px;
            box-sizing: border-box;
            background-color: #ececec;
            border-radius: 10px;
            display: flex;
            align-items: center;
            background-color: rgba(239,239,239,1);
            margin-bottom: 15px;
            &:last-child {
                margin: 0 !important;
            }
            .box_row_icon {
                flex-shrink: 0;
                width: 34px;
                height: 34px;
                border-radius: 50%;
                display: flex;
                align-items: center;
                justify-content: center;
                margin-right: 17px;
                background-color: rgba(251,115,115,0.29);
                .el-icon-warning {
                    color: #FB7373;
                    font-size: 19px;
                }
            }
            .box_row_content {
                flex: 1;
                .box_row_content_title {
                    color: rgba(16,16,16,1);
                    font-size: 16px;
                }
                .box_row_content_desc {
                    color: rgba(154,154,154,1);
                    font-size: 12px;
                    margin-top: 9px;
                }
            }
        }
    }
</style>
company/src/components/common/GlobalWindow.vue
@@ -21,7 +21,7 @@
    <div v-if="withFooter" class="window__footer">
      <slot name="footer">
        <el-button @click="confirm" :loading="confirmWorking" type="primary">{{text}}</el-button>
        <el-button @click="close">返回</el-button>
        <el-button @click="close">{{goText}}</el-button>
      </slot>
    </div>
  </el-drawer>
@@ -45,6 +45,10 @@
      type: String,
      default: '确定'
    },
    goText: {
      type: String,
      default: '返回'
    },
    // ç¡®è®¤æŒ‰é’®loading状态
    confirmWorking: {
      type: Boolean,
company/src/components/enterprise/onlineReporting.vue
@@ -2,139 +2,407 @@
    <GlobalWindow
        :title="title"
        width="100%"
        :withFooter="false"
        :visible.sync="visible"
        :confirm-working="isWorking"
        @confirm="confirm"
    >
        <el-form :model="form" ref="form" :rules="rules">
            <el-form-item label="出险人姓名" prop="memberId" v-if="!form.id">
                <el-select v-model="form.memberId" filterable @change="getSolutions" placeholder="请选择">
                    <el-option
                        v-for="item in user"
                        :key="item.id"
                        :label="item.name + ' - ' + item.idcardNo"
                        :value="item.id">
                    </el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="保险方案" prop="solutionId" v-if="!form.id">
                <div style="display: flex; align-items: center;">
                    <span>{{form.solutionName}}</span>
                    <el-button type="primary" @click="openS" style="margin-left: 10px;">选择方案</el-button>
        <div class="box">
            <div class="box_status">
                <div class="box_status_row" v-for="(item, index) in statusList" :key="index">
                    <div :class="index <= i ? 'box_status_row_icon statusColor2 statusColor3' : 'box_status_row_icon'">
                        <span>{{index + 1}}</span>
                    </div>
                    <div class="box_status_row_info">
                        <div class="title">{{item.name}}</div>
                        <div class="info">{{item.info}}</div>
                    </div>
                </div>
            </el-form-item>
            <el-form-item label="派遣单位" prop="duId" v-if="form.duName && !form.id">
                <span>{{form.duName}}</span>
            </el-form-item>
            <el-form-item label="所属工种" prop="worktypeId" v-if="form.worktypeName && !form.id">
                <span>{{form.worktypeName}}</span>
            </el-form-item>
            <el-form-item label="事故发生时间" prop="happenTime" v-if="!form.id">
                <el-date-picker
                    v-model="form.happenTime"
                    type="datetime"
                    format="yyyy-MM-dd HH:mm:ss"
                    value-format="yyyy-MM-dd HH:mm:ss"
                    placeholder="选择日期时间">
                </el-date-picker>
            </el-form-item>
            <el-form-item label="就诊医疗机构" prop="hospital" v-if="!form.id">
                <el-input v-model="form.hospital" placeholder="请输入"></el-input>
            </el-form-item>
            <el-form-item label="出险地区" prop="areaId">
                <el-cascader
                v-model="form.areaId"
                :options="area"
                :props="{ value: 'id', label: 'name', children: 'childAreasList' }"
                @change="handleChange" />
            </el-form-item>
            <el-form-item label="事故类型" prop="type">
                <el-radio-group v-model="form.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>
            <el-form-item label="是否住院" prop="inHospital">
                <el-radio-group v-model="form.inHospital">
                    <el-radio :label="0">是</el-radio>
                    <el-radio :label="1">否</el-radio>
                </el-radio-group>
            </el-form-item>
            <el-form-item label="是否有医疗保险" prop="medicalInsurance">
                <el-radio-group v-model="form.medicalInsurance">
                    <el-radio :label="0">是</el-radio>
                    <el-radio :label="1">否</el-radio>
                </el-radio-group>
            </el-form-item>
            <el-form-item label="事故描述" prop="content" v-if="!form.id">
                <el-input type="textarea" :rows="5" placeholder="请输入内容" v-model="form.content"></el-input>
            </el-form-item>
            <el-form-item label="上传事故视频/照片" prop="list" v-if="!form.id">
                <upload :list="form.list" :accept="'.mp4,.jpg,.png,.jpeg'" folder="settle" @dele="deleFile" @success="getData" />
            </el-form-item>
            <el-form-item label="报案人姓名" prop="informantName">
                <el-input v-model="form.informantName" placeholder="请输入"></el-input>
            </el-form-item>
            <el-form-item label="报案人联系方式" prop="informantPhone">
                <el-input maxlength="11" v-model="form.informantPhone" placeholder="请输入"></el-input>
            </el-form-item>
        </el-form>
        <!--    å¼¹çª—提醒    -->
        <el-dialog
            title="温馨提示"
            :modal="false"
            :close-on-click-modal="false"
            :show-close="false"
            :visible.sync="centerDialogVisible"
            width="50%"
            center>
            <div class="fuwenben" style="font-size: 12px">
                    å°Šæ•¬çš„客户:
                é¦–先感谢您对于我们的信任与支持,我们很荣幸成为贵司的保险咨询服务商!
                é‰´äºŽè¿‘期出现个别客户存在:当天投保当天出险(即先出工伤或意外、再进行投保操作)的个别诈骗保险金的案例,错误使用“即时生效”条款。针对此种情况本公司郑重告知各位客户:
                1.诈骗保险金的行为属于违法行为,一旦发现,本公司将提交公安机关处理并保留追究法律责任;
                2.为了顺利理赔结案,按照保险公司的理赔审查要求,当天投保当天出险需要提供出险监控视频或者能佐证具体时间点的任何证据;
                3.请您深刻理解保险中“如实告知”的投保人义务,我们致力于为您转移用工风险和法律风险。但这一切的前提是:合规合法合理。
                é™„件一:
                ã€Šä¸­åŽäººæ°‘共和国刑法》第一百九十八条 ã€ä¿é™©è¯ˆéª—罪】有下列情形之一,进行保险诈骗活动,数额较大的,处五年以下有期徒刑或者拘役, å¹¶å¤„一万元以上十万元以下罚金;数额巨大或者有其他严重情节的,处五年以上十年以下有期徒刑,并处二万元以上二十万元以下罚金;数额特别巨大或者有其他特别严重情节的,处十年以上有期徒 åˆ‘,并处二万元以上二十万元以下罚金或者没收财产:
                ï¼ˆä¸€ï¼‰æŠ•保人故意虚构保险标的,骗取保险金的;
                ï¼ˆäºŒï¼‰æŠ•保人、被保险人或者受益人对发生的保险事故编造虚假的原因或者夸大损失的程度,骗取保险金的;
                ï¼ˆä¸‰ï¼‰æŠ•保人、被保险人或者受益人编造未曾发生的保险事故,骗取保险金的;
                ï¼ˆå››ï¼‰æŠ•保人、被保险人故意造成财产损失的保险事故,骗取保险金的;
                ï¼ˆäº”)投保人、受益人故意造成被保险人死亡、伤残或者疾病,骗取保险金的。
                æœ‰å‰æ¬¾ç¬¬å››é¡¹ã€ç¬¬äº”项所列行为,同时构成其他犯罪的,依照数罪并罚的规定处罚。 å•位犯第一款罪的,对单位判处罚金,并对其直接负责的主管人员和 å…¶ä»–直接责任人员,处五年以下有期徒刑或者拘役;数额巨大或者有 å…¶ä»–严重情节的,处五年以上十年以下有期徒刑;数额特别巨大或者 æœ‰å…¶ä»–特别严重情节的,处十年以上有期徒刑。 ä¿é™©äº‹æ•…的鉴定人、证明人、财产评估人故意提供虚假的证明文件,为他人诈骗提供条件的,以保险诈骗的共犯论处。
                é™„件二:
                ã€Šä¸­åŽäººæ°‘共和国保险法》第二十七条 æœªå‘生保险事故,被保险人或者受益人谎称发生了保险事故,向保险人提出赔偿或者给付保险金请求的,保险人有权解除合同,并不退还保险费。
                æŠ•保人、被保险人故意制造保险事故的,保险人有权解除合同,不承担赔偿或者给付保险金的责任;除本法第四十三条规定外,不退还保险费。
                ä¿é™©äº‹æ•…发生后,投保人、被保险人或者受益人以伪造、变造的有关证明、资料或者其他证据,编造虚假的事故原因或者夸大损失程度的,保险人对其虚报的部分不承担赔偿或者给付保险金的责任。
                æŠ•保人、被保险人或者受益人有前三款规定行为之一,致使保险 äººæ”¯ä»˜ä¿é™©é‡‘或者支出费用的,应当撤销或者赔偿。
            </div>
            <span slot="footer" class="dialog-footer">
                <el-button type="primary" @click="centerDialogVisible = false">我已知晓</el-button>
            </span>
        </el-dialog>
        <!--    é€‰æ‹©ä¿é™©æ–¹æ¡ˆ    -->
        <selectSolutions ref="selectSolutions" @success="getVal" />
            <el-form :model="form" :rules="rules" ref="form" label-width="130px" class="demo-ruleForm">
                <template v-if="i === 0">
                    <div class="box_desc">
                        <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" style="margin: 0;">
                                <el-form-item label="出险人" prop="memberId">
                                    <el-select v-model="form.memberId" filterable @change="getSolutions" placeholder="请选择">
                                        <el-option
                                            v-for="item in user"
                                            :key="item.id"
                                            :label="item.name + ' - ' + item.idcardNo"
                                            :value="item.id">
                                        </el-option>
                                    </el-select>
                                </el-form-item>
                            </div>
                            <div class="box_desc_list_row" style="margin: 0;">
                                <el-form-item label="证件号码" prop="idcardNo">
                                    <el-input v-model="form.idcardNo" disabled></el-input>
                                </el-form-item>
                            </div>
                            <div class="box_desc_list_ZW"></div>
                        </div>
                    </div>
                    <div class="box_desc">
                        <div class="box_desc_head" v-if="solutionList.length > 0">
                            <div class="box_desc_title">
                                <span class="box_desc_title_val">保险方案</span>
                            </div>
                        </div>
                        <div class="box_desc_f" v-if="solutionList.length > 0">
                            <div class="box_desc_fa" v-for="(item, index) in solutionList" :key="index">
                                <div class="box_desc_fa_title">
                                    <span @click="jumpSolutionDetail(item.applyId, item.solutionType)">{{item.solutionName}}</span>
                                    <el-checkbox v-model="item.active" @change="changeSolution($event, index)"></el-checkbox>
                                </div>
                                <div class="box_desc_fa_row">保单号:{{item.applyCode}}</div>
                                <div class="box_desc_fa_row">保障期限:{{item.parentStartTime}}~{{item.parentEndTime}}</div>
                                <div class="box_desc_fa_row">投保单位:{{item.companyName}}</div>
                                <div class="box_desc_fa_row">派遣单位:{{item.duName}}</div>
                                <div class="box_desc_fa_row">所属工种:{{item.workTypeName}}</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">
                                <el-form-item label="出险时间" prop="happenTime">
                                    <el-date-picker
                                        v-model="form.happenTime"
                                        type="datetime"
                                        :disabled="!form.insuranceApplyId"
                                        :picker-options="pickerOptions"
                                        value-format="yyyy-MM-dd HH:mm:ss"
                                        placeholder="选择日期">
                                    </el-date-picker>
                                </el-form-item>
                            </div>
                            <div class="box_desc_list_row">
                                <el-form-item label="就诊医疗机构" prop="hospital">
                                    <el-input v-model="form.hospital" placeholder="请输入"></el-input>
                                </el-form-item>
                            </div>
                            <div class="box_desc_list_row">
                                <el-form-item label="出险地区" prop="areaId">
                                    <div style="width: 100%; display: flex; align-items: center;">
                                        <el-cascader
                                            v-model="form.area"
                                            :options="area"
                                            ref="cascader"
                                            @change="changeArea"
                                            :props="{ label: 'name', children: 'childAreasList', value: 'id' }"/>
                                        <el-input v-model="form.address" placeholder="请输入详细地址"></el-input>
                                    </div>
                                </el-form-item>
                            </div>
                            <div class="box_desc_list_row" style="width: 100%;">
                                <el-form-item label="出险经过" prop="content">
                                    <el-input v-model="form.content" placeholder="请输入" type="textarea" :autosize="{ minRows: 2, maxRows: 6}"></el-input>
                                </el-form-item>
                            </div>
                            <div class="box_desc_list_row" style="width: 100%;">
                                <el-form-item label="事故类型" prop="type">
                                    <el-radio-group v-model="form.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_desc_list_row" style="width: 100%;">
                                <el-form-item label="就诊类型" prop="inHospital">
                                    <el-radio-group v-model="form.inHospital">
                                        <el-radio :label="0">住院</el-radio>
                                        <el-radio :label="1">门诊</el-radio>
                                    </el-radio-group>
                                </el-form-item>
                            </div>
                            <div class="box_desc_list_row">
                                <el-form-item label="是否伤残" prop="hurtType">
                                    <el-radio-group v-model="form.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_desc_list_row" style="width: 100%;">
                                <el-form-item label="是否有医保" prop="medicalInsurance">
                                    <el-radio-group v-model="form.medicalInsurance">
                                        <el-radio :label="0">是</el-radio>
                                        <el-radio :label="1">否</el-radio>
                                    </el-radio-group>
                                </el-form-item>
                            </div>
                            <div class="box_desc_list_img">
                                <span>事故视频/照片:</span>
                                <div class="box_item_list_row_l">
                                    <div class="desc_data_list_item" v-for="(item, index) in form.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.fileurlFull" alt="img"/>
                                        </div>
                                        <div class="desc_data_list_item_img" v-if="item.type === 1">
                                            <video controls :src="item.fileurlFull" />
                                        </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" @success="claimsUploadFile($event, 6)" />
                                </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>
                        <div class="box_desc_list">
                            <div class="box_desc_list_row">
                                <el-form-item label="报案人姓名" prop="informantName">
                                    <el-input v-model="form.informantName" placeholder="请输入"></el-input>
                                </el-form-item>
                            </div>
                            <div class="box_desc_list_row">
                                <el-form-item label="报案人联系方式" prop="informantPhone">
                                    <el-input v-model="form.informantPhone" placeholder="请输入"></el-input>
                                </el-form-item>
                            </div>
                            <div class="box_desc_list_ZW"></div>
                        </div>
                    </div>
                </template>
                <template v-if="i === 1">
                    <div class="box_info">
                        <i class="el-icon-info"></i>
                        <div class="box_info_title">
                            <span>重要提示</span>
                            <span>• ä¸åŒä¿é™©äº§å“ç†èµ”材料有所不同</span>
                            <span>• ä¸Šä¼ ææ–™å‰æ³¨æ„ä½¿ç”¨ç›–章文件模版和查看理赔材料一览表</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: 100%; margin-bottom: 30px;">
                                <div class="box_item_list_row_title">
                                    <div class="x"></div>
                                    <span>员工关系证明材料</span>
                                </div>
                                <div class="box_item_list_row_info">
                                    <div class="label">文件上传说明:</div>
                                    <div class="content">需上传的文件:劳动合同复印件、工资流水、考勤记录、身份证正反面、;</div>
                                </div>
                                <div class="box_item_list_row_l">
                                    <div class="desc_data_list_item" v-for="(item, index) in form.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.fileurlFull" alt="img"/>
                                        </div>
                                        <div class="desc_data_list_item_img" v-if="item.type === 1">
                                            <video controls :src="item.fileurlFull" />
                                        </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" @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_info">
                                    <div class="label">文件上传说明:</div>
                                    <div class="content">需上传的文件:劳动合同复印件、工资流水、考勤记录、身份证正反面、;</div>
                                </div>
                                <div class="box_item_list_row_l">
                                    <div class="desc_data_list_item" v-for="(item, index) in form.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.fileurlFull" alt="img"/>
                                        </div>
                                        <div class="desc_data_list_item_img" v-if="item.type === 1">
                                            <video controls :src="item.fileurlFull" />
                                        </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" @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_info">
                                    <div class="label">文件上传说明:</div>
                                    <div class="content">需上传的文件:劳动合同复印件、工资流水、考勤记录、身份证正反面、;</div>
                                </div>
                                <div class="box_item_list_row_l">
                                    <div class="desc_data_list_item" v-for="(item, index) in form.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.fileurlFull" alt="img"/>
                                        </div>
                                        <div class="desc_data_list_item_img" v-if="item.type === 1">
                                            <video controls :src="item.fileurlFull" />
                                        </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" @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_info">
                                    <div class="label">文件上传说明:</div>
                                    <div class="content">需上传的文件:劳动合同复印件、工资流水、考勤记录、身份证正反面、;</div>
                                </div>
                                <div class="box_item_list_row_l">
                                    <div class="desc_data_list_item" v-for="(item, index) in form.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.fileurlFull" alt="img"/>
                                        </div>
                                        <div class="desc_data_list_item_img" v-if="item.type === 1">
                                            <video controls :src="item.fileurlFull" />
                                        </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" @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_info">
                                    <div class="label">文件上传说明:</div>
                                    <div class="content">需上传的文件:劳动合同复印件、工资流水、考勤记录、身份证正反面、;</div>
                                </div>
                                <div class="box_item_list_row_l">
                                    <div class="desc_data_list_item" v-for="(item, index) in form.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.fileurlFull" alt="img"/>
                                        </div>
                                        <div class="desc_data_list_item_img" v-if="item.type === 1">
                                            <video controls :src="item.fileurlFull" />
                                        </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" @success="claimsUploadFile($event, 5)" />
                                </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 class="box_desc_title_tips1">
                                    <i class="el-icon-info"></i>
                                    <span class="box_desc_title_tips_text">注意收款银行输入开户支行名称</span>
                                </div>
                            </div>
                        </div>
                        <div class="box_desc_list">
                            <div class="box_desc_list_row">
                                <el-form-item label="收款银行" prop="receiveBank">
                                    <el-input v-model="form.receiveBank" placeholder="请输入收款银行支行名称"></el-input>
                                </el-form-item>
                            </div>
                            <div class="box_desc_list_row">
                                <el-form-item label="收款人" prop="receiveUserName">
                                    <el-input v-model="form.receiveUserName" placeholder="请输入开户姓名"></el-input>
                                </el-form-item>
                            </div>
                            <div class="box_desc_list_row">
                                <el-form-item label="收款账号" prop="receiveAccount">
                                    <el-input v-model="form.receiveAccount" placeholder="请输入银行账号"></el-input>
                                </el-form-item>
                            </div>
                        </div>
                    </div>
                </template>
                <template v-if="i === 2">
                    <div class="box_success">
                        <div class="box_success_icon">
                            <i class="el-icon-check"></i>
                        </div>
                        <div class="box_success_title">提交成功</div>
                        <div class="box_success_info">请等待立案</div>
                        <div class="box_success_btns">
                            <el-button @click="continueReporting">继续报案</el-button>
                            <el-button type="primary" @click="$refs.operaSettleClaimsWindow.open('报案详情', id)">查看详情</el-button>
                        </div>
                    </div>
                </template>
            </el-form>
            <div class="box_footer">
                <div class="box_footer_btns" v-if="i === 0">
                    <el-button type="primary" @click="confirm(0)">暂存</el-button>
                    <el-button type="primary" @click="next">下一步</el-button>
                </div>
                <div class="box_footer_btns" v-if="i === 1">
                    <el-button @click="i--">上一步</el-button>
                    <el-button type="primary" @click="confirm(0)">暂存</el-button>
                    <el-button type="primary" @click="confirm(1)">提交</el-button>
                </div>
            </div>
        </div>
        <OperaInsuranceApplyDetails ref="OperaInsuranceApplyDetails" />
        <OperaWtbApplyShopWindow ref="OperaWtbApplyShopWindow" />
        <!-- è¯¦æƒ… -->
        <OperaSettleClaimsWindow ref="operaSettleClaimsWindow"/>
    </GlobalWindow>
</template>
@@ -142,79 +410,119 @@
    import BaseOpera from '@/components/base/BaseOpera'
    import GlobalWindow from '@/components/common/GlobalWindow'
    import upload from '@/components/common/upload'
    import selectSolutions from '@/components/enterprise/selectSolutions'
    import { saveSettleClaims } from '@/api/business/settleRisk'
    import { findById } from '@/api/business/settleClaims'
    import { findListByDTO } from '@/api/business/member'
    import { findList } from '@/api/business/applyChange'
    import { findTreeList } from '@/api/system/common'
    import { create, updateById } from '@/api/business/settleClaims'
    import { findTreeList } from '@/api/business/knowledge'
    import OperaWtbApplyShopWindow from '@/components/business/OperaWtbApplyShopWindow'
    import OperaInsuranceApplyDetails from '@/components/business/OperaInsuranceApplyWindow'
    import OperaSettleClaimsWindow from '@/components/business/OperaSettleClaimsWindow'
    import { mapState } from 'vuex'
    export default {
        name: 'onlineReporting',
        extends: BaseOpera,
        components: { GlobalWindow, upload, selectSolutions },
        components: { GlobalWindow, upload, OperaSettleClaimsWindow, OperaWtbApplyShopWindow, OperaInsuranceApplyDetails },
        computed: {
            ...mapState(['userInfo'])
        },
        data () {
            return {
                i: 0,
                id: null,
                statusList: [
                    {
                        name: '填写出险信息',
                        info: '完成报案基础信息填写'
                    },
                    {
                        name: '上传理赔材料',
                        info: '补充需要理赔的相关资料'
                    },
                    {
                        name: '完成报案',
                        info: '提交报案信息'
                    }
                ],
                form: {
                    id: null,
                    insuranceApplyId: '',
                    memberId: '',
                    solutionId: '',
                    solutionName: '',
                    duId: '',
                    duName: '',
                    worktypeId: '',
                    worktypeName: '',
                    idcardNo: '',
                    insuranceApplyId: '',
                    happenTime: '',
                    hospital: '',
                    area: [],
                    areaId: '',
                    address: '',
                    areaInfo: '',
                    content: '',
                    type: 0,
                    inHospital: 0,
                    hurtType: 0,
                    medicalInsurance: 0,
                    content: '',
                    reportFileList: [],
                    informantName: '',
                    informantPhone: '',
                    list: [],
                    reportFileList: []
                    relationFileList: [],
                    outpatientFileList: [],
                    hospitalFileList: [],
                    disabilityFileList: [],
                    otherFileList: [],
                    applyDetailId: '',
                    solutionId: '',
                    worktypeId: '',
                    duId: '',
                    receiveBank: '',
                    receiveUserName: '',
                    receiveAccount: ''
                },
                rules: {
                    receiveAccount: [
                        { required: true, message: '不能为空' }
                    ],
                    receiveUserName: [
                        { required: true, message: '不能为空' }
                    ],
                    receiveBank: [
                        { required: true, message: '不能为空' }
                    ],
                    memberId: [
                        { required: true, message: '请选择出险人' }
                        { required: true, message: '不能为空' }
                    ],
                    solutionId: [
                        { required: true, message: '请选择保险方案' }
                    ],
                    duId: [
                        { required: true, message: '请选择派遣单位' }
                    ],
                    worktypeId: [
                        { required: true, message: '请选择所属工种' }
                    idcardNo: [
                        { required: true, message: '不能为空' }
                    ],
                    happenTime: [
                        { required: true, message: '请选择事故发生时间' }
                    ],
                    type: [
                        { required: true, message: '请选择事故类型' }
                    ],
                    inHospital: [
                        { required: true, message: '请选择是否住院' }
                    ],
                    medicalInsurance: [
                        { required: true, message: '请选择是否有医疗保险' }
                        { required: true, message: '不能为空' }
                    ],
                    content: [
                        { required: true, message: '请输入事故描述' }
                        { required: true, message: '不能为空' }
                    ],
                    type: [
                        { required: true, message: '不能为空' }
                    ],
                    inHospital: [
                        { required: true, message: '不能为空' }
                    ],
                    hurtType: [
                        { required: true, message: '不能为空' }
                    ],
                    medicalInsurance: [
                        { required: true, message: '不能为空' }
                    ],
                    informantName: [
                        { required: true, message: '请输入报案人姓名' }
                        { required: true, message: '不能为空' }
                    ],
                    informantPhone: [
                        { required: true, message: '请输入报案人联系方式' }
                    ]
                        { required: true, message: '不能为空' }
                    ],
                },
                centerDialogVisible: false,
                pickerOptions: {},
                area: [],
                user: [],
                options: [],
                area: []
                solutionList: []
            }
        },
        created () {
@@ -224,112 +532,121 @@
            })
        },
        methods: {
            open (title, target) {
            open (title, id) {
                this.title = title
                this.visible = true
                this.form.list = []
                this.form.reportFileList = []
                this.form.area = []
                this.i = 0
                this.solutionList = []
                this.area = []
                this.user = []
                this.getUser()
                this.getArea()
                // æ–°å»º
                if (target == null) {
                this.getCityTree()
                if (id) {
                    findById(id)
                        .then(res => {
                            this.visible = true
                            this.$nextTick(() => {
                                for (const key in this.form) {
                                    this.form[key] = res[key]
                                }
                                if (this.form.areaId) {
                                    this.form.area = this.form.areaId.split(',').map(item => Number(item))
                                }
                                findList({ memberId: this.form.memberId })
                                    .then(res1 => {
                                        res1.forEach(item => {
                                            if (item.id === res.applyDetailId) {
                                                item.active = true
                                                this.pickerOptions = {
                                                    disabledDate(time) {
                                                        return time.getTime() < new Date(item.parentStartTime).getTime() || time.getTime() > new Date(item.parentEndTime).getTime()
                                                    }
                                                };
                                            } else {
                                                item.active = false
                                            }
                                        })
                                        this.solutionList = res1
                                    })
                            })
                        })
                } else {
                    this.visible = true
                    this.$nextTick(() => {
                        this.$refs.form.resetFields()
                        this.form[this.configData['field.id']] = null
                        setTimeout(() => {
                            this.centerDialogVisible = true
                        }, 300)
                        this.form.informantName = this.userInfo.realname
                    })
                    return
                }
                // ç¼–辑
                this.$nextTick(() => {
                    for (const key in this.form) {
                        this.form[key] = target[key]
                    }
                })
            },
            handleTreeData(data) {
                for (var i = 0; i < data.length; i++) {
                    if (data[i].childAreasList.length < 1) {
                        data[i].childAreasList = undefined; // çœ‹åŽç«¯è¿”的是child字段还是children字段,自行改变
                    } else {
                        this.handleTreeData(data[i].childAreasList) // children若不为空数组,则继续 é€’归调用 æœ¬æ–¹æ³•
                    }
            continueReporting() {
                this.i = 0
                this.id = null
                this.pickerOptions = {}
                this.solutionList = []
                this.form = {
                    id: null,
                    memberId: '',
                    idcardNo: '',
                    insuranceApplyId: '',
                    happenTime: '',
                    hospital: '',
                    area: [],
                    areaId: '',
                    address: '',
                    areaInfo: '',
                    content: '',
                    type: 0,
                    inHospital: 0,
                    hurtType: 0,
                    medicalInsurance: 0,
                    reportFileList: [],
                    informantName: '',
                    informantPhone: '',
                    relationFileList: [],
                    outpatientFileList: [],
                    hospitalFileList: [],
                    disabilityFileList: [],
                    otherFileList: [],
                    applyDetailId: '',
                    solutionId: '',
                    worktypeId: '',
                    duId: '',
                    receiveBank: '',
                    receiveUserName: '',
                    receiveAccount: ''
                }
                return data;
            },
            __confirmEdit () {
                this.$refs.form.validate((valid) => {
                    if (!valid) {
                        return
                    }
                    // è°ƒç”¨æ–°å»ºæŽ¥å£
                    this.isWorking = true
                    let obj = JSON.parse(JSON.stringify(this.form))
                    obj.areaId = obj.areaId.join(',')
                    updateById(obj)
                        .then(() => {
                            this.visible = false
                            this.$tip.apiSuccess('修改成功')
                            this.$emit('success')
                        })
                        .catch(e => {
                            this.$tip.apiFailed(e)
                        })
                        .finally(() => {
                            this.isWorking = false
                        })
                })
            },
            __confirmCreate () {
                this.$refs.form.validate((valid) => {
                    if (!valid) {
                        return
                    }
                    // è°ƒç”¨æ–°å»ºæŽ¥å£
                    this.isWorking = true
                    let obj = JSON.parse(JSON.stringify(this.form))
                    if (obj.areaId) {
                        obj.areaId = obj.areaId.join(',')
                    }
                    create(obj)
                        .then(() => {
                            this.visible = false
                            this.$tip.apiSuccess('新建成功')
                            this.$emit('success')
                        })
                        .catch(e => {
                            this.$tip.apiFailed(e)
                        })
                        .finally(() => {
                            this.isWorking = false
                        })
                })
            },
            // æŸ¥è¯¢åŒºåŸŸæ•°æ®
            getArea() {
                findTreeList({})
                    .then(res => {
                        this.area = this.handleTreeData(res)
                    })
            },
            getVal(e) {
                console.log(e)
                this.form.insuranceApplyId = e.applyId
                this.form.solutionId = e.solutionId
                this.form.solutionName = e.solutionName
                this.form.duId = e.duId
                this.form.duName = e.duName
                this.form.worktypeId = e.worktypeId
                this.form.worktypeName = e.worktypeName
            },
            openS() {
                if (!this.form.memberId) {
                    this.$message.warning('请先选择出险人')
                    return
            changeArea(e) {
                if (!e && e.length === 0) {
                    this.form.areaId = ''
                    this.form.areaInfo = ''
                } else {
                    this.form.areaId = e.join(',')
                    this.form.areaInfo = this.$refs.cascader.getCheckedNodes()[0].pathLabels.join(',')
                }
                this.$refs.selectSolutions.open('选择保险方案', this.form.memberId)
            },
            async getCityTree() {
                this.area = await findTreeList({})
                this.setSecondLevelChildrenToNullPrecise(this.area);
            },
            setSecondLevelChildrenToNullPrecise(data, level = 1) {
                if (!data || !data.length) return;
                data.forEach(item => {
                    if (item.childAreasList && item.childAreasList.length) {
                        if (level === 2) {
                            // è¿™æ˜¯ç¬¬ä¸€çº§èŠ‚ç‚¹ï¼Œå¤„ç†å…¶å­èŠ‚ç‚¹ï¼ˆç¬¬äºŒçº§ï¼‰
                            item.childAreasList.forEach(child => {
                                child.childAreasList = null;
                            });
                        } else {
                            // ç»§ç»­é€’归处理更深层级
                            this.setSecondLevelChildrenToNullPrecise(item.childAreasList, level + 1);
                        }
                    }
                });
            },
            getUser() {
                findListByDTO({})
@@ -337,62 +654,687 @@
                        this.user = res
                    })
            },
            getSolutions(id) {
                findList({ memberId: id })
                    .then(res => {
                        this.form.solutionId = ''
                        this.form.worktypeId = ''
                        this.form.duId = ''
                        this.options = res
                    })
            },
            getTreeName(list, id){
                let _this = this
                for (let i = 0; i < list.length; i++) {
                    let a = list[i]
                    if (a.id === id) {
                        return a.name
                    } else {
                        if (a.childAreasList && a.childAreasList.length > 0) {
                            let res = _this.getTreeName(a.childAreasList, id)
                            if (res) {
                                return res
                            }
                        }
                    }
            delFile(index, type) {
                if (type === 1) {
                    this.form.relationFileList.splice(index, 1)
                } else if (type === 2) {
                    this.form.outpatientFileList.splice(index, 1)
                } else if (type === 3) {
                    this.form.hospitalFileList.splice(index, 1)
                } else if (type === 4) {
                    this.form.disabilityFileList.splice(index, 1)
                } else if (type === 5) {
                    this.form.otherFileList.splice(index, 1)
                } else if (type === 6) {
                    this.form.reportFileList.splice(index, 1)
                }
            },
            handleChange(value) {
                let info = ''
                value.forEach(item => {
                    info += this.getTreeName(this.area, item)
                })
                this.form.areaInfo = info
            claimsUploadFile(file, type) {
                file.fileurl = file.imgaddr
                file.name = file.originname
                file.fileurlFull = file.url
                if (type === 1) {
                    this.form.relationFileList.push(file)
                } else if (type === 2) {
                    this.form.outpatientFileList.push(file)
                } else if (type === 3) {
                    this.form.hospitalFileList.push(file)
                } else if (type === 4) {
                    this.form.disabilityFileList.push(file)
                } else if (type === 5) {
                    this.form.otherFileList.push(file)
                } else if (type === 6) {
                    this.form.reportFileList.push(file)
                }
            },
            getData(data) {
                this.form.list.push(data)
                this.form.reportFileList.push({
                    fileurl: data.imgaddr,
                    name: data.originname,
                    type: data.type
                })
            getSolutions(id) {
                let row = this.user.filter(item => item.id === id)
                this.form.idcardNo = row[0].idcardNo
                findList({ memberId: id })
                    .then(res => {
                        this.form.insuranceApplyId = ''
                        res.forEach(item => {
                            item.active = false
                        })
                        this.solutionList = res
                    })
            },
            deleFile(index) {
                this.form.reportFileList.splice(index, 1)
                this.form.list.splice(index, 1)
            changeSolution(e, i) {
                this.solutionList.forEach((item, index) => {
                    item.active = i === index
                })
                let obj = this.solutionList.filter(item => item.active)[0]
                this.form.insuranceApplyId = obj.applyId
                this.form.solutionId = obj.solutionId
                this.form.worktypeId = obj.worktypeId
                this.form.duId = obj.duId
                this.form.applyDetailId = obj.id
                this.form.happenTime = ''
                this.pickerOptions = {
                    disabledDate(time) {
                        return time.getTime() < new Date(obj.parentStartTime).getTime() || time.getTime() > new Date(obj.parentEndTime).getTime()
                    }
                };
            },
            // æŸ¥çœ‹ä¿å•详情
            jumpSolutionDetail(id, solutionType) {
                if (solutionType === 1) {
                    this.$refs.OperaWtbApplyShopWindow.open('委托投保详情', { id: id })
                } else {
                    this.$refs.OperaInsuranceApplyDetails.open('投保详情', { id: id })
                }
            },
            confirm(saveType) {
                this.isWorking = true
                saveSettleClaims({...this.form, saveType})
                    .then(res => {
                        console.log(res)
                        if (saveType === 0) {
                            this.visible = false
                        } else {
                            this.id = res
                            this.i = 2
                        }
                        this.$emit('success')
                    })
                    .finally(() => {
                        this.isWorking = false
                    })
            },
            next() {
                this.$refs.form.validate((valid) => {
                    if (!valid) return
                    this.i++
                    // this.isWorking = true
                    // createSys(obj)
                    //     .then(() => {
                    //         this.visible = false
                    //         this.$emit('success')
                    //     })
                    //     .catch(e => {
                    //         this.$tip.apiFailed(e)
                    //     })
                    //     .finally(() => {
                    //         this.isWorking = false
                    //     })
                })
            }
        }
    }
</script>
<style lang="scss" scoped>
    .fuwenben {
    .box {
        width: 100%;
        height: 400px;
        font-size: 16px;
        color: black;
        overflow-y: scroll;
        word-break: break-all;
        overflow-wrap: break-word;
        .box_info {
            width: 100%;
            padding: 15px 21px;
            box-sizing: border-box;
            display: flex;
            align-items: start;
            margin-bottom: 30px;
            background-color: rgba(240,246,254,1);
            i {
                color: #165DFF;
                font-size: 18px;
                margin-right: 8px;
            }
            .box_info_title {
                width: 100%;
                display: flex;
                flex-direction: column;
                span {
                    &:nth-child(1) {
                        color: rgba(16,16,16,1);
                        font-size: 14px;
                    }
                    &:nth-child(2) {
                        color: rgba(16,16,16,1);
                        font-size: 14px;
                        margin-top: 12px;
                    }
                    &:nth-child(3) {
                        color: rgba(16,16,16,1);
                        font-size: 14px;
                        margin-top: 12px;
                    }
                }
            }
        }
        .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_info {
                        width: 100%;
                        height: 46px;
                        border-radius: 4px;
                        padding: 0 11px;
                        box-sizing: border-box;
                        margin-bottom: 20px;
                        background-color: rgba(239,239,239,1);
                        border: 1px solid rgba(187,187,187,1);
                        display: flex;
                        align-items: center;
                        .label {
                            flex-shrink: 0;
                            color: rgba(16,16,16,1);
                            font-size: 14px;
                        }
                        .content {
                            flex: 1;
                        }
                    }
                    .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;
                        }
                    }
                }
            }
        }
        .box_footer {
            width: 100%;
            margin-top: 30px;
            .box_footer_btns {
                width: 100%;
                display: flex;
                align-items: center;
                justify-content: end;
            }
        }
        .box_status {
            width: 100%;
            padding: 30px 0;
            box-sizing: border-box;
            display: flex;
            align-items: start;
            justify-content: center;
            margin-bottom: 30px;
            .box_status_row {
                width: 250px;
                display: flex;
                align-items: start;
                .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;
                    }
                    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_success {
            width: 100%;
            padding: 100px 0;
            display: flex;
            align-items: center;
            justify-content: center;
            flex-direction: column;
            .box_success_icon {
                width: 48px;
                height: 48px;
                border-radius: 50%;
                display: flex;
                align-items: center;
                justify-content: center;
                background-color: rgba(232,255,234,1);
                .el-icon-check {
                    color: #2DC24F;
                    font-size: 24px;
                    font-weight: bold;
                }
            }
            .box_success_title {
                color: rgb(29,33,41);
                font-size: 16px;
                margin-top: 16px;
            }
            .box_success_info {
                color: rgb(134,144,156);
                font-size: 12px;
                margin-top: 5px;
            }
            .box_success_btns {
                display: flex;
                align-items: center;
                margin-top: 20px;
            }
        }
        .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: 15px;
                        background-color: #E5E5E5;
                        &:last-child {
                            margin: 0;
                        }
                        img {
                            width: 100%;
                            height: 100%;
                        }
                    }
                }
            }
            .box_desc_head {
                width: 100%;
                display: flex;
                align-items: center;
                justify-content: space-between;
                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_tips1 {
                        display: flex;
                        align-items: center;
                        .el-icon-info {
                            color: #FF7B74;
                            margin-right: 8px;
                        }
                        .box_desc_title_tips_text {
                            color: rgba(255,123,116,1);
                            font-size: 14px;
                        }
                    }
                    .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;
                    }
                    .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_list {
                width: 100%;
                display: flex;
                align-items: center;
                justify-content: space-between;
                flex-wrap: wrap;
                .box_desc_list_ZW {
                    width: 33%;
                    height: 0;
                }
                .box_desc_list_row {
                    width: 33%;
                    color: rgba(16,16,16,1);
                    font-size: 14px;
                    margin-bottom: 24px;
                }
                .box_desc_list_img {
                    width: 100%;
                    display: flex;
                    align-items: start;
                    .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;
                                }
                            }
                        }
                    }
                    span {
                        flex-shrink: 0;
                        color: rgba(16,16,16,1);
                        font-size: 14px;
                    }
                }
            }
            .box_desc_f {
                width: 100%;
                display: flex;
                align-items: start;
                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;
                    margin-bottom: 30px;
                    background-color: #ffffff;
                    border: 1px solid #ececec;
                    .box_desc_fa_title {
                        width: 100%;
                        display: flex;
                        align-items: center;
                        justify-content: space-between;
                        margin-bottom: 10px;
                        span {
                            color: rgba(16,16,16,1);
                            font-size: 18px;
                            font-weight: bold;
                            text-decoration: underline;
                            cursor: pointer;
                        }
                    }
                    .box_desc_fa_row {
                        color: rgba(16,16,16,1);
                        font-size: 14px;
                        margin-bottom: 10px;
                        &:last-child {
                            margin: 0;
                        }
                    }
                }
            }
        }
    }
</style>
company/src/components/enterprise/onlineReportingCopy.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,398 @@
<template>
    <GlobalWindow
        :title="title"
        width="100%"
        :visible.sync="visible"
        :confirm-working="isWorking"
        @confirm="confirm"
    >
        <el-form :model="form" ref="form" :rules="rules">
            <el-form-item label="出险人姓名" prop="memberId" v-if="!form.id">
                <el-select v-model="form.memberId" filterable @change="getSolutions" placeholder="请选择">
                    <el-option
                        v-for="item in user"
                        :key="item.id"
                        :label="item.name + ' - ' + item.idcardNo"
                        :value="item.id">
                    </el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="保险方案" prop="solutionId" v-if="!form.id">
                <div style="display: flex; align-items: center;">
                    <span>{{form.solutionName}}</span>
                    <el-button type="primary" @click="openS" style="margin-left: 10px;">选择方案</el-button>
                </div>
            </el-form-item>
            <el-form-item label="派遣单位" prop="duId" v-if="form.duName && !form.id">
                <span>{{form.duName}}</span>
            </el-form-item>
            <el-form-item label="所属工种" prop="worktypeId" v-if="form.worktypeName && !form.id">
                <span>{{form.worktypeName}}</span>
            </el-form-item>
            <el-form-item label="事故发生时间" prop="happenTime" v-if="!form.id">
                <el-date-picker
                    v-model="form.happenTime"
                    type="datetime"
                    format="yyyy-MM-dd HH:mm:ss"
                    value-format="yyyy-MM-dd HH:mm:ss"
                    placeholder="选择日期时间">
                </el-date-picker>
            </el-form-item>
            <el-form-item label="就诊医疗机构" prop="hospital" v-if="!form.id">
                <el-input v-model="form.hospital" placeholder="请输入"></el-input>
            </el-form-item>
            <el-form-item label="出险地区" prop="areaId">
                <el-cascader
                    v-model="form.areaId"
                    :options="area"
                    :props="{ value: 'id', label: 'name', children: 'childAreasList' }"
                    @change="handleChange" />
            </el-form-item>
            <el-form-item label="事故类型" prop="type">
                <el-radio-group v-model="form.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>
            <el-form-item label="是否住院" prop="inHospital">
                <el-radio-group v-model="form.inHospital">
                    <el-radio :label="0">是</el-radio>
                    <el-radio :label="1">否</el-radio>
                </el-radio-group>
            </el-form-item>
            <el-form-item label="是否有医疗保险" prop="medicalInsurance">
                <el-radio-group v-model="form.medicalInsurance">
                    <el-radio :label="0">是</el-radio>
                    <el-radio :label="1">否</el-radio>
                </el-radio-group>
            </el-form-item>
            <el-form-item label="事故描述" prop="content" v-if="!form.id">
                <el-input type="textarea" :rows="5" placeholder="请输入内容" v-model="form.content"></el-input>
            </el-form-item>
            <el-form-item label="上传事故视频/照片" prop="list" v-if="!form.id">
                <upload :list="form.list" :accept="'.mp4,.jpg,.png,.jpeg'" folder="settle" @dele="deleFile" @success="getData" />
            </el-form-item>
            <el-form-item label="报案人姓名" prop="informantName">
                <el-input v-model="form.informantName" placeholder="请输入"></el-input>
            </el-form-item>
            <el-form-item label="报案人联系方式" prop="informantPhone">
                <el-input maxlength="11" v-model="form.informantPhone" placeholder="请输入"></el-input>
            </el-form-item>
        </el-form>
        <!--    å¼¹çª—提醒    -->
        <el-dialog
            title="温馨提示"
            :modal="false"
            :close-on-click-modal="false"
            :show-close="false"
            :visible.sync="centerDialogVisible"
            width="50%"
            center>
            <div class="fuwenben" style="font-size: 12px">
                    å°Šæ•¬çš„客户:
                é¦–先感谢您对于我们的信任与支持,我们很荣幸成为贵司的保险咨询服务商!
                é‰´äºŽè¿‘期出现个别客户存在:当天投保当天出险(即先出工伤或意外、再进行投保操作)的个别诈骗保险金的案例,错误使用“即时生效”条款。针对此种情况本公司郑重告知各位客户:
                1.诈骗保险金的行为属于违法行为,一旦发现,本公司将提交公安机关处理并保留追究法律责任;
                2.为了顺利理赔结案,按照保险公司的理赔审查要求,当天投保当天出险需要提供出险监控视频或者能佐证具体时间点的任何证据;
                3.请您深刻理解保险中“如实告知”的投保人义务,我们致力于为您转移用工风险和法律风险。但这一切的前提是:合规合法合理。
                é™„件一:
                ã€Šä¸­åŽäººæ°‘共和国刑法》第一百九十八条 ã€ä¿é™©è¯ˆéª—罪】有下列情形之一,进行保险诈骗活动,数额较大的,处五年以下有期徒刑或者拘役, å¹¶å¤„一万元以上十万元以下罚金;数额巨大或者有其他严重情节的,处五年以上十年以下有期徒刑,并处二万元以上二十万元以下罚金;数额特别巨大或者有其他特别严重情节的,处十年以上有期徒 åˆ‘,并处二万元以上二十万元以下罚金或者没收财产:
                ï¼ˆä¸€ï¼‰æŠ•保人故意虚构保险标的,骗取保险金的;
                ï¼ˆäºŒï¼‰æŠ•保人、被保险人或者受益人对发生的保险事故编造虚假的原因或者夸大损失的程度,骗取保险金的;
                ï¼ˆä¸‰ï¼‰æŠ•保人、被保险人或者受益人编造未曾发生的保险事故,骗取保险金的;
                ï¼ˆå››ï¼‰æŠ•保人、被保险人故意造成财产损失的保险事故,骗取保险金的;
                ï¼ˆäº”)投保人、受益人故意造成被保险人死亡、伤残或者疾病,骗取保险金的。
                æœ‰å‰æ¬¾ç¬¬å››é¡¹ã€ç¬¬äº”项所列行为,同时构成其他犯罪的,依照数罪并罚的规定处罚。 å•位犯第一款罪的,对单位判处罚金,并对其直接负责的主管人员和 å…¶ä»–直接责任人员,处五年以下有期徒刑或者拘役;数额巨大或者有 å…¶ä»–严重情节的,处五年以上十年以下有期徒刑;数额特别巨大或者 æœ‰å…¶ä»–特别严重情节的,处十年以上有期徒刑。 ä¿é™©äº‹æ•…的鉴定人、证明人、财产评估人故意提供虚假的证明文件,为他人诈骗提供条件的,以保险诈骗的共犯论处。
                é™„件二:
                ã€Šä¸­åŽäººæ°‘共和国保险法》第二十七条 æœªå‘生保险事故,被保险人或者受益人谎称发生了保险事故,向保险人提出赔偿或者给付保险金请求的,保险人有权解除合同,并不退还保险费。
                æŠ•保人、被保险人故意制造保险事故的,保险人有权解除合同,不承担赔偿或者给付保险金的责任;除本法第四十三条规定外,不退还保险费。
                ä¿é™©äº‹æ•…发生后,投保人、被保险人或者受益人以伪造、变造的有关证明、资料或者其他证据,编造虚假的事故原因或者夸大损失程度的,保险人对其虚报的部分不承担赔偿或者给付保险金的责任。
                æŠ•保人、被保险人或者受益人有前三款规定行为之一,致使保险 äººæ”¯ä»˜ä¿é™©é‡‘或者支出费用的,应当撤销或者赔偿。
            </div>
            <span slot="footer" class="dialog-footer">
                <el-button type="primary" @click="centerDialogVisible = false">我已知晓</el-button>
            </span>
        </el-dialog>
        <!--    é€‰æ‹©ä¿é™©æ–¹æ¡ˆ    -->
        <selectSolutions ref="selectSolutions" @success="getVal" />
    </GlobalWindow>
</template>
<script>
    import BaseOpera from '@/components/base/BaseOpera'
    import GlobalWindow from '@/components/common/GlobalWindow'
    import upload from '@/components/common/upload'
    import selectSolutions from '@/components/enterprise/selectSolutions'
    import { findListByDTO } from '@/api/business/member'
    import { findList } from '@/api/business/applyChange'
    import { findTreeList } from '@/api/system/common'
    import { create, updateById } from '@/api/business/settleClaims'
    export default {
        name: 'onlineReporting',
        extends: BaseOpera,
        components: { GlobalWindow, upload, selectSolutions },
        data () {
            return {
                form: {
                    id: null,
                    insuranceApplyId: '',
                    memberId: '',
                    solutionId: '',
                    solutionName: '',
                    duId: '',
                    duName: '',
                    worktypeId: '',
                    worktypeName: '',
                    happenTime: '',
                    hospital: '',
                    areaId: '',
                    areaInfo: '',
                    type: 0,
                    inHospital: 0,
                    medicalInsurance: 0,
                    content: '',
                    informantName: '',
                    informantPhone: '',
                    list: [],
                    reportFileList: []
                },
                rules: {
                    memberId: [
                        { required: true, message: '请选择出险人' }
                    ],
                    solutionId: [
                        { required: true, message: '请选择保险方案' }
                    ],
                    duId: [
                        { required: true, message: '请选择派遣单位' }
                    ],
                    worktypeId: [
                        { required: true, message: '请选择所属工种' }
                    ],
                    happenTime: [
                        { required: true, message: '请选择事故发生时间' }
                    ],
                    type: [
                        { required: true, message: '请选择事故类型' }
                    ],
                    inHospital: [
                        { required: true, message: '请选择是否住院' }
                    ],
                    medicalInsurance: [
                        { required: true, message: '请选择是否有医疗保险' }
                    ],
                    content: [
                        { required: true, message: '请输入事故描述' }
                    ],
                    informantName: [
                        { required: true, message: '请输入报案人姓名' }
                    ],
                    informantPhone: [
                        { required: true, message: '请输入报案人联系方式' }
                    ]
                },
                centerDialogVisible: false,
                user: [],
                options: [],
                area: []
            }
        },
        created () {
            this.config({
                api: '/business/settleClaims',
                'field.id': 'id'
            })
        },
        methods: {
            open (title, target) {
                this.title = title
                this.visible = true
                this.form.list = []
                this.form.reportFileList = []
                this.getUser()
                this.getArea()
                // æ–°å»º
                if (target == null) {
                    this.$nextTick(() => {
                        this.$refs.form.resetFields()
                        this.form[this.configData['field.id']] = null
                        setTimeout(() => {
                            this.centerDialogVisible = true
                        }, 300)
                    })
                    return
                }
                // ç¼–辑
                this.$nextTick(() => {
                    for (const key in this.form) {
                        this.form[key] = target[key]
                    }
                })
            },
            handleTreeData(data) {
                for (var i = 0; i < data.length; i++) {
                    if (data[i].childAreasList.length < 1) {
                        data[i].childAreasList = undefined; // çœ‹åŽç«¯è¿”的是child字段还是children字段,自行改变
                    } else {
                        this.handleTreeData(data[i].childAreasList) // children若不为空数组,则继续 é€’归调用 æœ¬æ–¹æ³•
                    }
                }
                return data;
            },
            __confirmEdit () {
                this.$refs.form.validate((valid) => {
                    if (!valid) {
                        return
                    }
                    // è°ƒç”¨æ–°å»ºæŽ¥å£
                    this.isWorking = true
                    let obj = JSON.parse(JSON.stringify(this.form))
                    obj.areaId = obj.areaId.join(',')
                    updateById(obj)
                        .then(() => {
                            this.visible = false
                            this.$tip.apiSuccess('修改成功')
                            this.$emit('success')
                        })
                        .catch(e => {
                            this.$tip.apiFailed(e)
                        })
                        .finally(() => {
                            this.isWorking = false
                        })
                })
            },
            __confirmCreate () {
                this.$refs.form.validate((valid) => {
                    if (!valid) {
                        return
                    }
                    // è°ƒç”¨æ–°å»ºæŽ¥å£
                    this.isWorking = true
                    let obj = JSON.parse(JSON.stringify(this.form))
                    if (obj.areaId) {
                        obj.areaId = obj.areaId.join(',')
                    }
                    create(obj)
                        .then(() => {
                            this.visible = false
                            this.$tip.apiSuccess('新建成功')
                            this.$emit('success')
                        })
                        .catch(e => {
                            this.$tip.apiFailed(e)
                        })
                        .finally(() => {
                            this.isWorking = false
                        })
                })
            },
            // æŸ¥è¯¢åŒºåŸŸæ•°æ®
            getArea() {
                findTreeList({})
                    .then(res => {
                        this.area = this.handleTreeData(res)
                    })
            },
            getVal(e) {
                console.log(e)
                this.form.insuranceApplyId = e.applyId
                this.form.solutionId = e.solutionId
                this.form.solutionName = e.solutionName
                this.form.duId = e.duId
                this.form.duName = e.duName
                this.form.worktypeId = e.worktypeId
                this.form.worktypeName = e.worktypeName
            },
            openS() {
                if (!this.form.memberId) {
                    this.$message.warning('请先选择出险人')
                    return
                }
                this.$refs.selectSolutions.open('选择保险方案', this.form.memberId)
            },
            getUser() {
                findListByDTO({})
                    .then(res => {
                        this.user = res
                    })
            },
            getSolutions(id) {
                findList({ memberId: id })
                    .then(res => {
                        this.form.solutionId = ''
                        this.form.worktypeId = ''
                        this.form.duId = ''
                        this.options = res
                    })
            },
            getTreeName(list, id){
                let _this = this
                for (let i = 0; i < list.length; i++) {
                    let a = list[i]
                    if (a.id === id) {
                        return a.name
                    } else {
                        if (a.childAreasList && a.childAreasList.length > 0) {
                            let res = _this.getTreeName(a.childAreasList, id)
                            if (res) {
                                return res
                            }
                        }
                    }
                }
            },
            handleChange(value) {
                let info = ''
                value.forEach(item => {
                    info += this.getTreeName(this.area, item)
                })
                this.form.areaInfo = info
            },
            getData(data) {
                this.form.list.push(data)
                this.form.reportFileList.push({
                    fileurl: data.imgaddr,
                    name: data.originname,
                    type: data.type
                })
            },
            deleFile(index) {
                this.form.reportFileList.splice(index, 1)
                this.form.list.splice(index, 1)
            }
        }
    }
</script>
<style lang="scss" scoped>
    .fuwenben {
        width: 100%;
        height: 400px;
        font-size: 16px;
        color: black;
        overflow-y: scroll;
        word-break: break-all;
        overflow-wrap: break-word;
    }
</style>
company/src/views/business/settleClaims.vue
@@ -58,13 +58,7 @@
                        <span>{{scope.$index + 1}}</span>
                    </template>
                </el-table-column>
              <el-table-column prop="status" label="案件状态" min-width="100px">
                <template slot-scope="{row}">
                  <span :class="'settle-status' + row.status" v-if="row.status === 0 || row.status === 2 || row.status === 3">处理中</span>
                  <span :class="'settle-status' + row.status" v-if="row.status === 1">已撤案</span>
                  <span :class="'settle-status' + row.status" v-if="row.status === 4">已结案</span>
                </template>
              </el-table-column>
              <el-table-column prop="statusName" label="案件状态" min-width="100px"></el-table-column>
                <el-table-column prop="reportNum" label="报案号" min-width="100px"></el-table-column>
                <el-table-column prop="companyName" label="报案企业" min-width="100px"></el-table-column>
                <el-table-column prop="memberName" label="出险人" min-width="100px"></el-table-column>
@@ -77,11 +71,29 @@
                <el-table-column
                    v-if="containPermissions(['business:settleclaims:update', 'business:settleclaims:delete'])"
                    label="操作"
                    min-width="120"
                    min-width="200"
                    fixed="right"
                >
                    <template slot-scope="{row}">
                        <el-button type="text" @click="$refs.operaSettleClaimsWindow.open('报案详情', row)" v-permissions="['business:settleclaims:update']">查看详情</el-button>
                        <el-button
                            type="text"
                            @click="$refs.operaSettleClaimsWindow.open('报案详情', row.id)"
                            v-if="row.status !== 0">
                            æŸ¥çœ‹è¯¦æƒ…
                        </el-button>
                        <el-button
                            type="text"
                            @click="$refs.onlineReporting.open('编辑报案', row.id)"
                            v-if="[0,1,2,4,5,7].includes(row.status) && userInfo.type === 1">
                            ç¼–辑
                        </el-button>
                        <el-button
                            type="text"
                            @click="revoke(row.id)"
                            v-if="[1,2,3,4,5,9,7,10,11].includes(row.status) && userInfo.type === 1">
                            æ’¤é”€
                        </el-button>
                        <el-button type="text" @click="deleRow(row.id)" v-if="row.status === 0">删除</el-button>
                    </template>
                </el-table-column>
            </el-table>
@@ -106,7 +118,9 @@
import OperaSettleClaimsWindow from '@/components/business/OperaSettleClaimsWindow'
import onlineReporting from '@/components/enterprise/onlineReporting'
import { all as solutionAll } from '@/api/business/solutions'
import { returnSettle } from '@/api/business/settleRisk'
import { pageAll as companyAll } from '@/api/business/company'
import { dele } from '@/api/business/settleClaims'
import { mapState } from 'vuex'
export default {
  name: 'SettleClaims',
@@ -142,9 +156,21 @@
    this.loadSelectList()
  },
  methods: {
    // handlePageChange() {
    //   this.search()
    // },
      // æ’¤é”€
      revoke(id) {
          this.$confirm('撤销后,案件直接结束,无法继续进行理赔操作!', '是否撤销报案?', {
              confirmButtonText: '确定撤销',
              cancelButtonText: '我再想想',
              type: 'warning'
          }).then(() => {
              returnSettle({ id })
                  .then(res => {
                      this.search()
                  })
          }).catch(() => {
          });
      },
    loadSelectList () {
      solutionAll({ dataType: 0 }).then(res => {
        this.solutionList = res
@@ -154,7 +180,22 @@
        this.companyList = res
      }).catch(err => {
      })
    }
    },
      deleRow(id) {
          this.$confirm('此操作将永久删除该数据, æ˜¯å¦ç»§ç»­?', '提示', {
              confirmButtonText: '确定',
              cancelButtonText: '取消',
              type: 'warning'
          }).then(() => {
              dele(id)
                .then(res => {
                    this.$message.success('删除成功')
                    this.search()
                })
          }).catch(() => {
          });
      }
  }
}