Surpriseplus
2022-10-21 3b755f9a00e7b8e84a3487dd0f81b91c66abb582
src/views/datamanage/metadataManage.vue
@@ -59,39 +59,20 @@
          >
            <el-table-column type="selection" width="55" />
            <el-table-column min-width="150" prop="name" label="数据名称" />
            <el-table-column prop="dirid" label="目录ID" />
            <el-table-column prop="depid" label="单位ID" />
            <el-table-column prop="verid" label="版本ID" />
            <el-table-column prop="type" label="格式" />
            <el-table-column prop="sizes" label="大小:单位MB" />
            <el-table-column prop="cs" label="坐标系" />
            <el-table-column prop="scale" label="比例尺" />
            <el-table-column prop="resolution" label="分辨率" />
            <el-table-column
              min-width="100"
              prop="create_user"
              label="创建人员"
              prop="gather"
              label="采集日期"
              :formatter="formatTime"
            />
            <el-table-column
              min-width="100"
              prop="create_time"
              label="创建时间"
            />
            <el-table-column min-width="100" prop="coor_sys" label="坐标系统" />
            <el-table-column
              min-width="100"
              prop="accuracy"
              label="比例尺/分辨率"
            />
            <el-table-column min-width="100" prop="format" label="存储格式" />
            <el-table-column min-width="100" prop="version" label="数据版本" />
            <el-table-column prop="status" label="发布" width="70%">
              <template slot-scope="scope">
                <span
                  slot="reference"
                  v-if="scope.row.s_url === '' || scope.row.s_url === null"
                >
                  <i class="dotClass" style="background-color: gray"></i>
                </span>
                <span slot="reference" v-else>
                  <i class="dotClass" style="background-color: springgreen"></i>
                </span>
              </template>
            </el-table-column>
            <el-table-column prop="descr" label="描述" />
            <el-table-column min-width="100" label="操作">
              <template slot-scope="scope">
                <el-link @click="showDetail(scope.$index, scope.row)"
@@ -108,12 +89,12 @@
                  style="margin-left: 10px"
                  >发布</el-link
                >
                <el-link
                <!-- <el-link
                  v-else
                  @click="handleStop(scope.row)"
                  style="margin-left: 10px"
                  >停止</el-link
                >
                > -->
              </template>
            </el-table-column>
          </el-table>
@@ -125,9 +106,9 @@
          <el-pagination
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :current-page="currentPage"
            :current-page="listData.pageIndex"
            :page-sizes="[10, 20, 50, 100]"
            :page-size="10"
            :page-size="listData.pageSize"
            layout="total, sizes, prev, pager, next, jumper"
            :total="count"
          >
@@ -146,41 +127,34 @@
        <div class="contentBox">
          <p>数据名称:{{ itemdetail.name }}</p>
          <el-divider></el-divider>
          <p>
            数据范围:
            {{ itemdetail.x_min }}, {{ itemdetail.y_min }};
            {{ itemdetail.x_max }}, {{ itemdetail.y_max }}
          </p>
          <p>目录ID:{{ itemdetail.dirid }}</p>
          <el-divider></el-divider>
          <p>创建时间:{{ itemdetail.create_time }}</p>
          <p>单位ID:{{ itemdetail.depid }}</p>
          <el-divider></el-divider>
          <p>创建人员:{{ itemdetail.create_user }}</p>
          <p>版本ID:{{ itemdetail.verid }}</p>
          <el-divider></el-divider>
          <p>更新时间:{{ itemdetail.up_time }}</p>
          <p>格式:{{ itemdetail.type }}</p>
          <el-divider></el-divider>
          <p>更新人员:{{ itemdetail.up_user }}</p>
          <p>大小(单位MB):{{ itemdetail.sizes }}</p>
          <el-divider></el-divider>
          <p>上传单位:{{ itemdetail.up_unit }}</p>
          <p>坐标系:{{ itemdetail.cs }}</p>
          <el-divider></el-divider>
          <p>数据状态:{{ itemdetail.status }}</p>
          <p>比例尺:{{ itemdetail.scale }}</p>
          <el-divider></el-divider>
          <p>坐标系统:{{ itemdetail.coor_sys }}</p>
          <p>分辨率:{{ itemdetail.resolution }}</p>
          <el-divider></el-divider>
          <p>比例尺/分辨率:{{ itemdetail.accuracy }}</p>
          <p>采集日期:{{ itemdetail.gather }}</p>
          <el-divider></el-divider>
          <p>发布地址:{{ itemdetail.s_url }}
           <el-link
              @click="ShowWindowFly(itemdetail.s_url)"
              :underline="false"
              type="primary"
              >详情</el-link
            ></p>
          <p>描述:{{ itemdetail.descr }}</p>
          <el-divider></el-divider>
          <p>数据版本:{{ itemdetail.version }}</p>
          <p>创建人ID:{{ itemdetail.createUser }}</p>
          <el-divider></el-divider>
          <p>数据类型:{{ itemdetail.type }}</p>
          <p>创建时间:{{ itemdetail.createTime }}</p>
          <el-divider></el-divider>
          <p>数据格式:{{ itemdetail.format }}</p>
          <p>更新人ID:{{ itemdetail.updateUser }}</p>
          <el-divider></el-divider>
          <p>更新时间:{{ itemdetail.updateTime }}</p>
          <el-divider></el-divider>
        </div>
      </el-card>
    </div>
