GuoYuFu123 5 years ago
parent
commit
6e34f41b50

+ 12 - 0
src/components/config_point/step3_point/3_temps.vue

@@ -233,6 +233,17 @@
                     }
                 }
             },
+            //缓存数据字典
+            getDataDict(arr) {
+                for (var i = 0; i < arr.length; i++) {
+                    // this.dataDict[arr[i].code] = arr[i]
+                    if (arr[i].content && arr[i].content.length > 0) {
+                        this.getDataDict(arr[i].content)
+                    } else {
+                        this.$set(arr[i], 'content', [])
+                    }
+                }
+            },
             getEqAll() {
                 let params = {
                     format: true
@@ -240,6 +251,7 @@
                 getEquipmentAll(params, res => {
                     if (res.Result == 'success') {
                         this.options = res.Content
+                        this.getDataDict(this.options)
                     }
                 })
             },

+ 7 - 907
src/views/data_admin/buildAssets/index.vue

@@ -1,915 +1,15 @@
-<!--
-  revit一次资产清单
- -->
 <template>
-    <div id="build_assets">
-        <div class="select_header">
-            <!-- <button @click="download"></button> -->
-            <i>建筑名称:</i>
-            <!-- <select name="" id="" v-model="select" @change="changeSelect">
-                <option :value="item.BuildId" v-for="item in BuildList">{{item.BuildName}}</option>
-          </select>-->
-            <el-select v-model="select" placeholder="请选择" @change="changeSelect">
-                <el-option v-for="item in BuildList" :key="item.BuildId" :label="item.BuildLocalName" :value="item.BuildId"></el-option>
-            </el-select>
-        </div>
-        <div class="main">
-            <div class="left_main">
-                <el-tabs type="border-card" @tab-click="createHotBtn">
-                    <el-tab-pane v-for="(item,index) in textArr" :label="item" v-loading="loading" :key="index">
-                        <div style="padding: .2rem;width:100%;">
-                            <!-- 这里不能使用if判断,因为可能存在vue实例渲染时document先进行查找 -->
-                            <div :id="'assets' + index" v-show="noData[index]"></div>
-                            <div v-show="!noData[index]">暂无数据</div>
-                        </div>
-                        <div class="assets_page">
-                            <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page.sync="currentPage[tabCheck]" :page-sizes="pageSizeArrs" :page-size="pageSizeArr[tabCheck]" layout="total, sizes, prev, pager, next, jumper" :total="pageCount[tabCheck]"></el-pagination>
-                        </div>
-                    </el-tab-pane>
-                </el-tabs>
-            </div>
-        </div>
-        <el-dialog title="确定设备类" :visible.sync="familyDialog" :width="'30%'">
-            <el-select v-model="checkFamily" placeholder="与资产设备族对应的设备类">
-                <el-option v-for="item in showFamily" :key="item.code" :label="item.name" :value="item.code"></el-option>
-            </el-select>
-            <span slot="footer" class="dialog-footer">
-            <el-button type="primary" @click="correlation">确定创建对应岗位</el-button>
-            <el-button @click="familyDialog = false">取 消</el-button>
-          </span>
-        </el-dialog>
-        <!-- 请求提示弹窗 -->
-        <el-dialog title="提示" :visible.sync="dialogVisible">
-            <span>{{ajaxMsg}}</span>
-            <span slot="footer" class="dialog-footer">
-            <el-button @click="dialogVisible = false">取 消</el-button>
-            <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
-          </span>
-        </el-dialog>
-        <!-- 详情弹窗 -->
-        <el-dialog title="详情" class="iframe" v-if="iframeShow" :visible.sync="iframeShow">
-            <iframe id="google_ads_frame2" name="google_ads_frame2" frameborder="0" :src="iframeSrc" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true"></iframe>
-            <span slot="footer" class="dialog-footer">
-            <el-button @click="iframeShow = false">关 闭</el-button>
-            <!-- <el-button type="danger" @click="isDelAsset">删 除 该 资 产</el-button> -->
-            <el-button @click="isDelAsset">删 除 该 资 产</el-button>
-          </span>
-        </el-dialog>
-        <!-- 确定删除资产弹窗 -->
-        <el-dialog title="删除资产" :visible.sync="del">
-            <span>你确定删除该资产吗?</span>
-            <span slot="footer" class="dialog-footer">
-            <el-button @click="del = false">关 闭</el-button>
-            <el-button @click="delAsset">删 除</el-button>
-          </span>
-        </el-dialog>
+    <div>
+            32424
     </div>
 </template>
 
 <script>
-    import {
-        getBuildSelect, //根据项目ID获得建筑列表
-        getErrAssets, //获取异常资产type不同不同tab
-        delErrAssets, //删除异常资产
-        getAllFamily, //获取所有设备族
-        createPost, //新建岗位
-        upDateTableMain, //关联资产
-        getSpaceId, //获取空间id
-        getSpaceName, //获取空间名称
-        createComponent, //新建岗位(部件)
-        getAllbusiness, //获取楼层信息
-    } from "@/api/scan/request";
-    import {
-        mapGetters,
-        mapActions
-    } from "vuex";
-    import tools from '@/utils/scan/tools.js'
-    import Handsontable from "handsontable-pro"
-    import 'handsontable-pro/dist/handsontable.full.css'
-    import zhCN from 'handsontable-pro/languages/zh-CN';
-    export default {
-        computed: {
-            ...mapGetters("peojMess", [
-                "projectId",
-                "secret",
-                "userId"
-            ])
-        },
-        data() {
-            return {
-                BuildList: [], //下拉列表
-                textArr: [
-                    "现场无法找到的资产",
-                    "未画入模型的资产",
-                    "无对应岗位的资产",
-                    "未扫楼验证的资产"
-                ], //tab内容
-                select: "all", //下拉选中数据
-                data: [], //假数据
-                idArr: ["notFound", "noModel", "noJob", "noVerify"], //选中tab
-                myHotObj: [], //Handsontable实例数组
-                dialogVisible: false, //请求错误弹窗
-                ajaxMsg: "", //请求错误提示
-                currentPageArr: [1, 1, 1, 1], //当前选中页数数组
-                pageCount: [10, 10, 10, 10], //总共数据条数
-                pageSizeArrs: [10, 30, 50, 100], //下拉页数个数
-                pageSizeArr: [10, 10, 10, 10], //数组当前页个数
-                currentPage: [1, 1, 1, 1], //当前页数
-                tabCheck: 0, //当前选中的check
-                loading: true,
-                noData: [true, true, true, true],
-                iframeShow: false, //资产详情页弹窗
-                del: false,
-                FmList: [],
-                ProjId: this.projectId, //url获取项目id this.$route.query.projId
-                UserId: this.userId, //url获取用户id this.$route.query.userId
-                iframeSrc: "", //iframe的地址
-                allFamily: [], //所有的设备族
-                showFamily: [], //弹窗显示的设备类
-                familyDialog: false, //选择设备族弹窗
-                checkFamily: "", //选中的设备类
-                temporaryData: [], //暂时的数据
-                filtersArr: [],
-                copyData: null, //深拷贝数据
-                floors: [], //楼层信息
-            };
-        },
-        created() {
-            console.log(this.ProjId,"projectId")
-            this.ProjId = this.projectId
-            this.UserId = this.userId
-            this.getBuilding();
-            this.myHotObj.length = this.textArr.length;
-            //获取所有所有的设备族
-            this.getAllFamily();
-        },
-        mounted() {
-            this.getFloors()
-        },
-        methods: {
-            download() {
-                this.myHotObj[this.tabCheck].getPlugin('exportFile').downloadFile("csv", {
-                    filename: "嘉铭项目无对应岗位的资产",
-                    columnHeaders: true,
-                    exportHiddenRows: true,
-                    exportHiddenColumns: true,
-                    rowHeaders: true
-                })
-            },
-            //建筑选择事件
-            changeSelect() {
-                this.getErrAssets();
-            },
-            //获取所有楼层
-            getFloors() {
-                let param = {
-                    ProjId: this.ProjId,
-                    secret: this.secret,
-                    id: this.ProjId,
-                    type: ["Fl"]
-                }
-                getAllbusiness(param).then(res => {
-                    if (res.data.Result == "success") {
-                        this.floors = res.data.Content.map(item => {
-                            return {
-                                FloorLocalName: item.infos.FloorLocalName,
-                                FloorID: item.infos.FloorID
-                            }
-                        })
-                    } else {
-                        this.$message.error("请求出错" + res.data.ResultMsg)
-                    }
-                    this.getErrAssets();
-                })
-            },
-            //获取设备族
-            getAllFamily() {
-                getAllFamily().then(result => {
-                    if (result.data.Result == "success") {
-                        this.allFamily = result.data.Content;
-                    } else {
-                        this.dialogVisible = true;
-                        this.ajaxMsg = "请求出错";
-                    }
-                });
-            },
-            //新建岗位设备类
-            createPost() {
-                let param = {
-                    BuildId: this.temporaryData.BuildId,
-                    category: this.checkFamily,
-                    secret: this.secret,
-                    perjectId: this.ProjId,
-                    BIMID: this.temporaryData.FloorId,
-                    BIMLocation: (this.temporaryData.X || 0) + "," + (this.temporaryData.Y || 0) + "," + (this.temporaryData.Z || 0)
-                };
-                if (param.category.length == 6) {
-                    createComponent(param).then(res => {
-                        if (res.data.Result == "success") {
-                            this.upDateTableMain(res.data.id);
-                        } else {
-                            this.$message({
-                                message: res.data.ResultMsg,
-                                type: "warning"
-                            });
-                        }
-                    });
-                } else {
-                    createPost(param).then(res => {
-                        if (res.data.Result == "success") {
-                            this.upDateTableMain(res.data.id);
-                        } else {
-                            this.$message({
-                                message: res.data.ResultMsg,
-                                type: "warning"
-                            });
-                        }
-                    });
-                }
-            },
-            //获取元空间名称
-            getSpaceName(arr) {
-                let param = {
-                    perjectId: this.ProjId,
-                    secret: this.secret,
-                    list: arr
-                };
-                getSpaceName(param).then(res => {
-                    if (res.data.Result == "success") {
-                        let data = res.data.Content;
-                        for (let i = 0; i < this.data[3].length; i++) {
-                            let findData = data.find(
-                                item =>
-                                item.id == this.data[3][i].spaceId &&
-                                this.data[3][i].spaceName == undefined
-                            );
-                            if (findData != undefined) {
-                                this.data[3][i].spaceName = findData.infos.RoomLocalName;
-                            }
-                        }
-                        this.myHotObj[3].loadData(this.data[3]);
-                    } else {}
-                });
-            },
-            //获取元空间id
-            getSpaceId() {
-                let param = {},
-                    idArr = [],
-                    i = 0,
-                    dataArr = this.data[this.tabCheck];
-                for (; i < dataArr.length; i++) {
-                    if (dataArr[i].EquipmentId) {
-                        idArr.push({
-                            from_id: dataArr[i].EquipmentId,
-                            graph_id: "GtEquipinSpace001",
-                            rel_type: "1"
-                        });
-                    }
-                }
-                param = {
-                    perjectId: this.ProjId,
-                    secret: this.secret,
-                    list: idArr
-                };
-                getSpaceId(param).then(res => {
-                    let data = res.data,
-                        spaceArr = [],
-                        j = 0;
-                    if (data.Result == "success") {
-                        for (; j < data.Content.length; j++) {
-                            console.log(data.Content)
-                            if (data.Content[j].Count != 0) {
-                                spaceArr.push({
-                                    id: data.Content[j].Content[0].to_id
-                                });
-                                dataArr.map(item => {
-                                    if (item.EquipmentId == data.Content[j].Content[0].from_id) {
-                                        item.spaceId = data.Content[j].Content[0].to_id;
-                                    }
-                                    return item
-                                })
-                            }
-                        }
-                        console.log(dataArr, "dataArr")
-                        this.getSpaceName(spaceArr);
-                    } else {}
-                });
-            },
-            //获取资产设备类
-            getEquipmentName() {
-                let param = {},
-                    idArr = [],
-                    i = 0,
-                    dataArr = this.data[this.tabCheck];
-                for (; i < dataArr.length; i++) {
-                    if (dataArr[i].EquipmentId) {
-                        idArr.push({
-                            id: dataArr[i].EquipmentId
-                        });
-                    }
-                }
-                param = {
-                    perjectId: this.ProjId,
-                    secret: this.secret,
-                    list: idArr
-                };
-                getSpaceName(param).then(res => {
-                    if (res.data.Result == "success") {
-                        let data = res.data.Content;
-                        for (let i = 0; i < this.data[this.tabCheck].length; i++) {
-                            let findData = data.find(
-                                item => item.id == this.data[this.tabCheck][i].EquipmentId
-                            );
-                            if (findData != undefined) {
-                                let findFamily = this.allFamily.find(
-                                    item => item.code == this.data[this.tabCheck][i].Family
-                                ).content;
-                                this.data[this.tabCheck][i].familyArr = findFamily;
-                                this.data[this.tabCheck][i].assetType = findData.category.substr(
-                                    2,
-                                    6
-                                );
-                                this.data[this.tabCheck][i].assetName = findFamily.find(
-                                    item => item.code == findData.category.substr(2, 6)
-                                ).name;
-                                this.data[this.tabCheck][i].bimXY = findData.infos.BIMLocation || "--"
-                                this.data[this.tabCheck][i].html =
-                                    '<p style="color:#409EFF;cursor: pointer;">查看岗位详情</p>';
-                            }
-                        }
-                        this.myHotObj[this.tabCheck].loadData(this.data[this.tabCheck]);
-                    } else {}
-                });
-            },
-            //关联资产
-            upDateTableMain(id) {
-                let param = {
-                        ProjId: this.ProjId,
-                        UserId: this.UserId
-                    },
-                    paramList = {};
-                paramList.EquipmentId = id;
-                paramList.FmId = this.temporaryData.FmId;
-                paramList.Family = this.temporaryData.Family;
-                upDateTableMain(param, [paramList]).then(res => {
-                    if (res.data.Result == "success") {
-                        this.$message({
-                            message: "绑定成功",
-                            type: "success"
-                        });
-                        this.familyDialog = false;
-                        this.createHotBtn({
-                            index: this.tabCheck
-                        })
-                    } else {
-                        this.$message.error("请求失败");
-                    }
-                });
-            },
-            //获取异常资产
-            getErrAssets() {
-                let param = {
-                    BuildId: this.select,
-                    PageNum: this.currentPage[this.tabCheck],
-                    PageSize: this.pageSizeArr[this.tabCheck],
-                    Type: this.tabCheck + 1,
-                    ProjId: this.ProjId,
-                    UserId: this.UserId
-                };
-                if (this.tabCheck == 3) {
-                    param.CodeType = 1
-                } else {
-                    delete param.CodeType
-                }
-                let headerArr = [],
-                    columnsArr = [];
-                if (this.tabCheck != 3) {
-                    headerArr = [
-                        "建筑",
-                        "楼层",
-                        "点位标签名称",
-                        "设备族",
-                        "本地编码",
-                        "本地名称"
-                    ];
-                    columnsArr = [{
-                            data: "BuildName"
-                        },
-                        {
-                            data: "FloorName"
-                        },
-                        {
-                            data: "PointName"
-                        },
-                        {
-                            data: "FamilyName"
-                        },
-                        {
-                            data: "FmId"
-                        },
-                        {
-                            data: "FmName"
-                        }
-                    ];
-                } else {
-                    headerArr = [
-                        "建筑",
-                        "楼层",
-                        "设备族",
-                        "本地编码",
-                        "本地名称",
-                        "所在元空间",
-                        "对应设备类",
-                        "BIM模型中坐标",
-                        "对应的岗位",
-                        "查看资产详情"
-                    ];
-                    columnsArr = [{
-                            data: "BuildName"
-                        },
-                        {
-                            data: "FloorName"
-                        },
-                        {
-                            data: "FamilyName"
-                        },
-                        {
-                            data: "FmId"
-                        },
-                        {
-                            data: "FmName"
-                        },
-                        {
-                            data: "spaceName"
-                        },
-                        {
-                            data: "assetName"
-                        },
-                        {
-                            data: "bimXY",
-                        },
-                        {
-                            renderer: "html",
-                            data: "html"
-                        }, {
-                            renderer: tools.lookDetails,
-                            data: "details"
-                        }
-                    ];
-                }
-                if (this.tabCheck == 2) {
-                    headerArr.push("查看详情")
-                    columnsArr.push({
-                        renderer: tools.lookDetails,
-                        data: "details"
-                    })
-                }
-                //发起请求
-                getErrAssets(param).then(result => {
-                    if (result.data.Result == "success") {
-                        let id = "assets" + this.tabCheck;
-                        let dom = document.getElementById(id).innerText;
-                        if (result.data.Count) {
-                            this.noData[this.tabCheck] = true;
-                            //给数据添加楼层
-                            this.data[this.tabCheck] = result.data.FmList.map(item => {
-                                this.floors.map(floor => {
-                                    if (floor.FloorID == item.FloorId) {
-                                        item.FloorName = floor.FloorLocalName
-                                    }
-                                })
-                                return item
-                            });
-                            //拷贝一份数据以供删除
-                            this.copyData = tools.deepCopy(this.data[this.tabCheck])
-                            if (this.tabCheck == 3) {
-                                this.data[this.tabCheck] = result.data.FmList.map(item => {
-                                    item.bimXY = (item.X || '空') + "," + (item.Y || '空')
-                                    return item
-                                }).filter(d => d);
-                                this.getSpaceId();
-                                this.getEquipmentName();
-                            }
-                            if (dom) {
-                                this.loading = false;
-                                this.myHotObj[this.tabCheck].loadData(result.data.FmList);
-                            } else {
-                                this.$nextTick(() => {
-                                    this.createHot(
-                                        id,
-                                        this.tabCheck,
-                                        result.data.FmList,
-                                        headerArr,
-                                        columnsArr
-                                    );
-                                });
-                            }
-                            this.pageCount[this.tabCheck] = result.data.Count;
-                        } else {
-                            this.loading = false;
-                            this.noData[this.tabCheck] = false;
-                        }
-                    } else {
-                        this.dialogVisible = true;
-                        this.ajaxMsg = "请求出错";
-                    }
-                });
-            },
-            //删除资产
-            delAss() {
-                let param = {
-                    ProjId: this.ProjId,
-                    UserId: this.UserId
-                };
-                let paramList = [this.FmList.FmId];
-                delErrAssets(param, paramList).then(result => {
-                    if (result.data.Result == "success") {
-                        this.getErrAssets();
-                        return;
-                    } else {
-                        this.dialogVisible = true;
-                        this.ajaxMsg = "请求出错";
-                    }
-                });
-            },
-            //获取建筑列表
-            getBuilding() {
-                let param = {
-                    ProjId: this.ProjId,
-                    UserId: this.UserId
-                };
-                getBuildSelect(param).then(result => {
-                    if (result.data.Result == "success") {
-                        this.BuildList = result.data.BuildList;
-                        this.BuildList.unshift({
-                            BuildId: "all",
-                            BuildLocalId: "全部",
-                            BuildLocalName: "全部",
-                            BuildName: "全部"
-                        });
-                        this.select = this.BuildList[0].BuildId;
-                    } else {
-                        this.dialogVisible = true;
-                        this.ajaxMsg = "接口请求错误";
-                    }
-                });
-            },
-            //改变页面个数
-            handleSizeChange(val) {
-                this.pageSizeArr[this.tabCheck] = val;
-                this.getErrAssets();
-            },
-            //改变页面页数
-            handleCurrentChange(val) {
-                this.currentPage[this.tabCheck] = val;
-                this.getErrAssets();
-            },
-            //点击tab创建对应的表格
-            createHotBtn(tab, event) {
-                let id = "assets" + this.tabCheck;
-                let dom = document.getElementById(id).innerText;
-                this.tabCheck = Number(tab.index);
-                this.loading = true;
-                this.getErrAssets();
-            },
-            //弹窗点击删除事件
-            isDelAsset() {
-                this.iframeShow = false;
-                this.del = true;
-            },
-            //确定删除事件
-            delAsset() {
-                this.del = false;
-                this.delAss();
-            },
-            //关联资产确定
-            correlation() {
-                if (this.checkFamily == "") {
-                    this.$message({
-                        message: "请选择设备类后再进行关联",
-                        type: "warning"
-                    });
-                } else {
-                    this.createPost();
-                }
-            },
-            //Handsontable表格单击事件
-            tableDown(val, key) {
-                //是否是岗位
-                let isAsset = false;
-                this.FmList = this.data[this.tabCheck][key.row];
-                if (this.tabCheck == 3 || (this.tabCheck == 2 && key.col == 6)) {
-                    this.clickTab3(val, key)
-                    return
-                }
-                if (key.row < 0 || this.tabCheck == 2 || isAsset) {
-                    return;
-                } else {
-                    this.iframeSrc =
-                        process.env.BASE_URL +
-                        ":8889/#/details?perjectId=" +
-                        this.ProjId +
-                        "&secret=" +
-                        this.secret +
-                        "&FmId=" +
-                        this.FmList.FmId +
-                        "&type=1&code=" +
-                        this.FmList.Family;
-                    this.iframeShow = true;
-                }
-            },
-            clickTab3(val, rowArr) {
-                let trimmedArr = this.trimmedRows();
-                //是否启用了排序
-                let isSort = this.myHotObj[this.tabCheck]
-                    .getPlugin("columnSorting")
-                    .isSorted();
-                // debugger
-                let infos = null
-                if (trimmedArr.length && isSort) {
-                    let sortArr = this.myHotObj[this.tabCheck].getPlugin("columnSorting")
-                        .rowsMapper.__arrayMap;
-                    infos = this.data[this.tabCheck][
-                        trimmedArr[sortArr[rowArr.row]]
-                    ];
-                } else if (isSort) {
-                    //排序后的数组
-                    let sortArr = this.myHotObj[this.tabCheck].getPlugin("columnSorting")
-                        .rowsMapper.__arrayMap;
-                    infos = this.data[this.tabCheck][sortArr[rowArr.row]];
-                } else if (trimmedArr.length) {
-                    infos = this.data[this.tabCheck][trimmedArr[rowArr.row]];
-                } else {
-                    infos = this.data[this.tabCheck][rowArr.row];
-                }
-                if (rowArr.col == 8 || rowArr.col == 9) {
-                    this.lookTab3Details(infos, rowArr);
-                }
-                this.FmList = infos
-                if (this.tabCheck == 2 && rowArr.col == 6) {
-                    this.iframeSrc =
-                        process.env.BASE_URL +
-                        ":8889/#/details?perjectId=" +
-                        this.ProjId +
-                        "&secret=" +
-                        this.secret +
-                        "&FmId=" +
-                        infos.FmId +
-                        "&type=0&code=" +
-                        infos.Family;
-                    this.iframeShow = true;
-                    return
-                }
-                if (this.tabCheck == 3) {
-                    return
-                }
-            },
-            lookTab3Details(infos, rowArr) {
-                if (rowArr.col == 8) {
-                    if (!!infos.html) {
-                        this.iframeSrc =
-                            process.env.BASE_URL +
-                            ":8889/#/details?perjectId=" +
-                            this.ProjId +
-                            "&secret=" +
-                            this.secret +
-                            "&FmId=" +
-                            infos.EquipmentId +
-                            "&type=0&code=" +
-                            infos.assetType;
-                        this.iframeShow = true;
-                    }
-                }
-                if (rowArr.col == 9) {
-                    this.iframeSrc =
-                        process.env.BASE_URL +
-                        ":8889/#/details?perjectId=" +
-                        this.ProjId +
-                        "&secret=" +
-                        this.secret +
-                        "&FmId=" +
-                        infos.FmId +
-                        "&type=0&code=" +
-                        infos.Family;
-                    this.iframeShow = true;
-                }
-            },
-            //自定义菜单被点击触发事件
-            menuCallback(key, selection, clickEvent) {
-                if (selection) {
-                    let index = selection[0].start.row;
-                    this.temporaryData = this.data[this.tabCheck][index];
-                    this.showFamily = this.findFamily(this.temporaryData.Family).content;
-                    this.checkFamily = ""; //清空设备类
-                    this.familyDialog = true;
-                }
-            },
-            getDetails(key, selection, clickEvent) {
-                if (selection) {
-                    this.tableDown("", selection);
-                }
-            },
-            //数组查询族
-            findFamily(str) {
-                return this.allFamily.find(item => item.code == str);
-            },
-            //自定义右键菜单
-            customMenu(val) {
-                if (this.tabCheck == 2) {
-                    return {
-                        callback: function(key, selection, clickEvent) {},
-                        items: {
-                            about: {
-                                name: "自动创建对应资产",
-                                callback: this.menuCallback
-                            }
-                            // about: {
-                            //   name: "查看资产详情",
-                            //   callback: this.getDetails
-                            // }
-                        }
-                    };
-                } else {
-                    return "";
-                }
-            },
-            //创建表格实例
-            createHot(id, variableNum, data, headerArr, columnsArr) {
-                let that = this;
-                let containter = document.getElementById(id);
-                let options = {
-                    data: data,
-                    colHeaders: headerArr,
-                    manualColumnResize: true,
-                    manualColumnMove: true,
-                    height: 750,
-                    stretchH: "all",
-                    // maxRows: this.pageSizeArr[variableNum],
-                    renderAllRows: true,
-                    readOnly: true,
-                    autoColumnSize: true,
-                    columns: columnsArr,
-                    afterOnCellMouseDown: this.tableDown,
-                    contextMenu: this.customMenu()
-                };
-                if (this.tabCheck == 3) {
-                    options.contextMenu = {
-                        items: {
-                            remove_row: {
-                                name: "删除资产"
-                            }
-                        }
-                    }
-                    options.columnSorting = true //添加排序
-                    options.sortIndicator = true //添加排序
-                    options.dropdownMenu = [
-                        "filter_by_condition",
-                        "filter_by_value",
-                        "filter_action_bar"
-                    ]
-                    options.filters = true
-                    options.afterFilter = this.trimmedRows
-                    options.afterRemoveRow = this.romoveFm //右键删除
-                }
-                this.myHotObj[variableNum] = new Handsontable(containter, options);
-                //存在点击tab后分页不正确的问题,使用0转换
-                this.tabCheck = 0;
-                this.tabCheck = variableNum;
-                this.loading = false;
-                let pro = document.getElementById("hot-display-license-info");
-                pro.parentNode.removeChild(pro);
-            },
-            //删除资产
-            romoveFm(index, rowArr) {
-                let a = this.data[this.tabCheck]
-                let b = this.copyData
-                //获取相同的值
-                // let intersection = a.filter(v => b.includes(v))
-                //取差值
-                let difference = a.concat(b).filter(v => !a.includes(v) || !b.includes(v))
-                let param = {
-                    ProjId: this.ProjId,
-                    UserId: this.UserId
-                };
-                let paramList = difference.map(item => {
-                    return item.FmId
-                })
-                this.$confirm('确认删除?')
-                    .then(_ => {
-                        delErrAssets(param, paramList).then(result => {
-                            if (result.data.Result == "success") {
-                                this.createHotBtn({
-                                    index: this.tabCheck
-                                })
-                                return;
-                            } else {
-                                this.dialogVisible = true;
-                                this.ajaxMsg = "请求出错";
-                            }
-                        });
-                    })
-                    .catch(_ => {
-                        this.createHotBtn({
-                            index: this.tabCheck
-                        })
-                    });
-            },
-            //获取被筛选掉的行号
-            trimmedRows() {
-                // var plugin = hot.getPlugin('trimRows').trimmedRows;//获取被筛选掉的行号
-                var plugin = this.myHotObj[this.tabCheck].getPlugin("trimRows")
-                    .trimmedRows;
-                let dataLength = this.pageSizeArr[this.tabCheck];
-                let dataArr = new Array();
-                for (let i = 0; i < dataLength; i++) {
-                    dataArr.push(i);
-                }
-                if (plugin.length <= 0) {
-                    dataArr = undefined;
-                } else {
-                    dataArr = this.array_diff(dataArr, plugin);
-                }
-                this.filtersArr[this.tabCheck] = dataArr;
-                return dataArr || [];
-                // var DataArray = new Array();
-                // for (var i = 0; i < plugin.length; i++) {
-                //     // 通过行号获取数据
-                //     DataArray.push(this.myHotObj[this.tabCheck].getSourceDataAtRow(plugin[i]));
-                // }
-            },
-            //去除数组中相同的元素
-            array_diff(a, b) {
-                for (var i = 0; i < b.length; i++) {
-                    for (var j = 0; j < a.length; j++) {
-                        if (a[j] == b[i]) {
-                            a.splice(j, 1);
-                            j = j - 1;
-                        }
-                    }
-                }
-                return a;
-            },
-        }
-    };
+export default {
+    name: 'build-assets'
+}
 </script>
 
-<style lang="less" scoped>
-    #app {
-        min-width: 1098px;
-        min-height: 767px;
-        position: relative;
-        overflow-x: auto;
-    }
-    #build_assets {
-        height: 100%;
-        width: 100%;
-        overflow: hidden;
-        position: relative;
-        #assets0,
-        #assets1,
-        #assets2 {
-            height: 45rem;
-            overflow-y: auto;
-        }
-        .select_header {
-            font-size: 0.8rem;
-            height: 3rem;
-            width: 100%;
-            min-width: 1098px;
-            line-height: 3rem;
-            background-color: #eee;
-            border-bottom: 1px solid #000;
-            padding-left: 0.5rem;
-            position: absolute;
-            top: 0;
-            box-sizing: border-box;
-        }
-        .main {
-            width: 100%;
-            position: absolute;
-            top: 3.5rem;
-            bottom: 0;
-            overflow: hidden;
-            .left_main {
-                height: 100%;
-                box-sizing: border-box;
-                float: left;
-                width: 100%;
-                position: relative;
-                .el-tabs--border-card {
-                    position: absolute;
-                    left: 0.4rem;
-                    right: 0;
-                    top: 0;
-                    bottom: 0.4rem;
-                }
-            }
-        }
-        .iframe {
-            iframe {
-                width: 760px;
-                height: 100%;
-            }
-        }
-    }
+<style>
+
 </style>

