From 617bbcea64a2e81fc4543250648725debfc1db3c Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期三, 24 一月 2024 09:15:01 +0800
Subject: [PATCH] Mr.Shi

---
 company/src/components/business/dispatchUnitReviewDetails.vue |  296 ++++++++++++
 company/src/components/common/Menu.vue                        |    3 
 company/src/components/business/dispatchReview.vue            |  163 ++++++
 company/src/components/business/OperaPolicyListWindow.vue     |  449 ++++++++++++++++++
 company/src/views/business/dispatchUnitReview.vue             |  104 ++++
 company/src/components/business/policyListDetails.vue         |  242 ++++++++++
 company/src/views/business/policyList.vue                     |  122 +++++
 company/.env.development                                      |    2 
 8 files changed, 1,379 insertions(+), 2 deletions(-)

diff --git a/company/.env.development b/company/.env.development
index 9cff474..622962f 100644
--- a/company/.env.development
+++ b/company/.env.development
@@ -1,6 +1,6 @@
 # 寮�鍙戠幆澧冮厤缃�
 NODE_ENV = 'development'
 
-VUE_APP_API = 'http://192.168.0.156:10023/'
+VUE_APP_API = 'http://192.168.0.104:10023/'
 
 # VUE_APP_API = 'http://192.168.0.134:10023/'
