Surpriseplus
2022-11-12 50f52beb0ed100105166f62027cd0b15e6b596dc
src/views/datamanage/SpatialData.vue
@@ -1,6 +1,6 @@
<template>
  <div class="authorityManagement_box">
    <My-bread :list="['数据管理', '空间数据']"></My-bread>
    <My-bread :list="['数据管理', '数据检索']"></My-bread>
    <el-divider />
    <div class="searchComp">
      <el-form ref="ruleForm" :model="ruleForm" :inline="true">
@@ -16,39 +16,37 @@
            >查询</el-button
          >
          <el-button
            @click="resetForm('ruleForm')"
            icon="el-icon-refresh"
            type="info"
            size="small"
            >重置</el-button
          >
          <el-button
          <!-- <el-button
          v-if="btnStatus.delete"
            @click="DelFormData"
            icon="el-icon-delete"
            type="danger"
            size="small"
            >删除</el-button
          >
          > -->
          <el-button
            v-if="!FBtest"
            @click="testfb()"
            v-if="btnStatus.download"
            icon="el-icon-position"
            type="success"
            size="small"
            >发布</el-button
            >下载</el-button
          >
          <el-button
          <!-- <el-button
            v-else
            @click="testfb()"
            icon="el-icon-position"
            type="success"
            size="small"
            >取消</el-button
          >
          > -->
        </el-form-item>
        <el-form-item>
        <!-- <el-form-item>
          <span v-if="FBtest">
            <i class="dotClass" style="background-color: springgreen"></i>
          </span>
@@ -58,13 +56,13 @@
        </el-form-item>
        <el-form-item v-if="FBtest">
          发布地址:http://192.168.20.39/SG/default/streamer.ashx
        </el-form-item>
        </el-form-item> -->
      </el-form>
    </div>
    <div class="bottom">
      <div class="leftTree">
        <el-tree
          :data="data"
          :data="tree"
          :props="defaultProps"
          :default-expanded-keys="[1]"
          node-key="id"
@@ -83,75 +81,23 @@
          >
            <el-table-column type="selection" width="55" />
            <el-table-column width="50" type="index" label="序号" />
            <el-table-column min-width="150" prop="pipename" label="管道名称" />
            <el-table-column
              min-width="150"
              v-if="tableType == '场站点'"
              prop="sitename"
              label="场站名称"
            />
            <el-table-column
              min-width="150"
              v-if="tableType == '场站点'"
              prop="type"
              label="场站类型"
            />
            <el-table-column
              min-width="150"
              v-if="tableType == '管道中心线'"
              prop="seriesname"
              label="站列名称"
            />
            <el-table-column
              min-width="50"
              v-if="tableType == '管道中心线'"
              prop="stationvalue"
              label="站列里程"
            />
            <el-table-column
              min-width="50"
              v-if="tableType == '管道中心线'"
              prop="transportm"
              label="输送介质"
            />
            <el-table-column
              min-width="50"
              v-if="tableType == '管道中心线'"
              prop="diameter"
              label="管径"
            />
            <el-table-column
              min-width="150"
              v-if="tableType == '标桩'"
              prop="name"
              label="标桩名称"
            />
            <el-table-column
              min-width="150"
              v-if="tableType == '标桩'"
              prop="type"
              label="标桩类型"
            />
            <el-table-column
              min-width="70"
              prop="create_user"
              label="入库人员"
            />
            <el-table-column
              min-width="100"
              prop="create_time"
              label="入库时间"
            />
              v-for="(item, index) in attributeData"
              :key="index"
              :label="item.alias"
              :prop="item.field"
              show-overflow-tooltip
              align="center"
            ></el-table-column>
            <el-table-column min-width="80" label="操作">
              <template slot-scope="scope">
                <el-link @click="showDetail(scope.$index, scope.row)"
                  >查看</el-link
                >
                <el-link
                  @click="handleEdit(scope.$index, scope.row)"
                  @click="dialogFormVisible = true"
                  style="margin-left: 10px"
                  >修改</el-link
                  >附件</el-link
                >
              </template>
            </el-table-column>
