From 9506094f2cd434cd4bc70f67dc858fad97294f9d Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@iotlink.com>
Date: 星期四, 30 七月 2020 15:52:46 +0800
Subject: [PATCH] 添加检索应用
---
src/assets/gif/blue.gif | 0
src/assets/gif/loading.gif | 0
src/pages/search/index/Searching.vue | 905 +++++++++++++++++++++++++++++++++++++++++++++++
src/pages/search/index/mixins.ts | 28 +
src/assets/gif/searchLoading.gif | 0
src/pages/search/index/App.vue | 116 ++++++
src/pages/search/index/main.ts | 34 +
7 files changed, 1,083 insertions(+), 0 deletions(-)
diff --git a/src/assets/gif/blue.gif b/src/assets/gif/blue.gif
new file mode 100644
index 0000000..22f0162
--- /dev/null
+++ b/src/assets/gif/blue.gif
Binary files differ
diff --git a/src/assets/gif/loading.gif b/src/assets/gif/loading.gif
new file mode 100644
index 0000000..ae4fa55
--- /dev/null
+++ b/src/assets/gif/loading.gif
Binary files differ
diff --git a/src/assets/gif/searchLoading.gif b/src/assets/gif/searchLoading.gif
new file mode 100644
index 0000000..dfda6b2
--- /dev/null
+++ b/src/assets/gif/searchLoading.gif
Binary files differ
diff --git a/src/pages/search/index/App.vue b/src/pages/search/index/App.vue
new file mode 100644
index 0000000..d17a996
--- /dev/null
+++ b/src/pages/search/index/App.vue
@@ -0,0 +1,116 @@
+<template>
+ <div class="column">
+ <div class="column-left" :style="`height:${screenHeight}px;`">
+ <div class="resize-bar"></div>
+ <div class="resize-line"></div>
+ <div class="resize-save">
+ <left-nav :appName="'Video'" :height="screenHeight - 40"></left-nav>
+ </div>
+ </div>
+ <div class="column-right" :style="`height:${screenHeight}px;`">
+ <right-side />
+ </div>
+ </div>
+</template>
+
+<script>
+import LeftNav from "@/components/LeftNav";
+// import CameraVideo from "./components/Video.vue";
+import RightSide from "./Searching"
+
+export default {
+ name: "SearchPage",
+ components: {
+ LeftNav,
+ RightSide
+ },
+ data() {
+ return {
+ screenHeight: 0,
+ }
+ },
+ mounted() {
+ this.screenHeight = document.documentElement.clientHeight - 20;
+ window.onresize = () => {
+ return (() => {
+ this.screenHeight = document.documentElement.clientHeight - 20;
+ })();
+ };
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.column {
+ overflow: hidden;
+}
+.column-left {
+ height: inherit;
+ background-color: #fff;
+ position: relative;
+ float: left;
+}
+.column-right {
+ height: 100%;
+ padding: 16px;
+ background-color: #eee;
+ box-sizing: border-box;
+ overflow: hidden;
+}
+.resize-save {
+ position: absolute;
+ top: 0;
+ right: 5px;
+ bottom: 0;
+ left: 0;
+ padding: 16px;
+ overflow-x: hidden;
+}
+.resize-bar {
+ width: 310px;
+ height: inherit;
+ resize: horizontal;
+ cursor: ew-resize;
+ opacity: 0;
+ overflow: scroll;
+ max-width: 500px; //璁惧畾鏈�澶ф媺浼搁暱搴�
+ min-width: 310px; //璁惧畾鏈�灏忓搴�
+}
+/* 鎷栨嫿绾� */
+.resize-line {
+ position: absolute;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ border-right: 2px solid #eee;
+ border-left: 1px solid #bbb;
+ pointer-events: none;
+}
+.resize-bar:hover ~ .resize-line,
+.resize-bar:active ~ .resize-line {
+ border-left: 1px dashed skyblue;
+}
+.resize-bar::-webkit-scrollbar {
+ width: 200px;
+ height: inherit;
+}
+
+/* Firefox鍙湁涓嬮潰涓�灏忓潡鍖哄煙鍙互鎷変几 */
+@supports (-moz-user-select: none) {
+ .resize-bar:hover ~ .resize-line,
+ .resize-bar:active ~ .resize-line {
+ border-left: 1px solid #bbb;
+ }
+ .resize-bar:hover ~ .resize-line::after,
+ .resize-bar:active ~ .resize-line::after {
+ content: "";
+ position: absolute;
+ width: 16px;
+ height: 16px;
+ bottom: 0;
+ right: -8px;
+ // background: url(./resize.svg);
+ background-size: 100% 100%;
+ }
+}
+</style>
diff --git a/src/pages/search/index/Searching.vue b/src/pages/search/index/Searching.vue
new file mode 100644
index 0000000..7c00b8e
--- /dev/null
+++ b/src/pages/search/index/Searching.vue
@@ -0,0 +1,905 @@
+<template>
+ <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-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>
+ </div>
+ <div class="searching-right-content">
+ <div class="top">
+ <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'"
+ ></el-button>
+ </el-tooltip>
+ <p class="p-label" style="width:16%">
+ <b>鏍囩锛�</b>
+ <el-select
+ v-model="tagValues"
+ multiple
+ @change="searchingBtn"
+ :disabled="isDisabled"
+ collapse-tags
+ size="mini"
+ style="width:calc(100% - 40px);min-width: 120px;"
+ placeholder="璇烽�夋嫨"
+ >
+ <el-option
+ v-for="item in VideoPhotoData.tabs"
+ style="font-size:12px"
+ :key="item.key"
+ :label="item.title"
+ :value="item.value"
+ :title="item.title"
+ ></el-option>
+ </el-select>
+ </p>
+ <p class="p-task" style="width:16%">
+ <b>鍦烘櫙锛�</b>
+ <el-select
+ v-model="taskValues"
+ multiple
+ @change="searchingBtn"
+ :disabled="typeDisable"
+ collapse-tags
+ size="mini"
+ style="width:calc(100% - 40px);min-width: 120px;"
+ placeholder="璇烽�夋嫨"
+ >
+ <!-- <el-option
+ v-for="item in VideoPhotoData.tasks"
+ style="font-size:12px"
+ :key="item.taskid+'x'"
+ :label="item.del_flag && item.taskname !=='浜鸿劯娴嬫俯'? item.taskname+'锛堝凡鍒犻櫎锛�' : item.taskname"
+ :value="item.taskid"
+ :title="item.del_flag && item.taskname !=='浜鸿劯娴嬫俯'? item.taskname+'锛堝凡鍒犻櫎锛�' : item.taskname"
+ ></el-option>-->
+ <el-option
+ v-for="item in VideoPhotoData.tasks"
+ style="font-size:12px"
+ :key="item.id+'x'"
+ :value="item.id"
+ :label="item.isDelete ? item.name+'锛堝凡鍒犻櫎锛�' : item.name"
+ :title="item.isDelete ? item.name+'锛堝凡鍒犻櫎锛�' : item.name"
+ ></el-option>
+ </el-select>
+ </p>
+ <p class="p-level" style="width:18%">
+ <b>浜嬩欢绛夌骇锛�</b>
+ <el-select
+ v-model="alarmValues"
+ multiple
+ @change="searchingBtn"
+ :disabled="isDisabled"
+ collapse-tags
+ size="mini"
+ style="width:calc(100% - 64px);min-width: 120px;"
+ placeholder="璇烽�夋嫨"
+ >
+ <el-option
+ v-for="item in VideoPhotoData.dictionary.ALARMLEVEL"
+ :key="item.id"
+ :label="item.name"
+ :value="item.value"
+ ></el-option>
+ </el-select>
+ </p>
+ <p class="p-date" style="width:19%">
+ <el-date-picker
+ size="mini"
+ v-model="searchTime"
+ @change="searchingBtn"
+ type="datetimerange"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ :default-time="['00:00:00','23:59:59']"
+ style="width:99%;min-width:200px"
+ ></el-date-picker>
+ </p>
+ <p class="p-input" style="width:19%">
+ <el-input
+ placeholder="璇疯緭鍏ュ唴瀹�"
+ prefix-icon="el-icon-search"
+ 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>
+ </p>
+ <p class="p-clear">
+ <b class="clear-searching" @click="clearSearch">閲嶇疆</b>
+ </p>
+ </div>
+ <div ref="mid" style="height:calc(100% - 72px)">
+ <!-- <div id="searchMid" class="mid" ref="scrollContain" v-if="!VideoPhotoData.uploadDiaplay">
+ <Card
+ :class="item.activeObject.id === VideoPhotoData.activeCard ? 'my-active-card' : ''"
+ v-for="(item, index) in VideoPhotoData.cards"
+ :key="index + 'a'"
+ :outHeight="'155px'"
+ :outWidth="cardWidth"
+ :data="item"
+ :showType="showType"
+ @detailsClick="getDetails($event, index)"
+ @addToBase="toAdd"
+ ></Card>
+ </div>-->
+ <div id="searchMid" class="mid">
+ <div class="left-selection" v-if="VideoPhotoData.uploadDiaplay">
+ <upload-img ref="uploadImg" @labelDisabled="disabled"></upload-img>
+ </div>
+ <div
+ class="right-section"
+ ref="scrollContain"
+ :style="VideoPhotoData.uploadDiaplay ? 'calc(100% - 315px)' : 'width:100%'"
+ >
+ <Card
+ v-for="(item, index) in VideoPhotoData.cards"
+ :class="item.activeObject.id === VideoPhotoData.activeCard ? 'my-active-card' : ''"
+ :key="index + 'u'"
+ :outHeight="'162px'"
+ :outWidth="VideoPhotoData.uploadDiaplay?searchImgCardWidth:cardWidth"
+ :data="item"
+ :showType="showType"
+ @detailsClick="getDetails($event, index)"
+ @addToBase="toAdd"
+ ></Card>
+ </div>
+ </div>
+ </div>
+ <div class="foot">
+ <el-pagination
+ :current-page="VideoPhotoData.page"
+ @current-change="changePages"
+ @size-change="sizeChange"
+ :page-sizes="VideoPhotoData.pageSizeOption"
+ :page-size="VideoPhotoData.size"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="VideoPhotoData.total"
+ ></el-pagination>
+ </div>
+ </div>
+ </div>
+ <hsc-window-style-metal class="windown-model">
+ <hsc-window
+ v-for="(item, index) in CardList.addBaseList"
+ :closeButton="true"
+ @closebuttonclick="closeWindow(index)"
+ :key="index"
+ @update:height="resizeHeight"
+ @update:width="resizeWidth"
+ style="background:white; height:475px"
+ :left="center.x + index * 10"
+ :top="center.y + index * 10"
+ :resizable="true"
+ positionHint="center"
+ :isScrollable="true"
+ :minWidth="662"
+ :minHeight="479"
+ :maxWidth="10000"
+ :maxHeight="7000"
+ :height="defaultHeight"
+ :width="defaultWidth"
+ >
+ <div class="addToBase">
+ <div class="topLabel">鍔犲叆搴曞簱</div>
+ <div class="items">
+ <div class="lable">
+ <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
+ :label="item.value"
+ :title="item.title"
+ :disabled="item.disabled"
+ >{{item.title}}</el-checkbox>
+ </div>
+ </el-checkbox-group>
+ </div>
+ </div>
+ <div class="items">
+ <div class="lable">
+ <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
+ :label="item.value"
+ :title="item.title"
+ :disabled="item.disabled"
+ >{{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>
+ </div>
+ </div>
+ </hsc-window>
+ </hsc-window-style-metal>
+ </div>
+</template>
+
+<script>
+import Card from "@/components/subComponents/Card";
+import UploadImg from "@/components/searching/UploadImg";
+import bus from "./main";
+export default {
+ components: {
+ Card,
+ UploadImg
+ },
+ data() {
+ return {
+ cardWidth: "",
+ center: "",
+ defaultHeight: 432,
+ defaultWidth: 600,
+ isDisabled: false,
+ typeDisable: false,
+ showType: "search",
+ searchImgCardWidth: "",
+ tagValues: [],
+ alarmValues: [],
+ dialogVisible: false,
+ taskValues: [],
+ searchTime: [
+ this.$moment().format("YYYY-MM-DD 00:00:00"),
+ this.$moment().format("YYYY-MM-DD HH:mm:ss")
+ ],
+ searchText: "",
+ currentPage: 1,
+
+ };
+ },
+
+ created() {
+ this.TreeDataPool.readonly = true;
+ this.TreeDataPool.gbReadonly = true;
+ this.TreeDataPool.multiple = true;
+ this.TreeDataPool.clean();
+ this.TreeDataPool.fetchTreeData();
+ },
+ 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
+ })
+ window.addEventListener("resize", this.getHeight);
+ this.getCenter();
+ this.getHeight();
+ this.blackAngWhite();
+ // 瑙嗛鐩戞帶浠诲姟璺宠浆 灞忚斀 20200730
+ // if (this.$route.query.from === "video") {
+ // this.VideoPhotoData.queryTasks = this.taskValues = [
+ // this.VideoTaskData.tasks[this.VideoTaskData.activeIndex].taskId
+ // ];
+ // }
+
+ this.searchTime = this.getDateInit();
+ this.VideoPhotoData.searchTime = this.getDateInit();
+
+ // 鏆傛椂鍏抽棴璺宠浆 20200730
+ // if (this.$route.query.showType === "findByPic") {
+ if (0) {
+ this.VideoPhotoData.uploadDiaplay = true;
+ console.log("鍒璺宠繃鏉ョ殑浠ュ浘鎼滃浘");
+ this.VideoPhotoData.picUrl = this.$route.query.picSmUrl;
+ this.VideoPhotoData.uploadImg = this.$route.query.picSmUrl;
+ this.VideoPhotoData.uploadType = true
+ this.VideoPhotoData.compTargetId = this.$route.query.targetId
+ this.VideoPhotoData.compTargetType = this.$route.query.compType
+ this.VideoPhotoData.size = 30
+ this.VideoPhotoData.compareTabs = ["esData"];
+ this.VideoPhotoData.findPerson2(); // 鏌ユ壘姝や汉
+ // this.$nextTick(() => {
+ // this.$refs.uploadImg.rightSectionDisplay = true;
+ // });
+ } else {
+ this.searchTime = this.getDateInit();
+ this.VideoPhotoData.searchTime = this.getDateInit();
+ // this.VideoPhotoData.querySearchList();
+ this.setLoadSearch(this.VideoPhotoData.querySearchList());
+ }
+
+ this.VideoPhotoData.queryTagList();
+ this.VideoPhotoData.queryTaskList();
+ this.VideoPhotoData.queryDictionary();
+ this.$nextTick(() => {
+ bus.$on("changePage", page => {
+ this.currentPage = page;
+ this.VideoPhotoData.page = page;
+ });
+ });
+ },
+ destroyed() {
+ window.removeEventListener("resize", this.getHeight);
+ this.CardList.details = [];
+ // this.TreeDataPool.treeActiveName = "camera";
+ this.VideoPhotoData.queryAlarmlevel = [];
+ this.VideoPhotoData.inputValue = "";
+ this.VideoPhotoData.queryTabs = [];
+ this.VideoPhotoData.queryTasks = [];
+ this.VideoPhotoData.treeNodes = [];
+
+ this.CardList.addBaseList = [];
+ this.VideoPhotoData.selectBlacks = [];
+ this.VideoPhotoData.selectWhites = [];
+ },
+ watch: {
+ "TreeDataPool.showTreeBox"(value) {
+ this.getHeight();
+ if (this.VideoPhotoData.realSmallPath.length > 0) {
+ this.VideoPhotoData.findPersonByPage();
+ } else {
+ // this.VideoPhotoData.querySearchList();
+ this.setLoadSearch(this.VideoPhotoData.querySearchList());
+ }
+ },
+ // "TreeDataPool.selectedNodes": function(newValue,oldValue) {
+ // if (newValue !== oldValue) {
+ // this.VideoPhotoData.treeNodes = newValue;
+ // console.log("鐩戝惉鏍戣妭鐐逛腑鐨勫埛鏂版柟娉�", newValue,oldValue);
+ // this.VideoPhotoData.querySearchList();
+ // }
+ // },
+ "TreeDataPool.selectedNodes": {
+ handler: function (newVal, oldVal) {
+ if (newVal !== oldVal) {
+ this.VideoPhotoData.treeNodes = newVal;
+ if (this.VideoPhotoData.uploadType) {
+ this.VideoPhotoData.findPersonByPage()
+ } else {
+ // this.VideoPhotoData.querySearchList();
+ this.setLoadSearch(this.VideoPhotoData.querySearchList());
+ }
+ }
+ },
+ deep: true //娣卞害鐩戝惉
+ },
+ "DataStackPool.selectedDir": {
+ handler(nodes, oldNodes) {
+ if (nodes !== oldNodes) {
+ // this.VideoPhotoData.treeNodes = nodes.map(i=>{return i.id});
+ this.VideoPhotoData.treeNodes = [nodes.id];
+ if (this.VideoPhotoData.uploadType) {
+ this.VideoPhotoData.findPersonByPage()
+ } else {
+ // this.VideoPhotoData.querySearchList();
+ this.setLoadSearch(this.VideoPhotoData.querySearchList());
+ }
+ }
+ },
+ deep: true
+ },
+ "VideoPhotoData.activeCard": function (value) {
+ let card = this.$refs.scrollContain.getElementsByClassName("my-active-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;
+ if (
+ cardTop - cardHeight - scrollTop > divHeight ||
+ cardTop - cardHeight - scrollTop < 0
+ )
+ this.$refs.scrollContain.scrollTo(0, cardTop - cardHeight);
+ }
+ },
+ "VideoPhotoData.uploadType": function (value) {
+ console.log("椤甸潰妯″紡锛�", value)
+ if (value) {
+ this.typeDisable = true;
+ } else {
+ this.typeDisable = false;
+ this.VideoPhotoData.querySearchList();
+ }
+ },
+ "VideoPhotoData.selectBlacks": function (value) {
+ this.blackAngWhite()
+ },
+ "VideoPhotoData.selectWhites": function (value) {
+ this.blackAngWhite()
+ },
+ tagValues: function (newValue, oldValue) {
+ if (newValue.length > 0) {
+ this.showType = "compare";
+ } else {
+ this.showType = "search";
+ }
+ if (newValue.length !== oldValue.length) {
+ console.log("tagValue涓殑鍒锋柊鏂规硶");
+ // this.VideoPhotoData.querySearchList();
+ this.setLoadSearch(this.VideoPhotoData.querySearchList());
+ }
+ },
+ "VideoPhotoData.uploadDiaplay": function (value) {
+ this.getHeight();
+ console.log("upload鐨勫�兼槸锛�", value)
+ if (value) {
+ if (!this.VideoPhotoData.uploadType) {
+ console.log("uploadDisplay涓殑鍒锋柊");
+ let scrollContain = this.$refs.scrollContain
+ this.VideoPhotoData.scrollContainDom = scrollContain
+ this.VideoPhotoData.showType = "search";
+ // this.VideoPhotoData.querySearchList();
+ //this.setLoadSearch(this.VideoPhotoData.querySearchList());
+ this.isDisabled = false;
+ } else {
+ //this.VideoPhotoData.scrollContainDom = '';
+ this.VideoPhotoData.showType = "findByPic";
+ }
+ } else {
+ this.VideoPhotoData.uploadType = false;
+ this.VideoPhotoData.showType = "search";
+ }
+ }
+ },
+ methods: {
+ resizeWidth(w) {
+ this.defaultWidth = w;
+ },
+ resizeHeight(h) {
+ this.defaultHeight = h;
+ },
+ getHeight() {
+ let w = this.$refs.mid.offsetWidth;
+ let integer = parseInt(w / 330);
+ let integerSearchImg = parseInt((w - 300) / 325);
+ this.handleSizeChange(integer, integerSearchImg);
+ this.cardWidth = `calc(${100 / integer}% - 20px)`;
+ this.searchImgCardWidth = `calc(${100 / integerSearchImg}% - 20px)`;
+ },
+ uploadChange() {
+ this.VideoPhotoData.uploadDiaplay = false;
+ },
+ 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)
+ }
+ }
+ 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)
+ }
+ }
+ 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)
+ }
+ }
+ 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)
+ }
+ }
+ },
+ saveAddBase(item, index) {
+ if (this.VideoPhotoData.selectBlacks.length === 0 && this.VideoPhotoData.selectWhites.length === 0) {
+ this.$notify({
+ title: "娉ㄦ剰",
+ message: "璇烽�夋嫨瑕佹坊鍔犵殑搴曞簱",
+ type: "warning"
+ })
+ return
+ }
+ let res = this.VideoPhotoData.addBase(item)
+ res.then(data => {
+ console.log("then", data)
+ if (data.success) {
+ this.$notify({
+ title: "鎴愬姛",
+ message: data.data,
+ type: "success"
+ })
+ } else {
+ this.$notify({
+ title: "澶辫触",
+ message: data.data,
+ type: "error"
+ })
+ }
+ this.CardList.addBaseList.splice(index, 1);
+ this.VideoPhotoData.selectBlacks = []
+ this.VideoPhotoData.selectWhites = []
+ })
+ },
+ getDetails(ev, index) {
+ //let obj = this.CardList.datalist[index];
+ this.CardList.datalist = this.VideoPhotoData.cards;
+ let obj = this.CardList.datalist[index];
+ this.CardList.details = Array.from(
+ new Set([...this.CardList.details, ...[obj]])
+ );
+ // this.CardList.details.push(obj);
+ this.VideoPhotoData.activeCard = obj.activeObject.id;
+ },
+ toAdd(item) {
+ this.CardList.addBaseList.push(item)
+ },
+ handleClose(done) {
+ this.$confirm('纭鍏抽棴锛�')
+ .then(_ => {
+ done();
+ })
+ .catch(_ => { });
+ },
+ showUpload() {
+ this.VideoPhotoData.uploadDiaplay = !this.VideoPhotoData.uploadDiaplay;
+ //鍒濆鍖栨暟鎹�
+ this.VideoPhotoData.clearStatus();
+ this.CardList.details = [];
+ // if (this.VideoPhotoData.uploadDiaplay) {
+
+ // }
+ //this.VideoPhotoData.uploadImg = require("C:/Users/mdesign/Desktop/cvasdv.jpg");
+ },
+ getDateInit() {
+ // 瑕佹眰 榛樿涓�涓湀
+ const end = new Date();
+ const start = new Date();
+ const nowDate = new Date();
+ nowDate.setHours(0);
+ nowDate.setMinutes(0);
+ nowDate.setSeconds(0);
+ nowDate.setMilliseconds(0);
+ start.setTime(nowDate.getTime() - 3600 * 1000 * 24 * 30);
+ 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")
+ ];
+ },
+ 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")
+ ];
+ },
+ searchingBtn() {
+ // let obj = document.getElementById('searchMid');
+ // console.log(obj,'target',document)
+ // let load = this.$loading({
+ // target:obj,
+ // })
+ // load.close();
+ // console.log(load,'loading')
+ // this.AuthData.loading = true
+ this.VideoPhotoData.page = 1;
+ this.VideoPhotoData.queryTabs = this.tagValues;
+ //澶勭悊鎼滅储绫诲瀷
+ var tempArr = this.taskValues.map(task => task.split(','));
+ var tasks = [];
+ tempArr.forEach(arr => {
+ tasks = tasks.concat(arr)
+ });
+ this.VideoPhotoData.queryTasks = tasks;
+
+ this.VideoPhotoData.queryAlarmlevel = this.stringToNum();
+ this.VideoPhotoData.searchTime = this.format(this.searchTime);
+ //this.VideoPhotoData.inputValue = this.searchText;
+ this.VideoPhotoData.showType = this.showType;
+ if (!this.VideoPhotoData.uploadType) {
+ console.log("鏌ヨ鏂规硶");
+ this.VideoPhotoData.uploadDiaplay = false;
+ //this.VideoPhotoData.page = this.currentPage;
+ // this.VideoPhotoData.querySearchList();
+ this.setLoadSearch(this.VideoPhotoData.querySearchList());
+ } else {
+ console.log("浠ュ浘鎼滃浘");
+ //this.VideoPhotoData.page = this.currentPage;
+ // this.VideoPhotoData.findPersonByPage();
+ this.setLoadSearch(this.VideoPhotoData.findPersonByPage());
+ }
+ },
+ stringToNum() {
+ var arr = [];
+ this.alarmValues.forEach(element => {
+ if (element == "-1") {
+ arr.push(-1);
+ }
+ if (element == "1") {
+ arr.push(1);
+ }
+ if (element == "2") {
+ arr.push(2);
+ }
+ if (element == "3") {
+ arr.push(3);
+ }
+ if (element == "4") {
+ arr.push(4);
+ }
+ if (element == "5") {
+ arr.push(5);
+ }
+ });
+ // console.log("杈撳嚭鐨勬暟缁勶細", arr);
+ return arr;
+ },
+ changePages(page) {
+ this.VideoPhotoData.page = page;
+ if (!this.VideoPhotoData.uploadType) {
+ console.log("鍒嗛〉鏀瑰彉锛�")
+ this.VideoPhotoData.uploadDiaplay = false;
+ // this.VideoPhotoData.querySearchList();
+ this.setLoadSearch(this.VideoPhotoData.querySearchList());
+ } else {
+ // this.VideoPhotoData.findPersonByPage();
+ this.setLoadSearch(this.VideoPhotoData.findPersonByPage());
+ }
+ },
+ closeWindow(index) {
+ this.CardList.addBaseList.splice(index, 1);
+ },
+ handleSizeChange(integer, integerSearchImg) {
+ if (this.VideoPhotoData.uploadDiaplay) {
+ this.VideoPhotoData.size = integerSearchImg * 10;
+ //this.VideoPhotoData.findPersonByPage();
+ } else {
+ this.VideoPhotoData.size = integer * 10;
+ //this.VideoPhotoData.querySearchList();
+ }
+ },
+ sizeChange(size) {
+ if (this.VideoPhotoData.uploadType) {
+ this.VideoPhotoData.size = size;
+ this.VideoPhotoData.findPersonByPage();
+ } else {
+ this.VideoPhotoData.uploadDiaplay = false;
+ this.VideoPhotoData.size = size;
+ // this.VideoPhotoData.querySearchList();
+ this.setLoadSearch(this.VideoPhotoData.querySearchList());
+ }
+ },
+ clearSearch() {
+ this.tagValues = []
+ this.taskValues = []
+ this.alarmValues = []
+ this.VideoPhotoData.queryTabs = [];
+ this.VideoPhotoData.queryTasks = [];
+ this.VideoPhotoData.queryAlarmlevel = [];
+ this.VideoPhotoData.searchTime = this.getDateInit();
+ this.VideoPhotoData.inputValue = "";
+ this.searchTime = this.getDateInit();
+ if (!this.VideoPhotoData.uploadType) {
+ // this.VideoPhotoData.querySearchList();
+ this.setLoadSearch(this.VideoPhotoData.querySearchList());
+ } else {
+ // this.VideoPhotoData.findPersonByPage();
+ this.setLoadSearch(this.VideoPhotoData.findPersonByPage());
+ }
+ },
+ disabled(data) {
+ this.isDisabled = data;
+ },
+ getCenter() {
+ this.center = {
+ x: document.documentElement.clientWidth / 2 - 250,
+ y: document.documentElement.clientHeight / 2 - 200
+ };
+ },
+ setLoadSearch(fn) {
+ this.AuthData.setLoading("searchMid", this);
+ fn.then(_ => {
+ this.AuthData.closeLoad();
+ })
+ }
+ }
+};
+</script>
+
+<style lang="scss">
+.searching-box {
+ width: 100%;
+ height: 100% !important;
+ float: left;
+ //position: relative;
+ .searching-right {
+ width: 100%;
+ background-color: #e9ebf2;
+ height: 100%;
+ padding: 0px 20px;
+ box-sizing: border-box;
+ .searching-right-nav {
+ height: 50px;
+ width: 100%;
+ line-height: 58px;
+ text-align: left;
+ font-size: 14px !important;
+ box-sizing: border-box;
+ color: rgba(0, 0, 0, 0.78) !important;
+ }
+ .searching-right-content {
+ height: calc(100% - 135px);
+ width: 100%;
+ box-sizing: border-box;
+ .top {
+ background-image: linear-gradient(-180deg, #ffffff 13%, #e9ebf2 100%);
+ height: 76px;
+ width: 100%;
+ padding: 5px 22px;
+ box-sizing: border-box;
+ text-align: left;
+ // line-height: 55px;
+ white-space: nowrap;
+ overflow-x: auto;
+ overflow-y: hidden;
+ .p-label,
+ .p-task,
+ .p-level,
+ .p-date,
+ .p-input,
+ .p-clear {
+ display: inline-block;
+ padding-right: 10px;
+ box-sizing: border-box;
+ margin-top: 20px;
+ b:hover {
+ color: #2249b4;
+ }
+ }
+ .clear-searching {
+ cursor: pointer;
+ text-decoration: underline;
+ width: 40px;
+ font-size: 13px;
+ color: #3d68e1;
+ }
+ }
+ .mid {
+ width: 100%;
+ height: 100%;
+ padding: 10px;
+ overflow: auto;
+ position: relative;
+ .my-card {
+ float: left;
+ margin: 0px 14px 10px 0px;
+ cursor: pointer;
+ }
+ }
+ .foot {
+ overflow: hidden;
+ width: 100%;
+ height: 80px;
+ line-height: 80px;
+ padding-top: 24px;
+ padding-right: 24px;
+ box-sizing: border-box;
+ text-align: right;
+ }
+ }
+ }
+ .el-select__tags {
+ max-width: 250px !important;
+ }
+}
+.el-select-dropdown {
+ width: 200px !important;
+}
+.el-tag {
+ max-width: 85% !important;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+.addToBase {
+ width: 98%;
+ height: 450px;
+ position: relative;
+ .topLabel {
+ margin-top: 20px;
+ height: 40px;
+ border-bottom: 1px solid #eee;
+ font-family: PingFangSC-Medium;
+ font-size: 20px;
+ font-weight: 600;
+ line-height: 1rem;
+ color: #222222;
+ text-align: left;
+ margin-left: 15px;
+ }
+ .items {
+ width: 100%;
+ height: auto;
+ max-height: 35%;
+ overflow-y: auto;
+ margin: 20px 0px;
+ .lable {
+ width: 15%;
+ margin-top: 10px;
+ float: left;
+ //font-family: PingFangSC-Medium;
+ font-size: 14px;
+ font-weight: 600;
+ }
+ .baseList {
+ width: 85%;
+ height: 100%;
+ float: left;
+
+ // display: flex;
+ // justify-content: flex-start;
+ .base {
+ //flex-wrap: wrap;
+ width: calc(33% - 10px);
+ padding: 0px 5px;
+ line-height: 30px;
+ float: left;
+ text-align: left;
+ font-size: 12px !important;
+ .el-checkbox {
+ width: 100%;
+ display: block;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ .el-checkbox__label {
+ display: inline !important;
+ }
+ }
+ }
+ }
+ }
+ .buttons {
+ position: absolute;
+ right: 0px;
+ bottom: 15px;
+ }
+}
+.search {
+ background-color: #eee;
+}
+</style>
+<style lang="scss" scoped>
+#searchMid {
+ .el-loading-mask {
+ .el-loading-spinner {
+ width: 100%;
+ height: 100%;
+ .el-loading-spinner-search {
+ background: url("../../../assets/gif/searchLoading.gif") no-repeat;
+ }
+ }
+ }
+ .left-selection {
+ width: 300px;
+ height: 100%;
+ float: left;
+ margin-right: 15px;
+ }
+ .right-section {
+ //width: calc(100% - 315px);
+ height: 100%;
+ float: left;
+ overflow: auto;
+ position: relative;
+ }
+}
+</style>
diff --git a/src/pages/search/index/main.ts b/src/pages/search/index/main.ts
new file mode 100644
index 0000000..849c98f
--- /dev/null
+++ b/src/pages/search/index/main.ts
@@ -0,0 +1,34 @@
+import Vue from 'vue';
+import ElementUI from 'element-ui';
+import 'element-ui/lib/theme-chalk/index.css';
+import "@/assets/css/element-variables.scss";
+import "../../../assets/css/common.scss"
+import "../../../assets/css/overried.scss"
+
+import "../../../assets/icons/alibaba/iconfont.css";
+import "../../../assets/icons/basic/iconfont.css";
+import "../../../assets/icons/iconfont.css";
+import "../../../assets/icons/symbol.js";
+
+import App from './App.vue'
+import moment from "moment";
+Vue.prototype.$moment = moment;
+
+import Mixin from "./mixins";
+Vue.mixin(Mixin);
+
+Vue.use(ElementUI)
+
+import * as VueWindow from "@hscmap/vue-window";
+Vue.use(VueWindow);
+
+Vue.filter('moment', function (value, formatString) {
+ formatString = formatString || 'YYYY-MM-DD HH:mm:ss';
+ return moment(value).format(formatString);
+
+});
+
+export default Vue.prototype.bus = new Vue({
+ el: '#app',
+ render: h => h(App)
+})
diff --git a/src/pages/search/index/mixins.ts b/src/pages/search/index/mixins.ts
new file mode 100644
index 0000000..163c814
--- /dev/null
+++ b/src/pages/search/index/mixins.ts
@@ -0,0 +1,28 @@
+import VideoPhotoData from "@/Pool/VideoPhotoData";
+import VideoTaskData from "@/Pool/VideoTaskData";
+import TreeDataPool from "@/Pool/TreeData";
+import CardList from "@/Pool/CardList";
+import DataStackPool from "@/Pool/dataStack"
+import AuthData from '@/Pool/AuthData';
+
+/* eslint-disable */
+const onlyVideoPhotoData = new VideoPhotoData
+const onlyVideoTaskData = new VideoTaskData
+const onlyTreeDataPool = new TreeDataPool
+const onlyDataStack = new DataStackPool
+const onlyCardList = new CardList
+const onlyAuthData = new AuthData
+
+const mixin = {
+ data() {
+ return {
+ TreeDataPool: onlyTreeDataPool,
+ VideoPhotoData: onlyVideoPhotoData,
+ CardList: onlyCardList,
+ DataStackPool: onlyDataStack,
+ VideoTaskData: onlyVideoTaskData,
+ AuthData: onlyAuthData,
+ };
+ },
+};
+export default mixin;
\ No newline at end of file
--
Gitblit v1.8.0