diff --git a/company/src/components/business/OperaPolicyListWindow.vue b/company/src/components/business/OperaPolicyListWindow.vue
new file mode 100644
index 0000000..f6b1098
--- /dev/null
+++ b/company/src/components/business/OperaPolicyListWindow.vue
@@ -0,0 +1,449 @@
+<template>
+    <GlobalWindow
+        :title="title"
+        width="80%"
+        :visible.sync="visible"
+        :confirm-working="isWorking"
+        @confirm="confirm"
+    >
+        <div class="desc">
+            <div class="desc_item">
+                <div class="desc_item_label">
+                    <div class="desc_item_label_left">
+                        <span>鎶曚繚浼佷笟锛氬畨寰藉钩瀹変汉鍔涜祫婧愭湁闄愬叕鍙�</span>
+                        <span>淇濆崟鐘舵�侊細寰呭嚭鍗�</span>
+                        <span>鎻愪氦鏃堕棿锛�2023-09-11 00:00:00</span>
+                    </div>
+                    <div class="desc_item_label_right">
+                        <el-button type="primary" @click="$refs.policyListDetails.open('鎶曚繚璇︽儏鍗�')">瀵煎嚭璇﹀崟</el-button>
+                        <el-button type="primary">鏌ョ湅鎶曚繚鍗�</el-button>
+                        <el-button type="primary">鏌ョ湅淇濋櫓鍗�</el-button>
+                        <el-button type="danger" @click="visible4 = true">淇敼淇濋櫓鍗�</el-button>
+                    </div>
+                </div>
+                <div class="desc_item_from">
+                    <el-table
+                            :data="tableData"
+                            border
+                            style="width: 100%">
+                        <el-table-column
+                                prop="date"
+                                label="淇濆崟鍙�">
+                        </el-table-column>
+                        <el-table-column
+                                prop="name"
+                                label="淇濋櫓鏂规"
+                                width="180">
+                        </el-table-column>
+                        <el-table-column
+                                prop="address"
+                                label="淇濋櫓鐢熸晥璧锋湡">
+                        </el-table-column>
+                        <el-table-column
+                                prop="address"
+                                label="淇濋櫓鐢熸晥姝㈡湡">
+                        </el-table-column>
+                        <el-table-column
+                                prop="address"
+                                label="鎶曚繚浜烘暟">
+                        </el-table-column>
+                        <el-table-column
+                                prop="address"
+                                label="鍦ㄤ繚鏃堕暱锛堝ぉ锛�">
+                        </el-table-column>
+                        <el-table-column
+                                prop="address"
+                                label="褰撳墠璐圭敤">
+                        </el-table-column>
+                        <el-table-column
+                                prop="address"
+                                label="鎬昏垂鐢�">
+                        </el-table-column>
+                    </el-table>
+                </div>
+                <div class="desc_item_cate">
+                    <el-tabs v-model="activeName" @tab-click="handleClick">
+                        <el-tab-pane label="鍦ㄤ繚浜哄憳" name="first"></el-tab-pane>
+                        <el-tab-pane label="鍔�/鍑忎繚璁板綍" name="second"></el-tab-pane>
+                        <el-tab-pane label="鎹㈠巶璁板綍" name="third"></el-tab-pane>
+                    </el-tabs>
+                </div>
+                <div class="desc_item_search">
+                    <el-form :inline="true" :model="formInline" class="demo-form-inline">
+                        <el-form-item label="鍦ㄤ繚鐘舵��" prop="region">
+                            <el-select v-model="formInline.region" placeholder="璇烽�夋嫨">
+                                <el-option label="淇濋殰涓�" value="1"></el-option>
+                                <el-option label="涓嶅湪淇�" value="2"></el-option>
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item label="娲鹃仯鍗曚綅" prop="region">
+                            <el-select v-model="formInline.region" placeholder="璇烽�夋嫨">
+                                <el-option label="淇濋殰涓�" value="1"></el-option>
+                                <el-option label="涓嶅湪淇�" value="2"></el-option>
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item label="鎵�灞炲伐绉�" prop="region">
+                            <el-select v-model="formInline.region" placeholder="璇烽�夋嫨">
+                                <el-option label="淇濋殰涓�" value="1"></el-option>
+                                <el-option label="涓嶅湪淇�" value="2"></el-option>
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item label="鍛樺伐濮撳悕" prop="user">
+                            <el-input v-model="formInline.user" placeholder="璇疯緭鍏�"></el-input>
+                        </el-form-item>
+                        <el-form-item label="淇濋櫓鐢熸晥璧锋湡" prop="user">
+                            <el-date-picker
+                                    v-model="formInline.user"
+                                    type="daterange"
+                                    range-separator="鑷�"
+                                    start-placeholder="寮�濮嬫棩鏈�"
+                                    end-placeholder="缁撴潫鏃ユ湡">
+                            </el-date-picker>
+                        </el-form-item>
+                        <el-form-item label="淇濋櫓鐢熸晥璧锋湡" prop="user">
+                            <el-date-picker
+                                    v-model="formInline.user"
+                                    type="daterange"
+                                    range-separator="鑷�"
+                                    start-placeholder="寮�濮嬫棩鏈�"
+                                    end-placeholder="缁撴潫鏃ユ湡">
+                            </el-date-picker>
+                        </el-form-item>
+                        <section>
+                            <el-button type="primary" @click="onSubmit">鏌ヨ</el-button>
+                            <el-button>閲嶇疆</el-button>
+                            <el-button type="primary">瀵煎嚭鍚嶅崟</el-button>
+                        </section>
+                    </el-form>
+                </div>
+                <div class="desc_item_from">
+                    <el-table
+                            :data="tableData"
+                            border
+                            style="width: 100%">
+                        <el-table-column label="搴忓彿">
+                            <template slot-scope="scope">
+                                <span>{{scope.$index + 1}}</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column
+                                prop="date"
+                                label="鍛樺伐濮撳悕">
+                        </el-table-column>
+                        <el-table-column
+                                prop="name"
+                                label="鎬у埆"
+                                width="180">
+                        </el-table-column>
+                        <el-table-column
+                                prop="address"
+                                label="韬唤璇佸彿">
+                        </el-table-column>
+                        <el-table-column
+                                prop="address"
+                                label="娲鹃仯鍗曚綅">
+                        </el-table-column>
+                        <el-table-column
+                                prop="address"
+                                label="鎵�灞炲伐绉�">
+                        </el-table-column>
+                        <el-table-column
+                                prop="address"
+                                label="淇濋櫓鐢熸晥璧锋湡">
+                        </el-table-column>
+                        <el-table-column
+                                prop="address"
+                                label="淇濋櫓鐢熸晥姝㈡湡">
+                        </el-table-column>
+                        <el-table-column
+                                prop="address"
+                                label="浜х敓璐圭敤锛堝厓锛�">
+                        </el-table-column>
+                    </el-table>
+                    <div class="desc_item_from_page">
+                        <el-pagination
+                                @size-change="handleSizeChange"
+                                @current-change="handleCurrentChange"
+                                :current-page="currentPage"
+                                :page-sizes="[100, 200, 300, 400]"
+                                :page-size="100"
+                                layout="total, sizes, prev, pager, next, jumper"
+                                :total="400">
+                        </el-pagination>
+                    </div>
+                </div>
+                <div class="desc_item_review">
+                    <div class="desc_item_review_label">瀹℃牳娴佺▼</div>
+                    <el-timeline :reverse="reverse">
+                        <el-timeline-item
+                                v-for="(activity, index) in activities"
+                                :key="index"
+                                :timestamp="activity.timestamp">
+                            {{activity.content}}
+                        </el-timeline-item>
+                    </el-timeline>
+                </div>
+            </div>
+        </div>
+        <policyListDetails ref="policyListDetails" @success="successEvent" />
+        <!--    淇敼淇濋櫓鍗�    -->
+        <el-dialog
+                title="淇敼淇濋櫓鍗�"
+                :visible.sync="visible4"
+                :show-close="false"
+                :close-on-click-modal="false"
+                width="30%"
+                center>
+            <div class="form">
+                <div class="form_item">
+                    <div class="form_item_label"><span>*</span>淇濋櫓鐢熸晥璧锋湡锛�</div>
+                    <div class="form_item_val">
+                        <el-date-picker
+                                v-model="value1"
+                                type="date"
+                                placeholder="閫夋嫨鏃ユ湡">
+                        </el-date-picker>
+                    </div>
+                </div>
+                <div class="form_item">
+                    <div class="form_item_label"><span>*</span>淇濆崟鍙凤細</div>
+                    <div class="form_item_val">
+                        <el-input placeholder="璇疯緭鍏�"></el-input>
+                    </div>
+                </div>
+                <div class="form_item">
+                    <div class="form_item_label"><span>*</span>涓婁紶淇濋櫓鍗曪細</div>
+                    <div class="form_item_val">
+                        <el-upload
+                                class="upload-demo"
+                                action="https://jsonplaceholder.typicode.com/posts/"
+                                :on-preview="handlePreview"
+                                :on-remove="handleRemove"
+                                :before-remove="beforeRemove"
+                                multiple
+                                :limit="1"
+                                :on-exceed="handleExceed"
+                                :file-list="fileList">
+                            <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button>
+                            <div slot="tip" class="el-upload__tip">鍙兘涓婁紶pdf鏂囦欢锛屼笖涓嶈秴杩�5mb</div>
+                        </el-upload>
+                    </div>
+                </div>
+                <div class="form_item">
+                    <div class="form_item_label"><span>*</span>淇敼鍘熷洜锛�</div>
+                    <div class="form_item_val">
+                        <el-input placeholder="璇疯緭鍏�"></el-input>
+                    </div>
+                </div>
+            </div>
+            <span slot="footer" class="dialog-footer">
+                <el-button @click="visible4 = false">鍙� 娑�</el-button>
+                <el-button type="primary" @click="visible4 = false">纭� 瀹�</el-button>
+            </span>
+        </el-dialog>
+    </GlobalWindow>
+</template>
+
+<script>
+    import BaseOpera from '@/components/base/BaseOpera'
+    import GlobalWindow from '@/components/common/GlobalWindow'
+    import policyListDetails from '@/components/business/policyListDetails'
+    export default {
+        name: 'OperaPolicyListWindow',
+        extends: BaseOpera,
+        components: { GlobalWindow, policyListDetails },
+        data () {
+            return {
+                // 琛ㄥ崟鏁版嵁
+                form: {
+                    id: null,
+                    editDate: ''
+                },
+                // 楠岃瘉瑙勫垯
+                rules: {
+                },
+                formInline: {
+                    user: '',
+                    region: ''
+                },
+                visible1: false,
+                visible2: false,
+                visible3: false,
+                visible4: false,
+                visible5: false,
+                reverse: true,
+                radio: 0,
+                fileList: [
+                    {name: 'food.pdf', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}
+                ],
+                activities: [{
+                    content: '娲诲姩鎸夋湡寮�濮�',
+                    timestamp: '2018-04-15'
+                }, {
+                    content: '閫氳繃瀹℃牳',
+                    timestamp: '2018-04-13'
+                }, {
+                    content: '鍒涘缓鎴愬姛',
+                    timestamp: '2018-04-11'
+                }],
+                tableData: [],
+                activeName: 'first',
+                currentPage: 1
+            }
+        },
+        created () {
+            this.config({
+                api: '/business/insuranceApply',
+                'field.id': 'id'
+            })
+        },
+        methods: {
+            handleRemove(file, fileList) {
+                console.log(file, fileList);
+            },
+            handlePreview(file) {
+                console.log(file);
+            },
+            handleExceed(files, fileList) {
+                this.$message.warning(`褰撳墠闄愬埗閫夋嫨 3 涓枃浠讹紝鏈閫夋嫨浜� ${files.length} 涓枃浠讹紝鍏遍�夋嫨浜� ${files.length + fileList.length} 涓枃浠禶);
+            },
+            beforeRemove(file, fileList) {
+                return this.$confirm(`纭畾绉婚櫎 ${ file.name }锛焋);
+            },
+            successEvent() {
+
+            },
+            handleSizeChange(val) {
+                console.log(`姣忛〉 ${val} 鏉);
+            },
+            handleCurrentChange(val) {
+                console.log(`褰撳墠椤�: ${val}`);
+            },
+            handleClick(tab, event) {
+                console.log(tab, event);
+            },
+            onSubmit() {
+
+            }
+        }
+    }
+</script>
+<style>
+    .v-modal {
+        z-index: 2000 !important;
+    }
+</style>
+<style lang="scss" scoped>
+    .form {
+        width: 100%;
+        display: flex;
+        align-items: center;
+        flex-direction: column;
+        .form_span {
+            width: 100%;
+            display: flex;
+            align-items: start;
+            flex-direction: column;
+            margin-bottom: 20px;
+            span {
+                font-size: 14px;
+                &:nth-child(1) {
+                    color: black;
+                    margin-bottom: 5px;
+                }
+                &:nth-child(2) {
+                    color: #8c939d;
+                }
+            }
+        }
+        .form_item {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            margin-bottom: 20px;
+            &:last-child {
+                margin: 0 !important;
+            }
+            .form_item_label {
+                flex-shrink: 0;
+                width: 170px;
+                color: black;
+                font-size: 14px;
+                span {
+                    color: red;
+                    font-size: 14px;
+                }
+            }
+            .form_item_val {
+                flex: 1;
+                /*height: 40px;*/
+                margin-left: 20px;
+                textarea {
+                    width: 100%;
+                    height: 70px;
+                    border: 1px solid #cbcbcb;
+                    padding: 10px;
+                    outline: none;
+                    box-sizing: border-box;
+                }
+                input {
+                    width: 100%;
+                    height: 40px;
+                    outline: none;
+                    border-radius: 5px;
+                    border: 1px solid #cbcbcb;
+                    padding: 0 20px;
+                    box-sizing: border-box;
+                }
+            }
+        }
+    }
+    .desc {
+        width: 100%;
+        .desc_item {
+            width: 100%;
+            display: flex;
+            flex-direction: column;
+            .desc_item_label {
+                width: 100%;
+                display: flex;
+                align-items: center;
+                justify-content: space-between;
+                margin-bottom: 10px;
+                span {
+                    font-size: 14px;
+                    color: black;
+                    margin-right: 30px;
+                }
+            }
+            .desc_item_from {
+                width: 100%;
+                margin-bottom: 10px;
+                .desc_item_from_page {
+                    width: 100%;
+                    display: flex;
+                    align-items: center;
+                    justify-content: end;
+                    margin-top: 10px;
+                }
+            }
+            .desc_item_cate {
+                width: 100%;
+                margin-bottom: 10px;
+            }
+            .desc_item_search {
+                width: 100%;
+                margin-bottom: 20px;
+            }
+            .desc_item_review {
+                width: 100%;
+                .desc_item_review_label {
+                    font-size: 20px;
+                    color: black;
+                    font-weight: bold;
+                    margin-bottom: 15px;
+                }
+            }
+        }
+    }
+</style>
diff --git a/company/src/components/business/dispatchReview.vue b/company/src/components/business/dispatchReview.vue
new file mode 100644
index 0000000..9d1ce17
--- /dev/null
+++ b/company/src/components/business/dispatchReview.vue
@@ -0,0 +1,163 @@
+<template>
+    <GlobalWindow
+        :title="title"
+        width="50%"
+        :visible.sync="visible"
+        :confirm-working="isWorking"
+    >
+        <div class="box">
+            <div class="box_label">淇濋櫓鏂规锛氬钩瀹変繚闄╅泧涓昏矗浠婚櫓B鐗�</div>
+            <el-table
+                :data="tableData"
+                border
+                style="width: 100%">
+                <el-table-column
+                    prop="date"
+                    label="鏃ユ湡">
+                </el-table-column>
+                <el-table-column
+                    prop="name"
+                    label="濮撳悕">
+                </el-table-column>
+                <el-table-column
+                    prop="address"
+                    label="鍦板潃">
+                </el-table-column>
+            </el-table>
+        </div>
+        <!--    椹冲洖閫�鍥炵敵璇�    -->
+        <el-dialog
+            title="瀹℃牳纭"
+            :visible.sync="visible5"
+            :show-close="false"
+            :close-on-click-modal="false"
+            width="30%"
+            center>
+            <div class="form">
+                <div class="form_item">
+                    <div class="form_item_label"><span>*</span>瀹℃牳璇存槑锛�</div>
+                    <div class="form_item_val">
+                        <el-input type="textarea" :rows="2" placeholder="璇疯緭鍏�"></el-input>
+                    </div>
+                </div>
+            </div>
+            <span slot="footer" class="dialog-footer">
+                <el-button @click="visible5 = false">鍙� 娑�</el-button>
+                <el-button type="primary" @click="visible5 = false">纭� 瀹�</el-button>
+            </span>
+        </el-dialog>
+        <template v-slot:footer>
+            <el-button type="primary" @click="visible5 = true">瀹℃牳閫氳繃</el-button>
+            <el-button @click="visible5 = true">瀹℃牳閫�鍥�</el-button>
+        </template>
+    </GlobalWindow>
+</template>
+
+<script>
+    import BaseOpera from '@/components/base/BaseOpera'
+    import GlobalWindow from '@/components/common/GlobalWindow'
+    export default {
+        name: 'dispatchReview',
+        extends: BaseOpera,
+        components: { GlobalWindow },
+        data () {
+            return {
+                // 琛ㄥ崟鏁版嵁
+                form: {
+                    id: null,
+                    editDate: ''
+                },
+                // 楠岃瘉瑙勫垯
+                rules: {
+                },
+                tableData: [],
+                visible5: false
+            }
+        },
+        created () {
+            this.config({
+                api: '/business/insuranceApply',
+                'field.id': 'id'
+            })
+        },
+        methods: {
+
+        }
+    }
+</script>
+
+<style lang="scss" scoped>
+    .box {
+        width: 100%;
+        .box_label {
+            width: 100%;
+            color: black;
+            font-size: 14px;
+            margin-bottom: 15px;
+        }
+    }
+    .form {
+        width: 100%;
+        display: flex;
+        align-items: center;
+        flex-direction: column;
+        .form_span {
+            width: 100%;
+            display: flex;
+            align-items: start;
+            flex-direction: column;
+            margin-bottom: 20px;
+            span {
+                font-size: 14px;
+                &:nth-child(1) {
+                    color: black;
+                    margin-bottom: 5px;
+                }
+                &:nth-child(2) {
+                    color: #8c939d;
+                }
+            }
+        }
+        .form_item {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            margin-bottom: 20px;
+            &:last-child {
+                margin: 0 !important;
+            }
+            .form_item_label {
+                flex-shrink: 0;
+                width: 170px;
+                color: black;
+                font-size: 14px;
+                span {
+                    color: red;
+                    font-size: 14px;
+                }
+            }
+            .form_item_val {
+                flex: 1;
+                /*height: 40px;*/
+                margin-left: 20px;
+                textarea {
+                    width: 100%;
+                    height: 70px;
+                    border: 1px solid #cbcbcb;
+                    padding: 10px;
+                    outline: none;
+                    box-sizing: border-box;
+                }
+                input {
+                    width: 100%;
+                    height: 40px;
+                    outline: none;
+                    border-radius: 5px;
+                    border: 1px solid #cbcbcb;
+                    padding: 0 20px;
+                    box-sizing: border-box;
+                }
+            }
+        }
+    }
+</style>
diff --git a/company/src/components/business/dispatchUnitReviewDetails.vue b/company/src/components/business/dispatchUnitReviewDetails.vue
new file mode 100644
index 0000000..e628141
--- /dev/null
+++ b/company/src/components/business/dispatchUnitReviewDetails.vue
@@ -0,0 +1,296 @@
+<template>
+    <GlobalWindow
+        :title="title"
+        width="80%"
+        :visible.sync="visible"
+        :confirm-working="isWorking"
+        @confirm="confirm"
+    >
+        <div class="info">
+            <div class="info_head">
+                <span>鎵�灞炰紒涓氾細鑺滄箹鏍煎姏绮惧瘑鍒堕�犳湁闄愬叕鍙�</span>
+                <el-button type="primary" @click="visible5 = true">瀹℃牳</el-button>
+                <el-button type="primary" @click="$refs.dispatchReview.open('瀹℃牳宸ョ')">瀹℃牳宸ョ</el-button>
+            </div>
+            <div class="info_list">
+                <div class="info_list_item">娲鹃仯鍗曚綅锛氳姕婀栨牸鍔涚簿瀵嗗埗閫犳湁闄愬叕鍙�</div>
+                <div class="info_list_item">娲鹃仯鍗曚綅淇$敤浠g爜锛�913401000900000001</div>
+                <div class="info_list_item">娲鹃仯鍗曚綅鐘舵�侊細寰呭鏍�</div>
+                <div class="info_list_item">娲鹃仯鍗曚綅璇﹁堪锛氭棤</div>
+            </div>
+            <div class="info_x"></div>
+            <div class="info_form">
+                <div class="info_form_label">淇濋櫓鏂规锛氬钩瀹変繚闄╅泧涓昏矗浠婚櫓B鐗�</div>
+                <el-table
+                    :data="tableData"
+                    border
+                    style="width: 100%">
+                    <el-table-column
+                        prop="date"
+                        label="鏃ユ湡">
+                    </el-table-column>
+                    <el-table-column
+                        prop="name"
+                        label="濮撳悕">
+                    </el-table-column>
+                    <el-table-column
+                        prop="address"
+                        label="鍦板潃">
+                    </el-table-column>
+                </el-table>
+            </div>
+            <div class="info_form">
+                <div class="info_form_label">淇濋櫓鏂规锛氬钩瀹変繚闄╅泧涓昏矗浠婚櫓B鐗�</div>
+                <el-table
+                    :data="tableData"
+                    border
+                    style="width: 100%">
+                    <el-table-column
+                        prop="date"
+                        label="鏃ユ湡">
+                    </el-table-column>
+                    <el-table-column
+                        prop="name"
+                        label="濮撳悕">
+                    </el-table-column>
+                    <el-table-column
+                        prop="address"
+                        label="鍦板潃">
+                    </el-table-column>
+                </el-table>
+            </div>
+            <div class="desc_label">
+                <div class="desc_label_left">
+                    <span class="desc_label_left_title">
+                        妗堜欢杩涘害
+                    </span>
+                </div>
+            </div>
+            <div class="desc_times">
+                <el-timeline :reverse="reverse">
+                    <el-timeline-item
+                        v-for="(activity, index) in activities"
+                        :key="index"
+                        :timestamp="activity.timestamp">
+                        {{activity.content}}
+                    </el-timeline-item>
+                </el-timeline>
+            </div>
+            <!--    椹冲洖閫�鍥炵敵璇�    -->
+            <el-dialog
+                title="瀹℃牳纭"
+                :visible.sync="visible5"
+                :show-close="false"
+                :close-on-click-modal="false"
+                width="30%"
+                center>
+                <div class="form">
+                    <div class="form_item">
+                        <div class="form_item_label"><span>*</span>瀹℃牳璇存槑锛�</div>
+                        <div class="form_item_val">
+                            <el-input type="textarea" :rows="2" placeholder="璇疯緭鍏�"></el-input>
+                        </div>
+                    </div>
+                </div>
+                <span slot="footer" class="dialog-footer">
+                <el-button @click="visible5 = false">鍙� 娑�</el-button>
+                <el-button type="primary" @click="visible5 = false">纭� 瀹�</el-button>
+            </span>
+            </el-dialog>
+            <!--      瀹℃牳      -->
+            <dispatchReview ref="dispatchReview" />
+        </div>
+    </GlobalWindow>
+</template>
+
+<script>
+    import BaseOpera from '@/components/base/BaseOpera'
+    import GlobalWindow from '@/components/common/GlobalWindow'
+    import dispatchReview from '@/components/business/dispatchReview'
+    export default {
+        name: 'dispatchUnitReviewDetails',
+        extends: BaseOpera,
+        components: { GlobalWindow, dispatchReview },
+        data () {
+            return {
+                // 琛ㄥ崟鏁版嵁
+                form: {
+                    id: null,
+                    editDate: ''
+                },
+                // 楠岃瘉瑙勫垯
+                rules: {
+                },
+                tableData: [],
+                visible5: false,
+                reverse: true,
+                activities: [{
+                    content: '娲诲姩鎸夋湡寮�濮�',
+                    timestamp: '2018-04-15'
+                }, {
+                    content: '閫氳繃瀹℃牳',
+                    timestamp: '2018-04-13'
+                }, {
+                    content: '鍒涘缓鎴愬姛',
+                    timestamp: '2018-04-11'
+                }],
+            }
+        },
+        created () {
+            this.config({
+                api: '/business/insuranceApply',
+                'field.id': 'id'
+            })
+        },
+        methods: {
+
+        }
+    }
+</script>
+
+<style>
+    .v-modal {
+        z-index: 2000 !important;
+    }
+</style>
+
+<style lang="scss" scoped>
+    .info {
+        width: 100%;
+        .form {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            flex-direction: column;
+            .form_span {
+                width: 100%;
+                display: flex;
+                align-items: start;
+                flex-direction: column;
+                margin-bottom: 20px;
+                span {
+                    font-size: 14px;
+                    &:nth-child(1) {
+                        color: black;
+                        margin-bottom: 5px;
+                    }
+                    &:nth-child(2) {
+                        color: #8c939d;
+                    }
+                }
+            }
+            .form_item {
+                width: 100%;
+                display: flex;
+                align-items: center;
+                margin-bottom: 20px;
+                &:last-child {
+                    margin: 0 !important;
+                }
+                .form_item_label {
+                    flex-shrink: 0;
+                    width: 170px;
+                    color: black;
+                    font-size: 14px;
+                    span {
+                        color: red;
+                        font-size: 14px;
+                    }
+                }
+                .form_item_val {
+                    flex: 1;
+                    /*height: 40px;*/
+                    margin-left: 20px;
+                    textarea {
+                        width: 100%;
+                        height: 70px;
+                        border: 1px solid #cbcbcb;
+                        padding: 10px;
+                        outline: none;
+                        box-sizing: border-box;
+                    }
+                    input {
+                        width: 100%;
+                        height: 40px;
+                        outline: none;
+                        border-radius: 5px;
+                        border: 1px solid #cbcbcb;
+                        padding: 0 20px;
+                        box-sizing: border-box;
+                    }
+                }
+            }
+        }
+        .info_head {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            justify-content: space-between;
+            span {
+                color: black;
+                font-size: 14px;
+            }
+        }
+        .info_list {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            flex-wrap: wrap;
+            margin-top: 15px;
+            .info_list_item {
+                width: 33.3%;
+                color: black;
+                font-size: 14px;
+                margin-bottom: 15px;
+            }
+        }
+        .info_x {
+            width: 100%;
+            height: 1px;
+            background: #eeeeee;
+            margin-bottom: 15px;
+        }
+        .info_form {
+            width: 100%;
+            margin-bottom: 15px;
+            .info_form_label {
+                color: black;
+                font-size: 14px;
+                margin-bottom: 15px;
+            }
+        }
+        .desc_label {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            justify-content: space-between;
+            .desc_label_left {
+                flex: 1;
+                display: flex;
+                align-items: center;
+                .desc_label_left_title {
+                    font-size: 20px;
+                    font-weight: bold;
+                    color: black;
+                }
+                .desc_label_left_time {
+                    font-size: 14px;
+                    color: rgba(249, 86, 1, 0.996);
+                    margin-left: 10px;
+                }
+                .desc_label_left_code {
+                    font-size: 15px;
+                    color: black;
+                    margin-left: 30px;
+                }
+            }
+            .desc_label_right {
+                flex-shrink: 0;
+            }
+        }
+        .desc_times {
+            width: 100%;
+            margin-top: 20px;
+        }
+    }
+</style>
diff --git a/company/src/components/business/policyListDetails.vue b/company/src/components/business/policyListDetails.vue
new file mode 100644
index 0000000..a4a5ed8
--- /dev/null
+++ b/company/src/components/business/policyListDetails.vue
@@ -0,0 +1,242 @@
+<template>
+    <GlobalWindow
+        :title="title"
+        width="50%"
+        :visible.sync="visible"
+        :confirm-working="isWorking"
+        @confirm="confirm"
+    >
+        <div class="box">
+            <div class="box_header">
+                <div class="box_header_item">
+                    <div class="box_header_item_label">鎶曚繚浼佷笟</div>
+                    <div class="box_header_item_val">瀹夊窘鏍煎姏鏈烘鍒堕�犲巶</div>
+                </div>
+                <div class="box_header_item">
+                    <div class="box_header_item_label">淇濋櫓鏂规</div>
+                    <div class="box_header_item_val">骞冲畨淇濋櫓闆囦富璐d换闄〢鐗�</div>
+                </div>
+                <div class="box_header_item">
+                    <div class="box_header_item_label">淇濋櫓鐢熸晥璧锋湡</div>
+                    <div class="box_header_item_val">2023-09-11 00:00:00</div>
+                </div>
+                <div class="box_header_item">
+                    <div class="box_header_item_label">淇濋櫓鐢熸晥姝㈡湡</div>
+                    <div class="box_header_item_val">2023-10-11 23:59:59</div>
+                </div>
+                <div class="box_header_item">
+                    <div class="box_header_item_label">鎶曚繚浜烘暟</div>
+                    <div class="box_header_item_val">50</div>
+                </div>
+                <div class="box_header_item">
+                    <div class="box_header_item_label">鎬昏垂鐢�</div>
+                    <div class="box_header_item_val">15000</div>
+                </div>
+            </div>
+            <div class="box_table">
+                <div class="box_table_head">
+                    <div class="box_table_head_item">搴忓彿</div>
+                    <div class="box_table_head_item">鍛樺伐濮撳悕</div>
+                    <div class="box_table_head_item">韬唤璇佸彿</div>
+                    <div class="box_table_head_item">娲鹃仯鍗曚綅</div>
+                    <div class="box_table_head_item">鎵�灞炲伐绉�</div>
+                </div>
+                <div class="box_table_content" v-for="(item, index) in 6" :key="index">
+                    <div class="box_table_content_item">{{index + 1}}</div>
+                    <div class="box_table_content_item">鐜嬫煇鏌�</div>
+                    <div class="box_table_content_item">340411190001010011</div>
+                    <div class="box_table_content_item">瀹夊窘鏍煎姏鏈烘鍒堕�犲巶</div>
+                    <div class="box_table_content_item">4绫� 鏈烘鍔犲伐/鍒堕��</div>
+                </div>
+            </div>
+            <div class="box_footer">
+                <div class="box_footer_label">澶囨敞</div>
+                <div class="box_footer_val">
+                    <el-input placeholder="璇疯緭鍏�"></el-input>
+                </div>
+            </div>
+        </div>
+        <template v-slot:footer>
+            <el-button type="primary">浼佷笟璇佷欢</el-button>
+            <el-button type="primary">瀵煎嚭璇﹀崟</el-button>
+            <el-button @click="visible = false">鍙栨秷</el-button>
+        </template>
+    </GlobalWindow>
+</template>
+
+<script>
+    import BaseOpera from '@/components/base/BaseOpera'
+    import GlobalWindow from '@/components/common/GlobalWindow'
+    export default {
+        name: 'policyListDetails',
+        extends: BaseOpera,
+        components: { GlobalWindow },
+        data () {
+            return {
+                // 琛ㄥ崟鏁版嵁
+                form: {
+                    id: null,
+                    editDate: ''
+                },
+                // 楠岃瘉瑙勫垯
+                rules: {
+                },
+                formInline: {
+                    user: '',
+                    region: ''
+                },
+                reverse: true,
+                activities: [{
+                    content: '娲诲姩鎸夋湡寮�濮�',
+                    timestamp: '2018-04-15'
+                }, {
+                    content: '閫氳繃瀹℃牳',
+                    timestamp: '2018-04-13'
+                }, {
+                    content: '鍒涘缓鎴愬姛',
+                    timestamp: '2018-04-11'
+                }],
+                tableData: [],
+                activeName: 'first',
+                currentPage: 1
+            }
+        },
+        created () {
+            this.config({
+                api: '/business/insuranceApply',
+                'field.id': 'id'
+            })
+        },
+        methods: {
+            handleSizeChange(val) {
+                console.log(`姣忛〉 ${val} 鏉);
+            },
+            handleCurrentChange(val) {
+                console.log(`褰撳墠椤�: ${val}`);
+            },
+            handleClick(tab, event) {
+                console.log(tab, event);
+            },
+            onSubmit() {
+
+            }
+        }
+    }
+</script>
+
+<style lang="scss" scoped>
+    .box {
+        width: 100%;
+        .box_header {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            flex-wrap: wrap;
+            border-top: 1px solid #b4bbc5;
+            border-left: 1px solid #b4bbc5;
+            .box_header_item {
+                width: 50%;
+                height: 50px;
+                display: flex;
+                align-items: center;
+                border-right: 1px solid #b4bbc5;
+                border-bottom: 1px solid #b4bbc5;
+                box-sizing: border-box;
+                .box_header_item_label {
+                    flex: 1;
+                    height: 100%;
+                    display: flex;
+                    align-items: center;
+                    justify-content: center;
+                    font-size: 14px;
+                    color: black;
+                    background: #f2f2f2;
+                    border-right: 1px solid #b4bbc5;
+                }
+                .box_header_item_val {
+                    flex: 1;
+                    height: 100%;
+                    display: flex;
+                    align-items: center;
+                    justify-content: center;
+                    font-size: 14px;
+                    color: black;
+                }
+            }
+        }
+        .box_table {
+            width: 100%;
+            border-left: 1px solid #b4bbc5;
+            box-sizing: border-box;
+            .box_table_head {
+                width: 100%;
+                display: flex;
+                align-items: center;
+                .box_table_head_item {
+                    flex: 1;
+                    height: 50px;
+                    background: #f2f2f2;
+                    display: flex;
+                    align-items: center;
+                    justify-content: center;
+                    font-size: 14px;
+                    color: black;
+                    border-right: 1px solid #b4bbc5;
+                    border-bottom: 1px solid #b4bbc5;
+                    box-sizing: border-box;
+                    &:nth-child(1) {
+                        flex: 0.5;
+                    }
+                }
+            }
+            .box_table_content {
+                width: 100%;
+                display: flex;
+                align-items: center;
+                .box_table_content_item {
+                    flex: 1;
+                    height: 50px;
+                    background: #ffffff;
+                    display: flex;
+                    align-items: center;
+                    justify-content: center;
+                    font-size: 14px;
+                    color: black;
+                    border-right: 1px solid #b4bbc5;
+                    border-bottom: 1px solid #b4bbc5;
+                    box-sizing: border-box;
+                    &:nth-child(1) {
+                        flex: 0.5;
+                    }
+                }
+            }
+        }
+        .box_footer {
+            width: 100%;
+            height: 50px;
+            border-left: 1px solid #b4bbc5;
+            border-bottom: 1px solid #b4bbc5;
+            border-right: 1px solid #b4bbc5;
+            display: flex;
+            align-items: center;
+            .box_footer_label {
+                width: 200px;
+                height: 100%;
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                font-size: 14px;
+                color: black;
+                background: #f2f2f2;
+            }
+            .box_footer_val /deep/ {
+                width: calc(100% - 200px);
+                height: 100%;
+                input {
+                    width: 100%;
+                    height: 50px;
+                }
+            }
+        }
+    }
+</style>
diff --git a/company/src/components/common/Menu.vue b/company/src/components/common/Menu.vue
index ebf7d33..98280b5 100644
--- a/company/src/components/common/Menu.vue
+++ b/company/src/components/common/Menu.vue
@@ -5,13 +5,14 @@
       <h1 :class="{ hidden: menuData.collapse }">浜戞槗淇�</h1>
     </div>
     <scrollbar>
