MrShi
2024-03-08 d2bc6e096f0806b78ea92d4b90a21d3627d406c7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
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">
                    尊敬的客户:
 
                首先感谢您对于我们的信任与支持,我们很荣幸成为贵司的保险咨询服务商!
 
                鉴于近期出现个别客户存在:当天投保当天出险(即先出工伤或意外、再进行投保操作)的个别诈骗保险金的案例,错误使用“即时生效”条款。针对此种情况本公司郑重告知各位客户:
 
                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>