+ 915 - 0
src/views/data_admin/buildAssets/index1.vue

@@ -0,0 +1,915 @@
+<!--
+  revit一次资产清单
+ -->
+<template>
+    <div id="build_assets">
+        <div class="select_header">
+            <!-- <button @click="download"></button> -->
+            <i>建筑名称:</i>
+            <!-- <select name="" id="" v-model="select" @change="changeSelect">
+                <option :value="item.BuildId" v-for="item in BuildList">{{item.BuildName}}</option>
+          </select>-->
+            <el-select v-model="select" placeholder="请选择" @change="changeSelect">
+                <el-option v-for="item in BuildList" :key="item.BuildId" :label="item.BuildLocalName" :value="item.BuildId"></el-option>
+            </el-select>
+        </div>
+        <div class="main">
+            <div class="left_main">
+                <el-tabs type="border-card" @tab-click="createHotBtn">
+                    <el-tab-pane v-for="(item,index) in textArr" :label="item" v-loading="loading" :key="index">
+                        <div style="padding: .2rem;width:100%;">
+                            <!-- 这里不能使用if判断,因为可能存在vue实例渲染时document先进行查找 -->
+                            <div :id="'assets' + index" v-show="noData[index]"></div>
+                            <div v-show="!noData[index]">暂无数据</div>
+                        </div>
+                        <div class="assets_page">
+                            <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page.sync="currentPage[tabCheck]" :page-sizes="pageSizeArrs" :page-size="pageSizeArr[tabCheck]" layout="total, sizes, prev, pager, next, jumper" :total="pageCount[tabCheck]"></el-pagination>
+                        </div>
+                    </el-tab-pane>
+                </el-tabs>
+            </div>
+        </div>
+        <el-dialog title="确定设备类" :visible.sync="familyDialog" :width="'30%'">
+            <el-select v-model="checkFamily" placeholder="与资产设备族对应的设备类">
+                <el-option v-for="item in showFamily" :key="item.code" :label="item.name" :value="item.code"></el-option>
+            </el-select>
+            <span slot="footer" class="dialog-footer">
+            <el-button type="primary" @click="correlation">确定创建对应岗位</el-button>
+            <el-button @click="familyDialog = false">取 消</el-button>
+          </span>
+        </el-dialog>
+        <!-- 请求提示弹窗 -->
+        <el-dialog title="提示" :visible.sync="dialogVisible">
+            <span>{{ajaxMsg}}</span>
+            <span slot="footer" class="dialog-footer">
+            <el-button @click="dialogVisible = false">取 消</el-button>
+            <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
+          </span>
+        </el-dialog>
+        <!-- 详情弹窗 -->
+        <el-dialog title="详情" class="iframe" v-if="iframeShow" :visible.sync="iframeShow">
+            <iframe id="google_ads_frame2" name="google_ads_frame2" frameborder="0" :src="iframeSrc" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true"></iframe>
+            <span slot="footer" class="dialog-footer">
+            <el-button @click="iframeShow = false">关 闭</el-button>
+            <!-- <el-button type="danger" @click="isDelAsset">删 除 该 资 产</el-button> -->
+            <el-button @click="isDelAsset">删 除 该 资 产</el-button>
+          </span>
+        </el-dialog>
+        <!-- 确定删除资产弹窗 -->
+        <el-dialog title="删除资产" :visible.sync="del">
+            <span>你确定删除该资产吗?</span>
+            <span slot="footer" class="dialog-footer">
+            <el-button @click="del = false">关 闭</el-button>
+            <el-button @click="delAsset">删 除</el-button>
+          </span>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+    import {
+        getBuildSelect, //根据项目ID获得建筑列表
+        getErrAssets, //获取异常资产type不同不同tab
+        delErrAssets, //删除异常资产
+        getAllFamily, //获取所有设备族
+        createPost, //新建岗位
+        upDateTableMain, //关联资产
+        getSpaceId, //获取空间id
+        getSpaceName, //获取空间名称
+        createComponent, //新建岗位(部件)
+        getAllbusiness, //获取楼层信息
+    } from "@/api/scan/request";
+    import {
+        mapGetters,
+        mapActions
+    } from "vuex";
+    import tools from '@/utils/scan/tools.js'
+    import Handsontable from "handsontable-pro"
+    import 'handsontable-pro/dist/handsontable.full.css'
+    import zhCN from 'handsontable-pro/languages/zh-CN';
+    export default {
+        computed: {
+            ...mapGetters("peojMess", [
+                "projectId",
+                "secret",
+                "userId"
+            ])
+        },
+        data() {
+            return {
+                BuildList: [], //下拉列表
+                textArr: [
+                    "现场无法找到的资产",
+                    "未画入模型的资产",
+                    "无对应岗位的资产",
+                    "未扫楼验证的资产"
+                ], //tab内容
+                select: "all", //下拉选中数据
+                data: [], //假数据
+                idArr: ["notFound", "noModel", "noJob", "noVerify"], //选中tab
+                myHotObj: [], //Handsontable实例数组
+                dialogVisible: false, //请求错误弹窗
+                ajaxMsg: "", //请求错误提示
+                currentPageArr: [1, 1, 1, 1], //当前选中页数数组
+                pageCount: [10, 10, 10, 10], //总共数据条数
+                pageSizeArrs: [10, 30, 50, 100], //下拉页数个数
+                pageSizeArr: [10, 10, 10, 10], //数组当前页个数
+                currentPage: [1, 1, 1, 1], //当前页数
+                tabCheck: 0, //当前选中的check
+                loading: true,
+                noData: [true, true, true, true],
+                iframeShow: false, //资产详情页弹窗
+                del: false,
+                FmList: [],
+                ProjId: this.projectId, //url获取项目id this.$route.query.projId
+                UserId: this.userId, //url获取用户id this.$route.query.userId
+                iframeSrc: "", //iframe的地址
+                allFamily: [], //所有的设备族
+                showFamily: [], //弹窗显示的设备类
+                familyDialog: false, //选择设备族弹窗
+                checkFamily: "", //选中的设备类
+                temporaryData: [], //暂时的数据
+                filtersArr: [],
+                copyData: null, //深拷贝数据
+                floors: [], //楼层信息
+            };
+        },
+        created() {
+            console.log(this.ProjId,"projectId")
+            this.ProjId = this.projectId
+            this.UserId = this.userId
+            this.getBuilding();
+            this.myHotObj.length = this.textArr.length;
+            //获取所有所有的设备族
+            this.getAllFamily();
+        },
+        mounted() {
+            this.getFloors()
+        },
+        methods: {
+            download() {
+                this.myHotObj[this.tabCheck].getPlugin('exportFile').downloadFile("csv", {
+                    filename: "嘉铭项目无对应岗位的资产",
+                    columnHeaders: true,
+                    exportHiddenRows: true,
+                    exportHiddenColumns: true,
+                    rowHeaders: true
+                })
+            },
+            //建筑选择事件
+            changeSelect() {
+                this.getErrAssets();
+            },
+            //获取所有楼层
+            getFloors() {
+                let param = {
+                    ProjId: this.ProjId,
+                    secret: this.secret,
+                    id: this.ProjId,
+                    type: ["Fl"]
+                }
+                getAllbusiness(param).then(res => {
+                    if (res.data.Result == "success") {
+                        this.floors = res.data.Content.map(item => {
+                            return {
+                                FloorLocalName: item.infos.FloorLocalName,
+                                FloorID: item.infos.FloorID
+                            }
+                        })
+                    } else {
+                        this.$message.error("请求出错" + res.data.ResultMsg)
+                    }
+                    this.getErrAssets();
+                })
+            },
+            //获取设备族
+            getAllFamily() {
+                getAllFamily().then(result => {
+                    if (result.data.Result == "success") {
+                        this.allFamily = result.data.Content;
+                    } else {
+                        this.dialogVisible = true;
+                        this.ajaxMsg = "请求出错";
+                    }
+                });
+            },
+            //新建岗位设备类
+            createPost() {
+                let param = {
+                    BuildId: this.temporaryData.BuildId,
+                    category: this.checkFamily,
+                    secret: this.secret,
+                    perjectId: this.ProjId,
+                    BIMID: this.temporaryData.FloorId,
+                    BIMLocation: (this.temporaryData.X || 0) + "," + (this.temporaryData.Y || 0) + "," + (this.temporaryData.Z || 0)
+                };
+                if (param.category.length == 6) {
+                    createComponent(param).then(res => {
+                        if (res.data.Result == "success") {
+                            this.upDateTableMain(res.data.id);
+                        } else {
+                            this.$message({
+                                message: res.data.ResultMsg,
+                                type: "warning"
+                            });
+                        }
+                    });
+                } else {
+                    createPost(param).then(res => {
+                        if (res.data.Result == "success") {
+                            this.upDateTableMain(res.data.id);
+                        } else {
+                            this.$message({
+                                message: res.data.ResultMsg,
+                                type: "warning"
+                            });
+                        }
+                    });
+                }
+            },
+            //获取元空间名称
+            getSpaceName(arr) {
+                let param = {
+                    perjectId: this.ProjId,
+                    secret: this.secret,
+                    list: arr
+                };
+                getSpaceName(param).then(res => {
+                    if (res.data.Result == "success") {
+                        let data = res.data.Content;
+                        for (let i = 0; i < this.data[3].length; i++) {
+                            let findData = data.find(
+                                item =>
+                                item.id == this.data[3][i].spaceId &&
+                                this.data[3][i].spaceName == undefined
+                            );
+                            if (findData != undefined) {
+                                this.data[3][i].spaceName = findData.infos.RoomLocalName;
+                            }
+                        }
+                        this.myHotObj[3].loadData(this.data[3]);
+                    } else {}
+                });
+            },
+            //获取元空间id
+            getSpaceId() {
+                let param = {},
+                    idArr = [],
+                    i = 0,
+                    dataArr = this.data[this.tabCheck];
+                for (; i < dataArr.length; i++) {
+                    if (dataArr[i].EquipmentId) {
+                        idArr.push({
+                            from_id: dataArr[i].EquipmentId,
+                            graph_id: "GtEquipinSpace001",
+                            rel_type: "1"
+                        });
+                    }
+                }
+                param = {
+                    perjectId: this.ProjId,
+                    secret: this.secret,
+                    list: idArr
+                };
+                getSpaceId(param).then(res => {
+                    let data = res.data,
+                        spaceArr = [],
+                        j = 0;
+                    if (data.Result == "success") {
+                        for (; j < data.Content.length; j++) {
+                            console.log(data.Content)
+                            if (data.Content[j].Count != 0) {
+                                spaceArr.push({
+                                    id: data.Content[j].Content[0].to_id
+                                });
+                                dataArr.map(item => {
+                                    if (item.EquipmentId == data.Content[j].Content[0].from_id) {
+                                        item.spaceId = data.Content[j].Content[0].to_id;
+                                    }
+                                    return item
+                                })
+                            }
+                        }
+                        console.log(dataArr, "dataArr")
+                        this.getSpaceName(spaceArr);
+                    } else {}
+                });
+            },
+            //获取资产设备类
+            getEquipmentName() {
+                let param = {},
+                    idArr = [],
+                    i = 0,
+                    dataArr = this.data[this.tabCheck];
+                for (; i < dataArr.length; i++) {
+                    if (dataArr[i].EquipmentId) {
+                        idArr.push({
+                            id: dataArr[i].EquipmentId
+                        });
+                    }
+                }
+                param = {
+                    perjectId: this.ProjId,
+                    secret: this.secret,
+                    list: idArr
+                };
+                getSpaceName(param).then(res => {
+                    if (res.data.Result == "success") {
+                        let data = res.data.Content;
+                        for (let i = 0; i < this.data[this.tabCheck].length; i++) {
+                            let findData = data.find(
+                                item => item.id == this.data[this.tabCheck][i].EquipmentId
+                            );
+                            if (findData != undefined) {
+                                let findFamily = this.allFamily.find(
+                                    item => item.code == this.data[this.tabCheck][i].Family
+                                ).content;
+                                this.data[this.tabCheck][i].familyArr = findFamily;
+                                this.data[this.tabCheck][i].assetType = findData.category.substr(
+                                    2,
+                                    6
+                                );
+                                this.data[this.tabCheck][i].assetName = findFamily.find(
+                                    item => item.code == findData.category.substr(2, 6)
+                                ).name;
+                                this.data[this.tabCheck][i].bimXY = findData.infos.BIMLocation || "--"
+                                this.data[this.tabCheck][i].html =
+                                    '<p style="color:#409EFF;cursor: pointer;">查看岗位详情</p>';
+                            }
+                        }
+                        this.myHotObj[this.tabCheck].loadData(this.data[this.tabCheck]);
+                    } else {}
+                });
+            },
+            //关联资产
+            upDateTableMain(id) {
+                let param = {
+                        ProjId: this.ProjId,
+                        UserId: this.UserId
+                    },
+                    paramList = {};
+                paramList.EquipmentId = id;
+                paramList.FmId = this.temporaryData.FmId;
+                paramList.Family = this.temporaryData.Family;
+                upDateTableMain(param, [paramList]).then(res => {
+                    if (res.data.Result == "success") {
+                        this.$message({
+                            message: "绑定成功",
+                            type: "success"
+                        });
+                        this.familyDialog = false;
+                        this.createHotBtn({
+                            index: this.tabCheck
+                        })
+                    } else {
+                        this.$message.error("请求失败");
+                    }
+                });
+            },
+            //获取异常资产
+            getErrAssets() {
+                let param = {
+                    BuildId: this.select,
+                    PageNum: this.currentPage[this.tabCheck],
+                    PageSize: this.pageSizeArr[this.tabCheck],
+                    Type: this.tabCheck + 1,
+                    ProjId: this.ProjId,
+                    UserId: this.UserId
+                };
+                if (this.tabCheck == 3) {
+                    param.CodeType = 1
+                } else {
+                    delete param.CodeType
+                }
+                let headerArr = [],
+                    columnsArr = [];
+                if (this.tabCheck != 3) {
+                    headerArr = [
+                        "建筑",
+                        "楼层",
+                        "点位标签名称",
+                        "设备族",
+                        "本地编码",
+                        "本地名称"
+                    ];
+                    columnsArr = [{
+                            data: "BuildName"
+                        },
+                        {
+                            data: "FloorName"
+                        },
+                        {
+                            data: "PointName"
+                        },
+                        {
+                            data: "FamilyName"
+                        },
+                        {
+                            data: "FmId"
+                        },
+                        {
+                            data: "FmName"
+                        }
+                    ];
+                } else {
+                    headerArr = [
+                        "建筑",
+                        "楼层",
+                        "设备族",
+                        "本地编码",
+                        "本地名称",
+                        "所在元空间",
+                        "对应设备类",
+                        "BIM模型中坐标",
+                        "对应的岗位",
+                        "查看资产详情"
+                    ];
+                    columnsArr = [{
+                            data: "BuildName"
+                        },
+                        {
+                            data: "FloorName"
+                        },
+                        {
+                            data: "FamilyName"
+                        },
+                        {
+                            data: "FmId"
+                        },
+                        {
+                            data: "FmName"
+                        },
+                        {
+                            data: "spaceName"
+                        },
+                        {
+                            data: "assetName"
+                        },
+                        {
+                            data: "bimXY",
+                        },
+                        {
+                            renderer: "html",
+                            data: "html"
+                        }, {
+                            renderer: tools.lookDetails,
+                            data: "details"
+                        }
+                    ];
+                }
+                if (this.tabCheck == 2) {
+                    headerArr.push("查看详情")
+                    columnsArr.push({
+                        renderer: tools.lookDetails,
+                        data: "details"
+                    })
+                }
+                //发起请求
+                getErrAssets(param).then(result => {
+                    if (result.data.Result == "success") {
+                        let id = "assets" + this.tabCheck;
+                        let dom = document.getElementById(id).innerText;
+                        if (result.data.Count) {
+                            this.noData[this.tabCheck] = true;
+                            //给数据添加楼层
+                            this.data[this.tabCheck] = result.data.FmList.map(item => {
+                                this.floors.map(floor => {
+                                    if (floor.FloorID == item.FloorId) {
+                                        item.FloorName = floor.FloorLocalName
+                                    }
+                                })
+                                return item
+                            });
+                            //拷贝一份数据以供删除
+                            this.copyData = tools.deepCopy(this.data[this.tabCheck])
+                            if (this.tabCheck == 3) {
+                                this.data[this.tabCheck] = result.data.FmList.map(item => {
+                                    item.bimXY = (item.X || '空') + "," + (item.Y || '空')
+                                    return item
+                                }).filter(d => d);
+                                this.getSpaceId();
+                                this.getEquipmentName();
+                            }
+                            if (dom) {
+                                this.loading = false;
+                                this.myHotObj[this.tabCheck].loadData(result.data.FmList);
+                            } else {
+                                this.$nextTick(() => {
+                                    this.createHot(
+                                        id,
+                                        this.tabCheck,
+                                        result.data.FmList,
+                                        headerArr,
+                                        columnsArr
+                                    );
+                                });
+                            }
+                            this.pageCount[this.tabCheck] = result.data.Count;
+                        } else {
+                            this.loading = false;
+                            this.noData[this.tabCheck] = false;
+                        }
+                    } else {
+                        this.dialogVisible = true;
+                        this.ajaxMsg = "请求出错";
+                    }
+                });
+            },
+            //删除资产
+            delAss() {
+                let param = {
+                    ProjId: this.ProjId,
+                    UserId: this.UserId
+                };
+                let paramList = [this.FmList.FmId];
+                delErrAssets(param, paramList).then(result => {
+                    if (result.data.Result == "success") {
+                        this.getErrAssets();
+                        return;
+                    } else {
+                        this.dialogVisible = true;
+                        this.ajaxMsg = "请求出错";
+                    }
+                });
+            },
+            //获取建筑列表
+            getBuilding() {
+                let param = {
+                    ProjId: this.ProjId,
+                    UserId: this.UserId
+                };
+                getBuildSelect(param).then(result => {
+                    if (result.data.Result == "success") {
+                        this.BuildList = result.data.BuildList;
+                        this.BuildList.unshift({
+                            BuildId: "all",
+                            BuildLocalId: "全部",
+                            BuildLocalName: "全部",
+                            BuildName: "全部"
+                        });
+                        this.select = this.BuildList[0].BuildId;
+                    } else {
+                        this.dialogVisible = true;
+                        this.ajaxMsg = "接口请求错误";
+                    }
+                });
+            },
+            //改变页面个数
+            handleSizeChange(val) {
+                this.pageSizeArr[this.tabCheck] = val;
+                this.getErrAssets();
+            },
+            //改变页面页数
+            handleCurrentChange(val) {
+                this.currentPage[this.tabCheck] = val;
+                this.getErrAssets();
+            },
+            //点击tab创建对应的表格
+            createHotBtn(tab, event) {
+                let id = "assets" + this.tabCheck;
+                let dom = document.getElementById(id).innerText;
+                this.tabCheck = Number(tab.index);
+                this.loading = true;
+                this.getErrAssets();
+            },
+            //弹窗点击删除事件
+            isDelAsset() {
+                this.iframeShow = false;
+                this.del = true;
+            },
+            //确定删除事件
+            delAsset() {
+                this.del = false;
+                this.delAss();
+            },
+            //关联资产确定
+            correlation() {
+                if (this.checkFamily == "") {
+                    this.$message({
+                        message: "请选择设备类后再进行关联",
+                        type: "warning"
+                    });
+                } else {
+                    this.createPost();
+                }
+            },
+            //Handsontable表格单击事件
+            tableDown(val, key) {
+                //是否是岗位
+                let isAsset = false;
+                this.FmList = this.data[this.tabCheck][key.row];
+                if (this.tabCheck == 3 || (this.tabCheck == 2 && key.col == 6)) {
+                    this.clickTab3(val, key)
+                    return
+                }
+                if (key.row < 0 || this.tabCheck == 2 || isAsset) {
+                    return;
+                } else {
+                    this.iframeSrc =
+                        process.env.BASE_URL +
+                        ":8889/#/details?perjectId=" +
+                        this.ProjId +
+                        "&secret=" +
+                        this.secret +
+                        "&FmId=" +
+                        this.FmList.FmId +
+                        "&type=1&code=" +
+                        this.FmList.Family;
+                    this.iframeShow = true;
+                }
+            },
+            clickTab3(val, rowArr) {
+                let trimmedArr = this.trimmedRows();
+                //是否启用了排序
+                let isSort = this.myHotObj[this.tabCheck]
+                    .getPlugin("columnSorting")
+                    .isSorted();
+                // debugger
+                let infos = null
+                if (trimmedArr.length && isSort) {
+                    let sortArr = this.myHotObj[this.tabCheck].getPlugin("columnSorting")
+                        .rowsMapper.__arrayMap;
+                    infos = this.data[this.tabCheck][
+                        trimmedArr[sortArr[rowArr.row]]
+                    ];
+                } else if (isSort) {
+                    //排序后的数组
+                    let sortArr = this.myHotObj[this.tabCheck].getPlugin("columnSorting")
+                        .rowsMapper.__arrayMap;
+                    infos = this.data[this.tabCheck][sortArr[rowArr.row]];
+                } else if (trimmedArr.length) {
+                    infos = this.data[this.tabCheck][trimmedArr[rowArr.row]];
+                } else {
+                    infos = this.data[this.tabCheck][rowArr.row];
+                }
+                if (rowArr.col == 8 || rowArr.col == 9) {
+                    this.lookTab3Details(infos, rowArr);
+                }
+                this.FmList = infos
+                if (this.tabCheck == 2 && rowArr.col == 6) {
+                    this.iframeSrc =
+                        process.env.BASE_URL +
+                        ":8889/#/details?perjectId=" +
+                        this.ProjId +
+                        "&secret=" +
+                        this.secret +
+                        "&FmId=" +
+                        infos.FmId +
+                        "&type=0&code=" +
+                        infos.Family;
+                    this.iframeShow = true;
+                    return
+                }
+                if (this.tabCheck == 3) {
+                    return
+                }
+            },
+            lookTab3Details(infos, rowArr) {
+                if (rowArr.col == 8) {
+                    if (!!infos.html) {
+                        this.iframeSrc =
+                            process.env.BASE_URL +
+                            ":8889/#/details?perjectId=" +
+                            this.ProjId +
+                            "&secret=" +
+                            this.secret +
+                            "&FmId=" +
+                            infos.EquipmentId +
+                            "&type=0&code=" +
+                            infos.assetType;
+                        this.iframeShow = true;
+                    }
+                }
+                if (rowArr.col == 9) {
+                    this.iframeSrc =
+                        process.env.BASE_URL +
+                        ":8889/#/details?perjectId=" +
+                        this.ProjId +
+                        "&secret=" +
+                        this.secret +
+                        "&FmId=" +
+                        infos.FmId +
+                        "&type=0&code=" +
+                        infos.Family;
+                    this.iframeShow = true;
+                }
+            },
+            //自定义菜单被点击触发事件
+            menuCallback(key, selection, clickEvent) {
+                if (selection) {
+                    let index = selection[0].start.row;
+                    this.temporaryData = this.data[this.tabCheck][index];
+                    this.showFamily = this.findFamily(this.temporaryData.Family).content;
+                    this.checkFamily = ""; //清空设备类
+                    this.familyDialog = true;
+                }
+            },
+            getDetails(key, selection, clickEvent) {
+                if (selection) {
+                    this.tableDown("", selection);
+                }
+            },
+            //数组查询族
+            findFamily(str) {
+                return this.allFamily.find(item => item.code == str);
+            },
+            //自定义右键菜单
+            customMenu(val) {
+                if (this.tabCheck == 2) {
+                    return {
+                        callback: function(key, selection, clickEvent) {},
+                        items: {
+                            about: {
+                                name: "自动创建对应资产",
+                                callback: this.menuCallback
+                            }
+                            // about: {
+                            //   name: "查看资产详情",
+                            //   callback: this.getDetails
+                            // }
+                        }
+                    };
+                } else {
+                    return "";
+                }
+            },
+            //创建表格实例
+            createHot(id, variableNum, data, headerArr, columnsArr) {
+                let that = this;
+                let containter = document.getElementById(id);
+                let options = {
+                    data: data,
+                    colHeaders: headerArr,
+                    manualColumnResize: true,
+                    manualColumnMove: true,
+                    height: 750,
+                    stretchH: "all",
+                    // maxRows: this.pageSizeArr[variableNum],
+                    renderAllRows: true,
+                    readOnly: true,
+                    autoColumnSize: true,
+                    columns: columnsArr,
+                    afterOnCellMouseDown: this.tableDown,
+                    contextMenu: this.customMenu()
+                };
+                if (this.tabCheck == 3) {
+                    options.contextMenu = {
+                        items: {
+                            remove_row: {
+                                name: "删除资产"
+                            }
+                        }
+                    }
+                    options.columnSorting = true //添加排序
+                    options.sortIndicator = true //添加排序
+                    options.dropdownMenu = [
+                        "filter_by_condition",
+                        "filter_by_value",
+                        "filter_action_bar"
+                    ]
+                    options.filters = true
+                    options.afterFilter = this.trimmedRows
+                    options.afterRemoveRow = this.romoveFm //右键删除
+                }
+                this.myHotObj[variableNum] = new Handsontable(containter, options);
+                //存在点击tab后分页不正确的问题,使用0转换
+                this.tabCheck = 0;
+                this.tabCheck = variableNum;
+                this.loading = false;
+                let pro = document.getElementById("hot-display-license-info");
+                pro.parentNode.removeChild(pro);
+            },
+            //删除资产
+            romoveFm(index, rowArr) {
+                let a = this.data[this.tabCheck]
+                let b = this.copyData
+                //获取相同的值
+                // let intersection = a.filter(v => b.includes(v))
+                //取差值
+                let difference = a.concat(b).filter(v => !a.includes(v) || !b.includes(v))
+                let param = {
+                    ProjId: this.ProjId,
+                    UserId: this.UserId
+                };
+                let paramList = difference.map(item => {
+                    return item.FmId
+                })
+                this.$confirm('确认删除?')
+                    .then(_ => {
+                        delErrAssets(param, paramList).then(result => {
+                            if (result.data.Result == "success") {
+                                this.createHotBtn({
+                                    index: this.tabCheck
+                                })
+                                return;
+                            } else {
+                                this.dialogVisible = true;
+                                this.ajaxMsg = "请求出错";
+                            }
+                        });
+                    })
+                    .catch(_ => {
+                        this.createHotBtn({
+                            index: this.tabCheck
+                        })
+                    });
+            },
+            //获取被筛选掉的行号
+            trimmedRows() {
+                // var plugin = hot.getPlugin('trimRows').trimmedRows;//获取被筛选掉的行号
+                var plugin = this.myHotObj[this.tabCheck].getPlugin("trimRows")
+                    .trimmedRows;
+                let dataLength = this.pageSizeArr[this.tabCheck];
+                let dataArr = new Array();
+                for (let i = 0; i < dataLength; i++) {
+                    dataArr.push(i);
+                }
+                if (plugin.length <= 0) {
+                    dataArr = undefined;
+                } else {
+                    dataArr = this.array_diff(dataArr, plugin);
+                }
+                this.filtersArr[this.tabCheck] = dataArr;
+                return dataArr || [];
+                // var DataArray = new Array();
+                // for (var i = 0; i < plugin.length; i++) {
+                //     // 通过行号获取数据
+                //     DataArray.push(this.myHotObj[this.tabCheck].getSourceDataAtRow(plugin[i]));
+                // }
+            },
+            //去除数组中相同的元素
+            array_diff(a, b) {
+                for (var i = 0; i < b.length; i++) {
+                    for (var j = 0; j < a.length; j++) {
+                        if (a[j] == b[i]) {
+                            a.splice(j, 1);
+                            j = j - 1;
+                        }
+                    }
+                }
+                return a;
+            },
+        }
+    };
+</script>
+
+<style lang="less" scoped>
+    #app {
+        min-width: 1098px;
+        min-height: 767px;
+        position: relative;
+        overflow-x: auto;
+    }
+    #build_assets {
+        height: 100%;
+        width: 100%;
+        overflow: hidden;
+        position: relative;
+        #assets0,
+        #assets1,
+        #assets2 {
+            height: 45rem;
+            overflow-y: auto;
+        }
+        .select_header {
+            font-size: 0.8rem;
+            height: 3rem;
+            width: 100%;
+            min-width: 1098px;
+            line-height: 3rem;
+            background-color: #eee;
+            border-bottom: 1px solid #000;
+            padding-left: 0.5rem;
+            position: absolute;
+            top: 0;
+            box-sizing: border-box;
+        }
+        .main {
+            width: 100%;
+            position: absolute;
+            top: 3.5rem;
+            bottom: 0;
+            overflow: hidden;
+            .left_main {
+                height: 100%;
+                box-sizing: border-box;
+                float: left;
+                width: 100%;
+                position: relative;
+                .el-tabs--border-card {
+                    position: absolute;
+                    left: 0.4rem;
+                    right: 0;
+                    top: 0;
+                    bottom: 0.4rem;
+                }
+            }
+        }
+        .iframe {
+            iframe {
+                width: 760px;
+                height: 100%;
+            }
+        }
+    }
+</style>

