Переглянути джерело

Merge branch 'master' of http://132.232.92.186:3000/XinXiBu/oa-system

yuanrf 1 день тому
батько
коміт
5c65b67989
1 змінених файлів з 530 додано та 3 видалено
  1. 530 3
      src/components/OP/GroupProgress.vue

+ 530 - 3
src/components/OP/GroupProgress.vue

@@ -1,11 +1,326 @@
 <template>
     <div class="group-progress">
-        团组进度总览
+        <el-collapse v-model="activeNames" @change="handleChange">
+            <el-collapse-item name="1">
+                <template #title>
+                    <span style="font-size: 18px; font-weight: bold;">商邀报批流程</span>
+                </template>
+                <div class="process-diagram">
+                    <div slot="reference" @mouseenter="item.content=='报批资料准备'?visible = true:''" @mouseleave="visible = false" :class="item.done?'process-diagram-lis':'process-diagram-li'" v-for="(item,index) in activities" :key="index">
+                        <el-popover
+                        v-if="item.content=='报批资料准备'"
+                        placement="top"
+                        title="PS"
+                        width="200"
+                        trigger="manual"
+                        content="其中包含:机构筛选、邮件对接、报批行程及请示、完成公务对接等"
+                        v-model="visible">
+                        </el-popover>
+                        <div style="font-weight: 600;font-size: 15px;">{{item.content}}</div>
+                        <div>{{item.people}}</div>
+                        <div>{{item.time}}</div>
+                    </div>
+                </div>
+            </el-collapse-item>
+            <el-collapse-item name="2">
+                <template #title>
+                    <span style="font-size: 18px; font-weight: bold;">签证流程</span>
+                </template>
+                <div class="progress-table">
+                    <el-table :border="true" :header-cell-style="headerCellStyle" :data="tableData" style="width: 100%">
+                        <el-table-column prop="a" label="国家" width="150">
+                            <template slot-scope="scope">
+                                <el-input style="width:100%;margin-top: 10px;" size="mini" v-model="scope.row.a"
+                                    placeholder="请输入归还人"></el-input>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="进度">
+                            <template slot-scope="scope">
+                                <div class="progress-table-content">
+                                    <el-checkbox v-model="scope.row.b">收集资料</el-checkbox>
+                                    <el-date-picker style="width:100%;margin-top: 10px;" size="mini"
+                                        v-model="scope.row.c" type="date" placeholder="选择日期">
+                                    </el-date-picker>
+                                </div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="进度">
+                            <template slot-scope="scope">
+                                <div class="progress-table-content">
+                                    <el-checkbox v-model="scope.row.b">取护照资料</el-checkbox>
+                                    <el-date-picker style="width:100%;margin-top: 10px;" size="mini"
+                                        v-model="scope.row.c" type="date" placeholder="选择日期">
+                                    </el-date-picker>
+                                </div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="进度">
+                            <template slot-scope="scope">
+                                <div class="progress-table-content">
+                                    <el-checkbox v-model="scope.row.b">填资料</el-checkbox>
+                                    <el-date-picker style="width:100%;margin-top: 10px;" size="mini"
+                                        v-model="scope.row.c" type="date" placeholder="选择日期">
+                                    </el-date-picker>
+                                </div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="进度">
+                            <template slot-scope="scope">
+                                <div class="progress-table-content">
+                                    <el-checkbox v-model="scope.row.b">送签</el-checkbox>
+                                    <el-date-picker style="width:100%;margin-top: 10px;" size="mini"
+                                        v-model="scope.row.c" type="date" placeholder="选择日期">
+                                    </el-date-picker>
+                                </div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="进度">
+                            <template slot-scope="scope">
+                                <div class="progress-table-content">
+                                    <el-checkbox v-model="scope.row.b">出签+取护照</el-checkbox>
+                                    <el-date-picker style="width:100%;margin-top: 10px;" size="mini"
+                                        v-model="scope.row.c" type="date" placeholder="选择日期">
+                                    </el-date-picker>
+                                </div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="进度">
+                            <template slot-scope="scope">
+                                <div class="progress-table-content">
+                                    <el-checkbox v-model="scope.row.b">归还护照</el-checkbox>
+                                    <el-date-picker style="width:100%;margin-top: 10px;" size="mini"
+                                        v-model="scope.row.c" type="date" placeholder="选择日期">
+                                    </el-date-picker>
+                                    <el-input style="width:100%;margin-top: 10px;" size="mini" v-model="scope.row.c"
+                                        placeholder="请输入归还人"></el-input>
+                                </div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="操作" width="100">
+                            <template>
+                                <el-button style="margin-top: 10px;" size="mini" type="danger">删除</el-button>
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                    <div style="margin-top: 10px; text-align: center;">
+                        <el-button size="mini" type="primary">添加一行</el-button>
+                    </div>
+                </div>
+            </el-collapse-item>
+            <el-collapse-item name="3">
+                <template #title>
+                    <span style="font-size: 18px; font-weight: bold;">机票流程</span>
+                </template>
+                <div class="process-diagram">
+                    <div :class="item.done?'process-diagram-twos':'process-diagram-two'" v-for="(item,index) in activitiesAir" :key="index">
+                        <div style="font-weight: 600;font-size: 15px;">{{item.content}}</div>
+                        <div>{{item.people}}</div>
+                        <div>{{item.time}}</div>
+                    </div>
+                </div>
+            </el-collapse-item>
+            <el-collapse-item name="4">
+                <template #title>
+                    <span style="font-size: 18px; font-weight: bold;">酒店流程</span>
+                </template>
+                <div class="process-diagram">
+                    <div :class="item.done?'process-diagram-twos':'process-diagram-two'" v-for="(item,index) in activitiesHotel" :key="index">
+                        <div style="font-weight: 600;font-size: 15px;">{{item.content}}</div>
+                        <div>{{item.people}}</div>
+                        <div>{{item.time}}</div>
+                    </div>
+                </div>
+            </el-collapse-item>
+            <el-collapse-item name="5">
+                <template #title>
+                    <span style="font-size: 18px; font-weight: bold;">地接流程</span>
+                </template>
+                <div class="process-diagram">
+                    <div :class="item.done?'process-diagram-sans':'process-diagram-san'" v-for="(item,index) in activitiesGuide" :key="index">
+                        <div style="font-weight: 600;font-size: 15px;">{{item.content}}</div>
+                        <div>{{item.people}}</div>
+                        <div>{{item.time}}</div>
+                    </div>
+                </div>
+            </el-collapse-item>
+            <el-collapse-item name="6">
+                <template #title>
+                    <span style="font-size: 18px; font-weight: bold;">费用结算</span>
+                </template>
+                <div class="process-diagram">
+                    <div :class="item.done?'process-diagram-twos':'process-diagram-two'" v-for="(item,index) in activitiesCost" :key="index">
+                        <div style="font-weight: 600;font-size: 15px;">{{item.content}}</div>
+                        <div>{{item.people}}</div>
+                        <div>{{item.time}}</div>
+                    </div>
+                </div>
+            </el-collapse-item>
+        </el-collapse>
     </div>
 </template>
 <script>
 export default {
-    
+    data () {
+        return {
+            activeNames: ['1','2','3','4','5','6'],
+            tableData: [
+                {
+                    a:'美国',
+                    b: '',
+                    c: '', 
+                    d: '',
+                    e: '',
+                    f: '',
+                    g: '',
+                    h:'',
+                    i:'',
+                    j:'',
+                    k:'',
+                    l:'',
+                    m:'',
+                },
+                {
+                    a:'日本',
+                    b: '',
+                    c: '', 
+                    d: '',
+                    e: '',
+                    f: '',
+                    g: '',
+                    h:'',
+                    i:'',
+                    j:'',
+                    k:'',
+                    l:'',
+                    m:'',
+                },
+                {
+                    a:'新加坡',
+                    b: '',
+                    c: '', 
+                    d: '',
+                    e: '',
+                    f: '',
+                    g: '',
+                    h:'',
+                    i:'',
+                    j:'',
+                    k:'',
+                    l:'',
+                    m:'',
+                }
+            ],
+            activities:[
+                {
+                    content: '报批资料准备',
+                    time: '2018-04-01 20:46',
+                    people: '五六七',
+                    done: true,
+                },
+                {
+                    content: '开始报批',
+                    people: '吉吉国王',
+                    done: true,
+                    time: '2018-04-03 20:46',
+                },
+                {
+                    content: '报批中',
+                    done: false,
+                    people: '',
+                    time: '',
+                },
+                {
+                    content: '批件已出',
+                    people: '',
+                    done: false,
+                    time: '',
+                },
+            ],
+            activitiesAir:[
+                {
+                    content: '机票占位中',
+                    time: '2018-04-01 20:46',
+                    people: '五六七',
+                    done: true,
+                },
+                {
+                    content: '机票已出',
+                    people: '',
+                    done: false,
+                    time: '',
+                }
+            ],
+            activitiesHotel:[
+                {
+                    content: '酒店占房中',
+                    time: '2018-04-01 20:46',
+                    people: '五六七',
+                    done: true,
+                },
+                {
+                    content: '酒店已定',
+                    people: '',
+                    done: false,
+                    time: '',
+                }
+            ],
+            activitiesGuide:[
+                {
+                    content: '地接对接中',
+                    time: '2018-04-01 20:46',
+                    people: '五六七',
+                    done: true,
+                },
+                {
+                    content: '地接已安排好',
+                    people: '吉吉国王',
+                    done: true,
+                    time: '2018-04-03 20:46',
+                },
+                {
+                    content: '出行物资准备完毕',
+                    people: '',
+                    done: false,
+                    time: '',
+                }
+            ],
+            activitiesCost:[
+                {
+                    content: '费用结算中',
+                    time: '2018-04-01 20:46',
+                    people: '五六七',
+                    done: true,
+                },
+                {
+                    content: '费用结算完毕',
+                    people: '',
+                    done: false,
+                    time: '',
+                }
+            ],
+            visible: false
+
+        }
+    },
+    methods: {
+      handleChange(val) {
+        console.log(val);
+      },
+      headerCellStyle({ row, column, rowIndex, columnIndex }) {
+        console.log(row, column, rowIndex, columnIndex);
+        row[0].colSpan=1;
+        row[6].colSpan=6; 
+        row[7].colSpan=1;
+        row[1].colSpan=0;
+        row[2].colSpan=0;
+        row[3].colSpan=0;
+        row[4].colSpan=0;
+        row[5].colSpan=0;
+        if (columnIndex<6&&columnIndex>0) {
+            return {display: 'none' }
+        }
+      }
+    }
 }
 </script>
 <style>
