3 Commits eefb76c05f ... d8ca7cd672

Author SHA1 Message Date
  onlyh d8ca7cd672 adm:feat> 修改bug 3 years ago
  onlyh 4ddb33b2be Merge remote-tracking branch 'origin/master' 3 years ago
  onlyh c05493e2a0 adm:feat> 修改关系相关需求与bug 3 years ago

+ 4 - 4
public/systemConf.js

@@ -6,10 +6,10 @@
 
 var __systemConf = {
     // 平面图跳转地址
-    planJumpUrl: "http://192.168.64.18:9989/persagyPlan/home",
-    // planJumpUrl: "http://192.168.0.72:9989/persagyPlan/home",
+    // planJumpUrl: "http://192.168.64.18:9989/persagyPlan/home",
+    planJumpUrl: "http://192.168.0.72:9989/persagyPlan/home",
     // 拓扑图跳转地址
-    topoJumpUrl: "http://192.168.64.18:9989/persagyTopo/home",
-    // topoJumpUrl: "http://192.168.0.72:9989/persagyTopo/home",
+    // topoJumpUrl: "http://192.168.64.18:9989/persagyTopo/home",
+    topoJumpUrl: "http://192.168.0.72:9989/persagyTopo/home",
 }
 window.__systemConf = __systemConf

+ 1 - 0
src/components/public/adm-multi-table.vue

