管道基础大数据平台系统开发-【前端】-新系統界面
Surpriseplus
2023-06-29 f30dbe373cc0d4296a71b545811f0a0ad92e4cec
src/views/datamanage/SpatialData.vue
@@ -6,14 +6,22 @@
      ]"></My-bread>
    <el-divider />
    <div class="spatialContent ">
      <div class="spatial_leftTree subpage_Div">
        <el-input v-model="filterText"></el-input>
        <div style="width:300px">
      <div
        class="spatial_leftTree subpage_Div "
        style="border: 1px solid #dcdfe6;"
      >
        <el-input
          size="small"
          v-model="filterText"
          style="width:220px;"
          :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuedataName')"
          suffix-icon="el-icon-search"
        ></el-input>
        <div style="width:300px">
          <el-tree
            :data="tree"
            :props="defaultProps"
            :default-expanded-keys="[1]"
            node-key="id"
            :current-node-key="10"
            @node-click="handleNodeClick"
@@ -22,303 +30,307 @@
          ></el-tree>
        </div>
      </div>
      <div class="spatial_rightContent subpage_Div">
        <el-form
          ref="ruleForm"
          :model="ruleForm"
          :inline="true"
        >
      <div class="contentshuju">
        <div class="contentshujutou">
          <el-form
            ref="ruleForm"
            :model="ruleForm"
            :inline="true"
          >
          <el-form-item>
            <el-input
              type="textarea"
              v-model="ruleForm.fileName"
              class="nm-skin-pretty"
              show-word-limit
              :rows="2"
              resize='none'
              disabled
              style="width: 545px;"
            ></el-input>
          </el-form-item>
          <!-- <el-form-item style="float: right">
            <el-button
              v-if="btnStatus.insert"
              @click="conditionVisible = true"
              size="small"
              icon="el-icon-plus"
              type="success"
            >{{$t('common.append')}}</el-button>
          </el-form-item>
          <el-form-item style="float: right">
            <el-button
              @click="submitForm"
              type="primary"
              size="small"
              icon="el-icon-search"
            >{{$t('common.iquery')}}</el-button>
          </el-form-item>
          <el-form-item style="float: right">
            <el-button
              @click="resetForm"
              size="small"
              icon="el-icon-refresh"
              type="info"
            >{{$t('common.reset')}}</el-button>
          </el-form-item>
          <el-form-item style="float: right">
            <el-button
              @click="getSpaceMapVisibale"
              size="small"
              type="primary"
            >{{
              $t('synthesis.rangequery')
            }}</el-button>
          </el-form-item> -->
          <el-form-item style="float: right">
            <el-button
              @click="resetForm"
              size="small"
              icon="el-icon-refresh"
              type="info"
            >{{$t('common.reset')}}</el-button>
          </el-form-item>
          <el-form-item style="float: right">
            <el-button
              @click="getSpaceMapVisibale"
              size="small"
              type="primary"
            >{{
              $t('synthesis.rangequery')
            }}</el-button>
          </el-form-item>
          <el-form-item style="float: right">
            <el-button
              @click="submitForm"
              type="primary"
              size="small"
              icon="el-icon-search"
            >{{$t('common.iquery')}}</el-button>
          </el-form-item>
          <el-form-item style="float: right">
            <el-button
              v-if="btnStatus.insert"
              @click="conditionVisible = true"
              size="small"
              icon="el-icon-plus"
              type="success"
            >{{$t('common.append')}}</el-button>
          </el-form-item>
        </el-form>
        <el-divider class="eldivider" />
        <div>
            <el-form-item>
              <!-- type="textarea" disabled-->
              <el-input
                v-model="ruleForm.fileName"
                size="small"
                :rows="2"
                style="width: 300px;"
                disabled
                :placeholder="$t('shuJuGuanLi.shuJuJianSuo.label')"
              >
                <!-- <i
                  slot="suffix"
                  class="el-icon-search"
                  @click="submitForm"
                  style="padding-right: 8px"
                ></i> -->
              </el-input>
            </el-form-item>
            <el-form-item>
              <el-button
                @click="conditionVisible = true"
                size="small"
                type="success"
                icon="el-icon-plus"
              >{{$t('common.lable6')}}</el-button>
            </el-form-item>
            <el-form-item style="float: right">
              <el-button
                @click="resetForm"
                type="info"
                size="small"
                icon="el-icon-refresh"
              >{{$t('common.reset')}}</el-button>
            </el-form-item>
            <!--            <el-form-item style="float: right">
              <el-button
                  @click="submitForm"
                  type="primary"
                  size="small"
                  icon="el-icon-search"
              >{{$t('shuJuGuanLi.lable6')}}</el-button>
            </el-form-item>-->
            <!--         去掉   -->
            <!--            <el-form-item style="float: right">
              <el-button
                  v-if="btnStatus.insert"
                  @click="conditionVisible = true"
                  size="small"
                  icon="el-icon-plus"
                  type="success"
              >{{$t('common.append')}}</el-button>
            </el-form-item>-->
            <el-form-item style="float: right">
              <el-button
                @click="getSpaceMapVisibale"
                size="small"
                type="primary"
                icon="el-icon-search"
              >{{
                  $t('synthesis.rangequery')
                }}</el-button>
            </el-form-item>
          </el-form>
        </div>
        <div class="dividing-line"></div>
        <div
          class="table_box"
          style="height:calc(100% - 130px); "
        >
          <!--          border-->
          <!--          ref="filterTable"-->
          <!--          :data="tableData"-->
          <!--          style="width: 100%"-->
          <!--          height="calc(100% - 57px)"-->
          <!--          :header-cell-style="{background:'#e6eaee',color:'#181818', 'text-align': 'center'}  "-->
          <el-table
            ref="filterTable"
            ref="refTableData"
            :data="tableData"
            style="width: 100% ;"
            border
            style="width: 100% "
            @selection-change="handleSelectionChange"
            height="100%"
          >
            <el-table-column
              type="selection"
              width="55"
            />
            <el-table-column
              width="60"
              width="20"
              align="center"
              type="index"
              :label="$t('common.index')"
            />
            <!--              :label="item.alias"-->
            <el-table-column
              min-width="135"
              v-for="(item, index) in attributeData"
              :key="index"
              :label="item.alias"
              :label="$i18n.locale == 'zh' ? item.alias : item.field"
              :prop="item.field"
              show-overflow-tooltip
              align="center"
            ></el-table-column>
            <el-table-column
              min-width="120"
              min-width="240"
              :label="$t('common.operate')"
            >
              <template slot-scope="scope">
                <el-link
                  class="elLink"
                <el-button
                  type="primary"
                  plain
                  size="small"
                  @click="showDetail(scope.$index, scope.row)"
                >{{$t('common.details')}}</el-link>
                <el-link
                  class="elLink"
                >{{$t('common.details')}}</el-button>
                <el-button
                  plain
                  size="small"
                  @click="getAttachTable(scope.$index, scope.row)"
                  style="margin-left: 20px;  "
                >{{$t('common.enclosure')}}</el-link>
                >{{$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>
          <div
            style="margin-top: 20px"
            class="pagination_box"
          >
            <el-pagination
              v-if="changePag"
              @size-change="handleSizeChange"
              @current-change="handleCurrentChange"
              :current-page="this.listData.pageIndex"
              :page-sizes="[10, 20, 50, 100]"
              :page-size="this.listData.pageSize"
              layout="total, sizes, prev, pager, next, jumper"
              :total="count"
            >
            </el-pagination>
          </div>
        </div>
        <div class="pagination_box">
          <el-pagination
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :current-page="listData.pageIndex"
            :page-sizes="[10, 50, 100,200]"
            :page-size="listData.pageSize"
            layout="total, sizes, prev, pager, next, jumper"
            :total="count"
          >
          </el-pagination>
        </div>
      </div>
    </div>
    <div
      class="infoBox box_div"
      class="infoBox_box"
      v-show="showinfoBox"
    >
      <div
        slot="header"
        class="clearfix"
      >
        <span>{{$t('common.details')}}</span>
      <div class="infoBox box_div">
        <div
          style="float: right; cursor: pointer"
          @click="closeDetial"
          slot="header"
          class="clearfix"
        >
          <i class="el-icon-close"></i>
        </div>
        <el-divider></el-divider>
      </div>
      <div class="contentBox">
        <ul>
          <li v-for="(item, index) in itemdetail">
            <p>
              <label> {{ item.label }}:</label>
              <label class="boxlabel">{{ item.value }}</label>
            </p>
            <el-divider></el-divider>
          </li>
        </ul>
      </div>
          <span>{{$t('common.details')}}</span>
          <div
            style="float: right; cursor: pointer"
            @click="closeDetial"
          >
            <i class="el-icon-close"></i>
          </div>
          <el-divider></el-divider>
        </div>
        <div class="contentBox">
          <ul>
            <li v-for="(item, index) in itemdetail">
              <p>
                <label> {{ item.label }}:</label>
                <label class="boxlabel">{{ item.value }}</label>
              </p>
              <el-divider></el-divider>
            </li>
          </ul>
        </div>
      </div>
    </div>
    <el-dialog
      :title="$t('common.attachinform')"
      width="30%"
      :visible.sync="dialogFormVisible"
    >
      <el-form
        :model="formInline"
        class="demo-form-inline"
      >
        <el-form-item>
          <el-input
            v-model="formInline.file"
            style="width: 300px; margin-right: 20px"
            :placeholder="$t('common.choose')"
            disabled
          ></el-input>
          <input
            name="file1"
            type="file"
            id="insertFile"
            multiple="multiple"
            style="display: none"
            @change="insertFile( )"
      <div style="height:68vh">
        <el-form
          :model="formInline"
          class="demo-form-inline"
          label-position="top"
        >
          <el-form-item>
            <el-input
              v-model="formInline.file"
              style="width: 300px; margin-right: 20px"
              :placeholder="$t('common.choose')"
              disabled
            ></el-input>
            <input
              name="file1"
              type="file"
              id="insertFile"
              multiple="multiple"
              style="display: none"
              @change="insertFile( )"
            />
            <el-link
              @click="getInsertFile( )"
              :underline="false"
            ><i class="el-icon-folder-opened"></i></el-link>
          </el-form-item>
          <el-form-item>
            <el-row>
              <el-col :span="3">
                <el-link
                  v-if="btnStatus.insert"
                  class="elLink"
                  :underline="false"
                  @click="setAttachInsert"
                >{{$t('common.append')}}</el-link>
              </el-col>
              <el-col :span="3">
                <el-link
                  v-if="btnStatus.delete"
                  class="elLink"
                  :underline="false"
                  @click="setAttachDel"
                >{{$t('common.delete')}}</el-link>
              </el-col>
              <!-- <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>
        <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-link
            @click="getInsertFile( )"
            :underline="false"
          ><i class="el-icon-folder-opened"></i></el-link>
        </el-form-item>
        <el-form-item>
          <el-row>
            <el-col :span="3">
              <el-link
                v-if="btnStatus.insert"
                class="elLink"
                :underline="false"
                @click="setAttachInsert"
              >{{$t('common.append')}}</i></el-link>
            </el-col>
            <el-col :span="3">
              <el-link
                v-if="btnStatus.delete"
                class="elLink"
                :underline="false"
                @click="setAttachDel"
              >{{$t('common.delete')}}</i></el-link>
            </el-col>
            <!-- <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="100%"
            border
            style="width: 100%"
            @selection-change="handleAttatchChange"
          <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"
          >
            <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')"
            />
            <template slot-scope="scope">
              <el-link
                v-if="matchState(scope, /[]/)"
                @click="setAttatchDetail(scope.$index, scope.row)"
                class="elLink"
              >{{ $t('common.see') }}</el-link>
            <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>
            </template>
          </el-table-column>
        </el-table>
      </div>
    </el-dialog>
    <el-dialog
      width="37%"
      :visible.sync="conditionVisible"
      title="查询条件"
      title="高级查询"
      :before-close="handleconditionClose"
      width="44%"
    >
      <el-form
        :inline="true"
        :model="formSql"
        class="demo-form-inline"
        label-position="top"
      >
        <el-form-item>
          <el-select
            @change="fieldChange($event)"
@@ -349,7 +361,10 @@
          </el-select>
        </el-form-item>
        <el-form-item v-show="!fromSqlflag">
          <el-input v-model="formSql.value"></el-input>
          <el-input
            v-model="formSql.value"
            :placeholder="$t('shuJuGuanLi.shuJuJianSuo.queryContent')"
          ></el-input>
        </el-form-item>
        <el-form-item v-show="fromSqlflag">
          <el-date-picker
@@ -360,7 +375,9 @@
          >
          </el-date-picker>
        </el-form-item>
      </el-form>
      <span
        slot="footer"
        class="dialog-footer"
@@ -376,6 +393,7 @@
        >确 定</el-button>
      </span>
    </el-dialog>
    <el-dialog
      :title=" $t('synthesis.rangequery')"
      :visible.sync="dialogMapVisible"
@@ -387,13 +405,103 @@
        <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"
      >
        <el-image
          style="width:100%; height:100%"
          :src="dialog.src"
          :preview-src-list="[dialog.src]"
        >
        </el-image>
      </div>
    </el-dialog>
    <el-dialog
      :title="attribute.title"
      :append-to-body="false"
      :visible.sync="AttributedialogVisible"
      width="80%"
      :close-on-click-modal="false"
    >
      <div class="attributeBox">
        <div class="attrubuteLeft">
          <ul>
            <li
              v-for="item in attrbuteOption"
              :class="{active:attributeFlag === item.name}"
              @click="setChangeAttrubuteData(item)"
            >
              {{item.name}}
            </li>
          </ul>
        </div>
        <div class="attrubuteRight">
          <el-table
            ref="refAttributeTable"
            :data="attributeTable"
            style="width:100%;"
            border
            height="calc(100% - 50px)"
          >
            <el-table-column
              type="selection"
              align="center"
            />
            <el-table-column
              min-width="135"
              v-for="(item, index) in  attributeFild"
              :key="index"
              :label="item.alias"
              :prop="item.field"
              show-overflow-tooltip
              align="center"
            ></el-table-column>
          </el-table>
          <div class="pagination_box">
            <el-pagination
              @size-change="attributeSizeChange"
              @current-change="attributeCurrentChange"
              :current-page="attribute.pageIndex"
              :page-sizes="[10, 20, 50, 100]"
              :page-size="attribute.pageSize"
              layout="total, sizes, prev, pager, next, jumper"
              :total="attribute.count"
            >
            </el-pagination>
          </div>
        </div>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import MapSdk from '../../components/mapsdk.vue'
import $ from 'jquery';
import { conditions } from '../Archive/Archive.js'
import MapSdk from "../../components/mapsdk.vue";
import $ from "jquery";
import { conditions } from "../Archive/Archive.js";
import {
  dataQuery_selectTabs,
  dataQuery_selectDomains,
@@ -402,61 +510,53 @@
  dataQuery_uploadFiles,
  dataQuery_selectFiles,
  dataQuery_deletes,
} from '../../api/api';
  dataUploadSelectVerByDirid,
} from "../../api/api";
import { getToken } from "../../utils/auth.js";
import catalogueTree from '../../components/catalogueTree.vue';
import MyBread from '../../components/MyBread.vue';
import catalogueTree from "../../components/catalogueTree.vue";
import MyBread from "../../components/MyBread.vue";
import {
  getTreeData
} from "../../utils/treeData.js"
export default {
  //import引入的组件需要注入到对象中才能使用
  name: 'dataSearch',
  name: "dataSearch",
  components: { MyBread, catalogueTree, MapSdk },
  data() {
    return {
      attachtable: ['b_pac_geologic_hazard', 'b_hydrogeology', 'b_pac_meteorological', 'b_pac_marine_meteorological', 'b_pac_frozensoil', 's_borehole', 'm_marker', 'm_hydraulic_protection', 'm_equipment_nameplate'],
      attachtable: [
        "b_pac_geologic_hazard",
        "b_hydrogeology",
        "b_pac_meteorological",
        "b_pac_marine_meteorological",
        "b_pac_frozensoil",
        "s_borehole",
        "m_marker",
        "m_hydraulic_protection",
        "m_equipment_nameplate",
      ],
      formInline: {
        file: '',
        file: "",
      },
      formSql: {
        field: '',
        condition: '',
        value: '',
        type: '',
        date: '',
        field: "",
        condition: "",
        value: "",
        type: "",
        date: "",
      },
      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: [],
      condOption: [],
      defaultProps: {
        children: 'children',
        label: 'label',
        children: "children",
        label: "label",
      },
      btnStatus: {
        select: false,
@@ -468,22 +568,22 @@
      },
      tableType: null,
      ruleForm: {
        fileName: ''
        fileName: "",
      },
      FBtest: false,
      tableData: [],
      formLabelWidth: '120px',
      formLabelWidth: "120px",
      dialogFormVisible: false,
      upform: {
        gid: '',
        pipename: '',
        sitename: '',
        type: '',
        seriesname: '',
        stationvalue: '',
        transportm: '',
        diameter: '',
        name: '',
        gid: "",
        pipename: "",
        sitename: "",
        type: "",
        seriesname: "",
        stationvalue: "",
        transportm: "",
        diameter: "",
        name: "",
      },
      changePag: true,
@@ -492,7 +592,7 @@
      attributeData: [],
      currentPage: 1,
      searchName: '',
      searchName: "",
      multipleSelection: [],
      filedsLayer: null,
      count: 0,
@@ -512,8 +612,26 @@
        tabName: null,
        eventid: null,
      },
      filterText: ''
      filterText: "",
      dialog: {
        dialogVisible: false,
        isPdf: false,
        isJpg: false,
        src: ''
      },
      AttributedialogVisible: false,
      attribute: {
        name: null,
        pageIndex: 1,
        pageSize: 10,
        count: 0,
        title: null
      },
      attrbuteOption: [],
      attributeFlag: null,
      attributeTable: [],
      attributeLayer: null,
      attributeFild: null,
    };
  },
  created() {
@@ -525,10 +643,139 @@
  watch: {
    filterText(val) {
      this.$refs.tree.filter(val);
    }
    },
  },
  methods: {
    //分页点击事件
    attributeSizeChange(val) {
      this.attribute.pageSize = val;
      this.attribute.pageIndex = 1;
      //获取table信息
      this.setAttributeTableData(this.attributeLayer);
    },
    attributeCurrentChange(val) {
      this.attribute.pageIndex = val;
      //获取table信息
      this.setAttributeTableData(this.attributeLayer);
    },
    getAttributeTable(idnex, row) {
      this.attribute.title = row.workname;
      this.attrbuteOption = workSite;
      this.AttributedialogVisible = true;
      this.setChangeAttrubuteData(this.attrbuteOption[0])
    },
    setChangeAttrubuteData(res) {
      this.attributeFlag = res.name;
      this.attribute.pageIndex = 1;
      this.attribute.pageSize = 10;
      this.attribute.count = 0;
      this.attributeLayer = res;
      this.setAttributeTableData(res)
    },
    setAttributeTableData(res) {
      var name = res.table.replaceAll("_", "");
      this.attribute.name = name;
      var value = this.getAttributeDomFiled(name)
      this.getAttributeTableData(value, res)
    },
    //获取每个表字段名称及阈值
    async getAttributeDomFiled(res) {
      //查询字段信息;
      const fileds = await dataQuery_selectFields({
        name: res,
      });
      if (fileds.code != 200) {
        this.$message.error("调用列表失败,请联系工作人员!");
        return;
      }
      //查询阈值信息;
      const domains = await dataQuery_selectDomains({
        name: res,
      });
      if (domains.code != 200) {
        this.$message.error("调用列表失败,请联系工作人员!");
        return;
      }
      var data1 = fileds.result;
      var data2 = domains.result;
      var std = [];
      this.filedsOption = [];
      for (var i in data1) {
        if (data1[i].type != 'geometry' && data1[i].type) {
          this.filedsOption.push(data1[i]);
        }
        if (data1[i].showtype == 1) {
          if (data1[i].domainNa != null) {
            data1[i].domainNa = this.getDomainNaFild(data1[i].domainNa, data2);
          }
          std.push(data1[i]);
        }
      }
      return std;
    },
    //获取表格信息
    async getAttributeTableData(res, result) {
      res.then((val) => {
        this.attributeFild = val;
      });
      this.attribute.filter = "workname = " + "'" + this.attribute.title + "'";
      const data = await dataQuery_selectByPage(this.attribute);
      if (data.code != 200) {
        this.$message.error("调用列表失败,请联系工作人员!");
        return;
      }
      this.attributeTable = []
      var res_val = this.attributeFild;
      this.attribute.count = data.count;
      for (var i in data.result) {
        let val_Data = data.result[i];
        for (var j in res_val) {
          if (res_val[j].domainNa != null && res_val[j].domainNa != undefined) {
            val_Data[res_val[j].field] = res_val[j].domainNa;
          }
        }
      }
      this.attributeTable = data.result;
      this.$nextTick(() => {
        this.$resfs.refAttributeTable.doLayout()
      });
    },
    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;
@@ -537,14 +784,13 @@
      this.dialogMapVisible = true;
      this.showMapVisible = true;
      this.$store.state.mapMenuBoolean = true;
      this.$store.state.mapMenuBoxFlag = '1';
      this.$store.state.mapMenuBoxFlag = "1";
      this.$store.state.mapPopBoolean = false;
      this.$store.state.mapPopBoxFlag = null;
      this.$store.state.download = true;
    },
    handleMapClose() {
      this.$confirm('确认关闭?')
      this.$confirm("确认关闭?")
        .then((_) => {
          this.closeMapDown();
        })
@@ -559,6 +805,67 @@
      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 || name.indexOf('.PDF') != -1) {
        this.dialog.dialogVisible = true;
        this.dialog.isPdf = true;
        var url = BASE_URL + "/comprehensive/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
        || name.indexOf('.JPG') != -1
        || name.indexOf('.GIF') != -1
        || name.indexOf('.PNG') != -1
        || name.indexOf('.JPEG') != -1
        || name.indexOf('.BMP') != -1
        || name.indexOf('.bmp') != -1
      ) {
        this.dialog.dialogVisible = true;
        this.dialog.isJpg = true;
        var url = BASE_URL + "/comprehensive/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
          || name.indexOf('.PDF') != -1
          || name.indexOf('.JPG') != -1
          || name.indexOf('.GIF') != -1
          || name.indexOf('.PNG') != -1
          || name.indexOf('.JPEG') != -1
          || name.indexOf('.BMP') != -1
          || name.indexOf('.bmp') != -1) {
          return true;
        }
      }
      return false;
    },
    async setAttachDel() {
      var std = [];
      for (var i in this.attacgSelection) {
@@ -566,7 +873,7 @@
      }
      const res = await dataQuery_deletes({ ids: std.toString() });
      if (res.code != 200) {
        this.$message.error('文件删除失败');
        this.$message.error("文件删除失败");
      }
      this.getAttacthFlieList();
    },