@@ -16,4 +331,216 @@ export default {
         border-radius: 10px;
         min-height: 830px;
     }
-</style> 
+    .progress-content{
+        display: flex;
+        justify-content: space-around;
+    }
+    .progress-content>div{
+        font-size: 17px;
+        font-weight: bold;
+    }
+    .progress-table-content{
+        text-align: left;
+    }
+    .progress-content div{
+        padding: 20px;
+        border: 1px solid #ccc;
+        border-radius: 5px;
+    }
+    .process-diagram{
+        color: #606266;
+        margin-top: 50px;
+        display: flex;
+        justify-content: space-around;
+    }
+    .process-diagram-li{
+        width: 10%;
+        text-align: center;
+        position: relative;
+        padding: 10px;
+        border-radius: 5px;
+        box-shadow: 0px 0px 10px #0005;
+    }
+    .process-diagram-li::after{
+        position: absolute;
+        content:'';
+        display: block;
+        width:10px;
+        height:10px;
+        background-color: #606266;
+        left: 46%;
+        top:-30px;
+        border-radius: 50%
+    }
+    .process-diagram-li:not(:last-child)::before{
+        position: absolute;
+        content:'';
+        display: block;
+        width:210%;
+        height:2px;
+        background-color: #606266;
+        left:55%;
+        top:-26px;
+        border-radius: 50%
+    }
+    .process-diagram-lis{
+        width: 10%;
+        text-align: center;
+        position: relative;
+        padding: 10px;
+        border-radius: 5px;
+        box-shadow: 0px 0px 10px #0005;
+    }
+    .process-diagram-lis::after{
+        position: absolute;
+        content:'';
+        display: block;
+        width:10px;
+        height:10px;
+        background-color: #67C23A;
+        left: 46%;
+        top:-30px;
+        border-radius: 50%
+    }
+    .process-diagram-lis:not(:last-child)::before{
+        position: absolute;
+        content:'';
+        display: block;
+        width:210%;
+        height:2px;
+        background-color: #67C23A;
+        left:55%;
+        top:-26px;
+        border-radius: 50%
+    }
+    .process-diagram>div{
+        cursor: pointer;
+    }
+    .process-diagram .el-popover{
+        left: 110%;
+        top: -7px;
+    }
+
+    /*liangge*/
+    .process-diagram-two{
+        width: 10%;
+        text-align: center;
+        position: relative;
+        padding: 10px;
+        border-radius: 5px;
+        box-shadow: 0px 0px 10px #0005;
+    }
+    .process-diagram-two::after{
+        position: absolute;
+        content:'';
+        display: block;
+        width:10px;
+        height:10px;
+        background-color: #606266;
+        left: 46%;
+        top:-30px;
+        border-radius: 50%
+    }
+    .process-diagram-two:not(:last-child)::before{
+        position: absolute;
+        content:'';
+        display: block;
+        width:431%;
+        height:2px;
+        background-color: #606266;
+        left:55%;
+        top:-26px;
+        border-radius: 50%
+    }
+    .process-diagram-twos{
+        width: 10%;
+        text-align: center;
+        position: relative;
+        padding: 10px;
+        border-radius: 5px;
+        box-shadow: 0px 0px 10px #0005;
+    }
+    .process-diagram-twos::after{
+        position: absolute;
+        content:'';
+        display: block;
+        width:10px;
+        height:10px;
+        background-color: #67C23A;
+        left: 46%;
+        top:-30px;
+        border-radius: 50%
+    }
+    .process-diagram-twos:not(:last-child)::before{
+        position: absolute;
+        content:'';
+        display: block;
+        width:431%;
+        height:2px;
+        background-color: #67C23A;
+        left:55%;
+        top:-26px;
+        border-radius: 50%
+    }
+    /*sange*/
+    .process-diagram-san{
+        width: 10%;
+        text-align: center;
+        position: relative;
+        padding: 10px;
+        border-radius: 5px;
+        box-shadow: 0px 0px 10px #0005;
+    }
+    .process-diagram-san::after{
+        position: absolute;
+        content:'';
+        display: block;
+        width:10px;
+        height:10px;
+        background-color: #606266;
+        left: 46%;
+        top:-30px;
+        border-radius: 50%
+    }
+    .process-diagram-san:not(:last-child)::before{
+        position: absolute;
+        content:'';
+        display: block;
+        width:283%;
+        height:2px;
+        background-color: #606266;
+        left:55%;
+        top:-26px;
+        border-radius: 50%
+    }
+    .process-diagram-sans{
+        width: 10%;
+        text-align: center;
+        position: relative;
+        padding: 10px;
+        border-radius: 5px;
+        box-shadow: 0px 0px 10px #0005;
+    }
+    .process-diagram-sans::after{
+        position: absolute;
+        content:'';
+        display: block;
+        width:10px;
+        height:10px;
+        background-color: #67C23A;
+        left: 46%;
+        top:-30px;
+        border-radius: 50%
+    }
+    .process-diagram-sans:not(:last-child)::before{
+        position: absolute;
+        content:'';
+        display: block;
+        width:283%;
+        height:2px;
+        background-color: #67C23A;
+        left:55%;
+        top:-26px;
+        border-radius: 50%
+    }
+</style>