浏览代码

Merge branch 'total' into dev

# Conflicts:
#	src/components/dialogs/list/batchDialog.vue
#	src/components/dialogs/list/firm.vue
#	src/components/ledger/handsontables/device.vue
shaun-sheep 5 年之前
父节点
当前提交
7b2592c74e

+ 1 - 1
config/index.js

@@ -150,4 +150,4 @@ module.exports = {
         // Set to `true` or `false` to always turn it on or off
         bundleAnalyzerReport: process.env.npm_config_report
     }
-}
+}

+ 25 - 0
src/api/relation/api.js

@@ -0,0 +1,25 @@
+import httpUtil from "../scan/httpUtil";
+
+export default {
+    //查询总览
+    graphic: function (param,success) {
+        let url = '/api/datacenter/graphic/page-query'
+        httpUtil.postJson(url, param, success)
+    },
+// 查询总览数量
+    graphicNumber: function (param, success) {
+        let url = '/api/datacenter/graphic/query-count'
+        httpUtil.postJson(url, param, success)
+
+    },
+// 下载报告
+    reportDownloads: function (param, success) {
+        let url = '/api/datacenter/graphic/report-downloads'
+        httpUtil.getJson(url, param, success)
+    },
+// 下载模板
+    templateDownloads: function (param, success) {
+        let url = '/api/datacenter/graphic/template-downloads'
+        httpUtil.getJson(url, param, success)
+    }
+}

+ 2 - 2
src/api/scan/httpUtil.js

@@ -1,4 +1,4 @@
-import { Message } from 'element-ui';
+import {Message} from 'element-ui';
 import fetch from './fetch'
 import storage from '@/framework/utils/storage'
 
@@ -51,4 +51,4 @@ export default {
             errorResponse(vm, error, err);
         });
     }
-}
+}

+ 2 - 2
src/api/scan/request.js

@@ -1,6 +1,7 @@
 import fetch from './fetch'
-import { api, physics, business, venders, baseUrl, zone } from './config.js'
+import {api, baseUrl, business, physics, venders, zone} from './config.js'
 import http from './httpUtil'
+
 let arithmetic = '/arithmetic'
 
 var Comming = 'revit'