+<!--      :default-openeds="defaultOpeneds"-->
       <el-menu
         ref="menu"
+        :unique-opened="true"
         :default-active="activeIndex"
         text-color="#fff"
         active-text-color="#fff"
         :collapse="menuData.collapse"
-        :default-openeds="defaultOpeneds"
         :collapse-transition="false"
         @select="handleSelect"
       >
diff --git a/company/src/views/business/dispatchUnitReview.vue b/company/src/views/business/dispatchUnitReview.vue
new file mode 100644
index 0000000..081779a
--- /dev/null
+++ b/company/src/views/business/dispatchUnitReview.vue
@@ -0,0 +1,104 @@
+<template>
+    <TableLayout :permissions="['business:dispatchunit:query']">
+        <!-- 鎼滅储琛ㄥ崟 -->
+        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+            <el-form-item label="鎵�灞炰紒涓�" prop="companyId">
+                <el-select v-model="searchForm.companyId" placeholder="璇烽�夋嫨" @change="search">
+                    <el-option
+                        v-for="item in options"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="娲鹃仯鍗曚綅" prop="name">
+                <el-select v-model="searchForm.name" placeholder="璇烽�夋嫨" @change="search">
+                    <el-option
+                        v-for="item in options"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <section>
+                <el-button type="primary" @click="search">鎼滅储</el-button>
+                <el-button @click="reset">閲嶇疆</el-button>
+                <el-button @click="$refs.dispatchUnitReviewDetails.open('娲鹃仯鍗曚綅璇︽儏')">璇︽儏</el-button>
+            </section>
+        </el-form>
+        <!-- 琛ㄦ牸鍜屽垎椤� -->
+        <template v-slot:table-wrap>
+            <el-table
+                v-loading="isWorking.search"
+                :data="tableData.list"
+                stripe
+            >
+                <el-table-column label="搴忓彿" width="80px">
+                    <template slot-scope="scope">
+                        <span>{{scope.$index + 1}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="companyId" label="鎵�灞炰紒涓�" min-width="100px"></el-table-column>
+                <el-table-column prop="name" label="娲鹃仯鍗曚綅" min-width="100px"></el-table-column>
+                <el-table-column label="娲鹃仯鍗曚綅鐘舵��" min-width="100px">
+                    <template slot-scope="{row}">
+                        <span v-if="row.unitStatus === 0">寰呭鏍�</span>
+                        <span v-if="row.unitStatus === 1">瀹℃牳閫氳繃</span>
+                        <span v-if="row.unitStatus === 2">瀹℃牳涓嶉�氳繃</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="createDate" label="鎻愪氦鏃ユ湡" min-width="100px"></el-table-column>
+                <el-table-column
+                    v-if="containPermissions(['business:dispatchunit:update', 'business:dispatchunit:delete'])"
+                    label="鎿嶄綔"
+                    min-width="120"
+                    fixed="right"
+                >
+                    <template slot-scope="{row}">
+                        <el-button type="text" @click="$refs.operaDispatchUnitWindow.open('缂栬緫娲鹃仯鍗曚綅淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:dispatchunit:update']">鏌ョ湅璇︽儏</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <pagination
+                @size-change="handleSizeChange"
+                @current-change="handlePageChange"
+                :pagination="tableData.pagination"
+            >
+            </pagination>
+        </template>
+        <!-- 鏂板缓/淇敼 -->
+        <dispatchUnitReviewDetails ref="dispatchUnitReviewDetails" @success="handlePageChange"/>
+    </TableLayout>
+</template>
+
+<script>
+    import BaseTable from '@/components/base/BaseTable'
+    import TableLayout from '@/layouts/TableLayout'
+    import Pagination from '@/components/common/Pagination'
+    import dispatchUnitReviewDetails from '@/components/business/dispatchUnitReviewDetails'
+    export default {
+        name: 'dispatchUnitReview',
+        extends: BaseTable,
+        components: { TableLayout, Pagination, dispatchUnitReviewDetails },
+        data () {
+            return {
+                // 鎼滅储
+                searchForm: {
+                    name: '',
+                    companyId: ''
+                }
+            }
+        },
+        created () {
+            this.config({
+                module: '娲鹃仯鍗曚綅淇℃伅琛�',
+                api: '/business/dispatchUnit',
+                'field.id': 'id',
+                'field.main': 'id'
+            })
+            this.search()
+        }
+    }
+</script>
diff --git a/company/src/views/business/policyList.vue b/company/src/views/business/policyList.vue
new file mode 100644
index 0000000..625b55f
--- /dev/null
+++ b/company/src/views/business/policyList.vue
@@ -0,0 +1,122 @@
+<template>
+    <TableLayout :permissions="['business:insuranceapply:query']">
+        <!-- 鎼滅储琛ㄥ崟 -->
+        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+            <el-form-item label="淇濆崟鍙�" prop="status">
+                <el-input v-model="searchForm.status" placeholder="璇疯緭鍏�"></el-input>
+            </el-form-item>
+            <el-form-item label="淇濋櫓鏂规" prop="solutionId">
+                <el-select v-model="searchForm.solutionId" placeholder="璇烽�夋嫨" @change="search">
+                    <el-option
+                        v-for="item in options"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="鐘舵��" prop="status">
+                <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨" @keypress.enter.native="search">
+                    <el-option label="淇濋殰涓�" value="5"></el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="鎶曚繚浼佷笟" prop="companyId">
+                <el-select v-model="searchForm.companyId" placeholder="璇烽�夋嫨" @change="search">
+                    <el-option
+                        v-for="item in options"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <section>
+                <el-button type="primary" @click="search">鎼滅储</el-button>
+                <el-button @click="reset">閲嶇疆</el-button>
+                <el-button @click="$refs.OperaPolicyListWindow.open('鎶曚繚璇︽儏')">鎶曚繚璇︽儏</el-button>
+            </section>
+        </el-form>
+        <!-- 琛ㄦ牸鍜屽垎椤� -->
+        <template v-slot:table-wrap>
+            <el-table
+                v-loading="isWorking.search"
+                :data="tableData.list"
+                stripe
+            >
+                <el-table-column label="搴忓彿" width="80px">
+                    <template slot-scope="scope">
+                        <span>{{scope.$index + 1}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="status" label="鎶曚繚鐘舵��" min-width="100px">
+                    <template slot-scope="{row}">
+                        <span v-if="row.status === 0">寰呭鏍�</span>
+                        <span v-if="row.status === 3">寰呭嚭鍗�</span>
+                        <span v-if="row.status === 5">淇濋殰涓�</span>
+                        <span v-if="row.status === 8">宸茶繃鏈�</span>
+                        <span v-if="row.status === 7">宸查��鍥�</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="companyId" label="鎶曚繚浼佷笟" min-width="100px"></el-table-column>
+                <el-table-column prop="solutionId" label="淇濋櫓鏂规" min-width="100px"></el-table-column>
+                <el-table-column prop="solutionId" label="淇濆崟鍙�" min-width="100px"></el-table-column>
+                <el-table-column prop="createDate" label="鎶曚繚浜烘暟" min-width="100px"></el-table-column>
+                <el-table-column prop="createDate" label="鍦ㄤ繚鏃堕暱锛堝ぉ锛�" min-width="100px"></el-table-column>
+                <el-table-column prop="createDate" label="浜х敓璐圭敤锛堝厓锛�" min-width="100px"></el-table-column>
+                <el-table-column prop="createDate" label="鎬昏垂鐢紙鍏冿級" min-width="100px"></el-table-column>
+                <el-table-column prop="createDate" label="淇濋櫓鐢熸晥璧锋湡" min-width="100px"></el-table-column>
+                <el-table-column prop="createDate" label="淇濋櫓鐢熸晥姝㈡湡" min-width="100px"></el-table-column>
+                <el-table-column
+                    v-if="containPermissions(['business:insuranceapply:update', 'business:insuranceapply:delete'])"
+                    label="鎿嶄綔"
+                    min-width="120"
+                    fixed="right"
+                >
+                    <template slot-scope="{row}">
+                        <el-button type="text" @click="$refs.operaInsuranceApplyWindow.open('缂栬緫鎶曚繚鐢宠淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:insuranceapply:update']">鏌ョ湅璇︽儏</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <pagination
+                @size-change="handleSizeChange"
+                @current-change="handlePageChange"
+                :pagination="tableData.pagination"
+            >
+            </pagination>
+        </template>
+        <!-- 鏂板缓/淇敼 -->
+        <OperaPolicyListWindow ref="OperaPolicyListWindow" @success="handlePageChange"/>
+    </TableLayout>
+</template>
+
+<script>
+    import BaseTable from '@/components/base/BaseTable'
+    import TableLayout from '@/layouts/TableLayout'
+    import Pagination from '@/components/common/Pagination'
+    import OperaPolicyListWindow from '@/components/business/OperaPolicyListWindow'
+    export default {
+        name: 'policyList',
+        extends: BaseTable,
+        components: { TableLayout, Pagination, OperaPolicyListWindow },
+        data () {
+            return {
+                // 鎼滅储
+                searchForm: {
+                    createDate: '',
+                    solutionId: '',
+                    companyId: '',
+                    status: ''
+                }
+            }
+        },
+        created () {
+            this.config({
+                module: '鎶曚繚鐢宠淇℃伅琛�',
+                api: '/business/insuranceApply',
+                'field.id': 'id',
+                'field.main': 'id'
+            })
+            this.search()
+        }
+    }
+</script>

--
Gitblit v1.9.3