@@ -165,9 +111,9 @@
            v-if="changePag"
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :current-page="currentPage"
            :current-page="this.listData.pageIndex"
            :page-sizes="[10, 20, 50, 100]"
            :page-size="10"
            :page-size="this.listData.pageSize"
            layout="total, sizes, prev, pager, next, jumper"
            :total="count"
          >
@@ -184,179 +130,113 @@
          </div>
        </div>
        <div class="contentBox">
          <p>管道名称:{{ itemdetail.pipename }}</p>
          <ul>
            <li v-for="(item, index) in itemdetail">
              <p>
                <label> {{ item.label }}:</label>
                <label class="boxlabel">{{ item.value }}</label>
              </p>
          <el-divider></el-divider>
          <div v-if="tableType == '场站点'">
            <p>场站名称:{{ itemdetail.sitename }}</p>
            <el-divider></el-divider>
            <p>场站类型:{{ itemdetail.type }}</p>
            <el-divider></el-divider>
          </div>
          <div v-if="tableType == '管道中心线'">
            <p>站列名称:{{ itemdetail.seriesname }}</p>
            <el-divider></el-divider>
            <p>站列里程:{{ itemdetail.stationvalue }}</p>
            <el-divider></el-divider>
            <p>输送介质:{{ itemdetail.transportm }}</p>
            <el-divider></el-divider>
            <p>管径:{{ itemdetail.diameter }}</p>
            <el-divider></el-divider>
          </div>
          <div v-if="tableType == '标桩'">
            <p>标桩名称:{{ itemdetail.name }}</p>
            <el-divider></el-divider>
            <p>标桩类型:{{ itemdetail.type }}</p>
            <el-divider></el-divider>
          </div>
          <p>入库人员:{{ itemdetail.create_user }}</p>
          <el-divider></el-divider>
          <p>入库时间:{{ itemdetail.create_time }}</p>
            </li>
          </ul>
        </div>
      </el-card>
    </div>
    <el-dialog title="修改详情" :visible.sync="dialogFormVisible">
      <el-form :model="upform">
        <el-form-item label="管道名称" :label-width="formLabelWidth">
          <el-input v-model="upform.pipename" autocomplete="off"></el-input>
    <el-dialog title="附件挂接" width="30%" :visible.sync="dialogFormVisible">
      <el-form :model="formInline" class="demo-form-inline">
        <el-form-item label="添加数据">
          <el-input
            v-model="formInline.file"
            style="width: 300px; margin-right: 20px"
            placeholder="请选择"
            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
          v-if="tableType == '场站点'"
          label="场站名称"
          :label-width="formLabelWidth"
        >
          <el-input v-model="upform.sitename" autocomplete="off"></el-input>
        <el-form-item>
          <el-row  >
            <el-col :span="2"> <el-link  type="primary" :underline="false" >添加</i></el-link></el-col>
            <el-col :span="2">   <el-link  type="primary" :underline="false" >删除</i></el-link></el-col>
            <el-col :span="2">  <el-link  type="primary" :underline="false" >清空</i></el-link></el-col>
          </el-row>
        </el-form-item>
        <el-form-item
          v-if="tableType == '场站点'"
          label="场站类型"
          :label-width="formLabelWidth"
        <el-form-item>
 <el-table
            ref="filterTable"
            height="99%"
            border
            style="width: 100%"
        >
          <el-input v-model="upform.type" autocomplete="off"></el-input>
          <el-table-column width="50" type="index" label="序号" />
              <el-table-column  prop="date"
        label="文件路径"
         />
      <el-table-column
        prop="name"
        label="文件名称"
        />
           </el-table>
        </el-form-item>
        <el-form-item
          v-if="tableType == '管道中心线'"
          label="站列名称"
          :label-width="formLabelWidth"
        >
          <el-input v-model="upform.seriesname" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item
          v-if="tableType == '管道中心线'"
          label="站列里程"
          :label-width="formLabelWidth"
        >
          <el-input v-model="upform.stationvalue" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item
          v-if="tableType == '管道中心线'"
          label="输送介质"
          :label-width="formLabelWidth"
        >
          <el-input v-model="upform.transportm" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item
          v-if="tableType == '管道中心线'"
          label="管径"
          :label-width="formLabelWidth"
        >
          <el-input v-model="upform.diameter" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item
          v-if="tableType == '标桩'"
          label="标桩名称"
          :label-width="formLabelWidth"
        >
          <el-input v-model="upform.name" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item
          v-if="tableType == '标桩'"
          label="标桩类型"
          :label-width="formLabelWidth"
        >
          <el-input v-model="upform.type" autocomplete="off"></el-input>
        <el-form-item>