@@ -155,7 +156,6 @@ export function delErrAssets(param, paramList) {
 export function getPT(param) {
     let data = {
         "Comming": Comming,
-        "BeginTime": param.BeginTime,
         "ProjId": param.ProjId,
         "UserId": param.UserId,
         "EndTime": param.EndTime,

文件差异内容过多而无法显示
+ 6 - 6
src/assets/style/iconfont/iconfont.css


二进制
src/assets/style/iconfont/iconfont.eot


二进制
src/assets/style/iconfont/iconfont.ttf


二进制
src/assets/style/iconfont/iconfont.woff


+ 24 - 6
src/components/ready/buildfloor/addBuild.vue

@@ -1,12 +1,30 @@
 <template>
-  <el-dialog :title="buildTitle" :visible.sync="buildDialogVis" width="20%" id="messageDialog">
+    <el-dialog
+        :title="buildTitle"
+        :visible.sync="buildDialogVis"
+        width="20%"
+        id="messageDialog"
+    >
     <div>
       <label>建筑名称 : </label>
-      <el-input placeholder="请输入建筑名称" v-model="buildName"></el-input>
+        <el-input
+            placeholder="请输入建筑名称"
+            v-model="buildName"
+        />
     </div>
-    <span slot="footer" class="dialog-footer">
-      <el-button size="small">取消</el-button>
-      <el-button size="small" type="primary" @click="save">确认</el-button>
+        <span
+            slot="footer"
+            class="dialog-footer"
+        >
+      <el-button
+          size="small"
+          @click="buildDialogVis = false"
+      >取消</el-button>
+      <el-button
+          size="small"
+          type="primary"
+          @click="save"
+      >确认</el-button>
     </span>
   </el-dialog>
 </template>
@@ -30,4 +48,4 @@ export default {
     save() { }
   }
 }
-</script>
+</script>

+ 208 - 0
src/components/ready/buildfloor/container.vue

@@ -0,0 +1,208 @@
+<template>
+    <div class="container">
+        <el-button
+            size="small"
+            type="default"
+            @click="addFloor"
+            style="margin: 10px 11px;"
+        >添加楼层
+        </el-button>
+
+        <div class="table">
+            <el-table
+                :data="tableData"
+                style="width: 100%"
+                height="100%"
+                v-loading="loading"
+                :header-cell-style="headerStyle"
+            >
+                <el-table-column label="楼层本地名">
+                    <template slot-scope="scope">{{scope.row.FloorLocalName||scope.row.FloorName}}</template>
+                </el-table-column>
+                <el-table-column label="楼层顺序号">
+                    <template slot-scope="scope">{{scope.row.FloorSequenceID}}</template>
+                </el-table-column>
+                <el-table-column label="楼层信息">
+                    <template slot-scope="scope">
+                        <el-button
+                            size="mini"
+                            @click="editFloorData(scope.row)"
+                            plain
+                            icon="el-icon-edit-outline"
+                        ></el-button>
+                    </template>
+                </el-table-column>
+                <el-table-column
+                    prop="Datasource"
+                    label="平面图"
+                >
+                    <template
+                        slot-scope="scope">
+                        <p
+                            v-if="scope.row.Sign > 0"
+                            class="cursor"
+                            @click="childCheckDrawImg(scope.row,2)"
+                        >
+                            <el-badge is-dot>
+                                <i class="iconfont icon-floorplan"/>
+                            </el-badge>
+                            平面图重复
+                        </p>
+                        <p
+                            class="cursor"
+                            v-else-if="scope.row.StructureInfo?scope.row.StructureInfo.FloorMap:false"
+                            @click="childCheckDrawImg(scope.row,1)"
+                        >
+                            <i class="iconfont icon-floorplan"/>
+                            查看平面图
+                        </p>
+                        <p
+                            class="cursor"
+                            v-else
+                            @click="childCheckDrawImg(scope.row,3)"
+                        >
+                            <i class="iconfont icon-nopicture"/>
+                            暂无平面图
+                        </p>
+                    </template>
+                </el-table-column>
+                <el-table-column
+                    prop="SubTypeName"
+                    label="楼层贯通关系"
+                >
+                    <template slot-scope="scope">
+                        <span style="margin-right:20px">{{scope.row.FloorThroughList?scope.row.FloorThroughList.length:0}}</span>
+                        <el-button
+                            size="mini"
+                            @click="changeConnection(scope.row)"
+                            plain
+                            icon="el-icon-edit-outline"
+                        />
+                    </template>
+                </el-table-column>
+                <el-table-column
+                    prop="action"
+                    label="操作">
+                    <template slot-scope="scope">
+                        <el-button
+                            size="mini"
+                            @click="handleDelete(scope.row)"
+                            type="danger"
+                            plain
+                            icon="el-icon-delete"
+                        />
+                    </template>
+                </el-table-column>
+            </el-table>
+        </div>
+        <!-- 添加-修改楼层 -->
+        <addFloor
+            :title="floorTitle"
+            ref="addFloorDialog"
+            :curBuildId="curBuildId"
+            :curFloorId="curFloorId"
+        />
+        <!-- 添加贯通关系弹窗 -->
+        <addConnectivity
+            ref="addConnectivity"
+        />
+        <!-- 删除建筑-删除楼层 -->
+        <el-dialog
+            title="提示"
+            :visible.sync="delDialogVis"
+            width="20%"
+            @close="handleClose"
+            id="messageDialog"
+        >
+            <div>确定要删除该{{delText}}?</div>
+            <span
+                slot="footer"
+                class="dialog-footer"
+            >
+        <el-button
+            size="small"
+            @click="delDialogVis=false"
+        >取消</el-button>
+        <el-button
+            size="small"
+            type="primary"
+            @click="confirmDelete"
+        >确认</el-button>
+      </span>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+    import addFloor from "@/views/ready/buildfloor/addFloor/index";
+    import addConnectivity from "./addConnectivity";
+
+    export default {
+        name: "container",
+        props: ['tableData', 'curBuildId'],
+        data() {
+            return {
+                floorTitle: "添加楼层",
+                curFloorId: "", //当前选中的楼层id
+                headerStyle: {
+                    backgroundColor: "#d9d9d9",
+                    color: "#2b2b2b",
+                    lineHeight: "30px"
+                },
+                loading: false, //列表loading
+                delText: "楼层",
+                delDialogVis: false,
+            }
+        },
+        components: {addFloor, addConnectivity},
+
+        methods: {
+            addFloor() {
+                this.curFloorId = "";
+                this.$refs.addFloorDialog.showDialog();
+            },
+            // 修改楼层贯通关系
+            changeConnection(row) {
+                this.$refs.addConnectivity.showDialog();
+                this.$refs.addConnectivity.floor = row;
+            },
+            // 修改楼层信息
+            editFloorData(floor) {
+                this.floorTitle = "编辑楼层信息";
+                this.curFloorId = floor.FloorID;
+                this.$refs.addFloorDialog.showDialog(floor);
+            },
+            //delete floor
+            handleDelete(floor) {
+                this.delText = "楼层";
+                this.delDialogVis = true;
+                this.curFloorId = floor.FloorID;
+            },
+            // 确认删除(删除建筑-楼层公用)
+            confirmDelete() {
+                this.delDialogVis = false;
+                this.$listeners.confirmDel()
+            },
+            //确认删除弹窗关闭
+            handleClose() {
+            },
+            // 查看平面图
+            childCheckDrawImg(row, index) {
+                this.$listeners.checkDrawImg(row, index)
+            }
+        }
+    }
+</script>
+
+<style scoped lang="less">
+    .container {
+        height: 100%;
+
+        .table {
+            height: 100%;
+        }
+        .cursor{
+            cursor: pointer;
+        }
+    }
+</style>

+ 119 - 0
src/components/ready/buildfloor/sidebar.vue

@@ -0,0 +1,119 @@
+<template>
+    <div class="sidebar">
+        <div style="padding: 10px">
+            <el-button
+                size="small"
+                type="default"
+                icon="el-icon-plus"
+
+            />
+            <el-button
+                size="small"
+                type="default"
+                icon="el-icon-minus"
+
+            />
+            <el-button
+                size="small"
+                type="default"
+                icon="el-icon-edit-outline"
+
+            />
+        </div>
+            <h4>建筑</h4>
+
+        <div class="build-list">
+            <div
+                v-if="content.length"
+                v-for="(item,index) in content"
+                :key="item.BuildID"
+                :class="{'floor-item':true,active:currentIndex  === index}"
+                @click="changeBuild(index)"
+
+            >
+            <span>
+            {{item.BuildLocalName || item.BuildName}}
+            <el-badge
+                v-if="item.Count > 0"
+                class="mark"
+                :value="item.Count"
+            />
+            </span>
+            </div>
+        </div>
+        <addBuild
+            :title="buildTitle"
+            ref="addBuildDialog"
+        />
+    </div>
+
+</template>
+
+<script>
+    import addBuild from "./addBuild";
+
+    export default {
+        name: "sidebar",
+        props: ['content'],
+        data() {
+            return {
+                currentIndex: 0,
+                buildTitle: "添加建筑",
+
+            }
+        },
+        components: {addBuild},
+        created() {
+            console.log(this.content)
+        },
+        methods: {
+            changeBuild(index) {
+                this.currentIndex = index
+                this.$emit('currentBuild', index)
+            }
+        }
+    }
+</script>
+
+<style scoped lang="less">
+    .sidebar {
+        h4 {
+            padding-left: 10px;
+            border-top: 1px solid #d9d9d9;
+            border-bottom: 1px solid #d9d9d9;
+            background: #d9d9d9;
+            color: #2b2b2b;
+            line-height: 44px;
+        }
+        .floor-item {
+            white-space: nowrap;
+            overflow: hidden;
+            text-overflow: ellipsis;
+
+            span {
+                margin-left: 10px;
+            }
+        }
+
+        .build-list {
+            line-height: 48px;
+
+            .floor-item {
+                white-space: nowrap;
+                overflow: hidden;
+                text-overflow: ellipsis;
+
+                span {
+                    margin-left: 10px;
+                }
+            }
+
+            .floor-item.active,
+            .floor-item:hover {
+                background-color: #f5f7fa;
+                color: #000;
+            }
+        }
+
+    }
+</style>

+ 338 - 0
src/components/relation/overview/CardList.vue

@@ -0,0 +1,338 @@
+<template>
+    <div>
+        <div
+            :key="index"
+            v-for="(item,index) in content"
+        >
+            <p class="slave-relation-title">{{item.GraphTypeName}}</p>
+            <section
+                :key="child.GraphTypeId"
+                class="container"
+                v-for="(child,childIndex) in item.ChildGraphicTypeList"
+            >
+                <p class="relation-text">
+                    {{child.GraphTypeName}}
+                    <span class="pic-code">图编码{{child.GraphTypeCode}}</span>
+                    <el-tooltip
+                        :content="child.Note"
+                        placement="top">
+                        <i
+                            @click="explain"
+                            class="icon-shuoming iconfont"
+                        />
+                    </el-tooltip>
+                </p>
+
+                <el-row :gutter="24">
+                    <el-col
+                        :key="relation.Id"
+                        :span="8"
+                        v-for="(relation,relIndex) in child.RelationTypeProjectList"
+                    >
+                        <el-card
+                            class="card"
+                            shadow="hover"
+                            style="position: relative;"
+                        >
+                            <!-- border:none-->
+                            <!--<div class="mask"></div>-->
+                            <p class="relation-title">
+                                {{relation.RelationTypeName}}
+                                <span class="asc">{{relation.RelationTypeCode}}</span>
+                                <el-tooltip
+                                    :content="relation.Note"
+                                    placement="top"
+                                    style="z-index: 3;position:relative;"
+                                >
+                                    <i class="iconfont icon-warn icon"/>
+                                </el-tooltip>
+                            </p>
+                            <article>
+                                <el-col
+                                    :span="13"
+                                    class="main-object "
+                                >
+                                    <p class="object">主要连接对象</p>
+                                    <p class="group">{{relation.ConneObject}}</p>
+                                </el-col>
+                                <el-col
+                                    :span="1"
+                                    class="main-object ">&nbsp;
+                                </el-col>
+                                <el-col
+                                    :span="10"
+                                    class="main-object"
+                                >
+                                    <p class="line-number">连接数量</p>
+                                    <p class="line-number">{{relation.count}}</p>
+                                </el-col>
+                            </article>
+                            <p class="last-computed">
+                                <span v-show="relation.ComputingTime">最后一次计算时间 {{relation.ComputingTime}}</span>
+                                <el-tooltip
+                                    content="启动计算"
+                                    placement="top"
+                                >
+                                    <el-badge
+                                        class="item float-right"
+                                        is-dot
+                                    >
+                                        <el-button
+                                            @click="computed"
+                                            circle
+                                            type="primary"
+                                            plain
+                                            icon="iconfont icon-changyongtubiao-mianxing-"
+
+                                        >
+                                            <!--style="background: #000;color: #fff"-->
+                                        </el-button>
+                                    </el-badge>
+                                </el-tooltip>
+                                <el-tooltip
+                                    content="手动编辑"
+                                    placement="top"
+                                >
+                                    <el-button
+                                        :disabled="relation.Manual === 1"
+                                        :style="{'border':(relation.Manual=== 1? '1px solid #DCDFE6' :'')}"
+                                        @click="manual(relation)"
+                                        circle
+                                        class="float-right"
+                                        type="primary"
+                                        plain
+                                        icon="iconfont icon-bianji"
+                                    >
+                                    </el-button>
+
+                                </el-tooltip>
+                                <el-tooltip
+                                    content="设定设备对象源/末端"
+                                    placement="top"
+                                    v-if="relation.IsSource"
+                                >
+                                    <el-button
+                                        @click="equipment"
+                                        type="primary"
+                                        plain
+                                        circle
+                                        class="float-right"
+                                        icon="iconfont icon-23 "
+                                        style="transform: rotate(90deg);"
+                                    >
+                                    </el-button>
+                                </el-tooltip>
+                            </p>
+                        </el-card>
+                    </el-col>
+                </el-row>
+            </section>
+        </div>
+        <RelationMaintain
+            :values="values"
+            ref="maintain"
+            @template="templateDown"
+        />
+    </div>
+
+</template>
+
+<script>
+    import RelationMaintain from './Modal/RelationMaintain'
+
+    export default {
+        name: "cardList",
+        props: {
+            content: Array
+        },
+        data() {
+            return {
+                values: {
+                    title: '关系维护',
+                    cancel: '取消',
+                    confirm: '确定',
+                    back: '返回',
+                    promptly: '立即计算',
+                    placeholder: '请选择',
+                    download: '下载模板(含数据)',
+                    done: '完成',
+                    underDesign: '高级配置页面正在设计中。。。',
+                    autoComputed: '根据现有数据自动计算xxx',
+                    existComputed: '根据现有数据自动计算xxx',
+                    existTitle: '计算方向使用的源端和末端如下:',
+                    originEquipment: '源端设备类:',
+                    endEquipment: '末端设备类:',
+                    device: '', //提示引导内容
+                    tips: '', //请前往以下功能页面维护
+                    optionTips: '', //请下载最新最新 xxxx 数据进行手动维护
+                    currentNum: '当前关系数量:',
+                    lastTime: '', //最后更新时间为
+                    uploadTxt: '将Excel文件拖到此处,或<em>单击上传Excel文件<em>',
+                    uploadTips: '上传的Excel数据将完全覆盖当前关系表(关系表先前数据不会保留)',
+                    inHand: '数据文件处理中...',
+                    dataFailed: '数据文件验证失败',
+                    allUpdateSuccess: 'xxxx全部更新成功',
+                    portionUpdateSuccess: ' xxxx关系部分更新成功',
+                    downloadFile: ' 下载报告文件'
+                }
+            }
+        },
+        computed: {},
+        methods: {
+            explain() {
+                // alert('explain click')
+            },
+            computed() {
+                // this.$refs.maintain.dialogTableVisible = true
+                this.$refs.maintain.dialogTableVisibleMore = true
+            },
+            equipment() {
+                this.$refs.maintain.dialogEquipment = true
+            },
+            manual(relation) {
+                let {Manual, Prompting, RelationTypeName, ComputingTime} = relation;
+                let device = Prompting && Prompting.split(','),
+                    tips= `请前往以下功能页面维护 <${RelationTypeName}>`,
+                    optionTips= `请下载最新最新 <${RelationTypeName}> 数据进行手动维护`,
+                    lastTime=`最后更新时间为 ${ComputingTime ? ComputingTime : ''}`
+
+                if (Manual === 2) {
+                    this.values={...this.values,device,tips}
+                    this.$refs.maintain.dialogManualTip = true
+                    }
+                if (Manual === 3) {
+                    this.values={...this.values,optionTips,lastTime}
+                    this.$refs.maintain.dialogManualOption = true
+                    }
+            },
+            templateDown() { //下载模板
+                this.$emit('template')
+            }
+        },
+        components: {RelationMaintain}
+    }
+</script>
+
+<style lang="less" scoped>
+    @color-text: #333;
+    @font-big: 600;
+    @font-small: 12px;
+    @font-code: #AAAAAA;
+    @pos-relative: relative;
+    @pos-absolute: absolute;
+    @pos-zero: 0;
+    @5px: 5px;
+    .slave-relation-title {
+        color: @font-code;
+        font-weight: 600;
+        border-bottom: 1px dashed @font-code;
+        padding-bottom: @5px;
+    }
+
+    .container {
+        .el-card {
+            /*border: 1px solid #000;*/
+            margin: 10px 0;
+        }
+
+        /*.el-button {*/
+        /*    border: 1px solid #000;*/
+        /*}*/
+
+        .relation-text {
+            overflow: hidden;
+            margin-top: 10px;
+            color: @color-text;
+            border-left: 8px solid @color-text;
+            text-indent: 10px;
+            font-weight: @font-big;
+
+            .pic-code {
+                font-size: @font-small;
+                color: @font-code;
+                margin-left: @5px;
+                font-weight: 400;
+            }
+        }
+
+        .card {
+            position: @pos-relative;
+
+            .mask {
+                background: rgba(255, 255, 255, .6);
+                position: @pos-absolute;
+                top: @pos-zero;
+                left: @pos-zero;
+                right: @pos-zero;
+                bottom: @pos-zero;
+                user-select: none;
+                z-index: 2
+            }
+        }
+
+        .relation-title {
+            font-size: 20px;
+            font-weight: @font-big;
+
+            .asc {
+                font-size: @font-small;
+                color: @font-code;
+            }
+
+            .icon {
+                display: block;
+                float: right;
+                color: #555;
+                font-size: 18px;
+            }
+        }
+
+        .main-object {
+            margin: 15px 0;
+            padding-left: 0 !important;
+
+            &:nth-child(even) {
+                border-left: 1px solid @font-code;
+                margin-top: 27px;
+            }
+
+            .object {
+                font-size: @font-small;
+                color: @font-code;
+                font-weight: @font-big;
+            }
+
+            .group {
+                color: @color-text;
+                font-weight: @font-big;
+            }
+
+            .line-number {
+                font-size: @font-small;
+                color: @font-code;
+                font-weight: @font-big;
+            }
+        }
+
+
+        article {
+            overflow: hidden;
+        }
+
+        .last-computed {
+            overflow: hidden;
+            color: @font-code;
+
+            .float-right {
+                float: right;
+                margin-left: @5px;
+            }
+
+            /deep/ .is-dot {
+                margin-top: 7px;
+                margin-right: @5px;
+            }
+
+        }
+    }
+</style>

+ 304 - 0
src/components/relation/overview/Modal/RelationMaintain.vue

@@ -0,0 +1,304 @@
+<template>
+    <div class="relation-maintain">
+        <!--计算无需配置源末端的关系时提示-->
+        <el-dialog
+            :title="values.title"
+            :visible.sync="dialogTableVisible"
+        >
+            <span class="font-big">{{values.autoComputed}}</span>
+            <footer
+                slot="footer"
+                class="dialog-footer "
+            >
+                <el-button @click="dialogTableVisible = false">{{values.cancel}}</el-button>
+                <el-button
+                    type="primary"
+                    @click="dialogTableVisible = false"
+                >{{values.confirm}}
+                </el-button>
+            </footer>
+        </el-dialog>
+        <!-- 计算需配置源末端的关系且已配置时提示-->
+        <el-dialog
+            :title="values.title"
+            :visible.sync="dialogTableVisibleMore"
+        >
+            <p class="font-big">{{values.existComputed}}</p>
+            <p class="exist-title">{{values.existTitle}}</p>
+            <el-row :span="24">
+                <el-col :span="8">
+                    <span class="demonstration">{{values.originEquipment}}</span>
+                    <el-cascader
+                        :options="options"
+                        :props="props"
+                        collapse-tags
+                        clearable
+                    />
+                </el-col>
+                <el-col :span="8">
+                    <span class="demonstration">{{values.endEquipment}}</span>
+                    <el-cascader
+                        :options="options"
+                        :props="props"
+                        collapse-tags
+                        clearable
+                    />
+                </el-col>
+            </el-row>
+            <footer
+                slot="footer"
+                class="dialog-footer "
+            >
+                <el-button @click="dialogTableVisibleMore = false">{{values.cancel}}</el-button>
+                <el-button
+                    type="primary"
+                    @click="dialogTableVisibleMore = false"
+                >{{values.promptly}}
+                </el-button>
+            </footer>
+        </el-dialog>
+        <!--设定设备对象源/末端-->
+        <el-dialog
+            :title="values.title"
+            :visible.sync="dialogEquipment"
+        >
+            <span class="font-big">{{values.underDesign}}</span>
+            <footer
+                slot="footer"
+                class="dialog-footer"
+            >
+                <el-button
+                    type="primary"
+                    @click="dialogEquipment = false"
+                >{{values.confirm}}
+                </el-button>
+            </footer>
+        </el-dialog>
+        <!--手动编辑:提示引导-->
+        <el-dialog
+            :title="values.title"
+            :visible.sync="dialogManualTip"
+        >
+            <p class="font-big">{{values.tips}}</p>
+            <p
+                class="font-big"
+                v-for="item in values.device"
+            >{{item}}</p>
+            <footer
+                slot="footer"
+                class="dialog-footer "
+            >
+                <el-button @click="dialogManualTip = false">{{values.confirm}}
+                </el-button>
+            </footer>
+        </el-dialog>
+        <!--手动编辑:手动维护-->
+        <el-dialog
+            :title="values.title"
+            :visible.sync="dialogManualOption"
+        >
+            <p class="option-tip">{{values.optionTips}}</p>
+            <el-row :span="24">
+                <el-col :span="8">
+                    <p>
+                        <i class="iconfont icon-doc-line"/>
+                        {{values.currentNum}} 0
+                    </p>
+                    <a href="/api/datacenter/graphic/template-downloads">
+                    <el-button
+                        type="primary"
+                        class="mt-10"
+                    >
+                        {{values.download}}
+                    </el-button>
+                    </a>
+                </el-col>
+                <el-col :span="10">
+                    {{values.lastTime}}
+                </el-col>
+            </el-row>
+            <el-upload
+                class="upload-demo"
+                drag
+                action="/api/datacenter/graphic/import"
+                multiple
+                name="fileName"
+                :on-progress="progress"
+                :on-success="success"
+                :on-error="error"
+            >
+                <i class="el-icon-upload"/>
+                <div
+                    class="el-upload__text"
+                    v-html="values.uploadTxt"
+                />
+                <div class="upload__tip danger" slot="tip">{{ values.uploadTips}}</div>
+            </el-upload>
+        </el-dialog>
+        <!--手动编辑:手动维护.process结束-->
+        <el-dialog
+            :title="values.title"
+            :visible.sync="dialogProcess"
+        >
+            <div class="block">
+                <el-timeline>
+                    <el-timeline-item
+                        v-for="(activity, index) in activities"
+                        :key="index"
+                        :icon="activity.icon"
+                        :type="activity.type"
+                        :color="activity.color"
+                        :size="activity.size"
+                    >
+                        {{activity.content}}
+                    </el-timeline-item>
+                </el-timeline>
+            </div>
+<!--            下载报告-->
+            <a href="/api/datacenter//graphic/report-downloads">
+                <el-button>{{values.downloadFile}}</el-button>
+            </a>
+            <footer
+                slot="footer"
+                class="dialog-footer "
+            >
+                <el-button @click="errBack">{{values.back}}</el-button>
+                <el-button
+                    type="primary"
+                    @click="finish"
+                >{{values.done}}
+                </el-button>
+            </footer>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+
+    export default {
+        name: "RelationMaintain",
+        props:['values'],
+        created() {
+        },
+
+        data() {
+            return {
+                dialogTableVisible: false,
+                dialogTableVisibleMore: false,
+                dialogEquipment: false,
+                dialogManualTip: false,
+                dialogManualOption: false,
+                dialogProcess: false,
+                originEquipment: [],
+                endEquipment: [],
+                props:{multiple:true}, // 级联
+                options: [{
+                    value: 1,
+                    label: '东南',
+                    children: [{
+                        value: 2,
+                        label: '上海',
+                    }, {
+                        value: 7,
+                        label: '江苏',
+                    }, {
+                        value: 12,
+                        label: '浙江',
+                    }]
+                }, {
+                    value: 17,
+                    label: '西北',
+                    children: [{
+                        value: 18,
+                        label: '陕西',
+                    }, {
+                        value: 21,
+                        label: '新疆维吾尔族自治区',
+                    }]
+                }],
+                activities: [{
+                    content: '数据文件处理中..',
+                    size: 'large',
+                    type: 'primary',
+                    icon: 'el-icon-check',
+                    color: '#0bbd87'
+                }, {
+                    content: '数据处理失败',
+                    color: '#0bbd87',
+                    icon: 'el-icon-check',
+                    size: 'large',
+                    type: 'primary',
+                }]
+            }
+        },
+        computed:{
+            fileHeaders() {
+                return  {'Content-Type': 'multipart/form-data'}
+            }
+        },
+        methods: {
+            progress(event, file, fileList) {
+                // console.log(event.file, fileList)
+            },
+            success(event, file, fileList) {
+                this.dialogManualOption = true
+                this.dialogProcess = true
+                console.log(event.file, fileList,' file success')
+
+            },
+            error(event, file, fileList) {
+                this.dialogManualOption = true
+                this.dialogProcess = true
+                console.log(event.file, fileList)
+
+            },
+            errBack() {
+                this.dialogProcess = false
+            },
+            finish() {
+                this.dialogProcess = false
+                this.dialogManualOption = false
+            },
+            templateDownload() {
+                this.$emit('template')
+            }
+        }
+    }
+</script>
+
+<style scoped lang="less">
+    .relation-maintain {
+        .mt-10 {
+            margin-top: 10px;
+        }
+
+        .danger {
+            color: #d9001b;
+        }
+
+        .font-big {
+            font-weight: 600;
+        }
+
+
+        .exist-title {
+            font-size: 12px;
+            color: #AAAAAA;
+        }
+
+        .option-tip {
+            font-size: 18px;
+            font-weight: 600;
+        }
+
+        .upload-demo {
+            margin: 20px 0;
+
+        }
+
+        /deep/ .el-upload-dragger {
+            width: 600px;
+            margin: 0 auto;
+        }
+    }
+</style>

+ 2 - 2
src/router/system.js

@@ -468,7 +468,7 @@ export default [{
         component: LayoutMain,
         children: [
             { path: 'maintain', name: 'maintain', component: maintain, meta: { keepAlive: false, breadcrumbs: [{ label: '关系维护' }] } },
-            { path: 'overview', name: 'overView', component: overView, meta: { keepAlive: false, breadcrumbs: [{ label: '全部关系总览' }] } }
+            { path: 'overview', name: 'overView', component: overView, meta: { keepAlive: false, breadcrumbs: [{ label: '关系维护计算' },{ label: '全部关系总览' }] } }
         ]
     },
     /******************** 通用字典 ***************************/
@@ -584,4 +584,4 @@ export default [{
             { path: 'own', name: 'Dasboard', component: OwnerManage }
         ]
     }
-]
+]

+ 1 - 0
src/utils/httputils.js

@@ -46,6 +46,7 @@ axiosservice.interceptors.response.use(
                 type: 'error'
             })
                 .then(resp => {
+                    console.log(resp,'--------')
                     //console.log('--------------------------- confirm', resp)
                     //router.push('/login')
                     window.location.reload()

+ 71 - 73
src/views/ready/buildfloor/addFloor/index.vue

@@ -10,81 +10,79 @@
   </el-dialog>
 </template>
 <script>
-import {
-  manageCreateFloor,
-  manageUpdateFloor
-} from "@/api/scan/request";
-import formItems from "@/components/ready/buildfloor/formItems";
-import tools from "@/utils/buildfloor/tools";
-export default {
-  props: {
-    title: {
-      default: '提示'
-    },
-    type: {
-      default: 'Floor'
-    },
-    curBuildId: {
-      default: ''
-    },
-    curFloorId: {
-      default: ''
-    }
-  },
-  components: {
-    formItems
-  },
-  data() {
-    return {
-      dialogVisible: false, //弹窗显示与隐藏
-      floorData: {}
-    };
-  },
-  methods: {
-    showDialog(data) {
-      this.floorData = data || {};
-      this.floorData = tools.desFormatData(this.floorData)
-      this.timeoutSetVal()
-      this.dialogVisible = true;
-    },
-    timeoutSetVal() {
-      setTimeout(() => {
-        if (this.$refs.formItems) {
-          this.$refs.formItems.form = this.floorData
-        } else {
+    import {manageCreateFloor, manageUpdateFloor} from "@/api/scan/request";
+    import formItems from "@/components/ready/buildfloor/formItems";
+    import tools from "@/utils/buildfloor/tools";
+
+    export default {
+      props: {
+        title: {
+          default: '提示'
+        },
+        type: {
+          default: 'Floor'
+        },
+        curBuildId: {
+          default: ''
+        },
+        curFloorId: {
+          default: ''
+        }
+      },
+      components: {
+        formItems
+      },
+      data() {
+        return {
+          dialogVisible: false, //弹窗显示与隐藏
+          floorData: {}
+        };
+      },
+      methods: {
+        showDialog(data) {
+          this.floorData = data || {};
+          this.floorData = tools.desFormatData(this.floorData)
           this.timeoutSetVal()
+          this.dialogVisible = true;
+        },
+        timeoutSetVal() {
+          setTimeout(() => {
+            if (this.$refs.formItems) {
+              this.$refs.formItems.form = this.floorData
+            } else {
+              this.timeoutSetVal()
+            }
+          }, 500)
+        },
+        handleClose() { },
+        //创建
+        confirm() {
+          this.$refs.formItems.submitForm(this.save)
+        },
+        save() {
+          let form = this.$refs.formItems.form
+          let newform = tools.formatData(form)
+          newform.BuildID = this.curBuildId
+          let Param = {
+            Content: [newform]
+          }
+          if (newform.FloorID) {
+            manageUpdateFloor(Param, res => {
+              this.$message.success('更新成功')
+              this.$emit('refresh')
+              this.dialogVisible = false;
+            })
+          } else {
+            manageCreateFloor(Param, res => {
+              this.$message.success('创建成功')
+              this.$emit('refresh')
+              this.dialogVisible = false;
+            })
+          }
         }
-      }, 500)
-    },
-    handleClose() { },
-    //创建
-    confirm() {
-      this.$refs.formItems.submitForm(this.save)
-    },
-    save() {
-      let form = this.$refs.formItems.form
-      let newform = tools.formatData(form)
-      newform.BuildID = this.curBuildId
-      let Param = {
-        Content: [newform]
-      }
-      if (newform.FloorID) {
-        manageUpdateFloor(Param, res => {
-          this.$message.success('更新成功')
-          this.$emit('refresh')
-          this.dialogVisible = false;
-        })
-      } else {
-        manageCreateFloor(Param, res => {
-          this.$message.success('创建成功')
-          this.$emit('refresh')
-          this.dialogVisible = false;
-        })
-      }
-    }
-  },
-  mounted() { },
-  created() { }
+      },
+      mounted() { },
+      created() { }
 };
 </script>
 <style lang="scss" scoped>

+ 404 - 250
src/views/ready/buildfloor/index.vue

@@ -4,27 +4,62 @@
       <div class="l-list">
         <div class="action-box">
           <div>
-            <el-button size="small" type="default" icon="el-icon-plus" @click="addBuild"></el-button>
-            <el-button size="small" type="default" icon="el-icon-minus" @click="delBuild"></el-button>
-            <el-button size="small" type="default" icon="el-icon-edit-outline" @click="editBuild"></el-button>
+              <el-button
+                  size="small"
+                  type="default"
+                  icon="el-icon-plus"
+                  @click="addBuild"
+              />
+              <el-button
+                  size="small"
+                  type="default"
+                  icon="el-icon-minus"
+                  @click="delBuild"
+              />
+              <el-button
+                  size="small"
+                  type="default"
+                  icon="el-icon-edit-outline"
+                  @click="editBuild"
+              />
           </div>
         </div>
         <h4>建筑</h4>
         <div class="build-list">
-          <div v-for="(item,index) in buildList" :key="item.BuildID" :class="{'floor-item':true,active:item.active}" @click="changeBuild(index)">
+            <div
+                v-for="(item,index) in buildList"
+                :key="item.BuildID"
+                :class="{'floor-item':true,active:currentIndex === index}"
+                @click="changeBuild(index)"
+            >
             <span>
               {{item.BuildLocalName || item.BuildName}}
-              <el-badge v-if="item.Count>0" class="mark" :value="item.Count" />
+              <el-badge
+                  v-if="item.Count>0"
+                  class="mark"
+                  :value="item.Count"
+              />
             </span>
           </div>
         </div>
       </div>
       <div class="r-table">
         <div class="action-box">
-          <el-button size="small" type="default" @click="addFloor">添加楼层</el-button>
+            <el-button
+                size="small"
+                type="default"
+                @click="addFloor"
+            >添加楼层
+            </el-button>
         </div>
         <div class="table-box">
-          <el-table :data="tableData" style="width: 100%" height="100%" v-loading="loading" :header-cell-style="headerStyle">
+            <el-table
+                :data="tableData"
+                style="width: 100%"
+                height="100%"
+                v-loading="loading"
+                :header-cell-style="headerStyle"
+            >
             <el-table-column label="楼层本地名">
               <template slot-scope="scope">{{scope.row.FloorLocalName||scope.row.FloorName}}</template>
             </el-table-column>
@@ -33,35 +68,68 @@
             </el-table-column>
             <el-table-column label="楼层信息">
               <template slot-scope="scope">
-                <el-button size="mini" @click="editFloorData(scope.row)" plain icon="el-icon-edit-outline"></el-button>
+                  <el-button
+                      size="mini"
+                      @click="editFloorData(scope.row)"
+                      plain
+                      icon="el-icon-edit-outline"
+                  ></el-button>
               </template>
             </el-table-column>
-            <el-table-column prop="Datasource" label="平面图">
+                <el-table-column
+                    prop="Datasource"
+                    label="平面图"
+                >
               <template slot-scope="scope">
-                <p v-if="scope.row.Sign>0" @click="checkDrawImg(scope.row,2)">
+                  <p
+                      v-if="scope.row.Sign>0"
+                      @click="checkDrawImg(scope.row,2)"
+                  >
                   <el-badge is-dot>
-                    <i class="iconfont icon-floorplan"></i>
+                      <i class="iconfont icon-floorplan"/>
                   </el-badge>平面图重复
                 </p>
-                <p v-else-if="scope.row.StructureInfo?scope.row.StructureInfo.FloorMap:false" @click="checkDrawImg(scope.row,1)">
-                  <i class="iconfont icon-floorplan"></i>
+                  <p
+                      v-else-if="scope.row.StructureInfo?scope.row.StructureInfo.FloorMap:false"
+                      @click="checkDrawImg(scope.row,1)"
+                  >
+                      <i class="iconfont icon-floorplan"/>
                   查看平面图
                 </p>
-                <p v-else @click="checkDrawImg(scope.row,3)">
-                  <i class="iconfont icon-nopicture"></i>
+                  <p
+                      v-else
+                      @click="checkDrawImg(scope.row,3)"
+                  >
+                      <i class="iconfont icon-nopicture"/>
                   暂无平面图
                 </p>
               </template>
             </el-table-column>
-            <el-table-column prop="SubTypeName" label="楼层贯通关系">
+                <el-table-column
+                    prop="SubTypeName"
+                    label="楼层贯通关系"
+                >
               <template slot-scope="scope">
                 <span style="margin-right:20px">{{scope.row.FloorThroughList?scope.row.FloorThroughList.length:0}}</span>
-                <el-button size="mini" @click="changeConnection(scope.row)" plain icon="el-icon-edit-outline"></el-button>
+                  <el-button
+                      size="mini"
+                      @click="changeConnection(scope.row)"
+                      plain
+                      icon="el-icon-edit-outline"
+                  />
               </template>
             </el-table-column>
-            <el-table-column prop="action" label="操作">
+                <el-table-column
+                    prop="action"
+                    label="操作">
               <template slot-scope="scope">
-                <el-button size="mini" @click="handleDelete(scope.row)" type="danger" plain icon="el-icon-delete"></el-button>
+                  <el-button
+                      size="mini"
+                      @click="handleDelete(scope.row)"
+                      type="danger"
+                      plain
+                      icon="el-icon-delete"
+                  />
               </template>
             </el-table-column>
           </el-table>
@@ -69,253 +137,339 @@
       </div>
     </el-row>
     <!-- 添加-修改楼层 -->
-    <addFloor :title="floorTitle" ref="addFloorDialog" :curBuildId="curBuildId" :curFloorId="curFloorId" @refresh="refresh"></addFloor>
+      <addFloor
+          :title="floorTitle"
+          ref="addFloorDialog"
+          :curBuildId="curBuildId"
+          :curFloorId="curFloorId"
+          @refresh="refresh"
+      />
     <!-- 添加-修改建筑 -->
-    <addBuild :title="buildTitle" ref="addBuildDialog"></addBuild>
+      <addBuild
+          :title="buildTitle"
+          ref="addBuildDialog"
+      />
     <!-- 删除建筑-删除楼层 -->
-    <el-dialog title="提示" :visible.sync="delDialogVis" width="20%" @close="handleClose" id="messageDialog">
+      <el-dialog
+          title="提示"
+          :visible.sync="delDialogVis"
+          width="20%"
+          @close="handleClose"
+          id="messageDialog"
+      >
       <div>确定要删除该{{delText}}?</div>
-      <span slot="footer" class="dialog-footer">
-        <el-button size="small" @click="delDialogVis=false">取消</el-button>
-        <el-button size="small" type="primary" @click="confirmDel">确认</el-button>
+          <span
+              slot="footer"
+              class="dialog-footer"
+          >
+        <el-button
+            size="small"
+            @click="delDialogVis=false"
+        >取消</el-button>
+        <el-button
+            size="small"
+            type="primary"
+            @click="confirmDel"
+        >确认</el-button>
       </span>
     </el-dialog>
     <!-- 添加贯通关系弹窗 -->
-    <addConnectivity ref="addConnectivity" @refresh="refresh"></addConnectivity>
+      <addConnectivity
+          ref="addConnectivity"
+          @refresh="refresh"
+      />
     <!-- 查看图片弹窗 -->
-    <checkGraphy ref="checkGraphy" @refresh="refresh"></checkGraphy>
+      <checkGraphy
+          ref="checkGraphy"
+          @refresh="refresh"
+      />
+
+<!--      <el-row :gutter="24">-->
+<!--          <el-col :span="4">-->
+<!--              <sidebar-->
+<!--                  :content="buildList"-->
+<!--                  @currentBuild="currentBuild"-->
+<!--              />-->
+<!--          </el-col>-->
+<!--          <el-col :span="20" style="float:right;">-->
+<!--              <container-->
+<!--                  :curBuildId="curBuildId"-->
+<!--                  :tableData="tableData"-->
+<!--                  @checkDrawImg="checkDrawImg"-->
+<!--                  @confirmDel="confirmDel"-->
+<!--              />-->
+<!--          </el-col>-->
+<!--      </el-row>-->
   </div>
+
 </template>
 
 <script>
-import addFloor from "@/views/ready/buildfloor/addFloor/index";
-import addBuild from "@/components/ready/buildfloor/addBuild";
-import { mapGetters, mapActions } from "vuex";
-import addConnectivity from "@/components/ready/buildfloor/addConnectivity";
-import checkGraphy from "./drawGraphy/checkGraphy"; //查看图片
-import { buildingQueryAndCount, floorQueryAndSign, manageDeleteFloor } from "@/api/scan/request";
-export default {
-  components: {
-    addFloor,
-    addBuild,
-    addConnectivity,
-    checkGraphy
-  },
-  data() {
-    return {
-      repetitionGraphyVisible: false, // 替换平面图弹窗
-      floorTitle: "添加楼层",
-      buildTitle: "添加建筑",
-      delDialogVis: false,
-      delText: "建筑",
-      headerStyle: {
-        backgroundColor: "#d9d9d9",
-        color: "#2b2b2b",
-        lineHeight: "30px"
-      },
-      buildList: [],
-      tableData: [],
-      page: {
-        pageSize: 500,
-        pageSizes: [10, 20, 50, 100],
-        pageNumber: 1,
-        total: 0
-      },
-      loading: false, //列表loading
-      curBuildId: "", //当前选中的建筑id
-      curFloorId: "", //当前选中的楼层id
-      modelId: "",
-    };
-  },
-  computed: {
-    ...mapGetters("layout", ["projectId"])
-  },
-  mounted() { },
-  created() {
-    this.init();
-  },
-  methods: {
-    init() {
-      let bdParam = {
-        Orders: "BuildLocalName asc",
-        PageNumber: 1,
-        PageSize: 500
-      };
-      buildingQueryAndCount(bdParam, res => {
-        this.buildList = res.Content;
-        if (this.buildList.length) {
-          this.changeBuild(0);
-        }
-      });
-    },
-    //change build
-    changeBuild(index) {
-      this.buildList.map(item => {
-        item.active = false;
-        return item;
-      });
-      this.buildList[index].active = true;
-      this.curBuildId = this.buildList[index].BuildID;
-      this.getFloorTableData();
-      this.$forceUpdate();
-    },
-    //add build
-    addBuild() {
-      this.$message.warning("开发中...");
-      return;
-      this.$refs.addBuildDialog.showDialog();
-    },
-    //delete build
-    delBuild() {
-      this.$message.warning("开发中...");
-      return;
-      this.delText = "建筑";
-      this.delDialogVis = true;
-    },
-    //edit build
-    editBuild() {
-      this.$message.warning("开发中...");
-      return;
-    },
-    //delete floor
-    handleDelete(floor) {
-      this.delText = "楼层";
-      this.delDialogVis = true;
-      this.curFloorId = floor.FloorID;
-    },
-    //确认删除弹窗关闭
-    handleClose() { },
-    addFloor() {
-      this.curFloorId = "";
-      this.$refs.addFloorDialog.showDialog();
-    },
-    // 获取列表
-    getFloorTableData() {
-      let floorParam = {
-        Cascade: [{ Name: "floorThroughList" }],
-        Orders: "FloorSequenceID desc",
-        PageNumber: this.page.pageNumber,
-        PageSize: this.page.pageSize,
-        Filters: `BuildID='${this.curBuildId}'`
-      };
-      floorQueryAndSign(floorParam, res => {
-        this.tableData = res.Content;
-        this.page.total = res.Total;
-      });
-    },
-    // 创建楼层成功-修改关系成功
-    refresh() {
-      this.getFloorTableData();
-    },
-    // 确认删除(删除建筑-楼层公用)
-    confirmDel() {
-      if (this.delText == "楼层") {
-        let delParam = [{ FloorID: this.curFloorId }];
-        manageDeleteFloor(delParam, res => {
-          this.$message.success("删除成功");
-          this.delDialogVis = false;
-          this.getFloorTableData();
-        });
-      } else {
-        //todo
-      }
-    },
-    // 修改楼层信息
-    editFloorData(floor) {
-      this.floorTitle = "编辑楼层信息";
-      this.curFloorId = floor.FloorID;
-      this.$refs.addFloorDialog.showDialog(floor);
-    },
-    // 修改楼层贯通关系
-    changeConnection(row) {
-      this.$refs.addConnectivity.showDialog();
-      this.$refs.addConnectivity.floor = row;
-    },
-    // 查看平面图
-    checkDrawImg(row, index) {
-      if (3 == index) {
-        this.$refs.checkGraphy.showDialog(row)
-        this.modelId = "";
-      } else {
-        this.modelId = row.ModelId;
-        let pa = { modelId: this.modelId, FloorID: row.FloorID, BuildID: row.BuildID }
-        this.$router.push({ name: "repetitionGraphy", query: pa });
-      }
-    }
-  },
-  watch: {
-    projectId() {
-      this.init();
+    import container from "../../../components/ready/buildfloor/container";
+    import sidebar from "../../../components/ready/buildfloor/sidebar";
+    import addFloor from "@/views/ready/buildfloor/addFloor/index";
+    import addBuild from "@/components/ready/buildfloor/addBuild";
+    import {mapGetters} from "vuex";
+    import addConnectivity from "@/components/ready/buildfloor/addConnectivity";
+    import checkGraphy from "./drawGraphy/checkGraphy"; //查看图片
+    import {buildingQueryAndCount, floorQueryAndSign, manageDeleteFloor} from "@/api/scan/request";
+
+    export default {
+        components: {
+            addFloor,
+            addBuild,
+            addConnectivity,
+            checkGraphy,
+            sidebar,
+            container
+        },
+        data() {
+            return {
+                repetitionGraphyVisible: false, // 替换平面图弹窗
+                floorTitle: "添加楼层",
+                buildTitle: "添加建筑",
+                delDialogVis: false,
+                delText: "建筑",
+                headerStyle: {
+                    backgroundColor: "#d9d9d9",
+                    color: "#2b2b2b",
+                    lineHeight: "30px"
+                },
+                currentIndex: 0,//第一座高亮
+                buildList: [],
+                tableData: [],
+                page: {
+                    pageSize: 500,
+                    pageSizes: [10, 20, 50, 100],
+                    pageNumber: 1,
+                    total: 0
+                },
+                loading: false, //列表loading
+                curBuildId: "", //当前选中的建筑id
+                curFloorId: "", //当前选中的楼层id
+                modelId: "",
+            };
+        },
+        computed: {
+            ...mapGetters("layout", ["projectId"])
+        },
+        created() {
+            this.init();
+        },
+        methods: {
+            init() {
+                let bdParam = {
+                    Orders: "BuildLocalName asc",
+                    PageNumber: 1,
+                    PageSize: 500
+                };
+                buildingQueryAndCount(bdParam, res => {
+                    this.buildList = res.Content;
+                    this.buildList.length ? this.changeBuild(this.currentIndex) : null;
+                    this.curBuildId = this.buildList[0].BuildID;
+
+                    // if (this.buildList.length) {
+                    //     this.changeBuild(0);
+                    // }
+                });
+            },
+            currentBuild(index) {
+                this.curBuildId = this.buildList[index].BuildID;
+                this.getFloorTableData();
+                this.$forceUpdate();
+            },
+            //change build
+            changeBuild(index) {
+                this.currentIndex = index;
+                // this.buildList.map(item => {
+                //     item.active = false;
+                //     return item;
+                // });
+                // this.buildList[index].active = true;
+                this.curBuildId = this.buildList[index].BuildID;
+                this.getFloorTableData();
+                this.$forceUpdate();
+            },
+            //add build
+            addBuild() {
+                this.$message.warning("开发中...");
+                return;
+                this.$refs.addBuildDialog.showDialog();
+            },
+            //delete build
+            delBuild() {
+                this.$message.warning("开发中...");
+                return;
+                this.delText = "建筑";
+                this.delDialogVis = true;
+            },
+            //edit build
+            editBuild() {
+                this.$message.warning("开发中...");
+                return;
+            },
+            //delete floor
+            handleDelete(floor) {
+                this.delText = "楼层";
+                this.delDialogVis = true;
+                this.curFloorId = floor.FloorID;
+            },
+            //确认删除弹窗关闭
+            handleClose() {
+            },
+            addFloor() {
+                this.curFloorId = "";
+                this.$refs.addFloorDialog.showDialog();
+            },
+            // 获取列表
+            getFloorTableData() {
+                let floorParam = {
+                    Cascade: [{Name: "floorThroughList"}],
+                    Orders: "FloorSequenceID desc",
+                    PageNumber: this.page.pageNumber,
+                    PageSize: this.page.pageSize,
+                    Filters: `BuildID='${this.curBuildId}'`
+                };
+                floorQueryAndSign(floorParam, res => {
+                    this.tableData = res.Content;
+                    this.page.total = res.Total;
+                });
+            },
+            // 创建楼层成功-修改关系成功
+            refresh() {
+                this.getFloorTableData();
+            },
+            // 确认删除(删除建筑-楼层公用)
+            confirmDel() {
+                if (this.delText == "楼层") {
+                    let delParam = [{FloorID: this.curFloorId}];
+                    manageDeleteFloor(delParam, res => {
+                        this.$message.success("删除成功");
+                        this.delDialogVis = false;
+                        this.getFloorTableData();
+                    });
+                } else {
+                    //todo
+                }
+            },
+            // 修改楼层信息
+            editFloorData(floor) {
+                this.floorTitle = "编辑楼层信息";
+                this.curFloorId = floor.FloorID;
+                this.$refs.addFloorDialog.showDialog(floor);
+            },
+            // 修改楼层贯通关系
+            changeConnection(row) {
+                this.$refs.addConnectivity.showDialog();
+                this.$refs.addConnectivity.floor = row;
+            },
+            // 查看平面图
+            checkDrawImg(row, index) {
+                if (3 == index) {
+                    this.$refs.checkGraphy.showDialog(row)
+                    this.modelId = "";
+                } else {
+                    this.modelId = row.ModelId;
+                    let pa = {modelId: this.modelId, FloorID: row.FloorID, BuildID: row.BuildID}
+                    this.$router.push({name: "repetitionGraphy", query: pa});
+                }
+            }
+        },
+        watch: {
+            projectId() {
+                this.init();
     }
   }
 };
 </script>
 <style lang="less" scoped>
-#bd-fl-manage {
-  overflow: hidden;
-  height: 100%;
-  position: relative;
-  .el-row {
-    height: 100%;
-    & > div {
-      float: left;
-      height: 100%;
-      overflow: hidden;
-      background-color: #fff;
-      box-sizing: border-box;
-      border: 1px solid #dfe6ec;
-      .action-box {
-        padding: 10px;
-        .el-button--small {
-          padding: 10px 11px;
-        }
-      }
-    }
-    .l-list {
-      width: 17%;
-      overflow-y: auto;
-      h4 {
-        padding-left: 10px;
-        border-top: 1px solid #d9d9d9;
-        border-bottom: 1px solid #d9d9d9;
-        background: #d9d9d9;
-        color: #2b2b2b;
-        line-height: 44px;
-      }
-      .build-list {
-        line-height: 48px;
-        .floor-item {
-          white-space: nowrap;
-          overflow: hidden;
-          text-overflow: ellipsis;
-          span {
-            margin-left: 10px;
-          }
-        }
-        .floor-item.active,
-        .floor-item:hover {
-          background-color: #f5f7fa;
-          color: #000;
-        }
-      }
-    }
-    .r-table {
-      width: 82%;
-      margin-left: 1%;
-      .table-box {
-        height: calc(100% - 54px);
-        margin-bottom: 8px;
-        .iconfont {
-          vertical-align: middle;
-        }
-        /deep/ .el-badge__content.is-fixed {
-          transform: translateY(-6%) translateX(-100%);
-        }
-        p {
-          cursor: pointer;
+    #bd-fl-manage {
+
+        overflow: hidden;
+        height: 100%;
+        position: relative;
+
+        .el-row {
+            height: 100%;
+
+            .el-col-4 {
+                width: 17%;
+            }
+            .el-col-20 {
+                width: 82%;
+            }
+            & > div {
+                float: left;
+                height: 100%;
+                overflow: hidden;
+                background-color: #fff;
+                box-sizing: border-box;
+                border: 1px solid #dfe6ec;
+
+                .action-box {
+                    padding: 10px;
+
+                    .el-button--small {
+                        padding: 10px 11px;
+                    }
+                }
+            }
+
+            .l-list {
+                width: 17%;
+                overflow-y: auto;
+
+                h4 {
+                    padding-left: 10px;
+                    border-top: 1px solid #d9d9d9;
+                    border-bottom: 1px solid #d9d9d9;
+                    background: #d9d9d9;
+                    color: #2b2b2b;
+                    line-height: 44px;
+                }
+
+                .build-list {
+                    line-height: 48px;
+
+                    .floor-item {
+                        white-space: nowrap;
+                        overflow: hidden;
+                        text-overflow: ellipsis;
+
+                        span {
+                            margin-left: 10px;
+                        }
+                    }
+
+                    .floor-item.active,
+                    .floor-item:hover {
+                        background-color: #f5f7fa;
+                        color: #000;
+                    }
+                }
+            }
+
+            .r-table {
+                width: 82%;
+                margin-left: 1%;
+
+                .table-box {
+                    height: calc(100% - 54px);
+                    margin-bottom: 8px;
+
+                    .iconfont {
+                        vertical-align: middle;
+                    }
+
+                    /deep/ .el-badge__content.is-fixed {
+                        transform: translateY(-6%) translateX(-100%);
+                    }
+
+                    p {
+                        cursor: pointer;
+                    }
+                }
+            }
         }
-      }
-    }
-  }
 }
 </style>

+ 10 - 11
src/views/ready/collectsetting/index.vue

@@ -74,15 +74,14 @@
     import buildInput from "@/components/common/search_input";
     import configDialog from "@/components/dialogs/config/infoPoint"
     import {
-        // getAllFamily, //获取所有设备族
-        queryPhysicsAllType, //查询设备、部件、系统
-        queryFamilyAll, //查询所有设备族
-        getDataDictionary, //点击时后去右侧的数据
-        setDataDictionary, //修改右侧数据
-        // getEqCode,
-        getBussTypes
+        getBussTypes,
+        getDataDictionary,
+        queryFamilyAll,
+        queryPhysicsAllType,
+        setDataDictionary
     } from "@/api/scan/request";
-    import { mapGetters, mapActions } from "vuex";
+    import {mapGetters} from "vuex";
+
     export default {
         name: "family",
         components: {
@@ -543,7 +542,7 @@
                             }
                         })
                         this.isLoading = false
-                        this.familySort() 
+                        this.familySort()
                     })
                 } else if (this.value == "space") {
                     getBussTypes(res => {
@@ -578,14 +577,14 @@
                         this.familySort();
                     })
                 } else if (this.value == "tenant") {
-                    this.allFamily = [{ 
+                    this.allFamily = [{
                             "code": "Tenant",
                             "name": "租户"
                         }
                     ]
                     this.familySort()
                 } else if (this.value == "shaft") {
-                    this.allFamily = [{ 
+                    this.allFamily = [{
                             "code": "Shaft",
                             "name": "竖井"
                         }

+ 169 - 25
src/views/relation/overview/index.vue

@@ -1,36 +1,180 @@
 <template>
     <div>
-      <das-board>
-        <template v-slot:plan>
-          <span>{{plan?plan:"yyyy-mm-dd"}}</span>
-        </template>
-        <template v-slot:finish>
-          <span>{{finish?finish:"yyyy-mm-dd"}}</span>
-        </template>
-        <template v-slot:onLine>
-          <span>{{onLine?onLine:"yyyy-mm-dd"}}</span>
-        </template>
-        <template v-slot:explain>
-          <span>{{explain?explain:"yyyy-mm-dd"}}</span>
-        </template>
-      </das-board>
+        <cardList
+            :content="content"
+            @template="templateDown"
+        />
     </div>
 </template>
 
 <script>
-import dasBoard from "@/views/dasboard/index";
-export default {
-    components: {
-      dasBoard
-    },
+    import CardList from "@/components/relation/Overview/CardList"
+    import api from "../../../api/relation/api";
+    import {mapGetters} from 'vuex'
+
+    export default {
     data() {
         return {
-          plan: "2019-10-30",
-          finish: "2019-10-30",
-          onLine: "2019-10-30",
-          explain: "所有关系的检索查看以及维护(查看方式包含:列表,平面图,拓扑图等)"
+            content: [
+                // {
+                //     GraphTypeId: '3535436',//大分类id
+                //     GraphTypeName: '架构从属关系',//大分类名称
+                //     GraphTypeCode: '',//大分类编码
+                //     Note: '',//说明
+                //     ParentId: '',//父id
+                //     ChildGraphicTypeList: [
+                //         {
+                //             GraphTypeId: '234534543',//图类型id
+                //             GraphTypeName: '建筑从属关系',//图类型名称
+                //             GraphTypeCode: 'ksaajdk',//图类型编码
+                //             Note: '显示数字字典excel中的xxx',//说明
+                //             ParentId: '3535436',//父id,GraphTypeId
+                //             RelationTypeProjectList: [
+                //                 {
+                //                     Id: '23445433534',
+                //                     RelationTypeName: '项目下的建筑体',//关系类型名称
+                //                     RelationTypeCode: 'Pj2Bd',//关系类型编码
+                //                     GraphicId: 'ksaajdk',//图类型编码
+                //                     Note: '边类型说明(待补充)',//说明
+                //                     ConneObject: '项目→建筑体',//连接对象
+                //                     IsSource: true,//是否需要配置源末端
+                //                     IsAutomatic: true,//是否自动计算类型
+                //                     Manual: 2,//123选一个手动计算类型1禁用2提示引导3手动维护
+                //                     Prompting: '【设备台账】,【系统台账】',//提示信息
+                //                     ProjectId: 'Pj1245',//项目id
+                //                     ComputingTime: '2019.12.12 12:00',//null不显示,最后一次自动计算时间
+                //                     ComputationalState: 1,//计算状态
+                //                 },
+                //             ]
+                //         },
+                //     ]
+                // },
+            ],
+            countNumber: [
+                //     {
+                //     "GraphTypeId": "3243215",
+                //     "GraphTypeName": "从属关系",
+                //     "GraphTypeCode": "ksaajdk",
+                //     "RelationTypeProjectList": [
+                //         {
+                //             "Id": "f3bed766a5ba45868d3a744fb8aaa0c8",
+                //             "RelationTypeName": "项目下的建筑体",
+                //             "RelationTypeCode": "关系类型编码",
+                //             "GraphicCode": "图类型code",
+                //             "ProjectId": "Pj5432532",
+                //             "count": "123"
+                //         },
+                //         {
+                //             "Id": "6b4c9f042d344eb99dd64e8e444ad2b0",
+                //             "RelationTypeName": "项目下的建筑体",
+                //             "RelationTypeCode": "关系类型编码",
+                //             "GraphicCode": "图类型code",
+                //             "ProjectId": "Pj5432532",
+                //             "count": "456"
+                //         },
+                //         {
+                //             "Id": "305170f91eae4bf991be9284e80a9cf4",
+                //             "RelationTypeName": "项目下的建筑体",
+                //             "RelationTypeCode": "关系类型编码",
+                //             "GraphicCode": "图类型code",
+                //             "ProjectId": "Pj5432532",
+                //             "count": "789"
+                //         },
+                //         {
+                //             "Id": "cd7a30cf0f2548a99d4dc99a7948c0db",
+                //             "RelationTypeName": "项目下的建筑体",
+                //             "RelationTypeCode": "关系类型编码",
+                //             "GraphicCode": "图类型code",
+                //             "ProjectId": "Pj5432532",
+                //             "count": "321"
+                //         }
+                //     ]
+                // }
+            ]
         }
     },
-    mounted() {}
+        created() {
+            let data = {
+                "Cascade": [{
+                    "Cascade": [{
+                        "Filters": `projectId = '${this.projectId}'`,
+                        "Name": "relationTypeProjectList"
+                    }],
+                    "Filters": " not parentId isnull",
+                    "Name": "childGraphicTypeList"
+                }],
+                "Filters": " parentId isnull ",
+                "PageNumber": 1,
+                "PageSize": 1000
+            }
+            let dataNumber = {
+                projectId: this.projectId
+            }
+            api.graphicNumber(dataNumber, resCount => {
+                this.countNumber = resCount.Content
+            })
+            api.graphic(data, res => {
+                res.Content.forEach(item => {
+                    // 二级从属关系
+                    (item.ChildGraphicTypeList != null) && item.ChildGraphicTypeList.forEach(child => {
+
+                        this.countNumber.forEach(number => {
+                            if (number.GraphTypeName === child.GraphTypeName) { //二级名字
+                                number.RelationTypeProjectList.forEach(counts => {
+                                    //对应子集
+                                    (child.RelationTypeProjectList != null) && child.RelationTypeProjectList.forEach(relation => {
+                                        if (relation.Id === counts.Id) {
+                                            relation.count = counts.Count
+                                        }
+                                    })
+                                })
+                            }
+                        })
+                    })
+                })
+                this.$forceUpdate()
+                console.log(this.content,'res')
+                this.content = res.Content
+                // this.transform(this.content, this.num)
+
+            })
+
+        },
+        computed: {
+            ...mapGetters('layout', ['projectId'])
+        },
+        mounted() {
+        },
+        components: {CardList},
+        methods: {
+            transform(list1, list2) {
+                let countInfo = {} // { GraphTypeName: { Id: count } }
+                list2.forEach(item => {
+                    countInfo[item.GraphTypeName] = countInfo[item.GraphTypeName] || {}
+                    let rList = item.RelationTypeProjectList
+                    rList.forEach(r => {
+                        countInfo[item.GraphTypeName][r.Id] = r.Count
+                    })
+                })
+
+                let changeList = []
+                list1.forEach(item => {
+                    // 这里保存的是引用
+                    changeList.push(...item.ChildGraphicTypeList)
+                })
+                changeList.forEach(item => {
+                    let name = item.GraphTypeName
+                    let rList = item.RelationTypeProjectList
+                    rList.forEach(r => {
+                        r.count = countInfo[name][r.Id]
+                    })
+                })
+            },
+            templateDown() { //下载模板
+            }
+        }
 }
-</script>
+</script>
+<style lang="less" scoped>
+
+</style>