ZZJ
2022-01-26 c7298c0ad9c728f55618ad4f924f723f7d2d0a38
src/pages/search/index/Searching.vue
@@ -2,24 +2,39 @@
  <div class="searching-box">
    <div class="searching-right">
      <div class="searching-right-nav">
        <el-breadcrumb separator-class="el-icon-arrow-right" style="display: inline-block;">
        <el-breadcrumb
          separator-class="el-icon-arrow-right"
          style="display: inline-block"
        >
          <el-breadcrumb-item>
            <span @click="uploadChange">检索</span>
          </el-breadcrumb-item>
          <el-breadcrumb-item v-if="!VideoPhotoData.uploadType">全部</el-breadcrumb-item>
          <el-breadcrumb-item v-if="VideoPhotoData.uploadType">以图搜图</el-breadcrumb-item>
          <el-breadcrumb-item v-if="!VideoPhotoData.uploadType"
            >全部</el-breadcrumb-item
          >
          <el-breadcrumb-item v-if="VideoPhotoData.uploadType"
            >以图搜图</el-breadcrumb-item
          >
        </el-breadcrumb>
      </div>
      <div class="searching-right-content">
        <div class="top">
          <el-tooltip content="以图搜图" placement="bottom" popper-class="atooltip">
          <el-tooltip
            content="以图搜图"
            placement="bottom"
            popper-class="atooltip"
          >
            <el-button
              @click="showUpload"
              type="primary"
              icon="el-icon-camera-solid"
              size="mini"
              circle
              :style="VideoPhotoData.uploadDiaplay ? 'margin-right: 20px;' : 'margin-right: 20px;background-color:#cccccc;border-color:#cccccc'"
              :style="
                VideoPhotoData.uploadDiaplay
                  ? 'margin-right: 20px;'
                  : 'margin-right: 20px;background-color:#cccccc;border-color:#cccccc'
              "
            ></el-button>
          </el-tooltip>
          <p class="p-label" style="width:16%">
@@ -30,7 +45,7 @@
              :disabled="isDisabled"
              collapse-tags
              size="mini"
              style="width:calc(100% - 40px);min-width: 120px;"
              style="width: calc(100% - 40px); min-width: 120px"
              placeholder="请选择"
              @change="tagChange"
            >
@@ -53,7 +68,7 @@
              :disabled="typeDisable"
              collapse-tags
              size="mini"
              style="width:calc(100% - 40px);min-width: 120px;"
              style="width: calc(100% - 40px); min-width: 120px"
              placeholder="请选择"
            >
              <!-- <el-option
@@ -83,7 +98,7 @@
              :disabled="isDisabled"
              collapse-tags
              size="mini"
              style="width:calc(100% - 64px);min-width: 120px;"
              style="width: calc(100% - 64px); min-width: 120px"
              placeholder="请选择"
            >
              <el-option
@@ -94,7 +109,7 @@
              ></el-option>
            </el-select>
          </p>
          <p class="p-date" style="width:19%;vertical-align: top;">
          <p class="p-date" style="width: 19%; vertical-align: top">
            <el-date-picker
              size="mini"
              v-model="searchTime"
@@ -110,32 +125,49 @@
            <el-input
              placeholder="请输入内容"
              prefix-icon="el-icon-search"
              style="width: calc(100% - 75px);min-width:100px;margin-left:10px;margin-right: 10px;"
              style="
                width: calc(100% - 75px);
                min-width: 100px;
                margin-left: 10px;
                margin-right: 10px;
              "
              v-model="VideoPhotoData.inputValue"
              size="mini"
            ></el-input>
            <el-button type="primary" size="mini" @click="searchingBtn">搜索</el-button>
            <el-button type="primary" size="mini" @click="searchingBtn"
              >搜索</el-button
            >
          </p>
          <p class="p-clear">
            <b class="clear-searching" @click="clearSearch">重置</b>
          </p>
        </div>
        <div ref="mid" style="height:calc(100% - 50px);">
        <div ref="mid" style="height: calc(100% - 50px)">
          <div class="left-selection" v-if="VideoPhotoData.uploadDiaplay">
            <upload-img ref="uploadImg" @labelDisabled="disabled"></upload-img>
          </div>
          <div
            id="searchMid"
            class="mid"
            :style="{width: VideoPhotoData.uploadDiaplay ? 'calc(100% - 315px)' : '100%'}"
            :style="{
              width: VideoPhotoData.uploadDiaplay
                ? 'calc(100% - 315px)'
                : '100%',
            }"
          >
            <div class="right-section" ref="scrollContain">
              <Card
                v-for="(item, index) in VideoPhotoData.cards"
                :class="item.activeObject.id === VideoPhotoData.activeCard ? 'my-active-card' : ''"
                :class="
                  item.activeObject.id === VideoPhotoData.activeCard
                    ? 'my-active-card'
                    : ''
                "
                :key="index + 'u'"
                :outHeight="'162px'"
                :outWidth="VideoPhotoData.uploadDiaplay?searchImgCardWidth:cardWidth"
                :outWidth="
                  VideoPhotoData.uploadDiaplay ? searchImgCardWidth : cardWidth
                "
                :data="item"
                :searchTime="searchTimeFormated"
                :showType="showType"