@@ -574,69 +881,77 @@
      var token = getToken();
      var fs = document.getElementById("insertFile");
      if (fs.files.length == 0) {
        this.$message({
          message: '请选择要上传的文件!',
          type: 'warning'
          message: "请选择要上传的文件!",
          type: "warning",
        });
        return;
      }
      const formData = new FormData()
      const formData = new FormData();
      for (var i = 0, c = fs.files.length; i < c; i++) {
        formData.append('file', fs.files[i]); // fs.files[i].name,file
        formData.append("file", fs.files[i]); // fs.files[i].name,file
      }
      $.ajax(BASE_URL + "/dataQuery/uploadFiles?token=" + token + "&tabName= " + this.upAttach.tabName + "&eventid=" + this.upAttach.eventid, {
        type: "post",
        data: formData,
        async: true,
        cache: false,
        processData: false,
        contentType: false,
        success: (rs) => {
          this.$message({
            message: '附件添加成功',
            type: 'success'
          });
          document.getElementById("insertFile").value = "";
          this.formInline = {
            file: '',
          }
          this.getAttacthFlieList();
        },
        error: (e) => {
          document.getElementById("insertFile").value = "";
          this.$message.error('附件添加失败');
      $.ajax(
        BASE_URL +
        "/dataQuery/uploadFiles?token=" +
        token +
        "&tabName=" +
        this.upAttach.tabName +
        "&eventid=" +
        this.upAttach.eventid,
        {
          type: "post",
          data: formData,
          async: true,
          cache: false,
          processData: false,
          contentType: false,
          success: (rs) => {
            this.$message({
              message: "附件添加成功",
              type: "success",
            });
            document.getElementById("insertFile").value = "";
            this.formInline = {
              file: "",
            };
            this.getAttacthFlieList();
          },
          error: (e) => {
            document.getElementById("insertFile").value = "";
            this.$message.error("附件添加失败");
          },
        }
      });
      );
    },
    async getAttacthFlieList() {
      var obj = this.upAttach
      var obj = this.upAttach;
      const res = await dataQuery_selectFiles(obj);
      if (res.code != 200) {
        this.$message.error('列表调用失败');
        return
        this.$message.error("列表调用失败");
        return;
      }
      this.tableAttach = res.result;
    },
    getAttachTable(index, row) {
      if (row.eventid != null) {
        this.upAttach.eventid = row.eventid;
      } else {
        this.upAttach.eventid = '';
        this.upAttach.eventid = "";
      }
      this.getAttacthFlieList();
      this.dialogFormVisible = true;
    },
    //附件=>文件选择
    getInsertFile() {
      $('#insertFile').click();
      $("#insertFile").click();
    },
    insertFile() {
      var val = document.getElementById('insertFile').files;
      var val = document.getElementById("insertFile").files;
      if (!val || !val.length) return;
      this.formInline.file = val[0].name;
@@ -645,29 +960,47 @@
    async getTreeDataAll() {
      const data = await dataQuery_selectTabs();
      if (data.code != 200) {
        this.$message.error('列表调用失败');
        this.$message.error("列表调用失败");
      }
      var option = data.result;
      var val = data.result;
      this.tree = getTreeData(val)
      // 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);
          }
        }
        // if (option[i].ns == 'bd') {
      // }
      // var std = [];
      // val.filter((item) => {
      //   if (std.indexOf(item.bak) == -1) {
      //     std.push(item.bak);
      //     this.tree.push(
      //       {
      //         val: item.bak,
      //         label: item.bak,
      //         children: [],
      //       }
      //     )
      //   }
      // });
        //   this.tree[0].children.push(val_Data);
        // } else {
        //   this.tree[1].children.push(val_Data);
        // }
      }
      this.handleNodeClick(this.tree[0].children[0])
      // 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]);
    },
    //授权管理
    showPermsBtn() {
@@ -676,7 +1009,6 @@
      permsEntity
        .filter((item) => item.perms == currentPerms)
        .map((item) => {
          this.btnStatus[item.tag.substr(1)] = true;
        });
    },
