提交 fa6cb2ae 作者: 翁进城

feat: 1. 视图库

2. AI识别
3. 机库视频
上级 bc5e5a8a
流水线 #10981 已失败 于阶段
...@@ -168,7 +168,7 @@ export default { ...@@ -168,7 +168,7 @@ export default {
delete data.callback; delete data.callback;
break; break;
} */ } */
if (data.callback) { if (data?.callback) {
this.callbackList[event] = data.callback; this.callbackList[event] = data.callback;
delete data.callback; delete data.callback;
} }
......
...@@ -4,6 +4,7 @@ const NodePolyfillPlugin = require("node-polyfill-webpack-plugin"); // 引入 ...@@ -4,6 +4,7 @@ const NodePolyfillPlugin = require("node-polyfill-webpack-plugin"); // 引入
module.exports = defineConfig({ module.exports = defineConfig({
publicPath: "./", publicPath: "./",
transpileDependencies: true, transpileDependencies: true,
productionSourceMap: false,
configureWebpack: { configureWebpack: {
plugins: [new NodePolyfillPlugin()], plugins: [new NodePolyfillPlugin()],
}, },
......
...@@ -51,6 +51,7 @@ ...@@ -51,6 +51,7 @@
"qs": "^6.12.3", "qs": "^6.12.3",
"recorder-core": "^1.2.23020100", "recorder-core": "^1.2.23020100",
"terraformer-wkt-parser": "^1.2.1", "terraformer-wkt-parser": "^1.2.1",
"throttle-debounce": "^1.0.1",
"url": "^0.11.0", "url": "^0.11.0",
"vue": "^2.6.14", "vue": "^2.6.14",
"vue-clipboard2": "^0.3.3", "vue-clipboard2": "^0.3.3",
......
...@@ -2,4 +2,6 @@ export { default as Control_API } from './modules/uav_control'; ...@@ -2,4 +2,6 @@ export { default as Control_API } from './modules/uav_control';
export { default as flightTaskAPI } from './modules/flightTask'; export { default as flightTaskAPI } from './modules/flightTask';
export { default as AirLine } from './modules/air-line'; export { default as AirLine } from './modules/air-line';
export { default as Map } from './modules/map'; export { default as Map } from './modules/map';
export { default as AI_API} from './modules/ai'; export { default as AI_API} from './modules/ai';
\ No newline at end of file export { default as ViewLibrary } from './modules/viewLibrary';
export { default as TaskInfo } from './modules/taskInfo';
\ No newline at end of file
import axios from "axios"; import axios from "axios";
class AI_API { export default class AI_API {
// 人脸 // 人脸
static face(data){ static face(data){
return axios.post("http://api.user.mmcuav.cn/aidemo/facedetect", data); // return axios.post("http://api.user.mmcuav.cn/aidemo/facedetect", data); // 百度的ai
return axios.post("https://hawk.mmcuav.cn/faceaiapi/detect/imageface", data);
} }
// 车牌 // 车牌
static car(data) { static plate(data) {
return axios.post("http://183.62.225.251:9090/api/inflet/v1/tasks/e01d1d01-52e2-4883-a5de-0ae268764db0/predict", data); // return axios.post("http://183.62.225.251:9090/api/inflet/v1/tasks/e01d1d01-52e2-4883-a5de-0ae268764db0/predict", data); // 共达地
return axios.post("https://hawk.mmcuav.cn/plateaiapi/detect/image", data); // 自研
} }
// 人流 // 人流
static person(data){ static crowd(data){
return axios.post("http://183.62.225.251:9090/api/inflet/v1/tasks/18493235-4dd0-4f54-ab55-c1856ca7e3a5/predict", data); return axios.post("https://hawk.mmcuav.cn/gddaiapi/api/inflet/v1/tasks/18493235-4dd0-4f54-ab55-c1856ca7e3a5/predict", data);
} }
// 烟雾 // 烟雾
static smoke(data){ static smoke(data){
return axios.post("http://183.62.225.251:9090/api/inflet/v1/tasks/fca2eb65-8b99-4109-9f9e-a9f7fd06ac1f/predict", data); return axios.post("https://hawk.mmcuav.cn/gddaiapi/api/inflet/v1/tasks/fca2eb65-8b99-4109-9f9e-a9f7fd06ac1f/predict", data);
} }
// 漏油识别 // 漏油识别
static oilLeak(data){ static oilLeak(data){
return axios.post("http://183.62.225.251:9002/detect/image", data); return axios.post("https://hawk.mmcuav.cn/oilaiapi/detect/image", data);
} }
// 裸土识别 // 裸土识别
static bareSoil(data){ static bareSoil(data){
return axios.post("http://183.62.225.251:9090/api/inflet/v1/tasks/05a9d657-8339-4575-bced-04b60b74c690/predict", data); return axios.post("https://hawk.mmcuav.cn/gddaiapi/api/inflet/v1/tasks/05a9d657-8339-4575-bced-04b60b74c690/predict", data);
} }
} }
\ No newline at end of file
import request from "../request";
// 创建视图数据
export default class TaskInfo {
// 生成架次号
static flightSortieId(data) {
return request({
url: `/admin-api/bpm/task-info/flightsortieid?id=${data.id}`,
method: "post",
});
}
}
import request from "../request";
// 创建视图数据
export default class ViewLibrary {
// 视图库中创建文件
static create(data) {
return request({
url: "/admin-api/data/view-library/create",
method: "post",
data,
});
}
//上传文件
static uploadFile(data) {
return request({
url: "/admin-api/infra/file/upload",
method: "post",
data,
});
}
static page(params) {
return request({
url: "/admin-api/data/view-library/page",
method: "get",
params,
});
}
}
import Vue from "vue";
const Bus = new Vue();
let confirm = null; //外部传进来的confirm方法
let alert = null;
/**
* 处理canvas错误
*/
export default function handlerCanvasError(options) {
confirm = options.confirm;
alert = options.alert;
//每X秒检查webgl是否停止工作
let handle = setInterval(() => {
let errEl = document.querySelector(`.cesium-widget-errorPanel`);
//错误提示的元素被创建, 说明cesium已经停止渲染
if (errEl) {
console.info("Cesium已停止渲染");
alert("Cesium已停止渲染");
//将webgl崩溃的事件广播出去, 让各个组件自已做恢复
Bus.$emit("webglStop");
errorAlert();
clearInterval(handle);
}
}, 2000);
}
function errorAlert() {
if (alert) {
alert(
"由于浏览器压力过大,地图停止展示,请手动刷新,若未解决,请重启浏览器。",
"警告",
{
confirmButtonText: "确定",
callback: (action) => {},
}
);
} else {
let instance = confirm(
"由于浏览器压力过大,地图停止展示,请手动刷新,若未解决,请重启浏览器。",
"警告",
{
confirmButtonText: "刷新",
cancelButtonText: "关闭",
type: "warning",
}
)
.then(() => {
window.location.reload(true);
})
.catch(() => {
instance.close();
});
}
}
// 测试效果
/* setTimeout(() => {
errorAlert();
}, 3000); */
...@@ -32,10 +32,6 @@ export default { ...@@ -32,10 +32,6 @@ export default {
type: String, type: String,
default: "", default: "",
}, },
brand: {
type: String,
default: "qingliu",
},
// 持续滚动的文字 // 持续滚动的文字
name: { name: {
type: String, type: String,
...@@ -57,25 +53,12 @@ export default { ...@@ -57,25 +53,12 @@ export default {
* 播放器组件名 * 播放器组件名
*/ */
playerCom() { playerCom() {
switch (this.brand.toLowerCase()) { if (this.url?.toLowerCase().includes("pzsp://")) {
case "flv": return "QingLiuPlayer";
return "LiveNVRPlayer"; } else if (this.url?.toLowerCase().includes("srs://")) {
return "SRSPlayer";
case "srs": } else {
return "SRSPlayer"; return "LiveNVRPlayer";
case "livenvr":
return "LiveNVRPlayer";
case "qingliu":
return "QingLiuPlayer";
case "webrtc":
// return "LiveNVRPlayer";
return "SRSPlayer";
default:
return "LiveNVRPlayer";
} }
}, },
}, },
......
<template> <template>
<div> <div>
<Player @close="$emit('close')" :url="src.url" :brand="src.brand" :name="name" label="舱内" /> <Player @close="$emit('close')" :url="url" :name="name" label="舱内" />
</div> </div>
</template> </template>
...@@ -19,19 +19,10 @@ export default { ...@@ -19,19 +19,10 @@ export default {
name() { name() {
return `${this.hangar?.uav?.organizationName || ""}机库无人机`; return `${this.hangar?.uav?.organizationName || ""}机库无人机`;
}, },
src() { url() {
return ( let find = this.hangar?.streamConfiguration
this.hangar?.uav?.streamConfiguration ?.find((v) => v.urlType === 1)
?.find((v) => v.videoType === 2) return find?.originalUrl || '';
?.streamUrlMessage.map((v) => ({
label: v.streamType.toLocaleLowerCase(),
url: v.streamUrl,
brand: v.streamType,
}))[0] || {
url: "",
brand: "",
}
);
}, },
}, },
}; };
......
<template> <template>
<div> <div>
<Player @close="$emit('close')" :url="src.url" :brand="src.brand" :name="name" label="舱外" /> <Player @close="$emit('close')" :url="url" :name="name" label="舱外" />
</div> </div>
</template> </template>
...@@ -19,19 +19,10 @@ export default { ...@@ -19,19 +19,10 @@ export default {
name() { name() {
return `${this.hangar?.uav?.organizationName || ""}机库无人机`; return `${this.hangar?.uav?.organizationName || ""}机库无人机`;
}, },
src() { url() {
return ( let find = this.hangar?.streamConfiguration
this.hangar?.uav?.streamConfiguration ?.find((v) => v.urlType === 2)
?.find((v) => v.videoType === 3) return find?.originalUrl || '';
?.streamUrlMessage.map((v) => ({
label: v.streamType.toLocaleLowerCase(),
url: v.streamUrl,
brand: v.streamType,
}))[0] || {
url: "",
brand: "",
}
);
}, },
}, },
methods: {}, methods: {},
......
<template> <template>
<div> <div>
<Player @close="$emit('close')" :url="selectStream.url" :brand="selectStream.brand" :name="name" :label="label" /> <Player
@close="$emit('close')"
:url="selectUrl"
:name="name"
:label="label"
/>
<el-select v-model="selectUrl" class="select" popper-class="mmc"> <el-select v-model="selectUrl" class="select" popper-class="mmc">
<el-option <el-option
v-for="item in streamConfiguration" v-for="item in uav"
:label="item.brand" :label="item.label"
:value="item.url" :value="item.url"
:key="item.url" :key="item.url"
></el-option> ></el-option>
...@@ -34,44 +39,70 @@ export default { ...@@ -34,44 +39,70 @@ export default {
label() { label() {
return this.hangar?.uav?.organizationName || ""; return this.hangar?.uav?.organizationName || "";
}, },
uav(){
return this.hangar.uav;
},
/** /**
* 可选流 * 可选流
*/ */
streamConfiguration() { /**
return ( * 流选项
this.hangar?.uav?.streamConfiguration * @returns [{
?.find((v) => v.videoType === 1) value: "RTC",
?.streamUrlMessage.map((v) => ({ label: "低延迟"
url: /* coverStreamUrl(v.streamUrl, this.hangar.uav.deviceId) */ v.streamUrl, }]
brand: v.streamType, */
})) || [] streamOptions() {
); let streamOptions = [];
}, let streamConfiguration = this.uav?.streamConfiguration.find(
selectStream() { (item) => item.urlType === 0
return (
this.streamConfiguration.find(item => item.url === this.selectUrl) || {
url: "",
brand: "",
}
); );
if (streamConfiguration?.fluencyUrl) {
// 流畅地址
streamOptions.push({
label: "流畅",
value: "FLV",
url: streamConfiguration?.fluencyUrl,
});
}
if (streamConfiguration?.lowLatencyUrl) {
// 低延迟地址
streamOptions.push({
label: "低延迟",
value: "WEBRTC",
url: streamConfiguration?.lowLatencyUrl,
});
}
if (streamConfiguration?.originalUrl) {
// 原画地址
streamOptions.push({
label: "原画",
value: "QINGLIU",
url: streamConfiguration?.originalUrl,
});
}
return streamOptions;
}, },
}, },
mounted() { mounted() {
this.selectUrl = this.streamConfiguration[0]?.url || ''; this.selectUrl = this.streamOptions[0]?.url || "";
}, },
methods: {}, methods: {},
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.select ::v-deep{ .select ::v-deep {
width: 95px; width: 95px;
margin-top: 5px; margin-top: 5px;
input { input {
height: 30px; height: 30px;
} }
.el-select__caret { .el-select__caret {
display: flex; display: flex;
align-items: center; align-items: center;
......
...@@ -32,7 +32,6 @@ ...@@ -32,7 +32,6 @@
:enterable="false" :enterable="false"
> >
<el-checkbox <el-checkbox
:disabled="device.isOnline"
:value="hangar && device.deviceId === hangar.deviceId && device.isCheck" :value="hangar && device.deviceId === hangar.deviceId && device.isCheck"
@change="(e) => handClick(e, device)" @change="(e) => handClick(e, device)"
></el-checkbox> ></el-checkbox>
...@@ -74,6 +73,7 @@ ...@@ -74,6 +73,7 @@
<script> <script>
import { mapState } from "vuex"; import { mapState } from "vuex";
import { Control_API } from "../../../../../../api";
export default { export default {
name: "Item", name: "Item",
...@@ -83,11 +83,9 @@ export default { ...@@ -83,11 +83,9 @@ export default {
default: () => ({}), default: () => ({}),
}, },
}, },
inject: ['rootNode'], inject: ["rootNode"],
data() { data() {
return { return {};
device: {},
};
}, },
computed: { computed: {
...mapState("MMCFlightControlCenter", ["listCollapse"]), ...mapState("MMCFlightControlCenter", ["listCollapse"]),
...@@ -122,9 +120,9 @@ export default { ...@@ -122,9 +120,9 @@ export default {
// 切换订阅的机库, 需要先取消订阅旧机库, 再重新订阅新机库 // 切换订阅的机库, 需要先取消订阅旧机库, 再重新订阅新机库
this.hangar && this.hangar &&
this.$store.dispatch("MMCFlightControlCenter/hangar/unsubscribe"); this.$store.dispatch("MMCFlightControlCenter/hangar/unsubscribe");
this.uav && this.uav &&
this.$store.dispatch("MMCFlightControlCenter/uav/unsubscribe"); this.$store.dispatch("MMCFlightControlCenter/uav/unsubscribe");
// todo 由于unsubscribe操作会将hangar设置为null, 所以unsubscribe操作要放在if判断之后再执行 // todo 由于unsubscribe操作会将hangar设置为null, 所以unsubscribe操作要放在if判断之后再执行
if (isCheck) { if (isCheck) {
...@@ -151,9 +149,38 @@ export default { ...@@ -151,9 +149,38 @@ export default {
value: device.uav, value: device.uav,
}); });
this.$store.dispatch("MMCFlightControlCenter/uav/subscribe"); this.$store.dispatch("MMCFlightControlCenter/uav/subscribe");
// 获取无人机视频
if (!this.uav.streamConfiguration) {
Control_API.getDeviceStream({
deviceId: this.uav.id,
}).then((res) => {
this.$store.commit("MMCFlightControlCenter/uav/setState", {
key: "uav",
value: {
...this.uav,
streamConfiguration: res.data.list,
},
});
});
}
} else { } else {
this.$message.error("该机库中没有无人机!"); this.$message.error("该机库中没有无人机!");
} }
//获取机库中视频
if (!this.hangar.streamConfiguration) {
Control_API.getDeviceStream({
deviceId: this.hangar.id,
}).then((res) => {
this.$store.commit("MMCFlightControlCenter/hangar/setState", {
key: "hangar",
value: {
...this.hangar,
streamConfiguration: res.data.list,
},
});
});
}
} else { } else {
this.$store.commit("MMCFlightControlCenter/hangar/setState", { this.$store.commit("MMCFlightControlCenter/hangar/setState", {
key: "showPanel", key: "showPanel",
...@@ -170,7 +197,7 @@ export default { ...@@ -170,7 +197,7 @@ export default {
value: true, value: true,
}); });
} }
this.rootNode.$emit('hangarChange', { hangar: this.hangar }); //根节点发出机库更换事件 this.rootNode.$emit("hangarChange", { hangar: this.hangar }); //根节点发出机库更换事件
}, },
}, },
}; };
......
import Image from './src/main';
/* istanbul ignore next */
Image.install = function(Vue) {
Vue.component(Image.name, Image);
};
export default Image;
<template>
<transition name="viewer-fade">
<div tabindex="-1" ref="el-image-viewer__wrapper" class="el-image-viewer__wrapper" :style="{ 'z-index': viewerZIndex }">
<div class="el-image-viewer__mask" @click.self="handleMaskClick"></div>
<!-- CLOSE -->
<span class="el-image-viewer__btn el-image-viewer__close" @click="hide">
<i class="el-icon-close"></i>
</span>
<!-- ARROW -->
<template v-if="!isSingle">
<span
class="el-image-viewer__btn el-image-viewer__prev"
:class="{ 'is-disabled': !infinite && isFirst }"
@click="prev">
<i class="el-icon-arrow-left"/>
</span>
<span
class="el-image-viewer__btn el-image-viewer__next"
:class="{ 'is-disabled': !infinite && isLast }"
@click="next">
<i class="el-icon-arrow-right"/>
</span>
</template>
<!-- ACTIONS -->
<div class="el-image-viewer__btn el-image-viewer__actions">
<div class="el-image-viewer__actions__inner">
<i class="el-icon-zoom-out" @click="handleActions('zoomOut')"></i>
<i class="el-icon-zoom-in" @click="handleActions('zoomIn')"></i>
<i class="el-image-viewer__actions__divider"></i>
<i :class="mode.icon" @click="toggleMode"></i>
<i class="el-image-viewer__actions__divider"></i>
<i class="el-icon-refresh-left" @click="handleActions('anticlocelise')"></i>
<i class="el-icon-refresh-right" @click="handleActions('clocelise')"></i>
</div>
</div>
<!-- CANVAS -->
<div class="el-image-viewer__canvas">
<img
v-for="(url, i) in urlList"
v-if="i === index"
ref="img"
class="el-image-viewer__img"
:key="url"
:src="currentImg"
:style="imgStyle"
@load="handleImgLoad"
@error="handleImgError"
@mousedown="handleMouseDown"
crossOrigin>
</div>
</div>
</transition>
</template>
<script>
import { on, off } from 'element-ui/src/utils/dom';
import { rafThrottle, isFirefox } from 'element-ui/src/utils/util';
import { PopupManager } from 'element-ui/src/utils/popup';
const Mode = {
CONTAIN: {
name: 'contain',
icon: 'el-icon-full-screen'
},
ORIGINAL: {
name: 'original',
icon: 'el-icon-c-scale-to-original'
}
};
const mousewheelEventName = isFirefox() ? 'DOMMouseScroll' : 'mousewheel';
export default {
name: 'elImageViewer',
props: {
urlList: {
type: Array,
default: () => []
},
zIndex: {
type: Number,
default: 2000
},
onSwitch: {
type: Function,
default: () => {}
},
onClose: {
type: Function,
default: () => {}
},
initialIndex: {
type: Number,
default: 0
},
appendToBody: {
type: Boolean,
default: true
},
maskClosable: {
type: Boolean,
default: true
}
},
data() {
return {
index: this.initialIndex,
isShow: false,
infinite: true,
loading: false,
mode: Mode.CONTAIN,
transform: {
scale: 1,
deg: 0,
offsetX: 0,
offsetY: 0,
enableTransition: false
}
};
},
computed: {
isSingle() {
return this.urlList.length <= 1;
},
isFirst() {
return this.index === 0;
},
isLast() {
return this.index === this.urlList.length - 1;
},
currentImg() {
return this.urlList[this.index];
},
imgStyle() {
const { scale, deg, offsetX, offsetY, enableTransition } = this.transform;
const style = {
transform: `scale(${scale}) rotate(${deg}deg)`,
transition: enableTransition ? 'transform .3s' : '',
'margin-left': `${offsetX}px`,
'margin-top': `${offsetY}px`
};
if (this.mode === Mode.CONTAIN) {
style.maxWidth = style.maxHeight = '100%';
}
return style;
},
viewerZIndex() {
const nextZIndex = PopupManager.nextZIndex();
return this.zIndex > nextZIndex ? this.zIndex : nextZIndex;
}
},
watch: {
index: {
handler: function(val) {
this.reset();
this.onSwitch(val);
}
},
currentImg(val) {
this.$nextTick(_ => {
const $img = this.$refs.img[0];
if (!$img.complete) {
this.loading = true;
}
});
}
},
methods: {
hide() {
this.deviceSupportUninstall();
this.onClose();
},
deviceSupportInstall() {
this._keyDownHandler = e => {
e.stopPropagation();
const keyCode = e.keyCode;
switch (keyCode) {
// ESC
case 27:
this.hide();
break;
// SPACE
case 32:
this.toggleMode();
break;
// LEFT_ARROW
case 37:
this.prev();
break;
// UP_ARROW
case 38:
this.handleActions('zoomIn');
break;
// RIGHT_ARROW
case 39:
this.next();
break;
// DOWN_ARROW
case 40:
this.handleActions('zoomOut');
break;
}
};
this._mouseWheelHandler = rafThrottle(e => {
const delta = e.wheelDelta ? e.wheelDelta : -e.detail;
if (delta > 0) {
this.handleActions('zoomIn', {
zoomRate: 0.015,
enableTransition: false
});
} else {
this.handleActions('zoomOut', {
zoomRate: 0.015,
enableTransition: false
});
}
});
on(document, 'keydown', this._keyDownHandler);
on(document, mousewheelEventName, this._mouseWheelHandler);
},
deviceSupportUninstall() {
off(document, 'keydown', this._keyDownHandler);
off(document, mousewheelEventName, this._mouseWheelHandler);
this._keyDownHandler = null;
this._mouseWheelHandler = null;
},
handleImgLoad(e) {
this.loading = false;
},
handleImgError(e) {
this.loading = false;
e.target.alt = '加载失败';
},
handleMouseDown(e) {
if (this.loading || e.button !== 0) return;
const { offsetX, offsetY } = this.transform;
const startX = e.pageX;
const startY = e.pageY;
this._dragHandler = rafThrottle(ev => {
this.transform.offsetX = offsetX + ev.pageX - startX;
this.transform.offsetY = offsetY + ev.pageY - startY;
});
on(document, 'mousemove', this._dragHandler);
on(document, 'mouseup', ev => {
off(document, 'mousemove', this._dragHandler);
});
e.preventDefault();
},
handleMaskClick() {
if (this.maskClosable) {
this.hide();
}
},
reset() {
this.transform = {
scale: 1,
deg: 0,
offsetX: 0,
offsetY: 0,
enableTransition: false
};
},
toggleMode() {
if (this.loading) return;
const modeNames = Object.keys(Mode);
const modeValues = Object.values(Mode);
const index = modeValues.indexOf(this.mode);
const nextIndex = (index + 1) % modeNames.length;
this.mode = Mode[modeNames[nextIndex]];
this.reset();
},
prev() {
if (this.isFirst && !this.infinite) return;
const len = this.urlList.length;
this.index = (this.index - 1 + len) % len;
},
next() {
if (this.isLast && !this.infinite) return;
const len = this.urlList.length;
this.index = (this.index + 1) % len;
},
handleActions(action, options = {}) {
if (this.loading) return;
const { zoomRate, rotateDeg, enableTransition } = {
zoomRate: 0.2,
rotateDeg: 90,
enableTransition: true,
...options
};
const { transform } = this;
switch (action) {
case 'zoomOut':
if (transform.scale > 0.2) {
transform.scale = parseFloat((transform.scale - zoomRate).toFixed(3));
}
break;
case 'zoomIn':
transform.scale = parseFloat((transform.scale + zoomRate).toFixed(3));
break;
case 'clocelise':
transform.deg += rotateDeg;
break;
case 'anticlocelise':
transform.deg -= rotateDeg;
break;
}
transform.enableTransition = enableTransition;
}
},
mounted() {
this.deviceSupportInstall();
if (this.appendToBody) {
document.body.appendChild(this.$el);
}
// add tabindex then wrapper can be focusable via Javascript
// focus wrapper so arrow key can't cause inner scroll behavior underneath
this.$refs['el-image-viewer__wrapper'].focus();
},
destroyed() {
// if appendToBody is true, remove DOM node after destroy
if (this.appendToBody && this.$el && this.$el.parentNode) {
this.$el.parentNode.removeChild(this.$el);
}
}
};
</script>
<template>
<div class="el-image">
<slot v-if="loading" name="placeholder">
<div class="el-image__placeholder"></div>
</slot>
<slot v-else-if="error" name="error">
<div class="el-image__error">{{ t('el.image.error') }}</div>
</slot>
<img
v-else
class="el-image__inner"
v-bind="$attrs"
v-on="$listeners"
@click="clickHandler"
:src="src"
:style="imageStyle"
:class="{ 'el-image__inner--center': alignCenter, 'el-image__preview': preview }"
crossOrigin="">
<template v-if="preview">
<image-viewer :z-index="zIndex" :initial-index="imageIndex" v-if="showViewer" :on-close="closeViewer" :url-list="previewSrcList"/>
</template>
<slot></slot>
</div>
</template>
<script>
import ImageViewer from './image-viewer';
import Locale from 'element-ui/src/mixins/locale';
import { on, off, getScrollContainer, isInContainer } from 'element-ui/src/utils/dom';
import { isString, isHtmlElement } from 'element-ui/src/utils/types';
import throttle from 'throttle-debounce/throttle';
const isSupportObjectFit = () => document.documentElement.style.objectFit !== undefined;
const ObjectFit = {
NONE: 'none',
CONTAIN: 'contain',
COVER: 'cover',
FILL: 'fill',
SCALE_DOWN: 'scale-down'
};
let prevOverflow = '';
export default {
name: 'MMCImage',
mixins: [Locale],
inheritAttrs: false,
components: {
ImageViewer
},
props: {
src: String,
fit: String,
lazy: Boolean,
scrollContainer: {},
previewSrcList: {
type: Array,
default: () => []
},
zIndex: {
type: Number,
default: 2000
},
initialIndex: Number
},
data() {
return {
loading: true,
error: false,
show: !this.lazy,
imageWidth: 0,
imageHeight: 0,
showViewer: false
};
},
computed: {
imageStyle() {
const { fit } = this;
if (!this.$isServer && fit) {
return isSupportObjectFit()
? { 'object-fit': fit }
: this.getImageStyle(fit);
}
return {};
},
alignCenter() {
return !this.$isServer && !isSupportObjectFit() && this.fit !== ObjectFit.FILL;
},
preview() {
const { previewSrcList } = this;
return Array.isArray(previewSrcList) && previewSrcList.length > 0;
},
imageIndex() {
let previewIndex = 0;
const initialIndex = this.initialIndex;
if (initialIndex >= 0) {
previewIndex = initialIndex;
return previewIndex;
}
const srcIndex = this.previewSrcList.indexOf(this.src);
if (srcIndex >= 0) {
previewIndex = srcIndex;
return previewIndex;
}
return previewIndex;
}
},
watch: {
src(val) {
this.show && this.loadImage();
},
show(val) {
val && this.loadImage();
}
},
mounted() {
if (this.lazy) {
this.addLazyLoadListener();
} else {
this.loadImage();
}
},
beforeDestroy() {
this.lazy && this.removeLazyLoadListener();
},
methods: {
loadImage() {
if (this.$isServer) return;
// reset status
this.loading = true;
this.error = false;
const img = new Image();
img.onload = e => this.handleLoad(e, img);
img.onerror = this.handleError.bind(this);
// bind html attrs
// so it can behave consistently
Object.keys(this.$attrs)
.forEach((key) => {
const value = this.$attrs[key];
img.setAttribute(key, value);
});
img.src = this.src;
},
handleLoad(e, img) {
this.imageWidth = img.width;
this.imageHeight = img.height;
this.loading = false;
this.error = false;
},
handleError(e) {
this.loading = false;
this.error = true;
this.$emit('error', e);
},
handleLazyLoad() {
if (isInContainer(this.$el, this._scrollContainer)) {
this.show = true;
this.removeLazyLoadListener();
}
},
addLazyLoadListener() {
if (this.$isServer) return;
const { scrollContainer } = this;
let _scrollContainer = null;
if (isHtmlElement(scrollContainer)) {
_scrollContainer = scrollContainer;
} else if (isString(scrollContainer)) {
_scrollContainer = document.querySelector(scrollContainer);
} else {
_scrollContainer = getScrollContainer(this.$el);
}
if (_scrollContainer) {
this._scrollContainer = _scrollContainer;
this._lazyLoadHandler = throttle(200, this.handleLazyLoad);
on(_scrollContainer, 'scroll', this._lazyLoadHandler);
this.handleLazyLoad();
}
},
removeLazyLoadListener() {
const { _scrollContainer, _lazyLoadHandler } = this;
if (this.$isServer || !_scrollContainer || !_lazyLoadHandler) return;
off(_scrollContainer, 'scroll', _lazyLoadHandler);
this._scrollContainer = null;
this._lazyLoadHandler = null;
},
/**
* simulate object-fit behavior to compatible with IE11 and other browsers which not support object-fit
*/
getImageStyle(fit) {
const { imageWidth, imageHeight } = this;
const {
clientWidth: containerWidth,
clientHeight: containerHeight
} = this.$el;
if (!imageWidth || !imageHeight || !containerWidth || !containerHeight) return {};
const imageAspectRatio = imageWidth / imageHeight;
const containerAspectRatio = containerWidth / containerHeight;
if (fit === ObjectFit.SCALE_DOWN) {
const isSmaller = imageWidth < containerWidth && imageHeight < containerHeight;
fit = isSmaller ? ObjectFit.NONE : ObjectFit.CONTAIN;
}
switch (fit) {
case ObjectFit.NONE:
return { width: 'auto', height: 'auto' };
case ObjectFit.CONTAIN:
return (imageAspectRatio < containerAspectRatio) ? { width: 'auto' } : { height: 'auto' };
case ObjectFit.COVER:
return (imageAspectRatio < containerAspectRatio) ? { height: 'auto' } : { width: 'auto' };
default:
return {};
}
},
clickHandler() {
// don't show viewer when preview is false
if (!this.preview) {
return;
}
// prevent body scroll
prevOverflow = document.body.style.overflow;
document.body.style.overflow = 'hidden';
this.showViewer = true;
},
closeViewer() {
document.body.style.overflow = prevOverflow;
this.showViewer = false;
}
}
};
</script>
<?xml version="1.0" encoding="UTF-8"?> ++ /dev/null
<?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>异物检测</title>
<defs>
<path d="M0,16.5 L1.099,16.499 L1.1,19.8 C1.1,20.3641194 1.52464421,20.8290579 2.07171676,20.8925995 L2.2,20.9 L5.5,20.899 L5.5,22 L2.2,22 C0.98497355,22 0,21.0150264 0,19.8 L0,16.5 Z M19.8,0 C21.0150264,0 22,0.98497355 22,2.2 L22,19.8 C22,21.0150264 21.0150264,22 19.8,22 L16.5,22 L16.5,20.899 L19.8,20.9 C20.3641194,20.9 20.8290579,20.4753558 20.8925995,19.9282832 L20.9,19.8 L20.899,16.499 L22,16.5 L22,5.5 L20.899,5.499 L20.9,2.2 C20.9,1.63588058 20.4753558,1.17094212 19.9282832,1.1074005 L19.8,1.1 L16.5,1.1 L16.5,1.81999974e-12 L19.8,0 Z M5.5,1.1 L2.2,1.1 C1.63588058,1.1 1.17094212,1.52464421 1.1074005,2.07171676 L1.1,2.2 L1.099,5.499 L0,5.5 L0,2.2 C0,0.98497355 0.98497355,0 2.2,0 L5.5,1.81797907e-12 L5.5,1.1 Z" id="path-1"></path>
<filter x="-63.6%" y="-59.1%" width="227.3%" height="227.3%" filterUnits="objectBoundingBox" id="filter-2">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="4.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
</defs>
<g id="鹰视2023" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="2023-0607宦" transform="translate(-1696.000000, -362.000000)">
<g id="异物检测" transform="translate(1705.000000, 370.000000)">
<g id="Mask">
<use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use>
<use fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-1"></use>
</g>
<g id="酒吧" transform="translate(4.000000, 4.000000)" fill="#FFBD36" fill-rule="nonzero">
<rect id="矩形" opacity="0" x="0" y="0" width="14" height="14"></rect>
<g id="编组-114" transform="translate(3.443069, 3.479873) rotate(-30.000000) translate(-3.443069, -3.479873) translate(2.130569, 0.876981)">
<path d="M1.97686741,2.41210845 C2.61809307,2.41210845 2.64338796,2.71946529 2.61935781,2.92573329 L2.28546516,4.82538556 C2.26649399,4.99367219 2.16025542,5.20578347 1.34323023,5.20578347 C0.465497285,5.20578347 0.359258715,4.99367219 0.33965517,4.82538556 L0.0057625219,2.92573329 C-0.0182676308,2.71888096 0.00702726678,2.41210845 0.602722104,2.41210845 L1.97686741,2.41210845 Z M1.40457036,2.47580027 L1.17565153,2.47580027 L1.17565153,4.33805551 L1.08395753,4.67638176 L1.49626436,4.67638176 L1.40457036,4.33805551 L1.40457036,2.47580027 Z" id="形状结合"></path>
<path d="M0.507233866,2.44366219 C0.70263695,2.50267938 0.980880823,2.53949208 1.29011095,2.53949208 C1.59934107,2.53949208 1.87758494,2.50267938 2.07298802,2.44366219 L2.07298802,2.27245391 C1.87884969,2.32796513 1.60882665,2.36302485 1.30971449,2.36302485 C0.989734037,2.36302485 0.703901694,2.3232905 0.507866238,2.26135167 L0.507866238,2.44366219 L0.507233866,2.44366219 Z" id="路径"></path>
<path d="M2.07235565,2.27303824 C1.87821731,2.32854946 1.60819428,2.36360918 1.30908212,2.36360918 C0.989101664,2.36360918 0.703269322,2.32387483 0.507233866,2.261936 L0.724137612,0.158937378 C0.724137612,0.0712880889 0.97771896,1.3556607e-13 1.29011095,1.3556607e-13 C1.60250293,1.3556607e-13 1.85608428,0.0712880889 1.85608428,0.158937378 L2.07235565,2.27303824 L2.07235565,2.27303824 Z" id="路径"></path>
</g>
<g id="编组-114备份" transform="translate(10.005569, 7.818026)">
<path d="M1.97686741,2.41210845 C2.61809307,2.41210845 2.64338796,2.71946529 2.61935781,2.92573329 L2.28546516,4.82538556 C2.26649399,4.99367219 2.16025542,5.20578347 1.34323023,5.20578347 C0.465497285,5.20578347 0.359258715,4.99367219 0.33965517,4.82538556 L0.0057625219,2.92573329 C-0.0182676308,2.71888096 0.00702726678,2.41210845 0.602722104,2.41210845 L1.97686741,2.41210845 Z M1.40457036,2.47580027 L1.17565153,2.47580027 L1.17565153,4.33805551 L1.08395753,4.67638176 L1.49626436,4.67638176 L1.40457036,4.33805551 L1.40457036,2.47580027 Z" id="形状结合"></path>
<path d="M0.507233866,2.44366219 C0.70263695,2.50267938 0.980880823,2.53949208 1.29011095,2.53949208 C1.59934107,2.53949208 1.87758494,2.50267938 2.07298802,2.44366219 L2.07298802,2.27245391 C1.87884969,2.32796513 1.60882665,2.36302485 1.30971449,2.36302485 C0.989734037,2.36302485 0.703901694,2.3232905 0.507866238,2.26135167 L0.507866238,2.44366219 L0.507233866,2.44366219 Z" id="路径"></path>
<path d="M2.07235565,2.27303824 C1.87821731,2.32854946 1.60819428,2.36360918 1.30908212,2.36360918 C0.989101664,2.36360918 0.703269322,2.32387483 0.507233866,2.261936 L0.724137612,0.158937378 C0.724137612,0.0712880889 0.97771896,0 1.29011095,0 C1.60250293,0 1.85608428,0.0712880889 1.85608428,0.158937378 L2.07235565,2.27303824 L2.07235565,2.27303824 Z" id="路径"></path>
</g>
<path d="M8.26980294,1.91744749 L8.26980294,4.11915498 C8.26980294,4.25241761 8.31460568,4.41344442 8.40560568,4.60224897 C8.49660568,4.79105352 8.66600021,4.96734521 8.91378927,5.12838558 C9.13360568,5.26997204 9.32400021,5.47126234 9.48639474,5.7322429 C9.64880294,5.99323703 9.73419747,6.2597623 9.74400021,6.53463851 L9.74400021,8.25462123 C9.74400021,8.69052426 9.74119747,9.15139878 9.73700021,9.64005103 C9.73280294,10.1287033 9.73000021,10.5854294 9.73000021,11.0116123 L9.73000021,12.5317011 C9.73000021,12.6260966 9.72019747,12.7260503 9.70200021,12.830166 C9.68239474,12.9342817 9.64180294,13.0383973 9.58019747,13.142513 C9.51860568,13.2466287 9.42760568,13.3438033 9.30860568,13.4340369 C9.18960568,13.5242705 9.02860568,13.5978428 8.82839474,13.654754 C8.46580294,13.7588696 8.06400021,13.8088533 7.62439474,13.803295 C7.18478927,13.7977368 6.74100021,13.7491495 6.29160568,13.654754 C6.07180294,13.607563 5.89819747,13.5409181 5.76800021,13.4562428 C5.63921114,13.3715675 5.53839474,13.2757756 5.46700021,13.17166 C5.39560568,13.0675443 5.34939474,12.9606495 5.33119747,12.8523719 C5.31160568,12.7440943 5.30319747,12.6469197 5.30319747,12.560848 L5.30319747,6.63457871 C5.31300021,6.20840941 5.40539474,5.87940118 5.58319747,5.64756758 C5.75960568,5.41574754 5.93460568,5.24222142 6.10680294,5.12837202 C6.25939474,5.02425635 6.40500021,4.8798772 6.54360568,4.69526168 C6.68219747,4.51061905 6.75639474,4.34265119 6.76619747,4.191331 L6.76619747,1.91744749 L8.26980294,1.91744749 L8.26980294,1.91744749 Z M8.62819747,8.31153238 L6.40780294,8.31153238 L6.40780294,10.6131936 L8.62819747,10.6131936 L8.62819747,8.31153238 L8.62819747,8.31153238 Z M7.51100021,0.198847548 C7.82600021,0.198847548 8.03180294,0.229390855 8.12700021,0.2918467 C8.22219747,0.352933316 8.26980294,0.507032641 8.26980294,0.754131118 L8.26980294,1.53569003 L6.76619747,1.53569003 L6.76619747,0.781895297 C6.76619747,0.544516993 6.81380294,0.389021325 6.90900021,0.312683391 C7.00419747,0.2363319 7.20439474,0.198847548 7.51100021,0.198847548 Z" id="形状" transform="translate(7.523599, 7.001280) rotate(-330.000000) translate(-7.523599, -7.001280) "></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?> ++ /dev/null
<?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>游泳检测</title>
<defs>
<path d="M0,16.5 L1.099,16.499 L1.1,19.8 C1.1,20.3641194 1.52464421,20.8290579 2.07171676,20.8925995 L2.2,20.9 L5.5,20.899 L5.5,22 L2.2,22 C0.98497355,22 0,21.0150264 0,19.8 L0,16.5 Z M19.8,0 C21.0150264,0 22,0.98497355 22,2.2 L22,19.8 C22,21.0150264 21.0150264,22 19.8,22 L16.5,22 L16.5,20.899 L19.8,20.9 C20.3641194,20.9 20.8290579,20.4753558 20.8925995,19.9282832 L20.9,19.8 L20.899,16.499 L22,16.5 L22,5.5 L20.899,5.499 L20.9,2.2 C20.9,1.63588058 20.4753558,1.17094212 19.9282832,1.1074005 L19.8,1.1 L16.5,1.1 L16.5,1.81999974e-12 L19.8,0 Z M5.5,1.1 L2.2,1.1 C1.63588058,1.1 1.17094212,1.52464421 1.1074005,2.07171676 L1.1,2.2 L1.099,5.499 L0,5.5 L0,2.2 C0,0.98497355 0.98497355,0 2.2,0 L5.5,1.81797907e-12 L5.5,1.1 Z" id="path-1"></path>
<filter x="-63.6%" y="-59.1%" width="227.3%" height="227.3%" filterUnits="objectBoundingBox" id="filter-2">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="4.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
</defs>
<g id="鹰视2023" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="2023-0607宦" transform="translate(-1596.000000, -362.000000)">
<g id="游泳检测" transform="translate(1605.000000, 370.000000)">
<g id="Mask">
<use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use>
<use fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-1"></use>
</g>
<g id="编组-57" transform="translate(3.000000, 3.000000)">
<rect id="矩形" stroke="#979797" fill="#D8D8D8" opacity="0" x="0.5" y="0.5" width="15" height="15"></rect>
<g id="游泳" transform="translate(0.000000, 1.000000)" fill="#FFBD36" fill-rule="nonzero">
<rect id="矩形" opacity="0" x="0.799721011" y="0" width="14.2222222" height="14.2222222"></rect>
<path d="M9.78895712,8.32473958 C10.5452939,8.33480903 11.0406932,8.71920139 11.477846,9.05836806 C11.7877766,9.29876736 12.080103,9.52572917 12.4735925,9.63416667 C13.1402592,9.81628472 13.9623946,9.61322917 14.9204155,9.02913194 C15.2236273,8.8440625 15.6196689,8.93984375 15.8043564,9.24305556 C15.9894432,9.54626736 15.8936446,9.94232639 15.5904328,10.1270139 C14.6535405,10.6986632 13.775728,10.9854861 12.9709884,10.9854861 C12.6819953,10.9854861 12.4022905,10.9485417 12.1330543,10.8744618 C11.492655,10.6986632 11.047221,10.3525868 10.689096,10.0746701 C10.2999641,9.77263889 10.0822905,9.61520833 9.77156129,9.61105903 L9.7589224,9.61105903 C9.35399184,9.61105903 8.91211684,9.87654514 8.44614462,10.4013889 L8.41484057,10.4336247 C8.37341962,10.4803128 8.32444026,10.5216962 8.26836684,10.5558507 C7.33166546,11.1271181 6.45385296,11.4143229 5.64850573,11.4143229 C5.35991198,11.4143229 5.08062379,11.3773785 4.81098837,11.303316 C4.17058907,11.1275 3.72515504,10.781441 3.36703004,10.5035069 C2.97789809,10.2014757 2.76020712,10.0440451 2.44949532,10.0398958 C2.04831476,10.0395139 1.5951724,10.3000521 1.12406129,10.8302257 C0.887811288,11.0957118 0.481700177,11.1196007 0.215814761,10.8833507 C-0.0496539894,10.6471181 -0.0735602394,10.2405903 0.162689761,9.97510417 C0.883870316,9.16444444 1.64850573,8.75357639 2.43626615,8.75357639 L2.46687379,8.75357639 C3.22322796,8.76364583 3.71862726,9.14805556 4.15576268,9.48720486 C4.46569323,9.72760417 4.75803698,9.95456597 5.15152657,10.0630208 C5.8011782,10.2405971 6.59938371,10.0515755 7.52691037,9.50094505 L7.48477309,9.54626736 C8.20595365,8.73560764 8.97058907,8.32473958 9.75833212,8.32473958 L9.78895712,8.32473958 Z M12.2296501,4.95864727 C12.6918869,4.69107335 13.2619127,4.69107335 13.7241496,4.95864727 C14.1863864,5.22622119 14.4702758,5.720525 14.4684624,6.25461806 C14.4702758,6.78871111 14.1863864,7.28301492 13.7241496,7.55058884 C13.2619127,7.81816276 12.6918869,7.81816276 12.2296501,7.55058884 C11.7674132,7.28301492 11.4835238,6.78871111 11.4853373,6.25461806 C11.4835238,5.720525 11.7674132,5.22622119 12.2296501,4.95864727 Z M6.60574532,2.89086806 L9.22558907,3.80543403 C9.39230782,3.86369792 9.52762032,3.98715278 9.59991198,4.14795139 L10.430346,5.98557292 C10.5765266,6.30934028 10.4325161,6.68998264 10.1087661,6.83654514 C10.0256429,6.87410409 9.93548444,6.89356199 9.84426962,6.89362847 C9.59932171,6.89362847 9.36525921,6.75300347 9.25760296,6.51496528 L8.54114462,4.92899306 L6.18183907,4.10527778 C5.8464224,3.98854167 5.66925226,3.62152778 5.78657865,3.28612847 C5.9039224,2.95071181 6.27192587,2.77274306 6.60574532,2.89086806 Z" id="形状结合"></path>
<path d="M5.59121407,9.50578125 C5.61157865,9.56720486 5.64317587,9.6209375 5.68051962,9.66972222 C6.22510296,9.66578125 6.85128351,9.45322917 7.55093629,9.03684028 C8.25690851,8.26232639 9.00416546,7.86704861 9.77374879,7.86704861 L9.80435643,7.86704861 C10.3132106,7.87416667 10.7025335,8.05135417 11.0369606,8.26923611 C11.2384363,8.12859375 11.3346342,7.86942708 11.2530543,7.62428819 L10.7766134,6.19060764 C10.6774467,5.89194444 10.3548773,5.73036458 10.0562141,5.82953125 L5.47586684,7.35170139 C5.17720365,7.45086806 5.01562379,7.7734375 5.11479046,8.07210069 L5.59123143,9.50578125 L5.59121407,9.50578125 Z" id="路径"></path>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?> ++ /dev/null
<?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>车辆朝向</title>
<defs>
<path d="M0,16.5 L1.099,16.499 L1.1,19.8 C1.1,20.3641194 1.52464421,20.8290579 2.07171676,20.8925995 L2.2,20.9 L5.5,20.899 L5.5,22 L2.2,22 C0.98497355,22 0,21.0150264 0,19.8 L0,16.5 Z M19.8,0 C21.0150264,0 22,0.98497355 22,2.2 L22,19.8 C22,21.0150264 21.0150264,22 19.8,22 L16.5,22 L16.5,20.899 L19.8,20.9 C20.3641194,20.9 20.8290579,20.4753558 20.8925995,19.9282832 L20.9,19.8 L20.899,16.499 L22,16.5 L22,5.5 L20.899,5.499 L20.9,2.2 C20.9,1.63588058 20.4753558,1.17094212 19.9282832,1.1074005 L19.8,1.1 L16.5,1.1 L16.5,1.81999974e-12 L19.8,0 Z M5.5,1.1 L2.2,1.1 C1.63588058,1.1 1.17094212,1.52464421 1.1074005,2.07171676 L1.1,2.2 L1.099,5.499 L0,5.5 L0,2.2 C0,0.98497355 0.98497355,0 2.2,0 L5.5,1.81797907e-12 L5.5,1.1 Z" id="path-1"></path>
<filter x="-63.6%" y="-59.1%" width="227.3%" height="227.3%" filterUnits="objectBoundingBox" id="filter-2">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="4.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
</defs>
<g id="鹰视2023" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="2023-0607宦" transform="translate(-1439.000000, -362.000000)">
<g id="车辆朝向" transform="translate(1448.000000, 370.000000)">
<g id="机动车违法信息查询备份-2" transform="translate(3.000000, 3.000000)" fill="#FFBD36" fill-rule="nonzero">
<rect id="矩形" opacity="0" x="0" y="0" width="16" height="16"></rect>
<path d="M10.5071195,3 C11.3578812,3 12.0493895,3.48843979 12.2339532,4.49970467 L12.8082732,6.2770371 C12.8588704,6.24745171 12.9159262,6.23148731 12.9741382,6.23062751 L14.2489188,6.23062751 C14.4447756,6.23062751 14.6024694,6.393047 14.6024694,6.59546311 L14.6024694,6.91388912 C14.6026721,7.01043328 14.5655375,7.10310627 14.499234,7.17152099 C14.4329305,7.23993571 14.3428894,7.27848795 14.2489188,7.27869659 L14.0020581,7.32191376 C13.3744679,6.89442654 12.621431,6.70514684 11.8726283,6.7866706 C11.9212913,6.69666414 11.9571145,6.60186201 11.9648896,6.50064692 L11.8068134,5.85780384 L11.3785237,4.67492195 C11.3395795,4.45491238 11.2515891,4.40650578 11.1125811,4.22168312 L4.50894208,4.22168312 C4.37150829,4.40169606 4.27727579,4.44330999 4.23522434,4.67652519 L4.22899601,4.70372402 L3.80652399,5.85780384 L3.65000825,6.50064692 C3.68621466,6.97149326 4.23522434,7.3427137 4.69349212,7.3427137 L10.38796,7.3427137 C9.66717438,7.84310548 9.17277797,8.62051273 9.01623663,9.49966248 L6.4834167,9.49966248 C6.32618213,9.50010293 6.198827,9.63095217 6.19840584,9.7924929 L6.19840584,10.6153489 C6.19840584,10.7757573 6.32534046,10.9073637 6.4834167,10.9073637 L9.05828809,10.9093747 C9.20827972,11.5334771 9.53110649,12.0995454 9.98770465,12.5390825 L3.65311557,12.5390825 L3.65311557,13.3491407 C3.65311557,13.7091666 3.3700485,14 3.0196197,14 L2.0528332,14 C1.7024044,14 1.41932364,13.7091666 1.41932364,13.3491407 L1.41932364,10.8257672 C1.41932364,10.7841673 1.42556566,10.7457458 1.43178029,10.7069586 C1.42379466,10.6456872 1.41963394,10.5839534 1.41932364,10.522136 L1.59765905,8.42279133 C1.59765905,8.01476669 1.68526625,7.66434619 1.83711416,7.35871797 L1.35508293,7.273915 C1.1589972,7.27346568 1.0002107,7.11014187 1,6.90868562 L1,6.59225663 C1.00020671,6.49571247 1.03773475,6.40320691 1.10432833,6.33509021 C1.17092191,6.26697352 1.261126,6.2288255 1.35509662,6.22903834 L2.63027415,6.22903834 C2.6956784,6.22903834 2.75525129,6.24983827 2.80704905,6.28063736 L3.38251883,4.49811549 C3.53904826,3.6540517 4.13205317,3 5.10974951,3 L10.5071195,3 Z M14.1959712,12.7494867 L14.1959712,13.3491267 C14.1959712,13.7075634 13.9109466,13.9983828 13.5620784,13.9983828 L12.5952782,13.9983828 C12.2784207,13.9985152 12.0106429,13.7571263 11.9695711,13.4343375 C12.0493895,13.4391331 12.1292079,13.445532 12.2121472,13.4471353 C12.9597241,13.4471353 13.6465782,13.1851321 14.1959712,12.7494867 Z M12.2904051,7.29789326 C13.7859695,7.29789326 14.9984531,8.54518606 15,10.0816949 C15.000155,11.2078685 14.3399468,12.223233 13.3272626,12.6542745 C12.3145784,13.0853161 11.1488756,12.8471371 10.373778,12.0508122 C9.59868032,11.2544872 9.36685045,10.0568596 9.78640188,9.01644134 C10.2059533,7.97602308 11.1942515,7.29773402 12.2904051,7.29789326 Z M4.10400518,9.37123449 C3.75680378,9.36399001 3.43290981,9.5501399 3.25723753,9.85790692 C3.08156525,10.1656739 3.08156525,10.5469663 3.25723753,10.8547334 C3.43290981,11.1625004 3.75680378,11.3486503 4.10400518,11.3413917 C4.62607628,11.3306673 5.04384535,10.8927892 5.04384535,10.3563131 C5.04384535,9.81983701 4.62607628,9.38195896 4.10400518,9.37123449 Z M11.478431,9.2 C11.2823526,9.2 11.1254898,9.29698558 10.9916951,9.43328965 L11.1301034,9.62201835 C11.2269892,9.51454784 11.3377159,9.44115334 11.4692038,9.43853211 C11.6306801,9.44115334 11.7298728,9.54862385 11.7298728,9.71900393 C11.7298728,9.9129751 11.6191461,10.0571429 11.2846594,10.0571429 L11.2846594,10.2799476 C11.667589,10.2799476 11.7875429,10.4188729 11.7875429,10.6338139 C11.7875429,10.8330275 11.656055,10.9536042 11.4645902,10.9536042 C11.289273,10.9536042 11.1623987,10.8566186 11.0632061,10.7412844 L10.934025,10.9352556 C11.0470584,11.0794233 11.2200688,11.2 11.4876582,11.2 C11.7990769,11.2 12.0551323,10.9955439 12.0551323,10.6469201 C12.0551323,10.3874181 11.9005763,10.2196592 11.7044979,10.1646134 L11.7044979,10.1515072 C11.8844287,10.0754915 11.9974621,9.92083879 11.9974621,9.69803408 C11.9974621,9.37824377 11.7829293,9.2 11.478431,9.2 Z M12.9478658,9.2 C12.6133791,9.2 12.306574,9.49619921 12.306574,10.2380079 C12.306574,10.8933159 12.5695498,11.2 12.8925025,11.2 C13.1693191,11.2 13.3999996,10.950983 13.3999996,10.5682831 C13.3999996,10.1593709 13.2085348,9.96015727 12.922491,9.96015727 C12.8002303,9.96015727 12.6525948,10.0440367 12.5534021,10.182962 C12.5649362,9.63250328 12.744867,9.44639581 12.9617066,9.44639581 C13.0608993,9.44639581 13.1647055,9.50668414 13.2269892,9.59056356 L13.3723179,9.40707733 C13.2754321,9.29174312 13.1370238,9.2 12.9478658,9.2 Z M12.874048,10.1803408 C13.0562856,10.1803408 13.1531715,10.3192661 13.1531715,10.5682831 C13.1531715,10.8173001 13.0378312,10.9693316 12.8901957,10.9693316 C12.7079581,10.9693316 12.5856974,10.7884666 12.5580158,10.4057667 C12.6595152,10.2406291 12.7748554,10.1803408 12.874048,10.1803408 Z M13.85,8.7 C13.7119288,8.7 13.6,8.81192881 13.6,8.95 C13.6,9.08807119 13.7119288,9.2 13.85,9.2 C13.9880712,9.2 14.1,9.08807119 14.1,8.95 C14.1,8.81192881 13.9880712,8.7 13.85,8.7 Z" id="形状结合"></path>
</g>
<g id="Mask">
<use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use>
<use fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-1"></use>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?> ++ /dev/null
<?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>车辆检测</title>
<defs>
<path d="M0,16.5 L1.099,16.499 L1.1,19.8 C1.1,20.3641194 1.52464421,20.8290579 2.07171676,20.8925995 L2.2,20.9 L5.5,20.899 L5.5,22 L2.2,22 C0.98497355,22 0,21.0150264 0,19.8 L0,16.5 Z M19.8,0 C21.0150264,0 22,0.98497355 22,2.2 L22,19.8 C22,21.0150264 21.0150264,22 19.8,22 L16.5,22 L16.5,20.899 L19.8,20.9 C20.3641194,20.9 20.8290579,20.4753558 20.8925995,19.9282832 L20.9,19.8 L20.899,16.499 L22,16.5 L22,5.5 L20.899,5.499 L20.9,2.2 C20.9,1.63588058 20.4753558,1.17094212 19.9282832,1.1074005 L19.8,1.1 L16.5,1.1 L16.5,1.81999974e-12 L19.8,0 Z M5.5,1.1 L2.2,1.1 C1.63588058,1.1 1.17094212,1.52464421 1.1074005,2.07171676 L1.1,2.2 L1.099,5.499 L0,5.5 L0,2.2 C0,0.98497355 0.98497355,0 2.2,0 L5.5,1.81797907e-12 L5.5,1.1 Z" id="path-1"></path>
<filter x="-63.6%" y="-59.1%" width="227.3%" height="227.3%" filterUnits="objectBoundingBox" id="filter-2">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="4.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
</defs>
<g id="鹰视2023" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="2023-0607宦" transform="translate(-1489.000000, -418.000000)">
<g id="车辆检测" transform="translate(1498.000000, 426.000000)">
<g id="Mask">
<use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use>
<use fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-1"></use>
</g>
<g id="机动车违法信息查询备份" transform="translate(3.000000, 3.000000)" fill-rule="nonzero">
<rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="16" height="16"></rect>
<path d="M10.5071195,3 C11.3578812,3 12.0493895,3.48843979 12.2339532,4.49970467 L12.8082732,6.2770371 C12.8588704,6.24745171 12.9159262,6.23148731 12.9741382,6.23062751 L14.2489188,6.23062751 C14.4447756,6.23062751 14.6024694,6.393047 14.6024694,6.59546311 L14.6024694,6.91388912 C14.6026721,7.01043328 14.5655375,7.10310627 14.499234,7.17152099 C14.4329305,7.23993571 14.3428894,7.27848795 14.2489188,7.27869659 L14.0020581,7.32191376 C13.3744679,6.89442654 12.621431,6.70514684 11.8726283,6.7866706 C11.9212913,6.69666414 11.9571145,6.60186201 11.9648896,6.50064692 L11.8068134,5.85780384 L11.3785237,4.67492195 C11.3395795,4.45491238 11.2515891,4.40650578 11.1125811,4.22168312 L4.50894208,4.22168312 C4.37150829,4.40169606 4.27727579,4.44330999 4.23522434,4.67652519 L4.22899601,4.70372402 L3.80652399,5.85780384 L3.65000825,6.50064692 C3.68621466,6.97149326 4.23522434,7.3427137 4.69349212,7.3427137 L10.38796,7.3427137 C9.66717438,7.84310548 9.17277797,8.62051273 9.01623663,9.49966248 L6.4834167,9.49966248 C6.32618213,9.50010293 6.198827,9.63095217 6.19840584,9.7924929 L6.19840584,10.6153489 C6.19840584,10.7757573 6.32534046,10.9073637 6.4834167,10.9073637 L9.05828809,10.9093747 C9.20827972,11.5334771 9.53110649,12.0995454 9.98770465,12.5390825 L3.65311557,12.5390825 L3.65311557,13.3491407 C3.65311557,13.7091666 3.3700485,14 3.0196197,14 L2.0528332,14 C1.7024044,14 1.41932364,13.7091666 1.41932364,13.3491407 L1.41932364,10.8257672 C1.41932364,10.7841673 1.42556566,10.7457458 1.43178029,10.7069586 C1.42379466,10.6456872 1.41963394,10.5839534 1.41932364,10.522136 L1.59765905,8.42279133 C1.59765905,8.01476669 1.68526625,7.66434619 1.83711416,7.35871797 L1.35508293,7.273915 C1.1589972,7.27346568 1.0002107,7.11014187 1,6.90868562 L1,6.59225663 C1.00020671,6.49571247 1.03773475,6.40320691 1.10432833,6.33509021 C1.17092191,6.26697352 1.261126,6.2288255 1.35509662,6.22903834 L2.63027415,6.22903834 C2.6956784,6.22903834 2.75525129,6.24983827 2.80704905,6.28063736 L3.38251883,4.49811549 C3.53904826,3.6540517 4.13205317,3 5.10974951,3 L10.5071195,3 Z M14.1959712,12.7494867 L14.1959712,13.3491267 C14.1959712,13.7075634 13.9109466,13.9983828 13.5620784,13.9983828 L12.5952782,13.9983828 C12.2784207,13.9985152 12.0106429,13.7571263 11.9695711,13.4343375 C12.0493895,13.4391331 12.1292079,13.445532 12.2121472,13.4471353 C12.9597241,13.4471353 13.6465782,13.1851321 14.1959712,12.7494867 L14.1959712,12.7494867 Z M12.2904051,7.29789326 C13.7859695,7.29789326 14.9984531,8.54518606 15,10.0816949 C15.000155,11.2078685 14.3399468,12.223233 13.3272626,12.6542745 C12.3145784,13.0853161 11.1488756,12.8471371 10.373778,12.0508122 C9.59868032,11.2544872 9.36685045,10.0568596 9.78640188,9.01644134 C10.2059533,7.97602308 11.1942515,7.29773402 12.2904051,7.29789326 L12.2904051,7.29789326 Z M12.0338255,8.53238802 C11.5833297,8.53210186 11.1669056,8.77875592 10.9414163,9.17943824 C10.7159269,9.58012057 10.7156295,10.073958 10.940636,10.4749267 C11.1656425,10.8758954 11.5817692,11.1230787 12.032265,11.1233651 L12.0369328,11.1213681 C12.2981939,11.1213681 12.5501194,11.0393778 12.7627037,10.883751 C12.7751604,10.8741597 12.7860702,10.8641465 12.7973633,10.8545552 L13.5511822,11.6306078 L13.8062013,11.3689843 L13.0492888,10.5909347 C13.2054212,10.3725283 13.2945889,10.1057013 13.2945889,9.8276798 C13.2937291,9.11267626 12.7297695,8.53327162 12.0338255,8.53238802 L12.0338255,8.53238802 Z M4.10400518,9.37124856 C3.75680378,9.36399001 3.43290981,9.5501399 3.25723753,9.85790692 C3.08156525,10.1656739 3.08156525,10.5469663 3.25723753,10.8547334 C3.43290981,11.1625004 3.75680378,11.3486503 4.10400518,11.3413917 C4.62607628,11.3306673 5.04384535,10.8927892 5.04384535,10.3563131 C5.04384535,9.81983701 4.62607628,9.38195896 4.10400518,9.37123449 L4.10400518,9.37124856 Z M12.032265,8.90321492 C12.2732806,8.90321492 12.5014426,9.00001406 12.6708257,9.17523134 C12.9270474,9.44073526 13.0030009,9.83835806 12.8634544,10.1836587 C12.723908,10.5289594 12.3961647,10.7543777 12.0322513,10.7553512 C11.5347597,10.7546844 11.1316883,10.3403855 11.1312661,9.82926898 C11.1319146,9.31831717 11.5349198,8.904275 12.0322513,8.9036087 L12.032265,8.90321492 Z" id="形状" fill="#FFBD36"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>人流识别</title>
<defs>
<path d="M0,16.5 L1.099,16.499 L1.1,19.8 C1.1,20.3641194 1.52464421,20.8290579 2.07171676,20.8925995 L2.2,20.9 L5.5,20.899 L5.5,22 L2.2,22 C0.98497355,22 0,21.0150264 0,19.8 L0,16.5 Z M19.8,0 C21.0150264,0 22,0.98497355 22,2.2 L22,19.8 C22,21.0150264 21.0150264,22 19.8,22 L16.5,22 L16.5,20.899 L19.8,20.9 C20.3641194,20.9 20.8290579,20.4753558 20.8925995,19.9282832 L20.9,19.8 L20.899,16.499 L22,16.5 L22,5.5 L20.899,5.499 L20.9,2.2 C20.9,1.63588058 20.4753558,1.17094212 19.9282832,1.1074005 L19.8,1.1 L16.5,1.1 L16.5,1.81999974e-12 L19.8,0 Z M5.5,1.1 L2.2,1.1 C1.63588058,1.1 1.17094212,1.52464421 1.1074005,2.07171676 L1.1,2.2 L1.099,5.499 L0,5.5 L0,2.2 C0,0.98497355 0.98497355,0 2.2,0 L5.5,1.81797907e-12 L5.5,1.1 Z" id="path-1"></path>
<filter x="-63.6%" y="-59.1%" width="227.3%" height="227.3%" filterUnits="objectBoundingBox" id="filter-2">
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="4.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
</defs>
<g id="套用鹰视改" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="人流识别" transform="translate(9.000000, 8.000000)">
<g id="Mask">
<use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use>
<use fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-1"></use>
</g>
<g id="Group" transform="translate(4.000000, 3.000000)" fill="#FFFFFF" fill-rule="nonzero">
<path d="M7.52678571,4.21866257 C8.70321429,4.21866257 9.65892947,3.27253016 9.65892947,2.10879795 C9.66,0.946132415 8.70428571,0 7.52785714,0 C6.3525,0 5.39571429,0.946132415 5.39571429,2.10986462 C5.39571429,3.27253016 6.3525,4.21866257 7.52785714,4.21866257 L7.52678571,4.21866257 Z M7.52678571,1.30879873 C7.97357143,1.30879873 8.33678571,1.66826505 8.33678571,2.10879795 C8.33678571,2.55146419 7.9725,2.90986458 7.52678571,2.90986458 C7.08186896,2.91045753 6.72021705,2.5527977 6.71785714,2.10986462 C6.71785714,1.66826505 7.08107143,1.30879873 7.52678571,1.30879873 Z M2.51357143,1.60746511 C1.33821429,1.60746511 0.381428571,2.55466419 0.381428571,3.71732973 C0.381428571,4.87999527 1.33821429,5.82719435 2.51357143,5.82719435 C3.69,5.82719435 4.64571429,4.88106193 4.64571429,3.71732973 C4.64571429,2.55466419 3.69,1.60853177 2.51357143,1.60853177 L2.51357143,1.60746511 Z M2.51357143,4.51839854 C2.06823689,4.51957786 1.70593237,4.16174658 1.70357143,3.71839639 C1.70357143,3.27573016 2.06785714,2.9173305 2.51357143,2.9173305 C2.96035714,2.9173305 3.32357143,3.27573016 3.32357143,3.71732973 C3.32357143,4.1589293 2.95928571,4.51732895 2.51357143,4.51732895 L2.51357143,4.51839854 Z M14.6732143,3.71839639 C14.6732143,2.55466419 13.7164286,1.60853177 12.5410714,1.60853177 C11.3646429,1.60853177 10.4078571,2.55466419 10.4078571,3.71732973 C10.4078571,4.87999527 11.3646429,5.82719435 12.54,5.82719435 C13.7164286,5.82719435 14.6732143,4.88106193 14.6732143,3.71732973 L14.6732143,3.71839639 Z M11.7310714,3.71839639 C11.7310714,3.27573016 12.0942857,2.9173305 12.5410714,2.9173305 C12.9867857,2.9173305 13.35,3.27573016 13.35,3.71732973 C13.35,4.1589293 12.9867857,4.51733187 12.5410714,4.51733187 C12.0957369,4.51851119 11.7334324,4.16067991 11.7310714,3.71732973 L11.7310714,3.71839639 Z M9.20571429,4.73386207 L5.72892857,4.73386207 C4.89321429,4.73386207 4.21392857,5.40586142 4.21392857,6.23252729 L4.21392857,10.638923 C4.21392857,11.3749223 4.75392857,11.9893217 5.46321429,12.1141216 L5.46321429,15.3162518 C5.46321429,15.6789181 5.75892857,15.9711845 6.12535714,15.9711845 C6.30030134,15.9717511 6.46829086,15.9030337 6.59229685,15.7801793 C6.71630284,15.6573248 6.78614503,15.490419 6.78642857,15.3162518 L6.78642857,11.678922 C6.78465641,11.2080559 6.40011333,10.827609 5.92714286,10.8287895 L5.72892857,10.8287895 C5.62342526,10.8287911 5.53773226,10.7439557 5.53714286,10.638923 L5.53714286,6.23252729 C5.53714286,6.12799405 5.62285714,6.0426608 5.73,6.0426608 L9.20571429,6.0426608 C9.31285714,6.0426608 9.39857143,6.12799405 9.39857143,6.23252729 L9.39857143,10.638923 C9.39857143,10.7434562 9.31285714,10.8287895 9.20571429,10.8287895 L9.03964286,10.8287895 C8.57258969,10.827609 8.19284355,11.2032803 8.19107143,11.6682553 L8.19107143,15.3461184 C8.19107143,15.7066514 8.48678571,15.9999923 8.85214286,15.9999923 C9.0270871,16.000835 9.19518997,15.9323894 9.31939714,15.8097348 C9.44360431,15.6870802 9.51371887,15.5202862 9.51428571,15.3461184 L9.51428571,12.1066549 C10.2150666,11.9637236 10.7190919,11.3510743 10.7217857,10.638923 L10.7217857,6.23252729 C10.7217857,5.40586142 10.0414286,4.73386207 9.20571429,4.73386207 Z M13.485,6.31038606 L12.1853571,6.31038606 C12.0102277,6.30954315 11.8419625,6.37813498 11.7177244,6.50102024 C11.5934862,6.62390551 11.523497,6.7909738 11.5232143,6.96532658 C11.5232143,7.32585956 11.8189286,7.61919261 12.1853571,7.61919261 L13.485,7.61919261 C13.6028571,7.61919261 13.6628571,7.66505923 13.6767857,7.66825923 L13.6810714,11.3173224 C13.6703571,11.3365223 13.6039286,11.388789 13.485,11.388789 L13.3178571,11.388789 C12.8496429,11.388789 12.4692857,11.7514553 12.4692857,12.1983882 L12.4692857,15.2618519 C12.4692857,15.6234515 12.765,15.9157214 13.1314286,15.9157214 C13.3061876,15.9162846 13.4740149,15.8477135 13.5979901,15.7250896 C13.7219652,15.6024658 13.7919326,15.435834 13.7925,15.2618519 L13.7925,12.6698544 C14.4814286,12.5418545 15,11.9935884 15,11.3397223 L15,7.66932589 C15,6.92052662 14.3196429,6.31146054 13.485,6.31146054 L13.485,6.31038606 Z M2.81464286,6.31039388 L1.515,6.31039388 C0.679285714,6.31039388 0,6.91945995 0,7.66932589 L0,11.340789 C0,11.994655 0.518571429,12.5429212 1.2075,12.6698544 L1.2075,15.2618519 C1.2075,15.6245182 1.50321429,15.9167924 1.86857143,15.9167924 C2.04370088,15.9176353 2.21196611,15.8490435 2.33620422,15.7261582 C2.46044233,15.6032729 2.5304316,15.4362046 2.53071429,15.2618519 L2.53071429,12.1983882 C2.53071429,11.7525219 2.15035714,11.3898556 1.68214286,11.3898556 L1.515,11.3898556 C1.39714286,11.3898556 1.33071429,11.3397223 1.32321429,11.340789 L1.31785714,7.69065921 C1.32857143,7.67039256 1.39607143,7.61812594 1.515,7.61812594 L2.81464286,7.61812594 C2.98977231,7.61897667 3.15803754,7.55038484 3.28227565,7.42749958 C3.40651376,7.30461431 3.47650303,7.13754602 3.47678571,6.96319324 C3.47621887,6.78902554 3.40610431,6.62223149 3.28189714,6.49957691 C3.15768997,6.37692234 2.9895871,6.30847669 2.81464286,6.30931938 L2.81464286,6.31039388 Z" id="Shape"></path>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>车道线分割</title> <title>人脸识别</title>
<defs> <defs>
<path d="M0,16.5 L1.099,16.499 L1.1,19.8 C1.1,20.3641194 1.52464421,20.8290579 2.07171676,20.8925995 L2.2,20.9 L5.5,20.899 L5.5,22 L2.2,22 C0.98497355,22 0,21.0150264 0,19.8 L0,16.5 Z M19.8,0 C21.0150264,0 22,0.98497355 22,2.2 L22,19.8 C22,21.0150264 21.0150264,22 19.8,22 L16.5,22 L16.5,20.899 L19.8,20.9 C20.3641194,20.9 20.8290579,20.4753558 20.8925995,19.9282832 L20.9,19.8 L20.899,16.499 L22,16.5 L22,5.5 L20.899,5.499 L20.9,2.2 C20.9,1.63588058 20.4753558,1.17094212 19.9282832,1.1074005 L19.8,1.1 L16.5,1.1 L16.5,1.81999974e-12 L19.8,0 Z M5.5,1.1 L2.2,1.1 C1.63588058,1.1 1.17094212,1.52464421 1.1074005,2.07171676 L1.1,2.2 L1.099,5.499 L0,5.5 L0,2.2 C0,0.98497355 0.98497355,0 2.2,0 L5.5,1.81797907e-12 L5.5,1.1 Z" id="path-1"></path> <path d="M0,16.5 L1.099,16.499 L1.1,19.8 C1.1,20.3641194 1.52464421,20.8290579 2.07171676,20.8925995 L2.2,20.9 L5.5,20.899 L5.5,22 L2.2,22 C0.98497355,22 0,21.0150264 0,19.8 L0,16.5 Z M19.8,0 C21.0150264,0 22,0.98497355 22,2.2 L22,19.8 C22,21.0150264 21.0150264,22 19.8,22 L16.5,22 L16.5,20.899 L19.8,20.9 C20.3641194,20.9 20.8290579,20.4753558 20.8925995,19.9282832 L20.9,19.8 L20.899,16.499 L22,16.5 L22,5.5 L20.899,5.499 L20.9,2.2 C20.9,1.63588058 20.4753558,1.17094212 19.9282832,1.1074005 L19.8,1.1 L16.5,1.1 L16.5,1.81999974e-12 L19.8,0 Z M5.5,1.1 L2.2,1.1 C1.63588058,1.1 1.17094212,1.52464421 1.1074005,2.07171676 L1.1,2.2 L1.099,5.499 L0,5.5 L0,2.2 C0,0.98497355 0.98497355,0 2.2,0 L5.5,1.81797907e-12 L5.5,1.1 Z" id="path-1"></path>
<filter x="-63.6%" y="-59.1%" width="227.3%" height="227.3%" filterUnits="objectBoundingBox" id="filter-2"> <filter x="-63.6%" y="-59.1%" width="227.3%" height="227.3%" filterUnits="objectBoundingBox" id="filter-2">
...@@ -9,19 +9,16 @@ ...@@ -9,19 +9,16 @@
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix> <feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter> </filter>
</defs> </defs>
<g id="鹰视2023" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g id="套用鹰视改" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="2023-0607宦" transform="translate(-1696.000000, -418.000000)"> <g id="人脸识别" transform="translate(9.000000, 8.000000)">
<g id="车道线分割" transform="translate(1705.000000, 426.000000)"> <g id="Mask">
<g id="Mask"> <use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use>
<use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use> <use fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-1"></use>
<use fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-1"></use> </g>
</g> <g id="Group-22" transform="translate(5.000000, 6.000000)">
<g id="road-(1)备份" transform="translate(4.000000, 4.000000)" fill="#FFBD36" fill-rule="nonzero"> <rect id="Rectangle" fill="#FFFFFF" x="0" y="0" width="2.4" height="2.5" rx="1.2"></rect>
<rect id="矩形" opacity="0" x="0" y="0" width="14" height="14"></rect> <rect id="Rectangle-Copy-17" fill="#FFFFFF" x="9.6" y="0" width="2.4" height="2.5" rx="1.2"></rect>
<path d="M6.46683789,13.44 L7.53316211,13.44 L7.53316211,10.64 L6.46683789,10.64 L6.46683789,13.44 Z M0,14 L1.07683789,14 L2.73991211,0 L1.66308789,0 L0,14 Z M6.46683789,8.4 L7.53316211,8.4 L7.53316211,5.6 L6.46683789,5.6 L6.46683789,8.4 Z M6.46683789,3.36 L7.53316211,3.36 L7.53316211,0.56 L6.46683789,0.56 L6.46683789,3.36 Z M12.3369121,0 L11.2600879,0 L12.9231621,14 L14,14 L12.3369121,0 Z" id="形状"></path> <path d="M1.2,7.5 C2.4,9.16666667 4,10 6,10 C8,10 9.6,9.16666667 10.8,7.5" id="Path-3" stroke="#FFFFFF" stroke-width="1.225" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M4.43110261,8.75 L3.73554966,8.75 L3.73554966,5.59598638 L4.43110261,5.59598638 L4.43110261,8.75 Z M4.12650856,4.08333333 L5.25,5.59347306 L2.91666667,5.60009011 L4.12650856,4.08333333 Z" id="形状"></path>
<path d="M8.75,4.08333333 L9.19336514,6.25457658 L10.5234106,4.55832908 L8.75,4.08333333 Z M9.63668037,5.63915369 C9.63668037,5.63915369 10.7204119,6.69186843 10.4740979,8.75 C11.1391207,8.75 11.0590624,8.70477977 11.0590624,8.70477977 C11.0590624,8.70477977 11.3299828,6.49583262 10.0615283,5.08606139 L9.63668037,5.63915369 L9.63668037,5.63915369 Z" id="形状"></path>
</g>
</g> </g>
</g> </g>
</g> </g>
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>火焰烟雾</title> <title>漏油识别</title>
<defs> <defs>
<path d="M0,16.5 L1.099,16.499 L1.1,19.8 C1.1,20.3641194 1.52464421,20.8290579 2.07171676,20.8925995 L2.2,20.9 L5.5,20.899 L5.5,22 L2.2,22 C0.98497355,22 0,21.0150264 0,19.8 L0,16.5 Z M19.8,0 C21.0150264,0 22,0.98497355 22,2.2 L22,19.8 C22,21.0150264 21.0150264,22 19.8,22 L16.5,22 L16.5,20.899 L19.8,20.9 C20.3641194,20.9 20.8290579,20.4753558 20.8925995,19.9282832 L20.9,19.8 L20.899,16.499 L22,16.5 L22,5.5 L20.899,5.499 L20.9,2.2 C20.9,1.63588058 20.4753558,1.17094212 19.9282832,1.1074005 L19.8,1.1 L16.5,1.1 L16.5,1.81999974e-12 L19.8,0 Z M5.5,1.1 L2.2,1.1 C1.63588058,1.1 1.17094212,1.52464421 1.1074005,2.07171676 L1.1,2.2 L1.099,5.499 L0,5.5 L0,2.2 C0,0.98497355 0.98497355,0 2.2,0 L5.5,1.81797907e-12 L5.5,1.1 Z" id="path-1"></path> <path d="M0,16.5 L1.099,16.499 L1.1,19.8 C1.1,20.3641194 1.52464421,20.8290579 2.07171676,20.8925995 L2.2,20.9 L5.5,20.899 L5.5,22 L2.2,22 C0.98497355,22 0,21.0150264 0,19.8 L0,16.5 Z M19.8,0 C21.0150264,0 22,0.98497355 22,2.2 L22,19.8 C22,21.0150264 21.0150264,22 19.8,22 L16.5,22 L16.5,20.899 L19.8,20.9 C20.3641194,20.9 20.8290579,20.4753558 20.8925995,19.9282832 L20.9,19.8 L20.899,16.499 L22,16.5 L22,5.5 L20.899,5.499 L20.9,2.2 C20.9,1.63588058 20.4753558,1.17094212 19.9282832,1.1074005 L19.8,1.1 L16.5,1.1 L16.5,1.81999974e-12 L19.8,0 Z M5.5,1.1 L2.2,1.1 C1.63588058,1.1 1.17094212,1.52464421 1.1074005,2.07171676 L1.1,2.2 L1.099,5.499 L0,5.5 L0,2.2 C0,0.98497355 0.98497355,0 2.2,0 L5.5,1.81797907e-12 L5.5,1.1 Z" id="path-1"></path>
<filter x="-63.6%" y="-59.1%" width="227.3%" height="227.3%" filterUnits="objectBoundingBox" id="filter-2"> <filter x="-63.6%" y="-59.1%" width="227.3%" height="227.3%" filterUnits="objectBoundingBox" id="filter-2">
...@@ -9,17 +9,20 @@ ...@@ -9,17 +9,20 @@
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix> <feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter> </filter>
</defs> </defs>
<g id="鹰视2023" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g id="套用鹰视改" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="2023-0607宦" transform="translate(-1646.000000, -362.000000)"> <g id="漏油识别" transform="translate(9.000000, 8.000000)">
<g id="火焰烟雾" transform="translate(1655.000000, 370.000000)"> <g id="Mask">
<g id="Mask"> <use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use>
<use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use> <use fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-1"></use>
<use fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-1"></use> </g>
</g> <g id="编组-2" transform="translate(3.000000, 4.000000)" fill="#FFFFFF">
<g id="报警信息" transform="translate(4.000000, 4.000000)" fill="#FFBD36" fill-rule="nonzero"> <g id="编组-3" transform="translate(0.000000, 0.000000)">
<rect id="矩形" opacity="0" x="0" y="0" width="14" height="14"></rect> <path d="M16,4.4 L16,8.4 L0,8.4 L0,4.4 L7,4.4 C7,5.78071187 8.11928813,6.9 9.5,6.9 C10.8807119,6.9 12,5.78071187 12,4.4 L16,4.4 Z" id="形状结合"></path>
<path d="M12.3975,10.37625 L12.3975,5.75625002 C12.4434087,2.76010525 10.0517698,0.29403369 7.055625,0.24812502 C4.05948023,0.202216351 1.59340867,2.59385525 1.5475,5.59000002 L1.5475,10.3675 L0.41,10.3675 L0.41,13.71875 L13.535,13.71875 L13.535,10.37625 L12.3975,10.37625 Z M3.385,5.53750002 C3.39949752,3.55134602 5.021346,1.95300262 7.0075,1.9675001 C8.993654,1.98199757 10.5919974,3.60384602 10.5775,5.59000002 L10.5775,10.37625 L3.385,10.37625 L3.385,5.59875002 L3.385,5.53750002 Z M2.1775,13.2725 L3.2275,11.4175 L3.7,11.4175 L2.64125,13.2725 L2.1775,13.2725 Z M3.2625,13.2725 L4.3125,11.4175 L4.79375,11.4175 L3.7,13.2725 L3.2625,13.2725 Z M4.3475,13.2725 L5.3975,11.4175 L5.87875,11.4175 L4.81125,13.2725 L4.3475,13.2725 Z M5.4325,13.2725 L6.4825,11.4175 L6.96375,11.4175 L5.89625,13.2725 L5.4325,13.2725 Z M6.5175,13.2725 L7.5675,11.4175 L8.075,11.4175 L6.98125,13.2725 L6.5175,13.2725 Z M7.6025,13.2725 L8.6525,11.4175 L9.13375,11.4175 L8.075,13.2725 L7.6025,13.2725 Z M8.6875,13.2725 L9.7375,11.4175 L10.21875,11.4175 L9.16,13.2725 L8.6875,13.2725 Z M10.1925,13.2725 L9.72875,13.2725 L10.77875,11.4175 L11.26,11.4175 L10.1925,13.2725 Z" id="形状"></path> <rect id="矩形备份" transform="translate(14.500000, 6.400000) scale(-1, 1) translate(-14.500000, -6.400000) " x="14" y="3.4" width="1" height="6"></rect>
<path d="M6.41375,9.1525 C5.95113702,8.81774256 5.78369928,8.20623084 6.01125,7.6825 C6.11151569,7.92428288 6.3302179,8.09659372 6.58875,8.1375 C6.30180719,7.62250351 6.39891793,6.97869525 6.825,6.57125 C6.825,7.28 7.805,7.77 7.805,8.1725 C7.76999851,8.51139183 7.67207288,8.84077805 7.51625,9.14375 C8.29447056,9.04158945 8.93572401,8.48307838 9.14375,7.72625 C8.96636957,7.94668841 8.73818398,8.12083004 8.47875,8.23375 C8.89360752,7.9603338 9.14342687,7.49685318 9.14375,7 C9.14375,6.5975 8.88125,6.44875 8.7325,6.23875 C8.58375,6.02875 8.7325,5.64375 8.7325,5.64375 C8.53327035,5.74929799 8.4136826,5.96113915 8.42625,6.18625 C8.39036871,6.3882442 8.32242819,6.58320396 8.225,6.76375 C8.225,5.29375 7.51625,4.47125 7.51625,4.13875 C7.53505603,3.87438985 7.6258333,3.62021349 7.77875,3.40375 C6.47621956,3.57150509 5.52495484,4.71760716 5.6,6.02875 C5.355,5.8975 5.32,5.36375 5.32,5.36375 C4.65211285,6.01703235 4.472838,7.02237759 4.87375,7.86625 C4.70112386,7.77493405 4.53453195,7.67264077 4.375,7.56 C4.54974943,8.52148948 5.41158928,9.2034671 6.3875,9.1525 L6.41375,9.1525 Z" id="路径"></path> <path d="M6,11.4 C6.55228475,11.4 7,10.9522847 7,10.4 C7,9.84771525 6.4,8.4 6,8.4 C5.6,8.4 5,9.84771525 5,10.4 C5,10.9522847 5.44771525,11.4 6,11.4 Z" id="椭圆形"></path>
<path d="M11.5,14.4 C12.3284271,14.4 13,13.6538079 13,12.7333333 C13,11.8128588 12.1,9.4 11.5,9.4 C10.9,9.4 10,11.8128588 10,12.7333333 C10,13.6538079 10.6715729,14.4 11.5,14.4 Z" id="椭圆形备份"></path>
<path d="M9.51428571,6 C10.4610596,6 11.2285714,5.1045695 11.2285714,4 C11.2285714,2.8954305 10.2,0 9.51428571,0 C8.82857143,0 7.8,2.8954305 7.8,4 C7.8,5.1045695 8.56751186,6 9.51428571,6 Z" id="椭圆形备份-2"></path>
<rect id="矩形" transform="translate(1.500000, 6.400000) scale(-1, 1) translate(-1.500000, -6.400000) " x="1" y="3.4" width="1" height="6"></rect>
</g> </g>
</g> </g>
</g> </g>
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>绿化带分割</title> <title>火焰识别</title>
<defs> <defs>
<path d="M0,16.5 L1.099,16.499 L1.1,19.8 C1.1,20.3641194 1.52464421,20.8290579 2.07171676,20.8925995 L2.2,20.9 L5.5,20.899 L5.5,22 L2.2,22 C0.98497355,22 0,21.0150264 0,19.8 L0,16.5 Z M19.8,0 C21.0150264,0 22,0.98497355 22,2.2 L22,19.8 C22,21.0150264 21.0150264,22 19.8,22 L16.5,22 L16.5,20.899 L19.8,20.9 C20.3641194,20.9 20.8290579,20.4753558 20.8925995,19.9282832 L20.9,19.8 L20.899,16.499 L22,16.5 L22,5.5 L20.899,5.499 L20.9,2.2 C20.9,1.63588058 20.4753558,1.17094212 19.9282832,1.1074005 L19.8,1.1 L16.5,1.1 L16.5,1.81999974e-12 L19.8,0 Z M5.5,1.1 L2.2,1.1 C1.63588058,1.1 1.17094212,1.52464421 1.1074005,2.07171676 L1.1,2.2 L1.099,5.499 L0,5.5 L0,2.2 C0,0.98497355 0.98497355,0 2.2,0 L5.5,1.81797907e-12 L5.5,1.1 Z" id="path-1"></path> <path d="M0,16.5 L1.099,16.499 L1.1,19.8 C1.1,20.3641194 1.52464421,20.8290579 2.07171676,20.8925995 L2.2,20.9 L5.5,20.899 L5.5,22 L2.2,22 C0.98497355,22 0,21.0150264 0,19.8 L0,16.5 Z M19.8,0 C21.0150264,0 22,0.98497355 22,2.2 L22,19.8 C22,21.0150264 21.0150264,22 19.8,22 L16.5,22 L16.5,20.899 L19.8,20.9 C20.3641194,20.9 20.8290579,20.4753558 20.8925995,19.9282832 L20.9,19.8 L20.899,16.499 L22,16.5 L22,5.5 L20.899,5.499 L20.9,2.2 C20.9,1.63588058 20.4753558,1.17094212 19.9282832,1.1074005 L19.8,1.1 L16.5,1.1 L16.5,1.81999974e-12 L19.8,0 Z M5.5,1.1 L2.2,1.1 C1.63588058,1.1 1.17094212,1.52464421 1.1074005,2.07171676 L1.1,2.2 L1.099,5.499 L0,5.5 L0,2.2 C0,0.98497355 0.98497355,0 2.2,0 L5.5,1.81797907e-12 L5.5,1.1 Z" id="path-1"></path>
<filter x="-63.6%" y="-59.1%" width="227.3%" height="227.3%" filterUnits="objectBoundingBox" id="filter-2"> <filter x="-63.6%" y="-59.1%" width="227.3%" height="227.3%" filterUnits="objectBoundingBox" id="filter-2">
...@@ -9,20 +9,13 @@ ...@@ -9,20 +9,13 @@
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix> <feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter> </filter>
</defs> </defs>
<g id="鹰视2023" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g id="套用鹰视改" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="2023-0607宦" transform="translate(-1646.000000, -418.000000)"> <g id="火焰识别" transform="translate(9.000000, 8.000000)">
<g id="绿化带分割" transform="translate(1655.000000, 426.000000)"> <g id="Mask">
<g id="Mask"> <use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use>
<use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use> <use fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-1"></use>
<use fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-1"></use>
</g>
<g id="编组-56" transform="translate(3.000000, 3.000000)" fill="#FFBD36">
<rect id="矩形" stroke="#FFBD36" stroke-width="0.666666667" opacity="0" x="0.333333333" y="0.333333333" width="15.3333333" height="15.3333333"></rect>
<g id="编组" transform="translate(0.000000, 0.666667)" fill-rule="nonzero">
<path d="M13.2308211,11.3612781 L13.2308211,8.29508903 L14.9887624,8.29508903 L13.8784837,5.39039922 L14.4336231,5.39039922 L12.6756818,0.705415669 L11.5579164,5.39039922 L12.0205325,5.39039922 L10.8831085,8.29508903 L12.5423767,8.29508903 L12.6756818,11.1997788 C11.166683,10.6797926 9.65768413,10.4197995 8.1486853,10.4197995 C6.63968646,10.4197995 5.13068763,10.6797926 3.6216888,11.1997788 L3.6216888,8.29508903 L5.80874293,8.17353801 L3.98908275,4.82553306 L5.08877736,4.82553306 L2.97891039,0 L1.45375487,4.82553306 L2.42377105,4.82553306 L1.1102787,8.29508903 L2.86821997,8.29508903 L2.86821997,11.1997788 C2.86821997,11.1997788 0.64766257,12.2304752 0,12.9800726 C0.925232249,12.5115742 1.94298773,12.6052739 3.42335932,12.4178746 C2.9607432,12.6989736 2.59065029,12.6989736 2.31308062,12.9800726 C1.66541805,13.4485709 0.555139343,14.6666667 0.555139343,14.6666667 L7.40185798,14.6666667 C7.40185798,14.6666667 4.99625414,13.5422706 5.08877736,12.8863729 C5.08877736,12.5115742 5.82896316,12.0430759 6.19905607,11.7619769 L7.56098186,11.4549778 L8.41961345,11.3612781 C11.2878334,11.4549778 14.334582,11.6682772 16,12.4178746 C15.6299071,11.7619769 13.2308211,11.3612781 13.2308211,11.3612781 Z" id="形状"></path>
</g>
</g>
</g> </g>
<path d="M14.3274861,6.59979999 C14.6815581,7.33829998 14.7343714,8.5598 14.0016803,9.14429999 C12.8115222,4.83999999 9.8361269,4 9.8361269,4 C10.1901989,6.18819999 8.59315553,8.58290001 7.02363454,10.3875 C7.03268232,9.56978256 6.81856603,8.76356377 6.40177692,8.04599999 C6.29243114,9.64899999 4.99590265,10.9223 4.61653977,12.526 C4.15758504,14.7408 4.99515883,16.2941 8.18701409,18 C7.18653743,16.04 7.72805936,14.92 8.51281986,13.9036 C9.35039362,12.7339 11.4755697,11.3934 11.169104,9.75259999 C13.7636487,11.4592 14.9255405,15.2266 13.412552,17.9496 C21.4156214,13.6488 15.3837514,7.25920001 14.3274861,6.59979999 Z" id="Path" fill="#FFFFFF" fill-rule="nonzero"></path>
</g> </g>
</g> </g>
</svg> </svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>车牌检测</title> <title>烟雾识别</title>
<defs> <defs>
<path d="M0,16.5 L1.099,16.499 L1.1,19.8 C1.1,20.3641194 1.52464421,20.8290579 2.07171676,20.8925995 L2.2,20.9 L5.5,20.899 L5.5,22 L2.2,22 C0.98497355,22 0,21.0150264 0,19.8 L0,16.5 Z M19.8,0 C21.0150264,0 22,0.98497355 22,2.2 L22,19.8 C22,21.0150264 21.0150264,22 19.8,22 L16.5,22 L16.5,20.899 L19.8,20.9 C20.3641194,20.9 20.8290579,20.4753558 20.8925995,19.9282832 L20.9,19.8 L20.899,16.499 L22,16.5 L22,5.5 L20.899,5.499 L20.9,2.2 C20.9,1.63588058 20.4753558,1.17094212 19.9282832,1.1074005 L19.8,1.1 L16.5,1.1 L16.5,1.81999974e-12 L19.8,0 Z M5.5,1.1 L2.2,1.1 C1.63588058,1.1 1.17094212,1.52464421 1.1074005,2.07171676 L1.1,2.2 L1.099,5.499 L0,5.5 L0,2.2 C0,0.98497355 0.98497355,0 2.2,0 L5.5,1.81797907e-12 L5.5,1.1 Z" id="path-1"></path> <path d="M0,16.5 L1.099,16.499 L1.1,19.8 C1.1,20.3641194 1.52464421,20.8290579 2.07171676,20.8925995 L2.2,20.9 L5.5,20.899 L5.5,22 L2.2,22 C0.98497355,22 0,21.0150264 0,19.8 L0,16.5 Z M19.8,0 C21.0150264,0 22,0.98497355 22,2.2 L22,19.8 C22,21.0150264 21.0150264,22 19.8,22 L16.5,22 L16.5,20.899 L19.8,20.9 C20.3641194,20.9 20.8290579,20.4753558 20.8925995,19.9282832 L20.9,19.8 L20.899,16.499 L22,16.5 L22,5.5 L20.899,5.499 L20.9,2.2 C20.9,1.63588058 20.4753558,1.17094212 19.9282832,1.1074005 L19.8,1.1 L16.5,1.1 L16.5,1.81999974e-12 L19.8,0 Z M5.5,1.1 L2.2,1.1 C1.63588058,1.1 1.17094212,1.52464421 1.1074005,2.07171676 L1.1,2.2 L1.099,5.499 L0,5.5 L0,2.2 C0,0.98497355 0.98497355,0 2.2,0 L5.5,1.81797907e-12 L5.5,1.1 Z" id="path-1"></path>
<filter x="-63.6%" y="-59.1%" width="227.3%" height="227.3%" filterUnits="objectBoundingBox" id="filter-2"> <filter x="-63.6%" y="-59.1%" width="227.3%" height="227.3%" filterUnits="objectBoundingBox" id="filter-2">
...@@ -9,19 +9,17 @@ ...@@ -9,19 +9,17 @@
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix> <feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter> </filter>
</defs> </defs>
<g id="鹰视2023" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g id="套用鹰视改" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="2023-0607宦" transform="translate(-1439.000000, -418.000000)"> <g id="烟雾识别" transform="translate(9.000000, 8.000000)">
<g id="车牌检测" transform="translate(1448.000000, 426.000000)"> <g id="Mask">
<g id="Mask"> <use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use>
<use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use> <use fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-1"></use>
<use fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-1"></use> </g>
</g> <g id="Group-16" transform="translate(3.000000, 5.000000)" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.14786268">
<g id="Group" transform="translate(4.200000, 4.700000)"> <path d="M1.01736785,5.86066248 C-1.93988508,9.17090577 2.20026902,12.4811491 5.15752195,10.8260274 C6.9318737,13.0328563 11.0720278,11.9294418 11.6634784,9.17090577 C16.3950831,10.2743202 18.1694348,2.5504192 12.254929,3.10212641 C12.8463796,-0.20811687 6.34042312,-1.3115313 5.74897253,1.99871199 C3.38317019,0.343590344 -0.756983905,2.5504192 1.01736785,5.86066248 Z" id="Path-8"></path>
<path d="M12.4932,3.5766 C13.1218677,3.57726141 13.6313386,4.08673229 13.632,4.7154 L13.632,11.4012 C13.6313386,12.0298677 13.1218677,12.5393386 12.4932,12.54 L1.1388,12.54 C0.510132295,12.5393386 0.000661407919,12.0298677 0,11.4012 L0,4.7154 C0.000661407919,4.08673229 0.510132295,3.57726141 1.1388,3.5766 L12.4932,3.5766 Z M12.4932,4.4158 L1.1388,4.4158 C0.973426847,4.41602035 0.839420351,4.55002685 0.8392,4.7154 L0.8392,11.4012 C0.839420351,11.5665732 0.973426847,11.7005796 1.1388,11.7008 L12.4932,11.7008 C12.6585732,11.7005796 12.7925796,11.5665732 12.7928,11.4012 L12.7928,4.7154 C12.7925796,4.55002685 12.6585732,4.41602035 12.4932,4.4158 Z M10.9316,1.7884 C11.1383229,1.78905871 11.3057413,1.95647714 11.3064,2.1632 C11.3057413,2.36992286 11.1383229,2.53734129 10.9316,2.538 L2.7006,2.538 C2.49387714,2.53734129 2.32645871,2.36992286 2.3258,2.1632 C2.32645871,1.95647714 2.49387714,1.78905871 2.7006,1.7884 L10.9316,1.7884 Z M9.1334,0 C9.34012286,0.00065870771 9.50754129,0.168077136 9.5082,0.3748 C9.50754129,0.581522864 9.34012286,0.748941292 9.1334,0.7496 L4.4986,0.7496 C4.29187714,0.748941292 4.12445871,0.581522864 4.1238,0.3748 C4.12445871,0.168077136 4.29187714,0.00065870771 4.4986,0 L9.1334,0 Z" id="Shape" fill="#FFBD37" fill-rule="nonzero"></path> <path d="M3.38317019,5.30895527 C3.38317019,3.65383363 5.74897253,1.99871199 8.11477487,3.10212641" id="Path-11"></path>
<text id="苏J" font-family="SourceHanSansCN-Bold, Source Han Sans CN" font-size="4.5" font-weight="bold" fill="#FFBD36"> <path d="M3.38317019,7.51578413 C3.38317019,8.61919855 5.15752195,10.2743202 8.11477487,8.61919855" id="Path-12"></path>
<tspan x="3.472" y="10">苏J</tspan> <path d="M10.4805772,7.51578413 C11.6634784,7.51578413 14.0292807,5.30895527 10.4805772,4.20554084" id="Path-16"></path>
</text>
</g>
</g> </g>
</g> </g>
</g> </g>
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg width="40px" height="40px" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>跌倒检测</title> <title>裸土识别</title>
<defs> <defs>
<path d="M0,16.5 L1.099,16.499 L1.1,19.8 C1.1,20.3641194 1.52464421,20.8290579 2.07171676,20.8925995 L2.2,20.9 L5.5,20.899 L5.5,22 L2.2,22 C0.98497355,22 0,21.0150264 0,19.8 L0,16.5 Z M19.8,0 C21.0150264,0 22,0.98497355 22,2.2 L22,19.8 C22,21.0150264 21.0150264,22 19.8,22 L16.5,22 L16.5,20.899 L19.8,20.9 C20.3641194,20.9 20.8290579,20.4753558 20.8925995,19.9282832 L20.9,19.8 L20.899,16.499 L22,16.5 L22,5.5 L20.899,5.499 L20.9,2.2 C20.9,1.63588058 20.4753558,1.17094212 19.9282832,1.1074005 L19.8,1.1 L16.5,1.1 L16.5,1.81999974e-12 L19.8,0 Z M5.5,1.1 L2.2,1.1 C1.63588058,1.1 1.17094212,1.52464421 1.1074005,2.07171676 L1.1,2.2 L1.099,5.499 L0,5.5 L0,2.2 C0,0.98497355 0.98497355,0 2.2,0 L5.5,1.81797907e-12 L5.5,1.1 Z" id="path-1"></path> <path d="M0,16.5 L1.099,16.499 L1.1,19.8 C1.1,20.3641194 1.52464421,20.8290579 2.07171676,20.8925995 L2.2,20.9 L5.5,20.899 L5.5,22 L2.2,22 C0.98497355,22 0,21.0150264 0,19.8 L0,16.5 Z M19.8,0 C21.0150264,0 22,0.98497355 22,2.2 L22,19.8 C22,21.0150264 21.0150264,22 19.8,22 L16.5,22 L16.5,20.899 L19.8,20.9 C20.3641194,20.9 20.8290579,20.4753558 20.8925995,19.9282832 L20.9,19.8 L20.899,16.499 L22,16.5 L22,5.5 L20.899,5.499 L20.9,2.2 C20.9,1.63588058 20.4753558,1.17094212 19.9282832,1.1074005 L19.8,1.1 L16.5,1.1 L16.5,1.81999974e-12 L19.8,0 Z M5.5,1.1 L2.2,1.1 C1.63588058,1.1 1.17094212,1.52464421 1.1074005,2.07171676 L1.1,2.2 L1.099,5.499 L0,5.5 L0,2.2 C0,0.98497355 0.98497355,0 2.2,0 L5.5,1.81797907e-12 L5.5,1.1 Z" id="path-1"></path>
<filter x="-63.6%" y="-59.1%" width="227.3%" height="227.3%" filterUnits="objectBoundingBox" id="filter-2"> <filter x="-63.6%" y="-59.1%" width="227.3%" height="227.3%" filterUnits="objectBoundingBox" id="filter-2">
...@@ -9,19 +9,14 @@ ...@@ -9,19 +9,14 @@
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix> <feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter> </filter>
</defs> </defs>
<g id="鹰视2023" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g id="套用鹰视改" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="2023-0607宦" transform="translate(-1489.000000, -362.000000)"> <g id="裸土识别" transform="translate(9.000000, 8.000000)">
<g id="跌倒检测" transform="translate(1498.000000, 370.000000)"> <g id="Mask">
<g id="机动车违法信息查询备份-2" transform="translate(4.000000, 4.000000)" fill="#FFBD36" fill-rule="nonzero"> <use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use>
<g id="跌倒评估"> <use fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-1"></use>
<rect id="矩形" opacity="0" x="0" y="0" width="14" height="14"></rect> </g>
<path d="M7.30000195,3.56000586 C8.01270594,3.56448254 8.65775317,3.13868569 8.93374029,2.48157221 C9.20972741,1.82445873 9.06216469,1.06576635 8.56000195,0.56 C8.04920355,0.0543243095 7.28653642,-0.098997061 6.62000391,0.169996094 C5.95925372,0.443104218 5.52603618,1.08505575 5.52000586,1.79999805 C5.52264539,2.26943646 5.71166528,2.71859831 6.04548132,3.04866836 C6.37929737,3.37873842 6.83056364,3.56267763 7.30000195,3.56004794 L7.30000195,3.56000586 Z M13.5000059,9.07000391 L9.77000391,4.50000195 C9.69907126,4.40595512 9.60643276,4.33047086 9.49999805,4.27999414 C9.0689719,4.05046321 8.53349785,4.2111097 8.30000391,4.64000195 L8.30000391,4.69999414 L7,7.09000195 L5.67999414,6.25000195 C5.49022852,6.13810879 5.26508046,6.1023724 5.04999414,6.15000586 L1.56999609,6.88000195 C1.10692114,6.99293886 0.817939116,7.45402931 0.918181,7.92001721 C1.01842288,8.3860051 1.47144517,8.68747787 1.93999805,8.60000586 L4.68000586,8.00000195 L6.32999609,9.21000391 L3.99999414,9.21000391 C3.77037273,9.21840445 3.5539342,9.31941075 3.40000391,9.49000391 L0.580001953,12.4899961 C0.271140463,12.849213 0.302081355,13.3884729 0.650001953,13.7100059 C0.996044384,14.0338776 1.53396343,14.0338776 1.88000586,13.7100059 L4.45999805,10.9999805 L7.7,10.9999805 C7.95609352,11.001038 8.2002316,10.8917274 8.37000391,10.6999922 C8.41679746,10.644809 8.45706341,10.5844078 8.49000195,10.5199883 L10.2100059,7.87999023 L12.1199805,10.2100059 C12.2598713,10.4018684 12.4706301,10.5298761 12.70538,10.5655576 C12.9401299,10.601239 13.1794051,10.5416355 13.3699863,10.4000039 C13.507828,10.299764 13.6123519,10.1604004 13.6699883,10.0000059 C13.7844782,9.69491067 13.718869,9.35141483 13.4999922,9.10999414 L13.5000059,9.07000391 Z" id="形状"></path> <g id="Group" transform="translate(2.000000, 4.000000)" fill="#FFFFFF" fill-rule="nonzero">
</g> <path d="M7.0875,3.38655861 C7.13014069,3.41891693 7.16801948,3.4572432 7.2,3.50038762 L11.322,9.06093489 L13.06125,6.86403495 C13.1680107,6.72939157 13.3293957,6.65104921 13.5,6.65104921 C13.6706043,6.65104921 13.8319893,6.72939157 13.93875,6.86403495 L18,12 L0,12 L6.3,3.50038762 C6.38951057,3.3796303 6.52276559,3.29979688 6.67045049,3.27844979 C6.81813539,3.25710271 6.96815258,3.29599062 7.0875,3.38655861 Z M7.425,0.21525496 C7.4818934,0.255945535 7.53462893,0.301698773 7.5825,0.351901651 L7.65,0.430446599 L11.39625,5.20770097 L12.61125,3.62281455 C12.7945149,3.39740887 13.0639438,3.25091638 13.3601993,3.21559966 C13.6564548,3.18028295 13.9552392,3.25903857 14.19075,3.43452187 L14.295375,3.52275044 L14.387625,3.62281455 L18,8.06436997 L18,9.81818182 L13.5,4.28237692 L12.200625,5.97593512 L11.40525,7.00885498 L10.699875,6.11580968 L10.701,6.11258181 L6.75,1.07602151 L0,9.684763 L0,7.8911407 L5.85,0.430446599 C6.22279221,-0.0449416419 6.92794373,-0.14128622 7.425,0.21525496 Z" id="Shape"></path>
</g>
<g id="Mask">
<use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use>
<use fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-1"></use>
</g>
</g> </g>
</g> </g>
</g> </g>
......
...@@ -336,24 +336,7 @@ ...@@ -336,24 +336,7 @@
<img src="./assets/images/photojz.svg" /> <img src="./assets/images/photojz.svg" />
</div> </div>
</el-tooltip> </el-tooltip>
<!-- <el-tooltip content="AI识别" placement="bottom"> <AiList @screenShot="onAiScreenShot"></AiList>
<div class="menu-item">
<img src="./assets/images/car1.png" @click="aiVisible = !aiVisible" />
<div class="ai-list" v-if="aiVisible">
<el-tooltip
v-for="(item,index) in aiIdentifyList"
:key="index"
:content="item.title"
placement="bottom"
>
<div class="ai-item" @click="aiIdentifyType(item.aiType)">
<img class="img_src" :src="item.Img" />
</div>
</el-tooltip>
</div>
</div>
</el-tooltip> -->
<AiList @screenShot="screenShot"></AiList>
<div class="menu-item" @click="startLinePoint" content="航点动作"> <div class="menu-item" @click="startLinePoint" content="航点动作">
<img src="./assets/images/point_small.svg" /> <img src="./assets/images/point_small.svg" />
</div> </div>
...@@ -434,58 +417,6 @@ export default { ...@@ -434,58 +417,6 @@ export default {
backgroundStyle: { backgroundStyle: {
"background-position-y": 0, "background-position-y": 0,
}, },
aiIdentifyList: [
{
title: "人脸识别",
aiType: 10,
// aiType: 1,
class: "right30",
Img: require("./assets/images/人脸识别.png"),
},
{
title: "车牌识别",
aiType: 8,
// aiType: 2,
class: "right-90",
Img: require("./assets/images/车牌检测.png"),
},
{
title: "人流识别",
aiType: 3,
class: "right-10",
Img: require("./assets/images/人流识别.png"),
},
{
title: "火焰烟雾",
aiType: 4,
class: "right-50",
Img: require("./assets/images/火焰烟雾.png"),
},
{
title: "漏油识别",
aiType: 5,
class: "right70",
Img: require("./assets/images/车辆识别.png"),
},
{
title: "裸土识别",
aiType: 6,
class: "right-90 top40",
Img: require("./assets/images/异物检测.svg"),
},
// {
// title: "跌倒检测",
// aiType: 5,
// class: "right-50 top40",
// Img: require("@/assets/newImage/跌倒检测.svg")
// },
// {
// title: "游泳检测",
// aiType: 4,
// class: " right66",
// Img: require("@/assets/newImage/游泳检测.svg")
// }
],
ygisCenterFlag: false, ygisCenterFlag: false,
ygValue: null, ygValue: null,
...@@ -852,11 +783,11 @@ export default { ...@@ -852,11 +783,11 @@ export default {
callback: (isOk) => { callback: (isOk) => {
if (isOk) { if (isOk) {
this.$message.success( this.$message.success(
`${this.screenRecordingStatus ? "开始" : "结束"}` `${this.screenRecordingStatus ? "开始" : "结束"}`
); );
} else { } else {
this.$message.error( this.$message.error(
`${this.screenRecordingStatus ? "开始" : "结束"}失败` `${this.screenRecordingStatus ? "开始" : "结束"}失败`
); );
this.screenRecordingStatus = !this.screenRecordingStatus; this.screenRecordingStatus = !this.screenRecordingStatus;
} }
...@@ -881,16 +812,6 @@ export default { ...@@ -881,16 +812,6 @@ export default {
}, },
}); });
}, },
//AI识别
async aiIdentifyType(aiType) {
const data = {
deviceId: this.device.deviceId,
mqttType: true,
aiType,
id: this.device.id,
};
this.aiIdentify(data, true);
},
async photo() { async photo() {
let blob = this.$refs.player.screenShot(); let blob = this.$refs.player.screenShot();
if (blob) { if (blob) {
...@@ -1029,6 +950,13 @@ export default { ...@@ -1029,6 +950,13 @@ export default {
} }
} }
}, },
/**
* ai截图事件
*/
onAiScreenShot({callback}){
let blob = this.$refs.player.screenShot();
callback(blob);
}
}, },
}; };
</script> </script>
...@@ -1146,7 +1074,7 @@ export default { ...@@ -1146,7 +1074,7 @@ export default {
} }
} }
} }
.bottom-menu { .bottom-menu::v-deep {
z-index: 1; z-index: 1;
position: absolute; position: absolute;
bottom: 0; bottom: 0;
...@@ -1169,7 +1097,7 @@ export default { ...@@ -1169,7 +1097,7 @@ export default {
gap: 10px; gap: 10px;
padding-left: 10px; padding-left: 10px;
} }
::v-deep .right { .right {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 20px; gap: 20px;
...@@ -1491,7 +1419,7 @@ export default { ...@@ -1491,7 +1419,7 @@ export default {
} }
} }
.right-menu { .right-menu::v-deep {
position: absolute; position: absolute;
right: 10px; right: 10px;
top: 50px; top: 50px;
...@@ -1507,28 +1435,7 @@ export default { ...@@ -1507,28 +1435,7 @@ export default {
width: 100%; width: 100%;
} }
.ai-list ::v-deep {
z-index: 1;
position: absolute;
left: -124px;
top: 0;
width: 120px;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.ai-item {
cursor: pointer;
width: 35px;
height: 44px;
display: flex;
justify-content: center;
align-items: center;
background-color: #02173d;
color: #00aacb;
border: 1px solid #2b56b7;
}
}
} }
} }
</style> </style>
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
<script> <script>
import CesiumLayout from "./components/cesiumLayer"; import CesiumLayout from "./components/cesiumLayer";
import crashMonitor from './components/cesiumLayer/crashMonitor';
import MapImageSwitch from "./components/mapImageSwitch"; import MapImageSwitch from "./components/mapImageSwitch";
import UavApplications from "./components/uavApplications"; import UavApplications from "./components/uavApplications";
import Hangar from "./components/hangar"; import Hangar from "./components/hangar";
...@@ -131,6 +132,9 @@ export default { ...@@ -131,6 +132,9 @@ export default {
}, },
}, },
beforeCreate() { beforeCreate() {
crashMonitor({
alert: this.$alert
});
Vue.component("SymbolIcon", SymbolIcon); Vue.component("SymbolIcon", SymbolIcon);
if (!window.$mmc) { if (!window.$mmc) {
window.$mmc = {}; window.$mmc = {};
......
import moment from "moment"; import moment from "moment";
import { Control_API } from "../api"; import { TaskInfo } from "../api";
let hangarRealTimeData = { let hangarRealTimeData = {
chargerPower: 0, //充电电源,0-未知,1-打开,2-关闭 chargerPower: 0, //充电电源,0-未知,1-打开,2-关闭
...@@ -291,11 +291,13 @@ const actions = { ...@@ -291,11 +291,13 @@ const actions = {
async takeOff({ state }, data) { async takeOff({ state }, data) {
console.log(state.airlineData, data); console.log(state.airlineData, data);
try { try {
// 生成架次號 // 生成架次号
const getFlightSortic = await Control_API.getFlightSortic({ const flightSortieId = await TaskInfo.flightSortieId({
taskId: state.airlineData.id, id: state.uav.deviceId,
deviceHardId: data.uav.deviceId,
}); });
/* const flightSortieId = {
data: `tmj-v4-${Date.now()}`
} */
// 一键任务指令 // 一键任务指令
const waypointList = state.airlineData?.content; const waypointList = state.airlineData?.content;
window.$mmc.$store.dispatch("MMCMQTT/publish", { window.$mmc.$store.dispatch("MMCMQTT/publish", {
...@@ -305,7 +307,7 @@ const actions = { ...@@ -305,7 +307,7 @@ const actions = {
uavDeviceId: data.uav.deviceId, uavDeviceId: data.uav.deviceId,
wayLineObj: { wayLineObj: {
taskId: state.airlineData.id, taskId: state.airlineData.id,
flightSortiesID: getFlightSortic.data, flightSortiesID: flightSortieId.data,
waypointList: waypointList, waypointList: waypointList,
autoFlightSpeed: state.airlineData.baseSpeed, autoFlightSpeed: state.airlineData.baseSpeed,
finishedAction: "GO_HOME", finishedAction: "GO_HOME",
...@@ -315,7 +317,7 @@ const actions = { ...@@ -315,7 +317,7 @@ const actions = {
}, },
}, },
callback() { callback() {
data?.callback && data.callback(true, getFlightSortic.data); data?.callback && data.callback(true, flightSortieId.data);
}, },
}); });
} catch (e) { } catch (e) {
......
import { Control_API } from "../api"; import { Control_API, TaskInfo } from "../api";
import mount from "../components/mount"; import mount from "../components/mount";
import moment from "moment"; import moment from "moment";
...@@ -623,11 +623,13 @@ const actions = { ...@@ -623,11 +623,13 @@ const actions = {
console.log(state.airlineData, data); console.log(state.airlineData, data);
if (state.uav.network == 2) { if (state.uav.network == 2) {
try { try {
// 生成架次號 // 生成架次号
const getFlightSortic = await Control_API.getFlightSortic({ const flightSortieId = await TaskInfo.flightSortieId({
taskId: state.airlineData.id, id: state.uav.deviceId,
deviceHardId: state.uav.deviceId,
}); });
/* const flightSortieId = {
data: `tmj-v4-${Date.now()}`
} */
// 上传航线指令 // 上传航线指令
const waypointList = state.airlineData?.content; const waypointList = state.airlineData?.content;
window.$mmc.$store.dispatch("MMCMQTT/publish", { window.$mmc.$store.dispatch("MMCMQTT/publish", {
...@@ -636,7 +638,7 @@ const actions = { ...@@ -636,7 +638,7 @@ const actions = {
type: window.$mmc.$store.state.MMCMQTT.orders.航线上传, type: window.$mmc.$store.state.MMCMQTT.orders.航线上传,
data: { data: {
taskId: state.airlineData.id, taskId: state.airlineData.id,
flightSortiesID: getFlightSortic.data, flightSortiesID: flightSortieId.data,
waypointList: waypointList, waypointList: waypointList,
autoFlightSpeed: state.airlineData.baseSpeed, autoFlightSpeed: state.airlineData.baseSpeed,
finishedAction: "GO_HOME", finishedAction: "GO_HOME",
...@@ -655,7 +657,7 @@ const actions = { ...@@ -655,7 +657,7 @@ const actions = {
type: window.$mmc.$store.state.MMCMQTT.orders.绑定任务id, type: window.$mmc.$store.state.MMCMQTT.orders.绑定任务id,
data: { data: {
taskId: state.airlineData.id, taskId: state.airlineData.id,
flightSortiesID: getFlightSortic.data, flightSortiesID: flightSortieId.data,
}, },
}, },
callback() {}, callback() {},
...@@ -675,7 +677,7 @@ const actions = { ...@@ -675,7 +677,7 @@ const actions = {
}, },
}, },
callback() { callback() {
data?.callback && data.callback(true, getFlightSortic.data); data?.callback && data.callback(true, flightSortieId.data);
}, },
}); });
}, 3000); }, 3000);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论