@@ -186,13 +218,21 @@
              <p>黑名单 ></p>
            </div>
            <div class="baseList">
              <el-checkbox-group v-model="VideoPhotoData.selectBlacks" @change="blackAngWhite">
                <div class="base" v-for="(item, index) in VideoPhotoData.blackList" :key="index">
              <el-checkbox-group
                v-model="VideoPhotoData.selectBlacks"
                @change="blackAngWhite"
              >
                <div
                  class="base"
                  v-for="(item, index) in VideoPhotoData.blackList"
                  :key="index"
                >
                  <el-checkbox
                    :label="item.value"
                    :title="item.title"
                    :disabled="item.disabled"
                  >{{item.title}}</el-checkbox>
                    >{{ item.title }}</el-checkbox
                  >
                </div>
              </el-checkbox-group>
            </div>
@@ -202,20 +242,32 @@
              <p>白名单 ></p>
            </div>
            <div class="baseList">
              <el-checkbox-group v-model="VideoPhotoData.selectWhites" @change="blackAngWhite">
                <div class="base" v-for="(item, index) in VideoPhotoData.whiteList" :key="index">
              <el-checkbox-group
                v-model="VideoPhotoData.selectWhites"
                @change="blackAngWhite"
              >
                <div
                  class="base"
                  v-for="(item, index) in VideoPhotoData.whiteList"
                  :key="index"
                >
                  <el-checkbox
                    :label="item.value"
                    :title="item.title"
                    :disabled="item.disabled"
                  >{{item.title}}</el-checkbox>
                    >{{ item.title }}</el-checkbox
                  >
                </div>
              </el-checkbox-group>
            </div>
          </div>
          <div class="buttons">
            <el-button type="primary" @click="saveAddBase(item, index)">保存</el-button>
            <el-button type="default" @click="closeWindow(index)">取消</el-button>
            <el-button type="primary" @click="saveAddBase(item, index)"
              >保存</el-button
            >
            <el-button type="default" @click="closeWindow(index)"
              >取消</el-button
            >
          </div>
        </div>
      </hsc-window>
@@ -231,7 +283,7 @@
export default {
  components: {
    Card,
    UploadImg
    UploadImg,
  },
  data () {
    return {
@@ -248,7 +300,7 @@
      taskValues: [],
      searchTime: [
        this.$moment().format("YYYY-MM-DD 00:00:00"),
        this.$moment().format("YYYY-MM-DD HH:mm:ss")
        this.$moment().format("YYYY-MM-DD HH:mm:ss"),
      ],
      searchText: "",
      currentPage: 1,
@@ -256,8 +308,8 @@
  },
  computed: {
    searchTimeFormated(){
      return this.format(this.searchTime)
    }
      return this.format(this.searchTime);
    },
  },
  created () {
    this.TreeDataPool.readonly = true;
@@ -268,13 +320,13 @@
  },
  mounted () {
    this.$nextTick(() => {
      let scrollContain = this.$refs.scrollContain
      this.VideoPhotoData.scrollContainDom = scrollContain
      let list = this.TreeDataPool.localVedioList.filter(i => {
        return i.progress == 100
      })
      this.TreeDataPool.localVedioList = list
    })
      let scrollContain = this.$refs.scrollContain;
      this.VideoPhotoData.scrollContainDom = scrollContain;
      let list = this.TreeDataPool.localVedioList.filter((i) => {
        return i.progress == 100;
      });
      this.TreeDataPool.localVedioList = list;
    });
    window.addEventListener("resize", this.getHeight);
    this.getCenter();
    this.getHeight();