@@ -684,10 +1016,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(); //获取每个表字段名称及阈值
@@ -700,7 +1034,7 @@
      res.then((val) => {
        this.attributeData = val;
      });
      if (this.ruleForm.fileName != '') {
      if (this.ruleForm.fileName != "") {
        this.listData.filter = this.ruleForm.fileName;
      } else {
        this.listData.filter = null;
@@ -708,9 +1042,10 @@
      const data = await dataQuery_selectByPage(this.listData);
      if (data.code != 200) {
        this.$message.error('调用列表失败,请联系工作人员!');
        this.$message.error("调用列表失败,请联系工作人员!");
        return;
      }
      this.tableData = []
      var res_val = this.attributeData;
      this.count = data.count;
      for (var i in data.result) {
@@ -718,14 +1053,72 @@
        for (var j in res_val) {
          if (res_val[j].domainNa != null && res_val[j].domainNa != undefined) {
            val_Data[res_val[j].field] = res_val[j].domainNa;
          }
        }
      }
      var that = this;
      var value = data.result.filter((item) => {
      this.tableData = data.result;
      this.$refs.filterTable.doLayout();
        if (item.dirName) {
          item.dirid = item.dirName
        }
        if (item.depName) {
          item.depid = item.depName
        }
        if (item.verName) {
          item.verid = item.verName
        }
        if (item.createName) {
          item.createuser = item.createName
        }
        if (item.updateName) {
          item.updateuser = item.updateName
        }
        if (item.createtime) {
          item.createtime = that.format(item.createtime);
        }
        if (item.updatetime) {
          item.updatetime = that.format(item.updatetime);
        }
        return item
      })
      this.tableData = value;
      this.$nextTick(() => {
        this.$refs.refTableData.doLayout();
      });
    },
    //格式化时间
    format(shijianchuo) {
      //shijianchuo是整数,否则要parseInt转换
      var time = new Date(shijianchuo);
      var y = time.getFullYear();
      var m = time.getMonth() + 1;
      var d = time.getDate();
      var h = time.getHours();
      var mm = time.getMinutes();
      var s = time.getSeconds();
      return y + "-" + this.add0(m) + "-" + this.add0(d);
    },
    //格式化时间
    add0(m) {
      return m < 10 ? "0" + m : m;
    },
    //获取每个表字段名称及阈值
    async getCollapseDomFiled() {
      //查询字段信息;
@@ -733,7 +1126,7 @@
        name: this.listData.name,
      });
      if (fileds.code != 200) {
        this.$message.error('调用列表失败,请联系工作人员!');
        this.$message.error("调用列表失败,请联系工作人员!");
        return;
      }