+ 4 - 3
src/views/data_admin/buildLog/index.vue

@@ -19,13 +19,14 @@
                     range-separator='至'
                     start-placeholder='开始日期'
                     end-placeholder='结束日期'
+                    
                     :picker-options='pickerOptions'
                     @change='dateChange'
                     value-format='yyyy-MM-dd'
                 ></el-date-picker>
-                <el-button type='primary' @click='action'>动作说明</el-button>
-                <el-button type='primary' @click='refresh'>刷新</el-button>
-                <el-button type='primary' @click='downExcel'>导出到Excel</el-button>
+                <el-button @click='action'>&nbsp;动作说明&nbsp;</el-button>
+                <el-button @click='refresh'>&nbsp;&nbsp;&nbsp;刷新&nbsp;&nbsp;&nbsp;</el-button>
+                <el-button @click='downExcel'>导出到Excel</el-button>
             </div>
             <el-table
                 slot='table'

+ 2 - 2
src/views/data_admin/buildUser/index.vue

@@ -9,8 +9,8 @@
                     placeholder='姓名、联系电话、登录名、备注'
                     @change='searchChange'
                 ></el-input>
-                <el-button type='primary' @click='refresh'>刷新</el-button>
-                <el-button type='primary' @click='addUser'>添加人员</el-button>
+                <el-button @click='refresh' style="margin-left: 10px;">&nbsp;&nbsp;&nbsp;刷新&nbsp;&nbsp;&nbsp;</el-button>
+                <el-button  @click='addUser'>添加人员</el-button>
                 <el-button type='danger' @click='someDel'>批量删除</el-button>
             </div>
             <el-table