From a68bf12a2975405f57f9a9d51b91c13a93c026f0 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期三, 31 一月 2024 21:01:36 +0800
Subject: [PATCH] Mr.Shi

---
 company/src/components/enterprise/onlineReporting.vue |  395 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 395 insertions(+), 0 deletions(-)

diff --git a/company/src/components/enterprise/onlineReporting.vue b/company/src/components/enterprise/onlineReporting.vue
new file mode 100644
index 0000000..4943c63
--- /dev/null
+++ b/company/src/components/enterprise/onlineReporting.vue
@@ -0,0 +1,395 @@
+<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">
+                <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.璇锋偍娣卞埢鐞嗚В淇濋櫓涓�滃瀹炲憡鐭モ�濈殑鎶曚繚浜轰箟鍔★紝鎴戜滑鑷村姏浜庝负鎮ㄨ浆绉荤敤宸ラ闄╁拰娉曞緥椋庨櫓銆備絾杩欎竴鍒囩殑鍓嶆彁鏄細鍚堣鍚堟硶鍚堢悊銆�
+
+                闄勪欢涓�锛�
+
+                銆婁腑鍗庝汉姘戝叡鍜屽浗鍒戞硶銆嬬涓�鐧句節鍗佸叓鏉� 銆愪繚闄╄瘓楠楃姜銆戞湁涓嬪垪鎯呭舰涔嬩竴锛岃繘琛屼繚闄╄瘓楠楁椿鍔紝鏁伴杈冨ぇ鐨勶紝澶勪簲骞翠互涓嬫湁鏈熷緬鍒戞垨鑰呮嫎褰癸紝 骞跺涓�涓囧厓浠ヤ笂鍗佷竾鍏冧互涓嬬綒閲戯紱鏁伴宸ㄥぇ鎴栬�呮湁鍏朵粬涓ラ噸鎯呰妭鐨勶紝澶勪簲骞翠互涓婂崄骞翠互涓嬫湁鏈熷緬鍒戯紝骞跺浜屼竾鍏冧互涓婁簩鍗佷竾鍏冧互涓嬬綒閲戯紱鏁伴鐗瑰埆宸ㄥぇ鎴栬�呮湁鍏朵粬鐗瑰埆涓ラ噸鎯呰妭鐨勶紝澶勫崄骞翠互涓婃湁鏈熷緬 鍒戯紝骞跺浜屼竾鍏冧互涓婁簩鍗佷竾鍏冧互涓嬬綒閲戞垨鑰呮病鏀惰储浜э細
+
+                锛堜竴锛夋姇淇濅汉鏁呮剰铏氭瀯淇濋櫓鏍囩殑锛岄獥鍙栦繚闄╅噾鐨勶紱
+
+                锛堜簩锛夋姇淇濅汉銆佽淇濋櫓浜烘垨鑰呭彈鐩婁汉瀵瑰彂鐢熺殑淇濋櫓浜嬫晠缂栭�犺櫄鍋囩殑鍘熷洜鎴栬�呭じ澶ф崯澶辩殑绋嬪害锛岄獥鍙栦繚闄╅噾鐨勶紱
+
+                锛堜笁锛夋姇淇濅汉銆佽淇濋櫓浜烘垨鑰呭彈鐩婁汉缂栭�犳湭鏇惧彂鐢熺殑淇濋櫓浜嬫晠锛岄獥鍙栦繚闄╅噾鐨勶紱
+
+                锛堝洓锛夋姇淇濅汉銆佽淇濋櫓浜烘晠鎰忛�犳垚璐骇鎹熷け鐨勪繚闄╀簨鏁咃紝楠楀彇淇濋櫓閲戠殑锛�
+
+                锛堜簲锛夋姇淇濅汉銆佸彈鐩婁汉鏁呮剰閫犳垚琚繚闄╀汉姝讳骸銆佷激娈嬫垨鑰呯柧鐥咃紝楠楀彇淇濋櫓閲戠殑銆�
+
+                鏈夊墠娆剧鍥涢」銆佺浜旈」鎵�鍒楄涓猴紝鍚屾椂鏋勬垚鍏朵粬鐘姜鐨勶紝渚濈収鏁扮姜骞剁綒鐨勮瀹氬缃氥�� 鍗曚綅鐘涓�娆剧姜鐨勶紝瀵瑰崟浣嶅垽澶勭綒閲戯紝骞跺鍏剁洿鎺ヨ礋璐g殑涓荤浜哄憳鍜� 鍏朵粬鐩存帴璐d换浜哄憳锛屽浜斿勾浠ヤ笅鏈夋湡寰掑垜鎴栬�呮嫎褰癸紱鏁伴宸ㄥぇ鎴栬�呮湁 鍏朵粬涓ラ噸鎯呰妭鐨勶紝澶勪簲骞翠互涓婂崄骞翠互涓嬫湁鏈熷緬鍒戯紱鏁伴鐗瑰埆宸ㄥぇ鎴栬�� 鏈夊叾浠栫壒鍒弗閲嶆儏鑺傜殑锛屽鍗佸勾浠ヤ笂鏈夋湡寰掑垜銆� 淇濋櫓浜嬫晠鐨勯壌瀹氫汉銆佽瘉鏄庝汉銆佽储浜ц瘎浼颁汉鏁呮剰鎻愪緵铏氬亣鐨勮瘉鏄庢枃浠讹紝涓轰粬浜鸿瘓楠楁彁渚涙潯浠剁殑锛屼互淇濋櫓璇堥獥鐨勫叡鐘澶勩��
+
+                闄勪欢浜岋細
+
+                銆婁腑鍗庝汉姘戝叡鍜屽浗淇濋櫓娉曘�嬬浜屽崄涓冩潯 鏈彂鐢熶繚闄╀簨鏁咃紝琚繚闄╀汉鎴栬�呭彈鐩婁汉璋庣О鍙戠敓浜嗕繚闄╀簨鏁咃紝鍚戜繚闄╀汉鎻愬嚭璧斿伩鎴栬�呯粰浠樹繚闄╅噾璇锋眰鐨勶紝淇濋櫓浜烘湁鏉冭В闄ゅ悎鍚岋紝骞朵笉閫�杩樹繚闄╄垂銆�
+
+                鎶曚繚浜恒�佽淇濋櫓浜烘晠鎰忓埗閫犱繚闄╀簨鏁呯殑锛屼繚闄╀汉鏈夋潈瑙i櫎鍚堝悓锛屼笉鎵挎媴璧斿伩鎴栬�呯粰浠樹繚闄╅噾鐨勮矗浠伙紱闄ゆ湰娉曠鍥涘崄涓夋潯瑙勫畾澶栵紝涓嶉��杩樹繚闄╄垂銆�
+
+                淇濋櫓浜嬫晠鍙戠敓鍚庯紝鎶曚繚浜恒�佽淇濋櫓浜烘垨鑰呭彈鐩婁汉浠ヤ吉閫犮�佸彉閫犵殑鏈夊叧璇佹槑銆佽祫鏂欐垨鑰呭叾浠栬瘉鎹紝缂栭�犺櫄鍋囩殑浜嬫晠鍘熷洜鎴栬�呭じ澶ф崯澶辩▼搴︾殑锛屼繚闄╀汉瀵瑰叾铏氭姤鐨勯儴鍒嗕笉鎵挎媴璧斿伩鎴栬�呯粰浠樹繚闄╅噾鐨勮矗浠汇��
+
+                鎶曚繚浜恒�佽淇濋櫓浜烘垨鑰呭彈鐩婁汉鏈夊墠涓夋瑙勫畾琛屼负涔嬩竴锛岃嚧浣夸繚闄� 浜烘敮浠樹繚闄╅噾鎴栬�呮敮鍑鸿垂鐢ㄧ殑锛屽簲褰撴挙閿�鎴栬�呰禂鍋裤��
+            </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))
+                    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) {
+                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>

--
Gitblit v1.9.3