@@ -189,42 +163,35 @@
        <el-form-item label="数据名称" :label-width="formLabelWidth">
          <el-input v-model="upform.name" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="数据范围x_min" :label-width="formLabelWidth">
          <el-input v-model="upform.x_min" autocomplete="off"></el-input>
        <el-form-item label="目录ID" :label-width="formLabelWidth">
          <el-input v-model="upform.dirid" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="数据范围x_max" :label-width="formLabelWidth">
          <el-input v-model="upform.x_max" autocomplete="off"></el-input>
        <el-form-item label="单位ID" :label-width="formLabelWidth">
          <el-input v-model="upform.depid" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="数据范围y_min" :label-width="formLabelWidth">
          <el-input v-model="upform.y_min" autocomplete="off"></el-input>
        <el-form-item label="版本ID" :label-width="formLabelWidth">
          <el-input v-model="upform.verid" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="数据范围y_max" :label-width="formLabelWidth">
          <el-input v-model="upform.y_max" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="创建时间" :label-width="formLabelWidth">
          <el-date-picker
            v-model="upform.create_time"
            value-format="yyyy-MM-dd"
            type="date"
            placeholder="选择日期"
            style="width: 100%"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="坐标系统" :label-width="formLabelWidth">
          <el-input v-model="upform.coor_sys" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="比例尺/分辨率" :label-width="formLabelWidth">
          <el-input v-model="upform.accuracy" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="数据格式" :label-width="formLabelWidth">
          <el-input v-model="upform.format" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="数据版本" :label-width="formLabelWidth">
          <el-input v-model="upform.version" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="数据类型" :label-width="formLabelWidth">
        <el-form-item label="格式" :label-width="formLabelWidth">
          <el-input v-model="upform.type" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="大小(单位MB)" :label-width="formLabelWidth">
          <el-input v-model="upform.sizes" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="坐标系" :label-width="formLabelWidth">
          <el-input v-model="upform.cs" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="比例尺" :label-width="formLabelWidth">
          <el-input v-model="upform.scale" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="分辨率" :label-width="formLabelWidth">
          <el-input v-model="upform.resolution" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="采集日期" :label-width="formLabelWidth">
          <el-input v-model="upform.gather" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="描述" :label-width="formLabelWidth">
          <el-input v-model="upform.descr" autocomplete="off"></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
