管道基础大数据平台系统开发-【前端】-新系統界面
Surpriseplus
2023-03-03 985b26624b69ad91b9e3a723c19bd4bbf1a36250
空间查询列表细化,工点表添加挂接信息界面
已修改7个文件
534 ■■■■■ 文件已修改
src/assets/css/configure.css 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/lang/en.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/lang/zh.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/MapView/mapMenuTop.vue 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/MapView/mapSpacePop.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Archive/index.vue 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/SpatialData.vue 305 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/css/configure.css
@@ -365,16 +365,32 @@
}
/*el-table边框*/
.el-table{
.el-table {
    border-left: none !important;
    border-right: none !important;
}
.el-table td {
    border-right: none !important;
}
.el-table th.is-leaf {
    border-right: none !important;
}
.el-table--group::after, .el-table--border::after{
.el-table--group::after,
.el-table--border::after {
    width: 0 !important;
}
.el-table {
    width: 100%;
    display: flex;
    flex-direction: column;
}
.el-table .el-table__body-wrapper {
    flex: 1;
}
src/assets/lang/en.js
@@ -49,7 +49,8 @@
    pleaseInputPassworld: 'Please input a password',
    passworld: 'Passworld',
    language: "中文",
    title: 'Title'
    title: 'Title',
    attribute: 'Attribute',
  },
  dataManage: {
src/assets/lang/zh.js
@@ -49,7 +49,8 @@
    pleaseInputPassworld: '请输入密码',
    passworld: '密码',
    language: "English",
    title: '标题'
    title: '标题',
    attribute: '属性',
  },
  dataManage: {
    dataManage: '数据管理',
src/components/MapView/mapMenuTop.vue
@@ -1,6 +1,10 @@
<template>
  <div class="menuBox">
    <el-form :inline="true" :model="menuTopFrom" class="demo-form-inline">
    <el-form
      :inline="true"
      :model="menuTopFrom"
      class="demo-form-inline"
    >
      <el-form-item>
        <el-select
          v-model="menuTopFrom.queryLayer"
@@ -8,7 +12,10 @@
          placeholder="请选择..."
          :popper-append-to-body="false"
        >
          <el-option :value="menuTopFrom.queryLayer" style="height: 100%">
          <el-option
            :value="menuTopFrom.queryLayer"
            style="height: 100%"
          >
            <div style="height: 200px; overflow: auto">
              <el-tree
                :data="layerData"
@@ -22,16 +29,17 @@
              </el-tree>
            </div>
            <div style="margin-top: 5px">
              <el-button size="small" plain @click="getCheckedNodes"
                >确认</el-button
              >
              <el-button
                size="small"
                plain
                @click="getCheckedNodes"
              >确认</el-button>
              <el-button
                size="small"
                type="info"
                plain
                @click="resetCheckedNodes"
                >重置</el-button
              >
              >重置</el-button>
            </div>
          </el-option>
        </el-select>
@@ -70,12 +78,17 @@
      </el-form-item>
      <el-form-item>
        <el-button plain size="small" @click="getAttributeQuery"
          >查询</el-button
        >
        <el-button type="info" size="small" @click="clearQuery" plain
          >重置</el-button
        >
        <el-button
          plain
          size="small"
          @click="getAttributeQuery"
        >查询</el-button>
        <el-button
          type="info"
          size="small"
          @click="clearQuery"
          plain
        >重置</el-button>
      </el-form-item>
      <!-- <el-form-item>
        <el-button
@@ -104,7 +117,10 @@
      width="25%"
      @opened="dialogOpend"
    >
      <el-form :model="menuTopFrom" label-width="150px">
      <el-form
        :model="menuTopFrom"
        label-width="150px"
      >
        <el-form-item label="管道中心线">
          <el-select
            @change="changeSelect2"
@@ -144,9 +160,15 @@
          ></el-input-number>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
      <div
        slot="footer"
        class="dialog-footer"
      >
        <el-button @click="dialogFormVisible = false">取 消</el-button>
        <el-button type="primary" @click="changeBufferData">确 定</el-button>
        <el-button
          type="primary"
          @click="changeBufferData"
        >确 定</el-button>
      </div>
    </el-dialog>
  </div>
@@ -178,20 +200,20 @@
      },
      treeChange: [],
      layerData: [
        {
          id: 1,
          label: "基础数据",
          tabDesc: "基础数据",
          value: "BD",
          children: [],
        },
        {
          id: 2,
          label: "业务数据",
          tabDesc: "业务数据",
          value: "BS",
          children: [],
        },
        // {
        //   id: 1,
        //   label: "基础数据",
        //   tabDesc: "基础数据",
        //   value: "BD",
        //   children: [],
        // },
        // {
        //   id: 2,
        //   label: "业务数据",
        //   tabDesc: "业务数据",
        //   value: "BS",
        //   children: [],
        // },
      ],
      queryOption: [
@@ -272,21 +294,50 @@
      if (data.code != 200) {
        this.$message.error("列表调用失败")
      }
      var option = data.result.filter(res => {
      var val = data.result.filter(res => {
        if (res.rows != 0) {
          return res
        }
      })
      for (var i in option) {
        var val_Data = option[i]
        val_Data.id = "1" + i
        val_Data.label = val_Data.tabDesc
        if (option[i].ns == "bd") {
          this.layerData[0].children.push(val_Data)
        } else {
          this.layerData[1].children.push(val_Data)
      var std = [];
      val.filter((item) => {
        if (std.indexOf(item.bak) == -1) {
          std.push(item.bak);
          this.layerData.push(
            {
              val: item.bak,
              label: item.tabDesc,
              children: [],
            }
          )
        }
      }
      });
      this.layerData.filter((item) => {
        val.filter((res) => {
          if (item.val === res.bak) {
            res.label = res.tabDesc
            item.children.push(res)
          }
        })
      })
      // for (var i in option) {
      //   var val_Data = option[i]
      //   val_Data.id = "1" + i
      //   val_Data.label = val_Data.tabDesc
      //   if (option[i].ns == "bd") {
      //     this.layerData[0].children.push(val_Data)
      //   } else {
      //     this.layerData[1].children.push(val_Data)
      //   }
      // }
    },
    //获取选择树的节点
    getCheckedNodes() {
src/components/MapView/mapSpacePop.vue
@@ -383,7 +383,7 @@
          this.$store.state.primitLayer = null;
        }
        var wkt = this.$wkt.parse(val1);
        this.setMapLoaction(wkt,row);
        this.setMapLoaction(wkt, row);
      }
    },
    handleSizeChange(val) {
@@ -394,7 +394,7 @@
      this.listdata.pageIndex = val;
      this.getSpaceTableLayer();
    },
    setMapLoaction(res,properties) {
    setMapLoaction(res, properties) {
      if (this.$store.state.primitLayer != null) {
        sgworld.Creator.DeleteObject(this.$store.state.primitLayer);
        // this.$store.state.primitLayer = null;
@@ -409,8 +409,8 @@
        );
        this.$store.state.primitLayer = Viewer.entities.add({
          properties:properties,
          tag : "properties_point",
          properties: properties,
          tag: "properties_point",
          position: val,
          billboard: {
            // 图像地址,URI或Canvas的属性
@@ -433,11 +433,11 @@
        sgworld.Navigate.flyToObj(this.$store.state.primitLayer)
        window.propertieshandler = new Cesium.ScreenSpaceEventHandler(
            sgworld.Viewer.scene.canvas
          sgworld.Viewer.scene.canvas
        );
        window.propertieshandler.setInputAction(event => {
          let pick = sgworld.Viewer.scene.pick(event.position);
          // debugger;
          // ;
          if (pick && pick.id && pick.id.tag == "properties_point") {
            this.$store.state.propertiesFlag = '1';
            let properties = pick.id.properties;
@@ -445,7 +445,7 @@
            let obj = {};
            this.attributeData.forEach(item => {
              propertyNames.forEach(itemElement => {
                if (itemElement == item.field){
                if (itemElement == item.field) {
                  obj[item.alias] = properties[itemElement]._value
                }
              })
src/views/Archive/index.vue
@@ -54,7 +54,7 @@
          >
            <el-option
              v-for="item in categoryOptions"
              :key="item.value"
              :key="item.key"
              :label="item.value"
              :value="item.key"
            >
@@ -551,6 +551,7 @@
            >
              <template slot-scope="scope">
                <el-link
                  v-if="matchState(scope, /[]/)"
                  @click="setAttatchDetail(scope.$index, scope.row)"
                  class="elLink"
                >{{ $t('common.see') }}</el-link>
@@ -1207,6 +1208,15 @@
    this.signGetPublicKey();
  },
  methods: {
    matchState(state = "", reg) {
      var row = state.row;
      var name = row.name;
      if (name.indexOf('.pdf') != -1 || name.indexOf('.jpg') != -1 || name.indexOf('.gif') != -1 || name.indexOf('.png') != -1 || name.indexOf('.jpeg') != -1) {
        return true;
      }
      return false;
    },
    // 附件=>表格选择
    handleAttatchChange(val) {
      this.attacgSelection = val;
@@ -1967,14 +1977,19 @@
        return;
      }
      var val = data.result;
      val = val.filter((res) => {
      if (val) {
        val = val.filter((res) => {
          res.mold = "数据库"
          res.isShow = false
          return res;
        })
        this.listData.count = data.count;
        this.monthdata = data.result;
      } else {
        this.listData.count = 0;
        this.monthdata = [];
      }
        res.mold = "数据库"
        res.isShow = false
        return res;
      })
      this.listData.count = data.count;
      this.monthdata = data.result;
    },
    //查询文件数据
    async getQueryFileData() {
@@ -1996,16 +2011,22 @@
        this.$message.error('文件数据列表调用失败');
      }
      var val = data.result;
      val = val.filter((res) => {
        var type = "." + res.type;
        res.name = res.name.replaceAll(type, "")
        res.mold = "文件"
        res.isShow = false
        return res;
      })
      if (val) {
        val = val.filter((res) => {
          var type = "." + res.type;
          res.name = res.name.replaceAll(type, "")
          res.mold = "文件"
          res.isShow = false
          return res;
        })
      this.monthdata = val;
      this.listData.count = data.count;
        this.monthdata = val;
        this.listData.count = data.count;
      } else {
        this.monthdata = [];
        this.listData.count = 0;
      }
    },
    //查询数据
    getAllTabesData() {
@@ -2035,6 +2056,7 @@
      if (data.code != 200) {
        this.$message.error('资料类别列表调用失败');
      }
      this.categoryOptions = data.result;
    },
    //关键字查询
@@ -2050,7 +2072,9 @@
    },
    //资料类别下拉框值改变触发
    categorySelectChange(model, prop, options) {
      this.getAllTabesData();
    },
    // 项目名称下拉框值改变触发
    itemSelectChange(model, prop, options) {
src/views/datamanage/SpatialData.vue
@@ -112,7 +112,7 @@
        <div class="dividing-line"></div>
        <div
          class="table_box"
          style="height:calc(100% - 130px)"
          style="height:calc(100% - 130px); "
        >
          <!--          border-->
          <!--          ref="filterTable"-->
@@ -125,7 +125,7 @@
            :data="tableData"
            style="width: 100% ;"
            border
            height="100% "
            height="100%"
          >
            <el-table-column
              type="selection"
@@ -148,7 +148,7 @@
              align="center"
            ></el-table-column>
            <el-table-column
              min-width="180"
              min-width="240"
              :label="$t('common.operate')"
            >
              <template slot-scope="scope">
@@ -162,8 +162,14 @@
                  plain
                  size="small"
                  @click="getAttachTable(scope.$index, scope.row)"
                  style="margin-left: 20px;  "
                >{{$t('common.enclosure')}}</el-button>
                <el-button
                  plain
                  size="small"
                  type="info"
                  v-if="matchState1(scope, /[]/)"
                  @click="getAttributeTable(scope.$index, scope.row)"
                >{{$t('common.attribute')}}</el-button>
              </template>
            </el-table-column>
          </el-table>
@@ -227,7 +233,7 @@
      :title="$t('common.attachinform')"
      :visible.sync="dialogFormVisible"
    >
      <div style="height: 500px; overflow: auto">
      <div style="height:68vh">
        <el-form
          :model="formInline"
          class="demo-form-inline"
@@ -274,57 +280,49 @@
              <!-- <el-col :span="3">  <el-link  class="elLink" :underline="false" >{{$t('common.reset')}}</i></el-link></el-col> -->
            </el-row>
          </el-form-item>
          <el-form-item>
            <el-table
              :data="tableAttach"
              ref="filterTable"
              height="calc(100% - 100px)"
              border
              style="width: 100%"
              @selection-change="handleAttatchChange"
            >
              <el-table-column
                type="selection"
                width="55"
              />
              <el-table-column
                width="60"
                type="index"
                :label="$t('common.index')"
              />
              <el-table-column
                prop="date"
                :label="$t('common.fileNme')"
              />
              <el-table-column
                prop="name"
                :label="$t('common.filePath')"
              />
            </el-table>
          </el-form-item>
          <!-- <el-form-item>
          <el-row :gutter="20">
            <el-col
              :span="12"
              :offset="8"
            >
              <el-button
                type="primary"
                size="small"
                @click="dialogFormVisible = false"
              >确认</el-button>
              <el-button
                type="info"
                size="small"
                @click="dialogFormVisible = false"
              >取消</el-button>
            </el-col>
          </el-row>
        </el-form-item> -->
        </el-form>
        <el-table
          :data="tableAttach"
          ref="filterTable"
          height="calc(100% - 130px)"
          border
          style="width: 100%"
          @selection-change="handleAttatchChange"
        >
          <el-table-column
            type="selection"
            width="70"
          />
          <el-table-column
            width="60"
            type="index"
            :label="$t('common.index')"
          />
          <el-table-column
            prop="name"
            :label="$t('common.fileNme')"
          />
          <el-table-column
            prop="sizes"
            :label="$t('common.size')"
            :formatter="statSizeChange"
          />
          <el-table-column
            align="center"
            :label="$t('common.operate')"
            min-width="100"
          >
            <template slot-scope="scope">
              <el-link
                v-if="matchState(scope, /[]/)"
                @click="setAttatchDetail(scope.$index, scope.row)"
                class="elLink"
              >{{ $t('common.see') }}</el-link>
            </template>
          </el-table-column>
        </el-table>
      </div>
    </el-dialog>
    <el-dialog
@@ -413,6 +411,45 @@
        <map-sdk v-if='showMapVisible'></map-sdk>
      </div>
    </el-dialog>
    <el-dialog
      title="预览"
      :append-to-body="false"
      :visible.sync="dialog.dialogVisible"
      width="70%"
      :close-on-click-modal="false"
    >
      <div
        v-if="dialog.isPdf"
        class="pdfClass"
      >
        <iframe
          :src="dialog.src"
          type="application/x-google-chrome-pdf"
          width="100%"
          height="100%"
        >
        </iframe>
      </div>
      <div
        v-if="dialog.isJpg"
        class="pdfClass"
      >
        <img
          style="width:100%; height:100%"
          :src="dialog.src"
          alt=""
        />
      </div>
    </el-dialog>
    <el-dialog
      :title="attribute.name"
      :append-to-body="false"
      :visible.sync="AttributedialogVisible"
      width="70%"
      :close-on-click-modal="false"
    >
    </el-dialog>
  </div>
</template>
@@ -461,30 +498,6 @@
      },
      fromSqlflag: false,
      tree: [
        {
          tabDesc: "基础数据",
          label: "基础数据",
          value: "BD",
          ns: "bd",
          id: 1,
          children: [],
        },
        {
          id: 2,
          tabDesc: "业务数据",
          label: "业务数据",
          value: "BS",
          ns: "bs",
          children: [],
        },
        {
          id: 3,
          tabDesc: "元数据",
          label: "元数据",
          value: "MD",
          ns: "md",
          children: [],
        },
      ],
      tableAttach: [],
      filedsOption: [],
@@ -549,6 +562,19 @@
        eventid: null,
      },
      filterText: "",
      dialog: {
        dialogVisible: false,
        isPdf: false,
        isJpg: false,
        src: ''
      },
      AttributedialogVisible: false,
      attribute: {
        name: null,
        pageIndex: 1,
        pageSize: 10,
        count: 0,
      }
    };
  },
  created() {
@@ -564,6 +590,30 @@
  },
  methods: {
    getAttributeTable(idnex, row) {
      this.attribute.name = row.workname;
      this.AttributedialogVisible = true;
    },
    matchState1(state = "", reg) {
      var row = state.row;
      if (
        this.listData.name == "ssurveyworksite"
      ) {
        return true;
      }
      return false;
    },
    statSizeChange(row, column) {
      return this.stateFormatSizes(row.sizes)
    },
    stateFormatSizes(res) {
      if (res >= 1024) {
        const val = parseFloat(res / 1024).toFixed(3);
        return val + ' GB';
      } else {
        return res + ' MB';
      }
    },
    filterNode(value, data) {
      if (!value) return true;
      return data.label.indexOf(value) !== -1;
@@ -593,6 +643,45 @@
      this.$store.state.mapPopBoolean = false;
      this.$store.state.mapPopBoxFlag = null;
    },
    refreshAttatchDetail() {
      this.dialog.src = "";
      this.dialog.dialogVisible = false;
      this.dialog.isPdf = false;
      this.dialog.isJpg = false;
    },
    //附件查看
    setAttatchDetail(index, row) {
      this.refreshAttatchDetail()
      var name = row.name;
      if (name.indexOf('.pdf') != -1) {
        this.dialog.dialogVisible = true;
        this.dialog.isPdf = true;
        var url = BASE_URL + "/res/downloadForView?guid=" + row.guid + "&token=" + getToken();
        this.dialog.src = url
      } else if (name.indexOf('.jpg') != -1 || name.indexOf('.gif') != -1 || name.indexOf('.png') != -1 || name.indexOf('.jpeg') != -1) {
        this.dialog.dialogVisible = true;
        this.dialog.isJpg = true;
        var url = BASE_URL + "/res/downloadForView?guid=" + row.guid + "&token=" + getToken();
        this.dialog.src = url
      }
    },
    matchState(state = "", reg) {
      var row = state.row;
      var name = row.name;
      if (name) {
        if (name.indexOf('.pdf') != -1 || name.indexOf('.jpg') != -1 || name.indexOf('.gif') != -1 || name.indexOf('.png') != -1 || name.indexOf('.jpeg') != -1) {
          return true;
        }
      }
      return false;
    },
    async setAttachDel() {
      var std = [];
      for (var i in this.attacgSelection) {
@@ -689,26 +778,43 @@
      if (data.code != 200) {
        this.$message.error("列表调用失败");
      }
      var option = data.result;
      var val = data.result;
      for (var i in option) {
        var val_Data = option[i];
        val_Data.id = "1" + i;
        // val_Data.label = val_Data.tabDesc + "(" + val_Data.tab + ")"
        val_Data.label = val_Data.tabDesc;
        option[i].id = parseInt(option[i].id);
        for (var j in this.tree) {
          if (this.tree[j].ns == option[i].ns) {
            this.tree[j].children.push(val_Data);
          }
      // for (var i in option) {
      //   var val_Data = option[i];
      //   val_Data.id = "1" + i;
      //   // val_Data.label = val_Data.tabDesc + "(" + val_Data.tab + ")"
      //   val_Data.label = val_Data.tabDesc;
      //   option[i].id = parseInt(option[i].id);
      //   for (var j in this.tree) {
      //     if (this.tree[j].ns == option[i].ns) {
      //       this.tree[j].children.push(val_Data);
      //     }
      //   }
      // }
      var std = [];
      val.filter((item) => {
        if (std.indexOf(item.bak) == -1) {
          std.push(item.bak);
          this.tree.push(
            {
              val: item.bak,
              label: item.tabDesc,
              children: [],
            }
          )
        }
        // if (option[i].ns == 'bd') {
      });
        //   this.tree[0].children.push(val_Data);
        // } else {
        //   this.tree[1].children.push(val_Data);
        // }
      }
      this.tree.filter((item) => {
        val.filter((res) => {
          if (item.val === res.bak) {
            res.label = res.tabDesc
            item.children.push(res)
          }
        })
      })
      this.handleNodeClick(this.tree[0].children[0]);
    },
    //授权管理
@@ -725,10 +831,12 @@
    handleNodeClick(data) {
      //判断点击是否为子节点
      if (data.children != null) return;
      this.listData.name = data.entity; //要查询表格类型;
      this.getClickTable = data;
      this.listData.pageIndex = 1;
      this.listData.pageSize = 10;
      this.count = 0;
      this.upAttach.tabName = data.ns + "." + data.tab;
      this.filedsLayer = this.getCollapseDomFiled(); //获取每个表字段名称及阈值
@@ -1205,6 +1313,11 @@
      border: 1px solid #dcdfe6;
    }
  }
  .pdfClass {
    height: 70vh;
    width: 100%;
    position: relative;
  }
}
.table_box2 {