<el-row :gutter="20">
  <el-col :span="12" :offset="8">  <el-button plain>确认</el-button>  <el-button plain>取消</el-button></el-col>
</el-row>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="updateForm">确 定</el-button>
        <el-button @click="dialogFormVisible = false">取 消</el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import $ from 'jquery';
import {
  querySitePointCount,
  querySitePoint,
  queryMarkerCount,
  queryMarker,
  queryStationSeries,
  queryStationSeriesCount,
  UpdateSitePoint,
  UpdateStationSeries,
  UpdatgeMarker,
  dltSitePoint,
  dltStationSeries,
  dltMarker,
} from "../../api/api";
  dataQuery_selectTabs,
  dataQuery_selectDomains,
  dataQuery_selectFields,
  dataQuery_selectByPage,
} from '../../api/api';
import catalogueTree from "../../components/catalogueTree.vue";
import MyBread from "../../components/MyBread.vue";
import catalogueTree from '../../components/catalogueTree.vue';
import MyBread from '../../components/MyBread.vue';
export default {
  //import引入的组件需要注入到对象中才能使用
  name: "dataSearch",
  name: 'dataSearch',
  components: { MyBread, catalogueTree },
  data() {
    return {
      data: [
      formInline: {
        file:''
      },
      tree: [
        {
          id: 1,
          label: "空间入库数据",
          children: [
            {
              label: "场站点",
          tabDesc: '基础数据',
          value: 'BD',
          children: [],
            },
            {
              label: "管道中心线",
            },
            {
              label: "标桩",
          tabDesc: '业务数据',
          value: 'BS',
          children: [],
            },
          ],
        },
      ],
      FBtest: false,
      formLabelWidth: "120px",
      dialogFormVisible: false,
      upform: {
        gid: "",
        pipename: "",
        sitename: "",
        type: "",
        seriesname: "",
        stationvalue: "",
        transportm: "",
        diameter: "",
        name: "",
      },
      tableType: null,
      defaultProps: {
        children: "children",
        label: "label",
        children: 'children',
        label: 'tabDesc',
      },
      changePag: true,
      showinfoBox: false,
      itemdetail: {},
      ruleForm: {
        name: "",
      },
      count: 0,
      pageSize: 10,
      pageNum: 1,
      tableData: [],
      currentPage: 1,
      searchName: "",
      multipleSelection: [],
      btnStatus: {
        select: false,
        delete: false,
@@ -365,60 +245,168 @@
        insert: false,
        update: false,
      },
      tableType: null,
      ruleForm: {
        name: '',
      },
      FBtest: false,
      tableData: [],
      formLabelWidth: '120px',
      dialogFormVisible: false,
      upform: {
        gid: '',
        pipename: '',
        sitename: '',
        type: '',
        seriesname: '',
        stationvalue: '',
        transportm: '',
        diameter: '',
        name: '',
      },
      changePag: true,
      showinfoBox: false,
      itemdetail: {},
      tableData: [],
      attributeData: [],
      currentPage: 1,
      searchName: '',
      multipleSelection: [],
      filedsLayer: null,
      count: 0,
      listData: {
        pageSize: 10,
        pageIndex: 1,
        name: null,
        filter: null,
        wkt: null,
      },
    };
  },
  created() {
    // this.getSPData(10, 1, "");
    // this.getSPCount("");
    this.showPermsBtn();
    this.getTreeDataAll();
  },
  methods: {
    //附件=>文件选择
    getInsertFile(){
      $("#insertFile").click();
    },
    insertFile(){
      var val = document.getElementById("insertFile").files;
        if (!val || !val.length) return;
        this.formInline.file = val[0].name;
    },
    //获取目录树数据
    async getTreeDataAll() {
      const data = await dataQuery_selectTabs();
      if (data.code != 200) {
        this.$message.error('列表调用失败');
      }
      var option = data.result;
      for (var i in option) {
        var val_Data = option[i];
        val_Data.id = '1' + i;
        if (option[i].ns == 'bd') {
          this.tree[0].children.push(val_Data);
        } else {
          this.tree[1].children.push(val_Data);
        }
      }
    },
    //授权管理
    showPermsBtn() {
      let currentPerms = this.$store.state.currentPerms;
      let permsEntity = this.$store.state.permsEntity;
      permsEntity
        .filter((item) => item.perms == currentPerms)
        .map((item) => (this.btnStatus[item.tag.substr(1)] = true));
    },
    handleNodeClick(data) {
      this.closeDetial();
      this.changePag = false;
      this.tableData = [];
      this.currentPage = 1;
      switch (data.label) {
        case "空间入库数据":
          this.tableType = null;
          // this.$nextTick(() => {
          //   this.changePag = true;
          // });
          break;
        case "场站点":
          this.tableType = "场站点";
          this.getSPData(10, 1, "");
          this.getSPCount("");
          // this.$nextTick(() => {
          //   this.changePag = true;
          // });
          break;
        case "管道中心线":
          this.tableType = "管道中心线";
          this.getSSData(10, 1, "");
          this.getSSCount("");
          // this.$nextTick(() => {
          //   this.changePag = true;
          // });
          break;
        case "标桩":
          this.tableType = "标桩";
          this.getMData(10, 1, "");
          this.getMCount("");
          break;
      }
      this.$nextTick(() => {
        this.changePag = true;
        .map((item) => {
          console.log(item);
          this.btnStatus[item.tag.substr(1)] = true;
      });
    },
    //树点击事件
    handleNodeClick(data) {
      //判断点击是否为子节点
      if (data.children != null) return;
      this.listData.name = data.entity; //要查询表格类型;
      this.filedsLayer = this.getCollapseDomFiled(); //获取每个表字段名称及阈值
      //获取table信息
      this.getCollapseTable(this.filedsLayer);
    },
    //获取表格信息
    async getCollapseTable(res) {
      res.then((val) => {
        this.attributeData = val;
      });
      if (this.ruleForm.name != null) {
        this.listData.filter = 'name like ' + this.ruleForm.name;
      }
      const data = await dataQuery_selectByPage(this.listData);
      if (data.code != 200) {
        this.$message.error('调用列表失败,请联系工作人员!');
        return;
      }
      var res_val = this.attributeData;
      this.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.tableData = data.result;
    },
    //获取每个表字段名称及阈值
    async getCollapseDomFiled() {
      //查询字段信息;
      const fileds = await dataQuery_selectFields({
        name: this.listData.name,
      });
      if (fileds.code != 200) {
        this.$message.error('调用列表失败,请联系工作人员!');
        return;
      }
      //查询阈值信息;
      const domains = await dataQuery_selectDomains({
        name: this.listData.name,
      });
      if (domains.code != 200) {
        this.$message.error('调用列表失败,请联系工作人员!');
        return;
      }
      var data1 = fileds.result;
      var data2 = domains.result;
      var std = [];
      for (var i in data1) {
        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;
    },
    //值域字段匹配
    getDomainNaFild(res, result) {
      for (var i in result) {
        if (result[i].domName == res) {
          return result[i].codeDesc;
        }
      }
      return null;
    },
    // 请求场站点内容
    getSPData(size, num, name) {
      querySitePoint(size, num, name).then((res) => {
@@ -458,48 +446,30 @@
    },
    // 关键字查询
    submitForm(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          this.searchName = this.ruleForm.name.trim();
          switch (this.tableType) {
            case "场站点":
              this.getSPData(10, 1, this.searchName);
              this.getSPCount(this.searchName);
              break;
            case "管道中心线":
              this.getSSData(10, 1, this.searchName);
              this.getSSCount(this.searchName);
              break;
            case "标桩":
              this.getMData(10, 1, this.searchName);
              this.getMCount(this.searchName);
              break;
          }
        } else {
          console.log("error submit!!");
          return false;
        }
      });
    submitForm() {
      this.listData.pageIndex = 1;
      this.listData.pageSize = 10;
      //获取table信息
      this.getCollapseTable(this.filedsLayer);
    },
    //分页点击事件
    handleSizeChange(val) {
      this.listdata.pageSize = val;
      this.listdata.pageIndex = 1;
      //获取table信息
      this.getCollapseTable(this.filedsLayer);
    },
    handleCurrentChange(val) {
      this.listdata.pageIndex = val;
      //获取table信息
      this.getCollapseTable(this.filedsLayer);
    },
    // 重置查询
    resetForm(formName) {
      this.searchName = "";
      this.searchName = '';
      this.$refs[formName].resetFields();
      switch (this.tableType) {
        case "场站点":
          this.getSPData(10, 1, "");
          this.getSPCount("");
          break;
        case "管道中心线":
          this.getSSData(10, 1, "");
          this.getSSCount("");
          break;
        case "标桩":
          this.getMData(10, 1, "");
          this.getMCount("");
          break;
      }
      //获取table信息
      this.getCollapseTable(this.filedsLayer);
    },
    // 发布按钮
@@ -513,9 +483,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();
@@ -527,9 +497,18 @@
    },
    // 查看界面
    showDetail(index, row) {
      // console.log(index, row);
      console.log(index, row);
      console.log(this.attributeData);
      this.showinfoBox = true;
      this.itemdetail = row;
      var std = [];
      for (var i in this.attributeData) {
        std.push({
          label: this.attributeData[i].alias,
          value: row[this.attributeData[i].field],
        });
      }
      this.itemdetail = std;
    },
    // 关闭查看
    closeDetial() {
@@ -545,15 +524,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,
@@ -563,15 +542,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,
@@ -583,15 +562,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,
@@ -601,12 +580,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;
          }
@@ -633,47 +612,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;
          }
@@ -687,47 +666,6 @@
          // });
        })
        .catch(() => {});
    },
    // 条数修改
    handleSizeChange(val) {
      this.pageSize = val;
      switch (this.tableType) {
        case "空间入库数据":
          break;
        case "场站点":
          this.getSPData(this.pageSize, 1, "");
          this.getSPCount("");
          break;
        case "管道中心线":
          this.getSSData(this.pageSize, 1, "");
          this.getSSCount("");
          break;
        case "标桩":
          this.getMData(this.pageSize, 1, "");
          this.getMCount("");
          break;
      }
    },
    // 页数修改
    handleCurrentChange(val) {
      this.pageNum = val;
      switch (this.tableType) {
        case "空间入库数据":
          break;
        case "场站点":
          this.getSPData(this.pageSize, this.pageNum, "");
          this.getSPCount("");
          break;
        case "管道中心线":
          this.getSSData(this.pageSize, this.pageNum, "");
          this.getSSCount("");
          break;
        case "标桩":
          this.getMData(this.pageSize, this.pageNum, "");
          this.getMCount("");
          break;
      }
    },
  },
};