@@ -742,15 +1135,17 @@
        name: this.listData.name,
      });
      if (domains.code != 200) {
        this.$message.error('调用列表失败,请联系工作人员!');
        this.$message.error("调用列表失败,请联系工作人员!");
        return;
      }
      var data1 = fileds.result;
      var data2 = domains.result;
      var std = [];
      this.filedsOption = [];
      for (var i in data1) {
        if (data1[i].type != 'geomtry' && data1[i].type != 'null') {
          this.filedsOption.push(data1[i])
        if (data1[i].type != 'geometry' && data1[i].type) {
          this.filedsOption.push(data1[i]);
        }
        if (data1[i].showtype == 1) {
          if (data1[i].domainNa != null) {
@@ -769,55 +1164,54 @@
      this.formSql.date = new Date();
    },
    handleconditionClose() {
      this.$confirm('确认关闭?')
        .then(_ => {
      this.$confirm("确认关闭?")
        .then((_) => {
          this.startFiledAndcondition();
        })
        .catch(_ => { });
        .catch((_) => { });
    },
    fieldChange(value) {
      var obj = {}
      var obj = {};
      obj = this.filedsOption.find(function (item) {
        return item.field === value;
      })
      this.conditionChange(obj)
      });
      this.conditionChange(obj);
    },
    conditionChange(res) {
      this.formSql.field = res.field;
      this.formSql.type = res.type;
      if (res.type == "date" || res.type == "datetime") {
        this.fromSqlflag = true
        this.fromSqlflag = true;
      } else {
        this.fromSqlflag = false
        this.fromSqlflag = false;
      }
      var std = [];
      this.condOption = [];
      if (res.type == 'text' || res.type == 'blob') {
        std = conditions[0]
      } else if (res.type == 'date' || res.type == 'datetime') {
        std = conditions[2]
      if (res.type == "text" || res.type == "blob") {
        std = conditions[0];
      } else if (res.type == "date" || res.type == "datetime") {
        std = conditions[2];
      } else {
        std = conditions[1]
        std = conditions[1];
      }
      for (var i in std) {
        this.condOption.push({
          label: std[i],
          value: std[i],
        })
        });
      }
      this.formSql.condition = this.condOption[0].value
      this.formSql.condition = this.condOption[0].value;
    },
    appendQueryFilter() {
      if (this.formSql.type == "date" || this.formSql.type == "datetime") {
        if (this.formSql.date == null) {
          this.$message.error('请输入要查询的信息!');
          this.$message.error("请输入要查询的信息!");
          return;
        }
      } else {
        if (this.formSql.value == "") {
          this.$message.error('请输入要查询的信息!');
          this.$message.error("请输入要查询的信息!");
          return;
        }
      }
@@ -829,32 +1223,30 @@
      if (this.formSql.type == "long" || this.formSql.type == "integer") {
        val = parseInt(this.formSql.value);
      } else if (this.formSql.type == 'double') {
      } else if (this.formSql.type == "double") {
        if (this.formSql.value.indexOf(".") != -1) {
          val = this.formSql.value;
        } else {
          val = parseFloat(this.formSql.value).toFixed(1)
          val = parseFloat(this.formSql.value).toFixed(1);
        }
      } else if (this.formSql.type == "date" || this.formSql.type == "datetime") {
      } else if (
        this.formSql.type == "date" ||
        this.formSql.type == "datetime"
      ) {
        var time = new Date(this.formSql.date);
        var m = time.getMonth() + 1;
        var d = time.getDate();
        var y = time.getFullYear();
        val = "'" + y +
          '-' +
          this.add0(m) +
          '-' +
          this.add0(d) + "'";
        val = "'" + y + "-" + this.add0(m) + "-" + this.add0(d) + "'";
      } else {
        val = "'" + this.formSql.value + "'";
      }
      this.ruleForm.fileName += this.formSql.field + " " + this.formSql.condition + " " + val;
      this.ruleForm.fileName +=
        this.formSql.field + " " + this.formSql.condition + " " + val;
      this.startFiledAndcondition();
      this.submitForm();
    },
    //值域字段匹配
    getDomainNaFild(res, result) {
@@ -924,12 +1316,11 @@
    },
    // 重置查询
    resetForm() {
      this.ruleForm.fileName = '';
      this.ruleForm.fileName = "";
      this.listData.pageIndex = 1;
      this.listData.pageSize = 10;
      //获取table信息
      this.getCollapseTable(this.filedsLayer);
    },
    // 发布按钮
@@ -943,9 +1334,9 @@
      //     .then(() => {
      const loading = this.$loading({
        lock: true,
        text: 'Loading',
        spinner: 'el-icon-loading',
        background: 'rgba(0, 0, 0, 0.7)',
        text: "Loading",
        spinner: "el-icon-loading",
        background: "rgba(0, 0, 0, 0.7)",
      });
      setTimeout(() => {
        loading.close();
@@ -984,15 +1375,15 @@
    // 提交修改
    updateForm() {
      let params = {};
      this.$confirm('是否确定编辑?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning',
      this.$confirm("是否确定编辑?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          this.dialogFormVisible = false;
          switch (this.tableType) {
            case '场站点':
            case "场站点":
              params = {
                gid: this.upform.gid,
                pipename: this.upform.pipename,
@@ -1002,15 +1393,15 @@
              UpdateSitePoint(params).then((res) => {
                if (res.data == 1) {
                  this.$message({
                    message: '修改成功',
                    type: 'success',
                    message: "修改成功",
                    type: "success",
                  });
                }
                this.getSPData(10, 1, '');
                this.getSPCount('');
                this.getSPData(10, 1, "");
                this.getSPCount("");
              });
              break;
            case '管道中心线':
            case "管道中心线":
              params = {
                gid: this.upform.gid,
                pipename: this.upform.pipename,
@@ -1022,15 +1413,15 @@
              UpdateStationSeries(params).then((res) => {
                if (res.data == 1) {
                  this.$message({
                    message: '修改成功',
                    type: 'success',
                    message: "修改成功",
                    type: "success",
                  });
                }
                this.getSSData(10, 1, '');
                this.getSSCount('');
                this.getSSData(10, 1, "");
                this.getSSCount("");
              });
              break;
            case '标桩':
            case "标桩":
              params = {
                gid: this.upform.gid,
                pipename: this.upform.pipename,
@@ -1040,12 +1431,12 @@
              UpdatgeMarker(params).then((res) => {
                if (res.data == 1) {
                  this.$message({
                    message: '修改成功',
                    type: 'success',
                    message: "修改成功",
                    type: "success",
                  });
                }
                this.getMData(10, 1, '');
                this.getMCount('');
                this.getMData(10, 1, "");
                this.getMCount("");
              });
              break;
          }
@@ -1075,47 +1466,47 @@
      for (var i in this.multipleSelection) {
        std.push(this.multipleSelection[i].gid);
      }
      this.$confirm('确定是否删除所选内容?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning',
      this.$confirm("确定是否删除所选内容?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          switch (this.tableType) {
            case '场站点':
            case "场站点":
              dltSitePoint(std).then((res) => {
                if (res.data !== 0) {
                  this.$message({
                    message: '删除成功',
                    type: 'success',
                    message: "删除成功",
                    type: "success",
                  });
                }
                this.getSPData(10, 1, '');
                this.getSPCount('');
                this.getSPData(10, 1, "");
                this.getSPCount("");
              });
              break;
            case '管道中心线':
            case "管道中心线":
              dltStationSeries(std).then((res) => {
                if (res.data !== 0) {
                  this.$message({
                    message: '删除成功',
                    type: 'success',
                    message: "删除成功",
                    type: "success",
                  });
                }
                this.getSSData(10, 1, '');
                this.getSSCount('');
                this.getSSData(10, 1, "");
                this.getSSCount("");
              });
              break;
            case '标桩':
            case "标桩":
              dltMarker(std).then((res) => {
                if (res.data !== 0) {
                  this.$message({
                    message: '删除成功',
                    type: 'success',
                    message: "删除成功",
                    type: "success",
                  });
                }
                this.getMData(10, 1, '');
                this.getMCount('');
                this.getMData(10, 1, "");
                this.getMCount("");
              });
              break;
          }
@@ -1138,29 +1529,84 @@
.Spatialbox {
  height: 98%;
  width: 98%;
  padding: 1%;
  padding: 0.5%;
  .spatialContent {
    width: 100%;
    height: 92%;
    height: calc(100% - 75px);
    padding-top: 10px;
    display: flex;
    justify-content: space-between;
    justify-content: space-around;
    .spatial_leftTree {
      width: calc(15% - 0px);
      height: 91%;
      width: calc(23% - 0px);
      height: 100%;
      padding: 10px;
      border-radius: 5px;
      padding: 1%;
      overflow: auto;
    }
    .spatial_rightContent {
      width: 80%;
      height: 91%;
      border-radius: 5px;
      padding: 1%;
      box-sizing: border-box;
      overflow-y: auto;
    }
    .contentshuju {
      width: 75%;
      height: 100%;
      border-radius: 5px;
      padding: 0px;
      box-sizing: border-box;
      border: 1px solid #dcdfe6;
    }
  }
  .pdfClass {
    height: 70vh;
    width: 100%;
    position: relative;
  }
  .attributeBox {
    height: 63vh;
    width: 100%;
    position: relative;
    display: flex;
    justify-content: space-between;
    .attrubuteLeft {
      width: calc(20% - 20px);
      height: calc(100% - 20px);
      border: 1px solid #dcdfe6;
      border-radius: 5px;
      padding: 10px;
      li {
        border-bottom: 1px solid #dcdfe6;
        line-height: 30px;
        text-align: center;
      }
      li:hover {
        background: rgba(255, 255, 255, 0.3);
        color: #409eff;
      }
      .active {
        color: #409eff;
      }
    }
    .attrubuteRight {
      width: 79%;
      height: 100%;
      border: 1px solid #dcdfe6;
      border-radius: 5px;
    }
  }
}
.table_box2 {
  border-radius: 5px;
  padding: 10px;
  box-sizing: border-box;
}
.contentshujutou {
  padding: 8px;
  // margin-top: 10px;
  border-radius: 5px;
  .el-form-item {
    margin: 5px;
  }
}
.pagination_box {
  margin-top: 0px;
}
</style>