@@ -263,23 +230,24 @@
<script>
import {
  queryMetaData,
  select_meta_ByPageAndCount,
  queryDataCount,
  updateMetaData,
  dltMetaDatas,
  updateMeta,
  deleteMeta,
  publishMeta,
  unpublishMeta,
} from "../../api/api";
import MyBread from "../../components/MyBread.vue";
} from '../../api/api';
import MyBread from '../../components/MyBread.vue';
import moment from 'moment';
export default {
  name: "metadataManage",
  name: 'metadataManage',
  components: { MyBread },
  data() {
    var repasswordValidator = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("请再次输入密码"));
      if (value === '') {
        callback(new Error('请再次输入密码'));
      } else if (value !== this.codeForm.password) {
        callback(new Error("两次输入密码不一致!"));
        callback(new Error('两次输入密码不一致!'));
      } else {
        callback();
      }
@@ -288,7 +256,7 @@
      showCodeBox: false,
      value: true,
      multipleSelection: [],
      formLabelWidth: "120px",
      formLabelWidth: '120px',
      dialogFormVisible: false,
      InsertFormdialog: false,
      insertform: {},
@@ -296,48 +264,56 @@
      showinfoBox: false,
      itemdetail: {},
      ruleForm: {
        name: "",
        name: '',
      },
      codeForm: {
        password: "",
        repassword: "",
        password: '',
        repassword: '',
      },
      rules: {
        password: [{ required: true, message: "请输入密码", trigger: "blur" }],
        password: [{ required: true, message: '请输入密码', trigger: 'blur' }],
        repassword: [
          { required: true, message: "请输入确认密码", trigger: "blur" },
          { validator: repasswordValidator, trigger: "blur" },
          { required: true, message: '请输入确认密码', trigger: 'blur' },
          { validator: repasswordValidator, trigger: 'blur' },
        ],
      },
      tableData: [],
      count: 0,
      currentPage: 1,
      pageSize: 10,
      pageNum: 1,
      searchName: "",
      searchName: '',
      listData: {
        name: null,
        pageIndex: 1,
        pageSize: 10,
      },
    };
  },
  created() {
    this.getMetaData(10, 1, "");
    this.getMetaCount("");
    this.getMetaData();
  },
  methods: {
     ShowWindowFly(res) {
      console.log(res);
      if (res == "") return;
      if (res.indexOf(".xls") != -1) {
    formatTime(row, column) {
      let date = row[column.property];
      if (date === undefined || date === null) {
        return '';
      }
      return moment(parseInt(date)).format('YYYY-MM-DD HH:mm:ss');
    },
    ShowWindowFly(res) {
      if (res == '') return;
      if (res.indexOf('.xls') != -1) {
        this.showMetadata(res, true);
      } else if (res.indexOf(".doc") != -1) {
      } else if (res.indexOf('.doc') != -1) {
        this.showMetadata(res, true);
      } else if (res.indexOf(".png") != -1) {
      } else if (res.indexOf('.png') != -1) {
        this.showMetadata(res, true);
      } else if (res.indexOf(".jpg") != -1) {
      } else if (res.indexOf('.jpg') != -1) {
        this.showMetadata(res, true);
      } else if (res.indexOf(".pdf") != -1) {
      } else if (res.indexOf('.pdf') != -1) {
        this.showMetadata(res, true);
      } else if (res.indexOf(".fly") != -1) {
      } else if (res.indexOf('.fly') != -1) {
        this.showMetadata(res, false);
      } else if (res.indexOf(".mpt") != -1) {
      } else if (res.indexOf('.mpt') != -1) {
        this.showMetadata(res, false);
      }
    },
@@ -346,19 +322,27 @@
      if (flag == true) {
        metaUrl = res;
      } else if (flag == false) {
        metaUrl = ifreamUrl + "/LFWeb/MetaPop.html?name=" + res;
        metaUrl = ifreamUrl + '/LFWeb/MetaPop.html?name=' + res;
      }
      window.open(
        metaUrl,
        "",
        "height=800, width=1500, top=150, left=350, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no"
        '',
        'height=800, width=1500, top=150, left=350, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no'
      );
    },
    // 请求数据内容
    getMetaData(size, num, name) {
      queryMetaData(size, num, name).then((res) => {
        this.tableData = res.data;
      });
    async getMetaData() {
      if (this.listData.tab == '') {
        delete this.listData.tab;
      }
      this.listData.name = this.ruleForm.name;
      const data = await select_meta_ByPageAndCount(this.listData);
      if (data.code != 200) {
        this.$message.error('列表调用失败');
      }
      console.log(data);
      this.tableData = data.result;
      this.count = data.count;
    },
    // 请求数据数量
    getMetaCount(name) {
@@ -370,21 +354,17 @@
    submitForm(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          this.searchName = this.ruleForm.name.trim();
          this.getMetaData(10, 1, this.searchName);
          this.getMetaCount(this.searchName);
          this.getMetaData();
        } else {
          console.log("error submit!!");
          console.log('error submit!!');
          return false;
        }
      });
    },
    // 重置查询
    resetForm(formName) {
      this.getMetaData(10, 1, "");
      this.getMetaCount("");
      this.searchName = "";
      this.$refs[formName].resetFields();
      this.getMetaData();
    },
    // 获取多选选中的对象
    handleSelectionChange(val) {
@@ -408,65 +388,59 @@
      this.upform = JSON.parse(JSON.stringify(row));
    },
    // 提交修改
    updateForm() {
      this.$confirm("是否确定编辑?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          this.dialogFormVisible = false;
          updateMetaData(this.upform).then((res) => {
            if (res.data == 1) {
              this.$message({
                message: "修改成功",
                type: "success",
              });
            }
            this.getMetaData(10, 1, "");
            this.getMetaCount("");
          });
        })
        .catch(() => {});
    async updateForm() {
      this.dialogFormVisible = false;
      const data = await updateMeta(this.upform);
      if (data.code == 200) {
        this.dialogFormVisible = false;
        this.upform = {};
        this.$message({
          message: '修改成功!',
          type: 'success',
        });
        this.getMetaData();
      } else {
        this.$message({
          message: '修改失败!',
          type: 'warning',
        });
      }
    },
    // 删除多条
    DelFormData() {
    async DelFormData() {
      var std = [];
      for (var i in this.multipleSelection) {
        std.push(this.multipleSelection[i].id);
      }
      this.$confirm("确定是否删除所选内容?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          dltMetaDatas(std).then((res) => {
            this.getMetaData(10, 1, "");
            this.getMetaCount("");
            this.$message({
              type: "success",
              message: "删除成功!",
            });
          });
        })
        .catch(() => {});
      const data = await deleteMeta({ ids: std.toString() });
      if (data.code == 200) {
        this.$message({
          message: '删除成功!',
          type: 'success',
        });
        this.getMetaData();
      } else {
        this.$message({
          message: '删除失败!',
          type: 'warning',
        });
      }
    },
    download(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          let ids = "";
          let ids = '';
          this.multipleSelection.forEach((e) => {
            ids += `id=${e.id}&`;
          });
          let res = ids.substring(0, ids.length - 1);
          // console.log(res);
          let url = "http://192.168.20.106/LFServer/Meta/Downloads?" + res;
          let url = 'http://192.168.20.106/LFServer/Meta/Downloads?' + res;
          window.open(url);
          this.closeDown();
        } else {
          console.log("下载失败");
          console.log('下载失败');
          this.closeDown();
          return false;
        }