@@ -54,6 +54,7 @@ export default class extends Vue {
 
     @Emit("handleCurrentEdit")
     handleEdit(index: number, row: any) {
+        console.log(row)
         return row;
     }
 

+ 3 - 0
src/layout/index.vue

@@ -97,6 +97,9 @@ export default class extends mixins(ResizeMixin) {
 .hideSidebar {
     .main-container {
         margin-left: 54px;
+        width: calc(100% - 54px);
+        //margin-left: $sideBarWidth;
+        //width: calc(100% - 235px);
     }
 
     .sidebar-container {

+ 10 - 5
src/views/maintain/device/index.vue

@@ -184,6 +184,10 @@ export default class extends Vue {
         return this.deviceType[this.deviceType.length - 1]
     }
 
+    get deviceValEnd() {
+        return this.deviceVal[this.deviceVal.length - 1]
+    }
+
     created() {
         this.deviceList();
         this.dataCount()
@@ -205,6 +209,7 @@ export default class extends Vue {
     }
 
     handleChangeDevice() {
+
         if (this.deviceTypeEnd) {
             this.loading = true
             let param = {
@@ -219,7 +224,7 @@ export default class extends Vue {
                 cascade: [{"name": "floor",}, {"name": "objectInfo"}]
             }
             if (this.inputSearch != '') {
-                param2.filters += `;codeName contain '${this.inputSearch}' or systemCategory contain '${this.inputSearch}' or bimTypeId contain '${this.inputSearch}' or localId contain '${this.inputSearch}'`
+                param2.filters += `;aliasName contain '${this.inputSearch}' or systemCategory contain '${this.inputSearch}' or bimTypeId contain '${this.inputSearch}' or localId contain '${this.inputSearch}'`
             }
             let promise = new Promise(resolve => {
                 dictInfo(param).then((res: []) => {
@@ -248,11 +253,11 @@ export default class extends Vue {
     }
 
     async handleNext() {
-        if (this.deviceVal[2]) {
+        if (this.deviceValEnd) {
             this.next = false
             this.isWidth = true
             let param = {
-                category: this.deviceVal[2]
+                category: this.deviceValEnd
             }
             await dictInfo(param).then(res => {
                 const basicInfos = [{path: 'bimTypeName', aliasName: '构件分类名称', category: "STATIC", editable: true},
@@ -477,7 +482,7 @@ export default class extends Vue {
             //更新
             this.handleUpdateEquip(eq);
         } else {
-            eq.classCode = this.deviceVal[2]
+            eq.classCode = this.deviceValEnd
             // 创建
             this.handleCreateEquip(eq);
         }
@@ -522,7 +527,7 @@ export default class extends Vue {
             //更新
             this.handleUpdateEquip(this.curEquip);
         } else {
-            this.curEquip.classCode = this.deviceVal[2]
+            this.curEquip.classCode = this.deviceValEnd
             // 创建
             this.handleCreateEquip(this.curEquip);
         }

+ 7 - 6
src/views/maintain/relationship/components/tableHeader.ts

@@ -1,12 +1,13 @@
 const tableHeader = {
-    '设备所在建筑': [['建筑', 'objectInfo-localName'], ['BIM构件名称', 'bimTypeId'], ['系统分类', 'systemCategory'], ['设备类型名称', 'codeName'], ['设备本地编码', "localId"]],
-    '设备所在楼层': [['建筑', 'objectInfo-buildingName'], ['楼层', 'objectInfo-localName'], ['BIM构件名称', 'bimTypeId'], ['系统分类', 'systemCategory'], ['设备类型名称', 'codeName'], ['设备本地编码', "localId"]],
-    '设备所在功能空间': [['空间本地名称', "objectInfo-localName"], ['空间本地编码', "objectInfo-localId"], ['建筑', 'objectInfo-buildingName'], ['楼层', 'objectInfo-floorName'], ['BIM构件名称', 'bimTypeId'], ['系统分类', 'systemCategory'], ['设备类型名称', 'codeName'], ['设备本地编码', "localId"]],
-    '设备服务功能空间': [['空间本地名称', "objectInfo-localName"], ['空间本地编码', "objectInfo-localId"], ['建筑', 'objectInfo-buildingName'], ['楼层', 'objectInfo-floorName'], ['BIM构件名称', 'bimTypeId'], ['系统分类', 'systemCategory'], ['设备类型名称', 'codeName'], ['设备本地编码', "localId"]],
-    '设备所在供电空间': [['空间本地名称', "objectInfo-localName"], ['空间本地编码', "objectInfo-localId"], ['建筑', 'objectInfo-buildingName'], ['楼层', 'objectInfo-floorName'], ['BIM构件名称', 'bimTypeId'], ['系统分类', 'systemCategory'], ['设备类型名称', 'codeName'], ['设备本地编码', "localId"]],
+    '设备所在建筑': [['建筑', 'objectInfo-localName', '817'], ['BIM构件名称', 'bimTypeId'], ['系统分类', 'systemCategory'], ['设备类型名称', 'aliasName'], ['设备本地编码', "localId"]],
+    '设备所在楼层': [['建筑', 'objectInfo-buildingName', '407'], ['楼层', 'objectInfo-localName', '407'], ['BIM构件名称', 'bimTypeId'], ['系统分类', 'systemCategory'], ['设备类型名称', 'aliasName'], ['设备本地编码', "localId"]],
+    '设备所在功能空间': [['空间本地名称', "objectInfo-localName"], ['空间本地编码', "objectInfo-localId"], ['建筑', 'objectInfo-buildingName'], ['楼层', 'objectInfo-floorName'], ['BIM构件名称', 'bimTypeId'], ['系统分类', 'systemCategory'], ['设备类型名称', 'aliasName'], ['设备本地编码', "localId"]],
+    // '设备服务功能空间': [['空间本地名称', "objectInfo-localName"], ['空间本地编码', "objectInfo-localId"], ['建筑', 'objectInfo-buildingName'], ['楼层', 'objectInfo-floorName'], ['BIM构件名称', 'bimTypeId'], ['系统分类', 'systemCategory'], ['设备类型名称', 'aliasName'], ['设备本地编码', "localId"]],
+    '设备服务功能空间': [['BIM构件名称', 'bimTypeId'], ['系统分类', 'systemCategory'], ['设备类型名称', 'aliasName'], ['设备本地编码', "localId"],['空间本地名称', "objectInfo-localName"], ['空间本地编码', "objectInfo-localId"], ['建筑', 'objectInfo-buildingName'], ['楼层', 'objectInfo-floorName'],],
+    '设备所在供电空间': [['空间本地名称', "objectInfo-localName"], ['空间本地编码', "objectInfo-localId"], ['建筑', 'objectInfo-buildingName'], ['楼层', 'objectInfo-floorName'], ['BIM构件名称', 'bimTypeId'], ['系统分类', 'systemCategory'], ['设备类型名称', 'aliasName'], ['设备本地编码', "localId"]],
     '空间所在建筑': [['建筑', 'localName'], ['空间本地名称', "objectInfo-localName"], ['空间本地编码', "objectInfo-localId"], ['楼层', 'objectInfo-floorName']],
     '空间所在楼层': [['建筑', 'buildingName'], ['楼层', 'localName'], ['空间本地名称', "objectInfo-localName"], ['空间本地编码', "objectInfo-localId"]],
     '空间服务空间': [['空间本地名称', "localName"], ['空间本地编码', "localId"], ['建筑', 'buildingName'], ['楼层', 'floorName'], ['空间本地名称', "objectInfo-localName"], ['空间本地编码', "objectInfo-localId"], ['楼层', 'objectInfo-floorName']],
-    '系统下的设备': [['系统分类', 'systemCategory'], ['系统名称', 'localName'], ['系统编码', 'localId'], ['BIM构件名称', 'objectInfo-bimTypeId'], ['系统分类', 'objectInfo-systemCategory'], ['设备类型名称', 'objectInfo-codeName'], ['设备本地编码', "objectInfo-localId"]],
+    '系统下的设备': [['系统分类', 'systemCategory'], ['系统名称', 'localName'], ['系统编码', 'localId'], ['BIM构件名称', 'objectInfo-bimTypeId'], ['系统分类', 'objectInfo-systemCategory'], ['设备类型名称', 'objectInfo-aliasName'], ['设备本地编码', "objectInfo-localId"]],
 }
 export default tableHeader

+ 108 - 103
src/views/maintain/relationship/relation/components/table.vue

@@ -1,121 +1,126 @@
 <template>
-  <el-table
-    :data="tableData"
-    :span-method="objectSpanMethod"
-    :header-cell-style="{
-      background: '#e1e4e5',
-      color: '#2b2b2b',
-      lineHeight: '30px',
-    }"
-    v-loading="loading"
-    class="table"
-    style="width: 100%"
-    :height="height ? height : '100%'"
-  >
-    <el-table-column
-      v-for="(item, index) in tableHeader"
-      :key="index"
-      :prop="item[1]"
-      :label="item[0]"
-      align="left"
+    <el-table
+        :data="tableData"
+        :span-method="objectSpanMethod"
+        :header-cell-style="{
+              background: '#e1e4e5',
+              color: '#2b2b2b',
+              lineHeight: '30px'
+             }"
+        v-loading="loading"
+        class="table"
+        style="width: 100%"
+        :height="height ? height : '100'"
     >
-      <template slot-scope="scope">
-        {{
-          (item[1].includes("objectInfo") && scope.row.objectInfo
-            ? scope.row.objectInfo[0][item[1].split("-")[1]]
-            : scope.row[item[1]]) || "--"
-        }}
-      </template>
-    </el-table-column>
-    <el-table-column label="操作" align="left">
-      <template slot-scope="scope">
-        <div v-if="scope.row.moreMsg" class="scope-better">
-          <el-button type="text" @click="openMoreRelation(scope.row)"
-            >...更多主从关系</el-button
-          >
-        </div>
-        <el-button
-          v-else
-          slot="reference"
-          size="mini"
-          icon="el-icon-delete"
-          @click="deleteObject(scope.$index, scope.row)"
-        />
-      </template>
-    </el-table-column>
-  </el-table>
+        <el-table-column
+            v-for="(item, index) in tableHeader"
+            :key="index"
+            :prop="item[1]"
+            :label="item[0]"
+            align="left"
+            :width="item[2]"
+        >
+            <template slot-scope="scope">
+                {{
+                    (item[1].includes("objectInfo") && scope.row.objectInfo
+                        ? scope.row.objectInfo[0][item[1].split("-")[1]]
+                        : scope.row[item[1]]) || "--"
+                }}
+            </template>
+        </el-table-column>
+        <el-table-column label="操作" align="left">
+            <template slot-scope="scope">
+                <div v-if="scope.row.moreMsg" class="scope-better">
+                    <el-button type="text" @click="openMoreRelation(scope.row)"
+                    >...更多主从关系
+                    </el-button
+                    >
+                </div>
+                <el-button
+                    v-else
+                    slot="reference"
+                    size="mini"
+                    icon="el-icon-delete"
+                    @click="deleteObject(scope.$index, scope.row)"
+                />
+            </template>
+        </el-table-column>
+    </el-table>
 </template>
 
 <script lang="ts">
-import { relDel } from "@/api/datacenter";
-import { Component, Prop, Vue } from "vue-property-decorator";
+import {relDel} from "@/api/datacenter";
+import {Component, Prop, Vue} from "vue-property-decorator";
+
 @Component({
-  name: "relation-table",
+    name: "relation-table",
 })
 export default class extends Vue {
-  @Prop({ default: Array }) tableHeader?: [];
-  @Prop({ default: Array }) tableData?: [];
-  @Prop({ default: String || Number }) height?: "";
-  @Prop({ default: Boolean }) loading?: false;
-  //  删除
-  deleteObject(index: number, val: any) {
-    const data = {
-      relType: this.$route.query.relationType,
-      graphicType: this.$route.query.graphicType,
-      fromId: val.id, //主对象id
-      toId: val.objectInfo[0].id, //从对象id
-    };
-    relDel(data).then((res) => {
-      if (res.result == "success") {
-        this.$message.success("删除成功!");
-        this.$emit("updata"); //删除
-      } else {
-        this.$message.error("删除失败!");
-      }
-    });
-  }
+    @Prop({default: Array}) tableHeader?: [];
+    @Prop({default: Array}) tableData?: [];
+    @Prop({default: String || Number}) height?: "";
+    @Prop({default: Boolean}) loading?: false;
 
-  objectSpanMethod({ row, column, rowIndex, columnIndex }: any) {
-    if (columnIndex === 0) {
-      if (row.rowspan && row.rowspan > 1) {
-        return {
-          rowspan: row.rowspan,
-          colspan: 1,
-        };
-      } else {
-        return {
-          rowspan: row.firstSpan ? 0 : 1,
-          colspan: row.firstSpan ? 0 : 1,
+    //  删除
+    deleteObject(index: number, val: any) {
+        const data = {
+            relType: this.$route.query.relationType,
+            graphicType: this.$route.query.graphicType,
+            fromId: val.id, //主对象id
+            toId: val.objectInfo[0].id, //从对象id
         };
-      }
+        relDel(data).then((res) => {
+            if (res.result == "success") {
+                this.$message.success("删除成功!");
+                this.$emit("updata"); //删除
+            } else {
+                this.$message.error("删除失败!");
+            }
+        });
     }
-    if (row.moreMsg) {
-      // 如果为打开更多按钮则合并
-      if (columnIndex === 4) {
-        return [1, 4];
-      } else if (columnIndex < 4 && columnIndex > 0) {
-        return [0, 0];
-      }
+
+    objectSpanMethod({row, column, rowIndex, columnIndex}: any) {
+        if (columnIndex === 0) {
+            if (row.rowspan && row.rowspan > 1) {
+                return {
+                    rowspan: row.rowspan,
+                    colspan: 1,
+                };
+            } else {
+                return {
+                    rowspan: row.firstSpan ? 0 : 1,
+                    colspan: row.firstSpan ? 0 : 1,
+                };
+            }
+        }
+        if (row.moreMsg) {
+            // 如果为打开更多按钮则合并
+            if (columnIndex === 4) {
+                return [1, 4];
+            } else if (columnIndex < 4 && columnIndex > 0) {
+                return [0, 0];
+            }
+        }
+    }
+
+    /**
+     * 获取更多主从关系
+     *
+     * @param obj 中从相关数据
+     */
+    openMoreRelation(obj: any): void {
+        this.$emit("openMoreRelation", obj);
     }
-  }
-  /**
-   * 获取更多主从关系
-   *
-   * @param obj 中从相关数据
-   */
-  openMoreRelation(obj: any): void {
-    this.$emit("openMoreRelation", obj);
-  }
 }
 </script>
 
-<style  scoped>
+<style scoped>
 .scope-better {
-  /* width: 100%;
-  height: 100%;
-  display: flex;
-  justify-content: center;
-  align-items: left */
-  margin: 0 auto;
+    /* width: 100%;
+    height: 100%;
+    display: flex;
+    justify-content: center;
+    align-items: left */
+    margin: 0 auto;
 }
 </style>

+ 401 - 401
src/views/maintain/relationship/relation/index.vue

@@ -1,456 +1,456 @@
 <template>
-  <div class="relation">
-    <div class="header">
-      <el-button class="el-icon-back" @click="goBack"></el-button>
-      <el-button type="primary" @click="addRelation">添加关系</el-button>
-      <el-button style="float: right" @click="updataExecl">上传Excel</el-button>
+    <div class="relation">
+        <div class="header">
+            <el-button class="el-icon-back" @click="goBack"></el-button>
+            <el-button type="primary" @click="addRelation">添加关系</el-button>
+            <el-button style="float: right" @click="updataExecl">上传Excel</el-button>
+        </div>
+        <el-row class="content">
+            <el-col :span="12" class="object">
+                <p>主对象</p>
+                <span v-if="relTypeStatus == 1 || relTypeStatus == 3">类型:</span>
+                <el-select
+                    :clearable="true"
+                    v-if="relTypeStatus == 1 || relTypeStatus == 3"
+                    v-model="categoryFrom"
+                    placeholder="请选择"
+                    @change="mainSelect"
+                    style="margin-right: 10px"
+                >
+                    <el-option
+                        v-for="item in mainOptions"
+                        :key="item.classCode"
+                        :label="item.className"
+                        :value="item.classCode"
+                    >
+                    </el-option>
+                </el-select>
+                <AdmSearch @SearchValue="mainSerch"/>
+            </el-col>
+            <el-col :span="12" class="object">
+                <p>从对象</p>
+                <span v-if="relTypeStatus == 2 || relTypeStatus == 3">类型:</span>
+                <el-select
+                    v-if="relTypeStatus == 2 || relTypeStatus == 3"
+                    v-model="categoryTo"
+                    :clearable="true"
+                    placeholder="请选择"
+                    style="margin-right: 10px"
+                >
+                    <el-option
+                        v-for="item in minorOptions"
+                        :key="item.classCode"
+                        :label="item.className"
+                        :value="item.classCode"
+                    >
+                    </el-option>
+                </el-select>
+                <AdmSearch @SearchValue="minorSearch"/>
+            </el-col>
+        </el-row>
+        <relationTable
+            v-if="tableHeight"
+            @updata="addRelationSucess(0)"
+            @openMoreRelation="openMoreRelation"
+            :tableHeader="tableHeader"
+            :tableData="tableData"
+            :height="tableHeight"
+            :loading="loading"
+        />
+        <!-- 分页 -->
+        <div class="pagination">
+            <el-pagination
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+                :current-page="page.currentPage"
+                :page-sizes="[10, 15, 20, 30]"
+                :page-size="page.pageSize"
+                layout="total, sizes, prev, pager, next, jumper"
+                :total="page.total"
+            >
+            </el-pagination>
+        </div>
+        <addRelationDialog
+            @closeAddRelation="addRelationValue = false"
+            @update="addRelationSucess(1)"
+            :addRelationValue="addRelationValue"
+            :values="values"
+        />
+        <excelDialog :values="values" ref="excelDialog"></excelDialog>
+        <editRelationDialog :values="values"></editRelationDialog>
+        <moreRelationDialog
+            :allRelation="allRelation"
+            :tableHeader="tableHeaderTo"
+            @update="addRelationSucess(0)"
+            ref="moreRelation"
+        ></moreRelationDialog>
     </div>
-    <el-row class="content">
-      <el-col :span="12" class="object">
-        <p>主对象</p>
-        <span v-if="relTypeStatus == 1 || relTypeStatus == 3">类型:</span>
-        <el-select
-          :clearable="true"
-          v-if="relTypeStatus == 1 || relTypeStatus == 3"
-          v-model="categoryFrom"
-          placeholder="请选择"
-          @change="mainSelect"
-          style="margin-right: 10px"
-        >
-          <el-option
-            v-for="item in mainOptions"
-            :key="item.classCode"
-            :label="item.className"
-            :value="item.classCode"
-          >
-          </el-option>
-        </el-select>
-        <AdmSearch @SearchValue="mainSerch" />
-      </el-col>
-      <el-col :span="12" class="object">
-        <p>从对象</p>
-        <span v-if="relTypeStatus == 2 || relTypeStatus == 3">类型:</span>
-        <el-select
-          v-if="relTypeStatus == 2 || relTypeStatus == 3"
-          v-model="categoryTo"
-          :clearable="true"
-          placeholder="请选择"
-          style="margin-right: 10px"
-        >
-          <el-option
-            v-for="item in minorOptions"
-            :key="item.classCode"
-            :label="item.className"
-            :value="item.classCode"
-          >
-          </el-option>
-        </el-select>
-        <AdmSearch @SearchValue="minorSearch" />
-      </el-col>
-    </el-row>
-    <relationTable
-      v-if="tableHeight"
-      @updata="addRelationSucess(0)"
-      @openMoreRelation="openMoreRelation"
-      :tableHeader="tableHeader"
-      :tableData="tableData"
-      :height="tableHeight"
-      :loading="loading"
-    />
-    <!-- 分页 -->
-    <div class="pagination">
-      <el-pagination
-        @size-change="handleSizeChange"
-        @current-change="handleCurrentChange"
-        :current-page="page.currentPage"
-        :page-sizes="[10, 15, 20, 30]"
-        :page-size="page.pageSize"
-        layout="total, sizes, prev, pager, next, jumper"
-        :total="page.total"
-      >
-      </el-pagination>
-    </div>
-    <addRelationDialog
-      @closeAddRelation="addRelationValue = false"
-      @update="addRelationSucess(1)"
-      :addRelationValue="addRelationValue"
-      :values="values"
-    />
-    <excelDialog :values="values" ref="excelDialog"></excelDialog>
-    <editRelationDialog :values="values"></editRelationDialog>
-    <moreRelationDialog
-      :allRelation="allRelation"
-      :tableHeader="tableHeaderTo"
-       @update="addRelationSucess(0)"
-      ref="moreRelation"
-    ></moreRelationDialog>
-  </div>
 </template>
 
 <script lang="ts">
-import { Component, Vue } from "vue-property-decorator";
-import { AdmSearch } from "./../../components";
+import {Component, Vue} from "vue-property-decorator";
+import {AdmSearch} from "./../../components";
 import relationTable from "./components/table.vue";
 import tableHeader from "@/views/maintain/relationship/components/tableHeader";
 import addRelationDialog from "./components/addRelationDialog.vue";
 import editRelationDialog from "./components/editRelationDialog.vue";
 import excelDialog from "./components/excelDialog.vue";
-import { relToType, relManualQuery, relDel } from "@/api/datacenter";
-import { ElSelect } from "element-ui/types/select";
+import {relToType, relManualQuery, relDel} from "@/api/datacenter";
+import {ElSelect} from "element-ui/types/select";
 import moreRelationDialog from "./components/moreRelationDialog.vue";
 
 @Component({
-  name: "relation",
-  components: {
-    AdmSearch,
-    relationTable,
-    addRelationDialog,
-    excelDialog,
-    editRelationDialog,
-    moreRelationDialog,
-  },
+    name: "relation",
+    components: {
+        AdmSearch,
+        relationTable,
+        addRelationDialog,
+        excelDialog,
+        editRelationDialog,
+        moreRelationDialog,
+    },
 })
 export default class extends Vue {
-  categoryFrom = ""; //主关系
-  mainOptions = []; //主关系选项
-  categoryTo = ""; //次关系
-  minorOptions = []; //次关系选项
-  vagueFrom = ""; //主关系模糊收索
-  vagueTo = ""; //次关系模糊收索
-  allRelation: any[] = []; //所有更多从关系
-  //表头数据
-  tableHeader = [];
-  //从数据表头数据
-  tableHeaderTo =[];
-  //表格数据
-  tableData = [];
-  // 是否添加关系
-  addRelationValue: Boolean = false;
-  // 传入tip需要得字段
-  values: object = {
-    relation_maintenance: "关系维护",
-    optionTips: `请下载最新最新<${this.$route.query.relationTypeName}>数据进行手动维护`, //请下载最新最新 xxxx 数据进行手动维护
-    currentNum: "当前关系数量:",
-    download: "下载模板(含数据)",
-    lastTime: `最后更新时间为:${this.$route.query.lastUpdate || ""}`, //最后更新时间为
-    uploadTxt: "将Excel文件拖到此处,或<em>单击上传Excel文件<em>",
-    uploadTips: "上传的Excel数据将完全覆盖当前关系表(关系表先前数据不会保留)",
-    downloadFile: " 下载报告文件",
-    back: "返回",
-    done: "完成",
-    addShip: "添加关系",
-    editShip: "编辑关系",
-    codeTip: "请填写主被控设备对象识别编码",
-    deviceTip: "请填写主被控设备对象设备号",
-    codeTitle: "识别编码对应:",
-    mainObject: "主对象:",
-    affiliatedObject: "从对象:",
-    pleaseEnter: "请输入",
-    pleaseEnterCode: "请输入识别编码",
-    add: "添加",
-    cancel: "取消",
-    delete: "删除关系",
-  };
-  relTypeStatus: any = 0; //关系相关类型主从 0 None 1主 2从 3主从
-
-  page: object = {
-    total: 0, //总数
-    currentPage: 1, //当前页
-    pageSize: 15, //当前页数量
-  };
-  tableHeight: number = 0; //table高
-  loading: Boolean = false; //是否显示loadding
-  /////////////////////////////////////////
-  // 方法
-
-  /**
-   * 返回页面上一级
-   */
-  goBack() {
-    this.$router.go(-1);
-  }
+    categoryFrom = ""; //主关系
+    mainOptions = []; //主关系选项
+    categoryTo = ""; //次关系
+    minorOptions = []; //次关系选项
+    vagueFrom = ""; //主关系模糊收索
+    vagueTo = ""; //次关系模糊收索
+    allRelation: any[] = []; //所有更多从关系
+    //表头数据
+    tableHeader = [];
+    //从数据表头数据
+    tableHeaderTo = [];
+    //表格数据
+    tableData = [];
+    // 是否添加关系
+    addRelationValue: Boolean = false;
+    // 传入tip需要得字段
+    values: object = {
+        relation_maintenance: "关系维护",
+        optionTips: `请下载最新最新<${this.$route.query.relationTypeName}>数据进行手动维护`, //请下载最新最新 xxxx 数据进行手动维护
+        currentNum: "当前关系数量:",
+        download: "下载模板(含数据)",
+        lastTime: `最后更新时间为:${this.$route.query.lastUpdate || ""}`, //最后更新时间为
+        uploadTxt: "将Excel文件拖到此处,或<em>单击上传Excel文件<em>",
+        uploadTips: "上传的Excel数据将完全覆盖当前关系表(关系表先前数据不会保留)",
+        downloadFile: " 下载报告文件",
+        back: "返回",
+        done: "完成",
+        addShip: "添加关系",
+        editShip: "编辑关系",
+        codeTip: "请填写主被控设备对象识别编码",
+        deviceTip: "请填写主被控设备对象设备号",
+        codeTitle: "识别编码对应:",
+        mainObject: "主对象:",
+        affiliatedObject: "从对象:",
+        pleaseEnter: "请输入",
+        pleaseEnterCode: "请输入识别编码",
+        add: "添加",
+        cancel: "取消",
+        delete: "删除关系",
+    };
+    relTypeStatus: any = 0; //关系相关类型主从 0 None 1主 2从 3主从
 
-  /**
-   * 更多关系
-   *
-   */
-  openMoreRelation(obj: any) {
-    this.allRelation = obj;
-    this.$refs.moreRelation.dialogTableVisible = true;
-  }
+    page: object = {
+        total: 0, //总数
+        currentPage: 1, //当前页
+        pageSize: 15, //当前页数量
+    };
+    tableHeight: number = 0; //table高
+    loading: Boolean = false; //是否显示loadding
+    /////////////////////////////////////////
+    // 方法
 
-  /**
-   * 上传 execl
-   */
-  updataExecl() {
-    this.$refs.excelDialog.dialogExport = true;
-  }
+    /**
+     * 返回页面上一级
+     */
+    goBack() {
+        this.$router.go(-1);
+    }
 
-  /**
-   * 分页数量切换
-   */
+    /**
+     * 更多关系
+     *
+     */
+    openMoreRelation(obj: any) {
+        this.allRelation = obj;
+        this.$refs.moreRelation.dialogTableVisible = true;
+    }
 
-  handleSizeChange(val: any) {
-    Object.assign(this.page, {
-      pageSize: val,
-    });
-    this.relManualQuery();
-  }
+    /**
+     * 上传 execl
+     */
+    updataExecl() {
+        this.$refs.excelDialog.dialogExport = true;
+    }
 
-  /**
-   * 分页切换
-   */
-  handleCurrentChange(val: any) {
-    Object.assign(this.page, {
-      currentPage: val,
-    });
-    this.relManualQuery();
-  }
+    /**
+     * 分页数量切换
+     */
 
-  /**
-   * 主关系下拉框选择
-   */
-  mainSelect(val: any) {
-    this.categoryFrom = val;
-    this.page.currentPage = 1; //初始化页面
-    this.relManualQuery();
-  }
+    handleSizeChange(val: any) {
+        Object.assign(this.page, {
+            pageSize: val,
+        });
+        this.relManualQuery();
+    }
 
-  /**
-   * 从关系下拉框选择
-   */
-  minorSelect(val: any) {
-    this.categoryTo = val;
-    this.page.currentPage = 1; //初始化页面
-    this.relManualQuery();
-  }
+    /**
+     * 分页切换
+     */
+    handleCurrentChange(val: any) {
+        Object.assign(this.page, {
+            currentPage: val,
+        });
+        this.relManualQuery();
+    }
 
-  // 主关系模糊搜索
-  mainSerch(val: string) {
-    this.vagueFrom = val;
-    this.page.currentPage = 1; //初始化页面
-    this.relManualQuery();
-  }
+    /**
+     * 主关系下拉框选择
+     */
+    mainSelect(val: any) {
+        this.categoryFrom = val;
+        this.page.currentPage = 1; //初始化页面
+        this.relManualQuery();
+    }
 
-  // 从关系模糊搜索
-  minorSearch(val: string) {
-    this.vagueTo = val;
-    this.page.currentPage = 1; //初始化页面
-    this.relManualQuery();
-  }
+    /**
+     * 从关系下拉框选择
+     */
+    minorSelect(val: any) {
+        this.categoryTo = val;
+        this.page.currentPage = 1; //初始化页面
+        this.relManualQuery();
+    }
 
-  /**
-   * 添加关系
-   */
-  addRelation() {
-    this.addRelationValue = true;
-  }
+    // 主关系模糊搜索
+    mainSerch(val: string) {
+        this.vagueFrom = val;
+        this.page.currentPage = 1; //初始化页面
+        this.relManualQuery();
+    }
 
-  /**
-   * 添加关系成功后
-   */
-  addRelationSucess(initPage:number) {
-    if (initPage) {
-      this.page.currentPage = 1; //初始化页面
+    // 从关系模糊搜索
+    minorSearch(val: string) {
+        this.vagueTo = val;
+        this.page.currentPage = 1; //初始化页面
+        this.relManualQuery();
     }
-    this.relManualQuery();
-    this.relToType(); //重新f获取关系对象
-  }
 
-  /**
-   * 获取主对象从对象关系
-   */
-  relToType() {
-    const urlData = this.$route.query;
-    if (this.relTypeStatus == 0) {
-      this.mainObject = ""; //主关系
-      this.mainOptions = []; //主关系选项
-      this.minorObject = ""; //次关系
-      this.minorOptions = []; //次关系选项
-      return;
+    /**
+     * 添加关系
+     */
+    addRelation() {
+        this.addRelationValue = true;
     }
-    // 获取主关系接口
-    if (this.relTypeStatus == 1 || this.relTypeStatus == 3) {
-      const data = {
-        zoneType: urlData.zoneType ? urlData.zoneType : "",
-        graphCode: urlData.graphicType,
-        type: urlData.relationType,
-        relType: urlData.relationType,
-        status: 1, // 1 为主关系;2 为从关系
-      };
-      relToType(data).then((res) => {
-        this.mainObject = ""; //主关系
-        this.mainOptions = this.dataReduce(res.content);
-      });
+
+    /**
+     * 添加关系成功后
+     */
+    addRelationSucess(initPage: number) {
+        if (initPage) {
+            this.page.currentPage = 1; //初始化页面
+        }
+        this.relManualQuery();
+        this.relToType(); //重新f获取关系对象
     }
 
-    // 获取从关系接口
-    if (this.relTypeStatus == 2 || this.relTypeStatus == 3) {
-      const data = {
-        zoneType: urlData.zoneType ? urlData.zoneType : "",
-        graphCode: urlData.graphicType,
-        type: urlData.relationType,
-        relType: urlData.relationType,
-        status: 2, // 1 为主关系;2 为从关系
-      };
-      relToType(data).then((res) => {
-        this.minorObject = ""; //次关系
-        this.minorOptions = this.dataReduce(res.content); //次关系选项
-      });
+    /**
+     * 获取主对象从对象关系
+     */
+    relToType() {
+        const urlData = this.$route.query;
+        if (this.relTypeStatus == 0) {
+            this.mainObject = ""; //主关系
+            this.mainOptions = []; //主关系选项
+            this.minorObject = ""; //次关系
+            this.minorOptions = []; //次关系选项
+            return;
+        }
+        // 获取主关系接口
+        if (this.relTypeStatus == 1 || this.relTypeStatus == 3) {
+            const data = {
+                zoneType: urlData.zoneType ? urlData.zoneType : "",
+                graphCode: urlData.graphicType,
+                type: urlData.relationType,
+                relType: urlData.relationType,
+                status: 1, // 1 为主关系;2 为从关系
+            };
+            relToType(data).then((res) => {
+                this.mainObject = ""; //主关系
+                this.mainOptions = this.dataReduce(res.content);
+            });
+        }
+
+        // 获取从关系接口
+        if (this.relTypeStatus == 2 || this.relTypeStatus == 3) {
+            const data = {
+                zoneType: urlData.zoneType ? urlData.zoneType : "",
+                graphCode: urlData.graphicType,
+                type: urlData.relationType,
+                relType: urlData.relationType,
+                status: 2, // 1 为主关系;2 为从关系
+            };
+            relToType(data).then((res) => {
+                this.minorObject = ""; //次关系
+                this.minorOptions = this.dataReduce(res.content); //次关系选项
+            });
+        }
     }
-  }
 
-  //下拉框数据去重
-  dataReduce(arr: []): [] {
-    let obj = {},
-      setArr = [];
-    setArr = arr.reduce((item, next) => {
-      obj[next.classCode]
-        ? ""
-        : (obj[next.classCode] = true && item.push(next));
-      return item;
-    }, []);
-    return setArr;
-  }
+    //下拉框数据去重
+    dataReduce(arr: []): [] {
+        let obj = {},
+            setArr = [];
+        setArr = arr.reduce((item, next) => {
+            obj[next.classCode]
+                ? ""
+                : (obj[next.classCode] = true && item.push(next));
+            return item;
+        }, []);
+        return setArr;
+    }
 
-  /**
-   * 获取table列表
-   */
-  relManualQuery() {
-    this.loading = true;
-    // 获取table数据
-    const objectType = this.vagueTo.length && this.vagueFrom.length ? 3 : this.vagueTo.length ? 2 :1;
-    const data = {
-      projectId: this.$route.query.projectId,
-      categoryFrom: this.categoryFrom,
-      categoryTo: this.categoryTo,
-      vagueTo: this.vagueTo, //从关系
-      vagueFrom: this.vagueFrom, //主关系
-      objectType: objectType,
-      relType: this.$route.query.relationType,
-      pageSize: this.page.pageSize,
-      pageNumber: this.page.currentPage,
-      graphicType: this.$route.query.graphicType,
-      zoneType: this.$route.query.zoneType ? this.$route.query.zoneType : "",
-    };
-    relManualQuery(data)
-      .then((res) => {
-        this.eachResData(res.content);
-        // this.tableData = res.content;
-        this.page.total = res.total;
-        this.loading = false;
-      })
-      .catch((error) => {
-        this.loading = false;
-      });
-  }
+    /**
+     * 获取table列表
+     */
+    relManualQuery() {
+        this.loading = true;
+        // 获取table数据
+        const objectType = this.vagueTo.length && this.vagueFrom.length ? 3 : this.vagueTo.length ? 2 : 1;
+        const data = {
+            projectId: this.$route.query.projectId,
+            categoryFrom: this.categoryFrom,
+            categoryTo: this.categoryTo,
+            vagueTo: this.vagueTo, //从关系
+            vagueFrom: this.vagueFrom, //主关系
+            objectType: objectType,
+            relType: this.$route.query.relationType,
+            pageSize: this.page.pageSize,
+            pageNumber: this.page.currentPage,
+            graphicType: this.$route.query.graphicType,
+            zoneType: this.$route.query.zoneType ? this.$route.query.zoneType : "",
+        };
+        relManualQuery(data)
+            .then((res) => {
+                this.eachResData(res.content);
+                // this.tableData = res.content;
+                this.page.total = res.total;
+                this.loading = false;
+            })
+            .catch((error) => {
+                this.loading = false;
+            });
+    }
 
-  /**
-   * 重新拼装数组
-   */
-  eachResData(list: []) {
-    if (list.length) {
-      let newList: any[] = [];
-      list.forEach((item: any) => {
-        //  从对象为多个则新曾对象
-        if (item.objectInfo && item.objectInfo.length >= 2) {
-          // 只展示最多展示9个合并
-          let objList: any = [];
-          // 取9个
-          if (item.objectInfo.length >= 9) {
-            objList = [...item.objectInfo.slice(0, 9)];
-          } else {
-            objList = item.objectInfo.slice(0, 9);
-          }
-          const objInfo = JSON.parse(JSON.stringify(objList));
-          const rowspan = (objInfo.length >= 9) ? 10 :objInfo.length;
-          objInfo.forEach((objItem: any, index: number) => {
-            const newItem = JSON.parse(JSON.stringify(item));
-            Object.assign(newItem, {
-              objectInfo: [objItem],
-              rowspan: index == 0 ? rowspan : 0,
-              firstSpan: true, //首行是否合并
+    /**
+     * 重新拼装数组
+     */
+    eachResData(list: []) {
+        if (list.length) {
+            let newList: any[] = [];
+            list.forEach((item: any) => {
+                //  从对象为多个则新曾对象
+                if (item.objectInfo && item.objectInfo.length >= 2) {
+                    // 只展示最多展示9个合并
+                    let objList: any = [];
+                    // 取9个
+                    if (item.objectInfo.length >= 9) {
+                        objList = [...item.objectInfo.slice(0, 9)];
+                    } else {
+                        objList = item.objectInfo.slice(0, 9);
+                    }
+                    const objInfo = JSON.parse(JSON.stringify(objList));
+                    const rowspan = (objInfo.length >= 9) ? 10 : objInfo.length;
+                    objInfo.forEach((objItem: any, index: number) => {
+                        const newItem = JSON.parse(JSON.stringify(item));
+                        Object.assign(newItem, {
+                            objectInfo: [objItem],
+                            rowspan: index == 0 ? rowspan : 0,
+                            firstSpan: true, //首行是否合并
+                        });
+                        newList.push(newItem);
+                    });
+                    // 如果从关系大于10个则需要添加打开弹窗按钮
+                    if (item.objectInfo.length > 9) {
+                        newList.push(
+                            Object.assign(item, {
+                                moreMsg: true,
+                                firstSpan: true, //首行是否合并
+                            })
+                        );
+                    }
+                } else {
+                    Object.assign(item, {
+                        rowspan: 1,
+                        firstSpan: false,
+                    });
+                    newList.push(item);
+                }
             });
-            newList.push(newItem);
-          });
-          // 如果从关系大于10个则需要添加打开弹窗按钮
-          if (item.objectInfo.length > 9) {
-            newList.push(
-              Object.assign(item, {
-                moreMsg: true,
-                firstSpan: true, //首行是否合并
-              })
-            );
-          }
+            this.tableData = newList;
         } else {
-          Object.assign(item, {
-            rowspan: 1,
-            firstSpan: false,
-          });
-          newList.push(item);
+            this.tableData = [];
         }
-      });
-      this.tableData = newList;
-    } else {
-      this.tableData = [];
     }
-  }
 
-  created() {
-    let relationTypeName = this.$route.query.relationTypeName;
-    this.tableHeader = tableHeader[relationTypeName];
-    tableHeader[relationTypeName].forEach((item:any)=>{
+    created() {
+        let relationTypeName = this.$route.query.relationTypeName;
+        this.tableHeader = tableHeader[relationTypeName];
+        tableHeader[relationTypeName].forEach((item: any) => {
 
-      if(item[1].includes('objectInfo')){
-        this.tableHeaderTo.push(item)
-      }
+            if (item[1].includes('objectInfo')) {
+                this.tableHeaderTo.push(item)
+            }
 
-    })                                       //从关系
-    this.relTypeStatus = this.$route.query.relTypeStatus;
-    // 获取主从对象下拉框数据
-    this.relToType();
-    // 获取table列表
-    this.relManualQuery();
-  }
+        })                                       //从关系
+        this.relTypeStatus = this.$route.query.relTypeStatus;
+        // 获取主从对象下拉框数据
+        this.relToType();
+        // 获取table列表
+        this.relManualQuery();
+    }
 
-  mounted() {
-    //计算table的高度
-    let allHeight =
-      document.getElementsByClassName("relation")[0].offsetHeight - 57; //57是Head的高
-    let contentHeight = document.getElementsByClassName("content")[0]
-      .offsetHeight;
-    this.tableHeight = allHeight - contentHeight - 47;
-  }
+    mounted() {
+        //计算table的高度
+        let allHeight =
+            document.getElementsByClassName("relation")[0].offsetHeight - 57; //57是Head的高
+        let contentHeight = document.getElementsByClassName("content")[0]
+            .offsetHeight;
+        this.tableHeight = allHeight - contentHeight - 47;
+    }
 }
 </script>
 
 <style scoped lang="scss">
 .relation {
-  background: #ffffff;
-  height: 100%;
+    background: #ffffff;
+    height: 100%;
 
-  .header {
-    padding: 12px;
-    overflow: hidden;
-    border-bottom: 1px solid #e1e7ea;
-  }
+    .header {
+        padding: 12px;
+        overflow: hidden;
+        border-bottom: 1px solid #e1e7ea;
+    }
 
-  .content {
-    padding: 12px;
+    .content {
+        padding: 12px;
 
-    .object {
-      p {
-        border-left: 7px solid #555555;
-        text-indent: 10px;
-        margin-bottom: 10px;
-      }
+        .object {
+            p {
+                border-left: 7px solid #555555;
+                text-indent: 10px;
+                margin-bottom: 10px;
+            }
+        }
     }
-  }
 
-  .pagination {
-    margin-top: 12px;
-    margin-right: 24px;
-    float: right;
-  }
+    .pagination {
+        margin-top: 12px;
+        margin-right: 24px;
+        float: right;
+    }
 }
 </style>

+ 4 - 4
src/views/maintain/space/index.vue

@@ -117,8 +117,8 @@ export default class spaceIndex extends Vue {
     activeName = "table";
     building = ["all"];
 
-    zoneTypeVal = ["FunctionZone"];
-    zoneTypeValue = ["FunctionZone"];
+    zoneTypeVal = ["GeneralZone"];
+    zoneTypeValue = ["GeneralZone"];
     // 分页
     private paginationList = {
         page: 1,
@@ -130,7 +130,7 @@ export default class spaceIndex extends Vue {
     graphOptions = [];
     zoneTypeOption = [
         {
-            value: "FunctionZone",
+            value: "GeneralZone",
             label: "功能空间",
         },
         {
@@ -435,7 +435,7 @@ export default class spaceIndex extends Vue {
                 let basicInfos = [],
                     dictStages = [];
                 this.all = res[0].content;
-                if (this.zoneTypeValue[0] != "FunctionZone") {
+                if (this.zoneTypeValue[0] != "GeneralZone") {
                     // todo 列表只展示 分区 / 包含的功能空间
                     const currentZone = this.$refs['cascaderZone'].getCheckedNodes()[0].label
 

+ 16 - 11
src/views/project/components/AddProjectDialog/index.vue

@@ -12,8 +12,9 @@
                     <el-input v-model="form.localName" placeholder="请输入项目名称" autocomplete="off"></el-input>
                 </el-form-item>
                 <el-form-item label="">
-                    <el-upload class="avatar-uploader" accept="image/*" action="#" :show-file-list="false" :http-request="uploadImg">
-                        <img v-if="form.picInfo.key" :src="form.picInfo.key | getImage" class="avatar" />
+                    <el-upload class="avatar-uploader" accept="image/*" action="#" :show-file-list="false"
+                               :http-request="uploadImg">
+                        <img v-if="form.picInfo.key" :src="form.picInfo.key | getImage" class="avatar"/>
                         <i v-else class="el-icon-plus avatar-uploader-icon"></i>
                     </el-upload>
                 </el-form-item>
@@ -26,11 +27,11 @@
     </div>
 </template>
 <script lang="ts">
-import { Vue, Component, Prop, Emit, Watch, Ref } from "vue-property-decorator";
+import {Vue, Component, Prop, Emit, Watch, Ref} from "vue-property-decorator";
 import tools from "@/utils/maintain";
-import { imageUploadUrl, imageGetUrl } from "@/api/imageservice";
-import { projectCreate, projectUpdate } from "@/api/datacenter";
-import { ElForm } from "element-ui/types/form";
+import {imageUploadUrl, imageGetUrl} from "@/api/imageservice";
+import {projectCreate, projectUpdate} from "@/api/datacenter";
+import {ElForm} from "element-ui/types/form";
 
 @Component({
     name: "AddProjectDialog",
@@ -62,7 +63,7 @@ export default class extends Vue {
         picInfo: {},
     };
     private rules: any = {
-        localName: [{ required: true, message: "请输入项目名称", trigger: "blur" }],
+        localName: [{required: true, message: "请输入项目名称", trigger: "blur"}],
     };
 
     /**
@@ -128,7 +129,7 @@ export default class extends Vue {
         for (let i = 0; i < binary.length; i++) {
             array.push(binary.charCodeAt(i));
         }
-        return new Blob([new Uint8Array(array)], { type: type });
+        return new Blob([new Uint8Array(array)], {type: type});
     }
 
     /**
@@ -148,7 +149,7 @@ export default class extends Vue {
                             projPic: [this.form.picInfo],
                         };
                     }
-                    const res = await projectCreate({content:[params]});
+                    const res = await projectCreate({content: [params]});
                     if (res.result === "success") {
                         this.handleClose();
                         this.$emit("update:projectList");
@@ -167,7 +168,7 @@ export default class extends Vue {
                             projPic: [this.form.picInfo],
                         };
                     }
-                    const res = await projectUpdate({content:[params]});
+                    const res = await projectUpdate({content: [params]});
                     if (res.result === "success") {
                         this.$emit("update:projectList");
                         this.handleClose();
@@ -195,6 +196,7 @@ export default class extends Vue {
 <style lang="scss" scoped>
 ::v-deep .el-dialog__body {
     padding: 30px 120px;
+
     .avatar-uploader .el-upload {
         border: 1px dashed #d9d9d9;
         border-radius: 6px;
@@ -202,9 +204,11 @@ export default class extends Vue {
         position: relative;
         overflow: hidden;
     }
+
     .avatar-uploader .el-upload:hover {
         border-color: #409eff;
     }
+
     .avatar-uploader-icon {
         font-size: 28px;
         color: #8c939d;
@@ -213,10 +217,11 @@ export default class extends Vue {
         line-height: 120px;
         text-align: center;
     }
+
     .avatar {
         width: 120px;
         height: 120px;
         display: block;
     }
 }
-</style>
+</style>

+ 2 - 2
src/views/scene/tiepoint/components/equipTab/index.vue

@@ -161,7 +161,7 @@ export default class EquipTab extends Vue {
                 projectId: this.projectId,
             };
             if (this.keyWord != "") {
-                param2.filters += `;codeName contain '${ this.keyWord }' or systemCategory contain '${ this.keyWord }' or bimTypeId contain '${ this.keyWord }' or localId contain '${ this.keyWord }'`;
+                param2.filters += `;aliasName contain '${ this.keyWord }' or systemCategory contain '${ this.keyWord }' or bimTypeId contain '${ this.keyWord }' or localId contain '${ this.keyWord }'`;
             }
             let promise = new Promise((resolve) => {
                 dictInfo(param).then((res: any) => {
@@ -202,7 +202,7 @@ export default class EquipTab extends Vue {
                 projectId: this.projectId,
             };
             if (this.keyWord != "") {
-                params.filters += `;codeName contain '${ this.keyWord }' or systemCategory contain '${ this.keyWord }' or bimTypeId contain '${ this.keyWord }' or localId contain '${ this.keyWord }'`;
+                params.filters += `;aliasName contain '${ this.keyWord }' or systemCategory contain '${ this.keyWord }' or bimTypeId contain '${ this.keyWord }' or localId contain '${ this.keyWord }'`;
             }
             const res = await queryEquip(params);
             if (res.result === "success") {

+ 2 - 2
src/views/scene/tiepoint/components/systemTab/index.vue

@@ -95,8 +95,8 @@ export default class SystemTab extends Vue {
     private systemOptions: any[] = [];
     // 下拉框映射
     private optionProps: any = {
-        value: "code",
-        label: "name",
+        value: "aliasCode",
+        label: "aliasName",
         children: "children",
     };
     // 表格数据加载loading