@@ -285,11 +337,11 @@
    //     this.VideoTaskData.tasks[this.VideoTaskData.activeIndex].taskId
    //   ];
    // }
      let start =  getUrlKey("start")
      let end =  getUrlKey("end")
    let start = getUrlKey("start");
    let end = getUrlKey("end");
    if (start&&end) {
      this.searchTime = [start,end]
     this.VideoPhotoData.searchTime = [start,end]
      this.searchTime = [start, end];
      this.VideoPhotoData.searchTime = [start, end];
    }else{
      this.searchTime = this.getDateInit();
      this.VideoPhotoData.searchTime = this.getDateInit();
@@ -301,10 +353,10 @@
      this.VideoPhotoData.uploadDiaplay = true;
      this.VideoPhotoData.picUrl = getUrlKey("picSmUrl");
      this.VideoPhotoData.uploadImg = getUrlKey("picSmUrl");
      this.VideoPhotoData.uploadType = true
      this.VideoPhotoData.compTargetId = getUrlKey("targetId")
      this.VideoPhotoData.compTargetType = getUrlKey("compType")
      this.VideoPhotoData.size = 30
      this.VideoPhotoData.uploadType = true;
      this.VideoPhotoData.compTargetId = getUrlKey("targetId");
      this.VideoPhotoData.compTargetType = getUrlKey("compType");
      this.VideoPhotoData.size = 30;
      this.VideoPhotoData.compareTabs = ["esData"];
      this.VideoPhotoData.findPerson2(); // 查找此人
    } else {
@@ -318,7 +370,7 @@
    this.VideoPhotoData.queryTaskList();
    this.VideoPhotoData.queryDictionary();
    this.$nextTick(() => {
      bus.$on("changePage", page => {
      bus.$on("changePage", (page) => {
        this.currentPage = page;
        this.VideoPhotoData.page = page;
      });
@@ -339,8 +391,8 @@
    this.VideoPhotoData.selectWhites = [];
  },
  watch: {
    'TreeDataPool.treeActiveName' (n, o) {
      if (n && n == 'camera') {
    "TreeDataPool.treeActiveName"(n, o) {
      if (n && n == "camera") {
        this.VideoPhotoData.treeNodes = [];
        this.setLoadSearch(this.VideoPhotoData.querySearchList());
      }
@@ -365,14 +417,13 @@
        if (newVal !== oldVal) {
          this.VideoPhotoData.treeNodes = newVal;
          if (this.VideoPhotoData.uploadType) {
            this.VideoPhotoData.findPersonByPage()
            this.VideoPhotoData.findPersonByPage();
          } else {
            this.setLoadSearch(this.VideoPhotoData.querySearchList());
          }
        }
      },
      deep: true    //深度监听
      deep: true, //深度监听
    },
    "DataStackPool.selectedDir": {
      handler (nodes, oldNodes) {
@@ -380,23 +431,31 @@
          // this.VideoPhotoData.treeNodes = nodes.map(i=>{return i.id});
          this.VideoPhotoData.treeNodes = [nodes.id];
          if (this.VideoPhotoData.uploadType) {
            this.VideoPhotoData.findPersonByPage()
            this.VideoPhotoData.findPersonByPage();
          } else {
            // this.VideoPhotoData.querySearchList();
            this.setLoadSearch(this.VideoPhotoData.querySearchList());
          }
        }
      },
      deep: true
      deep: true,
    },
    "VideoPhotoData.activeCard": function (value) {
      let card = this.$refs.scrollContain.getElementsByClassName("my-active-card");
      let card =
        this.$refs.scrollContain.getElementsByClassName("my-active-card");
      console.log(1);
      console.log(card);
      if (card.length > 0) {
        let cardHeight = card[0].clientHeight;
        let cardTop = card[0].offsetTop;
        let scrollTop = this.$refs.scrollContain.scrollTop;
        let divHeight = this.$refs.scrollContain.clientHeight;
        console.log(2);
        console.log(cardHeight);
        console.log(cardTop);
        console.log(scrollTop);
        console.log(divHeight);
        if (
          cardTop - cardHeight - scrollTop > divHeight ||
          cardTop - cardHeight - scrollTop < 0
@@ -414,17 +473,17 @@
      }
    },
    "VideoPhotoData.selectBlacks": function (value) {
      this.blackAngWhite()
      this.blackAngWhite();
    },
    "VideoPhotoData.selectWhites": function (value) {
      this.blackAngWhite()
      this.blackAngWhite();
    },
    "VideoPhotoData.uploadDiaplay": function (value) {
      this.getHeight();
      if (value) {
        if (!this.VideoPhotoData.uploadType) {
          let scrollContain = this.$refs.scrollContain
          this.VideoPhotoData.scrollContainDom = scrollContain
          let scrollContain = this.$refs.scrollContain;
          this.VideoPhotoData.scrollContainDom = scrollContain;
          this.VideoPhotoData.showType = "search";
          // this.VideoPhotoData.querySearchList();
          //this.setLoadSearch(this.VideoPhotoData.querySearchList());
@@ -437,15 +496,15 @@
        this.VideoPhotoData.uploadType = false;
        this.VideoPhotoData.showType = "search";
      }
    }
    },
  },
  methods: {
    isShowUpload () {
      this.getHeight();
      if (this.VideoPhotoData.uploadDiaplay) {
        if (!this.VideoPhotoData.uploadType) {
          let scrollContain = this.$refs.scrollContain
          this.VideoPhotoData.scrollContainDom = scrollContain
          let scrollContain = this.$refs.scrollContain;
          this.VideoPhotoData.scrollContainDom = scrollContain;
          this.VideoPhotoData.showType = "search";
          // this.VideoPhotoData.querySearchList();
          //this.setLoadSearch(this.VideoPhotoData.querySearchList());
@@ -478,62 +537,65 @@
    },
    uploadChange () {
      this.VideoPhotoData.uploadDiaplay = false;
      this.VideoPhotoData.clearStatus()
      this.VideoPhotoData.clearStatus();
    },
    blackAngWhite () {
      if (this.VideoPhotoData.selectBlacks.length > 0) {
        for (let i = 0; i < this.VideoPhotoData.whiteList.length; i++) {
          //this.VideoPhotoData.whiteList[i].disabled = true
          this.$set(this.VideoPhotoData.whiteList[i], 'disabled', true)
          this.$set(this.VideoPhotoData.whiteList[i], "disabled", true);
        }
      }
      if (this.VideoPhotoData.selectBlacks.length == 0) {
        for (let i = 0; i < this.VideoPhotoData.whiteList.length; i++) {
          //this.VideoPhotoData.whiteList[i].disabled = false
          this.$set(this.VideoPhotoData.whiteList[i], 'disabled', false)
          this.$set(this.VideoPhotoData.whiteList[i], "disabled", false);
        }
      }
      if (this.VideoPhotoData.selectWhites.length > 0) {
        for (let i = 0; i < this.VideoPhotoData.blackList.length; i++) {
          // this.VideoPhotoData.blackList[i].disabled = true   
          this.$set(this.VideoPhotoData.blackList[i], 'disabled', true)
          this.$set(this.VideoPhotoData.blackList[i], "disabled", true);
        }
      }
      if (this.VideoPhotoData.selectWhites.length == 0) {
        for (let i = 0; i < this.VideoPhotoData.blackList.length; i++) {
          //this.VideoPhotoData.blackList[i].disabled = false          
          this.$set(this.VideoPhotoData.blackList[i], 'disabled', false)
          this.$set(this.VideoPhotoData.blackList[i], "disabled", false);
        }
      }
    },
    saveAddBase (item, index) {
      if (this.VideoPhotoData.selectBlacks.length === 0 && this.VideoPhotoData.selectWhites.length === 0) {
      if (
        this.VideoPhotoData.selectBlacks.length === 0 &&
        this.VideoPhotoData.selectWhites.length === 0
      ) {
        this.$notify({
          title: "注意",
          message: "请选择要添加的底库",
          type: "warning"
        })
        return
          type: "warning",
        });
        return;
      }
      let res = this.VideoPhotoData.addBase(item)
      res.then(data => {
      let res = this.VideoPhotoData.addBase(item);
      res.then((data) => {
        if (data.success) {
          this.$notify({
            title: "成功",
            message: data.data,
            type: "success"
          })
            type: "success",
          });
        } else {
          this.$notify({
            title: "失败",
            message: data.data,
            type: "error"
          })
            type: "error",
          });
        }
        this.CardList.addBaseList.splice(index, 1);
        this.VideoPhotoData.selectBlacks = []
        this.VideoPhotoData.selectWhites = []
      })
        this.VideoPhotoData.selectBlacks = [];
        this.VideoPhotoData.selectWhites = [];
      });
    },
    getDetails (ev, index) {
      //let obj = this.CardList.datalist[index];
@@ -542,18 +604,19 @@
      this.CardList.details = Array.from(
        new Set([...this.CardList.details, ...[obj]])
      );
      console.log(this.CardList.details);
      // this.CardList.details.push(obj);
      this.VideoPhotoData.activeCard = obj.activeObject.id;
    },
    toAdd (item) {
      this.CardList.addBaseList.push(item)
      this.CardList.addBaseList.push(item);
    },
    handleClose (done) {
      this.$confirm('确认关闭?')
        .then(_ => {
      this.$confirm("确认关闭?")
        .then((_) => {
          done();
        })
        .catch(_ => { });
        .catch((_) => {});
    },
    showUpload () {
      this.VideoPhotoData.uploadDiaplay = !this.VideoPhotoData.uploadDiaplay;
@@ -578,13 +641,13 @@
      end.setTime(nowDate.getTime() + 3600 * 1000 * 24 - 1);
      return [
        this.$moment(start).format("YYYY-MM-DD HH:mm:ss"),
        this.$moment(end).format("YYYY-MM-DD HH:mm:ss")
        this.$moment(end).format("YYYY-MM-DD HH:mm:ss"),
      ];
    },
    format (array) {
      return [
        this.$moment(array[0]).format("YYYY-MM-DD HH:mm:ss"),
        this.$moment(array[1]).format("YYYY-MM-DD HH:mm:ss")
        this.$moment(array[1]).format("YYYY-MM-DD HH:mm:ss"),
      ];
    },
    searchingBtn () {
@@ -597,10 +660,10 @@
      this.VideoPhotoData.page = 1;
      this.VideoPhotoData.queryTabs = this.tagValues;
      //处理搜索类型
      var tempArr = this.taskValues.map(task => task.split(','));
      var tempArr = this.taskValues.map((task) => task.split(","));
      var tasks = [];
      tempArr.forEach(arr => {
        tasks = tasks.concat(arr)
      tempArr.forEach((arr) => {
        tasks = tasks.concat(arr);
      });
      this.VideoPhotoData.queryTasks = tasks;
@@ -621,7 +684,7 @@
    },
    stringToNum () {
      var arr = [];
      this.alarmValues.forEach(element => {
      this.alarmValues.forEach((element) => {
        if (element == "-1") {
          arr.push(-1);
        }
@@ -678,9 +741,9 @@
      }
    },
    clearSearch () {
      this.tagValues = []
      this.taskValues = []
      this.alarmValues = []
      this.tagValues = [];
      this.taskValues = [];
      this.alarmValues = [];
      this.VideoPhotoData.queryTabs = [];
      this.VideoPhotoData.queryTasks = [];
      this.VideoPhotoData.queryAlarmlevel = [];
@@ -701,14 +764,14 @@
    getCenter () {
      this.center = {
        x: document.documentElement.clientWidth / 2 - 250,
        y: document.documentElement.clientHeight / 2 - 200
        y: document.documentElement.clientHeight / 2 - 200,
      };
    },
    setLoadSearch (fn) {
      this.AuthData.setLoading("searchMid", this);
      fn.then(_ => {
      fn.then((_) => {
        this.AuthData.closeLoad();
      })
      });
    },
    tagChange (obj) {
      if (obj.length > 0) {
@@ -720,8 +783,8 @@
      this.VideoPhotoData.queryTabs = obj;
      this.setLoadSearch(this.VideoPhotoData.querySearchList());
    }
  }
    },
  },
};
</script>
@@ -921,7 +984,7 @@
      width: 100%;
      height: 100%;
      .el-loading-spinner-search {
        background: url('/images/search/searchLoading.gif') no-repeat;
        background: url("/images/search/searchLoading.gif") no-repeat;
      }
    }
  }