| | |
| | | <template>
|
| | | <div class="tools-entry">
|
| | | <div class="entry-wrap">
|
| | | <el-carousel :height="rowSize==3?'600px':'770px'" :autoplay="false" arrow="never">
|
| | | <el-carousel
|
| | | :height="rowSize==3?'600px':'770px'"
|
| | | :autoplay="false"
|
| | | arrow="never"
|
| | | :indicator-position="carousels.length==1?'none':''"
|
| | | >
|
| | | <el-carousel-item v-for="(carousel,index) in carousels" :key="index">
|
| | | <div class="app-list clearFix sdk-list">
|
| | | <!-- <draggable v-model="carousel" @start="drag=true" @end="drag=false"> -->
|
| | |
| | | <div class="app-icon">
|
| | | <img
|
| | | :src="item.iconBlob.indexOf(',')>0? item.iconBlob:`data:image/png;base64,${item.iconBlob}`"
|
| | | style="width:82%"
|
| | | />
|
| | | </div>
|
| | | <div class="app-name">{{item.sdk_name}}</div>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | <!-- </draggable> -->
|
| | | <!-- <div class="app" v-for="dock in stateDocks" :key="dock.id" @click="dockClick(dock)">
|
| | | <div class="wrap">
|
| | | <div class="app-icon">
|
| | | <img :src="dock.src" :alt="dock.alt" />
|
| | | </div>
|
| | | <div class="app-name">{{dock.title}}</div>
|
| | | </div>
|
| | | </div>
|
| | | <div class="app sdk" v-for="(item,index) in sdkList" :key="index+'sdk'">
|
| | | <div class="wrap">
|
| | | <div class="app-icon">
|
| | | <img
|
| | | :src="item.iconBlob.indexOf(',')>0? item.iconBlob:`data:image/png;base64,${item.iconBlob}`"
|
| | | style="width:82%"
|
| | | />
|
| | | </div>
|
| | | <div class="app-name">{{item.sdk_name}}</div>
|
| | | </div>
|
| | | </div>-->
|
| | | </div>
|
| | | </el-carousel-item>
|
| | | </el-carousel>
|
| | |
| | | <script>
|
| | | import draggable from "vuedraggable"
|
| | | import { findAllSdk } from '@/api/taskMange';
|
| | | import { chunkArr } from '@/scripts/util';
|
| | | import bus from '@/plugin/bus'
|
| | | export default {
|
| | | name: 'toolsEntry',
|
| | | components: { draggable },
|
| | | data () {
|
| | | data() {
|
| | | return {
|
| | | publicPath: process.env.BASE_URL,
|
| | | loading: true,
|
| | |
| | | title: '人员跟踪'
|
| | | }
|
| | | ],
|
| | | rowSize: 3,
|
| | | badgeNum: 0,
|
| | | //rowSize: 3,
|
| | | // badgeNum: 0,
|
| | | }
|
| | | },
|
| | | computed: {
|
| | | stateDocks () {
|
| | | stateDocks() {
|
| | | return this.$store.state.desktop.docks
|
| | | },
|
| | | carousels () {
|
| | | carousels() {
|
| | | let pages = 0;
|
| | | let tempArr = this.stateDocks.concat(this.installedSdk);
|
| | | let upgradeArr = tempArr.filter(item => item.isUpgrade);
|
| | | this.badgeNum = upgradeArr.length;
|
| | | let arr = null;
|
| | | //根据屏幕高度来判断是展示3排还是4排 阈值:970
|
| | | if (window.innerHeight >= 930) {
|
| | | this.rowSize = 4;
|
| | | //this.rowSize = 4;
|
| | | arr = this.chunk(tempArr, 24);
|
| | | } else {
|
| | | this.rowSize = 3;
|
| | | //this.rowSize = 3;
|
| | | arr = this.chunk(tempArr, 18);
|
| | | }
|
| | | console.log(arr)
|
| | | return arr
|
| | | },
|
| | | badgeNum() {
|
| | | let tempArr = this.stateDocks.concat(this.installedSdk);
|
| | | return tempArr.filter(item => item.isUpgrade).length;
|
| | | },
|
| | | rowSize() {
|
| | | if (window.innerHeight >= 930) {
|
| | | return 4;
|
| | | } else {
|
| | | return 3;
|
| | | }
|
| | | }
|
| | | },
|
| | | mounted () {
|
| | | mounted() {
|
| | | this.getAllSdk();
|
| | | //this.carousels =
|
| | | window.addEventListener('message', e => {
|
| | |
| | | location.assign("/");
|
| | | return;
|
| | | }
|
| | |
|
| | | // 打开检索, toSearch?showType=findByPic&targetId=108ba0bc-b0a1-433d-8e1e-d5d2e712b53b&picSmUrl=192.168.20.10:6700/47628,7cc869f3a9c714&compType=1
|
| | | if (msg.indexOf("toSearch") >= 0) {
|
| | | let params = msg.substring(7);
|
| | | this.addFrameByName("search", params)
|
| | | }
|
| | | if (msg.indexOf("toCluster") >= 0) {
|
| | | let params = msg.substring(8);
|
| | | this.addFrameByName("searchForCluster", params)
|
| | | }
|
| | |
|
| | | if (msg.indexOf("toOpenApp") >= 0) {
|
| | | let id = msg.substring(10);
|
| | | console.log(id);
|
| | | this.addFrameByID(id)
|
| | | }
|
| | | }
|
| | | });
|
| | |
|
| | | },
|
| | | methods: {
|
| | | chunk (arr, size) {
|
| | | chunk(arr, size) {
|
| | | size = Math.max(size, 0);
|
| | | const len = arr == null ? 0 : arr.length;
|
| | | if (!len || size < 1) {
|
| | |
| | | }
|
| | | return result
|
| | | },
|
| | | getAllSdk () {
|
| | | getAllSdk() {
|
| | | findAllSdk().then(res => {
|
| | | this.installedSdk = res.data.filter(item => item.installed)
|
| | | }).catch(e => {
|
| | | console.log(e)
|
| | | })
|
| | | },
|
| | | dockClick (dock) {
|
| | | dockClick(dock) {
|
| | | if (dock.type === '1') {
|
| | | window.open(dock.url);
|
| | | } else if (dock.type === '2' && !dock.isOpen) {
|
| | |
|
| | | this.$store.dispatch('desktop/addFrame', {
|
| | | id: dock.id,
|
| | | icon: dock.src,
|
| | |
| | | } else if (dock.type === '2' && dock.isOpen) {
|
| | | this.$store.commit('desktop/resetMinFrame', dock.id);
|
| | | }
|
| | | |
| | | },
|
| | | resetDockItem () {
|
| | | resetDockItem() {
|
| | | const dockItems = document.getElementsByClassName('dock-item');
|
| | | const dockMask = document.getElementsByClassName('dock-mask')[0];
|
| | | for (let i = 0; i < dockItems.length; i++) {
|
| | |
| | | }
|
| | | dockMask.style.width = dockItems.length * 60 + 40 + 'px';
|
| | | },
|
| | | addFrameByName (name, params) {
|
| | |
|
| | | addFrameByName(name, params) {
|
| | | let dock = null;
|
| | | this.$store.state.desktop.docks.forEach(app => {
|
| | | if (app.name === name) {
|
| | | dock = app;
|
| | | }
|
| | | });
|
| | |
|
| | | if (dock.isOpen) {
|
| | | this.$store.dispatch('desktop/closeFrame', dock);
|
| | | }
|
| | |
| | | url: dock.url,
|
| | | screenshot: ''
|
| | | });
|
| | | },
|
| | | addFrameByID(id, params) {
|
| | | let dock = null;
|
| | | let toClose = null
|
| | | this.$store.state.desktop.docks.forEach(app => {
|
| | | if (app.id == id) {
|
| | | dock = app;
|
| | | }
|
| | | if (app.name == "algorithmManage") {
|
| | | toClose = app
|
| | | }
|
| | | });
|
| | | this.dockClick(dock)
|
| | | }
|
| | | }
|
| | | };
|
| | |
| | | height: 110px;
|
| | | margin: auto;
|
| | | position: relative;
|
| | | border-radius: 10px;
|
| | | img {
|
| | | vertical-align: middle;
|
| | | margin-right: -3px;
|
| | | width: 82px;
|
| | | // height: 82px;
|
| | | }
|
| | | .badge {
|
| | | position: absolute;
|