@@ -474,8 +448,8 @@
    },
    closeDown() {
      this.showCodeBox = false;
      this.codeForm.password = "";
      this.codeForm.repassword = "";
      this.codeForm.password = '';
      this.codeForm.repassword = '';
    },
    downFormData() {
      // var std = [];
@@ -483,7 +457,7 @@
      //   std.push(this.multipleSelection[i].id);
      // }
      if (this.multipleSelection.length == 0) {
        alert("请先选择要下载的文件");
        alert('请先选择要下载的文件');
        return;
      }
      this.showCodeBox = true;
@@ -509,29 +483,27 @@
    handleStart(row) {
      publishMeta(row.id).then((res) => {
        console.log(res);
        this.getMetaData(10, 1, "");
        this.getMetaCount("");
        this.getMetaData(10, 1, '');
        this.getMetaCount('');
      });
    },
    handleStop(row) {
      console.log(row.id);
      unpublishMeta(row.id).then((res) => {
        console.log(res);
        this.getMetaData(10, 1, "");
        this.getMetaCount("");
        this.getMetaData(10, 1, '');
        this.getMetaCount('');
      });
    },
    // 条数修改
    handleSizeChange(val) {
      this.pageSize = val;
      this.getMetaData(this.pageSize, 1, this.searchName);
      this.getMetaCount(this.searchName);
      this.listData.pageSize = val;
      this.getMetaData();
    },
    // 页数修改
    handleCurrentChange(val) {
      this.pageNum = val;
      this.getMetaData(this.pageSize, this.pageNum, this.searchName);
      this.getMetaCount(this.searchName);
      this.listData.pageIndex = val;
      this.getMetaData();
    },
  },
};